From 5e454ce29512908ccf22a5e781ecd96d46dd9af6 Mon Sep 17 00:00:00 2001 From: kola-web Date: Sat, 9 May 2026 14:02:50 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E7=BB=9F=E4=B8=80=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=92=8C=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 SCSS 文件中的空格和格式问题 - 移除无用的导入和空行 - 统一字符串引号为单引号 - 修复 TypeScript 文件中的类型导入和导出格式 - 调整 JSON 文件格式和缩进 - 修复 WXML 中的条件渲染和属性绑定 - 优化组件样式和布局 - 统一日期显示格式 - 修复相机组件导航栏和示例显示问题 - 添加缺失的分号 - 优化弹出框样式和交互 --- src/components/calendar/core.js | 43 +- src/components/calendar/helper.js | 2 +- src/components/calendar/index.d.ts | 2 +- src/components/calendar/index.js | 97 +- src/components/calendar/index.json | 2 +- .../calendar/plugins/holidays/holidays-map.js | 122 +- .../calendar/plugins/holidays/index.d.ts | 2 +- src/components/calendar/plugins/holidays/index.js | 86 +- src/components/calendar/plugins/index.d.ts | 2 +- src/components/calendar/plugins/index.js | 11 +- src/components/calendar/plugins/preset/base.js | 116 +- .../calendar/plugins/preset/get-calendar-data.js | 30 +- src/components/calendar/plugins/preset/index.d.ts | 2 +- src/components/calendar/plugins/preset/index.js | 2 +- src/components/calendar/plugins/selectable.d.ts | 2 +- src/components/calendar/plugins/selectable.js | 104 +- .../plugins/solarLunar/convertSolarLunar.js | 662 +-- .../calendar/plugins/solarLunar/index.d.ts | 2 +- .../calendar/plugins/solarLunar/index.js | 29 +- src/components/calendar/plugins/time-range.js | 126 +- src/components/calendar/plugins/todo.d.ts | 2 +- src/components/calendar/plugins/todo.js | 56 +- src/components/calendar/plugins/week.js | 156 +- src/components/calendar/render.js | 47 +- src/components/calendar/utils/index.js | 290 +- src/components/calendar/utils/logger.js | 18 +- src/components/calendar/utils/wxData.js | 17 +- src/components/customPoster/README.md | 148 +- src/components/customPoster/index.js | 88 +- src/components/customPoster/wxml2canvas/index.js | 1968 ++++---- src/components/customTable/README.md | 148 +- src/components/customTable/index.js | 203 +- src/components/customTable/wxml2canvas/index.js | 1966 ++++---- src/components/ec-canvas/ec-canvas.js | 216 +- src/components/ec-canvas/ec-canvas.json | 2 +- src/components/ec-canvas/wx-canvas.js | 66 +- src/components/freeAudio/index.js | 149 +- src/components/image-merge/index.json | 2 +- src/components/loginNavbar/index.ts | 6 +- src/components/navbar/index.ts | 6 +- src/components/noteImagePreview/index.json | 5 +- src/components/noteImagePreview/index.ts | 3 + src/components/noteImagePreview/index.wxml | 8 +- src/components/pageNavbar/index.ts | 6 +- src/components/pickerArea/index.scss | 10 +- src/components/popup/index.scss | 52 + src/components/popup/index.wxml | 14 +- src/components/star/index.ts | 209 +- src/components/text-expandsion/index.scss | 8 +- src/components/timeOut/index.ts | 50 +- src/components/toast/index.ts | 72 +- src/components/uploadFile/index.ts | 87 +- src/components/viewFile/index.js | 28 +- src/components/viewFile/index.json | 2 +- src/components/viewVideo/index.scss | 7 +- src/components/zd-navBar/navBar.js | 228 +- src/components/zd-navBar/navBar.scss | 2 +- src/components/zdUploadFile/index.js | 164 +- src/doc/pages/doc1/index.scss | 2 +- src/doc/pages/doc1/index.ts | 6 +- src/doc/pages/doc2/index.scss | 2 +- src/gift/compontnts/echart/echarts.js | 5184 +++++++++++++++++++- src/pages/d_invite/index.scss | 2 +- src/pages/d_noteDetail/index.wxml | 8 +- src/pages/d_noteDiff/index.wxml | 10 +- src/pages/d_noteDiffData/index.wxml | 6 +- src/pages/d_noteDiffEdit/index.ts | 2 +- src/pages/d_noteDiffEdit/index.wxml | 2 +- src/pages/d_noteList/index.wxml | 4 +- src/pages/d_patientDetail/index.wxml | 4 +- src/pages/d_patientHormones/index.ts | 2 +- src/pages/d_userInfo/index.scss | 4 +- src/pages/d_userInfo/index.ts | 13 +- src/pages/information/index.json | 2 +- src/pages/informationDetail/index.ts | 7 +- src/pages/login/index.scss | 2 +- src/pages/message/index.ts | 42 +- src/pages/start/index.scss | 2 +- src/pages/webview/index.ts | 8 +- src/patient/components/camera/index.json | 3 +- src/patient/components/camera/index.scss | 3 +- src/patient/components/camera/index.ts | 7 +- src/patient/components/camera/index.wxml | 9 +- src/patient/pages/cancellation/index.scss | 2 +- src/patient/pages/cancellation/index.ts | 34 +- src/patient/pages/certPending/index.scss | 2 +- src/patient/pages/certPending/index.ts | 32 +- src/patient/pages/certReslove/index.scss | 2 +- src/patient/pages/changePhone/index.ts | 81 +- src/patient/pages/changeUser/index.ts | 89 +- src/patient/pages/comIns/index.ts | 6 +- src/patient/pages/doctor/index.json | 2 +- src/patient/pages/doctor/siteShare/index.ts | 4 +- src/patient/pages/drugRecord/index.scss | 6 +- src/patient/pages/drugRecord/index.ts | 3 +- src/patient/pages/family/index.ts | 1 - src/patient/pages/familyList/index.json | 2 +- src/patient/pages/familyList/index.ts | 61 +- src/patient/pages/familyScan/index.scss | 12 +- src/patient/pages/familyScan/index.ts | 74 +- src/patient/pages/getUserInfo/index.ts | 70 +- src/patient/pages/hormones/index.scss | 10 +- src/patient/pages/hormones/index.ts | 2 - src/patient/pages/hormonesStart/index.scss | 2 +- src/patient/pages/hospital/index.scss | 2 +- src/patient/pages/imageProcessing/index.json | 2 +- src/patient/pages/infusionCenter/index.scss | 4 +- src/patient/pages/login/index.scss | 2 +- src/patient/pages/login/index.ts | 2 +- src/patient/pages/myLive/index.ts | 1 + src/patient/pages/mySave/index.ts | 25 +- src/patient/pages/note/index.wxml | 6 +- src/patient/pages/noteAdd/index.scss | 2 +- src/patient/pages/noteAdd/index.ts | 53 +- src/patient/pages/noteAdd/index.wxml | 8 +- src/patient/pages/noteDiff/index.wxml | 10 +- src/patient/pages/noteDiffEdit/index.ts | 2 +- src/patient/pages/noteDiffEdit/index.wxml | 2 +- src/patient/pages/noteHistory/index.ts | 4 + src/patient/pages/noteHistory/index.wxml | 10 +- src/patient/pages/privacyAgreement/index.ts | 5 +- src/patient/pages/publishStoryDetail/index.json | 2 +- src/patient/pages/publishStoryDetail/index.scss | 2 +- src/patient/pages/publishStoryDetail/index.ts | 118 +- src/patient/pages/qolResult/index.scss | 6 +- src/patient/pages/repository/index.ts | 15 +- src/patient/pages/repositoryDetail/index.ts | 13 +- src/patient/pages/signIn/index.scss | 6 +- src/patient/pages/signIn/index.ts | 54 +- src/patient/pages/smallPage/index.ts | 155 +- src/patient/pages/startPending/index.ts | 18 +- src/patient/pages/startReject/index.scss | 2 +- src/patient/pages/startReject/index.ts | 20 +- src/patient/pages/taskAgreement/index.ts | 6 +- src/patient/pages/thePublic/index.ts | 34 +- src/patient/pages/uploadCert/index.scss | 2 +- src/patient/pages/uploadCert/index.ts | 17 +- src/patient/pages/uploadCertBak/index.ts | 158 +- src/patient/pages/vipLogin/index.ts | 157 +- src/patient/pages/vipLoginReject/index.ts | 16 +- src/patient/pages/webview/index.ts | 8 +- src/utils/captcha.ts | 3 +- src/utils/component.ts | 35 +- src/utils/crypto.ts | 18 +- src/utils/dayjs/day-zh-cn.js | 3 +- src/utils/dayjs/relativeTime.d.ts | 2 +- src/utils/dayjs/relativeTime.js | 9 +- 147 files changed, 10230 insertions(+), 4575 deletions(-) diff --git a/src/components/calendar/core.js b/src/components/calendar/core.js index f79b6a2..d0f038b 100644 --- a/src/components/calendar/core.js +++ b/src/components/calendar/core.js @@ -10,7 +10,7 @@ function calculateEmptyGrids(year, month, config) { const nextMonthGrids = calculateNextMonthGrids(year, month, config) return { prevMonthGrids, - nextMonthGrids + nextMonthGrids, } } @@ -20,13 +20,14 @@ function calculateEmptyGrids(year, month, config) { * @param {number} month 月份 */ function calculatePrevMonthGrids(year, month, config) { - let emptyGrids = [] + const emptyGrids = [] const prevMonthDays = dateUtil.getDatesCountOfMonth(year, month - 1) let firstDayOfWeek = dateUtil.firstDayOfWeek(year, month) if (config.firstDayOfWeek === 'Mon') { if (firstDayOfWeek === 0) { firstDayOfWeek = 6 - } else { + } + else { firstDayOfWeek -= 1 } } @@ -37,12 +38,13 @@ function calculatePrevMonthGrids(year, month, config) { for (let i = prevMonthDays; i > len; i--) { if (onlyShowCurrentMonth) { emptyGrids.push('') - } else { + } + else { const week = dateUtil.getDayOfWeek(+year, +month, i) emptyGrids.push({ ...YMInfo, date: i, - week + week, }) } } @@ -61,19 +63,24 @@ function calculateExtraEmptyDate(year, month, config) { let extDate = 0 if (+month === 2) { extDate += 7 - let firstDayofMonth = dateUtil.getDayOfWeek(year, month, 1) + const firstDayofMonth = dateUtil.getDayOfWeek(year, month, 1) if (config.firstDayOfWeek === 'Mon') { - if (+firstDayofMonth === 1) extDate += 7 - } else { - if (+firstDayofMonth === 0) extDate += 7 + if (+firstDayofMonth === 1) + extDate += 7 + } + else { + if (+firstDayofMonth === 0) + extDate += 7 } - } else { - let firstDayofMonth = dateUtil.getDayOfWeek(year, month, 1) + } + else { + const firstDayofMonth = dateUtil.getDayOfWeek(year, month, 1) if (config.firstDayOfWeek === 'Mon') { if (firstDayofMonth !== 0 && firstDayofMonth < 6) { extDate += 7 } - } else { + } + else { if (firstDayofMonth <= 5) { extDate += 7 } @@ -87,13 +94,14 @@ function calculateExtraEmptyDate(year, month, config) { * @param {number} month 月份 */ function calculateNextMonthGrids(year, month, config) { - let emptyGrids = [] + const emptyGrids = [] const datesCount = dateUtil.getDatesCountOfMonth(year, month) let lastDayWeek = dateUtil.getDayOfWeek(year, month, datesCount) if (config.firstDayOfWeek === 'Mon') { if (lastDayWeek === 0) { lastDayWeek = 6 - } else { + } + else { lastDayWeek -= 1 } } @@ -107,12 +115,13 @@ function calculateNextMonthGrids(year, month, config) { const week = dateUtil.getDayOfWeek(+year, +month, i) if (onlyShowCurrentMonth) { emptyGrids.push('') - } else { + } + else { emptyGrids.push({ id: i - 1, ...YMInfo, date: i, - week: week || 7 + week: week || 7, }) } } @@ -138,7 +147,7 @@ export function calcJumpData({ dateInfo, config, component }) { curMonth: month, curDate: date, dates: calculateCurrentMonthDates(year, month), - ...emptyGrids + ...emptyGrids, } return calendar } diff --git a/src/components/calendar/helper.js b/src/components/calendar/helper.js index ada887b..5bebfa4 100644 --- a/src/components/calendar/helper.js +++ b/src/components/calendar/helper.js @@ -7,6 +7,6 @@ export function calcTargetYMInfo() { prev_month: dateUtil.getPrevMonthInfo, next_month: dateUtil.getNextMonthInfo, prev_year: dateUtil.getPrevYearInfo, - next_year: dateUtil.getNextYearInfo + next_year: dateUtil.getNextYearInfo, } } diff --git a/src/components/calendar/index.d.ts b/src/components/calendar/index.d.ts index 509db18..e7f0809 100644 --- a/src/components/calendar/index.d.ts +++ b/src/components/calendar/index.d.ts @@ -1 +1 @@ -export {}; +export {} diff --git a/src/components/calendar/index.js b/src/components/calendar/index.js index 7781ce1..24fa606 100644 --- a/src/components/calendar/index.js +++ b/src/components/calendar/index.js @@ -1,24 +1,24 @@ -import plugins from './plugins/index' import { calcJumpData } from './core' -import { renderCalendar } from './render' import { calcTargetYMInfo } from './helper' -import { dateUtil, calendarGesture, logger } from './utils/index' +import plugins from './plugins/index' +import { renderCalendar } from './render' +import { calendarGesture, dateUtil, logger } from './utils/index' Component({ options: { styleIsolation: 'apply-shared', - multipleSlots: true // 在组件定义时的选项中启用多slot支持 + multipleSlots: true, // 在组件定义时的选项中启用多slot支持 }, properties: { config: { type: Object, - value: {} - } + value: {}, + }, }, lifetimes: { - attached: function() { + attached() { this.initComp() - } + }, }, methods: { initComp() { @@ -30,7 +30,7 @@ Component({ const calendarConfig = this.properties.config || {} if (calendarConfig.disableMode && !calendarConfig.disableMode.date) { calendarConfig.disableMode.date = dateUtil.toTimeStr( - dateUtil.todayFMD() + dateUtil.todayFMD(), ) } return calendarConfig @@ -42,27 +42,29 @@ Component({ const dateInfo = defaultDate.split('-') if (dateInfo.length < 3) { return logger.warn('defaultDate配置格式应为: 2018-4-2 或 2018-04-02') - } else { + } + else { date = { year: +dateInfo[0], month: +dateInfo[1], - date: +dateInfo[2] + date: +dateInfo[2], } } } const waitRenderData = calcJumpData({ dateInfo: date, - config + config, }) const timestamp = dateUtil.todayTimestamp() if (config.autoChoosedWhenJump) { const target = waitRenderData.dates.filter( - item => dateUtil.toTimeStr(item) === dateUtil.toTimeStr(date) + item => dateUtil.toTimeStr(item) === dateUtil.toTimeStr(date), ) if (target && target.length) { if (!waitRenderData.selectedDates) { waitRenderData.selectedDates = target - } else { + } + else { waitRenderData.selectedDates.push(target[0]) } } @@ -70,7 +72,7 @@ Component({ return { ...waitRenderData, todayTimestamp: timestamp, - weeksCh: dateUtil.getWeekHeader(config.firstDayOfWeek) + weeksCh: dateUtil.getWeekHeader(config.firstDayOfWeek), } }, setConfig(config) { @@ -80,21 +82,23 @@ Component({ config.theme = config.theme || 'default' this.setData( { - config + config, }, () => { - for (let plugin of plugins.installed) { + for (const plugin of plugins.installed) { const [, p] = plugin if (typeof p.install === 'function') { p.install(this) } if (typeof p.methods === 'function') { const methods = p.methods(this) - for (let fnName in methods) { - if (fnName.startsWith('__')) continue + for (const fnName in methods) { + if (fnName.startsWith('__')) + continue const fn = methods[fnName] if (typeof fn === 'function') { - if (!this.calendar) this.calendar = {} + if (!this.calendar) + this.calendar = {} this.calendar[fnName] = fn } } @@ -102,25 +106,26 @@ Component({ } const initData = this.initCalendar(config) renderCalendar.call(this, initData, config) - } + }, ) }, tapDate(e) { const { info } = e.currentTarget.dataset const { date, disable } = info || {} - if (disable || !date) return + if (disable || !date) + return const { calendar, config } = this.data let calendarData = calendar let calendarConfig = config if (config.takeoverTap) { return this.triggerEvent('takeoverTap', info) } - for (let plugin of plugins.installed) { + for (const plugin of plugins.installed) { const [, p] = plugin if (typeof p.onTapDate === 'function') { const { calendarData: __calendarData, - calendarConfig: __calendarConfig + calendarConfig: __calendarConfig, } = p.onTapDate(info, calendarData, calendarConfig) calendarData = __calendarData calendarConfig = __calendarConfig @@ -141,7 +146,7 @@ Component({ this.swipeLock = true this.setData({ 'gesture.startX': startX, - 'gesture.startY': startY + 'gesture.startY': startY, }) }, /** @@ -151,7 +156,8 @@ Component({ calendarTouchmove(e) { const { gesture } = this.data const { preventSwipe } = this.properties.config - if (!this.swipeLock || preventSwipe) return + if (!this.swipeLock || preventSwipe) + return if (calendarGesture.isLeft(gesture, e.touches[0])) { this.handleSwipe('left') this.swipeLock = false @@ -164,7 +170,7 @@ Component({ calendarTouchend(e) { this.setData({ 'calendar.leftSwipe': 0, - 'calendar.rightSwipe': 0 + 'calendar.rightSwipe': 0, }) }, handleSwipe(direction) { @@ -173,15 +179,15 @@ Component({ swipeKey = 'calendar.rightSwipe' } this.setData({ - [swipeKey]: 1 + [swipeKey]: 1, }) const { calendar } = this.data - let calendarData = calendar + const calendarData = calendar const { curYear, curMonth } = calendarData const getMonthInfo = calcTargetYMInfo()[direction] const target = getMonthInfo({ year: +curYear, - month: +curMonth + month: +curMonth, }) target.direction = direction this.renderCalendar(target) @@ -193,7 +199,7 @@ Component({ const getMonthInfo = calcTargetYMInfo()[type] const target = getMonthInfo({ year: +curYear, - month: +curMonth + month: +curMonth, }) target.direction = type this.renderCalendar(target) @@ -201,7 +207,7 @@ Component({ renderCalendar(target) { let { calendar: calendarData, config } = this.data const { curYear, curMonth } = calendarData || {} - for (let plugin of plugins.installed) { + for (const plugin of plugins.installed) { const [, p] = plugin if (typeof p.onSwitchCalendar === 'function') { calendarData = p.onSwitchCalendar(target, calendarData, this) @@ -215,44 +221,47 @@ Component({ this.triggerEvent(triggerEventName, { current: { year: +curYear, - month: +curMonth + month: +curMonth, }, - next: target + next: target, }) this.triggerEvent('onSwipe', { current: { year: +curYear, - month: +curMonth + month: +curMonth, }, next: target, - type: triggerEventName + type: triggerEventName, }) }) }, doubleClickJumpToToday() { const { multi, weekMode } = this.calendar.getCalendarConfig() || {} - if (multi || weekMode) return + if (multi || weekMode) + return if (this.count === undefined) { this.count = 1 - } else { + } + else { this.count += 1 } if (this.lastClick) { const difference = new Date().getTime() - this.lastClick if ( - difference < 500 && - this.count >= 2 && - typeof this.calendar.jump === 'function' + difference < 500 + && this.count >= 2 + && typeof this.calendar.jump === 'function' ) { const today = dateUtil.todayFMD() this.calendar.jump(today) } this.count = undefined this.lastClick = undefined - } else { + } + else { this.lastClick = new Date().getTime() } this.triggerEvent('jumpToToday') - } - } + }, + }, }) diff --git a/src/components/calendar/index.json b/src/components/calendar/index.json index 1edff93..20c1b2e 100644 --- a/src/components/calendar/index.json +++ b/src/components/calendar/index.json @@ -1,3 +1,3 @@ { "component": true -} \ No newline at end of file +} diff --git a/src/components/calendar/plugins/holidays/holidays-map.js b/src/components/calendar/plugins/holidays/holidays-map.js index 1472f87..37eae4e 100644 --- a/src/components/calendar/plugins/holidays/holidays-map.js +++ b/src/components/calendar/plugins/holidays/holidays-map.js @@ -14,38 +14,38 @@ export const festival = { 1: { type: 'festival', name: '春节', - label: '春节' + label: '春节', }, 8: { type: 'festival', name: '腊八节', - label: '腊八' + label: '腊八', }, 15: { type: 'festival', name: '元宵节', - label: '元宵' - } + label: '元宵', + }, }, 7: { 7: { type: 'festival', name: '七夕节', - label: '七夕' + label: '七夕', }, 15: { type: 'festival', name: '中元节', - label: '中元节' - } + label: '中元节', + }, }, 9: { 9: { type: 'festival', name: '重阳节', - label: '重阳节' - } - } + label: '重阳节', + }, + }, }, // 阳历固定日期节日 solar: { @@ -53,160 +53,160 @@ export const festival = { 14: { type: 'festival', name: '情人节', - label: '情人节' - } + label: '情人节', + }, }, 3: { 12: { type: 'festival', name: '植树节', - label: '植树节' - } + label: '植树节', + }, }, 4: { 1: { type: 'festival', name: '愚人节', - label: '愚人节' + label: '愚人节', }, 5: { type: 'festival', name: '清明节', - label: '清明节' - } + label: '清明节', + }, }, 5: { 1: { type: 'festival', name: '劳动节', - label: '劳动节' - } + label: '劳动节', + }, }, 6: { 1: { type: 'festival', name: '儿童节', - label: '儿童节' - } + label: '儿童节', + }, }, 7: { 1: { type: 'festival', name: '建党节', - label: '建党节' - } + label: '建党节', + }, }, 8: { 1: { type: 'festival', name: '建军节', - label: '建军节' - } + label: '建军节', + }, }, 9: { 10: { type: 'festival', name: '教师节', - label: '教师节' - } + label: '教师节', + }, }, 10: { 1: { type: 'festival', name: '国庆节', - label: '国庆节' - } + label: '国庆节', + }, }, 12: { 25: { type: 'festival', name: '圣诞节', - label: '圣诞节' - } - } - } + label: '圣诞节', + }, + }, + }, } export const holidays = { 2020: { 1: { - 1: { + '1': { type: 'holiday', name: '元旦', - label: '休' + label: '休', }, - 19: { + '19': { type: 'work', name: '调班', - label: '班' + label: '班', }, '24-30': { type: 'holiday', name: '春节', - label: '休' - } + label: '休', + }, }, 2: { 1: { type: 'work', name: '调班', - label: '班' - } + label: '班', + }, }, 4: { '4-6': { type: 'holiday', name: '清明节', - label: '休' + label: '休', }, - 26: { + '26': { type: 'work', name: '调班', - label: '班' - } + label: '班', + }, }, 5: { '1-5': { type: 'holiday', name: '劳动节', - label: '休' + label: '休', }, - 9: { + '9': { type: 'work', name: '调班', - label: '班' - } + label: '班', + }, }, 6: { '25-27': { type: 'holiday', name: '端午节', - label: '休' + label: '休', }, - 28: { + '28': { type: 'work', name: '调班', - label: '班' - } + label: '班', + }, }, 9: { 27: { type: 'work', name: '调班', - label: '班' - } + label: '班', + }, }, 10: { '1-8': { type: 'holiday', name: '国庆节/中秋节', - label: '休' + label: '休', }, - 10: { + '10': { type: 'work', name: '调班', - label: '班' - } - } - } + label: '班', + }, + }, + }, } diff --git a/src/components/calendar/plugins/holidays/index.d.ts b/src/components/calendar/plugins/holidays/index.d.ts index 509db18..e7f0809 100644 --- a/src/components/calendar/plugins/holidays/index.d.ts +++ b/src/components/calendar/plugins/holidays/index.d.ts @@ -1 +1 @@ -export {}; +export {} diff --git a/src/components/calendar/plugins/holidays/index.js b/src/components/calendar/plugins/holidays/index.js index 36b8eeb..5e17a3f 100644 --- a/src/components/calendar/plugins/holidays/index.js +++ b/src/components/calendar/plugins/holidays/index.js @@ -6,8 +6,8 @@ * @Last Modified time: 2020-10-16 17:34:13 */ -import { holidays, festival } from './holidays-map' import { dateUtil, getCalendarData, logger } from '../../utils/index' +import { festival, holidays } from './holidays-map' /** * 当前是否在休假期内 @@ -20,21 +20,21 @@ function inHolidays({ year, month }, { start, end, current }) { const startTimestamp = getTimeStamp({ year, month, - date: start + date: start, }) const endTimestamp = getTimeStamp({ year, month, - date: end + date: end, }) const currentDateTimestamp = getTimeStamp({ year, month, - date: current + date: current, }) if ( - currentDateTimestamp >= startTimestamp && - currentDateTimestamp <= endTimestamp + currentDateTimestamp >= startTimestamp + && currentDateTimestamp <= endTimestamp ) { return true } @@ -49,13 +49,15 @@ function addSpecialFestival(date, component) { const info = { type: 'festival', name: '除夕', - label: '除夕' + label: '除夕', } if (lMonth === 12) { - if (!festival.lunar['12']) festival.lunar['12'] = {} + if (!festival.lunar['12']) + festival.lunar['12'] = {} if (convertlLunar2Solar(`${lYear}-12-30`) === -1) { festival.lunar['12']['29'] = info - } else { + } + else { festival.lunar['12']['30'] = info } } @@ -63,8 +65,8 @@ function addSpecialFestival(date, component) { /** * 是否匹配到节日 - * @param {object} [dateInfo={}] - * @param {object} [component={}] + * @param {object} [dateInfo] + * @param {object} [component] * @returns {object|boolean} 匹配到的节日数据或者false */ function hasFestivalDate(dateInfo = {}, component = {}) { @@ -78,19 +80,22 @@ function hasFestivalDate(dateInfo = {}, component = {}) { if (!festivalDate) { const festivalOfMonth = festival.lunar[lMonth] || {} const festivalDateKey = Object.keys(festivalOfMonth).find(item => - item.match(new RegExp(`\\b${lDay}\\b`)) + item.match(new RegExp(`\\b${lDay}\\b`)), ) if (!festivalDateKey) { festivalDate = false - } else { + } + else { const festivalInfo = festival.lunar[lMonth][festivalDateKey] if (!festivalInfo) { festivalDate = false - } else { + } + else { const { condition } = festivalInfo if (typeof condition === 'function') { festivalDate = condition(lunarDateInfo) - } else { + } + else { festivalDate = false } } @@ -106,23 +111,24 @@ export default () => { beforeRender(calendarData = {}, calendarConfig = {}, component) { let { dates = [] } = calendarData if (calendarConfig.showHolidays || calendarConfig.showFestival) { - dates = dates.map(d => { + dates = dates.map((d) => { let item = { ...d } const { year, month, date } = item - const holidaysOfMonth = - (holidays[year] && holidays[year][month]) || {} + const holidaysOfMonth + = (holidays[year] && holidays[year][month]) || {} const holidayDate = holidaysOfMonth[date] if (holidayDate) { item = { ...item, - ...holidayDate + ...holidayDate, } - } else { + } + else { const holidayKeys = Object.keys(holidaysOfMonth).filter(item => - item.includes('-') + item.includes('-'), ) let target = '' - for (let v of holidayKeys) { + for (const v of holidayKeys) { const [start, end] = v.split('-') if (+d.date >= +start && +d.date <= +end) { target = v @@ -133,28 +139,29 @@ export default () => { const isInHolidays = inHolidays( { year, - month + month, }, { start, end, - current: date - } + current: date, + }, ) if (isInHolidays) { item = { ...item, - ...holidaysOfMonth[target] + ...holidaysOfMonth[target], } - } else if (calendarConfig.showFestival) { - const { convertSolarLunar, convertlLunar2Solar } = - component.calendar || {} + } + else if (calendarConfig.showFestival) { + const { convertSolarLunar, convertlLunar2Solar } + = component.calendar || {} if ( - typeof convertSolarLunar !== 'function' || - typeof convertlLunar2Solar !== 'function' + typeof convertSolarLunar !== 'function' + || typeof convertlLunar2Solar !== 'function' ) { return logger.warn( - '农历节日显示需要引入农历插件(/component/v2/plugins/solarLunar)' + '农历节日显示需要引入农历插件(/component/v2/plugins/solarLunar)', ) } addSpecialFestival(item, component) @@ -162,7 +169,7 @@ export default () => { if (festivalDate) { item = { ...item, - ...festivalDate + ...festivalDate, } } } @@ -173,9 +180,9 @@ export default () => { return { calendarData: { ...calendarData, - dates: dates + dates, }, - calendarConfig + calendarConfig, } }, methods(component) { @@ -186,16 +193,17 @@ export default () => { return this.methods(component).getHolidaysOfYear(curYear) }, getHolidaysOfYear(year) { - if (!year) return logger.warn('getHolidaysOfCurrentYear() 入参错误') + if (!year) + return logger.warn('getHolidaysOfCurrentYear() 入参错误') if (!holidays[year]) { logger.warn('未匹配到当前年份节假日信息,请自行补充') return { - err: 'not match' + err: 'not match', } } return holidays[year] - } + }, } - } + }, } } diff --git a/src/components/calendar/plugins/index.d.ts b/src/components/calendar/plugins/index.d.ts index 509db18..e7f0809 100644 --- a/src/components/calendar/plugins/index.d.ts +++ b/src/components/calendar/plugins/index.d.ts @@ -1 +1 @@ -export {}; +export {} diff --git a/src/components/calendar/plugins/index.js b/src/components/calendar/plugins/index.js index baa75d7..cb8c8ea 100644 --- a/src/components/calendar/plugins/index.js +++ b/src/components/calendar/plugins/index.js @@ -3,16 +3,17 @@ import preset from './preset/index' export default { installed: [...preset], use(plugin) { - if (typeof plugin !== 'function') return + if (typeof plugin !== 'function') + return const info = plugin() || {} const { name } = info if ( - name && - name !== 'methods' && - !this.installed.some(p => p[0] === name) + name + && name !== 'methods' + && !this.installed.some(p => p[0] === name) ) { this.installed.unshift([name, info]) } return this - } + }, } diff --git a/src/components/calendar/plugins/preset/base.js b/src/components/calendar/plugins/preset/base.js index 20d61fe..ceb29f0 100644 --- a/src/components/calendar/plugins/preset/base.js +++ b/src/components/calendar/plugins/preset/base.js @@ -4,15 +4,15 @@ * @Date: 2020-10-08 21:22:09* * @Last Modified by: drfu * @Last Modified time: 2020-10-11 13:28:52 - * */ + */ import { calcJumpData } from '../../core' import { renderCalendar } from '../../render' import { dateUtil, + getCalendarConfig, getCalendarData, setCalendarData, - getCalendarConfig } from '../../utils/index' export default () => { @@ -21,12 +21,12 @@ export default () => { beforeRender(calendarData = {}, calendarConfig) { const calendar = calendarData const { selectedDates = [], dates } = calendar - let _dates = [...dates] + const _dates = [...dates] if (selectedDates.length) { const selectedDatesStr = selectedDates.map(date => - dateUtil.toTimeStr(date) + dateUtil.toTimeStr(date), ) - _dates.forEach(date => { + _dates.forEach((date) => { const dateStr = dateUtil.toTimeStr(date) if (selectedDatesStr.includes(dateStr)) { date.choosed = true @@ -36,21 +36,21 @@ export default () => { return { calendarData: { ...calendarData, - dates: _dates + dates: _dates, }, - calendarConfig + calendarConfig, } }, onTapDate(tapedDate, calendarData = {}, calendarConfig = {}) { const calendar = { - ...calendarData + ...calendarData, } const dateIndex = dateUtil.findDateIndexInArray( tapedDate, - calendarData.dates + calendarData.dates, ) const { multi, inverse } = calendarConfig - let dates = [...calendar.dates] + const dates = [...calendar.dates] const { selectedDates = [] } = calendar if (!multi) { let preSelectedDate = {} @@ -61,7 +61,7 @@ export default () => { if (!inverse && timeStr(preSelectedDate) === timeStr(tapedDate)) { return calendar } - let _tapedDate = { ...tapedDate, choosed: !tapedDate.choosed } + const _tapedDate = { ...tapedDate, choosed: !tapedDate.choosed } dates[dateIndex] = _tapedDate if (preSelectedDate.date) { @@ -73,32 +73,35 @@ export default () => { } if (dates[dateIndex].choosed) { calendar.selectedDates = [dates[dateIndex]] - } else { + } + else { calendar.selectedDates = [] } - } else { + } + else { dates[dateIndex] = { ...dates[dateIndex], - choosed: !dates[dateIndex].choosed + choosed: !dates[dateIndex].choosed, } if (!calendar.selectedDates) { calendar.selectedDates = [] } if (dates[dateIndex].choosed) { calendar.selectedDates.push(dates[dateIndex]) - } else { + } + else { calendar.selectedDates = calendar.selectedDates.filter( date => - dateUtil.toTimeStr(date) !== dateUtil.toTimeStr(dates[dateIndex]) + dateUtil.toTimeStr(date) !== dateUtil.toTimeStr(dates[dateIndex]), ) } } return { calendarData: { ...calendar, - dates + dates, }, - calendarConfig + calendarConfig, } }, onSwitchCalendar(date, calendarData = {}, component) { @@ -108,21 +111,21 @@ export default () => { } const updatedRenderData = calcJumpData({ dateInfo: date, - config: calendarConfig + config: calendarConfig, }) return { ...calendarData, - ...updatedRenderData + ...updatedRenderData, } }, methods(component) { return { - jump: dateInfo => { + jump: (dateInfo) => { if (Object.prototype.toString.call(dateInfo) !== '[object Object]') return const updatedRenderData = calcJumpData({ dateInfo, - component + component, }) const existCalendarData = getCalendarData('calendar', component) const config = getCalendarConfig(component) @@ -130,13 +133,14 @@ export default () => { const target = updatedRenderData.dates[dateInfo.date - 1] if (!updatedRenderData.selectedDates) { updatedRenderData.selectedDates = [target] - } else { + } + else { updatedRenderData.selectedDates.push(target) } } return renderCalendar.call(component, { ...existCalendarData, - ...updatedRenderData + ...updatedRenderData, }) }, getCalendarConfig() { @@ -148,7 +152,7 @@ export default () => { reject('异常:未找到组件配置信息') return } - let conf = { ...component.config, ...config } + const conf = { ...component.config, ...config } component.config = conf setCalendarData({ config: conf }, component) .then(resolve) @@ -164,66 +168,69 @@ export default () => { if (config.chooseAreaMode) { chooseAreaData = { chooseAreaTimestamp: [], - tempChooseAreaTimestamp: [] + tempChooseAreaTimestamp: [], } } if (!cancelDates.length) { - dates.forEach(item => { + dates.forEach((item) => { item.choosed = false }) updatedRenderData = { dates, - selectedDates: [] + selectedDates: [], } - } else { + } + else { const cancelDatesStr = cancelDates.map(date => - dateUtil.toTimeStr(date) + dateUtil.toTimeStr(date), ) const filterSelectedDates = selectedDates.filter( - date => !cancelDatesStr.includes(dateUtil.toTimeStr(date)) + date => !cancelDatesStr.includes(dateUtil.toTimeStr(date)), ) - dates.forEach(date => { + dates.forEach((date) => { if (cancelDatesStr.includes(dateUtil.toTimeStr(date))) { date.choosed = false } }) updatedRenderData = { dates, - selectedDates: filterSelectedDates + selectedDates: filterSelectedDates, } } return renderCalendar.call(component, { ...existCalendarData, ...updatedRenderData, - ...chooseAreaData + ...chooseAreaData, }) }, - setSelectedDates: targetDates => { + setSelectedDates: (targetDates) => { const existCalendarData = getCalendarData('calendar', component) - let { dates, selectedDates = [] } = existCalendarData || {} + const { dates, selectedDates = [] } = existCalendarData || {} let __selectedDates = [] let __dates = dates if (!targetDates) { - __dates = dates.map(item => { + __dates = dates.map((item) => { const date = { ...item } date.choosed = true if (existCalendarData.showLabelAlways && date.showTodoLabel) { date.showTodoLabel = true - } else { + } + else { date.showTodoLabel = false } return date }) __selectedDates = dates - } else if (targetDates && targetDates.length) { + } + else if (targetDates && targetDates.length) { const allSelected = dateUtil.uniqueArrayByDate( - selectedDates.concat(targetDates) + selectedDates.concat(targetDates), ) const allSelectedDateStr = allSelected.map(d => - dateUtil.toTimeStr(d) + dateUtil.toTimeStr(d), ) - __dates = dates.map(item => { + __dates = dates.map((item) => { const date = { ...item } if (allSelectedDateStr.includes(dateUtil.toTimeStr(date))) { date.choosed = true @@ -231,7 +238,8 @@ export default () => { } if (existCalendarData.showLabelAlways && date.showTodoLabel) { date.showTodoLabel = true - } else { + } + else { date.showTodoLabel = false } return date @@ -240,38 +248,40 @@ export default () => { return renderCalendar.call(component, { ...existCalendarData, dates: __dates, - selectedDates: __selectedDates + selectedDates: __selectedDates, }) }, - setDateStyle: toSetDates => { - if (!Array.isArray(toSetDates)) return Promise.reject() + setDateStyle: (toSetDates) => { + if (!Array.isArray(toSetDates)) + return Promise.reject() const existCalendarData = getCalendarData('calendar', component) const { dates = [], specialStyleDates } = existCalendarData || {} if (Array.isArray(specialStyleDates)) { toSetDates = dateUtil.uniqueArrayByDate([ ...specialStyleDates, - ...toSetDates + ...toSetDates, ]) } const toSetDatesStr = toSetDates.map(item => dateUtil.toTimeStr(item)) - const _dates = dates.map(item => { + const _dates = dates.map((item) => { const idx = toSetDatesStr.indexOf(dateUtil.toTimeStr(item)) if (idx > -1) { return { ...item, - class: toSetDates[idx].class + class: toSetDates[idx].class, } - } else { + } + else { return item } }) return renderCalendar.call(component, { ...existCalendarData, dates: _dates, - specialStyleDates: toSetDates + specialStyleDates: toSetDates, }) - } + }, } - } + }, } } diff --git a/src/components/calendar/plugins/preset/get-calendar-data.js b/src/components/calendar/plugins/preset/get-calendar-data.js index ec5ab64..e2a0cb1 100644 --- a/src/components/calendar/plugins/preset/get-calendar-data.js +++ b/src/components/calendar/plugins/preset/get-calendar-data.js @@ -4,14 +4,14 @@ * @Date: 2020-10-08 21:22:09* * @Last Modified by: drfu * @Last Modified time: 2020-10-11 13:42:37 - * */ + */ -import { getCalendarData, logger, getCalendarConfig } from '../../utils/index' +import { getCalendarConfig, getCalendarData, logger } from '../../utils/index' function wrapDateWithLunar(dates = [], convertFn) { const datesWithLunar = JSON.parse(JSON.stringify(dates)).map(date => ({ ...date, - lunar: convertFn(date) + lunar: convertFn(date), })) return datesWithLunar } @@ -25,21 +25,23 @@ export default () => { const { curYear, curMonth } = getCalendarData('calendar', component) return { year: curYear, - month: curMonth + month: curMonth, } }, getSelectedDates: (options = {}) => { - const dates = - getCalendarData('calendar.selectedDates', component) || [] + const dates + = getCalendarData('calendar.selectedDates', component) || [] const config = getCalendarConfig(component) || {} if (options.lunar && !config.showLunar) { const injectedFns = component.calendar || {} if (typeof injectedFns.convertSolarLunar === 'function') { return wrapDateWithLunar(dates, injectedFns.convertSolarLunar) - } else { + } + else { logger.warn('获取农历信息需引入农历插件') } - } else { + } + else { return dates } }, @@ -50,20 +52,22 @@ export default () => { const injectedFns = component.calendar || {} if (typeof injectedFns.convertSolarLunar === 'function') { return wrapDateWithLunar(dates, injectedFns.convertSolarLunar) - } else { + } + else { logger.warn('获取农历信息需引入农历插件') } - } else { + } + else { return dates } }, getCalendarAllData: () => { return { data: getCalendarData('calendar', component) || {}, - config: getCalendarConfig(component) || {} + config: getCalendarConfig(component) || {}, } - } + }, } - } + }, } } diff --git a/src/components/calendar/plugins/preset/index.d.ts b/src/components/calendar/plugins/preset/index.d.ts index 509db18..e7f0809 100644 --- a/src/components/calendar/plugins/preset/index.d.ts +++ b/src/components/calendar/plugins/preset/index.d.ts @@ -1 +1 @@ -export {}; +export {} diff --git a/src/components/calendar/plugins/preset/index.js b/src/components/calendar/plugins/preset/index.js index f448cfc..dd0f081 100644 --- a/src/components/calendar/plugins/preset/index.js +++ b/src/components/calendar/plugins/preset/index.js @@ -3,7 +3,7 @@ import getCalendarData from './get-calendar-data' const preset = [ ['base', base()], - ['get-calendar-data', getCalendarData()] + ['get-calendar-data', getCalendarData()], ] export default preset diff --git a/src/components/calendar/plugins/selectable.d.ts b/src/components/calendar/plugins/selectable.d.ts index 509db18..e7f0809 100644 --- a/src/components/calendar/plugins/selectable.d.ts +++ b/src/components/calendar/plugins/selectable.d.ts @@ -1 +1 @@ -export {}; +export {} diff --git a/src/components/calendar/plugins/selectable.js b/src/components/calendar/plugins/selectable.js index d306837..3ed1f91 100644 --- a/src/components/calendar/plugins/selectable.js +++ b/src/components/calendar/plugins/selectable.js @@ -4,10 +4,10 @@ * @Date: 2020-10-08 21:22:09* * @Last Modified by: drfu * @Last Modified time: 2020-10-08 21:25:00 - * */ + */ -import { getCalendarData, dateUtil, logger } from '../utils/index' import { renderCalendar } from '../render' +import { dateUtil, getCalendarData, logger } from '../utils/index' function convertEnableAreaToTimestamp(timearea = []) { const start = timearea[0].split('-') @@ -24,7 +24,7 @@ function convertEnableAreaToTimestamp(timearea = []) { start, end, startTimestamp, - endTimestamp + endTimestamp, } } @@ -33,39 +33,46 @@ function isValiditeOfDateArea(dateArea) { start, end, startTimestamp, - endTimestamp + endTimestamp, } = convertEnableAreaToTimestamp(dateArea) - if (!start || !end) return + if (!start || !end) + return const datesCountOfStart = dateUtil.getDatesCountOfMonth(start[0], start[1]) const datesCountOfEnd = dateUtil.getDatesCountOfMonth(end[0], end[1]) if (start[2] > datesCountOfStart || start[2] < 1) { logger.warn('enableArea() 开始日期错误,指定日期不在指定月份天数范围内') return false - } else if (start[1] > 12 || start[1] < 1) { + } + else if (start[1] > 12 || start[1] < 1) { logger.warn('enableArea() 开始日期错误,月份超出1-12月份') return false - } else if (end[2] > datesCountOfEnd || end[2] < 1) { + } + else if (end[2] > datesCountOfEnd || end[2] < 1) { logger.warn('enableArea() 截止日期错误,指定日期不在指定月份天数范围内') return false - } else if (end[1] > 12 || end[1] < 1) { + } + else if (end[1] > 12 || end[1] < 1) { logger.warn('enableArea() 截止日期错误,月份超出1-12月份') return false - } else if (startTimestamp > endTimestamp) { + } + else if (startTimestamp > endTimestamp) { logger.warn('enableArea()参数最小日期大于了最大日期') return false - } else { + } + else { return true } } function handleDisableMode(calendarConfig) { const { disableMode } = calendarConfig - if (!disableMode) return {} - const disableBound = - dateUtil.getTimeStamp(disableMode.date) || dateUtil.todayTimestamp() + if (!disableMode) + return {} + const disableBound + = dateUtil.getTimeStamp(disableMode.date) || dateUtil.todayTimestamp() return { disableBound, - disableType: disableMode.type + disableType: disableMode.type, } } @@ -73,11 +80,12 @@ function disabledByConfig(dateInfo, currentDate, calendarConfig) { const date = { ...dateInfo } const { disableType, disableBound } = handleDisableMode(calendarConfig) if ( - (disableType === 'before' && disableBound && currentDate < disableBound) || - (disableType === 'after' && disableBound && currentDate > disableBound) + (disableType === 'before' && disableBound && currentDate < disableBound) + || (disableType === 'after' && disableBound && currentDate > disableBound) ) { date.disable = true - } else { + } + else { date.disable = false } return date @@ -92,34 +100,38 @@ export default () => { enableArea, enableDates, disableDates, - renderCausedBy + renderCausedBy, } = calendarData - const _dates = [...dates].map(date => { - let item = { ...date } + const _dates = [...dates].map((date) => { + const item = { ...date } const timeStr = dateUtil.toTimeStr(date) const timestamp = +dateUtil.getTimeStamp(item) if (renderCausedBy === 'enableDates') { if (enableDates && enableDates.length) { if (enableDates.includes(timeStr)) { item.disable = false - } else { + } + else { item.disable = true } return item } - } else if (renderCausedBy === 'enableArea') { + } + else if (renderCausedBy === 'enableArea') { if (enableArea && enableArea.length) { const [startTimestamp, endTimestamp] = enableArea || [] - const ifOutofArea = - +startTimestamp > timestamp || timestamp > +endTimestamp + const ifOutofArea + = +startTimestamp > timestamp || timestamp > +endTimestamp item.disable = ifOutofArea return item } - } else if (renderCausedBy === 'disableDates') { + } + else if (renderCausedBy === 'disableDates') { if (disableDates && disableDates.length) { if (disableDates && disableDates.includes(timeStr)) { item.disable = true - } else { + } + else { item.disable = false } return item @@ -131,9 +143,9 @@ export default () => { return { calendarData: { ...calendarData, - dates: _dates + dates: _dates, }, - calendarConfig + calendarConfig, } }, methods(component) { @@ -145,26 +157,28 @@ export default () => { const existCalendarData = getCalendarData('calendar', component) const { startTimestamp, - endTimestamp + endTimestamp, } = convertEnableAreaToTimestamp(dateArea) return renderCalendar.call(component, { ...existCalendarData, renderCausedBy: 'enableArea', - enableArea: [startTimestamp, endTimestamp] + enableArea: [startTimestamp, endTimestamp], }) } - } else { + } + else { return Promise.inject( - 'enableArea()参数需为时间范围数组,形如:["2018-8-4" , "2018-8-24"]' + 'enableArea()参数需为时间范围数组,形如:["2018-8-4" , "2018-8-24"]', ) } }, enableDates: (toSet = []) => { - if (!toSet.length) return + if (!toSet.length) + return const existCalendarData = getCalendarData('calendar', component) const { enableDates = [] } = existCalendarData || {} - let toSetDates = toSet.map(item => { + let toSetDates = toSet.map((item) => { if (typeof item === 'string') { return dateUtil.transformDateRow2Dict(item) } @@ -173,25 +187,25 @@ export default () => { if (enableDates.length) { toSetDates = dateUtil.uniqueArrayByDate([ ...toSetDates, - ...enableDates.map(d => dateUtil.transformDateRow2Dict(d)) + ...enableDates.map(d => dateUtil.transformDateRow2Dict(d)), ]) } return renderCalendar.call(component, { ...existCalendarData, renderCausedBy: 'enableDates', - enableDates: toSetDates.map(date => { + enableDates: toSetDates.map((date) => { if (typeof date !== 'string') { return dateUtil.toTimeStr(date) } return date - }) + }), }) }, - disableDates: toSet => { + disableDates: (toSet) => { const existCalendarData = getCalendarData('calendar', component) const { disableDates = [], dates = [] } = existCalendarData || {} - let toSetDates = toSet.map(item => { - let date = { ...item } + let toSetDates = toSet.map((item) => { + const date = { ...item } if (typeof date === 'string') { return dateUtil.transformDateRow2Dict(item) } @@ -200,22 +214,22 @@ export default () => { if (disableDates && disableDates.length) { toSetDates = dateUtil.uniqueArrayByDate([ ...toSetDates, - ...disableDates.map(d => dateUtil.transformDateRow2Dict(d)) + ...disableDates.map(d => dateUtil.transformDateRow2Dict(d)), ]) } return renderCalendar.call(component, { ...existCalendarData, renderCausedBy: 'disableDates', dates, - disableDates: toSetDates.map(date => { + disableDates: toSetDates.map((date) => { if (typeof date !== 'string') { return dateUtil.toTimeStr(date) } return date - }) + }), }) - } + }, } - } + }, } } diff --git a/src/components/calendar/plugins/solarLunar/convertSolarLunar.js b/src/components/calendar/plugins/solarLunar/convertSolarLunar.js index e34bd1e..c879033 100644 --- a/src/components/calendar/plugins/solarLunar/convertSolarLunar.js +++ b/src/components/calendar/plugins/solarLunar/convertSolarLunar.js @@ -6,7 +6,7 @@ */ /* 公历年月日转农历数据 返回json */ // calendar.solar2lunar(1987,11,01); -/** 农历年月日转公历年月日 **/ +/** 农历年月日转公历年月日 */ // calendar.lunar2solar(1987,9,10); // 调用以上方法后返回类似如下object(json)具体以上就不需要解释了吧! // c开头的是公历各属性值 l开头的自然就是农历咯 gz开头的就是天干地支纪年的数据啦~ @@ -39,208 +39,208 @@ const calendar = { * @return Hex */ lunarInfo: [ - 0x04bd8, - 0x04ae0, - 0x0a570, - 0x054d5, - 0x0d260, - 0x0d950, + 0x04BD8, + 0x04AE0, + 0x0A570, + 0x054D5, + 0x0D260, + 0x0D950, 0x16554, - 0x056a0, - 0x09ad0, - 0x055d2, // 1900-1909 - 0x04ae0, - 0x0a5b6, - 0x0a4d0, - 0x0d250, - 0x1d255, - 0x0b540, - 0x0d6a0, - 0x0ada2, - 0x095b0, + 0x056A0, + 0x09AD0, + 0x055D2, // 1900-1909 + 0x04AE0, + 0x0A5B6, + 0x0A4D0, + 0x0D250, + 0x1D255, + 0x0B540, + 0x0D6A0, + 0x0ADA2, + 0x095B0, 0x14977, // 1910-1919 0x04970, - 0x0a4b0, - 0x0b4b5, - 0x06a50, - 0x06d40, - 0x1ab54, - 0x02b60, + 0x0A4B0, + 0x0B4B5, + 0x06A50, + 0x06D40, + 0x1AB54, + 0x02B60, 0x09570, - 0x052f2, + 0x052F2, 0x04970, // 1920-1929 0x06566, - 0x0d4a0, - 0x0ea50, - 0x06e95, - 0x05ad0, - 0x02b60, - 0x186e3, - 0x092e0, - 0x1c8d7, - 0x0c950, // 1930-1939 - 0x0d4a0, - 0x1d8a6, - 0x0b550, - 0x056a0, - 0x1a5b4, - 0x025d0, - 0x092d0, - 0x0d2b2, - 0x0a950, - 0x0b557, // 1940-1949 - 0x06ca0, - 0x0b550, + 0x0D4A0, + 0x0EA50, + 0x06E95, + 0x05AD0, + 0x02B60, + 0x186E3, + 0x092E0, + 0x1C8D7, + 0x0C950, // 1930-1939 + 0x0D4A0, + 0x1D8A6, + 0x0B550, + 0x056A0, + 0x1A5B4, + 0x025D0, + 0x092D0, + 0x0D2B2, + 0x0A950, + 0x0B557, // 1940-1949 + 0x06CA0, + 0x0B550, 0x15355, - 0x04da0, - 0x0a5b0, + 0x04DA0, + 0x0A5B0, 0x14573, - 0x052b0, - 0x0a9a8, - 0x0e950, - 0x06aa0, // 1950-1959 - 0x0aea6, - 0x0ab50, - 0x04b60, - 0x0aae4, - 0x0a570, + 0x052B0, + 0x0A9A8, + 0x0E950, + 0x06AA0, // 1950-1959 + 0x0AEA6, + 0x0AB50, + 0x04B60, + 0x0AAE4, + 0x0A570, 0x05260, - 0x0f263, - 0x0d950, - 0x05b57, - 0x056a0, // 1960-1969 - 0x096d0, - 0x04dd5, - 0x04ad0, - 0x0a4d0, - 0x0d4d4, - 0x0d250, - 0x0d558, - 0x0b540, - 0x0b6a0, - 0x195a6, // 1970-1979 - 0x095b0, - 0x049b0, - 0x0a974, - 0x0a4b0, - 0x0b27a, - 0x06a50, - 0x06d40, - 0x0af46, - 0x0ab60, + 0x0F263, + 0x0D950, + 0x05B57, + 0x056A0, // 1960-1969 + 0x096D0, + 0x04DD5, + 0x04AD0, + 0x0A4D0, + 0x0D4D4, + 0x0D250, + 0x0D558, + 0x0B540, + 0x0B6A0, + 0x195A6, // 1970-1979 + 0x095B0, + 0x049B0, + 0x0A974, + 0x0A4B0, + 0x0B27A, + 0x06A50, + 0x06D40, + 0x0AF46, + 0x0AB60, 0x09570, // 1980-1989 - 0x04af5, + 0x04AF5, 0x04970, - 0x064b0, - 0x074a3, - 0x0ea50, - 0x06b58, - 0x055c0, - 0x0ab60, - 0x096d5, - 0x092e0, // 1990-1999 - 0x0c960, - 0x0d954, - 0x0d4a0, - 0x0da50, + 0x064B0, + 0x074A3, + 0x0EA50, + 0x06B58, + 0x055C0, + 0x0AB60, + 0x096D5, + 0x092E0, // 1990-1999 + 0x0C960, + 0x0D954, + 0x0D4A0, + 0x0DA50, 0x07552, - 0x056a0, - 0x0abb7, - 0x025d0, - 0x092d0, - 0x0cab5, // 2000-2009 - 0x0a950, - 0x0b4a0, - 0x0baa4, - 0x0ad50, - 0x055d9, - 0x04ba0, - 0x0a5b0, + 0x056A0, + 0x0ABB7, + 0x025D0, + 0x092D0, + 0x0CAB5, // 2000-2009 + 0x0A950, + 0x0B4A0, + 0x0BAA4, + 0x0AD50, + 0x055D9, + 0x04BA0, + 0x0A5B0, 0x15176, - 0x052b0, - 0x0a930, // 2010-2019 + 0x052B0, + 0x0A930, // 2010-2019 0x07954, - 0x06aa0, - 0x0ad50, - 0x05b52, - 0x04b60, - 0x0a6e6, - 0x0a4e0, - 0x0d260, - 0x0ea65, - 0x0d530, // 2020-2029 - 0x05aa0, - 0x076a3, - 0x096d0, - 0x04afb, - 0x04ad0, - 0x0a4d0, - 0x1d0b6, - 0x0d250, - 0x0d520, - 0x0dd45, // 2030-2039 - 0x0b5a0, - 0x056d0, - 0x055b2, - 0x049b0, - 0x0a577, - 0x0a4b0, - 0x0aa50, - 0x1b255, - 0x06d20, - 0x0ada0, // 2040-2049 - /** Add By JJonline@JJonline.Cn **/ - 0x14b63, + 0x06AA0, + 0x0AD50, + 0x05B52, + 0x04B60, + 0x0A6E6, + 0x0A4E0, + 0x0D260, + 0x0EA65, + 0x0D530, // 2020-2029 + 0x05AA0, + 0x076A3, + 0x096D0, + 0x04AFB, + 0x04AD0, + 0x0A4D0, + 0x1D0B6, + 0x0D250, + 0x0D520, + 0x0DD45, // 2030-2039 + 0x0B5A0, + 0x056D0, + 0x055B2, + 0x049B0, + 0x0A577, + 0x0A4B0, + 0x0AA50, + 0x1B255, + 0x06D20, + 0x0ADA0, // 2040-2049 + /** Add By JJonline@JJonline.Cn */ + 0x14B63, 0x09370, - 0x049f8, + 0x049F8, 0x04970, - 0x064b0, - 0x168a6, - 0x0ea50, - 0x06b20, - 0x1a6c4, - 0x0aae0, // 2050-2059 - 0x0a2e0, - 0x0d2e3, - 0x0c960, - 0x0d557, - 0x0d4a0, - 0x0da50, - 0x05d55, - 0x056a0, - 0x0a6d0, - 0x055d4, // 2060-2069 - 0x052d0, - 0x0a9b8, - 0x0a950, - 0x0b4a0, - 0x0b6a6, - 0x0ad50, - 0x055a0, - 0x0aba4, - 0x0a5b0, - 0x052b0, // 2070-2079 - 0x0b273, + 0x064B0, + 0x168A6, + 0x0EA50, + 0x06B20, + 0x1A6C4, + 0x0AAE0, // 2050-2059 + 0x0A2E0, + 0x0D2E3, + 0x0C960, + 0x0D557, + 0x0D4A0, + 0x0DA50, + 0x05D55, + 0x056A0, + 0x0A6D0, + 0x055D4, // 2060-2069 + 0x052D0, + 0x0A9B8, + 0x0A950, + 0x0B4A0, + 0x0B6A6, + 0x0AD50, + 0x055A0, + 0x0ABA4, + 0x0A5B0, + 0x052B0, // 2070-2079 + 0x0B273, 0x06930, 0x07337, - 0x06aa0, - 0x0ad50, - 0x14b55, - 0x04b60, - 0x0a570, - 0x054e4, - 0x0d160, // 2080-2089 - 0x0e968, - 0x0d520, - 0x0daa0, - 0x16aa6, - 0x056d0, - 0x04ae0, - 0x0a9d4, - 0x0a2d0, - 0x0d150, - 0x0f252, // 2090-2099 - 0x0d520 + 0x06AA0, + 0x0AD50, + 0x14B55, + 0x04B60, + 0x0A570, + 0x054E4, + 0x0D160, // 2080-2089 + 0x0E968, + 0x0D520, + 0x0DAA0, + 0x16AA6, + 0x056D0, + 0x04AE0, + 0x0A9D4, + 0x0A2D0, + 0x0D150, + 0x0F252, // 2090-2099 + 0x0D520, ], // 2100 /** @@ -257,15 +257,15 @@ const calendar = { */ Gan: [ '\u7532', - '\u4e59', - '\u4e19', - '\u4e01', - '\u620a', - '\u5df1', - '\u5e9a', - '\u8f9b', - '\u58ec', - '\u7678' + '\u4E59', + '\u4E19', + '\u4E01', + '\u620A', + '\u5DF1', + '\u5E9A', + '\u8F9B', + '\u58EC', + '\u7678', ], /** @@ -275,18 +275,18 @@ const calendar = { * @return Cn string */ Zhi: [ - '\u5b50', - '\u4e11', - '\u5bc5', - '\u536f', - '\u8fb0', - '\u5df3', + '\u5B50', + '\u4E11', + '\u5BC5', + '\u536F', + '\u8FB0', + '\u5DF3', '\u5348', - '\u672a', + '\u672A', '\u7533', '\u9149', - '\u620c', - '\u4ea5' + '\u620C', + '\u4EA5', ], /** @@ -296,18 +296,18 @@ const calendar = { * @return Cn string */ Animals: [ - '\u9f20', - '\u725b', - '\u864e', + '\u9F20', + '\u725B', + '\u864E', '\u5154', - '\u9f99', - '\u86c7', - '\u9a6c', - '\u7f8a', + '\u9F99', + '\u86C7', + '\u9A6C', + '\u7F8A', '\u7334', - '\u9e21', - '\u72d7', - '\u732a' + '\u9E21', + '\u72D7', + '\u732A', ], /** @@ -317,30 +317,30 @@ const calendar = { * @return Cn string */ solarTerm: [ - '\u5c0f\u5bd2', - '\u5927\u5bd2', - '\u7acb\u6625', - '\u96e8\u6c34', - '\u60ca\u86f0', + '\u5C0F\u5BD2', + '\u5927\u5BD2', + '\u7ACB\u6625', + '\u96E8\u6C34', + '\u60CA\u86F0', '\u6625\u5206', - '\u6e05\u660e', - '\u8c37\u96e8', - '\u7acb\u590f', - '\u5c0f\u6ee1', - '\u8292\u79cd', - '\u590f\u81f3', - '\u5c0f\u6691', + '\u6E05\u660E', + '\u8C37\u96E8', + '\u7ACB\u590F', + '\u5C0F\u6EE1', + '\u8292\u79CD', + '\u590F\u81F3', + '\u5C0F\u6691', '\u5927\u6691', - '\u7acb\u79cb', + '\u7ACB\u79CB', '\u5904\u6691', - '\u767d\u9732', - '\u79cb\u5206', - '\u5bd2\u9732', - '\u971c\u964d', - '\u7acb\u51ac', - '\u5c0f\u96ea', - '\u5927\u96ea', - '\u51ac\u81f3' + '\u767D\u9732', + '\u79CB\u5206', + '\u5BD2\u9732', + '\u971C\u964D', + '\u7ACB\u51AC', + '\u5C0F\u96EA', + '\u5927\u96EA', + '\u51AC\u81F3', ], /** @@ -549,7 +549,7 @@ const calendar = { '665f67f0e37f1489801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', - '7f0e27f1487f531b0b0bb0b6fb0722' + '7f0e27f1487f531b0b0bb0b6fb0722', ], /** @@ -559,17 +559,17 @@ const calendar = { * @return Cn string */ nStr1: [ - '\u65e5', - '\u4e00', - '\u4e8c', - '\u4e09', - '\u56db', - '\u4e94', - '\u516d', - '\u4e03', - '\u516b', - '\u4e5d', - '\u5341' + '\u65E5', + '\u4E00', + '\u4E8C', + '\u4E09', + '\u56DB', + '\u4E94', + '\u516D', + '\u4E03', + '\u516B', + '\u4E5D', + '\u5341', ], /** @@ -578,7 +578,7 @@ const calendar = { * @trans ['初','十','廿','卅'] * @return Cn string */ - nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], + nStr2: ['\u521D', '\u5341', '\u5EFF', '\u5345'], /** * 月份转农历称呼速查表 @@ -587,18 +587,18 @@ const calendar = { * @return Cn string */ nStr3: [ - '\u6b63', - '\u4e8c', - '\u4e09', - '\u56db', - '\u4e94', - '\u516d', - '\u4e03', - '\u516b', - '\u4e5d', + '\u6B63', + '\u4E8C', + '\u4E09', + '\u56DB', + '\u4E94', + '\u516D', + '\u4E03', + '\u516B', + '\u4E5D', '\u5341', - '\u51ac', - '\u814a' + '\u51AC', + '\u814A', ], /** @@ -607,7 +607,7 @@ const calendar = { * @return Number * @eg:var count = calendar.lYearDays(1987) ;//count=387 */ - lYearDays: function(y) { + lYearDays(y) { let i let sum = 348 for (i = 0x8000; i > 0x8; i >>= 1) { @@ -622,9 +622,9 @@ const calendar = { * @return Number (0-12) * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 */ - leapMonth: function(y) { + leapMonth(y) { // 闰字编码 \u95f0 - return calendar.lunarInfo[y - 1900] & 0xf + return calendar.lunarInfo[y - 1900] & 0xF }, /** @@ -633,7 +633,7 @@ const calendar = { * @return Number (0、29、30) * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 */ - leapDays: function(y) { + leapDays(y) { if (calendar.leapMonth(y)) { return calendar.lunarInfo[y - 1900] & 0x10000 ? 30 : 29 } @@ -646,8 +646,9 @@ const calendar = { * @return Number (-1、29、30) * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 */ - monthDays: function(y, m) { - if (m > 12 || m < 1) return -1 // 月份参数从1至12,参数错误返回-1 + monthDays(y, m) { + if (m > 12 || m < 1) + return -1 // 月份参数从1至12,参数错误返回-1 return calendar.lunarInfo[y - 1900] & (0x10000 >> m) ? 30 : 29 }, @@ -657,13 +658,15 @@ const calendar = { * @return Number (-1、28、29、30、31) * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 */ - solarDays: function(y, m) { - if (m > 12 || m < 1) return -1 // 若参数错误 返回-1 + solarDays(y, m) { + if (m > 12 || m < 1) + return -1 // 若参数错误 返回-1 const ms = m - 1 if (+ms === 1) { // 2月份的闰平规律测算后确认返回28或29 return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0 ? 29 : 28 - } else { + } + else { return calendar.solarMonth[ms] } }, @@ -673,11 +676,13 @@ const calendar = { * @param lYear 农历年的年份数 * @return Cn string */ - toGanZhiYear: function(lYear) { + toGanZhiYear(lYear) { let ganKey = (lYear - 3) % 10 let zhiKey = (lYear - 3) % 12 - if (+ganKey === 0) ganKey = 10 // 如果余数为0则为最后一个天干 - if (+zhiKey === 0) zhiKey = 12 // 如果余数为0则为最后一个地支 + if (+ganKey === 0) + ganKey = 10 // 如果余数为0则为最后一个天干 + if (+zhiKey === 0) + zhiKey = 12 // 如果余数为0则为最后一个地支 return calendar.Gan[ganKey - 1] + calendar.Zhi[zhiKey - 1] }, @@ -687,11 +692,11 @@ const calendar = { * @param cDay [description] * @return Cn string */ - toAstro: function(cMonth, cDay) { - const s = - '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' + toAstro(cMonth, cDay) { + const s + = '\u9B54\u7FAF\u6C34\u74F6\u53CC\u9C7C\u767D\u7F8A\u91D1\u725B\u53CC\u5B50\u5DE8\u87F9\u72EE\u5B50\u5904\u5973\u5929\u79E4\u5929\u874E\u5C04\u624B\u9B54\u7FAF' const arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] - return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7' // 座 + return `${s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2)}\u5EA7` // 座 }, /** @@ -699,7 +704,7 @@ const calendar = { * @param offset 相对甲子的偏移量 * @return Cn string */ - toGanZhi: function(offset) { + toGanZhi(offset) { return calendar.Gan[offset % 10] + calendar.Zhi[offset % 12] }, @@ -709,17 +714,19 @@ const calendar = { * @return day Number * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 */ - getTerm: function(y, n) { - if (y < 1900 || y > 2100) return -1 - if (n < 1 || n > 24) return -1 + getTerm(y, n) { + if (y < 1900 || y > 2100) + return -1 + if (n < 1 || n > 24) + return -1 const _table = calendar.sTermInfo[y - 1900] const _info = [ - parseInt('0x' + _table.substr(0, 5)).toString(), - parseInt('0x' + _table.substr(5, 5)).toString(), - parseInt('0x' + _table.substr(10, 5)).toString(), - parseInt('0x' + _table.substr(15, 5)).toString(), - parseInt('0x' + _table.substr(20, 5)).toString(), - parseInt('0x' + _table.substr(25, 5)).toString() + Number.parseInt(`0x${_table.substr(0, 5)}`).toString(), + Number.parseInt(`0x${_table.substr(5, 5)}`).toString(), + Number.parseInt(`0x${_table.substr(10, 5)}`).toString(), + Number.parseInt(`0x${_table.substr(15, 5)}`).toString(), + Number.parseInt(`0x${_table.substr(20, 5)}`).toString(), + Number.parseInt(`0x${_table.substr(25, 5)}`).toString(), ] const _calday = [ _info[0].substr(0, 1), @@ -750,9 +757,9 @@ const calendar = { _info[5].substr(0, 1), _info[5].substr(1, 2), _info[5].substr(3, 1), - _info[5].substr(4, 2) + _info[5].substr(4, 2), ] - return parseInt(_calday[n - 1]) + return Number.parseInt(_calday[n - 1]) }, /** @@ -761,9 +768,10 @@ const calendar = { * @return Cn string * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' */ - toChinaMonth: function(m) { + toChinaMonth(m) { // 月 => \u6708 - if (m > 12 || m < 1) return -1 // 若参数错误 返回-1 + if (m > 12 || m < 1) + return -1 // 若参数错误 返回-1 let s = calendar.nStr3[m - 1] s += '\u6708' // 加上月字 return s @@ -775,18 +783,18 @@ const calendar = { * @return Cn string * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' */ - toChinaDay: function(d) { + toChinaDay(d) { // 日 => \u65e5 let s switch (d) { case 10: - s = '\u521d\u5341' + s = '\u521D\u5341' break case 20: - s = '\u4e8c\u5341' + s = '\u4E8C\u5341' break case 30: - s = '\u4e09\u5341' + s = '\u4E09\u5341' break default: s = calendar.nStr2[Math.floor(d / 10)] @@ -801,7 +809,7 @@ const calendar = { * @return Cn string * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔' */ - getAnimal: function(y) { + getAnimal(y) { return calendar.Animals[(y - 4) % 12] }, @@ -813,7 +821,7 @@ const calendar = { * @return JSON object * @eg:console.log(calendar.solar2lunar(1987,11,01)); */ - solar2lunar: function(y, m, d) { + solar2lunar(y, m, d) { // 参数区间1900.1.31~2100.12.31 // 年份限定、上限 if (y < 1900 || y > 2100) { @@ -827,8 +835,9 @@ const calendar = { let objDate if (!y) { objDate = new Date() - } else { - objDate = new Date(y, parseInt(m) - 1, d) + } + else { + objDate = new Date(y, Number.parseInt(m) - 1, d) } let i let leap = 0 @@ -837,10 +846,10 @@ const calendar = { y = objDate.getFullYear() m = objDate.getMonth() + 1 d = objDate.getDate() - let offset = - (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - - Date.UTC(1900, 0, 31)) / - 86400000 + let offset + = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) + - Date.UTC(1900, 0, 31)) + / 86400000 for (i = 1900; i < 2101 && offset > 0; i++) { temp = calendar.lYearDays(i) offset -= temp @@ -854,9 +863,9 @@ const calendar = { const isTodayObj = new Date() let isToday = false if ( - isTodayObj.getFullYear() === +y && - isTodayObj.getMonth() + 1 === +m && - isTodayObj.getDate() === +d + isTodayObj.getFullYear() === +y + && isTodayObj.getMonth() + 1 === +m + && isTodayObj.getDate() === +d ) { isToday = true } @@ -879,18 +888,21 @@ const calendar = { --i isLeap = true temp = calendar.leapDays(year) // 计算农历闰月天数 - } else { + } + else { temp = calendar.monthDays(year, i) // 计算农历普通月天数 } // 解除闰月 - if (isLeap === true && i === leap + 1) isLeap = false + if (isLeap === true && i === leap + 1) + isLeap = false offset -= temp } // 闰月导致数组下标重叠取反 if (offset === 0 && leap > 0 && i === leap + 1) { if (isLeap) { isLeap = false - } else { + } + else { isLeap = true --i } @@ -940,7 +952,7 @@ const calendar = { lMonth: month, lDay: day, Animal: calendar.getAnimal(year), - IMonthCn: (isLeap ? '\u95f0' : '') + calendar.toChinaMonth(month), + IMonthCn: (isLeap ? '\u95F0' : '') + calendar.toChinaMonth(month), IDayCn: calendar.toChinaDay(day), cYear: y, cMonth: m, @@ -948,13 +960,13 @@ const calendar = { gzYear: gzY, gzMonth: gzM, gzDay: gzD, - isToday: isToday, - isLeap: isLeap, - nWeek: nWeek, - ncWeek: '\u661f\u671f' + cWeek, - isTerm: isTerm, - Term: Term, - astro: astro + isToday, + isLeap, + nWeek, + ncWeek: `\u661F\u671F${cWeek}`, + isTerm, + Term, + astro, } }, @@ -967,18 +979,20 @@ const calendar = { * @return JSON object * @eg:console.log(calendar.lunar2solar(1987,9,10)); */ - lunar2solar: function(y, m, d, isLeapMonth) { + lunar2solar(y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1 isLeapMonth = !!isLeapMonth // let leapOffset = 0; const leapMonth = calendar.leapMonth(y) // let leapDay = calendar.leapDays(y); - if (isLeapMonth && leapMonth !== m) return -1 // 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (isLeapMonth && leapMonth !== m) + return -1 // 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 if ( - (+y === 2100 && +m === 12 && +d > 1) || - (+y === 1900 && +m === 1 && +d < 31) - ) - return -1 // 超出了最大极限值 + (+y === 2100 && +m === 12 && +d > 1) + || (+y === 1900 && +m === 1 && +d < 31) + ) { + return -1 + } // 超出了最大极限值 const day = calendar.monthDays(y, m) let _day = day // bugFix 2016-9-25 @@ -986,7 +1000,8 @@ const calendar = { if (isLeapMonth) { _day = calendar.leapDays(y, m) } - if (y < 1900 || y > 2100 || d > _day) return -1 // 参数合法性效验 + if (y < 1900 || y > 2100 || d > _day) + return -1 // 参数合法性效验 // 计算农历的时间差 let offset = 0 @@ -1007,7 +1022,8 @@ const calendar = { offset += calendar.monthDays(y, i) } // 转换闰月农历 需补充该年闰月的前一个月的时差 - if (isLeapMonth) offset += day + if (isLeapMonth) + offset += day // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) const stmap = Date.UTC(1900, 1, 30, 0, 0, 0) const calObj = new Date((offset + d - 31) * 86400000 + stmap) @@ -1016,7 +1032,7 @@ const calendar = { const cD = calObj.getUTCDate() return calendar.solar2lunar(cY, cM, cD) - } + }, } const { diff --git a/src/components/calendar/plugins/solarLunar/index.d.ts b/src/components/calendar/plugins/solarLunar/index.d.ts index 509db18..e7f0809 100644 --- a/src/components/calendar/plugins/solarLunar/index.d.ts +++ b/src/components/calendar/plugins/solarLunar/index.d.ts @@ -1 +1 @@ -export {}; +export {} diff --git a/src/components/calendar/plugins/solarLunar/index.js b/src/components/calendar/plugins/solarLunar/index.js index 6d6a336..eeb6468 100644 --- a/src/components/calendar/plugins/solarLunar/index.js +++ b/src/components/calendar/plugins/solarLunar/index.js @@ -2,7 +2,8 @@ import { dateUtil } from '../../utils/index' import convertSolarLunar from './convertSolarLunar' function getDateRow2Dict(dateInfo) { - if (!dateInfo) return dateInfo + if (!dateInfo) + return dateInfo if (typeof dateInfo === 'string' && dateInfo.includes('-')) { dateInfo = dateUtil.transformDateRow2Dict(dateInfo) } @@ -15,45 +16,47 @@ export default () => { beforeRender(calendarData = {}, calendarConfig = {}) { let { dates = [], selectedDates = [] } = calendarData if (calendarConfig.showLunar) { - dates = dates.map(dataInfo => { + dates = dates.map((dataInfo) => { const { year, month, date } = dataInfo return { ...dataInfo, - lunar: convertSolarLunar.solar2lunar(year, month, date) + lunar: convertSolarLunar.solar2lunar(year, month, date), } }) - selectedDates = selectedDates.map(dataInfo => { + selectedDates = selectedDates.map((dataInfo) => { const { year, month, date } = dataInfo return { ...dataInfo, - lunar: convertSolarLunar.solar2lunar(year, month, date) + lunar: convertSolarLunar.solar2lunar(year, month, date), } }) } return { calendarData: { ...calendarData, - dates: dates, - selectedDates: selectedDates + dates, + selectedDates, }, - calendarConfig + calendarConfig, } }, methods() { return { - convertSolarLunar: dateInfo => { + convertSolarLunar: (dateInfo) => { dateInfo = getDateRow2Dict(dateInfo) - if (!dateInfo) return dateInfo + if (!dateInfo) + return dateInfo const { year, month, date } = dateInfo return convertSolarLunar.solar2lunar(year, month, date) }, convertlLunar2Solar: (dateInfo, isLeapMonth) => { dateInfo = getDateRow2Dict(dateInfo) - if (!dateInfo) return dateInfo + if (!dateInfo) + return dateInfo const { year, month, date } = dateInfo return convertSolarLunar.lunar2solar(year, month, date, isLeapMonth) - } + }, } - } + }, } } diff --git a/src/components/calendar/plugins/time-range.js b/src/components/calendar/plugins/time-range.js index 9788861..f76ad1f 100644 --- a/src/components/calendar/plugins/time-range.js +++ b/src/components/calendar/plugins/time-range.js @@ -4,32 +4,32 @@ * @Date: 2020-10-08 21:22:09* * @Last Modified by: drfu * @Last Modified time: 2020-10-11 13:56:32 - * */ + */ import { renderCalendar } from '../render' import { - logger, dateUtil, getCalendarConfig, - getCalendarData + getCalendarData, + logger, } from '../utils/index' function pusheNextMonthDateArea( dateInfo = {}, startTimestamp, endTimestamp, - selectedDates = [] + selectedDates = [], ) { - let tempOfSelectedDate = [...selectedDates] + const tempOfSelectedDate = [...selectedDates] const dates = dateUtil.calcDates(dateInfo.year, dateInfo.month) - let datesLen = dates.length + const datesLen = dates.length for (let i = 0; i < datesLen; i++) { const date = dates[i] const timeStamp = dateUtil.getTimeStamp(date) if (timeStamp <= endTimestamp && timeStamp >= startTimestamp) { tempOfSelectedDate.push({ ...date, - choosed: true + choosed: true, }) } if (i === datesLen - 1 && timeStamp < endTimestamp) { @@ -37,7 +37,7 @@ function pusheNextMonthDateArea( dateUtil.getNextMonthInfo(date), startTimestamp, endTimestamp, - tempOfSelectedDate + tempOfSelectedDate, ) } } @@ -47,22 +47,22 @@ function pushPrevMonthDateArea( dateInfo = {}, startTimestamp, endTimestamp, - selectedDates = [] + selectedDates = [], ) { - let tempOfSelectedDate = [...selectedDates] + const tempOfSelectedDate = [...selectedDates] const dates = dateUtil.sortDatesByTime( dateUtil.calcDates(dateInfo.year, dateInfo.month), - 'desc' + 'desc', ) - let datesLen = dates.length - let firstDate = dateUtil.getTimeStamp(dates[0]) + const datesLen = dates.length + const firstDate = dateUtil.getTimeStamp(dates[0]) for (let i = 0; i < datesLen; i++) { const date = dates[i] const timeStamp = dateUtil.getTimeStamp(date) if (timeStamp >= startTimestamp && timeStamp <= endTimestamp) { tempOfSelectedDate.push({ ...date, - choosed: true + choosed: true, }) } if (i === datesLen - 1 && firstDate > startTimestamp) { @@ -70,7 +70,7 @@ function pushPrevMonthDateArea( dateUtil.getPrevMonthInfo(date), startTimestamp, endTimestamp, - tempOfSelectedDate + tempOfSelectedDate, ) } } @@ -88,7 +88,7 @@ function calcDateWhenNotInOneMonth(info) { dateUtil.getPrevMonthInfo(firstDate), startTimestamp, endTimestamp, - selectedDate + selectedDate, ) } if (dateUtil.getTimeStamp(lastDate) < endTimestamp) { @@ -96,7 +96,7 @@ function calcDateWhenNotInOneMonth(info) { dateUtil.getNextMonthInfo(lastDate), startTimestamp, endTimestamp, - selectedDate + selectedDate, ) } return [...selectedDate] @@ -104,7 +104,7 @@ function calcDateWhenNotInOneMonth(info) { /** * 指定日期区域转时间戳 - * @param {array} timearea 时间区域 + * @param {Array} timearea 时间区域 */ export function convertTimeRangeToTimestamp(timearea = []) { const start = timearea[0].split('-') @@ -121,40 +121,46 @@ export function convertTimeRangeToTimestamp(timearea = []) { start, end, startTimestamp, - endTimestamp + endTimestamp, } } /** * 校验时间区域是否合法 - * @param {array} dateArea 时间区域 + * @param {Array} dateArea 时间区域 */ function validateTimeRange(dateArea) { const { start, end, startTimestamp, - endTimestamp + endTimestamp, } = convertTimeRangeToTimestamp(dateArea) - if (!start || !end) return + if (!start || !end) + return const startMonthDays = dateUtil.getDatesCountOfMonth(start[0], start[1]) const endMonthDays = dateUtil.getDatesCountOfMonth(end[0], end[1]) if (start[2] > startMonthDays || start[2] < 1) { logger.warn('enableArea() 开始日期错误,指定日期不在当前月份天数范围内') return false - } else if (start[1] > 12 || start[1] < 1) { + } + else if (start[1] > 12 || start[1] < 1) { logger.warn('enableArea() 开始日期错误,月份超出1-12月份') return false - } else if (end[2] > endMonthDays || end[2] < 1) { + } + else if (end[2] > endMonthDays || end[2] < 1) { logger.warn('enableArea() 截止日期错误,指定日期不在当前月份天数范围内') return false - } else if (end[1] > 12 || end[1] < 1) { + } + else if (end[1] > 12 || end[1] < 1) { logger.warn('enableArea() 截止日期错误,月份超出1-12月份') return false - } else if (startTimestamp > endTimestamp) { + } + else if (startTimestamp > endTimestamp) { logger.warn('enableArea()参数最小日期大于了最大日期') return false - } else { + } + else { return true } } @@ -166,26 +172,27 @@ export default () => { const { chooseAreaTimestamp = [], dates = [], - selectedDates = [] + selectedDates = [], } = calendarData let __dates = dates let __selectedDates = selectedDates const [startDateTimestamp, endDateTimestamp] = chooseAreaTimestamp if (chooseAreaTimestamp.length === 2) { __selectedDates = [] - __dates = dates.map(d => { + __dates = dates.map((d) => { const date = { ...d } const dateTimeStamp = dateUtil.getTimeStamp(date) if ( - dateTimeStamp >= startDateTimestamp && - endDateTimestamp >= dateTimeStamp + dateTimeStamp >= startDateTimestamp + && endDateTimestamp >= dateTimeStamp ) { date.choosed = true __selectedDates.push(date) - } else { + } + else { date.choosed = false __selectedDates = __selectedDates.filter( - item => dateUtil.getTimeStamp(item) !== dateTimeStamp + item => dateUtil.getTimeStamp(item) !== dateTimeStamp, ) } return date @@ -198,7 +205,7 @@ export default () => { lastDate: __dates[__dates.length - 1], startTimestamp: startDateTimestamp, endTimestamp: endDateTimestamp, - selectedDate: __selectedDates + selectedDate: __selectedDates, }) } } @@ -207,44 +214,47 @@ export default () => { ...calendarData, dates: __dates, selectedDates: dateUtil.sortDatesByTime( - dateUtil.uniqueArrayByDate(__selectedDates) - ) + dateUtil.uniqueArrayByDate(__selectedDates), + ), }, - calendarConfig + calendarConfig, } }, onTapDate(tapedDate, calendarData = {}, calendarConfig = {}) { if (!calendarConfig.chooseAreaMode) { return { calendarData, - calendarConfig + calendarConfig, } } let { tempChooseAreaTimestamp = [], chooseAreaTimestamp: existChooseAreaTimestamp = [], selectedDates = [], - dates = [] + dates = [], } = calendarData const timestamp = dateUtil.getTimeStamp(tapedDate) - let __dates = [...dates] + const __dates = [...dates] let __selectedDates = [...selectedDates] if ( - tempChooseAreaTimestamp.length === 2 || - existChooseAreaTimestamp.length === 2 + tempChooseAreaTimestamp.length === 2 + || existChooseAreaTimestamp.length === 2 ) { tempChooseAreaTimestamp = [tapedDate] __selectedDates = [] __dates.forEach(d => (d.choosed = false)) - } else if (tempChooseAreaTimestamp.length === 1) { + } + else if (tempChooseAreaTimestamp.length === 1) { const preChoosedDate = tempChooseAreaTimestamp[0] const preTimestamp = dateUtil.getTimeStamp(preChoosedDate) if (preTimestamp <= timestamp) { tempChooseAreaTimestamp.push(tapedDate) - } else if (preTimestamp > timestamp) { + } + else if (preTimestamp > timestamp) { tempChooseAreaTimestamp.unshift(tapedDate) } - } else { + } + else { tempChooseAreaTimestamp = [tapedDate] } let chooseAreaTimestamp = [] @@ -260,46 +270,48 @@ export default () => { chooseAreaTimestamp, tempChooseAreaTimestamp, dates: __dates, - selectedDates: __selectedDates + selectedDates: __selectedDates, }, calendarConfig: { ...calendarConfig, - multi: true - } + multi: true, + }, } }, methods(component) { return { /** * 设置连续日期选择区域 - * @param {array} dateArea 区域开始结束日期数组 + * @param {Array} dateArea 区域开始结束日期数组 */ chooseDateArea: (dateArea = []) => { if (dateArea.length === 1) { dateArea = dateArea.concat(dateArea) } - if (dateArea.length !== 2) return + if (dateArea.length !== 2) + return const isRight = validateTimeRange(dateArea) - if (!isRight) return + if (!isRight) + return const config = getCalendarConfig(component) || {} const { startTimestamp, endTimestamp } = convertTimeRangeToTimestamp( - dateArea + dateArea, ) const existCalendarData = getCalendarData('calendar', component) return renderCalendar.call( component, { ...existCalendarData, - chooseAreaTimestamp: [startTimestamp, endTimestamp] + chooseAreaTimestamp: [startTimestamp, endTimestamp], }, { ...config, multi: true, - chooseAreaMode: true - } + chooseAreaMode: true, + }, ) - } + }, } - } + }, } } diff --git a/src/components/calendar/plugins/todo.d.ts b/src/components/calendar/plugins/todo.d.ts index 509db18..e7f0809 100644 --- a/src/components/calendar/plugins/todo.d.ts +++ b/src/components/calendar/plugins/todo.d.ts @@ -1 +1 @@ -export {}; +export {} diff --git a/src/components/calendar/plugins/todo.js b/src/components/calendar/plugins/todo.js index 396a7f4..1e2b218 100644 --- a/src/components/calendar/plugins/todo.js +++ b/src/components/calendar/plugins/todo.js @@ -4,22 +4,24 @@ * @Date: 2020-10-08 21:22:09* * @Last Modified by: drfu * @Last Modified time: 2020-10-11 14:23:02 - * */ + */ -import { getCalendarData, dateUtil } from '../utils/index' import { renderCalendar } from '../render' +import { dateUtil, getCalendarData } from '../utils/index' function updateDatePropertyOfTodoLabel(todos, dates, showLabelAlways) { const datesInfo = [...dates] - for (let todo of todos) { - let targetIdx = datesInfo.findIndex( - item => dateUtil.toTimeStr(item) === dateUtil.toTimeStr(todo) + for (const todo of todos) { + const targetIdx = datesInfo.findIndex( + item => dateUtil.toTimeStr(item) === dateUtil.toTimeStr(todo), ) - let target = datesInfo[targetIdx] - if (!target) continue + const target = datesInfo[targetIdx] + if (!target) + continue if (showLabelAlways) { target.showTodoLabel = true - } else { + } + else { target.showTodoLabel = !target.choosed } if (target.showTodoLabel) { @@ -38,14 +40,14 @@ export default () => { const dateWithTodoInfo = updateDatePropertyOfTodoLabel( todos, dates, - showLabelAlways + showLabelAlways, ) return { calendarData: { ...calendarData, - dates: dateWithTodoInfo + dates: dateWithTodoInfo, }, - calendarConfig + calendarConfig, } }, methods(component) { @@ -60,17 +62,17 @@ export default () => { dotColor = '', pos = 'bottom', showLabelAlways, - dates: todoDates = [] + dates: todoDates = [], } = options const { todos = [] } = calendar const tranformStr2NumOfTodo = todoDates.map(date => - dateUtil.tranformStr2NumOfDate(date) + dateUtil.tranformStr2NumOfDate(date), ) const calendarData = { dates: calendar.dates, todos: dateUtil.uniqueArrayByDate( - todos.concat(tranformStr2NumOfTodo) - ) + todos.concat(tranformStr2NumOfTodo), + ), } if (!circle) { calendarData.todoLabelPos = pos @@ -81,55 +83,55 @@ export default () => { const existCalendarData = getCalendarData('calendar', component) return renderCalendar.call(component, { ...existCalendarData, - ...calendarData + ...calendarData, }) }, deleteTodos(todos = []) { - if (!(todos instanceof Array) || !todos.length) + if (!(Array.isArray(todos)) || !todos.length) return Promise.reject('deleteTodos()应为入参为非空数组') const existCalendarData = getCalendarData('calendar', component) const allTodos = existCalendarData.todos || [] const toDeleteTodos = todos.map(item => dateUtil.toTimeStr(item)) const remainTodos = allTodos.filter( - item => !toDeleteTodos.includes(dateUtil.toTimeStr(item)) + item => !toDeleteTodos.includes(dateUtil.toTimeStr(item)), ) const { dates, curYear, curMonth } = existCalendarData const _dates = [...dates] const currentMonthTodos = dateUtil.filterDatesByYM( { year: curYear, - month: curMonth + month: curMonth, }, - remainTodos + remainTodos, ) - _dates.forEach(item => { + _dates.forEach((item) => { item.showTodoLabel = false }) - currentMonthTodos.forEach(item => { + currentMonthTodos.forEach((item) => { _dates[item.date - 1].showTodoLabel = !_dates[item.date - 1].choosed }) return renderCalendar.call(component, { ...existCalendarData, dates: _dates, - todos: remainTodos + todos: remainTodos, }) }, clearTodos() { const existCalendarData = getCalendarData('calendar', component) const _dates = [...existCalendarData.dates] - _dates.forEach(item => { + _dates.forEach((item) => { item.showTodoLabel = false }) return renderCalendar.call(component, { ...existCalendarData, dates: _dates, - todos: [] + todos: [], }) }, getTodos() { return getCalendarData('calendar.todos', component) || [] - } + }, } - } + }, } } diff --git a/src/components/calendar/plugins/week.js b/src/components/calendar/plugins/week.js index 71032bc..fceb7f5 100644 --- a/src/components/calendar/plugins/week.js +++ b/src/components/calendar/plugins/week.js @@ -4,16 +4,16 @@ * @Date: 2020-10-08 21:22:09* * @Last Modified by: drfu * @Last Modified time: 2020-10-12 14:39:45 - * */ + */ +import { calcJumpData } from '../core' import { renderCalendar } from '../render' import { + dateUtil, getCalendarConfig, getCalendarData, logger, - dateUtil } from '../utils/index' -import { calcJumpData } from '../core' /** * 当月第一周所有日期 @@ -21,7 +21,7 @@ import { calcJumpData } from '../core' function firstWeekInMonth( target = {}, calendarDates = [], - calendarConfig = {} + calendarConfig = {}, ) { const { firstDayOfWeek } = calendarConfig const firstDayOfWeekIsMon = firstDayOfWeek === 'Mon' @@ -54,10 +54,11 @@ function lastWeekInMonth(target = {}, calendarDates = [], calendarConfig = {}) { * 判断目标日期是否在某些指定日历内 */ function dateIsInDatesRange(target, dates) { - if (!target || !dates || !dates.length) return false + if (!target || !dates || !dates.length) + return false const targetDateStr = dateUtil.toTimeStr(target) let rst = false - for (let date of dates) { + for (const date of dates) { const dateStr = dateUtil.toTimeStr(date) if (dateStr === targetDateStr) { rst = true @@ -73,17 +74,17 @@ function getDatesWhenTargetInFirstWeek(target, firstWeekDates) { const prevMonthInfo = dateUtil.getPrevMonthInfo({ year, month }) let lastMonthDatesCount = dateUtil.getDatesCountOfMonth( prevMonthInfo.year, - prevMonthInfo.month + prevMonthInfo.month, ) - let dates = firstWeekDates - let firstWeekCount = firstWeekDates.length + const dates = firstWeekDates + const firstWeekCount = firstWeekDates.length for (let i = 0; i < 7 - firstWeekCount; i++) { const week = dateUtil.getDayOfWeek(+year, +month, lastMonthDatesCount) dates.unshift({ year: prevMonthInfo.year, month: prevMonthInfo.month, date: lastMonthDatesCount, - week + week, }) lastMonthDatesCount -= 1 } @@ -93,15 +94,15 @@ function getDatesWhenTargetInFirstWeek(target, firstWeekDates) { function getDatesWhenTargetInLastWeek(target, lastWeekDates) { const { year, month } = target const prevMonthInfo = dateUtil.getNextMonthInfo({ year, month }) - let dates = lastWeekDates - let lastWeekCount = lastWeekDates.length + const dates = lastWeekDates + const lastWeekCount = lastWeekDates.length for (let i = 0; i < 7 - lastWeekCount; i++) { const week = dateUtil.getDayOfWeek(+year, +month, i + 1) dates.push({ year: prevMonthInfo.year, month: prevMonthInfo.month, date: i + 1, - week + week, }) } return dates @@ -115,23 +116,27 @@ function getDates(target, calendarDates = [], calendarConfig = {}) { if (firstDayOfWeekIsMon) { const startIdx = date - (targetDay || 7) return calendarDates.splice(startIdx, 7) - } else { + } + else { const startIdx = date - targetDay - 1 return calendarDates.splice(startIdx, 7) } } function getTargetWeekDates(target, calendarConfig) { - if (!target) return + if (!target) + return const { year, month } = target const calendarDates = dateUtil.calcDates(year, month) const firstWeekDates = firstWeekInMonth(target, calendarDates, calendarConfig) const lastWeekDates = lastWeekInMonth(target, calendarDates, calendarConfig) if (dateIsInDatesRange(target, firstWeekDates)) { return getDatesWhenTargetInFirstWeek(target, firstWeekDates) - } else if (dateIsInDatesRange(target, lastWeekDates)) { + } + else if (dateIsInDatesRange(target, lastWeekDates)) { return getDatesWhenTargetInLastWeek(target, lastWeekDates) - } else { + } + else { return getDates(target, calendarDates, calendarConfig) } } @@ -157,42 +162,44 @@ function calculateFirstDateOfCurrentWeek(calendarData = {}) { function calculateNextWeekDates(calendarData = {}) { let { curYear, curMonth } = calendarData let calendarDates = [] - let lastDateInThisWeek = calculateLastDateOfCurrentWeek(calendarData) + const lastDateInThisWeek = calculateLastDateOfCurrentWeek(calendarData) const { year: LYear, month: LMonth } = lastDateInThisWeek if (curYear !== LYear || curMonth !== LMonth) { calendarDates = dateUtil.calcDates(LYear, LMonth) curYear = LYear curMonth = LMonth - } else { + } + else { calendarDates = dateUtil.calcDates(curYear, curMonth) } const lastDateInThisMonth = dateUtil.getDatesCountOfMonth(curYear, curMonth) const count = lastDateInThisMonth - lastDateInThisWeek.date const lastDateIdx = calendarDates.findIndex( - date => dateUtil.toTimeStr(date) === dateUtil.toTimeStr(lastDateInThisWeek) + date => dateUtil.toTimeStr(date) === dateUtil.toTimeStr(lastDateInThisWeek), ) const startIdx = lastDateIdx + 1 if (count >= 7) { return { dates: calendarDates.splice(startIdx, 7), year: curYear, - month: curMonth + month: curMonth, } - } else { + } + else { const nextMonth = dateUtil.getNextMonthInfo({ year: curYear, - month: curMonth + month: curMonth, }) const { year, month } = nextMonth || {} const calendarDatesOfNextMonth = dateUtil.calcDates(year, month) const remainDatesOfThisMonth = calendarDates.splice(startIdx) const patchDatesOfNextMonth = calendarDatesOfNextMonth.splice( 0, - 7 - remainDatesOfThisMonth.length + 7 - remainDatesOfThisMonth.length, ) return { dates: [...remainDatesOfThisMonth, ...patchDatesOfNextMonth], - ...nextMonth + ...nextMonth, } } } @@ -202,43 +209,45 @@ function calculateNextWeekDates(calendarData = {}) { */ function calculatePrevWeekDates(calendarData = {}) { let { curYear, curMonth } = calendarData - let firstDateInThisWeek = calculateFirstDateOfCurrentWeek(calendarData) + const firstDateInThisWeek = calculateFirstDateOfCurrentWeek(calendarData) let calendarDates = [] const { year: FYear, month: FMonth } = firstDateInThisWeek if (curYear !== FYear || curMonth !== FMonth) { calendarDates = dateUtil.calcDates(FYear, FMonth) curYear = FYear curMonth = FMonth - } else { + } + else { calendarDates = dateUtil.calcDates(curYear, curMonth) } const firstDateIdx = calendarDates.findIndex( - date => dateUtil.toTimeStr(date) === dateUtil.toTimeStr(firstDateInThisWeek) + date => dateUtil.toTimeStr(date) === dateUtil.toTimeStr(firstDateInThisWeek), ) if (firstDateIdx - 7 >= 0) { const startIdx = firstDateIdx - 7 return { dates: calendarDates.splice(startIdx, 7), year: curYear, - month: curMonth + month: curMonth, } - } else { + } + else { const prevMonth = dateUtil.getPrevMonthInfo({ year: curYear, - month: curMonth + month: curMonth, }) const { year, month } = prevMonth || {} const calendarDatesOfPrevMonth = dateUtil.calcDates(year, month) const remainDatesOfThisMonth = calendarDates.splice( 0, - firstDateInThisWeek.date - 1 + firstDateInThisWeek.date - 1, ) const patchDatesOfPrevMonth = calendarDatesOfPrevMonth.splice( - -(7 - remainDatesOfThisMonth.length) + -(7 - remainDatesOfThisMonth.length), ) return { dates: [...patchDatesOfPrevMonth, ...remainDatesOfThisMonth], - ...prevMonth + ...prevMonth, } } } @@ -250,30 +259,30 @@ export default () => { const { initializedWeekMode, selectedDates } = calendarData if (calendarConfig.weekMode && !initializedWeekMode) { const { defaultDate } = calendarConfig - const target = - (selectedDates && selectedDates[0]) || - (defaultDate && dateUtil.transformDateRow2Dict(defaultDate)) || - dateUtil.todayFMD() + const target + = (selectedDates && selectedDates[0]) + || (defaultDate && dateUtil.transformDateRow2Dict(defaultDate)) + || dateUtil.todayFMD() const waitRenderData = this.methods( - component + component, ).__calcDatesWhenSwitchView('week', target) const { data, config } = waitRenderData || {} const setSelectDates = this.methods( - component + component, ).__selectTargetDateWhenJump(target, data.dates, config) return { calendarData: { ...data, ...setSelectDates, weeksCh: dateUtil.getWeekHeader(calendarConfig.firstDayOfWeek), - initializedWeekMode: true + initializedWeekMode: true, }, - calendarConfig + calendarConfig, } } return { calendarData, - calendarConfig + calendarConfig, } }, onSwitchCalendar(target = {}, calendarData = {}, component) { @@ -284,7 +293,8 @@ export default () => { if (calendarConfig.weekMode) { if (direction === 'left') { waitRenderData = calculateNextWeekDates(calendarData) - } else { + } + else { waitRenderData = calculatePrevWeekDates(calendarData) } const { dates, year, month } = waitRenderData @@ -292,7 +302,7 @@ export default () => { ...calendarData, dates, curYear: year || curYear, - curMonth: month || curMonth + curMonth: month || curMonth, } } return calendarData @@ -304,8 +314,8 @@ export default () => { const weekDates = dates.map((date, idx) => { const tmp = { ...date } tmp.id = idx - const isTarget = - dateUtil.toTimeStr(target) === dateUtil.toTimeStr(tmp) + const isTarget + = dateUtil.toTimeStr(target) === dateUtil.toTimeStr(tmp) if (isTarget && !target.choosed && config.autoChoosedWhenJump) { tmp.choosed = true selectedDate = tmp @@ -314,7 +324,7 @@ export default () => { }) return { dates: weekDates, - selectedDates: [selectedDate] + selectedDates: [selectedDate], } }, __calcDatesForWeekMode(target, config = {}, calendarData = {}) { @@ -328,31 +338,31 @@ export default () => { nextMonthGrids: null, dates: weekDates, curYear: year, - curMonth: month + curMonth: month, }, config: { ...config, - weekMode: true - } + weekMode: true, + }, } }, __calcDatesForMonthMode(target, config = {}, calendarData = {}) { const { year, month } = target || {} const waitRenderData = calcJumpData({ dateInfo: target, - config + config, }) return { data: { ...calendarData, ...waitRenderData, curYear: year, - curMonth: month + curMonth: month, }, config: { ...config, - weekMode: false - } + weekMode: false, + }, } }, /** @@ -369,18 +379,20 @@ export default () => { selectedDates = [], dates = [], curYear, - curMonth + curMonth, } = existCalendarData const currentMonthSelected = selectedDates.filter( - item => curYear === +item.year || curMonth === +item.month + item => curYear === +item.year || curMonth === +item.month, ) let jumpTarget = {} if (target) { jumpTarget = target - } else { + } + else { if (currentMonthSelected.length) { jumpTarget = currentMonthSelected.pop() - } else { + } + else { jumpTarget = dates[0] } } @@ -388,45 +400,47 @@ export default () => { return this.methods(component).__calcDatesForWeekMode( jumpTarget, calendarConfig, - existCalendarData + existCalendarData, ) - } else { + } + else { return this.methods(component).__calcDatesForMonthMode( jumpTarget, calendarConfig, - existCalendarData + existCalendarData, ) } }, - weekModeJump: dateInfo => { + weekModeJump: (dateInfo) => { const target = dateInfo || dateUtil.todayFMD() const existCalendarData = getCalendarData('calendar', component) || {} const waitRenderData = this.methods( - component + component, ).__calcDatesWhenSwitchView('week', target) const { data, config } = waitRenderData || {} const setSelectDates = this.methods( - component + component, ).__selectTargetDateWhenJump(target, data.dates, config) return renderCalendar.call( component, { ...existCalendarData, ...data, - ...setSelectDates + ...setSelectDates, }, - config + config, ) }, switchView: (view, target) => { const waitRenderData = this.methods( - component + component, ).__calcDatesWhenSwitchView(view, target) const { data, config } = waitRenderData || {} - if (!data) return logger.warn('当前状态不能切换为周视图') + if (!data) + return logger.warn('当前状态不能切换为周视图') return renderCalendar.call(component, data, config) - } + }, } - } + }, } } diff --git a/src/components/calendar/render.js b/src/components/calendar/render.js index 47ea457..e94cb22 100644 --- a/src/components/calendar/render.js +++ b/src/components/calendar/render.js @@ -1,29 +1,30 @@ -import plugins from "./plugins/index"; -import { getCalendarConfig } from "./utils/index"; +import plugins from './plugins/index' +import { getCalendarConfig } from './utils/index' /** * 渲染日历 */ export function renderCalendar(calendarData, calendarConfig) { return new Promise((resolve) => { - const Component = this; + const Component = this if (Component.firstRender === void 0) { - Component.firstRender = true; - } else { - Component.firstRender = false; + Component.firstRender = true + } + else { + Component.firstRender = false } - const exitData = Component.data.calendar || {}; - for (let plugin of plugins.installed) { - const [, p] = plugin; - if (typeof p.beforeRender === "function") { - const { calendarData: newData, calendarConfig: newConfig } = - p.beforeRender( + const exitData = Component.data.calendar || {} + for (const plugin of plugins.installed) { + const [, p] = plugin + if (typeof p.beforeRender === 'function') { + const { calendarData: newData, calendarConfig: newConfig } + = p.beforeRender( { ...exitData, ...calendarData }, calendarConfig || getCalendarConfig(Component), - Component - ); - calendarData = newData; - calendarConfig = newConfig; + Component, + ) + calendarData = newData + calendarConfig = newConfig } } @@ -37,13 +38,13 @@ export function renderCalendar(calendarData, calendarConfig) { calendar: calendarData, config: calendarConfig, firstRender: Component.firstRender, - }; - resolve(rst); + } + resolve(rst) if (Component.firstRender) { - Component.triggerEvent("afterCalendarRender", rst); - Component.firstRender = false; + Component.triggerEvent('afterCalendarRender', rst) + Component.firstRender = false } - } - ); - }); + }, + ) + }) } diff --git a/src/components/calendar/utils/index.js b/src/components/calendar/utils/index.js index 2f8eb1d..723b391 100644 --- a/src/components/calendar/utils/index.js +++ b/src/components/calendar/utils/index.js @@ -1,16 +1,17 @@ -import Logger from "./logger"; -import WxData from "./wxData"; +import Logger from './logger' +import WxData from './wxData' -let systemInfo; +let systemInfo export function getSystemInfo() { - if (systemInfo) return systemInfo; - systemInfo = wx.getSystemInfoSync(); - return systemInfo; + if (systemInfo) + return systemInfo + systemInfo = wx.getSystemInfoSync() + return systemInfo } export function isIos() { - const sys = getSystemInfo(); - return /iphone|ios/i.test(sys.platform); + const sys = getSystemInfo() + return /iphone|ios/i.test(sys.platform) } class Gesture { @@ -20,69 +21,77 @@ class Gesture { * @returns {boolean} 布尔值 */ isLeft(gesture = {}, touche = {}) { - const { startX, startY } = gesture; - const deltaX = touche.clientX - startX; - const deltaY = touche.clientY - startY; + const { startX, startY } = gesture + const deltaX = touche.clientX - startX + const deltaY = touche.clientY - startY if (deltaX < -60 && deltaY < 20 && deltaY > -20) { - return true; - } else { - return false; + return true + } + else { + return false } - } + } + /** * 右滑 * @param {object} e 事件对象 * @returns {boolean} 布尔值 */ isRight(gesture = {}, touche = {}) { - const { startX, startY } = gesture; - const deltaX = touche.clientX - startX; - const deltaY = touche.clientY - startY; + const { startX, startY } = gesture + const deltaX = touche.clientX - startX + const deltaY = touche.clientY - startY if (deltaX > 60 && deltaY < 20 && deltaY > -20) { - return true; - } else { - return false; + return true + } + else { + return false } } } class DateUtil { newDate(year, month, date) { - let cur = `${+year}-${+month}-${+date}`; + let cur = `${+year}-${+month}-${+date}` if (isIos()) { - cur = `${+year}/${+month}/${+date}`; + cur = `${+year}/${+month}/${+date}` } - return new Date(cur); - } + return new Date(cur) + } + /** * 计算指定日期时间戳 * @param {object} date */ getTimeStamp(dateInfo) { - if (typeof dateInfo === "string") { - dateInfo = this.transformDateRow2Dict(dateInfo); + if (typeof dateInfo === 'string') { + dateInfo = this.transformDateRow2Dict(dateInfo) } - if (Object.prototype.toString.call(dateInfo) !== "[object Object]") return; - const dateUtil = new DateUtil(); - return dateUtil.newDate(dateInfo.year, dateInfo.month, dateInfo.date).getTime(); - } + if (Object.prototype.toString.call(dateInfo) !== '[object Object]') + return + const dateUtil = new DateUtil() + return dateUtil.newDate(dateInfo.year, dateInfo.month, dateInfo.date).getTime() + } + /** * 计算指定月份共多少天 * @param {number} year 年份 * @param {number} month 月份 */ getDatesCountOfMonth(year, month) { - return new Date(Date.UTC(year, month, 0)).getUTCDate(); - } + return new Date(Date.UTC(year, month, 0)).getUTCDate() + } + /** * 计算指定月份第一天星期几 * @param {number} year 年份 * @param {number} month 月份 */ firstDayOfWeek(year, month) { - return new Date(Date.UTC(year, month - 1, 1)).getUTCDay(); - } + return new Date(Date.UTC(year, month - 1, 1)).getUTCDay() + } + /** * 计算指定日期星期几 * @param {number} year 年份 @@ -90,60 +99,68 @@ class DateUtil { * @param {number} date 日期 */ getDayOfWeek(year, month, date) { - return new Date(Date.UTC(year, month - 1, date)).getUTCDay(); - } + return new Date(Date.UTC(year, month - 1, date)).getUTCDay() + } + todayFMD() { - const _date = new Date(); - const year = _date.getFullYear(); - const month = _date.getMonth() + 1; - const date = _date.getDate(); + const _date = new Date() + const year = _date.getFullYear() + const month = _date.getMonth() + 1 + const date = _date.getDate() return { year: +year, month: +month, date: +date, - }; - } + } + } + todayTimestamp() { - const { year, month, date } = this.todayFMD(); - const timestamp = this.newDate(year, month, date).getTime(); - return timestamp; - } + const { year, month, date } = this.todayFMD() + const timestamp = this.newDate(year, month, date).getTime() + return timestamp + } + toTimeStr(dateInfo = {}) { - return `${+dateInfo.year}-${+dateInfo.month}-${+dateInfo.date}`; - } + return `${+dateInfo.year}-${+dateInfo.month}-${+dateInfo.date}` + } + transformDateRow2Dict(dateStr) { - if (typeof dateStr === "string" && dateStr.includes("-")) { - const [year, month, date] = dateStr.split("-"); + if (typeof dateStr === 'string' && dateStr.includes('-')) { + const [year, month, date] = dateStr.split('-') return this.tranformStr2NumOfDate({ year, month, date, - }); + }) } - return {}; - } + return {} + } + tranformStr2NumOfDate(date = {}) { - const target = { ...date }; + const target = { ...date } // 可能传入字符串 - target.year = +target.year; - target.month = +target.month; - target.date = +target.date; - return target; - } + target.year = +target.year + target.month = +target.month + target.date = +target.date + return target + } + sortDatesByTime(dates = [], sortType) { return dates.sort((a, b) => { - const at = this.getTimeStamp(a); - const bt = this.getTimeStamp(b); - if (at < bt && sortType !== "desc") { - return -1; - } else { - return 1; + const at = this.getTimeStamp(a) + const bt = this.getTimeStamp(b) + if (at < bt && sortType !== 'desc') { + return -1 + } + else { + return 1 } - }); - } + }) + } + getPrevMonthInfo(date = {}) { - const prevMonthInfo = - Number(date.month) > 1 + const prevMonthInfo + = Number(date.month) > 1 ? { year: +date.year, month: Number(date.month) - 1, @@ -151,12 +168,13 @@ class DateUtil { : { year: Number(date.year) - 1, month: 12, - }; - return prevMonthInfo; - } + } + return prevMonthInfo + } + getNextMonthInfo(date = {}) { - const nextMonthInfo = - Number(date.month) < 12 + const nextMonthInfo + = Number(date.month) < 12 ? { year: +date.year, month: Number(date.month) + 1, @@ -164,30 +182,34 @@ class DateUtil { : { year: Number(date.year) + 1, month: 1, - }; - return nextMonthInfo; - } + } + return nextMonthInfo + } + getPrevYearInfo(date = {}) { return { year: Number(date.year) - 1, month: +date.month, - }; - } + } + } + getNextYearInfo(date = {}) { return { year: Number(date.year) + 1, month: +date.month, - }; - } + } + } + findDateIndexInArray(target, dates) { - return dates.findIndex((item) => dateUtil.toTimeStr(item) === dateUtil.toTimeStr(target)); - } + return dates.findIndex(item => dateUtil.toTimeStr(item) === dateUtil.toTimeStr(target)) + } + calcDates(year, month) { - const datesCount = this.getDatesCountOfMonth(year, month); - const dates = []; - const today = dateUtil.todayFMD(); + const datesCount = this.getDatesCountOfMonth(year, month) + const dates = [] + const today = dateUtil.todayFMD() for (let i = 1; i <= datesCount; i++) { - const week = dateUtil.getDayOfWeek(+year, +month, i); + const week = dateUtil.getDayOfWeek(+year, +month, i) const date = { year: +year, id: i - 1, @@ -195,45 +217,48 @@ class DateUtil { date: i, week, isToday: +today.year === +year && +today.month === +month && i === +today.date, - }; - dates.push(date); + } + dates.push(date) } - return dates; - } + return dates + } + /** * 日期数组根据日期去重 - * @param {array} array 数组 + * @param {Array} array 数组 */ uniqueArrayByDate(array = []) { - let uniqueObject = {}; - let uniqueArray = []; + const uniqueObject = {} + const uniqueArray = [] array.forEach((item) => { - uniqueObject[dateUtil.toTimeStr(item)] = item; - }); - for (let i in uniqueObject) { - uniqueArray.push(uniqueObject[i]); + uniqueObject[dateUtil.toTimeStr(item)] = item + }) + for (const i in uniqueObject) { + uniqueArray.push(uniqueObject[i]) } - return uniqueArray; - } + return uniqueArray + } + /** * 筛选指定年月日期 * @param {object} target 指定年月 - * @param {array} dates 待筛选日期 + * @param {Array} dates 待筛选日期 */ filterDatesByYM(target, dates) { if (target) { - const { year, month } = target; - const _dates = dates.filter((item) => +item.year === +year && +item.month === +month); - return _dates; + const { year, month } = target + const _dates = dates.filter(item => +item.year === +year && +item.month === +month) + return _dates } - return dates; - } + return dates + } + getWeekHeader(firstDayOfWeek) { - let weeksCh = ["日", "一", "二", "三", "四", "五", "六"]; - if (firstDayOfWeek === "Mon") { - weeksCh = ["一", "二", "三", "四", "五", "六", "日"]; + let weeksCh = ['日', '一', '二', '三', '四', '五', '六'] + if (firstDayOfWeek === 'Mon') { + weeksCh = ['一', '二', '三', '四', '五', '六', '日'] } - return weeksCh; + return weeksCh } } @@ -241,35 +266,38 @@ class DateUtil { * 获取当前页面实例 */ export function getCurrentPage() { - const pages = getCurrentPages() || []; - const last = pages.length - 1; - return pages[last] || {}; + const pages = getCurrentPages() || [] + const last = pages.length - 1 + return pages[last] || {} } export function getComponentById(componentId) { - const logger = new Logger(); - let page = getCurrentPage() || {}; - if (page.selectComponent && typeof page.selectComponent === "function") { + const logger = new Logger() + const page = getCurrentPage() || {} + if (page.selectComponent && typeof page.selectComponent === 'function') { if (componentId) { - return page.selectComponent(componentId); - } else { - logger.warn("请传入组件ID"); + return page.selectComponent(componentId) + } + else { + logger.warn('请传入组件ID') } - } else { - logger.warn("该基础库暂不支持多个小程序日历组件"); + } + else { + logger.warn('该基础库暂不支持多个小程序日历组件') } } -export const logger = new Logger(); -export const calendarGesture = new Gesture(); -export const dateUtil = new DateUtil(); -export const getCalendarData = (key, component) => new WxData(component).getData(key); -export const setCalendarData = (data, component) => new WxData(component).setData(data); -export const getCalendarConfig = (component) => getCalendarData("config", component); -export const setCalendarConfig = (config, component) => - setCalendarData( +export const logger = new Logger() +export const calendarGesture = new Gesture() +export const dateUtil = new DateUtil() +export const getCalendarData = (key, component) => new WxData(component).getData(key) +export const setCalendarData = (data, component) => new WxData(component).setData(data) +export const getCalendarConfig = component => getCalendarData('config', component) +export function setCalendarConfig(config, component) { + return setCalendarData( { config, }, component, - ); + ) +} diff --git a/src/components/calendar/utils/logger.js b/src/components/calendar/utils/logger.js index 5100ec5..17aa958 100644 --- a/src/components/calendar/utils/logger.js +++ b/src/components/calendar/utils/logger.js @@ -1,23 +1,25 @@ export default class Logger { info(msg) { console.log( - '%cInfo: %c' + msg, + `%cInfo: %c${msg}`, 'color:#FF0080;font-weight:bold', - 'color: #FF509B' + 'color: #FF509B', ) - } + } + warn(msg) { console.log( - '%cWarn: %c' + msg, + `%cWarn: %c${msg}`, 'color:#FF6600;font-weight:bold', - 'color: #FF9933' + 'color: #FF9933', ) - } + } + tips(msg) { console.log( - '%cTips: %c' + msg, + `%cTips: %c${msg}`, 'color:#00B200;font-weight:bold', - 'color: #00CC33' + 'color: #00CC33', ) } } diff --git a/src/components/calendar/utils/wxData.js b/src/components/calendar/utils/wxData.js index 463ef3e..9484994 100644 --- a/src/components/calendar/utils/wxData.js +++ b/src/components/calendar/utils/wxData.js @@ -1,23 +1,28 @@ class WxData { constructor(component) { this.Component = component - } + } + getData(key) { const data = this.Component.data - if (!key) return data + if (!key) + return data if (key.includes('.')) { - let keys = key.split('.') + const keys = key.split('.') const tmp = keys.reduce((prev, next) => { return prev[next] }, data) return tmp - } else { + } + else { return this.Component.data[key] } - } + } + setData(data) { return new Promise((resolve, reject) => { - if (!data) return reject('no data to set') + if (!data) + return reject('no data to set') if (typeof data === 'object') { this.Component.setData(data, () => { resolve(data) diff --git a/src/components/customPoster/README.md b/src/components/customPoster/README.md index 22a0fca..fa8bde5 100644 --- a/src/components/customPoster/README.md +++ b/src/components/customPoster/README.md @@ -28,28 +28,28 @@ const data = { }, elements: [ { - id: 'circle-name', - desc: '圈名称', - type: 1, - text: '治疗讨论', - font: '宋体', + 'id': 'circle-name', + 'desc': '圈名称', + 'type': 1, + 'text': '治疗讨论', + 'font': '宋体', 'font-size': '42', - color: '#FFFFFF', + 'color': '#FFFFFF', 'single-line': true, - halign: 'center', - top: '106', + 'halign': 'center', + 'top': '106', }, { - id: 'master-name', - desc: '专家名称', - type: 1, - text: '健康小贴士', - font: '宋体', + 'id': 'master-name', + 'desc': '专家名称', + 'type': 1, + 'text': '健康小贴士', + 'font': '宋体', 'font-size': '38', - color: '#FFFFFF', + 'color': '#FFFFFF', 'single-line': true, - halign: 'center', - top: '237', + 'halign': 'center', + 'top': '237', }, { id: 'master-avatar', @@ -64,72 +64,72 @@ const data = { top: '328', }, { - id: 'note-content', - desc: '动态内容', - type: 1, - text: '11月5日上海组织进口博览会CIIE大会,邀请大家来我们的展馆现场交流。', - font: '宋体', + 'id': 'note-content', + 'desc': '动态内容', + 'type': 1, + 'text': '11月5日上海组织进口博览会CIIE大会,邀请大家来我们的展馆现场交流。', + 'font': '宋体', 'font-size': '45', - color: '#18191A', - width: '630', - height: '348', - left: '60', - top: '495', + 'color': '#18191A', + 'width': '630', + 'height': '348', + 'left': '60', + 'top': '495', }, { - id: 'note-title', - desc: '长文标题', - type: 1, - text: '', - font: '宋体', + 'id': 'note-title', + 'desc': '长文标题', + 'type': 1, + 'text': '', + 'font': '宋体', 'font-size': '42', - color: '#18191A', - width: '659', - height: '116', - left: '46', - top: '495', + 'color': '#18191A', + 'width': '659', + 'height': '116', + 'left': '46', + 'top': '495', 'font-weight': 'bold', }, { - id: 'note-summary', - desc: '长文摘要 ', - type: 1, - text: '', - font: '宋体', + 'id': 'note-summary', + 'desc': '长文摘要 ', + 'type': 1, + 'text': '', + 'font': '宋体', 'font-size': '42', - color: '#18191A', - width: '672', - height: '232', - left: '39', - top: '646', + 'color': '#18191A', + 'width': '672', + 'height': '232', + 'left': '39', + 'top': '646', }, { - id: 'note-more', - desc: '还有', - type: 1, - text: '还有3条精彩附件>', - font: '宋体', + 'id': 'note-more', + 'desc': '还有', + 'type': 1, + 'text': '还有3条精彩附件>', + 'font': '宋体', 'font-size': '31', - color: '#666666', + 'color': '#666666', 'single-line': true, - width: '292', - height: '46', - left: '60', - top: '1024', + 'width': '292', + 'height': '46', + 'left': '60', + 'top': '1024', }, { - id: 'scanText', - desc: '扫描二维码查看详情', - type: 1, - text: '扫描二维码查看详情', - font: '宋体', + 'id': 'scanText', + 'desc': '扫描二维码查看详情', + 'type': 1, + 'text': '扫描二维码查看详情', + 'font': '宋体', 'font-size': '31', - color: '#666666', + 'color': '#666666', 'single-line': true, - width: '279', - height: '43', - left: '60', - top: '1087', + 'width': '279', + 'height': '43', + 'left': '60', + 'top': '1087', }, { id: 'note-qrcode', @@ -143,16 +143,16 @@ const data = { top: '1012', }, { - id: 'brand', - desc: 'brand×华秉科技', - type: 1, - text: '做企业数字化转型的亲密伙伴×华秉科技', - font: '宋体', + 'id': 'brand', + 'desc': 'brand×华秉科技', + 'type': 1, + 'text': '做企业数字化转型的亲密伙伴×华秉科技', + 'font': '宋体', 'font-size': '24', - color: '#B2B3B4', + 'color': '#B2B3B4', 'single-line': true, - halign: 'center', - top: '1192', + 'halign': 'center', + 'top': '1192', }, ], }, diff --git a/src/components/customPoster/index.js b/src/components/customPoster/index.js index 25b1011..344e1aa 100644 --- a/src/components/customPoster/index.js +++ b/src/components/customPoster/index.js @@ -1,4 +1,4 @@ -import Wxml2Canvas from "./wxml2canvas/index.js"; // 根据具体路径修改,node_modules会被忽略 +import Wxml2Canvas from './wxml2canvas/index.js' // 根据具体路径修改,node_modules会被忽略 Component({ properties: { @@ -6,24 +6,24 @@ Component({ type: Object, observer(newVal, _olVal) { if (Object.keys(newVal).length > 0) { - this.paramsFormat(newVal); + this.paramsFormat(newVal) this.setData({ width: newVal.body.width, height: newVal.body.height, bgImg: newVal.body.bgImg, elementsMp: newVal.elements, - }); - this.drawImage(); + }) + this.drawImage() } }, }, }, data: { - imgUrl: "", - width: "", - height: "", - imgheight: "", - bgImg: "", + imgUrl: '', + width: '', + height: '', + imgheight: '', + bgImg: '', elementsMp: [], }, lifetimes: { @@ -34,68 +34,70 @@ Component({ params.elements.forEach((item) => { if (item.type === 0) { // 图片居中 - if (item.halign === "center") { - item.left = (params.body.width - item.width) / 2; + if (item.halign === 'center') { + item.left = (params.body.width - item.width) / 2 } - } else { - item.text = item.text.replace(/[\r\n]/g, ""); + } + else { + item.text = item.text.replace(/[\r\n]/g, '') // 文字居中(使文字标签宽度等于画布宽度,文字加上居中的className) - if (item.halign === "center") { - item.width = item.width || params.body.width; - item.left = (params.body.width - item.width) / 2; + if (item.halign === 'center') { + item.width = item.width || params.body.width + item.left = (params.body.width - item.width) / 2 + } + if (item.halign === 'right') { + item.width = params.body.width } - if (item.halign === "right") { - item.width = params.body.width; + if (item.id === 'shareText' && item.text.length > 30) { + item.text = `${item.text.slice(0, 30)}...` } - if (item.id === "shareText" && item.text.length > 30) { - item.text = item.text.slice(0, 30) + "..."; + if (item.id === 'note-title' && item.text.length > 28) { + item.text = `${item.text.slice(0, 28)}...` } - if (item.id === "note-title" && item.text.length > 28) { - item.text = item.text.slice(0, 28) + "..."; + if (item.id === 'note-content' && item.text.length > 90) { + item.text = `${item.text.slice(0, 90)}...` } - if (item.id === "note-content" && item.text.length > 90) { - item.text = item.text.slice(0, 90) + "..."; + const len = params.elements.some(x => x.id === 'note-title' && x.text.length) + if (len && item.id === 'note-summary' && item.text.length > 62) { + item.text = `${item.text.slice(0, 62)}...` } - let len = params.elements.some((x) => x.id === "note-title" && x.text.length); - if (len && item.id === "note-summary" && item.text.length > 62) { - item.text = item.text.slice(0, 62) + "..."; - } else if (item.id === "note-summary" && item.text.length > 76) { - item.text = item.text.slice(0, 76) + "..."; + else if (item.id === 'note-summary' && item.text.length > 76) { + item.text = `${item.text.slice(0, 76)}...` } } - }); + }) }, drawImage() { - let self = this; + const self = this this.drawImage1 = new Wxml2Canvas({ obj: self, width: this.data.width, // 宽, 以iphone6为基准,传具体数值,其它机型自动适配 height: this.data.height, // 高 - element: "canvas1", - background: "transparent", + element: 'canvas1', + background: 'transparent', progress(percent) {}, finish(url) { self.setData({ imgUrl: url, - }); - self.triggerEvent("finish", url); + }) + self.triggerEvent('finish', url) }, error(res) {}, - }); + }) - let data = { + const data = { list: [ { - type: "wxml", - class: "#canvas-bill-body-mp .draw_canvas", - limit: "#canvas-bill-body-mp", + type: 'wxml', + class: '#canvas-bill-body-mp .draw_canvas', + limit: '#canvas-bill-body-mp', x: 0, y: 0, }, ], - }; + } - this.drawImage1.draw(data); + this.drawImage1.draw(data) }, }, -}); +}) diff --git a/src/components/customPoster/wxml2canvas/index.js b/src/components/customPoster/wxml2canvas/index.js index df28992..03859b1 100644 --- a/src/components/customPoster/wxml2canvas/index.js +++ b/src/components/customPoster/wxml2canvas/index.js @@ -1,1180 +1,1224 @@ module.exports = (function () { - var __MODS__ = {}; - var __DEFINE__ = function (modId, func, req) { - var m = { exports: {}, _tempexports: {} }; - __MODS__[modId] = { status: 0, func: func, req: req, m: m }; - }; - var __REQUIRE__ = function (modId, source) { - if (!__MODS__[modId]) return require(source); + const __MODS__ = {} + const __DEFINE__ = function (modId, func, req) { + const m = { exports: {}, _tempexports: {} } + __MODS__[modId] = { status: 0, func, req, m } + } + const __REQUIRE__ = function (modId, source) { + if (!__MODS__[modId]) + return require(source) if (!__MODS__[modId].status) { - var m = __MODS__[modId].m; - m._exports = m._tempexports; - var desp = Object.getOwnPropertyDescriptor(m, "exports"); - if (desp && desp.configurable) - Object.defineProperty(m, "exports", { - set: function (val) { - if (typeof val === "object" && val !== m._exports) { - m._exports.__proto__ = val.__proto__; - Object.keys(val).forEach(function (k) { - m._exports[k] = val[k]; - }); + const m = __MODS__[modId].m + m._exports = m._tempexports + const desp = Object.getOwnPropertyDescriptor(m, 'exports') + if (desp && desp.configurable) { + Object.defineProperty(m, 'exports', { + set(val) { + if (typeof val === 'object' && val !== m._exports) { + m._exports.__proto__ = val.__proto__ + Object.keys(val).forEach((k) => { + m._exports[k] = val[k] + }) } - m._tempexports = val; + m._tempexports = val }, - get: function () { - return m._tempexports; + get() { + return m._tempexports }, - }); - __MODS__[modId].status = 1; - __MODS__[modId].func(__MODS__[modId].req, m, m.exports); + }) + } + __MODS__[modId].status = 1 + __MODS__[modId].func(__MODS__[modId].req, m, m.exports) } - return __MODS__[modId].m.exports; - }; - var __REQUIRE_WILDCARD__ = function (obj) { + return __MODS__[modId].m.exports + } + const __REQUIRE_WILDCARD__ = function (obj) { if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; + return obj + } + else { + const newObj = {} if (obj != null) { - for (var k in obj) { - if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; + for (const k in obj) { + if (Object.prototype.hasOwnProperty.call(obj, k)) + newObj[k] = obj[k] } } - newObj.default = obj; - return newObj; + newObj.default = obj + return newObj } - }; - var __REQUIRE_DEFAULT__ = function (obj) { - return obj && obj.__esModule ? obj.default : obj; - }; + } + const __REQUIRE_DEFAULT__ = function (obj) { + return obj && obj.__esModule ? obj.default : obj + } __DEFINE__( 1685064731946, - function (require, module, exports) { - var __TEMP__ = require("./src/index"); - var Wxml2Canvas = __REQUIRE_DEFAULT__(__TEMP__); + (require, module, exports) => { + const __TEMP__ = require('./src/index') + const Wxml2Canvas = __REQUIRE_DEFAULT__(__TEMP__) - if (!exports.__esModule) Object.defineProperty(exports, "__esModule", { value: true }); - exports.default = Wxml2Canvas; + if (!exports.__esModule) + Object.defineProperty(exports, '__esModule', { value: true }) + exports.default = Wxml2Canvas }, - function (modId) { - var map = { "./src/index": 1685064731947 }; - return __REQUIRE__(map[modId], modId); + (modId) => { + const map = { './src/index': 1685064731947 } + return __REQUIRE__(map[modId], modId) }, - ); + ) __DEFINE__( 1685064731947, - function (require, module, exports) { - var __TEMP__ = require("./util"); - var Util = __REQUIRE_DEFAULT__(__TEMP__); + (require, module, exports) => { + const __TEMP__ = require('./util') + const Util = __REQUIRE_DEFAULT__(__TEMP__) const imageMode = [ - "scaleToFill", - "aspectFit", - "aspectFill", - "widthFix", - "top", - "bottom", - "center", - "left", - "right", - "top left", - "top right", - "bottom left", - "bottom right", - ]; + 'scaleToFill', + 'aspectFit', + 'aspectFill', + 'widthFix', + 'top', + 'bottom', + 'center', + 'left', + 'right', + 'top left', + 'top right', + 'bottom left', + 'bottom right', + ] class Wxml2Canvas { constructor(options = {}) { - this.device = (wx.getSystemInfoSync && wx.getSystemInfoSync()) || {}; + this.device = (wx.getSystemInfoSync && wx.getSystemInfoSync()) || {} if (!options.zoom) { - this.zoom = this.device.windowWidth / 375; - } else { - this.zoom = options.zoom || 1; + this.zoom = this.device.windowWidth / 375 + } + else { + this.zoom = options.zoom || 1 } - this.element = options.element; - this.object = options.obj; - this.width = options.width * this.zoom || 0; - this.height = options.height * this.zoom || 0; - this.destZoom = options.destZoom || 3; - this.destWidth = this.width * this.destZoom; - this.destHeight = this.height * this.destZoom; - this.translateX = options.translateX * this.zoom || 0; - this.translateY = options.translateY * this.zoom || 0; - this.gradientBackground = options.gradientBackground || null; - this.background = options.background || "#ffffff"; - this.finishDraw = options.finish || function finish(params) {}; - this.errorHandler = options.error || function error(params) {}; - this.progress = options.progress || function progress(params) {}; - this.textAlign = options.textAlign || "left"; - this.fullText = options.fullText || false; - this.font = options.font || "14px PingFang SC"; - - this._init(); + this.element = options.element + this.object = options.obj + this.width = options.width * this.zoom || 0 + this.height = options.height * this.zoom || 0 + this.destZoom = options.destZoom || 3 + this.destWidth = this.width * this.destZoom + this.destHeight = this.height * this.destZoom + this.translateX = options.translateX * this.zoom || 0 + this.translateY = options.translateY * this.zoom || 0 + this.gradientBackground = options.gradientBackground || null + this.background = options.background || '#ffffff' + this.finishDraw = options.finish || function finish(params) {} + this.errorHandler = options.error || function error(params) {} + this.progress = options.progress || function progress(params) {} + this.textAlign = options.textAlign || 'left' + this.fullText = options.fullText || false + this.font = options.font || '14px PingFang SC' + + this._init() } draw(data = {}, that) { - let self = this; - this.data = data; - this.fef = that; + const self = this + this.data = data + this.fef = that - this.progress(10); + this.progress(10) this._preloadImage(data.list) .then((result) => { - this.progress(30); - self._draw(); + this.progress(30) + self._draw() }) .catch((res) => { - self.errorHandler(res); - }); + self.errorHandler(res) + }) } measureWidth(text, font) { if (font) { - this.ctx.font = font; + this.ctx.font = font } - let res = this.ctx.measureText(text) || {}; - return res.width || 0; + const res = this.ctx.measureText(text) || {} + return res.width || 0 } _init() { - this.progressPercent = 0; // 绘制进度百分比 - this.data = null; - this.ref = null; - this.allPic = []; - this.screenList = []; - this.asyncList = []; - this.imgUrl = ""; - this.progressPercent = 0; - this.distance = 0; - this.progress(0); - - this.ctx = wx.createCanvasContext(this.element, this.object); - this.ctx.font = this.font; - this.ctx.setTextBaseline("top"); - this.ctx.setStrokeStyle("white"); - - this.debug = this.device.platform === "devtools" ? true : false; - - this._drawBakcground(); + this.progressPercent = 0 // 绘制进度百分比 + this.data = null + this.ref = null + this.allPic = [] + this.screenList = [] + this.asyncList = [] + this.imgUrl = '' + this.progressPercent = 0 + this.distance = 0 + this.progress(0) + + this.ctx = wx.createCanvasContext(this.element, this.object) + this.ctx.font = this.font + this.ctx.setTextBaseline('top') + this.ctx.setStrokeStyle('white') + + this.debug = this.device.platform === 'devtools' + + this._drawBakcground() } _drawBakcground() { if (this.gradientBackground) { - let line = this.gradientBackground.line || [0, 0, 0, this.height]; - let color = this.gradientBackground.color || ["#fff", "#fff"]; - let style = { fill: { line, color } }; - this._drawRectToCanvas(0, 0, this.width, this.height, style); - } else { - let style = { fill: this.background }; - this._drawRectToCanvas(0, 0, this.width, this.height, style); + const line = this.gradientBackground.line || [0, 0, 0, this.height] + const color = this.gradientBackground.color || ['#fff', '#fff'] + const style = { fill: { line, color } } + this._drawRectToCanvas(0, 0, this.width, this.height, style) + } + else { + const style = { fill: this.background } + this._drawRectToCanvas(0, 0, this.width, this.height, style) } } _draw() { - let self = this; - let list = this.data.list || []; - let index = 0; - let all = []; - let count = 0; + const self = this + let list = this.data.list || [] + let index = 0 + const all = [] + let count = 0 list.forEach((item) => { - if (item.type === "wxml") { - count += 3; - } else { - count += 1; + if (item.type === 'wxml') { + count += 3 + } + else { + count += 1 } - }); + }) - this.distance = 60 / (count || 1); // 进度条的间距 - this.progressPercent = 30; - this.asyncList = list.filter((item) => item.delay == true); - list = list.filter((item) => item.delay != true); - drawList(list); + this.distance = 60 / (count || 1) // 进度条的间距 + this.progressPercent = 30 + this.asyncList = list.filter(item => item.delay == true) + list = list.filter(item => item.delay != true) + drawList(list) Promise.all(all) .then((results) => { - index = 0; - drawList(self.asyncList, true); + index = 0 + drawList(self.asyncList, true) Promise.all(all).then((results) => { - self.progress(90); - self._saveCanvasToImage(); - }); + self.progress(90) + self._saveCanvasToImage() + }) }) .catch((e) => { - console.log(e); - self.errorHandler(e); - }); + console.log(e) + self.errorHandler(e) + }) function drawList(list = [], noDelay) { list.forEach((item, i) => { all[index++] = new Promise((resolve, reject) => { - let attr = item.style; - item.progress = self.distance; + const attr = item.style + item.progress = self.distance if (noDelay) { - item.delay = 0; + item.delay = 0 } - if (item.type === "radius-image") { - self._drawCircle(item, attr, resolve, reject, "image"); - } else if (item.type === "text") { - self._drawText(item, attr, resolve, reject); - } else if (item.type === "line") { - self._drawLine(item, attr, resolve, reject); - } else if (item.type === "circle") { - self._drawCircle(item, attr, resolve, reject); - } else if (item.type === "rect") { - self._drawRect(item, attr, resolve, reject); - } else if (item.type === "image") { - self._drawRect(item, attr, resolve, reject, "image"); - } else if (item.type === "wxml") { - self._drawWxml(item, attr, resolve, reject); - } else { - resolve(); + if (item.type === 'radius-image') { + self._drawCircle(item, attr, resolve, reject, 'image') + } + else if (item.type === 'text') { + self._drawText(item, attr, resolve, reject) + } + else if (item.type === 'line') { + self._drawLine(item, attr, resolve, reject) + } + else if (item.type === 'circle') { + self._drawCircle(item, attr, resolve, reject) + } + else if (item.type === 'rect') { + self._drawRect(item, attr, resolve, reject) + } + else if (item.type === 'image') { + self._drawRect(item, attr, resolve, reject, 'image') + } + else if (item.type === 'wxml') { + self._drawWxml(item, attr, resolve, reject) + } + else { + resolve() } - }); - }); + }) + }) } } _saveCanvasToImage() { - let self = this; + const self = this // 延时保存有两个原因,一个是等待绘制delay的元素,另一个是安卓上样式会错乱 setTimeout( () => { - self.progress(95); + self.progress(95) - let obj = { + const obj = { x: 0, y: 0, width: self.width, height: self.height, canvasId: self.element, - success: function (res) { - self.progress(100); - self.imgUrl = res.tempFilePath; - self.finishDraw(self.imgUrl); + success(res) { + self.progress(100) + self.imgUrl = res.tempFilePath + self.finishDraw(self.imgUrl) }, - fail: function (res) { - self.errorHandler({ errcode: 1000, errmsg: "save canvas error", e: res }); + fail(res) { + self.errorHandler({ errcode: 1000, errmsg: 'save canvas error', e: res }) }, - }; + } if (self.destZoom !== 3) { - obj.destWidth = self.destWidth; - obj.destHeight = self.destHeight; + obj.destWidth = self.destWidth + obj.destHeight = self.destHeight } - wx.canvasToTempFilePath(obj, self.object); + wx.canvasToTempFilePath(obj, self.object) }, - self.device.system.indexOf("iOS") === -1 ? 300 : 100, - ); + !self.device.system.includes('iOS') ? 300 : 100, + ) } _preloadImage(list = []) { - let self = this; - let all = []; - let count = 0; + const self = this + const all = [] + let count = 0 list.forEach((item, i) => { if (item.url && self._findPicIndex(item.url) === -1) { // 避免重复下载同一图片 self.allPic.push({ url: item.url, - local: "", - }); + local: '', + }) all[count++] = new Promise((resolve, reject) => { // 非http(s)域名的就不下载了 if ( - !/^http/.test(item.url) || - /^http:\/\/(tmp)|(usr)\//.test(item.url) || - /^http:\/\/127\.0\.0\.1/.test(item.url) + !item.url.startsWith('http') + || /^http:\/\/(tmp)|(usr)\//.test(item.url) + || /^http:\/\/127\.0\.0\.1/.test(item.url) ) { if (item.isBase64) { - let fileManager = wx.getFileSystemManager(); + const fileManager = wx.getFileSystemManager() fileManager.writeFile({ filePath: item.url, - data: item.isBase64.replace(/data:image\/(.*);base64,/, ""), - encoding: "base64", + data: item.isBase64.replace(/data:image\/(.*);base64,/, ''), + encoding: 'base64', success(res) { - imageInfo(item.url); + imageInfo(item.url) }, fail(res) { - reject(res); + reject(res) }, - }); - } else { - imageInfo(item.url); + }) + } + else { + imageInfo(item.url) } function imageInfo(url) { wx.getImageInfo({ src: url, success(res) { - let index = self._findPicIndex(url); + const index = self._findPicIndex(url) if (index > -1) { - self.allPic[index].local = url; - self.allPic[index].width = res.width; - self.allPic[index].height = res.height; + self.allPic[index].local = url + self.allPic[index].width = res.width + self.allPic[index].height = res.height } - resolve({ tempFilePath: url }); + resolve({ tempFilePath: url }) }, fail(res) { - reject(res); + reject(res) }, - }); + }) } - } else { + } + else { wx.downloadFile({ - url: item.url.replace(/^https?/, "https"), - success: function (res) { + url: item.url.replace(/^https?/, 'https'), + success(res) { wx.getImageInfo({ src: res.tempFilePath, success(img) { - let index = self._findPicIndex(item.url); + const index = self._findPicIndex(item.url) if (index > -1) { - self.allPic[index].local = res.tempFilePath; - self.allPic[index].width = img.width; - self.allPic[index].height = img.height; + self.allPic[index].local = res.tempFilePath + self.allPic[index].width = img.width + self.allPic[index].height = img.height } - resolve(res); + resolve(res) }, fail(res) { - reject(res); + reject(res) }, - }); + }) }, fail: (res) => { - reject({ errcode: 1001, errmsg: "download pic error" }); + reject({ errcode: 1001, errmsg: 'download pic error' }) }, - }); + }) } - }); + }) } - }); + }) return Promise.all(all) .then((results) => { return new Promise((resolve) => { - resolve(); - }); + resolve() + }) }) .catch((results) => { return new Promise((resolve, reject) => { - reject(results); - }); - }); + reject(results) + }) + }) } _findPicIndex(url) { - let index = this.allPic.findIndex((pic) => pic.url === url); - return index; + const index = this.allPic.findIndex(pic => pic.url === url) + return index } _drawRect(item, style, resolve, reject, isImage, isWxml) { - let zoom = this.zoom; - let leftOffset = 0; - let topOffset = 0; - let width = style.width; - let height = style.height; - let imgWidth = style.width; - let imgHeight = style.height; - let mode = null; + const zoom = this.zoom + let leftOffset = 0 + const topOffset = 0 + let width = style.width + let height = style.height + let imgWidth = style.width + let imgHeight = style.height + let mode = null try { - item.x = this._resetPositionX(item, style); - item.y = this._resetPositionY(item, style); + item.x = this._resetPositionX(item, style) + item.y = this._resetPositionY(item, style) - let url; + let url if (isImage) { - let index = this._findPicIndex(item.url); + const index = this._findPicIndex(item.url) if (index > -1) { - url = this.allPic[index].local; - imgWidth = this.allPic[index].width; - imgHeight = this.allPic[index].height; - } else { - url = item.url; + url = this.allPic[index].local + imgWidth = this.allPic[index].width + imgHeight = this.allPic[index].height + } + else { + url = item.url } } - style.padding = style.padding || []; - if (isWxml === "inline-wxml") { - item.x = item.x + ((style.padding[3] && style.padding[3]) || 0); - item.y = item.y + ((style.padding[0] && style.padding[0]) || 0); + style.padding = style.padding || [] + if (isWxml === 'inline-wxml') { + item.x = item.x + ((style.padding[3] && style.padding[3]) || 0) + item.y = item.y + ((style.padding[0] && style.padding[0]) || 0) } - leftOffset = item.x + style.width + ((style.padding[1] && style.padding[1]) || 0); + leftOffset = item.x + style.width + ((style.padding[1] && style.padding[1]) || 0) if (!isWxml) { - width = width * zoom; - height = height * zoom; + width = width * zoom + height = height * zoom } - if (style.dataset && style.dataset.mode && imageMode.indexOf(style.dataset.mode) > -1) { + if (style.dataset && style.dataset.mode && imageMode.includes(style.dataset.mode)) { mode = { type: style.dataset.mode, width: imgWidth, height: imgHeight, - }; + } } - this._drawRectToCanvas(item.x, item.y, width, height, style, url, mode); - this._updateProgress(item.progress); + this._drawRectToCanvas(item.x, item.y, width, height, style, url, mode) + this._updateProgress(item.progress) if (resolve) { - resolve(); - } else { + resolve() + } + else { return { leftOffset, topOffset, - }; + } } - } catch (e) { - reject && - reject({ errcode: isImage ? 1003 : 1002, errmsg: isImage ? "drawImage error" : "drawRect error", e }); + } + catch (e) { + reject + && reject({ errcode: isImage ? 1003 : 1002, errmsg: isImage ? 'drawImage error' : 'drawRect error', e }) } } _drawRectToCanvas(x, y, width, height, style, url, mode) { - let { fill, border, boxShadow } = style; - this.ctx.save(); + const { fill, border, boxShadow } = style + this.ctx.save() this._drawBoxShadow(boxShadow, (res) => { // 真机上填充渐变色时,没有阴影,先画个相等大小的纯色矩形来实现阴影 - if (fill && typeof fill !== "string" && !this.debug) { - this.ctx.setFillStyle(res.color || "#ffffff"); - this.ctx.fillRect(x, y, width, height); + if (fill && typeof fill !== 'string' && !this.debug) { + this.ctx.setFillStyle(res.color || '#ffffff') + this.ctx.fillRect(x, y, width, height) } - }); + }) if (url) { // 开发者工具有bug,先不裁剪 if (mode) { - this._resetImageByMode(url, x, y, width, height, mode); - } else { - this.ctx.drawImage(url, x, y, width, height); + this._resetImageByMode(url, x, y, width, height, mode) + } + else { + this.ctx.drawImage(url, x, y, width, height) } - } else { + } + else { this._setFill(fill, () => { - this.ctx.fillRect(x, y, width, height); - }); + this.ctx.fillRect(x, y, width, height) + }) } this._drawBorder(border, style, (border) => { - let fixBorder = border.width; - this.ctx.strokeRect(x - fixBorder / 2, y - fixBorder / 2, width + fixBorder, height + fixBorder); - }); + const fixBorder = border.width + this.ctx.strokeRect(x - fixBorder / 2, y - fixBorder / 2, width + fixBorder, height + fixBorder) + }) - this.ctx.draw(true); - this.ctx.restore(); - this.ctx.strokeStyle = "#fff"; + this.ctx.draw(true) + this.ctx.restore() + this.ctx.strokeStyle = '#fff' } _resetImageByMode(url, x, y, width, height, mode) { - let self = this; - let offsetX = 0; - let offsetY = 0; - let imgWidth = mode.width; - let imgHeight = mode.height; + const self = this + let offsetX = 0 + let offsetY = 0 + let imgWidth = mode.width + let imgHeight = mode.height switch (mode.type) { - case "scaleToFill": - imgWidth = width; - imgHeight = height; - self.ctx.drawImage(url, x, y, width, height); - break; - case "widthFix": - height = width / ((imgWidth || 1) / (imgHeight || 1)); - self.ctx.drawImage(url, x, y, width, height); - break; - case "aspectFit": + case 'scaleToFill': + imgWidth = width + imgHeight = height + self.ctx.drawImage(url, x, y, width, height) + break + case 'widthFix': + height = width / ((imgWidth || 1) / (imgHeight || 1)) + self.ctx.drawImage(url, x, y, width, height) + break + case 'aspectFit': if (imgWidth > imgHeight) { - let realHeight = width / ((imgWidth || 1) / (imgHeight || 1)); - offsetY = -(height - realHeight) / 2; - imgWidth = width; - imgHeight = realHeight; - } else { - let realWidth = height / ((imgHeight || 1) / (imgWidth || 1)); - offsetX = -(width - realWidth) / 2; - imgWidth = realWidth; - imgHeight = height; + const realHeight = width / ((imgWidth || 1) / (imgHeight || 1)) + offsetY = -(height - realHeight) / 2 + imgWidth = width + imgHeight = realHeight + } + else { + const realWidth = height / ((imgHeight || 1) / (imgWidth || 1)) + offsetX = -(width - realWidth) / 2 + imgWidth = realWidth + imgHeight = height } - _clip(); - break; - case "aspectFill": + _clip() + break + case 'aspectFill': if (imgWidth > imgHeight) { - let realWidth = imgWidth / ((imgHeight || 1) / (height || 1)); - offsetX = (realWidth - width) / 2; - imgWidth = realWidth; - imgHeight = height; - } else { - let realHeight = imgHeight / ((imgWidth || 1) / (width || 1)); - offsetY = (realHeight - height) / 2; - imgWidth = width; - imgHeight = realHeight; + const realWidth = imgWidth / ((imgHeight || 1) / (height || 1)) + offsetX = (realWidth - width) / 2 + imgWidth = realWidth + imgHeight = height + } + else { + const realHeight = imgHeight / ((imgWidth || 1) / (width || 1)) + offsetY = (realHeight - height) / 2 + imgWidth = width + imgHeight = realHeight } - _clip(); - break; - case "top left": - _clip(); - break; - case "top": - offsetX = (mode.width - width) / 2; - _clip(); - break; - case "top right": - offsetX = mode.width - width; - _clip(); - break; - case "left": - offsetY = (mode.height - height) / 2; - _clip(); - break; - case "center": - offsetX = (mode.width - width) / 2; - offsetY = (mode.height - height) / 2; - _clip(); - break; - case "right": - offsetX = mode.width - width; - offsetY = (mode.height - height) / 2; - _clip(); - break; - case "bottom left": - offsetY = mode.height - height; - _clip(); - break; - case "bottom": - offsetX = (mode.width - width) / 2; - offsetY = mode.height - height; - _clip(); - break; - case "bottom right": - offsetX = mode.width - width; - offsetY = mode.height - height; - _clip(); - break; + _clip() + break + case 'top left': + _clip() + break + case 'top': + offsetX = (mode.width - width) / 2 + _clip() + break + case 'top right': + offsetX = mode.width - width + _clip() + break + case 'left': + offsetY = (mode.height - height) / 2 + _clip() + break + case 'center': + offsetX = (mode.width - width) / 2 + offsetY = (mode.height - height) / 2 + _clip() + break + case 'right': + offsetX = mode.width - width + offsetY = (mode.height - height) / 2 + _clip() + break + case 'bottom left': + offsetY = mode.height - height + _clip() + break + case 'bottom': + offsetX = (mode.width - width) / 2 + offsetY = mode.height - height + _clip() + break + case 'bottom right': + offsetX = mode.width - width + offsetY = mode.height - height + _clip() + break default: - imgWidth = width; - imgHeight = height; - break; + imgWidth = width + imgHeight = height + break } function _clip() { - self.ctx.save(); - self.ctx.beginPath(); - self.ctx.rect(x, y, width, height); - self.ctx.clip(); - self.ctx.drawImage(url, x - offsetX, y - offsetY, imgWidth, imgHeight); - self.ctx.closePath(); - self.ctx.restore(); + self.ctx.save() + self.ctx.beginPath() + self.ctx.rect(x, y, width, height) + self.ctx.clip() + self.ctx.drawImage(url, x - offsetX, y - offsetY, imgWidth, imgHeight) + self.ctx.closePath() + self.ctx.restore() } } _drawText(item, style, resolve, reject, type, isWxml) { - let zoom = this.zoom; - let leftOffset = 0; - let topOffset = 0; + const zoom = this.zoom + let leftOffset = 0 + let topOffset = 0 try { - style.fontSize = this._parseNumber(style.fontSize); - let fontSize = Math.ceil((style.fontSize || 14) * zoom); - this.ctx.setTextBaseline("top"); - this.ctx.font = `${style.fontWeight ? style.fontWeight : "normal"} ${fontSize}px ${ - style.fontFamily || "PingFang SC" - }`; - this.ctx.setFillStyle(style.color || "#454545"); - - let text = item.text || ""; - let textWidth = Math.floor(this.measureWidth(text, style.font || this.ctx.font)); - let lineHeight = this._getLineHeight(style); - let textHeight = Math.ceil(textWidth / (style.width || textWidth)) * lineHeight; - let width = Math.ceil((style.width || textWidth) * (!isWxml ? zoom : 1)); - let whiteSpace = style.whiteSpace || "wrap"; - let x = 0; - let y = 0; - - if (typeof style.padding === "string") { - style.padding = Util.transferPadding(style.padding); + style.fontSize = this._parseNumber(style.fontSize) + const fontSize = Math.ceil((style.fontSize || 14) * zoom) + this.ctx.setTextBaseline('top') + this.ctx.font = `${style.fontWeight ? style.fontWeight : 'normal'} ${fontSize}px ${ + style.fontFamily || 'PingFang SC' + }` + this.ctx.setFillStyle(style.color || '#454545') + + let text = item.text || '' + let textWidth = Math.floor(this.measureWidth(text, style.font || this.ctx.font)) + const lineHeight = this._getLineHeight(style) + const textHeight = Math.ceil(textWidth / (style.width || textWidth)) * lineHeight + let width = Math.ceil((style.width || textWidth) * (!isWxml ? zoom : 1)) + const whiteSpace = style.whiteSpace || 'wrap' + let x = 0 + let y = 0 + + if (typeof style.padding === 'string') { + style.padding = Util.transferPadding(style.padding) } - item.x = this._resetPositionX(item, style); - item.y = this._resetPositionY(item, style, textHeight); - this._drawBoxShadow(style.boxShadow); + item.x = this._resetPositionX(item, style) + item.y = this._resetPositionY(item, style, textHeight) + this._drawBoxShadow(style.boxShadow) if (style.background || style.border) { - this._drawTextBackgroud(item, style, textWidth, textHeight, isWxml); + this._drawTextBackgroud(item, style, textWidth, textHeight, isWxml) } // 行内文本 - if (type === "inline-text") { - width = item.maxWidth; + if (type === 'inline-text') { + width = item.maxWidth if (item.leftOffset + textWidth > width) { // 如果上一个行内元素换行了,这个元素要继续在后面补足一行 - let lineNum = Math.max(Math.floor(textWidth / width), 1); - let length = text.length; - let singleLength = Math.floor(length / lineNum); - let widthOffset = item.leftOffset ? item.leftOffset - item.originX : 0; + let lineNum = Math.max(Math.floor(textWidth / width), 1) + const length = text.length + const singleLength = Math.floor(length / lineNum) + const widthOffset = item.leftOffset ? item.leftOffset - item.originX : 0 let { endIndex: currentIndex, single, singleWidth, - } = this._getTextSingleLine(text, width, singleLength, 0, widthOffset); - x = this._resetTextPositionX(item, style, singleWidth); - y = this._resetTextPositionY(item, style); - this.ctx.fillText(single, x, y); - leftOffset = x + singleWidth; - topOffset = y; + } = this._getTextSingleLine(text, width, singleLength, 0, widthOffset) + x = this._resetTextPositionX(item, style, singleWidth) + y = this._resetTextPositionY(item, style) + this.ctx.fillText(single, x, y) + leftOffset = x + singleWidth + topOffset = y // 去除第一行补的内容,然后重置 - text = text.substring(currentIndex, text.length); - currentIndex = 0; - lineNum = Math.max(Math.floor(textWidth / width), 1); - textWidth = Math.floor(this.measureWidth(text, style.font || this.ctx.font)); - item.x = item.originX; // 还原换行后的x + text = text.substring(currentIndex, text.length) + currentIndex = 0 + lineNum = Math.max(Math.floor(textWidth / width), 1) + textWidth = Math.floor(this.measureWidth(text, style.font || this.ctx.font)) + item.x = item.originX // 还原换行后的x for (let i = 0; i < lineNum; i++) { - let { endIndex, single, singleWidth } = this._getTextSingleLine( + const { endIndex, single, singleWidth } = this._getTextSingleLine( text, width, singleLength, currentIndex, - ); - currentIndex = endIndex; + ) + currentIndex = endIndex if (single) { - x = this._resetTextPositionX(item, style, singleWidth, width); - y = this._resetTextPositionY(item, style, i + 1); - this.ctx.fillText(single, x, y); + x = this._resetTextPositionX(item, style, singleWidth, width) + y = this._resetTextPositionY(item, style, i + 1) + this.ctx.fillText(single, x, y) if (i === lineNum - 1) { - leftOffset = x + singleWidth; - topOffset = lineHeight * lineNum; + leftOffset = x + singleWidth + topOffset = lineHeight * lineNum } } } - let last = text.substring(currentIndex, length); - let lastWidth = this.measureWidth(last); + const last = text.substring(currentIndex, length) + const lastWidth = this.measureWidth(last) if (last) { - x = this._resetTextPositionX(item, style, lastWidth, width); - y = this._resetTextPositionY(item, style, lineNum + 1); - this.ctx.fillText(last, x, y); - leftOffset = x + lastWidth; - topOffset = lineHeight * (lineNum + 1); + x = this._resetTextPositionX(item, style, lastWidth, width) + y = this._resetTextPositionY(item, style, lineNum + 1) + this.ctx.fillText(last, x, y) + leftOffset = x + lastWidth + topOffset = lineHeight * (lineNum + 1) } - } else { - x = this._resetTextPositionX(item, style, textWidth, width); - y = this._resetTextPositionY(item, style); - this.ctx.fillText(item.text, x, y); - leftOffset = x + textWidth; - topOffset = lineHeight; + } + else { + x = this._resetTextPositionX(item, style, textWidth, width) + y = this._resetTextPositionY(item, style) + this.ctx.fillText(item.text, x, y) + leftOffset = x + textWidth + topOffset = lineHeight } - } else { + } + else { // block文本,如果文本长度超过宽度换行 - if (width && textWidth > width && whiteSpace !== "nowrap") { - let lineNum = Math.max(Math.floor(textWidth / width), 1); - let length = text.length; - let singleLength = Math.floor(length / lineNum); - let currentIndex = 0; + if (width && textWidth > width && whiteSpace !== 'nowrap') { + let lineNum = Math.max(Math.floor(textWidth / width), 1) + const length = text.length + const singleLength = Math.floor(length / lineNum) + let currentIndex = 0 // lineClamp参数限制最多行数 if (style.lineClamp && lineNum + 1 > style.lineClamp) { - lineNum = style.lineClamp - 1; + lineNum = style.lineClamp - 1 } for (let i = 0; i < lineNum; i++) { - let { endIndex, single, singleWidth } = this._getTextSingleLine( + const { endIndex, single, singleWidth } = this._getTextSingleLine( text, width, singleLength, currentIndex, - ); - currentIndex = endIndex; - x = this._resetTextPositionX(item, style, singleWidth, width); - y = this._resetTextPositionY(item, style, i); - this.ctx.fillText(single, x, y); + ) + currentIndex = endIndex + x = this._resetTextPositionX(item, style, singleWidth, width) + y = this._resetTextPositionY(item, style, i) + this.ctx.fillText(single, x, y) } // 换行后剩余的文字,超过一行则截断增加省略号 - let last = text.substring(currentIndex, length); - let lastWidth = this.measureWidth(last); + let last = text.substring(currentIndex, length) + let lastWidth = this.measureWidth(last) if (lastWidth > width) { - let { single, singleWidth } = this._getTextSingleLine(last, width, singleLength); - lastWidth = singleWidth; - last = single.substring(0, single.length - 1) + "..."; + const { single, singleWidth } = this._getTextSingleLine(last, width, singleLength) + lastWidth = singleWidth + last = `${single.substring(0, single.length - 1)}...` } - x = this._resetTextPositionX(item, style, lastWidth, width); - y = this._resetTextPositionY(item, style, lineNum); - this.ctx.fillText(last, x, y); - } else { - x = this._resetTextPositionX(item, style, textWidth, width); - y = this._resetTextPositionY(item, style); - this.ctx.fillText(item.text, x, y); + x = this._resetTextPositionX(item, style, lastWidth, width) + y = this._resetTextPositionY(item, style, lineNum) + this.ctx.fillText(last, x, y) + } + else { + x = this._resetTextPositionX(item, style, textWidth, width) + y = this._resetTextPositionY(item, style) + this.ctx.fillText(item.text, x, y) } } - this.ctx.draw(true); + this.ctx.draw(true) - this._updateProgress(item.progress); + this._updateProgress(item.progress) if (resolve) { - resolve(); - } else { + resolve() + } + else { return { leftOffset, topOffset, - }; + } } - } catch (e) { - reject && reject({ errcode: 1004, errmsg: "drawText error", e: e }); + } + catch (e) { + reject && reject({ errcode: 1004, errmsg: 'drawText error', e }) } } _drawTextBackgroud(item, style, textWidth, textHeight, isWxml) { - if (!style.width) return; - let zoom = isWxml ? 1 : this.zoom; - let width = style.width || textWidth; - let height = style.height || textHeight; - let rectStyle = { + if (!style.width) + return + const zoom = isWxml ? 1 : this.zoom + let width = style.width || textWidth + let height = style.height || textHeight + const rectStyle = { fill: style.background, border: style.border, - }; - style.padding = style.padding || [0, 0, 0, 0]; - width += (style.padding[1] || 0) + (style.padding[3] || 0); - height += (style.padding[0] || 0) + (style.padding[2] || 0); - width = width * zoom; - height = height * zoom; - this._drawRectToCanvas(item.x, item.y, width, height, rectStyle); + } + style.padding = style.padding || [0, 0, 0, 0] + width += (style.padding[1] || 0) + (style.padding[3] || 0) + height += (style.padding[0] || 0) + (style.padding[2] || 0) + width = width * zoom + height = height * zoom + this._drawRectToCanvas(item.x, item.y, width, height, rectStyle) } _drawCircle(item, style, resolve, reject, isImage, isWxml) { - let zoom = this.zoom; - let r = style.r; + const zoom = this.zoom + let r = style.r try { - item.x = this._resetPositionX(item, style); - item.y = this._resetPositionY(item, style); + item.x = this._resetPositionX(item, style) + item.y = this._resetPositionY(item, style) - let url; + let url if (isImage) { - let index = this._findPicIndex(item.url); + const index = this._findPicIndex(item.url) if (index > -1) { - url = this.allPic[index].local; - } else { - url = item.url; + url = this.allPic[index].local + } + else { + url = item.url } } if (!isWxml) { - r = r * zoom; + r = r * zoom } - this._drawCircleToCanvas(item.x, item.y, r, style, url); - - this._updateProgress(item.progress); - resolve && resolve(); - } catch (e) { - reject && - reject({ - errcode: isImage ? 1006 : 1005, - errmsg: isImage ? "drawCircleImage error" : "drawCircle error", - e, - }); + this._drawCircleToCanvas(item.x, item.y, r, style, url) + + this._updateProgress(item.progress) + resolve && resolve() + } + catch (e) { + reject + && reject({ + errcode: isImage ? 1006 : 1005, + errmsg: isImage ? 'drawCircleImage error' : 'drawCircle error', + e, + }) } } _drawCircleToCanvas(x, y, r, style, url) { - let { fill, border, boxShadow } = style; + const { fill, border, boxShadow } = style - this.ctx.save(); + this.ctx.save() this._drawBoxShadow(boxShadow, (res) => { // 真机上填充渐变色时,没有阴影,先画个相等大小的纯色矩形来实现阴影 - if ((fill && typeof fill !== "string") || (url && res.color)) { - this.ctx.setFillStyle(res.color || "#ffffff"); - this.ctx.beginPath(); - this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI); - this.ctx.closePath(); - this.ctx.fill(); + if ((fill && typeof fill !== 'string') || (url && res.color)) { + this.ctx.setFillStyle(res.color || '#ffffff') + this.ctx.beginPath() + this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI) + this.ctx.closePath() + this.ctx.fill() } - }); + }) if (url) { - this.ctx.save(); - this.ctx.beginPath(); - this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI); - this.ctx.clip(); - this.ctx.drawImage(url, x, y, r * 2, r * 2); - this.ctx.closePath(); - this.ctx.restore(); - } else { + this.ctx.save() + this.ctx.beginPath() + this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI) + this.ctx.clip() + this.ctx.drawImage(url, x, y, r * 2, r * 2) + this.ctx.closePath() + this.ctx.restore() + } + else { this._setFill(fill, () => { - this.ctx.beginPath(); - this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI); - this.ctx.closePath(); - this.ctx.fill(); - }); + this.ctx.beginPath() + this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI) + this.ctx.closePath() + this.ctx.fill() + }) } this._drawBorder(border, style, (border) => { - this.ctx.beginPath(); - this.ctx.arc(x + r, y + r, r + border.width / 2, 0, 2 * Math.PI); - this.ctx.stroke(); - this.ctx.closePath(); - }); - - this.ctx.draw(true); - this.ctx.restore(); + this.ctx.beginPath() + this.ctx.arc(x + r, y + r, r + border.width / 2, 0, 2 * Math.PI) + this.ctx.stroke() + this.ctx.closePath() + }) + + this.ctx.draw(true) + this.ctx.restore() } _drawLine(item, style, resolve, reject, isWxml) { - let zoom = this.zoom; + const zoom = this.zoom try { - let x1 = item.x * zoom + this.translateX; - let y1 = item.y * zoom + this.translateY; - let x2 = item.x2 * zoom + this.translateX; - let y2 = item.y2 * zoom + this.translateY; - this._drawLineToCanvas(x1, y1, x2, y2, style); - - this._updateProgress(item.progress); - resolve && resolve(); - } catch (e) { - reject && reject({ errcode: 1007, errmsg: "drawLine error", e }); + const x1 = item.x * zoom + this.translateX + const y1 = item.y * zoom + this.translateY + const x2 = item.x2 * zoom + this.translateX + const y2 = item.y2 * zoom + this.translateY + this._drawLineToCanvas(x1, y1, x2, y2, style) + + this._updateProgress(item.progress) + resolve && resolve() + } + catch (e) { + reject && reject({ errcode: 1007, errmsg: 'drawLine error', e }) } } _drawLineToCanvas(x1, y1, x2, y2, style) { - let { stroke, dash, boxShadow } = style; + const { stroke, dash, boxShadow } = style - this.ctx.save(); + this.ctx.save() if (stroke) { - this._setStroke(stroke); + this._setStroke(stroke) } - this._drawBoxShadow(boxShadow); + this._drawBoxShadow(boxShadow) if (dash) { - let dash = [style.dash[0] || 5, style.dash[1] || 5]; - let offset = style.dash[2] || 0; - this.ctx.setLineDash(dash, offset || 0); + const dash = [style.dash[0] || 5, style.dash[1] || 5] + const offset = style.dash[2] || 0 + this.ctx.setLineDash(dash, offset || 0) } - this.ctx.moveTo(x1, y1); - this.ctx.setLineWidth((style.width || 1) * this.zoom); - this.ctx.lineTo(x2, y2); - this.ctx.stroke(); - this.ctx.draw(true); - this.ctx.restore(); + this.ctx.moveTo(x1, y1) + this.ctx.setLineWidth((style.width || 1) * this.zoom) + this.ctx.lineTo(x2, y2) + this.ctx.stroke() + this.ctx.draw(true) + this.ctx.restore() } // 废弃,合并到_drawRect _drawImage(item, style, resolve, reject, isWxml) { - let zoom = this.zoom; + const zoom = this.zoom try { - item.x = this._resetPositionX(item, style); - item.y = this._resetPositionY(item, style); - item.x = item.x + (style.padding[3] || 0); - item.y = item.y + (style.padding[0] || 0); - - let index = this._findPicIndex(item.url); - let url = index > -1 ? this.allPic[index].local : item.url; - this._drawImageToCanvas(url, item.x, item.y, style.width * zoom, style.height * zoom, style); - - this._updateProgress(item.progress); - resolve && resolve(); - } catch (e) { - reject && reject({ errcode: 1012, errmsg: "drawRect error", e }); + item.x = this._resetPositionX(item, style) + item.y = this._resetPositionY(item, style) + item.x = item.x + (style.padding[3] || 0) + item.y = item.y + (style.padding[0] || 0) + + const index = this._findPicIndex(item.url) + const url = index > -1 ? this.allPic[index].local : item.url + this._drawImageToCanvas(url, item.x, item.y, style.width * zoom, style.height * zoom, style) + + this._updateProgress(item.progress) + resolve && resolve() + } + catch (e) { + reject && reject({ errcode: 1012, errmsg: 'drawRect error', e }) } } // 废弃,合并到_drawRect _drawImageToCanvas(url, x, y, width, height, style) { - let { fill, border, boxShadow } = style; - this.ctx.save(); + const { fill, border, boxShadow } = style + this.ctx.save() - this._drawBoxShadow(boxShadow); - this.ctx.drawImage(url, x, y, width, height); + this._drawBoxShadow(boxShadow) + this.ctx.drawImage(url, x, y, width, height) this._drawBorder(border, style, (border) => { - let fixBorder = border.width; - this.ctx.strokeRect(x - fixBorder / 2, y - fixBorder / 2, width + fixBorder, height + fixBorder); - }); - this.ctx.draw(true); - this.ctx.restore(); + const fixBorder = border.width + this.ctx.strokeRect(x - fixBorder / 2, y - fixBorder / 2, width + fixBorder, height + fixBorder) + }) + this.ctx.draw(true) + this.ctx.restore() } _drawWxml(item, style, resolve, reject) { - let self = this; - let all = []; + const self = this + let all = [] try { this._getWxml(item, style).then((results) => { // 上 -> 下 - let sorted = self._sortListByTop(results[0]); - let count = 0; - let progress = 0; + const sorted = self._sortListByTop(results[0]) + let count = 0 + let progress = 0 Object.keys(sorted).forEach((item) => { - count += sorted[item].length; - }); - progress = (this.distance * 3) / (count || 1); + count += sorted[item].length + }) + progress = (this.distance * 3) / (count || 1) - all = this._drawWxmlBlock(item, sorted, all, progress, results[1]); - all = this._drawWxmlInline(item, sorted, all, progress, results[1]); + all = this._drawWxmlBlock(item, sorted, all, progress, results[1]) + all = this._drawWxmlInline(item, sorted, all, progress, results[1]) Promise.all(all) .then((results) => { - resolve && resolve(); + resolve && resolve() }) .catch((e) => { - reject && reject(e); - }); - }); - } catch (e) { - reject && reject({ errcode: 1008, errmsg: "drawWxml error" }); + reject && reject(e) + }) + }) + } + catch (e) { + reject && reject({ errcode: 1008, errmsg: 'drawWxml error' }) } } _drawWxmlBlock(item, sorted, all, progress, results) { - let self = this; + const self = this // 用来限定位置范围,取相对位置 - let limitLeft = results ? results.left : 0; - let limitTop = results ? results.top : 0; + const limitLeft = results ? results.left : 0 + const limitTop = results ? results.top : 0 Object.keys(sorted).forEach((top, topIndex) => { // 左 -> 右 let list = sorted[top].sort((a, b) => { - return a.left - b.left; - }); + return a.left - b.left + }) - list = list.filter((sub) => sub.dataset.type && sub.dataset.type.indexOf("inline") === -1); + list = list.filter(sub => sub.dataset.type && !sub.dataset.type.includes('inline')) list.forEach((sub, index) => { all[index] = new Promise((resolve2, reject2) => { - sub = self._transferWxmlStyle(sub, item, limitLeft, limitTop); - sub.progress = progress; - let type = sub.dataset.type; + sub = self._transferWxmlStyle(sub, item, limitLeft, limitTop) + sub.progress = progress + const type = sub.dataset.type if (sub.dataset.delay) { setTimeout(() => { - drawWxmlItem(); - }, sub.dataset.delay); - } else { - drawWxmlItem(); + drawWxmlItem() + }, sub.dataset.delay) + } + else { + drawWxmlItem() } function drawWxmlItem() { - if (type === "text") { - self._drawWxmlText(sub, resolve2, reject2); - } else if (type === "image") { - self._drawWxmlImage(sub, resolve2, reject2); - } else if (type === "radius-image") { - self._drawWxmlCircleImage(sub, resolve2, reject2); - } else if (type === "background-image") { - self._drawWxmlBackgroundImage(sub, resolve2, reject2); + if (type === 'text') { + self._drawWxmlText(sub, resolve2, reject2) + } + else if (type === 'image') { + self._drawWxmlImage(sub, resolve2, reject2) + } + else if (type === 'radius-image') { + self._drawWxmlCircleImage(sub, resolve2, reject2) + } + else if (type === 'background-image') { + self._drawWxmlBackgroundImage(sub, resolve2, reject2) } } - }); - }); - }); + }) + }) + }) - return all; + return all } _drawWxmlInline(item, sorted, all, progress, results) { - let self = this; - let topOffset = 0; - let leftOffset = 0; - let lastTop = 0; - let limitLeft = results ? results.left : 0; - let limitTop = results ? results.top : 0; - let p = new Promise((resolve2, reject2) => { - let maxWidth = 0; - let minLeft = Infinity; - let maxRight = 0; + const self = this + let topOffset = 0 + let leftOffset = 0 + let lastTop = 0 + const limitLeft = results ? results.left : 0 + const limitTop = results ? results.top : 0 + const p = new Promise((resolve2, reject2) => { + let maxWidth = 0 + let minLeft = Infinity + let maxRight = 0 // 找出同一top下的最小left和最大right,得到最大的宽度,用于换行 Object.keys(sorted).forEach((top) => { - let inlineList = sorted[top].filter((sub) => sub.dataset.type && sub.dataset.type.indexOf("inline") > -1); + const inlineList = sorted[top].filter(sub => sub.dataset.type && sub.dataset.type.includes('inline')) inlineList.forEach((sub) => { if (sub.left < minLeft) { - minLeft = sub.left; + minLeft = sub.left } if (sub.right > maxRight) { - maxRight = sub.right; + maxRight = sub.right } - }); - }); - maxWidth = Math.ceil(maxRight - minLeft || self.width); + }) + }) + maxWidth = Math.ceil(maxRight - minLeft || self.width) Object.keys(sorted).forEach((top, topIndex) => { // 左 -> 右 - let list = sorted[top].sort((a, b) => { - return a.left - b.left; - }); + const list = sorted[top].sort((a, b) => { + return a.left - b.left + }) // 换行的行内元素left放到后面,version2.0.6后无法获取高度,改用bottom值来判断是否换行了 - let position = -1; + let position = -1 for (let i = 0, len = list.length; i < len; i++) { if (list[i] && list[i + 1]) { if (list[i].bottom > list[i + 1].bottom) { - position = i; - break; + position = i + break } } } if (position > -1) { - list.push(list.splice(position, 1)[0]); + list.push(list.splice(position, 1)[0]) } - let inlineList = list.filter((sub) => sub.dataset.type && sub.dataset.type.indexOf("inline") > -1); - let originLeft = inlineList[0] ? inlineList[0].left : 0; + const inlineList = list.filter(sub => sub.dataset.type && sub.dataset.type.includes('inline')) + const originLeft = inlineList[0] ? inlineList[0].left : 0 // 换行后和top不相等时,认为是换行了,要清除左边距;当左偏移量大于最大宽度时,也要清除左边距; 当左偏移小于左边距时,也要清除 if ( - Math.abs(topOffset + lastTop - top) > 2 || - leftOffset - originLeft - limitLeft >= maxWidth || - leftOffset <= originLeft - limitLeft - 2 + Math.abs(topOffset + lastTop - top) > 2 + || leftOffset - originLeft - limitLeft >= maxWidth + || leftOffset <= originLeft - limitLeft - 2 ) { - leftOffset = 0; + leftOffset = 0 } - lastTop = +top; - topOffset = 0; + lastTop = +top + topOffset = 0 inlineList.forEach((sub, index) => { - sub = self._transferWxmlStyle(sub, item, limitLeft, limitTop); - sub.progress = progress; - let type = sub.dataset.type; - if (type === "inline-text") { - let drawRes = self._drawWxmlInlineText(sub, leftOffset, maxWidth); - leftOffset = drawRes.leftOffset; - topOffset = drawRes.topOffset; - } else if (type === "inline-image") { - let drawRes = self._drawWxmlImage(sub) || {}; - leftOffset = drawRes.leftOffset || 0; - topOffset = drawRes.topOffset || 0; + sub = self._transferWxmlStyle(sub, item, limitLeft, limitTop) + sub.progress = progress + const type = sub.dataset.type + if (type === 'inline-text') { + const drawRes = self._drawWxmlInlineText(sub, leftOffset, maxWidth) + leftOffset = drawRes.leftOffset + topOffset = drawRes.topOffset + } + else if (type === 'inline-image') { + const drawRes = self._drawWxmlImage(sub) || {} + leftOffset = drawRes.leftOffset || 0 + topOffset = drawRes.topOffset || 0 } - }); - }); - resolve2(); - }); + }) + }) + resolve2() + }) - all.push(p); - return all; + all.push(p) + return all } _drawWxmlInlineText(sub, leftOffset = 0, maxWidth) { - let text = sub.dataset.text || ""; + let text = sub.dataset.text || '' if (sub.dataset.maxlength && text.length > sub.dataset.maxlength) { - text = text.substring(0, sub.dataset.maxlength) + "..."; + text = `${text.substring(0, sub.dataset.maxlength)}...` } - let textData = { + const textData = { text, originX: sub.left, - x: leftOffset ? leftOffset : sub.left, + x: leftOffset || sub.left, y: sub.top, progress: sub.progress, - leftOffset: leftOffset, - maxWidth: maxWidth, // 行内元素的最大宽度,取决于limit的宽度 - }; - - if (sub.backgroundColor !== "rgba(0, 0, 0, 0)") { - sub.background = sub.backgroundColor; - } else { - sub.background = "rgba(0, 0, 0, 0)"; + leftOffset, + maxWidth, // 行内元素的最大宽度,取决于limit的宽度 + } + + if (sub.backgroundColor !== 'rgba(0, 0, 0, 0)') { + sub.background = sub.backgroundColor + } + else { + sub.background = 'rgba(0, 0, 0, 0)' } if (sub.dataset.background) { - sub.background = sub.dataset.background; + sub.background = sub.dataset.background } - let res = this._drawText(textData, sub, null, null, "inline-text", "wxml"); + const res = this._drawText(textData, sub, null, null, 'inline-text', 'wxml') - return res; + return res } _drawWxmlText(sub, resolve, reject) { - let text = sub.dataset.text || ""; + let text = sub.dataset.text || '' if (sub.dataset.maxlength && text.length > sub.dataset.maxlength) { - text = text.substring(0, sub.dataset.maxlength) + "..."; + text = `${text.substring(0, sub.dataset.maxlength)}...` } - let textData = { + const textData = { text, x: sub.left, y: sub.top, progress: sub.progress, - }; - if (sub.backgroundColor !== "rgba(0, 0, 0, 0)") { - sub.background = sub.backgroundColor; - } else { - sub.background = "rgba(0, 0, 0, 0)"; + } + if (sub.backgroundColor !== 'rgba(0, 0, 0, 0)') { + sub.background = sub.backgroundColor + } + else { + sub.background = 'rgba(0, 0, 0, 0)' } if (sub.dataset.background) { - sub.background = sub.dataset.background; + sub.background = sub.dataset.background } - this._drawText(textData, sub, resolve, reject, "text", "wxml"); + this._drawText(textData, sub, resolve, reject, 'text', 'wxml') } _drawWxmlImage(sub, resolve, reject) { - let imageData = { + const imageData = { url: sub.dataset.url, x: sub.left, y: sub.top, progress: sub.progress, - }; + } - let res = this._drawRect(imageData, sub, resolve, reject, "image", "inline-wxml"); + const res = this._drawRect(imageData, sub, resolve, reject, 'image', 'inline-wxml') - return res; + return res } _drawWxmlCircleImage(sub, resolve, reject) { - let imageData = { + const imageData = { url: sub.dataset.url, x: sub.left, y: sub.top, progress: sub.progress, - }; - sub.r = sub.width / 2; + } + sub.r = sub.width / 2 - this._drawCircle(imageData, sub, resolve, reject, true, "wxml"); + this._drawCircle(imageData, sub, resolve, reject, true, 'wxml') } _drawWxmlBackgroundImage(sub, resolve, reject) { - let url = sub.dataset.url; - let index = this._findPicIndex(url); - url = index > -1 ? this.allPic[index].local : url; - let size = sub.backgroundSize.replace(/px/g, "").split(" "); + let url = sub.dataset.url + const index = this._findPicIndex(url) + url = index > -1 ? this.allPic[index].local : url + const size = sub.backgroundSize.replace(/px/g, '').split(' ') - let imageData = { - url: url, + const imageData = { + url, x: sub.left, y: sub.top, progress: sub.progress, - }; + } - this._drawRect(imageData, sub, resolve, reject, "image", "wxml"); + this._drawRect(imageData, sub, resolve, reject, 'image', 'wxml') } _getWxml(item, style) { - let self = this; - let query; + const self = this + let query // if (this.obj) { // query = wx.createSelectorQuery().in(this.obj); // } else { // query = wx.createSelectorQuery(); // } if (this.object) { - query = wx.createSelectorQuery().in(this.object); - } else { - query = wx.createSelectorQuery(); + query = wx.createSelectorQuery().in(this.object) + } + else { + query = wx.createSelectorQuery() } - let p1 = new Promise((resolve, reject) => { + const p1 = new Promise((resolve, reject) => { // 会触发两次,要限制 - let count = 0; + let count = 0 query .selectAll(`${item.class}`) .fields( @@ -1183,56 +1227,56 @@ module.exports = (function () { size: true, rect: true, computedStyle: [ - "width", - "height", - "font", - "fontSize", - "fontFamily", - "fontWeight", - "fontStyle", - "textAlign", - "color", - "lineHeight", - "border", - "borderColor", - "borderStyle", - "borderWidth", - "verticalAlign", - "boxShadow", - "background", - "backgroundColor", - "backgroundImage", - "backgroundPosition", - "backgroundSize", - "paddingLeft", - "paddingTop", - "paddingRight", - "paddingBottom", + 'width', + 'height', + 'font', + 'fontSize', + 'fontFamily', + 'fontWeight', + 'fontStyle', + 'textAlign', + 'color', + 'lineHeight', + 'border', + 'borderColor', + 'borderStyle', + 'borderWidth', + 'verticalAlign', + 'boxShadow', + 'background', + 'backgroundColor', + 'backgroundImage', + 'backgroundPosition', + 'backgroundSize', + 'paddingLeft', + 'paddingTop', + 'paddingRight', + 'paddingBottom', ], }, (res) => { if (count++ === 0) { - let formated = self._formatImage(res); - let list = formated.list; - res = formated.res; + const formated = self._formatImage(res) + const list = formated.list + res = formated.res self ._preloadImage(list) .then((result) => { - resolve(res); + resolve(res) }) .catch((res) => { - reject && reject({ errcode: 1009, errmsg: "drawWxml preLoadImage error" }); - }); + reject && reject({ errcode: 1009, errmsg: 'drawWxml preLoadImage error' }) + }) } }, ) - .exec(); - }); + .exec() + }) - let p2 = new Promise((resolve, reject) => { + const p2 = new Promise((resolve, reject) => { if (!item.limit) { - resolve({ top: 0, width: self.width / self.zoom }); + resolve({ top: 0, width: self.width / self.zoom }) } query @@ -1244,113 +1288,119 @@ module.exports = (function () { rect: true, }, (res) => { - resolve(res); + resolve(res) }, ) - .exec(); - }); + .exec() + }) - return Promise.all([p1, p2]); + return Promise.all([p1, p2]) } _getLineHeight(style) { - let zoom = this.zoom; + let zoom = this.zoom if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } - let lineHeight; + let lineHeight if (!isNaN(style.lineHeight) && style.lineHeight > style.fontSize) { - lineHeight = style.lineHeight; - } else { - style.lineHeight = (style.lineHeight || "") + ""; - lineHeight = +style.lineHeight.replace("px", ""); - lineHeight = lineHeight ? lineHeight : (style.fontSize || 14) * 1.2; + lineHeight = style.lineHeight + } + else { + style.lineHeight = `${style.lineHeight || ''}` + lineHeight = +style.lineHeight.replace('px', '') + lineHeight = lineHeight || (style.fontSize || 14) * 1.2 } - return lineHeight * zoom; + return lineHeight * zoom } _formatImage(res = []) { - let list = []; + const list = [] res.forEach((item, index) => { - let dataset = item.dataset; - let uid = Util.getUid(); - let filename = `${wx.env.USER_DATA_PATH}/${uid}.png`; - if ((dataset.type === "image" || dataset.type === "radius-image") && dataset.url) { - let sub = { + const dataset = item.dataset + const uid = Util.getUid() + const filename = `${wx.env.USER_DATA_PATH}/${uid}.png` + if ((dataset.type === 'image' || dataset.type === 'radius-image') && dataset.url) { + const sub = { url: dataset.base64 ? filename : dataset.url, isBase64: dataset.base64 ? dataset.url : false, - }; + } - res[index].dataset = Object.assign(res[index].dataset, sub); - list.push(sub); - } else if (dataset.type === "background-image" && item.backgroundImage.indexOf("url") > -1) { - let url = item.backgroundImage.replace(/url\((\"|\')?/, "").replace(/(\"|\')?\)$/, ""); - let sub = { + res[index].dataset = Object.assign(res[index].dataset, sub) + list.push(sub) + } + else if (dataset.type === 'background-image' && item.backgroundImage.includes('url')) { + const url = item.backgroundImage.replace(/url\(("|')?/, '').replace(/("|')?\)$/, '') + const sub = { url: dataset.base64 ? filename : url, isBase64: dataset.base64 ? url : false, - }; - res[index].dataset = Object.assign(res[index].dataset, sub); - list.push(sub); + } + res[index].dataset = Object.assign(res[index].dataset, sub) + list.push(sub) } - }); + }) - return { list, res }; + return { list, res } } _updateProgress(distance) { - this.progressPercent += distance; - this.progress(this.progressPercent); + this.progressPercent += distance + this.progress(this.progressPercent) } _sortListByTop(list = []) { - let sorted = {}; + const sorted = {} // 粗略地认为2px相差的元素在同一行 list.forEach((item, index) => { - let top = item.top; + let top = item.top if (!sorted[top]) { if (sorted[top - 2]) { - top = top - 2; - } else if (sorted[top - 1]) { - top = top - 1; - } else if (sorted[top + 1]) { - top = top + 1; - } else if (sorted[top + 2]) { - top = top + 2; - } else { - sorted[top] = []; + top = top - 2 + } + else if (sorted[top - 1]) { + top = top - 1 + } + else if (sorted[top + 1]) { + top = top + 1 + } + else if (sorted[top + 2]) { + top = top + 2 + } + else { + sorted[top] = [] } } - sorted[top].push(item); - }); + sorted[top].push(item) + }) - return sorted; + return sorted } _parseNumber(number) { - return isNaN(number) ? +(number || "").replace("px", "") : number; + return isNaN(number) ? +(number || '').replace('px', '') : number } _transferWxmlStyle(sub, item, limitLeft, limitTop) { - let leftFix = +sub.dataset.left || 0; - let topFix = +sub.dataset.top || 0; + const leftFix = +sub.dataset.left || 0 + const topFix = +sub.dataset.top || 0 - sub.width = this._parseNumber(sub.width); - sub.height = this._parseNumber(sub.height); - sub.left = this._parseNumber(sub.left) - limitLeft + (leftFix + (item.x || 0)) * this.zoom; - sub.top = this._parseNumber(sub.top) - limitTop + (topFix + (item.y || 0)) * this.zoom; + sub.width = this._parseNumber(sub.width) + sub.height = this._parseNumber(sub.height) + sub.left = this._parseNumber(sub.left) - limitLeft + (leftFix + (item.x || 0)) * this.zoom + sub.top = this._parseNumber(sub.top) - limitTop + (topFix + (item.y || 0)) * this.zoom - let padding = sub.dataset.padding || "0 0 0 0"; - if (typeof padding === "string") { - padding = Util.transferPadding(padding); + let padding = sub.dataset.padding || '0 0 0 0' + if (typeof padding === 'string') { + padding = Util.transferPadding(padding) } - let paddingTop = Number(sub.paddingTop.replace("px", "")) + Number(padding[0]); - let paddingRight = Number(sub.paddingRight.replace("px", "")) + Number(padding[1]); - let paddingBottom = Number(sub.paddingBottom.replace("px", "")) + Number(padding[2]); - let paddingLeft = Number(sub.paddingLeft.replace("px", "")) + Number(padding[3]); - sub.padding = [paddingTop, paddingRight, paddingBottom, paddingLeft]; + const paddingTop = Number(sub.paddingTop.replace('px', '')) + Number(padding[0]) + const paddingRight = Number(sub.paddingRight.replace('px', '')) + Number(padding[1]) + const paddingBottom = Number(sub.paddingBottom.replace('px', '')) + Number(padding[2]) + const paddingLeft = Number(sub.paddingLeft.replace('px', '')) + Number(padding[3]) + sub.padding = [paddingTop, paddingRight, paddingBottom, paddingLeft] - return sub; + return sub } /** @@ -1359,25 +1409,26 @@ module.exports = (function () { * @param {*} style */ _resetPositionX(item, style) { - let zoom = this.zoom; - let x = 0; + let zoom = this.zoom + let x = 0 if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } // 通过wxml获取的不需要重置坐标 if (item.x < 0 && item.type) { - x = this.width + item.x * zoom - style.width * zoom; - } else { - x = item.x * zoom; + x = this.width + item.x * zoom - style.width * zoom + } + else { + x = item.x * zoom } - if (parseInt(style.borderWidth)) { - x += parseInt(style.borderWidth); + if (Number.parseInt(style.borderWidth)) { + x += Number.parseInt(style.borderWidth) } - return x + this.translateX; + return x + this.translateX } /** @@ -1386,24 +1437,25 @@ module.exports = (function () { * @param {*} style */ _resetPositionY(item, style, textHeight) { - let zoom = this.zoom; - let y = 0; + let zoom = this.zoom + let y = 0 if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } if (item.y < 0) { - y = this.height + item.y * zoom - (textHeight ? textHeight : style.height * zoom); - } else { - y = item.y * zoom; + y = this.height + item.y * zoom - (textHeight || style.height * zoom) + } + else { + y = item.y * zoom } - if (parseInt(style.borderWidth)) { - y += parseInt(style.borderWidth); + if (Number.parseInt(style.borderWidth)) { + y += Number.parseInt(style.borderWidth) } - return y + this.translateY; + return y + this.translateY } /** @@ -1413,17 +1465,18 @@ module.exports = (function () { * @param {*} textWidth */ _resetTextPositionX(item, style, textWidth, width) { - let textAlign = style.textAlign || "left"; - let x = item.x; - if (textAlign === "center") { - x = (width - textWidth) / 2 + item.x; - } else if (textAlign === "right") { - x = width - textWidth + item.x; + const textAlign = style.textAlign || 'left' + let x = item.x + if (textAlign === 'center') { + x = (width - textWidth) / 2 + item.x + } + else if (textAlign === 'right') { + x = width - textWidth + item.x } - let left = style.padding ? style.padding[3] || 0 : 0; + const left = style.padding ? style.padding[3] || 0 : 0 - return x + left + this.translateX; + return x + left + this.translateX } /** @@ -1433,21 +1486,21 @@ module.exports = (function () { * @param {*} textWidth */ _resetTextPositionY(item, style, lineNum = 0) { - let zoom = this.zoom; + let zoom = this.zoom if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } - let lineHeight = this._getLineHeight(style); - let fontSize = Math.ceil((style.fontSize || 14) * zoom); + const lineHeight = this._getLineHeight(style) + const fontSize = Math.ceil((style.fontSize || 14) * zoom) - let blockLineHeightFix = - ((style.dataset && style.dataset.type) || "").indexOf("inline") > -1 ? 0 : (lineHeight - fontSize) / 2; + const blockLineHeightFix + = ((style.dataset && style.dataset.type) || '').includes('inline') ? 0 : (lineHeight - fontSize) / 2 - let top = style.padding ? style.padding[0] || 0 : 0; + const top = style.padding ? style.padding[0] || 0 : 0 // y + lineheight偏移 + 行数 + paddingTop + 整体画布位移 - return item.y + blockLineHeightFix + lineNum * lineHeight + top + this.translateY; + return item.y + blockLineHeightFix + lineNum * lineHeight + top + this.translateY } /** @@ -1459,195 +1512,203 @@ module.exports = (function () { * @param {*} widthOffset */ _getTextSingleLine(text, width, singleLength, currentIndex = 0, widthOffset = 0) { - let offset = 0; - let endIndex = currentIndex + singleLength + offset; - let single = text.substring(currentIndex, endIndex); - let singleWidth = this.measureWidth(single); + let offset = 0 + let endIndex = currentIndex + singleLength + offset + let single = text.substring(currentIndex, endIndex) + let singleWidth = this.measureWidth(single) while (Math.round(widthOffset + singleWidth) > width) { - offset--; - endIndex = currentIndex + singleLength + offset; - single = text.substring(currentIndex, endIndex); - singleWidth = this.measureWidth(single); + offset-- + endIndex = currentIndex + singleLength + offset + single = text.substring(currentIndex, endIndex) + singleWidth = this.measureWidth(single) } return { endIndex, single, singleWidth, - }; + } } _drawBorder(border, style, callback) { - let zoom = this.zoom; + let zoom = this.zoom if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } - border = Util.transferBorder(border); + border = Util.transferBorder(border) if (border && border.width) { // 空白阴影,清空掉边框的阴影 - this._drawBoxShadow(); + this._drawBoxShadow() if (border) { - this.ctx.setLineWidth(border.width * zoom); + this.ctx.setLineWidth(border.width * zoom) - if (border.style === "dashed") { - let dash = style.dash || [5, 5, 0]; - let offset = dash[2] || 0; - let array = [dash[0] || 5, dash[1] || 5]; - this.ctx.setLineDash(array, offset); + if (border.style === 'dashed') { + const dash = style.dash || [5, 5, 0] + const offset = dash[2] || 0 + const array = [dash[0] || 5, dash[1] || 5] + this.ctx.setLineDash(array, offset) } - this.ctx.setStrokeStyle(border.color); + this.ctx.setStrokeStyle(border.color) } - callback && callback(border); + callback && callback(border) } } _drawBoxShadow(boxShadow, callback) { - boxShadow = Util.transferBoxShadow(boxShadow); + boxShadow = Util.transferBoxShadow(boxShadow) if (boxShadow) { - this.ctx.setShadow(boxShadow.offsetX, boxShadow.offsetY, boxShadow.blur, boxShadow.color); - } else { - this.ctx.setShadow(0, 0, 0, "#ffffff"); + this.ctx.setShadow(boxShadow.offsetX, boxShadow.offsetY, boxShadow.blur, boxShadow.color) + } + else { + this.ctx.setShadow(0, 0, 0, '#ffffff') } - callback && callback(boxShadow || {}); + callback && callback(boxShadow || {}) } _setFill(fill, callback) { if (fill) { - if (typeof fill === "string") { - this.ctx.setFillStyle(fill); - } else { - let line = fill.line; - let color = fill.color; - let grd = this.ctx.createLinearGradient(line[0], line[1], line[2], line[3]); - grd.addColorStop(0, color[0]); - grd.addColorStop(1, color[1]); - this.ctx.setFillStyle(grd); + if (typeof fill === 'string') { + this.ctx.setFillStyle(fill) + } + else { + const line = fill.line + const color = fill.color + const grd = this.ctx.createLinearGradient(line[0], line[1], line[2], line[3]) + grd.addColorStop(0, color[0]) + grd.addColorStop(1, color[1]) + this.ctx.setFillStyle(grd) } - callback && callback(); + callback && callback() } } _setStroke(stroke, callback) { if (stroke) { - if (typeof stroke === "string") { - this.ctx.setStrokeStyle(stroke); - } else { - let line = stroke.line; - let color = stroke.color; - let grd = this.ctx.createLinearGradient(line[0], line[1], line[2], line[3]); - grd.addColorStop(0, color[0]); - grd.addColorStop(1, color[1]); - this.ctx.setStrokeStyle(grd); + if (typeof stroke === 'string') { + this.ctx.setStrokeStyle(stroke) + } + else { + const line = stroke.line + const color = stroke.color + const grd = this.ctx.createLinearGradient(line[0], line[1], line[2], line[3]) + grd.addColorStop(0, color[0]) + grd.addColorStop(1, color[1]) + this.ctx.setStrokeStyle(grd) } - callback && callback(); + callback && callback() } } } - if (!exports.__esModule) Object.defineProperty(exports, "__esModule", { value: true }); - exports.default = Wxml2Canvas; + if (!exports.__esModule) + Object.defineProperty(exports, '__esModule', { value: true }) + exports.default = Wxml2Canvas }, - function (modId) { - var map = { "./util": 1685064731948 }; - return __REQUIRE__(map[modId], modId); + (modId) => { + const map = { './util': 1685064731948 } + return __REQUIRE__(map[modId], modId) }, - ); + ) __DEFINE__( 1685064731948, - function (require, module, exports) { + (require, module, exports) => { /** * 获取字符的长度,full为true时,一个汉字算两个长度 - * @param {String} str - * @param {Boolean} full + * @param {string} str + * @param {boolean} full */ function getTextLength(str, full) { - let len = 0; + let len = 0 for (let i = 0; i < str.length; i++) { - let c = str.charCodeAt(i); - //单字节加1 - if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) { - len++; - } else { - len += full ? 2 : 1; + const c = str.charCodeAt(i) + // 单字节加1 + if ((c >= 0x0001 && c <= 0x007E) || (c >= 0xFF60 && c <= 0xFF9F)) { + len++ + } + else { + len += full ? 2 : 1 } } - return len; + return len } /** * rgba(255, 255, 255, 1) => #ffffff - * @param {String} color + * @param {string} color */ - function transferColor(color = "") { - let res = "#"; - color = color.replace(/^rgba?\(/, "").replace(/\)$/, ""); - color = color.split(", "); + function transferColor(color = '') { + let res = '#' + color = color.replace(/^rgba?\(/, '').replace(/\)$/, '') + color = color.split(', ') - color.length > 3 ? (color.length = 3) : ""; + color.length > 3 ? (color.length = 3) : '' for (let item of color) { - item = parseInt(item || 0); + item = Number.parseInt(item || 0) if (item < 10) { - res += "0" + item; - } else { - res += item.toString(16); + res += `0${item}` + } + else { + res += item.toString(16) } } - return res; + return res } - function transferBorder(border = "") { - let res = border.match(/(\w+)px\s(\w+)\s(.*)/); - let obj = {}; + function transferBorder(border = '') { + const res = border.match(/(\w+)px\s(\w+)\s(.*)/) + let obj = {} if (res) { obj = { width: +res[1], style: res[2], color: res[3], - }; + } } - return res ? obj : null; + return res ? obj : null } /** * 内边距,依次为上右下左 * @param {*} padding */ - function transferPadding(padding = "0 0 0 0") { - padding = padding.split(" "); + function transferPadding(padding = '0 0 0 0') { + padding = padding.split(' ') for (let i = 0, len = padding.length; i < len; i++) { - padding[i] = +padding[i].replace("px", ""); + padding[i] = +padding[i].replace('px', '') } - return padding; + return padding } /** * type1: 0, 25, 17, rgba(0, 0, 0, 0.3) * type2: rgba(0, 0, 0, 0.3) 0px 25px 17px 0px => (0, 25, 17, rgba(0, 0, 0, 0.3)) * @param {*} shadow */ - function transferBoxShadow(shadow = "", type) { - if (!shadow || shadow === "none") return; - let color; - let split; + function transferBoxShadow(shadow = '', type) { + if (!shadow || shadow === 'none') + return + let color + let split - split = shadow.match(/(\w+)\s(\w+)\s(\w+)\s(rgb.*)/); + split = shadow.match(/(\w+)\s(\w+)\s(\w+)\s(rgb.*)/) if (split) { - split.shift(); - shadow = split; - color = split[3] || "#ffffff"; - } else { - split = shadow.split(") "); - color = split[0] + ")"; - shadow = split[1].split("px "); + split.shift() + shadow = split + color = split[3] || '#ffffff' + } + else { + split = shadow.split(') ') + color = `${split[0]})` + shadow = split[1].split('px ') } return { @@ -1655,23 +1716,24 @@ module.exports = (function () { offsetY: +shadow[1] || 0, blur: +shadow[2] || 0, color, - }; + } } function getUid(prefix) { - prefix = prefix || ""; + prefix = prefix || '' return ( - prefix + - "xxyxxyxx".replace(/[xy]/g, (c) => { - let r = (Math.random() * 16) | 0; - let v = c === "x" ? r : (r & 0x3) | 0x8; - return v.toString(16); + prefix + + 'xxyxxyxx'.replace(/[xy]/g, (c) => { + const r = (Math.random() * 16) | 0 + const v = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString(16) }) - ); + ) } - if (!exports.__esModule) Object.defineProperty(exports, "__esModule", { value: true }); + if (!exports.__esModule) + Object.defineProperty(exports, '__esModule', { value: true }) exports.default = { getTextLength, transferBorder, @@ -1679,14 +1741,14 @@ module.exports = (function () { transferPadding, transferBoxShadow, getUid, - }; + } }, - function (modId) { - var map = {}; - return __REQUIRE__(map[modId], modId); + (modId) => { + const map = {} + return __REQUIRE__(map[modId], modId) }, - ); - return __REQUIRE__(1685064731946); -})(); -//miniprogram-npm-outsideDeps=[] -//# sourceMappingURL=index.js.map + ) + return __REQUIRE__(1685064731946) +})() +// miniprogram-npm-outsideDeps=[] +// # sourceMappingURL=index.js.map diff --git a/src/components/customTable/README.md b/src/components/customTable/README.md index 22a0fca..fa8bde5 100644 --- a/src/components/customTable/README.md +++ b/src/components/customTable/README.md @@ -28,28 +28,28 @@ const data = { }, elements: [ { - id: 'circle-name', - desc: '圈名称', - type: 1, - text: '治疗讨论', - font: '宋体', + 'id': 'circle-name', + 'desc': '圈名称', + 'type': 1, + 'text': '治疗讨论', + 'font': '宋体', 'font-size': '42', - color: '#FFFFFF', + 'color': '#FFFFFF', 'single-line': true, - halign: 'center', - top: '106', + 'halign': 'center', + 'top': '106', }, { - id: 'master-name', - desc: '专家名称', - type: 1, - text: '健康小贴士', - font: '宋体', + 'id': 'master-name', + 'desc': '专家名称', + 'type': 1, + 'text': '健康小贴士', + 'font': '宋体', 'font-size': '38', - color: '#FFFFFF', + 'color': '#FFFFFF', 'single-line': true, - halign: 'center', - top: '237', + 'halign': 'center', + 'top': '237', }, { id: 'master-avatar', @@ -64,72 +64,72 @@ const data = { top: '328', }, { - id: 'note-content', - desc: '动态内容', - type: 1, - text: '11月5日上海组织进口博览会CIIE大会,邀请大家来我们的展馆现场交流。', - font: '宋体', + 'id': 'note-content', + 'desc': '动态内容', + 'type': 1, + 'text': '11月5日上海组织进口博览会CIIE大会,邀请大家来我们的展馆现场交流。', + 'font': '宋体', 'font-size': '45', - color: '#18191A', - width: '630', - height: '348', - left: '60', - top: '495', + 'color': '#18191A', + 'width': '630', + 'height': '348', + 'left': '60', + 'top': '495', }, { - id: 'note-title', - desc: '长文标题', - type: 1, - text: '', - font: '宋体', + 'id': 'note-title', + 'desc': '长文标题', + 'type': 1, + 'text': '', + 'font': '宋体', 'font-size': '42', - color: '#18191A', - width: '659', - height: '116', - left: '46', - top: '495', + 'color': '#18191A', + 'width': '659', + 'height': '116', + 'left': '46', + 'top': '495', 'font-weight': 'bold', }, { - id: 'note-summary', - desc: '长文摘要 ', - type: 1, - text: '', - font: '宋体', + 'id': 'note-summary', + 'desc': '长文摘要 ', + 'type': 1, + 'text': '', + 'font': '宋体', 'font-size': '42', - color: '#18191A', - width: '672', - height: '232', - left: '39', - top: '646', + 'color': '#18191A', + 'width': '672', + 'height': '232', + 'left': '39', + 'top': '646', }, { - id: 'note-more', - desc: '还有', - type: 1, - text: '还有3条精彩附件>', - font: '宋体', + 'id': 'note-more', + 'desc': '还有', + 'type': 1, + 'text': '还有3条精彩附件>', + 'font': '宋体', 'font-size': '31', - color: '#666666', + 'color': '#666666', 'single-line': true, - width: '292', - height: '46', - left: '60', - top: '1024', + 'width': '292', + 'height': '46', + 'left': '60', + 'top': '1024', }, { - id: 'scanText', - desc: '扫描二维码查看详情', - type: 1, - text: '扫描二维码查看详情', - font: '宋体', + 'id': 'scanText', + 'desc': '扫描二维码查看详情', + 'type': 1, + 'text': '扫描二维码查看详情', + 'font': '宋体', 'font-size': '31', - color: '#666666', + 'color': '#666666', 'single-line': true, - width: '279', - height: '43', - left: '60', - top: '1087', + 'width': '279', + 'height': '43', + 'left': '60', + 'top': '1087', }, { id: 'note-qrcode', @@ -143,16 +143,16 @@ const data = { top: '1012', }, { - id: 'brand', - desc: 'brand×华秉科技', - type: 1, - text: '做企业数字化转型的亲密伙伴×华秉科技', - font: '宋体', + 'id': 'brand', + 'desc': 'brand×华秉科技', + 'type': 1, + 'text': '做企业数字化转型的亲密伙伴×华秉科技', + 'font': '宋体', 'font-size': '24', - color: '#B2B3B4', + 'color': '#B2B3B4', 'single-line': true, - halign: 'center', - top: '1192', + 'halign': 'center', + 'top': '1192', }, ], }, diff --git a/src/components/customTable/index.js b/src/components/customTable/index.js index 1246bab..3f30680 100644 --- a/src/components/customTable/index.js +++ b/src/components/customTable/index.js @@ -1,5 +1,6 @@ -const app = getApp(); -import Wxml2Canvas from "./wxml2canvas/index.js"; // 根据具体路径修改,node_modules会被忽略 +import Wxml2Canvas from './wxml2canvas/index.js' + +const app = getApp() // 根据具体路径修改,node_modules会被忽略 Component({ properties: { @@ -7,193 +8,193 @@ Component({ type: Object, observer(newVal, _olVal) { if (Object.keys(newVal).length > 0) { - this.drawImage1(); + this.drawImage1() } }, }, }, data: { imageUrl: app.globalData.imageUrl, - imgUrl: "", - width: "626", - height: "980", - imgheight: "", - bgImg: "", + imgUrl: '', + width: '626', + height: '980', + imgheight: '', + bgImg: '', elementsMp: [], tableData: [ { - title: "说话", - key: "TalkingScore", + title: '说话', + key: 'TalkingScore', list: [ { - id: "1", - title: "正常", + id: '1', + title: '正常', }, { - id: "2", - title: "间或有点含糊或有鼻音", + id: '2', + title: '间或有点含糊或有鼻音', }, { - id: "3", - title: "经常含糊不清或者有鼻音,但是别人还能听懂", + id: '3', + title: '经常含糊不清或者有鼻音,但是别人还能听懂', }, { - id: "4", - title: "别人听不太懂", + id: '4', + title: '别人听不太懂', }, ], }, { - title: "咀嚼", - key: "ChewScore", + title: '咀嚼', + key: 'ChewScore', list: [ { - id: "1", - title: "正常", + id: '1', + title: '正常', }, { - id: "2", - title: "咀嚼固体食物会感到疲劳", + id: '2', + title: '咀嚼固体食物会感到疲劳', }, { - id: "3", - title: "咀嚼松软食物会感到疲劳", + id: '3', + title: '咀嚼松软食物会感到疲劳', }, { - id: "4", - title: "使用喂食管进食,如鼻胃管胃肠管等", + id: '4', + title: '使用喂食管进食,如鼻胃管胃肠管等', }, ], }, { - title: "吞咽", - key: "SwallowScore", + title: '吞咽', + key: 'SwallowScore', list: [ { - id: "1", - title: "正常", + id: '1', + title: '正常', }, { - id: "2", - title: "偶尔会噎到", + id: '2', + title: '偶尔会噎到', }, { - id: "3", - title: "经常会噎到,因而需要改变饮食习惯", + id: '3', + title: '经常会噎到,因而需要改变饮食习惯', }, { - id: "4", - title: "使用喂食管进食,如鼻胃管胃肠管等", + id: '4', + title: '使用喂食管进食,如鼻胃管胃肠管等', }, ], }, { - title: "呼吸", - key: "BreathScore", + title: '呼吸', + key: 'BreathScore', list: [ { - id: "1", - title: "正常", + id: '1', + title: '正常', }, { - id: "2", - title: "劳累后感到气促或呼吸不畅", + id: '2', + title: '劳累后感到气促或呼吸不畅', }, { - id: "3", - title: "静止时感到气促或呼吸不畅", + id: '3', + title: '静止时感到气促或呼吸不畅', }, { - id: "4", - title: "依赖呼吸机", + id: '4', + title: '依赖呼吸机', }, ], }, { - title: "刷牙梳头能力受损", - key: "BrushTeethAndCombHairScore", + title: '刷牙梳头能力受损', + key: 'BrushTeethAndCombHairScore', list: [ { - id: "1", - title: "正常", + id: '1', + title: '正常', }, { - id: "2", - title: "需要多费些力气但是不需要停下来", + id: '2', + title: '需要多费些力气但是不需要停下来', }, { - id: "3", - title: "需要停下来休息才能完成", + id: '3', + title: '需要停下来休息才能完成', }, { - id: "4", - title: "无法自己完成", + id: '4', + title: '无法自己完成', }, ], }, { - title: "从椅子上起身能力受损", - key: "GetUpFromChairScore", + title: '从椅子上起身能力受损', + key: 'GetUpFromChairScore', list: [ { - id: "1", - title: "正常", + id: '1', + title: '正常', }, { - id: "2", - title: "轻度受损,有时需要用手帮忙", + id: '2', + title: '轻度受损,有时需要用手帮忙', }, { - id: "3", - title: "中度受损,总是需要用手帮忙", + id: '3', + title: '中度受损,总是需要用手帮忙', }, { - id: "4", - title: "严重受损,需要他人帮助", + id: '4', + title: '严重受损,需要他人帮助', }, ], }, { - title: "复视/重影", - key: "DoubleVisionScore", + title: '复视/重影', + key: 'DoubleVisionScore', list: [ { - id: "1", - title: "正常", + id: '1', + title: '正常', }, { - id: "2", - title: "有,但不是每天", + id: '2', + title: '有,但不是每天', }, { - id: "3", - title: "每天,但不是持续一整天", + id: '3', + title: '每天,但不是持续一整天', }, { - id: "4", - title: "持续有", + id: '4', + title: '持续有', }, ], }, { - title: "眼睑下垂", - key: "DroopyEyelidsScore", + title: '眼睑下垂', + key: 'DroopyEyelidsScore', list: [ { - id: "1", - title: "正常", + id: '1', + title: '正常', }, { - id: "2", - title: "有,但不是每天", + id: '2', + title: '有,但不是每天', }, { - id: "3", - title: "每天,但不是持续一整天", + id: '3', + title: '每天,但不是持续一整天', }, { - id: "4", - title: "持续有", + id: '4', + title: '持续有', }, ], }, @@ -204,37 +205,37 @@ Component({ }, methods: { drawImage1() { - let self = this; + const self = this // destZoom: 10, this.drawImage1 = new Wxml2Canvas({ obj: self, width: this.data.width, // 宽, 以iphone6为基准,传具体数值,其它机型自动适配 height: this.data.height, // 高 - element: "canvas1", - background: "#ffffff", + element: 'canvas1', + background: '#ffffff', progress(_percent) {}, finish(url) { self.setData({ imgUrl: url, - }); - self.triggerEvent("finish", url); + }) + self.triggerEvent('finish', url) }, error(_res) {}, - }); + }) - let data = { + const data = { list: [ { - type: "wxml", - class: "#canvas-bill-body-mp .draw_canvas", - limit: "#canvas-bill-body-mp", + type: 'wxml', + class: '#canvas-bill-body-mp .draw_canvas', + limit: '#canvas-bill-body-mp', x: 0, y: 0, }, ], - }; + } - this.drawImage1.draw(data); + this.drawImage1.draw(data) }, }, -}); +}) diff --git a/src/components/customTable/wxml2canvas/index.js b/src/components/customTable/wxml2canvas/index.js index 88e188b..7ef61f4 100644 --- a/src/components/customTable/wxml2canvas/index.js +++ b/src/components/customTable/wxml2canvas/index.js @@ -1,1179 +1,1223 @@ module.exports = (function () { - var __MODS__ = {}; - var __DEFINE__ = function (modId, func, req) { - var m = { exports: {}, _tempexports: {} }; - __MODS__[modId] = { status: 0, func: func, req: req, m: m }; - }; - var __REQUIRE__ = function (modId, source) { - if (!__MODS__[modId]) return require(source); + const __MODS__ = {} + const __DEFINE__ = function (modId, func, req) { + const m = { exports: {}, _tempexports: {} } + __MODS__[modId] = { status: 0, func, req, m } + } + const __REQUIRE__ = function (modId, source) { + if (!__MODS__[modId]) + return require(source) if (!__MODS__[modId].status) { - var m = __MODS__[modId].m; - m._exports = m._tempexports; - var desp = Object.getOwnPropertyDescriptor(m, "exports"); - if (desp && desp.configurable) - Object.defineProperty(m, "exports", { - set: function (val) { - if (typeof val === "object" && val !== m._exports) { - m._exports.__proto__ = val.__proto__; - Object.keys(val).forEach(function (k) { - m._exports[k] = val[k]; - }); + const m = __MODS__[modId].m + m._exports = m._tempexports + const desp = Object.getOwnPropertyDescriptor(m, 'exports') + if (desp && desp.configurable) { + Object.defineProperty(m, 'exports', { + set(val) { + if (typeof val === 'object' && val !== m._exports) { + m._exports.__proto__ = val.__proto__ + Object.keys(val).forEach((k) => { + m._exports[k] = val[k] + }) } - m._tempexports = val; + m._tempexports = val }, - get: function () { - return m._tempexports; + get() { + return m._tempexports }, - }); - __MODS__[modId].status = 1; - __MODS__[modId].func(__MODS__[modId].req, m, m.exports); + }) + } + __MODS__[modId].status = 1 + __MODS__[modId].func(__MODS__[modId].req, m, m.exports) } - return __MODS__[modId].m.exports; - }; - var __REQUIRE_WILDCARD__ = function (obj) { + return __MODS__[modId].m.exports + } + const __REQUIRE_WILDCARD__ = function (obj) { if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; + return obj + } + else { + const newObj = {} if (obj != null) { - for (var k in obj) { - if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; + for (const k in obj) { + if (Object.prototype.hasOwnProperty.call(obj, k)) + newObj[k] = obj[k] } } - newObj.default = obj; - return newObj; + newObj.default = obj + return newObj } - }; - var __REQUIRE_DEFAULT__ = function (obj) { - return obj && obj.__esModule ? obj.default : obj; - }; + } + const __REQUIRE_DEFAULT__ = function (obj) { + return obj && obj.__esModule ? obj.default : obj + } __DEFINE__( 1685064731946, - function (require, module, exports) { - var __TEMP__ = require("./src/index"); - var Wxml2Canvas = __REQUIRE_DEFAULT__(__TEMP__); + (require, module, exports) => { + const __TEMP__ = require('./src/index') + const Wxml2Canvas = __REQUIRE_DEFAULT__(__TEMP__) - if (!exports.__esModule) Object.defineProperty(exports, "__esModule", { value: true }); - exports.default = Wxml2Canvas; + if (!exports.__esModule) + Object.defineProperty(exports, '__esModule', { value: true }) + exports.default = Wxml2Canvas }, - function (modId) { - var map = { "./src/index": 1685064731947 }; - return __REQUIRE__(map[modId], modId); + (modId) => { + const map = { './src/index': 1685064731947 } + return __REQUIRE__(map[modId], modId) }, - ); + ) __DEFINE__( 1685064731947, - function (require, module, exports) { - var __TEMP__ = require("./util"); - var Util = __REQUIRE_DEFAULT__(__TEMP__); + (require, module, exports) => { + const __TEMP__ = require('./util') + const Util = __REQUIRE_DEFAULT__(__TEMP__) const imageMode = [ - "scaleToFill", - "aspectFit", - "aspectFill", - "widthFix", - "top", - "bottom", - "center", - "left", - "right", - "top left", - "top right", - "bottom left", - "bottom right", - ]; + 'scaleToFill', + 'aspectFit', + 'aspectFill', + 'widthFix', + 'top', + 'bottom', + 'center', + 'left', + 'right', + 'top left', + 'top right', + 'bottom left', + 'bottom right', + ] class Wxml2Canvas { constructor(options = {}) { - this.device = (wx.getSystemInfoSync && wx.getSystemInfoSync()) || {}; + this.device = (wx.getSystemInfoSync && wx.getSystemInfoSync()) || {} if (!options.zoom) { - this.zoom = this.device.windowWidth / 375; - } else { - this.zoom = options.zoom || 1; + this.zoom = this.device.windowWidth / 375 + } + else { + this.zoom = options.zoom || 1 } - this.element = options.element; - this.object = options.obj; - this.width = options.width * this.zoom || 0; - this.height = options.height * this.zoom || 0; - this.destZoom = options.destZoom || 3; - this.destWidth = this.width * this.destZoom; - this.destHeight = this.height * this.destZoom; - this.translateX = options.translateX * this.zoom || 0; - this.translateY = options.translateY * this.zoom || 0; - this.gradientBackground = options.gradientBackground || null; - this.background = options.background || "#ffffff"; - this.finishDraw = options.finish || function finish(params) {}; - this.errorHandler = options.error || function error(params) {}; - this.progress = options.progress || function progress(params) {}; - this.textAlign = options.textAlign || "left"; - this.fullText = options.fullText || false; - this.font = options.font || "14px PingFang SC"; - - this._init(); + this.element = options.element + this.object = options.obj + this.width = options.width * this.zoom || 0 + this.height = options.height * this.zoom || 0 + this.destZoom = options.destZoom || 3 + this.destWidth = this.width * this.destZoom + this.destHeight = this.height * this.destZoom + this.translateX = options.translateX * this.zoom || 0 + this.translateY = options.translateY * this.zoom || 0 + this.gradientBackground = options.gradientBackground || null + this.background = options.background || '#ffffff' + this.finishDraw = options.finish || function finish(params) {} + this.errorHandler = options.error || function error(params) {} + this.progress = options.progress || function progress(params) {} + this.textAlign = options.textAlign || 'left' + this.fullText = options.fullText || false + this.font = options.font || '14px PingFang SC' + + this._init() } draw(data = {}, that) { - let self = this; - this.data = data; - this.fef = that; + const self = this + this.data = data + this.fef = that - this.progress(10); + this.progress(10) this._preloadImage(data.list) .then((result) => { - this.progress(30); - self._draw(); + this.progress(30) + self._draw() }) .catch((res) => { - self.errorHandler(res); - }); + self.errorHandler(res) + }) } measureWidth(text, font) { if (font) { - this.ctx.font = font; + this.ctx.font = font } - let res = this.ctx.measureText(text) || {}; - return res.width || 0; + const res = this.ctx.measureText(text) || {} + return res.width || 0 } _init() { - this.progressPercent = 0; // 绘制进度百分比 - this.data = null; - this.ref = null; - this.allPic = []; - this.screenList = []; - this.asyncList = []; - this.imgUrl = ""; - this.progressPercent = 0; - this.distance = 0; - this.progress(0); - - this.ctx = wx.createCanvasContext(this.element, this.object); - this.ctx.font = this.font; - this.ctx.setTextBaseline("top"); - this.ctx.setStrokeStyle("white"); - - this.debug = this.device.platform === "devtools" ? true : false; - - this._drawBakcground(); + this.progressPercent = 0 // 绘制进度百分比 + this.data = null + this.ref = null + this.allPic = [] + this.screenList = [] + this.asyncList = [] + this.imgUrl = '' + this.progressPercent = 0 + this.distance = 0 + this.progress(0) + + this.ctx = wx.createCanvasContext(this.element, this.object) + this.ctx.font = this.font + this.ctx.setTextBaseline('top') + this.ctx.setStrokeStyle('white') + + this.debug = this.device.platform === 'devtools' + + this._drawBakcground() } _drawBakcground() { if (this.gradientBackground) { - let line = this.gradientBackground.line || [0, 0, 0, this.height]; - let color = this.gradientBackground.color || ["#fff", "#fff"]; - let style = { fill: { line, color } }; - this._drawRectToCanvas(0, 0, this.width, this.height, style); - } else { - let style = { fill: this.background }; - this._drawRectToCanvas(0, 0, this.width, this.height, style); + const line = this.gradientBackground.line || [0, 0, 0, this.height] + const color = this.gradientBackground.color || ['#fff', '#fff'] + const style = { fill: { line, color } } + this._drawRectToCanvas(0, 0, this.width, this.height, style) + } + else { + const style = { fill: this.background } + this._drawRectToCanvas(0, 0, this.width, this.height, style) } } _draw() { - let self = this; - let list = this.data.list || []; - let index = 0; - let all = []; - let count = 0; + const self = this + let list = this.data.list || [] + let index = 0 + const all = [] + let count = 0 list.forEach((item) => { - if (item.type === "wxml") { - count += 3; - } else { - count += 1; + if (item.type === 'wxml') { + count += 3 + } + else { + count += 1 } - }); + }) - this.distance = 60 / (count || 1); // 进度条的间距 - this.progressPercent = 30; - this.asyncList = list.filter((item) => item.delay == true); - list = list.filter((item) => item.delay != true); - drawList(list); + this.distance = 60 / (count || 1) // 进度条的间距 + this.progressPercent = 30 + this.asyncList = list.filter(item => item.delay == true) + list = list.filter(item => item.delay != true) + drawList(list) Promise.all(all) .then((results) => { - index = 0; - drawList(self.asyncList, true); + index = 0 + drawList(self.asyncList, true) Promise.all(all).then((results) => { - self.progress(90); - self._saveCanvasToImage(); - }); + self.progress(90) + self._saveCanvasToImage() + }) }) .catch((e) => { - console.log(e); - self.errorHandler(e); - }); + console.log(e) + self.errorHandler(e) + }) function drawList(list = [], noDelay) { list.forEach((item, i) => { all[index++] = new Promise((resolve, reject) => { - let attr = item.style; - item.progress = self.distance; + const attr = item.style + item.progress = self.distance if (noDelay) { - item.delay = 0; + item.delay = 0 } - if (item.type === "radius-image") { - self._drawCircle(item, attr, resolve, reject, "image"); - } else if (item.type === "text") { - self._drawText(item, attr, resolve, reject); - } else if (item.type === "line") { - self._drawLine(item, attr, resolve, reject); - } else if (item.type === "circle") { - self._drawCircle(item, attr, resolve, reject); - } else if (item.type === "rect") { - self._drawRect(item, attr, resolve, reject); - } else if (item.type === "image") { - self._drawRect(item, attr, resolve, reject, "image"); - } else if (item.type === "wxml") { - self._drawWxml(item, attr, resolve, reject); - } else { - resolve(); + if (item.type === 'radius-image') { + self._drawCircle(item, attr, resolve, reject, 'image') + } + else if (item.type === 'text') { + self._drawText(item, attr, resolve, reject) + } + else if (item.type === 'line') { + self._drawLine(item, attr, resolve, reject) + } + else if (item.type === 'circle') { + self._drawCircle(item, attr, resolve, reject) + } + else if (item.type === 'rect') { + self._drawRect(item, attr, resolve, reject) + } + else if (item.type === 'image') { + self._drawRect(item, attr, resolve, reject, 'image') + } + else if (item.type === 'wxml') { + self._drawWxml(item, attr, resolve, reject) + } + else { + resolve() } - }); - }); + }) + }) } } _saveCanvasToImage() { - let self = this; + const self = this // 延时保存有两个原因,一个是等待绘制delay的元素,另一个是安卓上样式会错乱 setTimeout( () => { - self.progress(95); + self.progress(95) - let obj = { + const obj = { x: 0, y: 0, width: self.width, height: self.height, canvasId: self.element, - success: function (res) { - self.progress(100); - self.imgUrl = res.tempFilePath; - self.finishDraw(self.imgUrl); + success(res) { + self.progress(100) + self.imgUrl = res.tempFilePath + self.finishDraw(self.imgUrl) }, - fail: function (res) { - self.errorHandler({ errcode: 1000, errmsg: "save canvas error", e: res }); + fail(res) { + self.errorHandler({ errcode: 1000, errmsg: 'save canvas error', e: res }) }, - }; + } if (self.destZoom !== 3) { - obj.destWidth = self.destWidth; - obj.destHeight = self.destHeight; + obj.destWidth = self.destWidth + obj.destHeight = self.destHeight } - wx.canvasToTempFilePath(obj, self.object); + wx.canvasToTempFilePath(obj, self.object) }, - self.device.system.indexOf("iOS") === -1 ? 300 : 100, - ); + !self.device.system.includes('iOS') ? 300 : 100, + ) } _preloadImage(list = []) { - let self = this; - let all = []; - let count = 0; + const self = this + const all = [] + let count = 0 list.forEach((item, i) => { if (item.url && self._findPicIndex(item.url) === -1) { // 避免重复下载同一图片 self.allPic.push({ url: item.url, - local: "", - }); + local: '', + }) all[count++] = new Promise((resolve, reject) => { // 非http(s)域名的就不下载了 if ( - !/^http/.test(item.url) || - /^http:\/\/(tmp)|(usr)\//.test(item.url) || - /^http:\/\/127\.0\.0\.1/.test(item.url) + !item.url.startsWith('http') + || /^http:\/\/(tmp)|(usr)\//.test(item.url) + || /^http:\/\/127\.0\.0\.1/.test(item.url) ) { if (item.isBase64) { - let fileManager = wx.getFileSystemManager(); + const fileManager = wx.getFileSystemManager() fileManager.writeFile({ filePath: item.url, - data: item.isBase64.replace(/data:image\/(.*);base64,/, ""), - encoding: "base64", + data: item.isBase64.replace(/data:image\/(.*);base64,/, ''), + encoding: 'base64', success(res) { - imageInfo(item.url); + imageInfo(item.url) }, fail(res) { - reject(res); + reject(res) }, - }); - } else { - imageInfo(item.url); + }) + } + else { + imageInfo(item.url) } function imageInfo(url) { wx.getImageInfo({ src: url, success(res) { - let index = self._findPicIndex(url); + const index = self._findPicIndex(url) if (index > -1) { - self.allPic[index].local = url; - self.allPic[index].width = res.width; - self.allPic[index].height = res.height; + self.allPic[index].local = url + self.allPic[index].width = res.width + self.allPic[index].height = res.height } - resolve({ tempFilePath: url }); + resolve({ tempFilePath: url }) }, fail(res) { - reject(res); + reject(res) }, - }); + }) } - } else { + } + else { wx.downloadFile({ - url: item.url.replace(/^https?/, "https"), - success: function (res) { + url: item.url.replace(/^https?/, 'https'), + success(res) { wx.getImageInfo({ src: res.tempFilePath, success(img) { - let index = self._findPicIndex(item.url); + const index = self._findPicIndex(item.url) if (index > -1) { - self.allPic[index].local = res.tempFilePath; - self.allPic[index].width = img.width; - self.allPic[index].height = img.height; + self.allPic[index].local = res.tempFilePath + self.allPic[index].width = img.width + self.allPic[index].height = img.height } - resolve(res); + resolve(res) }, fail(res) { - reject(res); + reject(res) }, - }); + }) }, fail: (res) => { - reject({ errcode: 1001, errmsg: "download pic error" }); + reject({ errcode: 1001, errmsg: 'download pic error' }) }, - }); + }) } - }); + }) } - }); + }) return Promise.all(all) .then((results) => { return new Promise((resolve) => { - resolve(); - }); + resolve() + }) }) .catch((results) => { return new Promise((resolve, reject) => { - reject(results); - }); - }); + reject(results) + }) + }) } _findPicIndex(url) { - let index = this.allPic.findIndex((pic) => pic.url === url); - return index; + const index = this.allPic.findIndex(pic => pic.url === url) + return index } _drawRect(item, style, resolve, reject, isImage, isWxml) { - let zoom = this.zoom; - let leftOffset = 0; - let topOffset = 0; - let width = style.width; - let height = style.height; - let imgWidth = style.width; - let imgHeight = style.height; - let mode = null; + const zoom = this.zoom + let leftOffset = 0 + const topOffset = 0 + let width = style.width + let height = style.height + let imgWidth = style.width + let imgHeight = style.height + let mode = null try { - item.x = this._resetPositionX(item, style); - item.y = this._resetPositionY(item, style); + item.x = this._resetPositionX(item, style) + item.y = this._resetPositionY(item, style) - let url; + let url if (isImage) { - let index = this._findPicIndex(item.url); + const index = this._findPicIndex(item.url) if (index > -1) { - url = this.allPic[index].local; - imgWidth = this.allPic[index].width; - imgHeight = this.allPic[index].height; - } else { - url = item.url; + url = this.allPic[index].local + imgWidth = this.allPic[index].width + imgHeight = this.allPic[index].height + } + else { + url = item.url } } - style.padding = style.padding || []; - if (isWxml === "inline-wxml") { - item.x = item.x + ((style.padding[3] && style.padding[3]) || 0); - item.y = item.y + ((style.padding[0] && style.padding[0]) || 0); + style.padding = style.padding || [] + if (isWxml === 'inline-wxml') { + item.x = item.x + ((style.padding[3] && style.padding[3]) || 0) + item.y = item.y + ((style.padding[0] && style.padding[0]) || 0) } - leftOffset = item.x + style.width + ((style.padding[1] && style.padding[1]) || 0); + leftOffset = item.x + style.width + ((style.padding[1] && style.padding[1]) || 0) if (!isWxml) { - width = width * zoom; - height = height * zoom; + width = width * zoom + height = height * zoom } - if (style.dataset && style.dataset.mode && imageMode.indexOf(style.dataset.mode) > -1) { + if (style.dataset && style.dataset.mode && imageMode.includes(style.dataset.mode)) { mode = { type: style.dataset.mode, width: imgWidth, height: imgHeight, - }; + } } - this._drawRectToCanvas(item.x, item.y, width, height, style, url, mode); - this._updateProgress(item.progress); + this._drawRectToCanvas(item.x, item.y, width, height, style, url, mode) + this._updateProgress(item.progress) if (resolve) { - resolve(); - } else { + resolve() + } + else { return { leftOffset, topOffset, - }; + } } - } catch (e) { - reject && - reject({ errcode: isImage ? 1003 : 1002, errmsg: isImage ? "drawImage error" : "drawRect error", e }); + } + catch (e) { + reject + && reject({ errcode: isImage ? 1003 : 1002, errmsg: isImage ? 'drawImage error' : 'drawRect error', e }) } } _drawRectToCanvas(x, y, width, height, style, url, mode) { - let { fill, border, boxShadow } = style; - this.ctx.save(); + const { fill, border, boxShadow } = style + this.ctx.save() this._drawBoxShadow(boxShadow, (res) => { // 真机上填充渐变色时,没有阴影,先画个相等大小的纯色矩形来实现阴影 - if (fill && typeof fill !== "string" && !this.debug) { - this.ctx.setFillStyle(res.color || "#ffffff"); - this.ctx.fillRect(x, y, width, height); + if (fill && typeof fill !== 'string' && !this.debug) { + this.ctx.setFillStyle(res.color || '#ffffff') + this.ctx.fillRect(x, y, width, height) } - }); + }) if (url) { // 开发者工具有bug,先不裁剪 if (mode) { - this._resetImageByMode(url, x, y, width, height, mode); - } else { - this.ctx.drawImage(url, x, y, width, height); + this._resetImageByMode(url, x, y, width, height, mode) + } + else { + this.ctx.drawImage(url, x, y, width, height) } - } else { + } + else { this._setFill(fill, () => { - this.ctx.fillRect(x, y, width, height); - }); + this.ctx.fillRect(x, y, width, height) + }) } this._drawBorder(border, style, (border) => { - let fixBorder = border.width; - this.ctx.strokeRect(x - fixBorder / 2, y - fixBorder / 2, width + fixBorder, height + fixBorder); - }); + const fixBorder = border.width + this.ctx.strokeRect(x - fixBorder / 2, y - fixBorder / 2, width + fixBorder, height + fixBorder) + }) - this.ctx.draw(true); - this.ctx.restore(); + this.ctx.draw(true) + this.ctx.restore() } _resetImageByMode(url, x, y, width, height, mode) { - let self = this; - let offsetX = 0; - let offsetY = 0; - let imgWidth = mode.width; - let imgHeight = mode.height; + const self = this + let offsetX = 0 + let offsetY = 0 + let imgWidth = mode.width + let imgHeight = mode.height switch (mode.type) { - case "scaleToFill": - imgWidth = width; - imgHeight = height; - self.ctx.drawImage(url, x, y, width, height); - break; - case "widthFix": - height = width / ((imgWidth || 1) / (imgHeight || 1)); - self.ctx.drawImage(url, x, y, width, height); - break; - case "aspectFit": + case 'scaleToFill': + imgWidth = width + imgHeight = height + self.ctx.drawImage(url, x, y, width, height) + break + case 'widthFix': + height = width / ((imgWidth || 1) / (imgHeight || 1)) + self.ctx.drawImage(url, x, y, width, height) + break + case 'aspectFit': if (imgWidth > imgHeight) { - let realHeight = width / ((imgWidth || 1) / (imgHeight || 1)); - offsetY = -(height - realHeight) / 2; - imgWidth = width; - imgHeight = realHeight; - } else { - let realWidth = height / ((imgHeight || 1) / (imgWidth || 1)); - offsetX = -(width - realWidth) / 2; - imgWidth = realWidth; - imgHeight = height; + const realHeight = width / ((imgWidth || 1) / (imgHeight || 1)) + offsetY = -(height - realHeight) / 2 + imgWidth = width + imgHeight = realHeight + } + else { + const realWidth = height / ((imgHeight || 1) / (imgWidth || 1)) + offsetX = -(width - realWidth) / 2 + imgWidth = realWidth + imgHeight = height } - _clip(); - break; - case "aspectFill": + _clip() + break + case 'aspectFill': if (imgWidth > imgHeight) { - let realWidth = imgWidth / ((imgHeight || 1) / (height || 1)); - offsetX = (realWidth - width) / 2; - imgWidth = realWidth; - imgHeight = height; - } else { - let realHeight = imgHeight / ((imgWidth || 1) / (width || 1)); - offsetY = (realHeight - height) / 2; - imgWidth = width; - imgHeight = realHeight; + const realWidth = imgWidth / ((imgHeight || 1) / (height || 1)) + offsetX = (realWidth - width) / 2 + imgWidth = realWidth + imgHeight = height + } + else { + const realHeight = imgHeight / ((imgWidth || 1) / (width || 1)) + offsetY = (realHeight - height) / 2 + imgWidth = width + imgHeight = realHeight } - _clip(); - break; - case "top left": - _clip(); - break; - case "top": - offsetX = (mode.width - width) / 2; - _clip(); - break; - case "top right": - offsetX = mode.width - width; - _clip(); - break; - case "left": - offsetY = (mode.height - height) / 2; - _clip(); - break; - case "center": - offsetX = (mode.width - width) / 2; - offsetY = (mode.height - height) / 2; - _clip(); - break; - case "right": - offsetX = mode.width - width; - offsetY = (mode.height - height) / 2; - _clip(); - break; - case "bottom left": - offsetY = mode.height - height; - _clip(); - break; - case "bottom": - offsetX = (mode.width - width) / 2; - offsetY = mode.height - height; - _clip(); - break; - case "bottom right": - offsetX = mode.width - width; - offsetY = mode.height - height; - _clip(); - break; + _clip() + break + case 'top left': + _clip() + break + case 'top': + offsetX = (mode.width - width) / 2 + _clip() + break + case 'top right': + offsetX = mode.width - width + _clip() + break + case 'left': + offsetY = (mode.height - height) / 2 + _clip() + break + case 'center': + offsetX = (mode.width - width) / 2 + offsetY = (mode.height - height) / 2 + _clip() + break + case 'right': + offsetX = mode.width - width + offsetY = (mode.height - height) / 2 + _clip() + break + case 'bottom left': + offsetY = mode.height - height + _clip() + break + case 'bottom': + offsetX = (mode.width - width) / 2 + offsetY = mode.height - height + _clip() + break + case 'bottom right': + offsetX = mode.width - width + offsetY = mode.height - height + _clip() + break default: - imgWidth = width; - imgHeight = height; - break; + imgWidth = width + imgHeight = height + break } function _clip() { - self.ctx.save(); - self.ctx.beginPath(); - self.ctx.rect(x, y, width, height); - self.ctx.clip(); - self.ctx.drawImage(url, x - offsetX, y - offsetY, imgWidth, imgHeight); - self.ctx.closePath(); - self.ctx.restore(); + self.ctx.save() + self.ctx.beginPath() + self.ctx.rect(x, y, width, height) + self.ctx.clip() + self.ctx.drawImage(url, x - offsetX, y - offsetY, imgWidth, imgHeight) + self.ctx.closePath() + self.ctx.restore() } } _drawText(item, style, resolve, reject, type, isWxml) { - let zoom = this.zoom; - let leftOffset = 0; - let topOffset = 0; + const zoom = this.zoom + let leftOffset = 0 + let topOffset = 0 try { - style.fontSize = this._parseNumber(style.fontSize); - let fontSize = Math.ceil((style.fontSize || 14) * zoom); - this.ctx.setTextBaseline("top"); - this.ctx.font = `${style.fontWeight ? style.fontWeight : "normal"} ${fontSize}px ${ - style.fontFamily || "PingFang SC" - }`; - this.ctx.setFillStyle(style.color || "#454545"); - - let text = item.text || ""; - let textWidth = Math.floor(this.measureWidth(text, style.font || this.ctx.font)); - let lineHeight = this._getLineHeight(style); - let textHeight = Math.ceil(textWidth / (style.width || textWidth)) * lineHeight; - let width = Math.ceil((style.width || textWidth) * (!isWxml ? zoom : 1)); - let whiteSpace = style.whiteSpace || "wrap"; - let x = 0; - let y = 0; - - if (typeof style.padding === "string") { - style.padding = Util.transferPadding(style.padding); + style.fontSize = this._parseNumber(style.fontSize) + const fontSize = Math.ceil((style.fontSize || 14) * zoom) + this.ctx.setTextBaseline('top') + this.ctx.font = `${style.fontWeight ? style.fontWeight : 'normal'} ${fontSize}px ${ + style.fontFamily || 'PingFang SC' + }` + this.ctx.setFillStyle(style.color || '#454545') + + let text = item.text || '' + let textWidth = Math.floor(this.measureWidth(text, style.font || this.ctx.font)) + const lineHeight = this._getLineHeight(style) + const textHeight = Math.ceil(textWidth / (style.width || textWidth)) * lineHeight + let width = Math.ceil((style.width || textWidth) * (!isWxml ? zoom : 1)) + const whiteSpace = style.whiteSpace || 'wrap' + let x = 0 + let y = 0 + + if (typeof style.padding === 'string') { + style.padding = Util.transferPadding(style.padding) } - item.x = this._resetPositionX(item, style); - item.y = this._resetPositionY(item, style, textHeight); - this._drawBoxShadow(style.boxShadow); + item.x = this._resetPositionX(item, style) + item.y = this._resetPositionY(item, style, textHeight) + this._drawBoxShadow(style.boxShadow) if (style.background || style.border) { - this._drawTextBackgroud(item, style, textWidth, textHeight, isWxml); + this._drawTextBackgroud(item, style, textWidth, textHeight, isWxml) } // 行内文本 - if (type === "inline-text") { - width = item.maxWidth; + if (type === 'inline-text') { + width = item.maxWidth if (item.leftOffset + textWidth > width) { // 如果上一个行内元素换行了,这个元素要继续在后面补足一行 - let lineNum = Math.max(Math.floor(textWidth / width), 1); - let length = text.length; - let singleLength = Math.floor(length / lineNum); - let widthOffset = item.leftOffset ? item.leftOffset - item.originX : 0; + let lineNum = Math.max(Math.floor(textWidth / width), 1) + const length = text.length + const singleLength = Math.floor(length / lineNum) + const widthOffset = item.leftOffset ? item.leftOffset - item.originX : 0 let { endIndex: currentIndex, single, singleWidth, - } = this._getTextSingleLine(text, width, singleLength, 0, widthOffset); - x = this._resetTextPositionX(item, style, singleWidth); - y = this._resetTextPositionY(item, style); - this.ctx.fillText(single, x, y); - leftOffset = x + singleWidth; - topOffset = y; + } = this._getTextSingleLine(text, width, singleLength, 0, widthOffset) + x = this._resetTextPositionX(item, style, singleWidth) + y = this._resetTextPositionY(item, style) + this.ctx.fillText(single, x, y) + leftOffset = x + singleWidth + topOffset = y // 去除第一行补的内容,然后重置 - text = text.substring(currentIndex, text.length); - currentIndex = 0; - lineNum = Math.max(Math.floor(textWidth / width), 1); - textWidth = Math.floor(this.measureWidth(text, style.font || this.ctx.font)); - item.x = item.originX; // 还原换行后的x + text = text.substring(currentIndex, text.length) + currentIndex = 0 + lineNum = Math.max(Math.floor(textWidth / width), 1) + textWidth = Math.floor(this.measureWidth(text, style.font || this.ctx.font)) + item.x = item.originX // 还原换行后的x for (let i = 0; i < lineNum; i++) { - let { endIndex, single, singleWidth } = this._getTextSingleLine( + const { endIndex, single, singleWidth } = this._getTextSingleLine( text, width, singleLength, currentIndex, - ); - currentIndex = endIndex; + ) + currentIndex = endIndex if (single) { - x = this._resetTextPositionX(item, style, singleWidth, width); - y = this._resetTextPositionY(item, style, i + 1); - this.ctx.fillText(single, x, y); + x = this._resetTextPositionX(item, style, singleWidth, width) + y = this._resetTextPositionY(item, style, i + 1) + this.ctx.fillText(single, x, y) if (i === lineNum - 1) { - leftOffset = x + singleWidth; - topOffset = lineHeight * lineNum; + leftOffset = x + singleWidth + topOffset = lineHeight * lineNum } } } - let last = text.substring(currentIndex, length); - let lastWidth = this.measureWidth(last); + const last = text.substring(currentIndex, length) + const lastWidth = this.measureWidth(last) if (last) { - x = this._resetTextPositionX(item, style, lastWidth, width); - y = this._resetTextPositionY(item, style, lineNum + 1); - this.ctx.fillText(last, x, y); - leftOffset = x + lastWidth; - topOffset = lineHeight * (lineNum + 1); + x = this._resetTextPositionX(item, style, lastWidth, width) + y = this._resetTextPositionY(item, style, lineNum + 1) + this.ctx.fillText(last, x, y) + leftOffset = x + lastWidth + topOffset = lineHeight * (lineNum + 1) } - } else { - x = this._resetTextPositionX(item, style, textWidth, width); - y = this._resetTextPositionY(item, style); - this.ctx.fillText(item.text, x, y); - leftOffset = x + textWidth; - topOffset = lineHeight; + } + else { + x = this._resetTextPositionX(item, style, textWidth, width) + y = this._resetTextPositionY(item, style) + this.ctx.fillText(item.text, x, y) + leftOffset = x + textWidth + topOffset = lineHeight } - } else { + } + else { // block文本,如果文本长度超过宽度换行 - if (width && textWidth > width && whiteSpace !== "nowrap") { - let lineNum = Math.max(Math.floor(textWidth / width), 1); - let length = text.length; - let singleLength = Math.floor(length / lineNum); - let currentIndex = 0; + if (width && textWidth > width && whiteSpace !== 'nowrap') { + let lineNum = Math.max(Math.floor(textWidth / width), 1) + const length = text.length + const singleLength = Math.floor(length / lineNum) + let currentIndex = 0 // lineClamp参数限制最多行数 if (style.lineClamp && lineNum + 1 > style.lineClamp) { - lineNum = style.lineClamp - 1; + lineNum = style.lineClamp - 1 } for (let i = 0; i < lineNum; i++) { - let { endIndex, single, singleWidth } = this._getTextSingleLine( + const { endIndex, single, singleWidth } = this._getTextSingleLine( text, width, singleLength, currentIndex, - ); - currentIndex = endIndex; - x = this._resetTextPositionX(item, style, singleWidth, width); - y = this._resetTextPositionY(item, style, i); - this.ctx.fillText(single, x, y); + ) + currentIndex = endIndex + x = this._resetTextPositionX(item, style, singleWidth, width) + y = this._resetTextPositionY(item, style, i) + this.ctx.fillText(single, x, y) } // 换行后剩余的文字,超过一行则截断增加省略号 - let last = text.substring(currentIndex, length); - let lastWidth = this.measureWidth(last); + let last = text.substring(currentIndex, length) + let lastWidth = this.measureWidth(last) if (lastWidth > width) { - let { single, singleWidth } = this._getTextSingleLine(last, width, singleLength); - lastWidth = singleWidth; - last = single.substring(0, single.length - 1) + "..."; + const { single, singleWidth } = this._getTextSingleLine(last, width, singleLength) + lastWidth = singleWidth + last = `${single.substring(0, single.length - 1)}...` } - x = this._resetTextPositionX(item, style, lastWidth, width); - y = this._resetTextPositionY(item, style, lineNum); - this.ctx.fillText(last, x, y); - } else { - x = this._resetTextPositionX(item, style, textWidth, width); - y = this._resetTextPositionY(item, style); - this.ctx.fillText(item.text, x, y); + x = this._resetTextPositionX(item, style, lastWidth, width) + y = this._resetTextPositionY(item, style, lineNum) + this.ctx.fillText(last, x, y) + } + else { + x = this._resetTextPositionX(item, style, textWidth, width) + y = this._resetTextPositionY(item, style) + this.ctx.fillText(item.text, x, y) } } - this.ctx.draw(true); + this.ctx.draw(true) - this._updateProgress(item.progress); + this._updateProgress(item.progress) if (resolve) { - resolve(); - } else { + resolve() + } + else { return { leftOffset, topOffset, - }; + } } - } catch (e) { - reject && reject({ errcode: 1004, errmsg: "drawText error", e: e }); + } + catch (e) { + reject && reject({ errcode: 1004, errmsg: 'drawText error', e }) } } _drawTextBackgroud(item, style, textWidth, textHeight, isWxml) { - if (!style.width) return; - let zoom = isWxml ? 1 : this.zoom; - let width = style.width || textWidth; - let height = style.height || textHeight; - let rectStyle = { + if (!style.width) + return + const zoom = isWxml ? 1 : this.zoom + let width = style.width || textWidth + let height = style.height || textHeight + const rectStyle = { fill: style.background, border: style.border, - }; - style.padding = style.padding || [0, 0, 0, 0]; - width += (style.padding[1] || 0) + (style.padding[3] || 0); - height += (style.padding[0] || 0) + (style.padding[2] || 0); - width = width * zoom; - height = height * zoom; - this._drawRectToCanvas(item.x, item.y, width, height, rectStyle); + } + style.padding = style.padding || [0, 0, 0, 0] + width += (style.padding[1] || 0) + (style.padding[3] || 0) + height += (style.padding[0] || 0) + (style.padding[2] || 0) + width = width * zoom + height = height * zoom + this._drawRectToCanvas(item.x, item.y, width, height, rectStyle) } _drawCircle(item, style, resolve, reject, isImage, isWxml) { - let zoom = this.zoom; - let r = style.r; + const zoom = this.zoom + let r = style.r try { - item.x = this._resetPositionX(item, style); - item.y = this._resetPositionY(item, style); + item.x = this._resetPositionX(item, style) + item.y = this._resetPositionY(item, style) - let url; + let url if (isImage) { - let index = this._findPicIndex(item.url); + const index = this._findPicIndex(item.url) if (index > -1) { - url = this.allPic[index].local; - } else { - url = item.url; + url = this.allPic[index].local + } + else { + url = item.url } } if (!isWxml) { - r = r * zoom; + r = r * zoom } - this._drawCircleToCanvas(item.x, item.y, r, style, url); - - this._updateProgress(item.progress); - resolve && resolve(); - } catch (e) { - reject && - reject({ - errcode: isImage ? 1006 : 1005, - errmsg: isImage ? "drawCircleImage error" : "drawCircle error", - e, - }); + this._drawCircleToCanvas(item.x, item.y, r, style, url) + + this._updateProgress(item.progress) + resolve && resolve() + } + catch (e) { + reject + && reject({ + errcode: isImage ? 1006 : 1005, + errmsg: isImage ? 'drawCircleImage error' : 'drawCircle error', + e, + }) } } _drawCircleToCanvas(x, y, r, style, url) { - let { fill, border, boxShadow } = style; + const { fill, border, boxShadow } = style - this.ctx.save(); + this.ctx.save() this._drawBoxShadow(boxShadow, (res) => { // 真机上填充渐变色时,没有阴影,先画个相等大小的纯色矩形来实现阴影 - if ((fill && typeof fill !== "string") || (url && res.color)) { - this.ctx.setFillStyle(res.color || "#ffffff"); - this.ctx.beginPath(); - this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI); - this.ctx.closePath(); - this.ctx.fill(); + if ((fill && typeof fill !== 'string') || (url && res.color)) { + this.ctx.setFillStyle(res.color || '#ffffff') + this.ctx.beginPath() + this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI) + this.ctx.closePath() + this.ctx.fill() } - }); + }) if (url) { - this.ctx.save(); - this.ctx.beginPath(); - this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI); - this.ctx.clip(); - this.ctx.drawImage(url, x, y, r * 2, r * 2); - this.ctx.closePath(); - this.ctx.restore(); - } else { + this.ctx.save() + this.ctx.beginPath() + this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI) + this.ctx.clip() + this.ctx.drawImage(url, x, y, r * 2, r * 2) + this.ctx.closePath() + this.ctx.restore() + } + else { this._setFill(fill, () => { - this.ctx.beginPath(); - this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI); - this.ctx.closePath(); - this.ctx.fill(); - }); + this.ctx.beginPath() + this.ctx.arc(x + r, y + r, r, 0, 2 * Math.PI) + this.ctx.closePath() + this.ctx.fill() + }) } this._drawBorder(border, style, (border) => { - this.ctx.beginPath(); - this.ctx.arc(x + r, y + r, r + border.width / 2, 0, 2 * Math.PI); - this.ctx.stroke(); - this.ctx.closePath(); - }); - - this.ctx.draw(true); - this.ctx.restore(); + this.ctx.beginPath() + this.ctx.arc(x + r, y + r, r + border.width / 2, 0, 2 * Math.PI) + this.ctx.stroke() + this.ctx.closePath() + }) + + this.ctx.draw(true) + this.ctx.restore() } _drawLine(item, style, resolve, reject, isWxml) { - let zoom = this.zoom; + const zoom = this.zoom try { - let x1 = item.x * zoom + this.translateX; - let y1 = item.y * zoom + this.translateY; - let x2 = item.x2 * zoom + this.translateX; - let y2 = item.y2 * zoom + this.translateY; - this._drawLineToCanvas(x1, y1, x2, y2, style); - - this._updateProgress(item.progress); - resolve && resolve(); - } catch (e) { - reject && reject({ errcode: 1007, errmsg: "drawLine error", e }); + const x1 = item.x * zoom + this.translateX + const y1 = item.y * zoom + this.translateY + const x2 = item.x2 * zoom + this.translateX + const y2 = item.y2 * zoom + this.translateY + this._drawLineToCanvas(x1, y1, x2, y2, style) + + this._updateProgress(item.progress) + resolve && resolve() + } + catch (e) { + reject && reject({ errcode: 1007, errmsg: 'drawLine error', e }) } } _drawLineToCanvas(x1, y1, x2, y2, style) { - let { stroke, dash, boxShadow } = style; + const { stroke, dash, boxShadow } = style - this.ctx.save(); + this.ctx.save() if (stroke) { - this._setStroke(stroke); + this._setStroke(stroke) } - this._drawBoxShadow(boxShadow); + this._drawBoxShadow(boxShadow) if (dash) { - let dash = [style.dash[0] || 5, style.dash[1] || 5]; - let offset = style.dash[2] || 0; - this.ctx.setLineDash(dash, offset || 0); + const dash = [style.dash[0] || 5, style.dash[1] || 5] + const offset = style.dash[2] || 0 + this.ctx.setLineDash(dash, offset || 0) } - this.ctx.moveTo(x1, y1); - this.ctx.setLineWidth((style.width || 1) * this.zoom); - this.ctx.lineTo(x2, y2); - this.ctx.stroke(); - this.ctx.draw(true); - this.ctx.restore(); + this.ctx.moveTo(x1, y1) + this.ctx.setLineWidth((style.width || 1) * this.zoom) + this.ctx.lineTo(x2, y2) + this.ctx.stroke() + this.ctx.draw(true) + this.ctx.restore() } // 废弃,合并到_drawRect _drawImage(item, style, resolve, reject, isWxml) { - let zoom = this.zoom; + const zoom = this.zoom try { - item.x = this._resetPositionX(item, style); - item.y = this._resetPositionY(item, style); - item.x = item.x + (style.padding[3] || 0); - item.y = item.y + (style.padding[0] || 0); - - let index = this._findPicIndex(item.url); - let url = index > -1 ? this.allPic[index].local : item.url; - this._drawImageToCanvas(url, item.x, item.y, style.width * zoom, style.height * zoom, style); - - this._updateProgress(item.progress); - resolve && resolve(); - } catch (e) { - reject && reject({ errcode: 1012, errmsg: "drawRect error", e }); + item.x = this._resetPositionX(item, style) + item.y = this._resetPositionY(item, style) + item.x = item.x + (style.padding[3] || 0) + item.y = item.y + (style.padding[0] || 0) + + const index = this._findPicIndex(item.url) + const url = index > -1 ? this.allPic[index].local : item.url + this._drawImageToCanvas(url, item.x, item.y, style.width * zoom, style.height * zoom, style) + + this._updateProgress(item.progress) + resolve && resolve() + } + catch (e) { + reject && reject({ errcode: 1012, errmsg: 'drawRect error', e }) } } // 废弃,合并到_drawRect _drawImageToCanvas(url, x, y, width, height, style) { - let { fill, border, boxShadow } = style; - this.ctx.save(); + const { fill, border, boxShadow } = style + this.ctx.save() - this._drawBoxShadow(boxShadow); - this.ctx.drawImage(url, x, y, width, height); + this._drawBoxShadow(boxShadow) + this.ctx.drawImage(url, x, y, width, height) this._drawBorder(border, style, (border) => { - let fixBorder = border.width; - this.ctx.strokeRect(x - fixBorder / 2, y - fixBorder / 2, width + fixBorder, height + fixBorder); - }); - this.ctx.draw(true); - this.ctx.restore(); + const fixBorder = border.width + this.ctx.strokeRect(x - fixBorder / 2, y - fixBorder / 2, width + fixBorder, height + fixBorder) + }) + this.ctx.draw(true) + this.ctx.restore() } _drawWxml(item, style, resolve, reject) { - let self = this; - let all = []; + const self = this + let all = [] try { this._getWxml(item, style).then((results) => { // 上 -> 下 - let sorted = self._sortListByTop(results[0]); - let count = 0; - let progress = 0; + const sorted = self._sortListByTop(results[0]) + let count = 0 + let progress = 0 Object.keys(sorted).forEach((item) => { - count += sorted[item].length; - }); - progress = (this.distance * 3) / (count || 1); + count += sorted[item].length + }) + progress = (this.distance * 3) / (count || 1) - all = this._drawWxmlBlock(item, sorted, all, progress, results[1]); - all = this._drawWxmlInline(item, sorted, all, progress, results[1]); + all = this._drawWxmlBlock(item, sorted, all, progress, results[1]) + all = this._drawWxmlInline(item, sorted, all, progress, results[1]) Promise.all(all) .then((results) => { - resolve && resolve(); + resolve && resolve() }) .catch((e) => { - reject && reject(e); - }); - }); - } catch (e) { - reject && reject({ errcode: 1008, errmsg: "drawWxml error" }); + reject && reject(e) + }) + }) + } + catch (e) { + reject && reject({ errcode: 1008, errmsg: 'drawWxml error' }) } } _drawWxmlBlock(item, sorted, all, progress, results) { - let self = this; + const self = this // 用来限定位置范围,取相对位置 - let limitLeft = results ? results.left : 0; - let limitTop = results ? results.top : 0; + const limitLeft = results ? results.left : 0 + const limitTop = results ? results.top : 0 Object.keys(sorted).forEach((top, topIndex) => { // 左 -> 右 let list = sorted[top].sort((a, b) => { - return a.left - b.left; - }); + return a.left - b.left + }) - list = list.filter((sub) => sub.dataset.type && sub.dataset.type.indexOf("inline") === -1); + list = list.filter(sub => sub.dataset.type && !sub.dataset.type.includes('inline')) list.forEach((sub, index) => { all[index] = new Promise((resolve2, reject2) => { - sub = self._transferWxmlStyle(sub, item, limitLeft, limitTop); - sub.progress = progress; - let type = sub.dataset.type; + sub = self._transferWxmlStyle(sub, item, limitLeft, limitTop) + sub.progress = progress + const type = sub.dataset.type if (sub.dataset.delay) { setTimeout(() => { - drawWxmlItem(); - }, sub.dataset.delay); - } else { - drawWxmlItem(); + drawWxmlItem() + }, sub.dataset.delay) + } + else { + drawWxmlItem() } function drawWxmlItem() { - if (type === "text") { - self._drawWxmlText(sub, resolve2, reject2); - } else if (type === "image") { - self._drawWxmlImage(sub, resolve2, reject2); - } else if (type === "radius-image") { - self._drawWxmlCircleImage(sub, resolve2, reject2); - } else if (type === "background-image") { - self._drawWxmlBackgroundImage(sub, resolve2, reject2); + if (type === 'text') { + self._drawWxmlText(sub, resolve2, reject2) + } + else if (type === 'image') { + self._drawWxmlImage(sub, resolve2, reject2) + } + else if (type === 'radius-image') { + self._drawWxmlCircleImage(sub, resolve2, reject2) + } + else if (type === 'background-image') { + self._drawWxmlBackgroundImage(sub, resolve2, reject2) } } - }); - }); - }); + }) + }) + }) - return all; + return all } _drawWxmlInline(item, sorted, all, progress, results) { - let self = this; - let topOffset = 0; - let leftOffset = 0; - let lastTop = 0; - let limitLeft = results ? results.left : 0; - let limitTop = results ? results.top : 0; - let p = new Promise((resolve2, reject2) => { - let maxWidth = 0; - let minLeft = Infinity; - let maxRight = 0; + const self = this + let topOffset = 0 + let leftOffset = 0 + let lastTop = 0 + const limitLeft = results ? results.left : 0 + const limitTop = results ? results.top : 0 + const p = new Promise((resolve2, reject2) => { + let maxWidth = 0 + let minLeft = Infinity + let maxRight = 0 // 找出同一top下的最小left和最大right,得到最大的宽度,用于换行 Object.keys(sorted).forEach((top) => { - let inlineList = sorted[top].filter((sub) => sub.dataset.type && sub.dataset.type.indexOf("inline") > -1); + const inlineList = sorted[top].filter(sub => sub.dataset.type && sub.dataset.type.includes('inline')) inlineList.forEach((sub) => { if (sub.left < minLeft) { - minLeft = sub.left; + minLeft = sub.left } if (sub.right > maxRight) { - maxRight = sub.right; + maxRight = sub.right } - }); - }); - maxWidth = Math.ceil(maxRight - minLeft || self.width); + }) + }) + maxWidth = Math.ceil(maxRight - minLeft || self.width) Object.keys(sorted).forEach((top, topIndex) => { // 左 -> 右 - let list = sorted[top].sort((a, b) => { - return a.left - b.left; - }); + const list = sorted[top].sort((a, b) => { + return a.left - b.left + }) // 换行的行内元素left放到后面,version2.0.6后无法获取高度,改用bottom值来判断是否换行了 - let position = -1; + let position = -1 for (let i = 0, len = list.length; i < len; i++) { if (list[i] && list[i + 1]) { if (list[i].bottom > list[i + 1].bottom) { - position = i; - break; + position = i + break } } } if (position > -1) { - list.push(list.splice(position, 1)[0]); + list.push(list.splice(position, 1)[0]) } - let inlineList = list.filter((sub) => sub.dataset.type && sub.dataset.type.indexOf("inline") > -1); - let originLeft = inlineList[0] ? inlineList[0].left : 0; + const inlineList = list.filter(sub => sub.dataset.type && sub.dataset.type.includes('inline')) + const originLeft = inlineList[0] ? inlineList[0].left : 0 // 换行后和top不相等时,认为是换行了,要清除左边距;当左偏移量大于最大宽度时,也要清除左边距; 当左偏移小于左边距时,也要清除 if ( - Math.abs(topOffset + lastTop - top) > 2 || - leftOffset - originLeft - limitLeft >= maxWidth || - leftOffset <= originLeft - limitLeft - 2 + Math.abs(topOffset + lastTop - top) > 2 + || leftOffset - originLeft - limitLeft >= maxWidth + || leftOffset <= originLeft - limitLeft - 2 ) { - leftOffset = 0; + leftOffset = 0 } - lastTop = +top; - topOffset = 0; + lastTop = +top + topOffset = 0 inlineList.forEach((sub, index) => { - sub = self._transferWxmlStyle(sub, item, limitLeft, limitTop); - sub.progress = progress; - let type = sub.dataset.type; - if (type === "inline-text") { - let drawRes = self._drawWxmlInlineText(sub, leftOffset, maxWidth); - leftOffset = drawRes.leftOffset; - topOffset = drawRes.topOffset; - } else if (type === "inline-image") { - let drawRes = self._drawWxmlImage(sub) || {}; - leftOffset = drawRes.leftOffset || 0; - topOffset = drawRes.topOffset || 0; + sub = self._transferWxmlStyle(sub, item, limitLeft, limitTop) + sub.progress = progress + const type = sub.dataset.type + if (type === 'inline-text') { + const drawRes = self._drawWxmlInlineText(sub, leftOffset, maxWidth) + leftOffset = drawRes.leftOffset + topOffset = drawRes.topOffset + } + else if (type === 'inline-image') { + const drawRes = self._drawWxmlImage(sub) || {} + leftOffset = drawRes.leftOffset || 0 + topOffset = drawRes.topOffset || 0 } - }); - }); - resolve2(); - }); + }) + }) + resolve2() + }) - all.push(p); - return all; + all.push(p) + return all } _drawWxmlInlineText(sub, leftOffset = 0, maxWidth) { - let text = sub.dataset.text || ""; + let text = sub.dataset.text || '' if (sub.dataset.maxlength && text.length > sub.dataset.maxlength) { - text = text.substring(0, sub.dataset.maxlength) + "..."; + text = `${text.substring(0, sub.dataset.maxlength)}...` } - let textData = { + const textData = { text, originX: sub.left, - x: leftOffset ? leftOffset : sub.left, + x: leftOffset || sub.left, y: sub.top, progress: sub.progress, - leftOffset: leftOffset, - maxWidth: maxWidth, // 行内元素的最大宽度,取决于limit的宽度 - }; - - if (sub.backgroundColor !== "rgba(0, 0, 0, 0)") { - sub.background = sub.backgroundColor; - } else { - sub.background = "rgba(0, 0, 0, 0)"; + leftOffset, + maxWidth, // 行内元素的最大宽度,取决于limit的宽度 + } + + if (sub.backgroundColor !== 'rgba(0, 0, 0, 0)') { + sub.background = sub.backgroundColor + } + else { + sub.background = 'rgba(0, 0, 0, 0)' } if (sub.dataset.background) { - sub.background = sub.dataset.background; + sub.background = sub.dataset.background } - let res = this._drawText(textData, sub, null, null, "inline-text", "wxml"); + const res = this._drawText(textData, sub, null, null, 'inline-text', 'wxml') - return res; + return res } _drawWxmlText(sub, resolve, reject) { - let text = sub.dataset.text || ""; + let text = sub.dataset.text || '' if (sub.dataset.maxlength && text.length > sub.dataset.maxlength) { - text = text.substring(0, sub.dataset.maxlength) + "..."; + text = `${text.substring(0, sub.dataset.maxlength)}...` } - let textData = { + const textData = { text, x: sub.left, y: sub.top, progress: sub.progress, - }; - if (sub.backgroundColor !== "rgba(0, 0, 0, 0)") { - sub.background = sub.backgroundColor; - } else { - sub.background = "rgba(0, 0, 0, 0)"; + } + if (sub.backgroundColor !== 'rgba(0, 0, 0, 0)') { + sub.background = sub.backgroundColor + } + else { + sub.background = 'rgba(0, 0, 0, 0)' } if (sub.dataset.background) { - sub.background = sub.dataset.background; + sub.background = sub.dataset.background } - this._drawText(textData, sub, resolve, reject, "text", "wxml"); + this._drawText(textData, sub, resolve, reject, 'text', 'wxml') } _drawWxmlImage(sub, resolve, reject) { - let imageData = { + const imageData = { url: sub.dataset.url, x: sub.left, y: sub.top, progress: sub.progress, - }; + } - let res = this._drawRect(imageData, sub, resolve, reject, "image", "inline-wxml"); + const res = this._drawRect(imageData, sub, resolve, reject, 'image', 'inline-wxml') - return res; + return res } _drawWxmlCircleImage(sub, resolve, reject) { - let imageData = { + const imageData = { url: sub.dataset.url, x: sub.left, y: sub.top, progress: sub.progress, - }; - sub.r = sub.width / 2; + } + sub.r = sub.width / 2 - this._drawCircle(imageData, sub, resolve, reject, true, "wxml"); + this._drawCircle(imageData, sub, resolve, reject, true, 'wxml') } _drawWxmlBackgroundImage(sub, resolve, reject) { - let url = sub.dataset.url; - let index = this._findPicIndex(url); - url = index > -1 ? this.allPic[index].local : url; - let size = sub.backgroundSize.replace(/px/g, "").split(" "); + let url = sub.dataset.url + const index = this._findPicIndex(url) + url = index > -1 ? this.allPic[index].local : url + const size = sub.backgroundSize.replace(/px/g, '').split(' ') - let imageData = { - url: url, + const imageData = { + url, x: sub.left, y: sub.top, progress: sub.progress, - }; + } - this._drawRect(imageData, sub, resolve, reject, "image", "wxml"); + this._drawRect(imageData, sub, resolve, reject, 'image', 'wxml') } _getWxml(item, style) { - let self = this; - let query; + const self = this + let query // if (this.obj) { // query = wx.createSelectorQuery().in(this.obj); // } else { // query = wx.createSelectorQuery(); // } if (this.object) { - query = wx.createSelectorQuery().in(this.object); - } else { - query = wx.createSelectorQuery(); + query = wx.createSelectorQuery().in(this.object) + } + else { + query = wx.createSelectorQuery() } - let p1 = new Promise((resolve, reject) => { + const p1 = new Promise((resolve, reject) => { // 会触发两次,要限制 - let count = 0; + let count = 0 query .selectAll(`${item.class}`) .fields( @@ -1182,56 +1226,56 @@ module.exports = (function () { size: true, rect: true, computedStyle: [ - "width", - "height", - "font", - "fontSize", - "fontFamily", - "fontWeight", - "fontStyle", - "textAlign", - "color", - "lineHeight", - "border", - "borderColor", - "borderStyle", - "borderWidth", - "verticalAlign", - "boxShadow", - "background", - "backgroundColor", - "backgroundImage", - "backgroundPosition", - "backgroundSize", - "paddingLeft", - "paddingTop", - "paddingRight", - "paddingBottom", + 'width', + 'height', + 'font', + 'fontSize', + 'fontFamily', + 'fontWeight', + 'fontStyle', + 'textAlign', + 'color', + 'lineHeight', + 'border', + 'borderColor', + 'borderStyle', + 'borderWidth', + 'verticalAlign', + 'boxShadow', + 'background', + 'backgroundColor', + 'backgroundImage', + 'backgroundPosition', + 'backgroundSize', + 'paddingLeft', + 'paddingTop', + 'paddingRight', + 'paddingBottom', ], }, (res) => { if (count++ === 0) { - let formated = self._formatImage(res); - let list = formated.list; - res = formated.res; + const formated = self._formatImage(res) + const list = formated.list + res = formated.res self ._preloadImage(list) .then((result) => { - resolve(res); + resolve(res) }) .catch((res) => { - reject && reject({ errcode: 1009, errmsg: "drawWxml preLoadImage error" }); - }); + reject && reject({ errcode: 1009, errmsg: 'drawWxml preLoadImage error' }) + }) } }, ) - .exec(); - }); + .exec() + }) - let p2 = new Promise((resolve, reject) => { + const p2 = new Promise((resolve, reject) => { if (!item.limit) { - resolve({ top: 0, width: self.width / self.zoom }); + resolve({ top: 0, width: self.width / self.zoom }) } query @@ -1243,113 +1287,119 @@ module.exports = (function () { rect: true, }, (res) => { - resolve(res); + resolve(res) }, ) - .exec(); - }); + .exec() + }) - return Promise.all([p1, p2]); + return Promise.all([p1, p2]) } _getLineHeight(style) { - let zoom = this.zoom; + let zoom = this.zoom if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } - let lineHeight; + let lineHeight if (!isNaN(style.lineHeight) && style.lineHeight > style.fontSize) { - lineHeight = style.lineHeight; - } else { - style.lineHeight = (style.lineHeight || "") + ""; - lineHeight = +style.lineHeight.replace("px", ""); - lineHeight = lineHeight ? lineHeight : (style.fontSize || 14) * 1.2; + lineHeight = style.lineHeight + } + else { + style.lineHeight = `${style.lineHeight || ''}` + lineHeight = +style.lineHeight.replace('px', '') + lineHeight = lineHeight || (style.fontSize || 14) * 1.2 } - return lineHeight * zoom; + return lineHeight * zoom } _formatImage(res = []) { - let list = []; + const list = [] res.forEach((item, index) => { - let dataset = item.dataset; - let uid = Util.getUid(); - let filename = `${wx.env.USER_DATA_PATH}/${uid}.png`; - if ((dataset.type === "image" || dataset.type === "radius-image") && dataset.url) { - let sub = { + const dataset = item.dataset + const uid = Util.getUid() + const filename = `${wx.env.USER_DATA_PATH}/${uid}.png` + if ((dataset.type === 'image' || dataset.type === 'radius-image') && dataset.url) { + const sub = { url: dataset.base64 ? filename : dataset.url, isBase64: dataset.base64 ? dataset.url : false, - }; + } - res[index].dataset = Object.assign(res[index].dataset, sub); - list.push(sub); - } else if (dataset.type === "background-image" && item.backgroundImage.indexOf("url") > -1) { - let url = item.backgroundImage.replace(/url\((\"|\')?/, "").replace(/(\"|\')?\)$/, ""); - let sub = { + res[index].dataset = Object.assign(res[index].dataset, sub) + list.push(sub) + } + else if (dataset.type === 'background-image' && item.backgroundImage.includes('url')) { + const url = item.backgroundImage.replace(/url\(("|')?/, '').replace(/("|')?\)$/, '') + const sub = { url: dataset.base64 ? filename : url, isBase64: dataset.base64 ? url : false, - }; - res[index].dataset = Object.assign(res[index].dataset, sub); - list.push(sub); + } + res[index].dataset = Object.assign(res[index].dataset, sub) + list.push(sub) } - }); + }) - return { list, res }; + return { list, res } } _updateProgress(distance) { - this.progressPercent += distance; - this.progress(this.progressPercent); + this.progressPercent += distance + this.progress(this.progressPercent) } _sortListByTop(list = []) { - let sorted = {}; + const sorted = {} // 粗略地认为2px相差的元素在同一行 list.forEach((item, index) => { - let top = item.top; + let top = item.top if (!sorted[top]) { if (sorted[top - 2]) { - top = top - 2; - } else if (sorted[top - 1]) { - top = top - 1; - } else if (sorted[top + 1]) { - top = top + 1; - } else if (sorted[top + 2]) { - top = top + 2; - } else { - sorted[top] = []; + top = top - 2 + } + else if (sorted[top - 1]) { + top = top - 1 + } + else if (sorted[top + 1]) { + top = top + 1 + } + else if (sorted[top + 2]) { + top = top + 2 + } + else { + sorted[top] = [] } } - sorted[top].push(item); - }); + sorted[top].push(item) + }) - return sorted; + return sorted } _parseNumber(number) { - return isNaN(number) ? +(number || "").replace("px", "") : number; + return isNaN(number) ? +(number || '').replace('px', '') : number } _transferWxmlStyle(sub, item, limitLeft, limitTop) { - let leftFix = +sub.dataset.left || 0; - let topFix = +sub.dataset.top || 0; + const leftFix = +sub.dataset.left || 0 + const topFix = +sub.dataset.top || 0 - sub.width = this._parseNumber(sub.width); - sub.height = this._parseNumber(sub.height); - sub.left = this._parseNumber(sub.left) - limitLeft + (leftFix + (item.x || 0)) * this.zoom; - sub.top = this._parseNumber(sub.top) - limitTop + (topFix + (item.y || 0)) * this.zoom; + sub.width = this._parseNumber(sub.width) + sub.height = this._parseNumber(sub.height) + sub.left = this._parseNumber(sub.left) - limitLeft + (leftFix + (item.x || 0)) * this.zoom + sub.top = this._parseNumber(sub.top) - limitTop + (topFix + (item.y || 0)) * this.zoom - let padding = sub.dataset.padding || "0 0 0 0"; - if (typeof padding === "string") { - padding = Util.transferPadding(padding); + let padding = sub.dataset.padding || '0 0 0 0' + if (typeof padding === 'string') { + padding = Util.transferPadding(padding) } - let paddingTop = Number(sub.paddingTop.replace("px", "")) + Number(padding[0]); - let paddingRight = Number(sub.paddingRight.replace("px", "")) + Number(padding[1]); - let paddingBottom = Number(sub.paddingBottom.replace("px", "")) + Number(padding[2]); - let paddingLeft = Number(sub.paddingLeft.replace("px", "")) + Number(padding[3]); - sub.padding = [paddingTop, paddingRight, paddingBottom, paddingLeft]; + const paddingTop = Number(sub.paddingTop.replace('px', '')) + Number(padding[0]) + const paddingRight = Number(sub.paddingRight.replace('px', '')) + Number(padding[1]) + const paddingBottom = Number(sub.paddingBottom.replace('px', '')) + Number(padding[2]) + const paddingLeft = Number(sub.paddingLeft.replace('px', '')) + Number(padding[3]) + sub.padding = [paddingTop, paddingRight, paddingBottom, paddingLeft] - return sub; + return sub } /** @@ -1358,25 +1408,26 @@ module.exports = (function () { * @param {*} style */ _resetPositionX(item, style) { - let zoom = this.zoom; - let x = 0; + let zoom = this.zoom + let x = 0 if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } // 通过wxml获取的不需要重置坐标 if (item.x < 0 && item.type) { - x = this.width + item.x * zoom - style.width * zoom; - } else { - x = item.x * zoom; + x = this.width + item.x * zoom - style.width * zoom + } + else { + x = item.x * zoom } - if (parseInt(style.borderWidth)) { - x += parseInt(style.borderWidth); + if (Number.parseInt(style.borderWidth)) { + x += Number.parseInt(style.borderWidth) } - return x + this.translateX; + return x + this.translateX } /** @@ -1385,24 +1436,25 @@ module.exports = (function () { * @param {*} style */ _resetPositionY(item, style, textHeight) { - let zoom = this.zoom; - let y = 0; + let zoom = this.zoom + let y = 0 if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } if (item.y < 0) { - y = this.height + item.y * zoom - (textHeight ? textHeight : style.height * zoom); - } else { - y = item.y * zoom; + y = this.height + item.y * zoom - (textHeight || style.height * zoom) + } + else { + y = item.y * zoom } - if (parseInt(style.borderWidth)) { - y += parseInt(style.borderWidth); + if (Number.parseInt(style.borderWidth)) { + y += Number.parseInt(style.borderWidth) } - return y + this.translateY; + return y + this.translateY } /** @@ -1412,17 +1464,18 @@ module.exports = (function () { * @param {*} textWidth */ _resetTextPositionX(item, style, textWidth, width) { - let textAlign = style.textAlign || "left"; - let x = item.x; - if (textAlign === "center") { - x = (width - textWidth) / 2 + item.x; - } else if (textAlign === "right") { - x = width - textWidth + item.x; + const textAlign = style.textAlign || 'left' + let x = item.x + if (textAlign === 'center') { + x = (width - textWidth) / 2 + item.x + } + else if (textAlign === 'right') { + x = width - textWidth + item.x } - let left = style.padding ? style.padding[3] || 0 : 0; + const left = style.padding ? style.padding[3] || 0 : 0 - return x + left + this.translateX; + return x + left + this.translateX } /** @@ -1432,21 +1485,21 @@ module.exports = (function () { * @param {*} textWidth */ _resetTextPositionY(item, style, lineNum = 0) { - let zoom = this.zoom; + let zoom = this.zoom if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } - let lineHeight = this._getLineHeight(style); - let fontSize = Math.ceil((style.fontSize || 14) * zoom); + const lineHeight = this._getLineHeight(style) + const fontSize = Math.ceil((style.fontSize || 14) * zoom) - let blockLineHeightFix = - ((style.dataset && style.dataset.type) || "").indexOf("inline") > -1 ? 0 : (lineHeight - fontSize) / 2; + const blockLineHeightFix + = ((style.dataset && style.dataset.type) || '').includes('inline') ? 0 : (lineHeight - fontSize) / 2 - let top = style.padding ? style.padding[0] || 0 : 0; + const top = style.padding ? style.padding[0] || 0 : 0 // y + lineheight偏移 + 行数 + paddingTop + 整体画布位移 - return item.y + blockLineHeightFix + lineNum * lineHeight + top + this.translateY; + return item.y + blockLineHeightFix + lineNum * lineHeight + top + this.translateY } /** @@ -1458,195 +1511,203 @@ module.exports = (function () { * @param {*} widthOffset */ _getTextSingleLine(text, width, singleLength, currentIndex = 0, widthOffset = 0) { - let offset = 0; - let endIndex = currentIndex + singleLength + offset; - let single = text.substring(currentIndex, endIndex); - let singleWidth = this.measureWidth(single); + let offset = 0 + let endIndex = currentIndex + singleLength + offset + let single = text.substring(currentIndex, endIndex) + let singleWidth = this.measureWidth(single) while (Math.round(widthOffset + singleWidth) > width) { - offset--; - endIndex = currentIndex + singleLength + offset; - single = text.substring(currentIndex, endIndex); - singleWidth = this.measureWidth(single); + offset-- + endIndex = currentIndex + singleLength + offset + single = text.substring(currentIndex, endIndex) + singleWidth = this.measureWidth(single) } return { endIndex, single, singleWidth, - }; + } } _drawBorder(border, style, callback) { - let zoom = this.zoom; + let zoom = this.zoom if (style.dataset && style.dataset.type) { - zoom = 1; + zoom = 1 } - border = Util.transferBorder(border); + border = Util.transferBorder(border) if (border && border.width) { // 空白阴影,清空掉边框的阴影 - this._drawBoxShadow(); + this._drawBoxShadow() if (border) { - this.ctx.setLineWidth(border.width * zoom); + this.ctx.setLineWidth(border.width * zoom) - if (border.style === "dashed") { - let dash = style.dash || [5, 5, 0]; - let offset = dash[2] || 0; - let array = [dash[0] || 5, dash[1] || 5]; - this.ctx.setLineDash(array, offset); + if (border.style === 'dashed') { + const dash = style.dash || [5, 5, 0] + const offset = dash[2] || 0 + const array = [dash[0] || 5, dash[1] || 5] + this.ctx.setLineDash(array, offset) } - this.ctx.setStrokeStyle(border.color); + this.ctx.setStrokeStyle(border.color) } - callback && callback(border); + callback && callback(border) } } _drawBoxShadow(boxShadow, callback) { - boxShadow = Util.transferBoxShadow(boxShadow); + boxShadow = Util.transferBoxShadow(boxShadow) if (boxShadow) { - this.ctx.setShadow(boxShadow.offsetX, boxShadow.offsetY, boxShadow.blur, boxShadow.color); - } else { - this.ctx.setShadow(0, 0, 0, "#ffffff"); + this.ctx.setShadow(boxShadow.offsetX, boxShadow.offsetY, boxShadow.blur, boxShadow.color) + } + else { + this.ctx.setShadow(0, 0, 0, '#ffffff') } - callback && callback(boxShadow || {}); + callback && callback(boxShadow || {}) } _setFill(fill, callback) { if (fill) { - if (typeof fill === "string") { - this.ctx.setFillStyle(fill); - } else { - let line = fill.line; - let color = fill.color; - let grd = this.ctx.createLinearGradient(line[0], line[1], line[2], line[3]); - grd.addColorStop(0, color[0]); - grd.addColorStop(1, color[1]); - this.ctx.setFillStyle(grd); + if (typeof fill === 'string') { + this.ctx.setFillStyle(fill) + } + else { + const line = fill.line + const color = fill.color + const grd = this.ctx.createLinearGradient(line[0], line[1], line[2], line[3]) + grd.addColorStop(0, color[0]) + grd.addColorStop(1, color[1]) + this.ctx.setFillStyle(grd) } - callback && callback(); + callback && callback() } } _setStroke(stroke, callback) { if (stroke) { - if (typeof stroke === "string") { - this.ctx.setStrokeStyle(stroke); - } else { - let line = stroke.line; - let color = stroke.color; - let grd = this.ctx.createLinearGradient(line[0], line[1], line[2], line[3]); - grd.addColorStop(0, color[0]); - grd.addColorStop(1, color[1]); - this.ctx.setStrokeStyle(grd); + if (typeof stroke === 'string') { + this.ctx.setStrokeStyle(stroke) + } + else { + const line = stroke.line + const color = stroke.color + const grd = this.ctx.createLinearGradient(line[0], line[1], line[2], line[3]) + grd.addColorStop(0, color[0]) + grd.addColorStop(1, color[1]) + this.ctx.setStrokeStyle(grd) } - callback && callback(); + callback && callback() } } } - if (!exports.__esModule) Object.defineProperty(exports, "__esModule", { value: true }); - exports.default = Wxml2Canvas; + if (!exports.__esModule) + Object.defineProperty(exports, '__esModule', { value: true }) + exports.default = Wxml2Canvas }, - function (modId) { - var map = { "./util": 1685064731948 }; - return __REQUIRE__(map[modId], modId); + (modId) => { + const map = { './util': 1685064731948 } + return __REQUIRE__(map[modId], modId) }, - ); + ) __DEFINE__( 1685064731948, - function (require, module, exports) { + (require, module, exports) => { /** * 获取字符的长度,full为true时,一个汉字算两个长度 - * @param {String} str - * @param {Boolean} full + * @param {string} str + * @param {boolean} full */ function getTextLength(str, full) { - let len = 0; + let len = 0 for (let i = 0; i < str.length; i++) { - let c = str.charCodeAt(i); - //单字节加1 - if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) { - len++; - } else { - len += full ? 2 : 1; + const c = str.charCodeAt(i) + // 单字节加1 + if ((c >= 0x0001 && c <= 0x007E) || (c >= 0xFF60 && c <= 0xFF9F)) { + len++ + } + else { + len += full ? 2 : 1 } } - return len; + return len } /** * rgba(255, 255, 255, 1) => #ffffff - * @param {String} color + * @param {string} color */ - function transferColor(color = "") { - let res = "#"; - color = color.replace(/^rgba?\(/, "").replace(/\)$/, ""); - color = color.split(", "); + function transferColor(color = '') { + let res = '#' + color = color.replace(/^rgba?\(/, '').replace(/\)$/, '') + color = color.split(', ') - color.length > 3 ? (color.length = 3) : ""; + color.length > 3 ? (color.length = 3) : '' for (let item of color) { - item = parseInt(item || 0); + item = Number.parseInt(item || 0) if (item < 10) { - res += "0" + item; - } else { - res += item.toString(16); + res += `0${item}` + } + else { + res += item.toString(16) } } - return res; + return res } - function transferBorder(border = "") { - let res = border.match(/(\w+)px\s(\w+)\s(.*)/); - let obj = {}; + function transferBorder(border = '') { + const res = border.match(/(\w+)px\s(\w+)\s(.*)/) + let obj = {} if (res) { obj = { width: +res[1], style: res[2], color: res[3], - }; + } } - return res ? obj : null; + return res ? obj : null } /** * 内边距,依次为上右下左 * @param {*} padding */ - function transferPadding(padding = "0 0 0 0") { - padding = padding.split(" "); + function transferPadding(padding = '0 0 0 0') { + padding = padding.split(' ') for (let i = 0, len = padding.length; i < len; i++) { - padding[i] = +padding[i].replace("px", ""); + padding[i] = +padding[i].replace('px', '') } - return padding; + return padding } /** * type1: 0, 25, 17, rgba(0, 0, 0, 0.3) * type2: rgba(0, 0, 0, 0.3) 0px 25px 17px 0px => (0, 25, 17, rgba(0, 0, 0, 0.3)) * @param {*} shadow */ - function transferBoxShadow(shadow = "", type) { - if (!shadow || shadow === "none") return; - let color; - let split; + function transferBoxShadow(shadow = '', type) { + if (!shadow || shadow === 'none') + return + let color + let split - split = shadow.match(/(\w+)\s(\w+)\s(\w+)\s(rgb.*)/); + split = shadow.match(/(\w+)\s(\w+)\s(\w+)\s(rgb.*)/) if (split) { - split.shift(); - shadow = split; - color = split[3] || "#ffffff"; - } else { - split = shadow.split(") "); - color = split[0] + ")"; - shadow = split[1].split("px "); + split.shift() + shadow = split + color = split[3] || '#ffffff' + } + else { + split = shadow.split(') ') + color = `${split[0]})` + shadow = split[1].split('px ') } return { @@ -1654,23 +1715,24 @@ module.exports = (function () { offsetY: +shadow[1] || 0, blur: +shadow[2] || 0, color, - }; + } } function getUid(prefix) { - prefix = prefix || ""; + prefix = prefix || '' return ( - prefix + - "xxyxxyxx".replace(/[xy]/g, (c) => { - let r = (Math.random() * 16) | 0; - let v = c === "x" ? r : (r & 0x3) | 0x8; - return v.toString(16); + prefix + + 'xxyxxyxx'.replace(/[xy]/g, (c) => { + const r = (Math.random() * 16) | 0 + const v = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString(16) }) - ); + ) } - if (!exports.__esModule) Object.defineProperty(exports, "__esModule", { value: true }); + if (!exports.__esModule) + Object.defineProperty(exports, '__esModule', { value: true }) exports.default = { getTextLength, transferBorder, @@ -1678,14 +1740,14 @@ module.exports = (function () { transferPadding, transferBoxShadow, getUid, - }; + } }, - function (modId) { - var map = {}; - return __REQUIRE__(map[modId], modId); + (modId) => { + const map = {} + return __REQUIRE__(map[modId], modId) }, - ); - return __REQUIRE__(1685064731946); -})(); -//miniprogram-npm-outsideDeps=[] -//# sourceMappingURL=index.js.map + ) + return __REQUIRE__(1685064731946) +})() +// miniprogram-npm-outsideDeps=[] +// # sourceMappingURL=index.js.map diff --git a/src/components/ec-canvas/ec-canvas.js b/src/components/ec-canvas/ec-canvas.js index 1b4c9aa..3d7223f 100644 --- a/src/components/ec-canvas/ec-canvas.js +++ b/src/components/ec-canvas/ec-canvas.js @@ -1,31 +1,32 @@ -import WxCanvas from './wx-canvas'; +import WxCanvas from './wx-canvas' -let ctx; -let echarts; +let ctx +let echarts function compareVersion(v1, v2) { - v1 = v1.split('.'); - v2 = v2.split('.'); - const len = Math.max(v1.length, v2.length); + v1 = v1.split('.') + v2 = v2.split('.') + const len = Math.max(v1.length, v2.length) while (v1.length < len) { - v1.push('0'); + v1.push('0') } while (v2.length < len) { - v2.push('0'); + v2.push('0') } for (let i = 0; i < len; i++) { - const num1 = parseInt(v1[i]); - const num2 = parseInt(v2[i]); + const num1 = Number.parseInt(v1[i]) + const num2 = Number.parseInt(v2[i]) if (num1 > num2) { - return 1; - } else if (num1 < num2) { - return -1; + return 1 + } + else if (num1 < num2) { + return -1 } } - return 0; + return 0 } Component({ @@ -49,223 +50,230 @@ Component({ isUseNewCanvas: false, }, - ready: async function () { - echarts = await require.async('../../gift/compontnts/echart/echarts.js'); + async ready() { + echarts = await require.async('../../gift/compontnts/echart/echarts.js') // Disable prograssive because drawImage doesn't support DOM as parameter // See https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html echarts.registerPreprocessor((option) => { if (option && option.series) { if (option.series.length > 0) { option.series.forEach((series) => { - series.progressive = 0; - }); - } else if (typeof option.series === 'object') { - option.series.progressive = 0; + series.progressive = 0 + }) + } + else if (typeof option.series === 'object') { + option.series.progressive = 0 } } - }); + }) if (!this.data.ec) { console.warn( - '组件需绑定 ec 变量,例:', - ); - return; + '组件需绑定 ec 变量,例:', + ) + return } if (!this.data.ec.lazyLoad) { - this.init(); + this.init() } }, methods: { - init: async function (callback) { - echarts = await require.async('../../gift/compontnts/echart/echarts.js'); - const version = wx.getSystemInfoSync().SDKVersion; + async init(callback) { + echarts = await require.async('../../gift/compontnts/echart/echarts.js') + const version = wx.getSystemInfoSync().SDKVersion - const canUseNewCanvas = compareVersion(version, '2.9.0') >= 0; - const forceUseOldCanvas = this.data.forceUseOldCanvas; - const isUseNewCanvas = canUseNewCanvas && !forceUseOldCanvas; - this.setData({ isUseNewCanvas }); + const canUseNewCanvas = compareVersion(version, '2.9.0') >= 0 + const forceUseOldCanvas = this.data.forceUseOldCanvas + const isUseNewCanvas = canUseNewCanvas && !forceUseOldCanvas + this.setData({ isUseNewCanvas }) if (forceUseOldCanvas && canUseNewCanvas) { - console.warn('开发者强制使用旧canvas,建议关闭'); + console.warn('开发者强制使用旧canvas,建议关闭') } if (isUseNewCanvas) { // console.log('微信基础库版本大于2.9.0,开始使用'); // 2.9.0 可以使用 - this.initByNewWay(callback); - } else { - const isValid = compareVersion(version, '1.9.91') >= 0; + this.initByNewWay(callback) + } + else { + const isValid = compareVersion(version, '1.9.91') >= 0 if (!isValid) { console.error( - '微信基础库版本过低,需大于等于 1.9.91。' + - '参见:https://github.com/ecomfe/echarts-for-weixin' + - '#%E5%BE%AE%E4%BF%A1%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82', - ); - return; - } else { - console.warn('建议将微信基础库调整大于等于2.9.0版本。升级后绘图将有更好性能'); - this.initByOldWay(callback); + '微信基础库版本过低,需大于等于 1.9.91。' + + '参见:https://github.com/ecomfe/echarts-for-weixin' + + '#%E5%BE%AE%E4%BF%A1%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82', + ) + } + else { + console.warn('建议将微信基础库调整大于等于2.9.0版本。升级后绘图将有更好性能') + this.initByOldWay(callback) } } }, initByOldWay(callback) { // 1.9.91 <= version < 2.9.0:原来的方式初始化 - ctx = wx.createCanvasContext(this.data.canvasId, this); - const canvas = new WxCanvas(ctx, this.data.canvasId, false); + ctx = wx.createCanvasContext(this.data.canvasId, this) + const canvas = new WxCanvas(ctx, this.data.canvasId, false) echarts.setCanvasCreator(() => { - return canvas; - }); + return canvas + }) // const canvasDpr = wx.getSystemInfoSync().pixelRatio // 微信旧的canvas不能传入dpr - const canvasDpr = 1; - var query = wx.createSelectorQuery().in(this); + const canvasDpr = 1 + const query = wx.createSelectorQuery().in(this) query .select('.ec-canvas') .boundingClientRect((res) => { if (typeof callback === 'function') { - this.chart = callback(canvas, res.width, res.height, canvasDpr); - } else if (this.data.ec && typeof this.data.ec.onInit === 'function') { - this.chart = this.data.ec.onInit(canvas, res.width, res.height, canvasDpr); - } else { + this.chart = callback(canvas, res.width, res.height, canvasDpr) + } + else if (this.data.ec && typeof this.data.ec.onInit === 'function') { + this.chart = this.data.ec.onInit(canvas, res.width, res.height, canvasDpr) + } + else { this.triggerEvent('init', { - canvas: canvas, + canvas, width: res.width, height: res.height, - canvasDpr: canvasDpr, // 增加了dpr,可方便外面echarts.init - }); + canvasDpr, // 增加了dpr,可方便外面echarts.init + }) } }) - .exec(); + .exec() }, initByNewWay(callback) { // version >= 2.9.0:使用新的方式初始化 - const query = wx.createSelectorQuery().in(this); + const query = wx.createSelectorQuery().in(this) query .select('.ec-canvas') .fields({ node: true, size: true }) .exec((res) => { - const canvasNode = res[0].node; - this.canvasNode = canvasNode; + const canvasNode = res[0].node + this.canvasNode = canvasNode - const canvasDpr = wx.getSystemInfoSync().pixelRatio; - const canvasWidth = res[0].width; - const canvasHeight = res[0].height; + const canvasDpr = wx.getSystemInfoSync().pixelRatio + const canvasWidth = res[0].width + const canvasHeight = res[0].height - const ctx = canvasNode.getContext('2d'); + const ctx = canvasNode.getContext('2d') - const canvas = new WxCanvas(ctx, this.data.canvasId, true, canvasNode); + const canvas = new WxCanvas(ctx, this.data.canvasId, true, canvasNode) echarts.setCanvasCreator(() => { - return canvas; - }); + return canvas + }) if (typeof callback === 'function') { - this.chart = callback(canvas, canvasWidth, canvasHeight, canvasDpr); - } else if (this.data.ec && typeof this.data.ec.onInit === 'function') { - this.chart = this.data.ec.onInit(canvas, canvasWidth, canvasHeight, canvasDpr); - } else { + this.chart = callback(canvas, canvasWidth, canvasHeight, canvasDpr) + } + else if (this.data.ec && typeof this.data.ec.onInit === 'function') { + this.chart = this.data.ec.onInit(canvas, canvasWidth, canvasHeight, canvasDpr) + } + else { this.triggerEvent('init', { - canvas: canvas, + canvas, width: canvasWidth, height: canvasHeight, dpr: canvasDpr, - }); + }) } - }); + }) }, canvasToTempFilePath(opt) { if (this.data.isUseNewCanvas) { // 新版 - const query = wx.createSelectorQuery().in(this); + const query = wx.createSelectorQuery().in(this) query .select('.ec-canvas') .fields({ node: true, size: true }) .exec((res) => { - const canvasNode = res[0].node; - opt.canvas = canvasNode; - wx.canvasToTempFilePath(opt); - }); - } else { + const canvasNode = res[0].node + opt.canvas = canvasNode + wx.canvasToTempFilePath(opt) + }) + } + else { // 旧的 if (!opt.canvasId) { - opt.canvasId = this.data.canvasId; + opt.canvasId = this.data.canvasId } ctx.draw(true, () => { - wx.canvasToTempFilePath(opt, this); - }); + wx.canvasToTempFilePath(opt, this) + }) } }, touchStart(e) { if (this.chart && e.touches.length > 0) { - var touch = e.touches[0]; - var handler = this.chart.getZr().handler; + const touch = e.touches[0] + const handler = this.chart.getZr().handler handler.dispatch('mousedown', { zrX: touch.x, zrY: touch.y, preventDefault: () => {}, stopImmediatePropagation: () => {}, stopPropagation: () => {}, - }); + }) handler.dispatch('mousemove', { zrX: touch.x, zrY: touch.y, preventDefault: () => {}, stopImmediatePropagation: () => {}, stopPropagation: () => {}, - }); - handler.processGesture(wrapTouch(e), 'start'); + }) + handler.processGesture(wrapTouch(e), 'start') } }, touchMove(e) { if (this.chart && e.touches.length > 0) { - var touch = e.touches[0]; - var handler = this.chart.getZr().handler; + const touch = e.touches[0] + const handler = this.chart.getZr().handler handler.dispatch('mousemove', { zrX: touch.x, zrY: touch.y, preventDefault: () => {}, stopImmediatePropagation: () => {}, stopPropagation: () => {}, - }); - handler.processGesture(wrapTouch(e), 'change'); + }) + handler.processGesture(wrapTouch(e), 'change') } }, touchEnd(e) { if (this.chart) { - const touch = e.changedTouches ? e.changedTouches[0] : {}; - var handler = this.chart.getZr().handler; + const touch = e.changedTouches ? e.changedTouches[0] : {} + const handler = this.chart.getZr().handler handler.dispatch('mouseup', { zrX: touch.x, zrY: touch.y, preventDefault: () => {}, stopImmediatePropagation: () => {}, stopPropagation: () => {}, - }); + }) handler.dispatch('click', { zrX: touch.x, zrY: touch.y, preventDefault: () => {}, stopImmediatePropagation: () => {}, stopPropagation: () => {}, - }); - handler.processGesture(wrapTouch(e), 'end'); + }) + handler.processGesture(wrapTouch(e), 'end') } }, }, -}); +}) function wrapTouch(event) { for (let i = 0; i < event.touches.length; ++i) { - const touch = event.touches[i]; - touch.offsetX = touch.x; - touch.offsetY = touch.y; + const touch = event.touches[i] + touch.offsetX = touch.x + touch.offsetY = touch.y } - return event; + return event } diff --git a/src/components/ec-canvas/ec-canvas.json b/src/components/ec-canvas/ec-canvas.json index e8cfaaf..a89ef4d 100644 --- a/src/components/ec-canvas/ec-canvas.json +++ b/src/components/ec-canvas/ec-canvas.json @@ -1,4 +1,4 @@ { "component": true, "usingComponents": {} -} \ No newline at end of file +} diff --git a/src/components/ec-canvas/wx-canvas.js b/src/components/ec-canvas/wx-canvas.js index 6c7c90b..8b894b4 100644 --- a/src/components/ec-canvas/wx-canvas.js +++ b/src/components/ec-canvas/wx-canvas.js @@ -1,24 +1,24 @@ export default class WxCanvas { constructor(ctx, canvasId, isNew, canvasNode) { - this.ctx = ctx; - this.canvasId = canvasId; - this.chart = null; + this.ctx = ctx + this.canvasId = canvasId + this.chart = null this.isNew = isNew if (isNew) { - this.canvasNode = canvasNode; + this.canvasNode = canvasNode } else { - this._initStyle(ctx); + this._initStyle(ctx) } // this._initCanvas(zrender, ctx); - this._initEvent(); + this._initEvent() } getContext(contextType) { if (contextType === '2d') { - return this.ctx; + return this.ctx } } @@ -30,7 +30,7 @@ export default class WxCanvas { // } setChart(chart) { - this.chart = chart; + this.chart = chart } addEventListener() { @@ -47,55 +47,58 @@ export default class WxCanvas { _initCanvas(zrender, ctx) { zrender.util.getContext = function () { - return ctx; - }; + return ctx + } - zrender.util.$override('measureText', function (text, font) { - ctx.font = font || '12px sans-serif'; - return ctx.measureText(text); - }); + zrender.util.$override('measureText', (text, font) => { + ctx.font = font || '12px sans-serif' + return ctx.measureText(text) + }) } _initStyle(ctx) { ctx.createRadialGradient = () => { - return ctx.createCircularGradient(arguments); - }; + return ctx.createCircularGradient(arguments) + } } _initEvent() { - this.event = {}; + this.event = {} const eventNames = [{ wxName: 'touchStart', - ecName: 'mousedown' + ecName: 'mousedown', }, { wxName: 'touchMove', - ecName: 'mousemove' + ecName: 'mousemove', }, { wxName: 'touchEnd', - ecName: 'mouseup' + ecName: 'mouseup', }, { wxName: 'touchEnd', - ecName: 'click' - }]; - eventNames.forEach(name => { - this.event[name.wxName] = e => { - const touch = e.touches[0]; + ecName: 'click', + }] + eventNames.forEach((name) => { + this.event[name.wxName] = (e) => { + const touch = e.touches[0] this.chart.getZr().handler.dispatch(name.ecName, { zrX: name.wxName === 'tap' ? touch.clientX : touch.x, zrY: name.wxName === 'tap' ? touch.clientY : touch.y, preventDefault: () => {}, stopImmediatePropagation: () => {}, - stopPropagation: () => {} - }); - }; - }); + stopPropagation: () => {}, + }) + } + }) } set width(w) { - if (this.canvasNode) this.canvasNode.width = w + if (this.canvasNode) + this.canvasNode.width = w } + set height(h) { - if (this.canvasNode) this.canvasNode.height = h + if (this.canvasNode) + this.canvasNode.height = h } get width() { @@ -103,6 +106,7 @@ export default class WxCanvas { return this.canvasNode.width return 0 } + get height() { if (this.canvasNode) return this.canvasNode.height diff --git a/src/components/freeAudio/index.js b/src/components/freeAudio/index.js index 042cfd5..463db3d 100644 --- a/src/components/freeAudio/index.js +++ b/src/components/freeAudio/index.js @@ -1,5 +1,4 @@ -const app = getApp(); -import dayjs from "dayjs"; +const app = getApp() Component({ behaviors: [], properties: { @@ -7,19 +6,19 @@ Component({ type: Object, observer(val) { if (this.audioContext) { - const { play } = this.data; + const { play } = this.data if (play) { - this.audioContext.pause(); + this.audioContext.pause() this.setData({ play: false, progress: 0, - time: "00", - }); + time: '00', + }) } - this.audioContext.destroy(); + this.audioContext.destroy() } if (val) { - this.audioAddEventListener(val); + this.audioAddEventListener(val) } }, }, @@ -27,8 +26,8 @@ Component({ data: { Timestamp: app.globalData.Timestamp, progress: 0, - time: "00", - duration: "00", + time: '00', + duration: '00', play: false, loading: true, @@ -41,136 +40,138 @@ Component({ moved() {}, detached() { if (this.audioContext) { - const { play } = this.data; + const { play } = this.data if (play) { - this.audioContext.pause(); + this.audioContext.pause() } - this.audioContext.destroy(); + this.audioContext.destroy() } - this.audioAddEventListener = null; + this.audioAddEventListener = null this.setData({ play: false, progress: 0, - time: "00", - }); + time: '00', + }) }, }, pageLifetimes: { // 组件所在页面的生命周期函数 - show: function () {}, - hide: function () { - const { play } = this.data; + show() {}, + hide() { + const { play } = this.data if (play) { - this.audioContext.pause(); + this.audioContext.pause() } }, - resize: function () {}, + resize() {}, }, methods: { togglePlay() { - const { play, loading } = this.data; + const { play, loading } = this.data if (loading) { wx.showToast({ - title: "音频加载中", - icon: "none", - }); - return; + title: '音频加载中', + icon: 'none', + }) + return } if (play) { - this.audioContext.pause(); - } else { - this.audioContext.play(); + this.audioContext.pause() + } + else { + this.audioContext.play() } }, formatTime(time) { - let m = parseInt(time / 60); - let s = parseInt(time % 60); - return this.towNum(m) + ":" + this.towNum(s); + const m = Number.parseInt(time / 60) + const s = Number.parseInt(time % 60) + return `${this.towNum(m)}:${this.towNum(s)}` }, towNum(num) { if (num >= 10) { - return num; - } else { - return "0" + num; + return num + } + else { + return `0${num}` } }, audioAddEventListener(val) { - const that = this; + const that = this this.setData({ duration: this.formatTime(val.size), - }); - that.audioContext = wx.createInnerAudioContext(); - that.audioContext.src = val.url; + }) + that.audioContext = wx.createInnerAudioContext() + that.audioContext.src = val.url that.setData({ loading: false, - }); + }) that.audioContext.onError(({ errCode, ...reset }) => { - console.log("reset: ", reset); - console.log("errCode: ", errCode); + console.log('reset: ', reset) + console.log('errCode: ', errCode) if (errCode === 10004 || errCode == 10001 || errCode == -1) { - that.audioContext.destroy(); + that.audioContext.destroy() that.setData({ loading: true, - }); + }) setTimeout(() => { - that.audioAddEventListener(val); - }, 300); + that.audioAddEventListener(val) + }, 300) } - }); + }) that.audioContext.onPlay(() => { that.setData({ play: true, - }); - }); + }) + }) that.audioContext.onPause(() => { - console.log(1111111); + console.log(1111111) that.setData({ play: false, - }); - }); + }) + }) that.audioContext.onEnded(() => { - that.audioContext.seek(0); + that.audioContext.seek(0) that.setData({ play: false, progress: 0, - time: "00", - }); - }); + time: '00', + }) + }) that.audioContext.onTimeUpdate(() => { - const duration = that.audioContext.duration || 0; - const currentTime = that.audioContext.currentTime || 0; - const progress = (currentTime / duration) * 100; + const duration = that.audioContext.duration || 0 + const currentTime = that.audioContext.currentTime || 0 + const progress = (currentTime / duration) * 100 if (duration == Infinity) { - return; + return } that.setData({ play: true, duration: that.formatTime(duration), time: that.formatTime(currentTime), - }); + }) if (that.data.progressimg) { this.setData({ - progress: progress, - }); + progress, + }) } - }); + }) }, handleAuthChangeimg() { - console.log(11111); + console.log(11111) this.setData({ progressimg: false, - }); + }) }, handleAuthChange(e) { - console.log(22222222222); - let { duration } = this.data; - const secods = this.audioContext.duration || duration.split(":")[0] * 60 + duration.split(":")[1] * 1; - const progress = e.detail.value; - let seek = ((secods / 100) * progress).toFixed(3) * 1; - this.audioContext.seek(seek); + console.log(22222222222) + const { duration } = this.data + const secods = this.audioContext.duration || duration.split(':')[0] * 60 + duration.split(':')[1] * 1 + const progress = e.detail.value + const seek = ((secods / 100) * progress).toFixed(3) * 1 + this.audioContext.seek(seek) this.setData({ progressimg: true, - }); + }) }, }, -}); +}) diff --git a/src/components/image-merge/index.json b/src/components/image-merge/index.json index 4d7b384..1dfe7ed 100644 --- a/src/components/image-merge/index.json +++ b/src/components/image-merge/index.json @@ -5,4 +5,4 @@ "van-icon": "@vant/weapp/icon/index", "van-toast": "@vant/weapp/toast/index" } -} \ No newline at end of file +} diff --git a/src/components/loginNavbar/index.ts b/src/components/loginNavbar/index.ts index 707881d..655e056 100644 --- a/src/components/loginNavbar/index.ts +++ b/src/components/loginNavbar/index.ts @@ -1,4 +1,4 @@ -const app = getApp(); +const app = getApp() Component({ properties: { @@ -17,7 +17,7 @@ Component({ }, methods: { handleBack() { - this.triggerEvent("back"); + this.triggerEvent('back') }, }, -}); +}) diff --git a/src/components/navbar/index.ts b/src/components/navbar/index.ts index 0cb5894..6dc459a 100644 --- a/src/components/navbar/index.ts +++ b/src/components/navbar/index.ts @@ -32,7 +32,7 @@ Component({ */ data: { imageUrl: app.globalData.imageUrl, - Timestamp:app.globalData.Timestamp + Timestamp: app.globalData.Timestamp, }, /** @@ -40,8 +40,8 @@ Component({ */ methods: { onClickLeft() { - if(this.data.back) - this.triggerEvent('clickLeft', {}, {}) + if (this.data.back) + this.triggerEvent('clickLeft', {}, {}) }, onClickRight() { this.triggerEvent('clickRight', {}, {}) diff --git a/src/components/noteImagePreview/index.json b/src/components/noteImagePreview/index.json index 6f50345..eb9cd93 100644 --- a/src/components/noteImagePreview/index.json +++ b/src/components/noteImagePreview/index.json @@ -1,6 +1,7 @@ { "component": true, "usingComponents": { - "van-icon": "@vant/weapp/icon/index" + "van-icon": "@vant/weapp/icon/index", + "navbar": "/components/navbar/index" } -} \ No newline at end of file +} diff --git a/src/components/noteImagePreview/index.ts b/src/components/noteImagePreview/index.ts index 1235208..6884178 100644 --- a/src/components/noteImagePreview/index.ts +++ b/src/components/noteImagePreview/index.ts @@ -16,6 +16,7 @@ Component({ data: { visible: false, src: '', + navHeight: wx.getSystemInfoSync().statusBarHeight + 44, }, methods: { @@ -50,6 +51,8 @@ Component({ wx.showModal({ title: '提示', content: '确定要删除这张照片吗?', + confirmColor: '#8c75d0', + cancelColor: '#141515', success: (res) => { if (res.confirm) { this.handleHidePreview() diff --git a/src/components/noteImagePreview/index.wxml b/src/components/noteImagePreview/index.wxml index 9ceeed7..a01528c 100644 --- a/src/components/noteImagePreview/index.wxml +++ b/src/components/noteImagePreview/index.wxml @@ -1,10 +1,12 @@ - - + + + + + - 删除 重拍 diff --git a/src/components/pageNavbar/index.ts b/src/components/pageNavbar/index.ts index 8872734..9c787f6 100644 --- a/src/components/pageNavbar/index.ts +++ b/src/components/pageNavbar/index.ts @@ -1,4 +1,4 @@ -const app = getApp(); +const app = getApp() Component({ properties: { @@ -17,7 +17,7 @@ Component({ }, methods: { handleBack() { - wx.navigateBack(); + wx.navigateBack() }, }, -}); +}) diff --git a/src/components/pickerArea/index.scss b/src/components/pickerArea/index.scss index e5aba1a..7aece3a 100644 --- a/src/components/pickerArea/index.scss +++ b/src/components/pickerArea/index.scss @@ -41,7 +41,7 @@ padding: 18rpx 30rpx; box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0, 0, 0, 0.11); border-radius: 12rpx 12rpx 12rpx 12rpx; - border: 2rpx solid #B982FF; + border: 2rpx solid #b982ff; display: flex; align-items: center; justify-content: space-between; @@ -69,7 +69,7 @@ display: flex; align-items: center; justify-content: center; - background: linear-gradient( 197deg, #FFBCF9 0%, #B982FF 100%); + background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%); border-radius: 12rpx 12rpx 12rpx 12rpx; } } @@ -91,7 +91,7 @@ background: #f7f8f9; &.active { color: #fff; - background-color: #B982FF; + background-color: #b982ff; } } } @@ -118,9 +118,9 @@ height: 36rpx; } &.active { - color: #B982FF; + color: #b982ff; .word { - color: #B982FF; + color: #b982ff; } } } diff --git a/src/components/popup/index.scss b/src/components/popup/index.scss index c2e4a4a..ba73c7b 100644 --- a/src/components/popup/index.scss +++ b/src/components/popup/index.scss @@ -648,6 +648,58 @@ } } +.popup18 { + .badge { + position: relative; + z-index: 1; + display: block; + width: 144rpx; + height: 144rpx; + margin: 0 auto -72rpx; + text-align: center; + } + .popup-container { + width: 670rpx; + box-sizing: border-box; + padding: 118rpx 48rpx 44rpx; + border-radius: 32rpx; + background: #fff; + .title { + font-size: 40rpx; + color: #211d2e; + font-weight: bold; + text-align: center; + } + .p-footer { + margin-top: 52rpx; + display: flex; + gap: 30rpx; + .sure, + .cancel { + flex: 1; + font-size: 36rpx; + border-radius: 100rpx; + height: 88rpx; + box-sizing: border-box; + } + .cancel { + color: #b982ff; + border: 1px solid #b982ff; + display: flex; + align-items: center; + justify-content: center; + } + .sure { + padding: 0; + background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + } + } + } +} .close { margin: 48rpx auto 0; diff --git a/src/components/popup/index.wxml b/src/components/popup/index.wxml index b9f17c6..8fc1bb0 100644 --- a/src/components/popup/index.wxml +++ b/src/components/popup/index.wxml @@ -209,7 +209,7 @@ 确认删除记录? 删除 - 2026-04-02 + {{params.recordDate}} 记录 此操作不可逆,相关照片将永久删除 @@ -241,6 +241,18 @@ + + + + + 是否替换已有基准照 + + + 取消 + 确认替换 + + + =min && <=max * @param min * @param max */ function getRandom(min, max) { - return min + Math.floor(Math.random() * (max - min + 1)); + return min + Math.floor(Math.random() * (max - min + 1)) } Component({ options: {}, lifetimes: { attached() { - const query = wx.createSelectorQuery().in(this); + const query = wx.createSelectorQuery().in(this) query - .select("#thumsCanvas") + .select('#thumsCanvas') .fields({ node: true, size: true }) .exec((res) => { - const canvas = res[0].node; - const context = canvas.getContext("2d"); + const canvas = res[0].node + const context = canvas.getContext('2d') this.setData({ - context: context, - }); + context, + }) - const dpr = wx.getSystemInfoSync().pixelRatio; - canvas.width = res[0].width * dpr; - canvas.height = res[0].height * dpr; - this.data.width = res[0].width * dpr; - this.data.height = res[0].height * dpr; + const dpr = wx.getSystemInfoSync().pixelRatio + canvas.width = res[0].width * dpr + canvas.height = res[0].height * dpr + this.data.width = res[0].width * dpr + this.data.height = res[0].height * dpr // context.fillStyle = "rgba(255, 255, 255, 0)"; const images = [ - "za-images/star/icon1.png", - "za-images/star/icon2.png", - "za-images/star/icon3.png", - "za-images/star/icon4.png", - "za-images/star/icon5.png", - "za-images/star/icon6.png", - "za-images/star/icon7.png", - "za-images/star/icon8.png", - ]; - const promiseAll = [] as Array>; + 'za-images/star/icon1.png', + 'za-images/star/icon2.png', + 'za-images/star/icon3.png', + 'za-images/star/icon4.png', + 'za-images/star/icon5.png', + 'za-images/star/icon6.png', + 'za-images/star/icon7.png', + 'za-images/star/icon8.png', + ] + const promiseAll = [] as Array> images.forEach((src) => { - const p = new Promise(function (resolve) { - const img = canvas.createImage(); - img.onerror = img.onload = resolve.bind(null, img); - img.src = app.globalData.imageUrl + src; - }); - promiseAll.push(p); - }); + const p = new Promise((resolve) => { + const img = canvas.createImage() + img.onerror = img.onload = resolve.bind(null, img) + img.src = app.globalData.imageUrl + src + }) + promiseAll.push(p) + }) Promise.all(promiseAll).then((imgsList) => { const imgsLists = imgsList.filter((d) => { - if (d && d.width > 0) return true; - return false; - }); + if (d && d.width > 0) + return true + return false + }) this.setData({ imgsList: imgsLists, - }); + }) if (this.data.imgsList.length == 0) { // logger.error("imgsList load all error"); wx.showToast({ - icon: "none", - title: "imgsList load all error", - }); - return; + icon: 'none', + title: 'imgsList load all error', + }) } - }); - }); + }) + }) }, }, properties: {}, @@ -79,98 +79,105 @@ Component({ }, methods: { handleTap() { - this.start(); + this.start() }, createRender() { - if (this.data.imgsList.length == 0) return null; - const basicScale = [0.6, 0.9, 1.2][getRandom(0, 2)]; + if (this.data.imgsList.length == 0) + return null + const basicScale = [0.6, 0.9, 1.2][getRandom(0, 2)] const getScale = (diffTime) => { if (diffTime < this.data.scaleTime) { - return +(diffTime / this.data.scaleTime).toFixed(2) * basicScale; - } else { - return basicScale; + return +(diffTime / this.data.scaleTime).toFixed(2) * basicScale } - }; - const context = this.data.context; + else { + return basicScale + } + } + const context = this.data.context // 随机读取一个图片来渲染 - const image: any = this.data.imgsList[getRandom(0, this.data.imgsList.length - 1)]; - const offset = 20; - const basicX = this.data.width / 2 + getRandom(-offset, offset); - const angle = getRandom(2, 10); - let ratio = getRandom(10, 30) * (getRandom(0, 1) ? 1 : -1); + const image: any = this.data.imgsList[getRandom(0, this.data.imgsList.length - 1)] + const offset = 20 + const basicX = this.data.width / 2 + getRandom(-offset, offset) + const angle = getRandom(2, 10) + const ratio = getRandom(10, 30) * (getRandom(0, 1) ? 1 : -1) const getTranslateX = (diffTime) => { if (diffTime < this.data.scaleTime) { // 放大期间,不进行摇摆位移 - return basicX; - } else { - return basicX + ratio * Math.sin(angle * (diffTime - this.data.scaleTime)); + return basicX + } + else { + return basicX + ratio * Math.sin(angle * (diffTime - this.data.scaleTime)) } - }; + } const getTranslateY = (diffTime) => { - return image.height / 2 + (this.data.height - image.height / 2) * (1 - diffTime); - }; + return image.height / 2 + (this.data.height - image.height / 2) * (1 - diffTime) + } - const fadeOutStage = getRandom(14, 18) / 100; + const fadeOutStage = getRandom(14, 18) / 100 const getAlpha = (diffTime) => { - let left = 1 - +diffTime; + const left = 1 - +diffTime if (left > fadeOutStage) { - return 1; - } else { - return 1 - +((fadeOutStage - left) / fadeOutStage).toFixed(2); + return 1 } - }; + else { + return 1 - +((fadeOutStage - left) / fadeOutStage).toFixed(2) + } + } return (diffTime) => { // 差值满了,即结束了 0 ---》 1 - if (diffTime >= 1) return true; - context.save(); - const scale = getScale(diffTime); + if (diffTime >= 1) + return true + context.save() + const scale = getScale(diffTime) // const rotate = getRotate(); - const translateX = getTranslateX(diffTime); - const translateY = getTranslateY(diffTime); - context.translate(translateX, translateY); - context.scale(scale, scale); + const translateX = getTranslateX(diffTime) + const translateY = getTranslateY(diffTime) + context.translate(translateX, translateY) + context.scale(scale, scale) // context.rotate(rotate * Math.PI / 180); - context.globalAlpha = getAlpha(diffTime); - context.drawImage(image, -image.width / 2, -image.height / 2, image.width, image.height); - context.restore(); - }; + context.globalAlpha = getAlpha(diffTime) + context.drawImage(image, -image.width / 2, -image.height / 2, image.width, image.height) + context.restore() + } }, scan() { - this.data.context.clearRect(0, 0, this.data.width, this.data.height); - this.data.context.fillStyle = "rgba(255, 255, 255, 0)"; - this.data.context.fillRect(0, 0, 200, 400); - let index = 0; - let length = this.data.renderList.length; + this.data.context.clearRect(0, 0, this.data.width, this.data.height) + this.data.context.fillStyle = 'rgba(255, 255, 255, 0)' + this.data.context.fillRect(0, 0, 200, 400) + let index = 0 + let length = this.data.renderList.length if (length > 0) { - this.requestFrame(this.scan.bind(this)); + this.requestFrame(this.scan.bind(this)) this.setData({ scanning: true, - }); - } else { + }) + } + else { this.setData({ scanning: false, - }); + }) } while (index < length) { - const child = this.data.renderList[index]; + const child = this.data.renderList[index] if (!child || !child.render || child.render.call(null, (Date.now() - child.timestamp) / child.duration)) { // 结束了,删除该动画 this.setData({ renderList: [...this.data.renderList].filter((_item, fIndex) => fIndex != index), - }); - length--; - } else { + }) + length-- + } + else { // continue - index++; + index++ } } }, start() { - const render = this.createRender(); - const duration = getRandom(1500, 3000); + const render = this.createRender() + const duration = getRandom(1500, 3000) this.setData({ renderList: [ ...this.data.renderList, @@ -180,25 +187,25 @@ Component({ timestamp: Date.now(), }, ], - }); + }) if (!this.data.scanning) { this.setData({ scanning: true, - }); + }) - this.requestFrame(this.scan.bind(this)); + this.requestFrame(this.scan.bind(this)) // this.scan.bind(this)(); } - return this; + return this }, requestFrame(cb) { return ( - this.data.context.requestAnimationFrame || - (function (callback) { - setTimeout(callback, 1000 / 60); + this.data.context.requestAnimationFrame + || (function (callback) { + setTimeout(callback, 1000 / 60) })(cb) - ); + ) }, }, -}); +}) diff --git a/src/components/text-expandsion/index.scss b/src/components/text-expandsion/index.scss index 3fa0914..acba6f8 100644 --- a/src/components/text-expandsion/index.scss +++ b/src/components/text-expandsion/index.scss @@ -10,13 +10,13 @@ max-height: 9em; text-align: justify; &::before { - content: ""; + content: ''; float: right; height: 100%; margin-bottom: -40rpx; } &::after { - content: ""; + content: ''; width: 100vw; height: 100vh; position: absolute; @@ -32,11 +32,11 @@ clear: both; line-height: 42rpx; &::before { - content: "..."; + content: '...'; margin-right: 8rpx; } &::after { - content: ""; + content: ''; display: inline-block; margin-bottom: 2rpx; margin-left: 4rpx; diff --git a/src/components/timeOut/index.ts b/src/components/timeOut/index.ts index 08c16d9..7066c74 100644 --- a/src/components/timeOut/index.ts +++ b/src/components/timeOut/index.ts @@ -1,4 +1,4 @@ -const app = getApp(); +const app = getApp() // pages/story/a.ts Component({ @@ -8,7 +8,7 @@ Component({ properties: { detailId: { type: String, - value: "0", + value: '0', }, asideOut: { type: Boolean, @@ -16,7 +16,7 @@ Component({ }, asideType: { type: String, - value: "", + value: '', }, timeToast: { type: Boolean, @@ -24,33 +24,34 @@ Component({ }, timeToastType: { type: String, - value: "", + value: '', }, timeToastParams: { type: Object, value() { - return {}; + return {} }, }, }, observers: { - asideOut: function (asideOut) { + asideOut(asideOut) { if (asideOut) { setTimeout(() => { - this.countDown(); - }, 1000); + this.countDown() + }, 1000) } }, }, lifetimes: { attached() { - let systemInfo = wx.getSystemInfoSync(); + const systemInfo = wx.getSystemInfoSync() this.setData({ sliderTop: systemInfo.screenHeight - 250, - }); + }) }, detached() { - if (this.timer) clearInterval(this.timer); + if (this.timer) + clearInterval(this.timer) }, }, data: { @@ -66,25 +67,26 @@ Component({ methods: { timer: null as any, countDown() { - const that = this; - if (that.timer) return; - let circle = 100; + const that = this + if (that.timer) + return + let circle = 100 that.timer = setInterval(() => { - circle--; + circle-- that.setData({ circleVal: circle, centerVal: Math.floor(circle / 10), - }); + }) if (circle <= 0) { - clearInterval(that.timer); - this.handleAsideOut(); + clearInterval(that.timer) + this.handleAsideOut() } - }, 100); + }, 100) }, handleAsideOut() { wx.ajax({ - method: "POST", - url: "?r=xd/score/send-score", + method: 'POST', + url: '?r=xd/score/send-score', data: { Type: this.data.asideType, Id: this.data.detailId, @@ -93,9 +95,9 @@ Component({ if (!Array.isArray(res)) { this.setData({ rewardScore: res.rewardScore, - }); + }) } - }); + }) }, }, -}); +}) diff --git a/src/components/toast/index.ts b/src/components/toast/index.ts index 4e2f947..a6c39aa 100644 --- a/src/components/toast/index.ts +++ b/src/components/toast/index.ts @@ -1,4 +1,4 @@ -const app = getApp(); +const app = getApp() Component({ properties: { show: { @@ -9,7 +9,7 @@ Component({ params: { type: Object, value() { - return {}; + return {} }, }, }, @@ -19,37 +19,37 @@ Component({ app.zdGetTheme().then((res) => { this.setData({ theme: res, - }); - }); + }) + }) if (this.data.params.timeOut) { - let time = this.data.params.timeOut; + let time = this.data.params.timeOut const timerFunc = () => { if (time <= 0) { this.setData({ timeOut: '', - }); - clearInterval(this.timer); - return; + }) + clearInterval(this.timer) + return } this.setData({ timeOut: `${time}s`, - }); - --time; - }; - timerFunc(); - this.timer = setInterval(timerFunc, 1000); + }) + --time + } + timerFunc() + this.timer = setInterval(timerFunc, 1000) } if (['storyLead', 'storyStar', 'storyShare'].includes(this.data.type)) { - this.getSettingInfo(); + this.getSettingInfo() } } this.setData({ zdUserInfo: app.globalData.zdUserInfo, - }); + }) }, type(val) { if (val === 'healthCare') { - this.getOpenPatientList(); + this.getOpenPatientList() } }, }, @@ -66,42 +66,42 @@ Component({ this.setData({ imageUrl: app.globalData.imageUrl, Timestamp: app.globalData.Timestamp, - }); + }) }, }, methods: { timer: null as any, handleOk() { if (this.data.timeOut) { - return; + return } - this.triggerEvent('ok', { protocol: this.data.protocol }); + this.triggerEvent('ok', { protocol: this.data.protocol }) }, handleCancel(e = { currentTarget: { dataset: { key: '' } } }) { - const { key } = e.currentTarget.dataset; + const { key } = e.currentTarget.dataset if (this.timer) { - clearInterval(this.timer); + clearInterval(this.timer) this.setData({ timeOut: '', - }); + }) } - this.triggerEvent('cancel', { key }); + this.triggerEvent('cancel', { key }) }, handleTaskCancel() { - this.triggerEvent('taskCancel'); + this.triggerEvent('taskCancel') }, handleJump() { - this.triggerEvent('jump'); + this.triggerEvent('jump') }, handleDel() { - this.triggerEvent('del'); + this.triggerEvent('del') }, routerTo(e) { - const { path } = e.currentTarget.dataset; + const { path } = e.currentTarget.dataset wx.navigateTo({ url: path, - }); - this.handleCancel(); + }) + this.handleCancel() }, getSettingInfo() { wx.ajax({ @@ -111,8 +111,8 @@ Component({ }).then((res) => { this.setData({ settingsInfo: res, - }); - }); + }) + }) }, getOpenPatientList() { wx.ajax({ @@ -122,18 +122,18 @@ Component({ }).then((res) => { this.setData({ openPatientList: res, - }); - }); + }) + }) }, handleProtocolChange() { this.setData({ protocol: !this.data.protocol, - }); + }) }, handleAdlQuestion() { wx.navigateTo({ url: '/pages/repositoryDetail/index?id=9', - }); + }) }, }, -}); +}) diff --git a/src/components/uploadFile/index.ts b/src/components/uploadFile/index.ts index 3efb12f..9a5662a 100644 --- a/src/components/uploadFile/index.ts +++ b/src/components/uploadFile/index.ts @@ -1,4 +1,4 @@ -const app = getApp(); +const app = getApp() // pages/story/a.ts Component({ @@ -32,17 +32,17 @@ Component({ */ methods: { GetExtensionFileName(pathfilename) { - const reg = /(\\+)/g; - const pString = pathfilename.replace(reg, '#'); //用正则表达式来将\或\\替换成# - const arr = pString.split('#'); // 以“#”为分隔符,将字符分解为数组 例如 D Program Files bg.png - const lastString = arr[arr.length - 1]; //取最后一个字符 - const arr2 = lastString.split('.'); // 再以"."作为分隔符 - return arr2[arr2.length - 1]; //将后缀名返回出来 + const reg = /(\\+)/g + const pString = pathfilename.replace(reg, '#') // 用正则表达式来将\或\\替换成# + const arr = pString.split('#') // 以“#”为分隔符,将字符分解为数组 例如 D Program Files bg.png + const lastString = arr[arr.length - 1] // 取最后一个字符 + const arr2 = lastString.split('.') // 再以"."作为分隔符 + return arr2[arr2.length - 1] // 将后缀名返回出来 }, handleAfterRead(e) { this.uploadFile(e.detail.file).then((res) => { - this.triggerEvent('file', res as object); - }); + this.triggerEvent('file', res as object) + }) }, handleChooseAvatar(e) { this.uploadFile({ @@ -50,8 +50,8 @@ Component({ tempFilePath: e.detail.avatarUrl, size: 0, }).then((res) => { - this.triggerEvent('file', res as object); - }); + this.triggerEvent('file', res as object) + }) }, handleChooseFile() { wx.chooseMessageFile({ @@ -63,41 +63,44 @@ Component({ fileType: res.tempFiles[0].type, tempFilePath: res.tempFiles[0].path, }).then((res) => { - this.triggerEvent('file', res as object); - }); + this.triggerEvent('file', res as object) + }) }, fail() { wx.showToast({ icon: 'none', title: '取消选择', - }); + }) }, - }); + }) }, uploadFile(item) { wx.showLoading({ title: '正在上传', - }); + }) return new Promise((resolve, reject) => { - let url = `${app.globalData.upFileUrl}?r=file-service/upload-`; + let url = `${app.globalData.upFileUrl}?r=file-service/upload-` if (item.fileType === 'image') { - url += 'img'; - } else if (item.fileType === 'video' || item.type === 'video') { - url += 'video'; - item.tempFilePath = item.url; - } else if (item.fileType === 'audio') { - url += 'audio'; - } else { - url += 'doc'; + url += 'img' + } + else if (item.fileType === 'video' || item.type === 'video') { + url += 'video' + item.tempFilePath = item.url + } + else if (item.fileType === 'audio') { + url += 'audio' + } + else { + url += 'doc' } wx.uploadFile({ filePath: item.tempFilePath, name: 'file', url, success: (res) => { - wx.hideLoading(); - const data = JSON.parse(res.data); - const suffix = this.GetExtensionFileName(data.data.Url); + wx.hideLoading() + const data = JSON.parse(res.data) + const suffix = this.GetExtensionFileName(data.data.Url) const expandJson = { fileId: '', name: item.name || `病历相关文件.${suffix}`, @@ -109,24 +112,26 @@ Component({ duration: 0, videoUrl: '', hash: '', - }; + } if (item.fileType === 'image') { - expandJson.imgUrl = data.data.Url; - } else if (item.fileType === 'video' || item.type === 'video') { - expandJson.imgUrl = data.data.SnapshotUrl; - } else if (item.fileType === 'audio') { - expandJson.duration = Number.parseInt(String(item.duration / 1000)); + expandJson.imgUrl = data.data.Url + } + else if (item.fileType === 'video' || item.type === 'video') { + expandJson.imgUrl = data.data.SnapshotUrl + } + else if (item.fileType === 'audio') { + expandJson.duration = Number.parseInt(String(item.duration / 1000)) } - resolve(expandJson); + resolve(expandJson) }, fail() { - wx.hideLoading(); - reject(new Error('上传失败')); + wx.hideLoading() + reject(new Error('上传失败')) }, - }); - }); + }) + }) }, }, -}); +}) -export {}; +export {} diff --git a/src/components/viewFile/index.js b/src/components/viewFile/index.js index f4788c2..681ec46 100644 --- a/src/components/viewFile/index.js +++ b/src/components/viewFile/index.js @@ -1,5 +1,5 @@ // components/viewFile/index.js -const app = getApp(); +const app = getApp() Component({ /** * 组件的属性列表 @@ -25,7 +25,7 @@ Component({ * 组件的初始数据 */ data: { - Timestamp: app.globalData.Timestamp, + Timestamp: app.globalData.Timestamp, imageUrl: app.globalData.imageUrl, }, @@ -34,28 +34,28 @@ Component({ */ methods: { deleteFile(e) { - const { index, item } = e.currentTarget.dataset; - this.triggerEvent("deleteFile", { + const { index, item } = e.currentTarget.dataset + this.triggerEvent('deleteFile', { index, item, - }); + }) }, viewFile(e) { - const { index } = e.currentTarget.dataset; - const { fileList } = this.properties; - let sources = []; + const { index } = e.currentTarget.dataset + const { fileList } = this.properties + const sources = [] fileList.map((e) => { const obj = { url: e.fileUrl, type: e.type, // image video poster: e.imgUrl, - }; - sources.push(obj); - }); + } + sources.push(obj) + }) wx.previewMedia({ current: index, - sources: sources, - }); + sources, + }) }, }, -}); +}) diff --git a/src/components/viewFile/index.json b/src/components/viewFile/index.json index e69d8be..676a715 100644 --- a/src/components/viewFile/index.json +++ b/src/components/viewFile/index.json @@ -3,4 +3,4 @@ "usingComponents": { "van-icon": "@vant/weapp/icon/index" } -} \ No newline at end of file +} diff --git a/src/components/viewVideo/index.scss b/src/components/viewVideo/index.scss index 3fd6682..0230801 100644 --- a/src/components/viewVideo/index.scss +++ b/src/components/viewVideo/index.scss @@ -27,9 +27,10 @@ align-items: center; flex-direction: row-reverse; background: linear-gradient(180deg, rgba(0, 0, 0, 0.02) 0%, #000000 100%); - >view,>image{ - margin-right: 32rpx; -}; + > view, + > image { + margin-right: 32rpx; + } transition: all 0.8s; .time { font-size: 24rpx; diff --git a/src/components/zd-navBar/navBar.js b/src/components/zd-navBar/navBar.js index 14fdecb..3ad977b 100644 --- a/src/components/zd-navBar/navBar.js +++ b/src/components/zd-navBar/navBar.js @@ -1,35 +1,35 @@ -const app = getApp(); +const app = getApp() Component({ options: { multipleSlots: true, addGlobalClass: true, }, properties: { - slotLeft:{ - type:Boolean, - value:false, + slotLeft: { + type: Boolean, + value: false, }, extClass: { type: String, - value: "", + value: '', }, background: { type: String, - value: "transparent", - observer: "_showChange", + value: 'transparent', + observer: '_showChange', }, backgroundColorTop: { type: String, - value: "transparent", - observer: "_showChangeBackgroundColorTop", + value: 'transparent', + observer: '_showChangeBackgroundColorTop', }, color: { type: String, - value: "#000000", + value: '#000000', }, title: { type: String, - value: "", + value: '', }, back: { type: Boolean, @@ -41,7 +41,7 @@ Component({ }, iconTheme: { type: String, - value: "nuohe", + value: 'nuohe', }, /* animated: { type: Boolean, @@ -61,11 +61,11 @@ Component({ value: false, }, }, - created: function () { - this.getSystemInfo(); + created() { + this.getSystemInfo() }, - attached: function () { - this.setStyle(); //设置样式 + attached() { + this.setStyle() // 设置样式 }, data: { imageUrl: app.globalData.imageUrl, @@ -73,50 +73,52 @@ Component({ isHome: false, }, pageLifetimes: { - show: function () { + show() { if (getApp().globalSystemInfo.ios) { - this.getSystemInfo(); - this.setStyle(); //设置样式1 + this.getSystemInfo() + this.setStyle() // 设置样式1 } - let pages = getCurrentPages(); + const pages = getCurrentPages() this.setData({ isHome: !pages[pages.length - 2], - }); + }) }, - hide: function () {}, + hide() {}, }, methods: { - setStyle: function (life) { - const { statusBarHeight, navBarHeight, capsulePosition, navBarExtendHeight, ios, windowWidth } = - getApp().globalSystemInfo; - const { back, home, title } = this.data; - let rightDistance = windowWidth - capsulePosition.right; //胶囊按钮右侧到屏幕右侧的边距 - let leftWidth = windowWidth - capsulePosition.left; //胶囊按钮左侧到屏幕右侧的边距 + setStyle(life) { + const { statusBarHeight, navBarHeight, capsulePosition, navBarExtendHeight, ios, windowWidth } + = getApp().globalSystemInfo + const { back, home, title } = this.data + const rightDistance = windowWidth - capsulePosition.right // 胶囊按钮右侧到屏幕右侧的边距 + const leftWidth = windowWidth - capsulePosition.left // 胶囊按钮左侧到屏幕右侧的边距 this.setData({ - leftWidth: leftWidth, - }); + leftWidth, + }) - let navigationbarinnerStyle = [ + const navigationbarinnerStyle = [ `color: ${this.data.color}`, `background: ${this.data.background}`, `height:${navBarHeight + navBarExtendHeight}px`, `padding-top:${statusBarHeight}px`, `padding-right:${leftWidth}px`, `padding-bottom:${navBarExtendHeight}px`, - ].join(";"); - let navBarLeft = []; + ].join(';') + let navBarLeft = [] if ((back && !home) || (!back && home)) { - navBarLeft = [`width:${capsulePosition.width}px`, `height:${capsulePosition.height}px`].join(";"); - } else if ((back && home) || title) { + navBarLeft = [`width:${capsulePosition.width}px`, `height:${capsulePosition.height}px`].join(';') + } + else if ((back && home) || title) { navBarLeft = [ `width:${capsulePosition.width}px`, `height:${capsulePosition.height}px`, `margin-left:${rightDistance}px`, - ].join(";"); - } else { - navBarLeft = [`width:auto`, `margin-left:0px`].join(";"); + ].join(';') + } + else { + navBarLeft = [`width:auto`, `margin-left:0px`].join(';') } - if (life === "created") { + if (life === 'created') { this.data = { navigationbarinnerStyle, navBarLeft, @@ -124,8 +126,9 @@ Component({ capsulePosition, navBarExtendHeight, ios, - }; - } else { + } + } + else { this.setData({ navigationbarinnerStyle, navBarLeft, @@ -133,118 +136,125 @@ Component({ capsulePosition, navBarExtendHeight, ios, - }); + }) } }, - _showChange: function (value) { - this.setStyle(); + _showChange(value) { + this.setStyle() }, // 返回事件 - back: function () { - let pages = getCurrentPages(); + back() { + const pages = getCurrentPages() if (app.globalData.backPage) { wx.reLaunch({ url: app.globalData.backPage, - }); - app.globalData.backPage = null; - return; + }) + app.globalData.backPage = null + return } if (!pages[pages.length - 2] && !app.globalData.anyWhere) { wx.reLaunch({ - url: "/pages/index/index", - }); - return; + url: '/pages/index/index', + }) + return } - this.triggerEvent("back", { delta: this.data.delta }); + this.triggerEvent('back', { delta: this.data.delta }) }, - home: function () { + home() { wx.reLaunch({ - url: "/pages/start/index", - }); + url: '/pages/start/index', + }) }, - search: function () { - this.triggerEvent("search", {}); + search() { + this.triggerEvent('search', {}) }, getSystemInfo() { - var app = getApp(); + const app = getApp() if (app.globalSystemInfo && !app.globalSystemInfo.ios) { - return app.globalSystemInfo; - } else { - let systemInfo = wx.getSystemInfoSync(); - let ios = !!(systemInfo.system.toLowerCase().search("ios") + 1); - let rect; + return app.globalSystemInfo + } + else { + const systemInfo = wx.getSystemInfoSync() + const ios = !!(systemInfo.system.toLowerCase().search('ios') + 1) + let rect try { - rect = wx.getMenuButtonBoundingClientRect ? wx.getMenuButtonBoundingClientRect() : null; + rect = wx.getMenuButtonBoundingClientRect ? wx.getMenuButtonBoundingClientRect() : null if (rect === null) { - throw "getMenuButtonBoundingClientRect error"; + throw 'getMenuButtonBoundingClientRect error' } - //取值为0的情况 有可能width不为0 top为0的情况 + // 取值为0的情况 有可能width不为0 top为0的情况 if (!rect.width || !rect.top || !rect.left || !rect.height) { - throw "getMenuButtonBoundingClientRect error"; + throw 'getMenuButtonBoundingClientRect error' } - } catch (error) { - let gap = ""; //胶囊按钮上下间距 使导航内容居中 - let width = 96; //胶囊的宽度 - if (systemInfo.platform === "android") { - gap = 8; - width = 96; - } else if (systemInfo.platform === "devtools") { + } + catch (error) { + let gap = '' // 胶囊按钮上下间距 使导航内容居中 + let width = 96 // 胶囊的宽度 + if (systemInfo.platform === 'android') { + gap = 8 + width = 96 + } + else if (systemInfo.platform === 'devtools') { if (ios) { - gap = 5.5; //开发工具中ios手机 - } else { - gap = 7.5; //开发工具中android和其它手机 + gap = 5.5 // 开发工具中ios手机 } - } else { - gap = 4; - width = 88; + else { + gap = 7.5 // 开发工具中android和其它手机 + } + } + else { + gap = 4 + width = 88 } if (!systemInfo.statusBarHeight) { - //开启wifi的情况下修复statusBarHeight值获取不到 - systemInfo.statusBarHeight = systemInfo.screenHeight - systemInfo.windowHeight - 20; + // 开启wifi的情况下修复statusBarHeight值获取不到 + systemInfo.statusBarHeight = systemInfo.screenHeight - systemInfo.windowHeight - 20 } rect = { - //获取不到胶囊信息就自定义重置一个 + // 获取不到胶囊信息就自定义重置一个 bottom: systemInfo.statusBarHeight + gap + 32, height: 32, left: systemInfo.windowWidth - width - 10, right: systemInfo.windowWidth - 10, top: systemInfo.statusBarHeight + gap, - width: width, - }; - console.log("error", error); - console.log("rect", rect); + width, + } + console.log('error', error) + console.log('rect', rect) } - let navBarHeight = ""; + let navBarHeight = '' if (!systemInfo.statusBarHeight) { - systemInfo.statusBarHeight = systemInfo.screenHeight - systemInfo.windowHeight - 20; + systemInfo.statusBarHeight = systemInfo.screenHeight - systemInfo.windowHeight - 20 navBarHeight = (function () { - let gap = rect.top - systemInfo.statusBarHeight; - return 2 * gap + rect.height; - })(); + const gap = rect.top - systemInfo.statusBarHeight + return 2 * gap + rect.height + })() - systemInfo.statusBarHeight = 0; - systemInfo.navBarExtendHeight = 0; //下方扩展4像素高度 防止下方边距太小 - } else { + systemInfo.statusBarHeight = 0 + systemInfo.navBarExtendHeight = 0 // 下方扩展4像素高度 防止下方边距太小 + } + else { navBarHeight = (function () { - let gap = rect.top - systemInfo.statusBarHeight; - return systemInfo.statusBarHeight + 2 * gap + rect.height; - })(); + const gap = rect.top - systemInfo.statusBarHeight + return systemInfo.statusBarHeight + 2 * gap + rect.height + })() if (ios) { - systemInfo.navBarExtendHeight = 4; //下方扩展4像素高度 防止下方边距太小 - } else { - systemInfo.navBarExtendHeight = 0; + systemInfo.navBarExtendHeight = 4 // 下方扩展4像素高度 防止下方边距太小 + } + else { + systemInfo.navBarExtendHeight = 0 } } - systemInfo.navBarHeight = navBarHeight; //导航栏高度不包括statusBarHeight - systemInfo.capsulePosition = rect; //右上角胶囊按钮信息bottom: 58 height: 32 left: 317 right: 404 top: 26 width: 87 目前发现在大多机型都是固定值 为防止不一样所以会使用动态值来计算nav元素大小 - systemInfo.ios = ios; //是否ios + systemInfo.navBarHeight = navBarHeight // 导航栏高度不包括statusBarHeight + systemInfo.capsulePosition = rect // 右上角胶囊按钮信息bottom: 58 height: 32 left: 317 right: 404 top: 26 width: 87 目前发现在大多机型都是固定值 为防止不一样所以会使用动态值来计算nav元素大小 + systemInfo.ios = ios // 是否ios - app.globalSystemInfo = systemInfo; //将信息保存到全局变量中,后边再用就不用重新异步获取了 + app.globalSystemInfo = systemInfo // 将信息保存到全局变量中,后边再用就不用重新异步获取了 - //console.log('systemInfo', systemInfo); - return systemInfo; + // console.log('systemInfo', systemInfo); + return systemInfo } }, }, -}); +}) diff --git a/src/components/zd-navBar/navBar.scss b/src/components/zd-navBar/navBar.scss index 0eb85a4..620a20a 100644 --- a/src/components/zd-navBar/navBar.scss +++ b/src/components/zd-navBar/navBar.scss @@ -75,7 +75,7 @@ page { } .lxy-nav-bar__buttons::after { position: absolute; - content: ""; + content: ''; width: 1rpx; height: 18.4px; background: rgba(204, 204, 204, 0.6); diff --git a/src/components/zdUploadFile/index.js b/src/components/zdUploadFile/index.js index f16a549..694a856 100644 --- a/src/components/zdUploadFile/index.js +++ b/src/components/zdUploadFile/index.js @@ -1,5 +1,5 @@ // components/uploadFile/index.js -const app = getApp(); +const app = getApp() Component({ /** * 组件的属性列表 @@ -17,17 +17,17 @@ Component({ }, accept: { type: String, - value: "media", + value: 'media', }, fileTypes: { // 上传类型 type: Array, - value: ["image", "video"], + value: ['image', 'video'], }, // 拍照和相机 sourceType: { type: Array, - value: ["album", "camera"], + value: ['album', 'camera'], }, // 是否可以删除 canDelete: { @@ -67,62 +67,64 @@ Component({ */ methods: { viewFile(e) { - const { index } = e.currentTarget.dataset; - const { fileList } = this.properties; - let sources = []; + const { index } = e.currentTarget.dataset + const { fileList } = this.properties + const sources = [] fileList.map((e) => { const obj = { url: e.fileUrl, type: e.type, // image video poster: e.imgUrl, - }; - sources.push(obj); - }); + } + sources.push(obj) + }) wx.previewMedia({ current: index, - sources: sources, - }); + sources, + }) }, deleteFile(e) { - const { index, item } = e.currentTarget.dataset; - this.triggerEvent("deleteFile", { + const { index, item } = e.currentTarget.dataset + this.triggerEvent('deleteFile', { index, item, - }); + }) }, downFile(e) { - const { item } = e.currentTarget.dataset; + const { item } = e.currentTarget.dataset wx.showToast({ - title: "正在下载,请稍后...", - icon: "none", - }); + title: '正在下载,请稍后...', + icon: 'none', + }) wx.downloadFile({ url: item.fileUrl, success(res) { - if (item.type === "image") { + if (item.type === 'image') { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: () => { wx.showToast({ - title: "下载成功", - }); + title: '下载成功', + }) }, - }); - } else if (item.type === "video") { + }) + } + else if (item.type === 'video') { wx.saveVideoToPhotosAlbum({ filePath: res.tempFilePath, success: () => { wx.showToast({ - title: "下载成功", - }); + title: '下载成功', + }) }, - }); - } else { + }) + } + else { wx.showToast({ - title: "附件请到pc端下载!", - icon: "none", - }); + title: '附件请到pc端下载!', + icon: 'none', + }) // wx.saveFile({ // tempFilePath: res.tempFilePath, // success: () => { @@ -136,96 +138,96 @@ Component({ // }) } }, - }); + }) }, uploadFile(item) { return new Promise((resolve, resject) => { - let url = `${app.globalData.upFileUrl}?r=file-service/upload-`; - if (item.fileType === "image") { - url += "img"; + let url = `${app.globalData.upFileUrl}?r=file-service/upload-` + if (item.fileType === 'image') { + url += 'img' } - if (item.fileType === "video") { - url += "video"; + if (item.fileType === 'video') { + url += 'video' } - let that = this; + const that = this wx.uploadFile({ filePath: item.tempFilePath, - name: "file", - url: url, + name: 'file', + url, success(res) { - let data = JSON.parse(res.data); - let expandJson = { - fileId: "", + const data = JSON.parse(res.data) + const expandJson = { + fileId: '', name: data.data.Url, size: (item.size / 1024).toFixed(2), fileUrl: data.data.Url, suffix: that.GetExtensionFileName(data.data.Url), type: item.fileType, - }; - if (item.fileType === "image") { - expandJson.imgUrl = data.data.Url; } - if (item.fileType === "video") { - expandJson.imgUrl = data.data.SnapshotUrl; + if (item.fileType === 'image') { + expandJson.imgUrl = data.data.Url + } + if (item.fileType === 'video') { + expandJson.imgUrl = data.data.SnapshotUrl } - resolve(expandJson); + resolve(expandJson) }, fail() { - resject(); + resject() }, - }); - }); + }) + }) }, GetExtensionFileName(pathfilename) { - var reg = /(\\+)/g; - var pString = pathfilename.replace(reg, "#"); //用正则表达式来将\或\\替换成# - var arr = pString.split("#"); // 以“#”为分隔符,将字符分解为数组 例如 D Program Files bg.png - var lastString = arr[arr.length - 1]; //取最后一个字符 - var arr2 = lastString.split("."); // 再以"."作为分隔符 - return arr2[arr2.length - 1]; //将后缀名返回出来 + const reg = /(\\+)/g + const pString = pathfilename.replace(reg, '#') // 用正则表达式来将\或\\替换成# + const arr = pString.split('#') // 以“#”为分隔符,将字符分解为数组 例如 D Program Files bg.png + const lastString = arr[arr.length - 1] // 取最后一个字符 + const arr2 = lastString.split('.') // 再以"."作为分隔符 + return arr2[arr2.length - 1] // 将后缀名返回出来 }, upFile(data) { wx.showLoading({ - title: "正在上传", - }); - let apiArr = []; + title: '正在上传', + }) + const apiArr = [] data.map((e) => { - apiArr.push(this.uploadFile(e)); - }); + apiArr.push(this.uploadFile(e)) + }) Promise.all(apiArr) .then((res) => { wx.hideLoading({ success: () => { - this.triggerEvent("setData", res); + this.triggerEvent('setData', res) }, - }); + }) }) .catch(() => { wx.showToast({ - title: "上传失败", - icon: "error", - }); - }); + title: '上传失败', + icon: 'error', + }) + }) }, selectFile() { - let { fileList, maxNum, sourceType, fileTypes, count = 0 } = this.properties; - var that = this; + let { fileList, maxNum, sourceType, fileTypes, count = 0 } = this.properties + const that = this if (maxNum >= 0 && count == 0) { - count = maxNum - fileList.length; + count = maxNum - fileList.length } - this.triggerEvent("choose"); + this.triggerEvent('choose') wx.chooseMedia({ mediaType: fileTypes, - count: count, - sourceType: sourceType, - sizeType: ["original"], + count, + sourceType, + sizeType: ['original'], success(res) { res.tempFiles.map((e) => { - e.fileType = e.fileType || res.type; - }); - that.upFile(res.tempFiles); + e.fileType = e.fileType || res.type + }) + that.upFile(res.tempFiles) }, - }); + }) }, }, -}); +}) diff --git a/src/doc/pages/doc1/index.scss b/src/doc/pages/doc1/index.scss index 0b69ddc..9942a3f 100644 --- a/src/doc/pages/doc1/index.scss +++ b/src/doc/pages/doc1/index.scss @@ -1,3 +1,3 @@ -.page{ +.page { padding: 0 40rpx; } diff --git a/src/doc/pages/doc1/index.ts b/src/doc/pages/doc1/index.ts index d2c960f..36c57a5 100644 --- a/src/doc/pages/doc1/index.ts +++ b/src/doc/pages/doc1/index.ts @@ -1,10 +1,10 @@ -const _app = getApp(); +const _app = getApp() Page({ data: { - doc:`


TED关爱小助手小程序隐私政策

本版本更新日期:2025年9月10日

本版本生效日期:2025年9月12日

“TED关爱小助手”(以下亦称“我们”)非常注重保护用户(“您”)的个人信息及隐私。我们希望通过本《TED关爱小助手小程序隐私政策》(以下简称“本隐私政策”或本“政策”)向您清晰地介绍在使用我们的产品/服务时,我们如何处理您的个人信息。您及您的隐私对于我们至关重要,我们非常重视您的隐私和个人信息的保护。

请您在使用本产品/服务前,务必仔细阅读并充分理解本隐私政策。我们将逐一说明我们收集您的个人信息的类型及其对应的用途,以便您了解我们针对某一特定功能或服务所收集的具体个人信息的类别、使用理由及收集方式。

您在完成勾选并点击“同意”按钮后,本隐私政策即构成对双方有约束力的法律文件,即表示您同意我们按照本隐私政策收集、使用、处理和存储您的相关个人信息。

【本隐私政策的适用范围】

本隐私政策适用于您通过任何方式使用TED关爱小助手小程序平台或我们通过其他方式与您沟通合作时提供的全部功能和/或服务(以下合称为“本平台服务”)而收集或存储的信息。我们希望通过本隐私政策向您说明在您使用本平台服务时或我们通过其他方式与您沟通合作时,我们是如何收集、存储、使用、加工、传输、提供、公开、删除这些信息,以及我们将为您提供查阅、更正、限制、拒绝、删除、注销这些信息的方式。

本隐私政策将帮您了解以下信息:

1. 我们如何收集和使用您的个人信息

2. 我们基于何种目的或场景,收集和使用您的个人信息

3. 我们如何使用Cookie等同类技术

4. 我们如何委托处理、共享、转让、公开披露您的个人信息

5. 我们如何保存、保护您的个人信息

6. 您查阅、更正、限制、拒绝、删除、注销个人信息的权利

7. 未成年人保护

8. 本隐私政策变更及通知

9. 如何联系我们

10. 名词定义和解释

一、 我们如何收集和使用您的个人信息

(一)我们会根据本隐私政策的约定,为实现本平台服务而对所收集的个人信息进行使用。

(二)我们深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:合法、正当、必要和诚信原则,目的明确和直接相关原则,公开透明原则、准确性原则、问责性原则、数据安全原则等。同时,我们承诺将按业界成熟的安全标准,采取必要的措施保障您的个人信息的安全。

(三)我们对您个人信息的使用建立在下述一项或多项合法依据之上:您的同意、对公开信息的合理使用、为履行双方所签署的合同所必须及为遵守我们的法律义务。

二、 我们基于何种目的或场景,收集和使用您的个人信息

出于本隐私政策所描述的目的或场景,当您使用本平台服务时,我们可能会收集有关您的如下个人信息。若您不同意提供下列信息,有权拒绝提供,但您可能无法继续使用本平台的全部或部分服务:

(一) 注册、登录

当您需要使用本平台服务时,您首先需要注册本平台账号。为注册本平台账号,您需要提供您的手机号,以及选择性提供头像、昵称,您后续可以自主在【我的】页中填写或修改您的头像、昵称。如果您不提供上述信息,将影响您使用本平台的基本功能。

(二) 向您提供的本平台服务

您仅能查看本人管理患者的信息和数据。

1.页面浏览

当您在本平台浏览页面时,我们会收集您的本平台账号UID信息、微信OpenID,用来展示您的权益内容,以方便您的便捷使用。

2.阅读文章

您在本平台上阅读文章时,我们将会收集您的本平台账号UID信息,以判断您是否有对应的阅读权限。

3.下载文件

我们将会收集您的本平台账号UID信息,以判断您是否有对应的文件下载权限。

4.获得通知

您在本平台上查看通知时,我们将会收集您的本平台账号UID信息,以匹配该账号可以获得的通知内容。

5.数据看板

当您在本平台登录后,您可以查看关键统计数据及图表看板。

6.患者GO-QOL评分查看

您可以查看患者的GO-QOL评测评分,包括具体分值和得分变化情况。

7.互动服务

您可以查看用户通过系统标准问答库内选择的发送给您的问题,从标准问答库内选择合适的文本内容进行应答。

8.为您提供安全保障及更佳的服务体验

当您使用本平台服务时,我们会自动收集您对我们服务的详细使用情况,作为有关网络日志保存。包括浏览、点击查看、分享信息、访问日期和时间、浏览的内容及时长、浏览记录等。为了保障您的账号安全以及系统运行安全,防止欺诈、网络病毒、网络攻击等安全风险,本平台服务将满足法律法规和我们协议规则的相关要求,同时,我们会根据不同操作系统为您提供最佳的浏览体验。

(三) 如果您对我们收集和使用您的个人信息的法律依据有任何疑问或需要提供进一步的信息,请通过本隐私政策第九章节「如何联系我们」提供的联系方式与我们联系。

(四) 当我们要将您的个人信息用于本隐私政策未载明的其他目的时,会事先征求您的同意。请您知悉,本平台向您提供的服务可能将不断更新和发展,如果您选择使用本隐私政策中尚未列明的其他功能或服务时,我们会在收集您的个人信息前通过推送通知、更为显著的弹窗等方式向您详细说明信息收集的目的、方式、范围并征求您的同意。

三、 我们如何使用Cookie等同类技术

(一)依托于微信小程序提供的原生能力

为了帮助提升您的产品体验,我们会使用微信提供的一些原生能力来避免您重复登录,并存储您所在城市信息等数据,进而帮助判断您的登录状态、更好的为您提供服务、判断账户或数据安全。所有的信息获取都会经过您的授权同意才会使用,并且我们不会主动共享或转让您的信息至任何第三方,不会对外公开披露您的任何信息,您可以通过移除小程序的方式删除您已授权的信息。

(二)Cookies 的使用

我们提供的产品服务中,为了能够让您获得更好的浏览体验,我们会在您的微信内置浏览器上记录Cookies信息,指定给您的Cookies是唯一的,它只能被将Cookies发布给您的域中的Web服务器读取。大部分手机的微信内置浏览器会自动接受Cookies,我们不会将Cookies用于本隐私政策所述目的之外的任何用途。您可以在微信“我-设置-通用-存储空间-缓存”中清除保存的所有 Cookies,但如果您这么做,您可能需要在每一次访问小程序内嵌网站时重新授权获取相关信息,而且您之前的相关记录信息也会被删除,并且可能会对您所使用服务的安全性有一定影响。

四、 我们如何委托处理、共享、转让、公开披露您的个人信息

(一) 委托处理

如涉及,我们会聘请服务提供商来协助我们提供客户支持。对我们委托处理个人信息的公司、组织和个人,我们会与其签署严格的个人信息保护条款和保密协定,要求他们按照我们的要求、本个人信息保护政策以及其他任何相关的个人信息保护、保密和信息安全措施来处理您的个人信息,并且对他们的个人信息处理活动进行监督。

(二) 共享

我们不会将任何个人信息出售给第三方。我们不会向本小程序运营公司以外的任何公司、组织和个人提供您的个人信息,但以下情况除外:

a) 在向您进行明确告知并获取您的单独同意的情况下共享:获得您的单独同意后,我们会与我们所披露的有关个人信息处理者共享您的相关个人信息;

d) 我们可能会根据法律法规规定,或按政府主管部门的强制性要求,向有关主管部门提供您的个人信息。

(三) 转让

我们不会将您的个人信息转让给任何公司、组织和个人,但以下情况除外:

a) 在向您进行明确告知并获取您的单独同意的情况下转让:获得您的单独同意后,我们会向我们所披露的有关个人信息处理者转让您的相关个人信息;

b) 在涉及合并、分立、解散、被宣告破产时,如涉及到个人信息转让,我们会向您告知接收方的名称或者姓名和联系方式。如接收方变更原先的处理目的、处理方式的,我们将要求该接收方重新取得您的同意。

(四) 公开披露

我们仅会在获得您明确同意后,公开披露您的个人信息。

五、 我们如何保存、保护您的个人信息

(一) 保存地点

我们依照法律法规的规定,将在境内运营过程中收集和产生的您的个人信息存储于中华人民共和国境内。目前,我们不会将上述信息传输至其他地区,如果我们向其他地区传输,我们将遵循相关国家规定或者征求您的同意。

(二) 保存时间

我们会采取一切合理可行的措施,确保未收集无关的个人信息。TED关爱中心小程序中个人信息储存必要期限是TED关爱中心小程序为您终止服务后3年。超出必要期限后,我们将对您的个人信息进行删除或匿名化处理,但法律法规另有规定的除外。

(三) 保护措施

我们已使用符合业界标准的安全防护措施保护您提供的个人信息,防止数据遭到未经授权访问、公开披露、使用、修改、损坏或丢失。我们会采取一切合理可行的措施,保护您的个人信息。例如,我们会使用加密技术(例如SSL)确保数据的保密性;我们会使用受信赖的保护机制防止数据遭到恶意攻击;我们会部署访问控制机制,确保只有授权人员才可访问个人信息;以及我们会举办安全和隐私保护培训课程,加强员工对于保护个人信息重要性的认识。互联网环境并非百分之百安全,我们将尽力确保或担保您发送给我们的任何信息的安全性。

(四) 数据安全能力

我们会使用不低于行业同行的加密技术、匿名化处理及相关合理可行的手段保护您的个人信息,并使用安全保护机制防止您的个人信息遭到恶意攻击。

我们会建立专门的安全部门、安全管理制度、数据安全流程保障您的个人信息安全。我们采取严格的数据使用和访问制度,确保只有授权人员才可访问您的个人信息,并适时对数据和技术进行安全审计。

(五) 安全事件处理

在不幸发生个人信息安全事件后,我们将按照法律法规的要求,及时向您告知:安全事件的基本情况和可能的影响、我们已采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施等。我们将及时将事件相关情况以邮件、信函、电话、推送通知等方式告知您,难以逐一告知个人信息主体时,我们会采取合理、有效的方式发布公告。 同时,我们还将按照监管部门要求,主动上报个人信息安全事件的处置情况。

六、 您查阅、更正、限制、拒绝、删除、注销个人信息的权利

我们非常重视并保护您对于个人信息处理活动中的知情权、决定权、限制权、拒绝权等权利,并为您提供了行使在个人信息处理活动中相关权利的方法。

(一) 查阅权和更正权

除法律法规规定的情形除外,您有权随时查阅和更正您的个人信息,您可以通过在本平台的【我的】查阅或修改您的个人信息,包括头像、昵称。

(二) 限制或拒绝权

对于您个人信息的收集和使用,您可以在本平台上随时通过以下方式撤回授权同意,以限制或拒绝我们收集或使用您的个人信息:

您可以通过第九章节、如何联系我们进行相应的同意撤回。请您谨慎操作,否则,因注销账号产生的数据丢失问题均由您自行承担。在注销账号之后,我们将停止为您提供本平台服务,并依据您的要求,删除您的个人信息,但法律法规另有规定的除外。

(三) 删除权

1.您可通过微信的缓存清理功能,删除您在本平台的缓存记录提供的相关个人信息。

2.如果您需要删除您在使用本平台过程中产生的其他个人信息,在您的合理要求并经验证核实您的身份后,我们会处理您的请求。您可以通过本隐私政策「第九章节、如何联系我们方式向我们进行反馈。

3.在以下情形中,您可以向我们提出删除个人信息的请求:

(1) 我们永久不再为您提供产品或服务;

(2) 您撤回对我们收集、使用您的个人信息的同意;

(3) 我们处理个人信息的行为违反法律、行政法规;

(4) 我们处理个人信息的行为违反了与您的约定;

(5) 您注销了用户帐号;

(6) 法律、行政法规规定的其他情形。

您同意并理解,您删除某些您已提交的个人信息可能导致您无法使用本平台的部分或者全部服务。

(四) 注销权

您可以通过第九章节、如何联系我们」进行账户注销。一旦您注销账户,我们将停止为您提供服务。请您谨慎操作,否则,因注销账号产生的数据丢失问题均由您自行承担。当您选择注销账户后,我们将停止为您提供服务,并依据您的要求,删除您的个人信息,但法律法规另有规定的除外。

七、 未成年人保护

我们非常重视对未成年人个人信息的保护,本平台服务主要面向成年人。如果我们发现收集了未成年人的个人信息,我们将尽快删除相关信息。如果您是未成年人的监护人,并且您认为我们收集了未成年人的个人信息,请您及时与我们联系,我们将采取措施删除相关信息。

八、 本隐私政策变更及通知

(一)为了向您提供更好的功能与服务,本平台服务将不时更新与变化,因此,我们将适时修订及变更隐私政策。

(二)未经您明确同意,我们不会削减您按照本隐私政策所应享有的权利。我们会在本页面上发布对本政策所做的任何变更。

(三)对于重大变更,我们可能还会提供本平台公告、推送通知或更为显著的弹窗等方式,向您发送隐私政策的最新版本。本政策重大变更包括但不限于:

1.我们的服务模式发生重大变化。如处理个人信息的目的、处理的个人信息类型、个人信息的使用方式等;

2.我们在所有权结构、组织架构等方面发生重大变化。如业务调整、破产并购等引起的所有者变更等;

3.个人信息共享、转让或公开披露的主要对象发生变化;

4.您参与个人信息处理方面的权利及其行使方式发生重大变化;

5.我们的联络方式及投诉渠道发生变化;

6.个人信息安全影响评估报告表明存在高风险时。

九、 如何联系我们

如果您对本隐私协议有任何疑问、意见或建议,或者您需要行使您的个人信息权利,请通过以下方式与我们联系:
[电子邮箱地址]
service@hbraas.com

我们将在收到您的联系信息后,尽快回复您并处理您的问题。

十、 名词定义与解释

本平台:通过电子化信息平台运营和提供的数字化产品和服务,电子化信息平台包括但不限于TED关爱小助手小程序、TED关爱中心微信公众号提供数字化产品和服务的系统或平台等,具体以用户实际注册、访问或使用为准(对于该等数字化产品和服务,本协议统称为“电子化信息平台”或“平台”或“本平台”)

个人信息:以电子或者其他方式记录的与已识别或可识别的自然人有关的各种信息,不包括匿名化处理后的信息。如姓名、出生日期、身份证件号码、个人生物识别信息、住址、通信通讯联系方式、通信记录和内容、账号密码、财产信息、征信信息、行踪轨迹、住宿信息、健康生理信息、交易信息等。

敏感个人信息:敏感个人信息是指一旦泄露或者非法使用,容易导致自然人的人格尊严受到侵害或者人身、财产安全受到危害的个人信息,包括生物识别、宗教信仰、特定身份、医疗健康、金融账户、行踪轨迹等信息,以及不满十四周岁未成年人的个人信息。例如,个人敏感信息包括身份证件号码、个人生物识别信息、银行账号、通信内容、健康生理信息等。本平台不涉及敏感信息收集。

OpenID:微信OpenID是用户在微信平台上的唯一标识符,用于身份验证和跨平台登录。此处OpenID是指本平台用户注册后的唯一加密用户身份标识。

                                                     TED关爱小助手

` + doc: `


TED关爱小助手小程序隐私政策

本版本更新日期:2025年9月10日

本版本生效日期:2025年9月12日

“TED关爱小助手”(以下亦称“我们”)非常注重保护用户(“您”)的个人信息及隐私。我们希望通过本《TED关爱小助手小程序隐私政策》(以下简称“本隐私政策”或本“政策”)向您清晰地介绍在使用我们的产品/服务时,我们如何处理您的个人信息。您及您的隐私对于我们至关重要,我们非常重视您的隐私和个人信息的保护。

请您在使用本产品/服务前,务必仔细阅读并充分理解本隐私政策。我们将逐一说明我们收集您的个人信息的类型及其对应的用途,以便您了解我们针对某一特定功能或服务所收集的具体个人信息的类别、使用理由及收集方式。

您在完成勾选并点击“同意”按钮后,本隐私政策即构成对双方有约束力的法律文件,即表示您同意我们按照本隐私政策收集、使用、处理和存储您的相关个人信息。

【本隐私政策的适用范围】

本隐私政策适用于您通过任何方式使用TED关爱小助手小程序平台或我们通过其他方式与您沟通合作时提供的全部功能和/或服务(以下合称为“本平台服务”)而收集或存储的信息。我们希望通过本隐私政策向您说明在您使用本平台服务时或我们通过其他方式与您沟通合作时,我们是如何收集、存储、使用、加工、传输、提供、公开、删除这些信息,以及我们将为您提供查阅、更正、限制、拒绝、删除、注销这些信息的方式。

本隐私政策将帮您了解以下信息:

1. 我们如何收集和使用您的个人信息

2. 我们基于何种目的或场景,收集和使用您的个人信息

3. 我们如何使用Cookie等同类技术

4. 我们如何委托处理、共享、转让、公开披露您的个人信息

5. 我们如何保存、保护您的个人信息

6. 您查阅、更正、限制、拒绝、删除、注销个人信息的权利

7. 未成年人保护

8. 本隐私政策变更及通知

9. 如何联系我们

10. 名词定义和解释

一、 我们如何收集和使用您的个人信息

(一)我们会根据本隐私政策的约定,为实现本平台服务而对所收集的个人信息进行使用。

(二)我们深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:合法、正当、必要和诚信原则,目的明确和直接相关原则,公开透明原则、准确性原则、问责性原则、数据安全原则等。同时,我们承诺将按业界成熟的安全标准,采取必要的措施保障您的个人信息的安全。

(三)我们对您个人信息的使用建立在下述一项或多项合法依据之上:您的同意、对公开信息的合理使用、为履行双方所签署的合同所必须及为遵守我们的法律义务。

二、 我们基于何种目的或场景,收集和使用您的个人信息

出于本隐私政策所描述的目的或场景,当您使用本平台服务时,我们可能会收集有关您的如下个人信息。若您不同意提供下列信息,有权拒绝提供,但您可能无法继续使用本平台的全部或部分服务:

(一) 注册、登录

当您需要使用本平台服务时,您首先需要注册本平台账号。为注册本平台账号,您需要提供您的手机号,以及选择性提供头像、昵称,您后续可以自主在【我的】页中填写或修改您的头像、昵称。如果您不提供上述信息,将影响您使用本平台的基本功能。

(二) 向您提供的本平台服务

您仅能查看本人管理患者的信息和数据。

1.页面浏览

当您在本平台浏览页面时,我们会收集您的本平台账号UID信息、微信OpenID,用来展示您的权益内容,以方便您的便捷使用。

2.阅读文章

您在本平台上阅读文章时,我们将会收集您的本平台账号UID信息,以判断您是否有对应的阅读权限。

3.下载文件

我们将会收集您的本平台账号UID信息,以判断您是否有对应的文件下载权限。

4.获得通知

您在本平台上查看通知时,我们将会收集您的本平台账号UID信息,以匹配该账号可以获得的通知内容。

5.数据看板

当您在本平台登录后,您可以查看关键统计数据及图表看板。

6.患者GO-QOL评分查看

您可以查看患者的GO-QOL评测评分,包括具体分值和得分变化情况。

7.互动服务

您可以查看用户通过系统标准问答库内选择的发送给您的问题,从标准问答库内选择合适的文本内容进行应答。

8.为您提供安全保障及更佳的服务体验

当您使用本平台服务时,我们会自动收集您对我们服务的详细使用情况,作为有关网络日志保存。包括浏览、点击查看、分享信息、访问日期和时间、浏览的内容及时长、浏览记录等。为了保障您的账号安全以及系统运行安全,防止欺诈、网络病毒、网络攻击等安全风险,本平台服务将满足法律法规和我们协议规则的相关要求,同时,我们会根据不同操作系统为您提供最佳的浏览体验。

(三) 如果您对我们收集和使用您的个人信息的法律依据有任何疑问或需要提供进一步的信息,请通过本隐私政策第九章节「如何联系我们」提供的联系方式与我们联系。

(四) 当我们要将您的个人信息用于本隐私政策未载明的其他目的时,会事先征求您的同意。请您知悉,本平台向您提供的服务可能将不断更新和发展,如果您选择使用本隐私政策中尚未列明的其他功能或服务时,我们会在收集您的个人信息前通过推送通知、更为显著的弹窗等方式向您详细说明信息收集的目的、方式、范围并征求您的同意。

三、 我们如何使用Cookie等同类技术

(一)依托于微信小程序提供的原生能力

为了帮助提升您的产品体验,我们会使用微信提供的一些原生能力来避免您重复登录,并存储您所在城市信息等数据,进而帮助判断您的登录状态、更好的为您提供服务、判断账户或数据安全。所有的信息获取都会经过您的授权同意才会使用,并且我们不会主动共享或转让您的信息至任何第三方,不会对外公开披露您的任何信息,您可以通过移除小程序的方式删除您已授权的信息。

(二)Cookies 的使用

我们提供的产品服务中,为了能够让您获得更好的浏览体验,我们会在您的微信内置浏览器上记录Cookies信息,指定给您的Cookies是唯一的,它只能被将Cookies发布给您的域中的Web服务器读取。大部分手机的微信内置浏览器会自动接受Cookies,我们不会将Cookies用于本隐私政策所述目的之外的任何用途。您可以在微信“我-设置-通用-存储空间-缓存”中清除保存的所有 Cookies,但如果您这么做,您可能需要在每一次访问小程序内嵌网站时重新授权获取相关信息,而且您之前的相关记录信息也会被删除,并且可能会对您所使用服务的安全性有一定影响。

四、 我们如何委托处理、共享、转让、公开披露您的个人信息

(一) 委托处理

如涉及,我们会聘请服务提供商来协助我们提供客户支持。对我们委托处理个人信息的公司、组织和个人,我们会与其签署严格的个人信息保护条款和保密协定,要求他们按照我们的要求、本个人信息保护政策以及其他任何相关的个人信息保护、保密和信息安全措施来处理您的个人信息,并且对他们的个人信息处理活动进行监督。

(二) 共享

我们不会将任何个人信息出售给第三方。我们不会向本小程序运营公司以外的任何公司、组织和个人提供您的个人信息,但以下情况除外:

a) 在向您进行明确告知并获取您的单独同意的情况下共享:获得您的单独同意后,我们会与我们所披露的有关个人信息处理者共享您的相关个人信息;

d) 我们可能会根据法律法规规定,或按政府主管部门的强制性要求,向有关主管部门提供您的个人信息。

(三) 转让

我们不会将您的个人信息转让给任何公司、组织和个人,但以下情况除外:

a) 在向您进行明确告知并获取您的单独同意的情况下转让:获得您的单独同意后,我们会向我们所披露的有关个人信息处理者转让您的相关个人信息;

b) 在涉及合并、分立、解散、被宣告破产时,如涉及到个人信息转让,我们会向您告知接收方的名称或者姓名和联系方式。如接收方变更原先的处理目的、处理方式的,我们将要求该接收方重新取得您的同意。

(四) 公开披露

我们仅会在获得您明确同意后,公开披露您的个人信息。

五、 我们如何保存、保护您的个人信息

(一) 保存地点

我们依照法律法规的规定,将在境内运营过程中收集和产生的您的个人信息存储于中华人民共和国境内。目前,我们不会将上述信息传输至其他地区,如果我们向其他地区传输,我们将遵循相关国家规定或者征求您的同意。

(二) 保存时间

我们会采取一切合理可行的措施,确保未收集无关的个人信息。TED关爱中心小程序中个人信息储存必要期限是TED关爱中心小程序为您终止服务后3年。超出必要期限后,我们将对您的个人信息进行删除或匿名化处理,但法律法规另有规定的除外。

(三) 保护措施

我们已使用符合业界标准的安全防护措施保护您提供的个人信息,防止数据遭到未经授权访问、公开披露、使用、修改、损坏或丢失。我们会采取一切合理可行的措施,保护您的个人信息。例如,我们会使用加密技术(例如SSL)确保数据的保密性;我们会使用受信赖的保护机制防止数据遭到恶意攻击;我们会部署访问控制机制,确保只有授权人员才可访问个人信息;以及我们会举办安全和隐私保护培训课程,加强员工对于保护个人信息重要性的认识。互联网环境并非百分之百安全,我们将尽力确保或担保您发送给我们的任何信息的安全性。

(四) 数据安全能力

我们会使用不低于行业同行的加密技术、匿名化处理及相关合理可行的手段保护您的个人信息,并使用安全保护机制防止您的个人信息遭到恶意攻击。

我们会建立专门的安全部门、安全管理制度、数据安全流程保障您的个人信息安全。我们采取严格的数据使用和访问制度,确保只有授权人员才可访问您的个人信息,并适时对数据和技术进行安全审计。

(五) 安全事件处理

在不幸发生个人信息安全事件后,我们将按照法律法规的要求,及时向您告知:安全事件的基本情况和可能的影响、我们已采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施等。我们将及时将事件相关情况以邮件、信函、电话、推送通知等方式告知您,难以逐一告知个人信息主体时,我们会采取合理、有效的方式发布公告。 同时,我们还将按照监管部门要求,主动上报个人信息安全事件的处置情况。

六、 您查阅、更正、限制、拒绝、删除、注销个人信息的权利

我们非常重视并保护您对于个人信息处理活动中的知情权、决定权、限制权、拒绝权等权利,并为您提供了行使在个人信息处理活动中相关权利的方法。

(一) 查阅权和更正权

除法律法规规定的情形除外,您有权随时查阅和更正您的个人信息,您可以通过在本平台的【我的】查阅或修改您的个人信息,包括头像、昵称。

(二) 限制或拒绝权

对于您个人信息的收集和使用,您可以在本平台上随时通过以下方式撤回授权同意,以限制或拒绝我们收集或使用您的个人信息:

您可以通过第九章节、如何联系我们进行相应的同意撤回。请您谨慎操作,否则,因注销账号产生的数据丢失问题均由您自行承担。在注销账号之后,我们将停止为您提供本平台服务,并依据您的要求,删除您的个人信息,但法律法规另有规定的除外。

(三) 删除权

1.您可通过微信的缓存清理功能,删除您在本平台的缓存记录提供的相关个人信息。

2.如果您需要删除您在使用本平台过程中产生的其他个人信息,在您的合理要求并经验证核实您的身份后,我们会处理您的请求。您可以通过本隐私政策「第九章节、如何联系我们方式向我们进行反馈。

3.在以下情形中,您可以向我们提出删除个人信息的请求:

(1) 我们永久不再为您提供产品或服务;

(2) 您撤回对我们收集、使用您的个人信息的同意;

(3) 我们处理个人信息的行为违反法律、行政法规;

(4) 我们处理个人信息的行为违反了与您的约定;

(5) 您注销了用户帐号;

(6) 法律、行政法规规定的其他情形。

您同意并理解,您删除某些您已提交的个人信息可能导致您无法使用本平台的部分或者全部服务。

(四) 注销权

您可以通过第九章节、如何联系我们」进行账户注销。一旦您注销账户,我们将停止为您提供服务。请您谨慎操作,否则,因注销账号产生的数据丢失问题均由您自行承担。当您选择注销账户后,我们将停止为您提供服务,并依据您的要求,删除您的个人信息,但法律法规另有规定的除外。

七、 未成年人保护

我们非常重视对未成年人个人信息的保护,本平台服务主要面向成年人。如果我们发现收集了未成年人的个人信息,我们将尽快删除相关信息。如果您是未成年人的监护人,并且您认为我们收集了未成年人的个人信息,请您及时与我们联系,我们将采取措施删除相关信息。

八、 本隐私政策变更及通知

(一)为了向您提供更好的功能与服务,本平台服务将不时更新与变化,因此,我们将适时修订及变更隐私政策。

(二)未经您明确同意,我们不会削减您按照本隐私政策所应享有的权利。我们会在本页面上发布对本政策所做的任何变更。

(三)对于重大变更,我们可能还会提供本平台公告、推送通知或更为显著的弹窗等方式,向您发送隐私政策的最新版本。本政策重大变更包括但不限于:

1.我们的服务模式发生重大变化。如处理个人信息的目的、处理的个人信息类型、个人信息的使用方式等;

2.我们在所有权结构、组织架构等方面发生重大变化。如业务调整、破产并购等引起的所有者变更等;

3.个人信息共享、转让或公开披露的主要对象发生变化;

4.您参与个人信息处理方面的权利及其行使方式发生重大变化;

5.我们的联络方式及投诉渠道发生变化;

6.个人信息安全影响评估报告表明存在高风险时。

九、 如何联系我们

如果您对本隐私协议有任何疑问、意见或建议,或者您需要行使您的个人信息权利,请通过以下方式与我们联系:
[电子邮箱地址]
service@hbraas.com

我们将在收到您的联系信息后,尽快回复您并处理您的问题。

十、 名词定义与解释

本平台:通过电子化信息平台运营和提供的数字化产品和服务,电子化信息平台包括但不限于TED关爱小助手小程序、TED关爱中心微信公众号提供数字化产品和服务的系统或平台等,具体以用户实际注册、访问或使用为准(对于该等数字化产品和服务,本协议统称为“电子化信息平台”或“平台”或“本平台”)

个人信息:以电子或者其他方式记录的与已识别或可识别的自然人有关的各种信息,不包括匿名化处理后的信息。如姓名、出生日期、身份证件号码、个人生物识别信息、住址、通信通讯联系方式、通信记录和内容、账号密码、财产信息、征信信息、行踪轨迹、住宿信息、健康生理信息、交易信息等。

敏感个人信息:敏感个人信息是指一旦泄露或者非法使用,容易导致自然人的人格尊严受到侵害或者人身、财产安全受到危害的个人信息,包括生物识别、宗教信仰、特定身份、医疗健康、金融账户、行踪轨迹等信息,以及不满十四周岁未成年人的个人信息。例如,个人敏感信息包括身份证件号码、个人生物识别信息、银行账号、通信内容、健康生理信息等。本平台不涉及敏感信息收集。

OpenID:微信OpenID是用户在微信平台上的唯一标识符,用于身份验证和跨平台登录。此处OpenID是指本平台用户注册后的唯一加密用户身份标识。

                                                     TED关爱小助手

`, }, onLoad() {}, -}); +}) export {} diff --git a/src/doc/pages/doc2/index.scss b/src/doc/pages/doc2/index.scss index bc816cf..653987a 100644 --- a/src/doc/pages/doc2/index.scss +++ b/src/doc/pages/doc2/index.scss @@ -1,3 +1,3 @@ -.mp-html{ +.mp-html { padding: 20rpx 40rpx; } diff --git a/src/gift/compontnts/echart/echarts.js b/src/gift/compontnts/echart/echarts.js index 69cc654..199542e 100644 --- a/src/gift/compontnts/echart/echarts.js +++ b/src/gift/compontnts/echart/echarts.js @@ -1,5 +1,6 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).echarts={})}(this,(function(t){"use strict"; -/*! ***************************************************************************** +!(function (t, e) { typeof exports == 'object' && typeof module != 'undefined' ? e(exports) : typeof define == 'function' && define.amd ? define(['exports'], e) : e((t = typeof globalThis != 'undefined' ? globalThis : t || self).echarts = {}) }(this, (t) => { + 'use strict' + /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any @@ -12,8 +13,599 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,n)};function n(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}var i=function(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1},r=new function(){this.browser=new i,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow="undefined"!=typeof window};"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(r.wxa=!0,r.touchEventsSupported=!0):"undefined"==typeof document&&"undefined"!=typeof self?r.worker=!0:"undefined"==typeof navigator?(r.node=!0,r.svgSupported=!0):function(t,e){var n=e.browser,i=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),o=t.match(/Edge?\/([\d.]+)/),a=/micromessenger/i.test(t);i&&(n.firefox=!0,n.version=i[1]),r&&(n.ie=!0,n.version=r[1]),o&&(n.edge=!0,n.version=o[1],n.newEdge=+o[1].split(".")[0]>18),a&&(n.weChat=!0),e.svgSupported="undefined"!=typeof SVGRect,e.touchEventsSupported="ontouchstart"in window&&!n.ie&&!n.edge,e.pointerEventsSupported="onpointerdown"in window&&(n.edge||n.ie&&+n.version>=11),e.domSupported="undefined"!=typeof document;var s=document.documentElement.style;e.transform3dSupported=(n.ie&&"transition"in s||n.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||n.ie&&+n.version>=9}(navigator.userAgent,r);var s,l,a="12px sans-serif",u=function(t){var e={};if("undefined"==typeof JSON)return e;for(var n=0;n<95;n++){var i=String.fromCharCode(n+32),r=(t.charCodeAt(n)-20)/100;e[i]=r}return e}("007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N"),h={createCanvas:function(){return"undefined"!=typeof document&&document.createElement("canvas")},measureText:function(t,e){if(!s){var n=h.createCanvas();s=n&&n.getContext("2d")}if(s)return l!==e&&(l=s.font=e||a),s.measureText(t);t=t||"";var i=/^([0-9]*?)px$/.exec(e=e||a),r=+(i&&i[1])||12,o=0;if(e.indexOf("mono")>=0)o=r*t.length;else for(var c=0;c>1)%2;a.style.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[s]+":0",r[l]+":0",i[1-s]+":auto",r[1-l]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}return n}(e,a),a,o);if(s)return s(t,n,i),!0}return!1}function Jt(t){return"CANVAS"===t.nodeName.toUpperCase()}var Qt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,te=[],ee=r.browser.firefox&&+r.browser.version.split(".")[0]<39;function ne(t,e,n,i){return n=n||{},i?ie(t,e,n):ee&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):ie(t,e,n),n}function ie(t,e,n){if(r.domSupported&&t.getBoundingClientRect){var i=e.clientX,o=e.clientY;if(Jt(t)){var a=t.getBoundingClientRect();return n.zrX=i-a.left,void(n.zrY=o-a.top)}if($t(te,t,i,o))return n.zrX=te[0],void(n.zrY=te[1])}n.zrX=n.zrY=0}function re(t){return t||window.event}function oe(t,e,n){if(null!=(e=re(e)).zrX)return e;var i=e.type;if(i&&i.indexOf("touch")>=0){var r="touchend"!==i?e.targetTouches[0]:e.changedTouches[0];r&&ne(t,r,e,n)}else{ne(t,e,e,n);var o=function(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,i=t.deltaY;return null==n||null==i?e:3*(0!==i?Math.abs(i):Math.abs(n))*(i>0?-1:i<0?1:n>0?-1:1)}(e);e.zrDelta=o?o/120:-(e.detail||0)/3}var a=e.button;return null==e.which&&void 0!==a&&Qt.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ae(t,e,n,i){t.addEventListener(e,n,i)}var se=function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0};function le(t){return 2===t.which||3===t.which}var ue=function(){function t(){this._track=[]}return t.prototype.recognize=function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},t.prototype.clear=function(){return this._track.length=0,this},t.prototype._doTrack=function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,a=i.length;o1&&r&&r.length>1){var a=he(r)/he(o);!isFinite(a)&&(a=1),e.pinchScale=a;var s=[((i=r)[0][0]+i[1][0])/2,(i[0][1]+i[1][1])/2];return e.pinchX=s[0],e.pinchY=s[1],{type:"pinch",target:t[0].target,event:e}}}}};function de(){se(this.event)}var fe=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.handler=null,e}return n(e,t),e.prototype.dispose=function(){},e.prototype.setCursor=function(){},e}(Xt),ge=function(t,e){this.x=t,this.y=e},ye=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ve=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o._hovered=new ge(0,0),o.storage=e,o.painter=n,o.painterRoot=r,i=i||new fe,o.proxy=null,o.setHandlerProxy(i),o._draggingMgr=new Ut(o),o}return n(e,t),e.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(E(ye,(function(e){t.on&&t.on(e,this[e],this)}),this),t.handler=this),this.proxy=t},e.prototype.mousemove=function(t){var e=t.zrX,n=t.zrY,i=xe(this,e,n),r=this._hovered,o=r.target;o&&!o.__zr&&(o=(r=this.findHover(r.x,r.y)).target);var a=this._hovered=i?new ge(e,n):this.findHover(e,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),o&&s!==o&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(a,"mousemove",t),s&&s!==o&&this.dispatchToElement(a,"mouseover",t)},e.prototype.mouseout=function(t){var e=t.zrEventControl;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&this.trigger("globalout",{type:"globalout",event:t})},e.prototype.resize=function(){this._hovered=new ge(0,0)},e.prototype.dispatch=function(t,e){var n=this[t];n&&n.call(this,e)},e.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},e.prototype.setCursorStyle=function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},e.prototype.dispatchToElement=function(t,e,n){var i=(t=t||{}).target;if(!i||!i.silent){for(var r="on"+e,o=function(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:de}}(e,t,n);i&&(i[r]&&(o.cancelBubble=!!i[r].call(i,o)),i.trigger(e,o),i=i.__hostTarget?i.__hostTarget:i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer((function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)})))}},e.prototype.findHover=function(t,e,n){for(var i=this.storage.getDisplayList(),r=new ge(t,e),o=i.length-1;o>=0;o--){var a=void 0;if(i[o]!==n&&!i[o].ignore&&(a=me(i[o],t,e))&&(!r.topTarget&&(r.topTarget=i[o]),"silent"!==a)){r.target=i[o];break}}return r},e.prototype.processGesture=function(t,e){this._gestureMgr||(this._gestureMgr=new ue);var n=this._gestureMgr;"start"===e&&n.clear();var i=n.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&n.clear(),i){var r=i.type;t.gestureEvent=r;var o=new ge;o.target=i.target,this.dispatchToElement(o,r,i.event)}},e}(Xt);function me(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(var i=t,r=void 0,o=!1;i;){if(i.ignoreClip&&(o=!0),!o){var a=i.getClipPath();if(a&&!a.contain(e,n))return!1;i.silent&&(r=!0)}i=i.__hostTarget||i.parent}return!r||"silent"}return!1}function xe(t,e,n){var i=t.painter;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}function _e(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){for(;r=0;)r++;return r-e}function be(t,e,n,i,r){for(i===e&&i++;i>>1])<0?l=o:s=o+1;var u=i-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=a}}function we(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])>0){for(s=i-r;l0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}for(a++;a>>1);o(t,e[n+h])>0?a=h+1:l=h}return l}function Se(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])<0){for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;l=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a>>1);o(t,e[n+h])<0?l=h:a=h+1}return l}function Ie(t,e,n,i){n||(n=0),i||(i=t.length);var r=i-n;if(!(r<2)){var o=0;if(r<32)be(t,n,i,n+(o=_e(t,n,i,e)),e);else{var a=function(t,e){var n,i,r=7,o=0;t.length;var a=[];function s(s){var l=n[s],u=i[s],h=n[s+1],c=i[s+1];i[s]=u+c,s===o-3&&(n[s+1]=n[s+2],i[s+1]=i[s+2]),o--;var p=Se(t[h],t,l,u,0,e);l+=p,0!=(u-=p)&&0!==(c=we(t[l+u-1],t,h,c,c-1,e))&&(u<=c?function(n,i,o,s){var l=0;for(l=0;l=7||d>=7);if(f)break;g<0&&(g=0),g+=2}if((r=g)<1&&(r=1),1===i){for(l=0;l=0;l--)t[d+l]=t[p+l];if(0===i){v=!0;break}}if(t[c--]=a[h--],1==--s){v=!0;break}if(0!=(y=s-we(t[u],a,0,s,s-1,e))){for(s-=y,d=1+(c-=y),p=1+(h-=y),l=0;l=7||y>=7);if(v)break;f<0&&(f=0),f+=2}if((r=f)<1&&(r=1),1===s){for(d=1+(c-=i),p=1+(u-=i),l=i-1;l>=0;l--)t[d+l]=t[p+l];t[c]=a[h]}else{if(0===s)throw new Error;for(p=c-(s-1),l=0;l=0;l--)t[d+l]=t[p+l];t[c]=a[h]}else for(p=c-(s-1),l=0;l1;){var t=o-2;if(t>=1&&i[t-1]<=i[t]+i[t+1]||t>=2&&i[t-2]<=i[t]+i[t-1])i[t-1]i[t+1])break;s(t)}},forceMergeRuns:function(){for(;o>1;){var t=o-2;t>0&&i[t-1]=32;)e|=1&t,t>>=1;return t+e}(r);do{if((o=_e(t,n,i,e))s&&(l=s),be(t,n,n+l,n+o,e),o=l}a.pushRun(n,o),a.mergeRuns(),r-=o,n+=o}while(0!==r);a.forceMergeRuns()}}}E(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],(function(t){ve.prototype[t]=function(e){var n,i,r=e.zrX,o=e.zrY,a=xe(this,r,o);if("mouseup"===t&&a||(i=(n=this.findHover(r,o)).target),"mousedown"===t)this._downEl=i,this._downPoint=[e.zrX,e.zrY],this._upEl=i;else if("mouseup"===t)this._upEl=i;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||Et(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}}));var Te=!1;function Ce(){Te||(Te=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function De(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var Ae=function(){function t(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=De}return t.prototype.traverse=function(t,e){for(var n=0;n0&&(u.__clipPaths=[]),isNaN(u.z)&&(Ce(),u.z=0),isNaN(u.z2)&&(Ce(),u.z2=0),isNaN(u.zlevel)&&(Ce(),u.zlevel=0),this._displayList[this._displayListLen++]=u}var h=t.getDecalElement&&t.getDecalElement();h&&this._updateAndAddDisplayable(h,e,n);var c=t.getTextGuideLine();c&&this._updateAndAddDisplayable(c,e,n);var p=t.getTextContent();p&&this._updateAndAddDisplayable(p,e,n)}},t.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},t.prototype.delRoot=function(t){if(t instanceof Array)for(var e=0,n=t.length;e=0&&this._roots.splice(i,1)}},t.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},t.prototype.getRoots=function(){return this._roots},t.prototype.dispose=function(){this._displayList=null,this._roots=null},t}(),ke=r.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){return setTimeout(t,16)},Le={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-Le.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*Le.bounceIn(2*t):.5*Le.bounceOut(2*t-1)+.5}},Pe=Math.pow,Oe=Math.sqrt,Re=1e-8,Ne=1e-4,Ee=Oe(3),ze=1/3,Ve=wt(),Be=wt(),Fe=wt();function Ge(t){return t>-1e-8&&tRe||t<-1e-8}function He(t,e,n,i,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*i+3*o*n)}function Ye(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r*r)}function Ue(t,e,n,i,r,o){var a=i+3*(e-n)-t,s=3*(n-2*e+t),l=3*(e-t),u=t-r,h=s*s-3*a*l,c=s*l-9*a*u,p=l*l-3*s*u,d=0;if(Ge(h)&&Ge(c))Ge(s)?o[0]=0:(M=-l/s)>=0&&M<=1&&(o[d++]=M);else{var f=c*c-4*h*p;if(Ge(f)){var g=c/h,y=-g/2;(M=-s/a+g)>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y)}else if(f>0){var v=Oe(f),m=h*s+1.5*a*(-c+v),x=h*s+1.5*a*(-c-v);(M=(-s-((m=m<0?-Pe(-m,ze):Pe(m,ze))+(x=x<0?-Pe(-x,ze):Pe(x,ze))))/(3*a))>=0&&M<=1&&(o[d++]=M)}else{var _=(2*h*s-3*a*c)/(2*Oe(h*h*h)),b=Math.acos(_)/3,w=Oe(h),S=Math.cos(b),M=(-s-2*w*S)/(3*a),I=(y=(-s+w*(S+Ee*Math.sin(b)))/(3*a),(-s+w*(S-Ee*Math.sin(b)))/(3*a));M>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y),I>=0&&I<=1&&(o[d++]=I)}}return d}function Xe(t,e,n,i,r){var o=6*n-12*e+6*t,a=9*e+3*i-3*t-9*n,s=3*e-3*t,l=0;if(Ge(a))We(o)&&(h=-s/o)>=0&&h<=1&&(r[l++]=h);else{var u=o*o-4*a*s;if(Ge(u))r[0]=-o/(2*a);else if(u>0){var h,c=Oe(u),p=(-o-c)/(2*a);(h=(-o+c)/(2*a))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}function Ze(t,e,n,i,r,o){var a=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,u=(s-a)*r+a,h=(l-s)*r+s,c=(h-u)*r+u;o[0]=t,o[1]=a,o[2]=u,o[3]=c,o[4]=c,o[5]=h,o[6]=l,o[7]=i}function je(t,e,n,i,r,o,a,s,l,u,h){var c,p,d,f,g,y=.005,v=1/0;Ve[0]=l,Ve[1]=u;for(var m=0;m<1;m+=.05)Be[0]=He(t,n,r,a,m),Be[1]=He(e,i,o,s,m),(f=Vt(Ve,Be))=0&&f=0&&y=1?1:Ue(0,i,o,1,t,s)&&He(0,r,a,1,s[0])}}}var on=function(){function t(t){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=t.loop||!1,this.onframe=t.onframe||xt,this.ondestroy=t.ondestroy||xt,this.onrestart=t.onrestart||xt,t.easing&&this.setEasing(t.easing)}return t.prototype.step=function(t,e){if(this._inited||(this._startTime=t+this._delay,this._inited=!0),!this._paused){var n=this._life,i=t-this._startTime-this._pausedTime,r=i/n;r<0&&(r=0),r=Math.min(r,1);var o=this.easingFunc,a=o?o(r):r;if(this.onframe(a),1===r){if(!this.loop)return!0;var s=i%n;this._startTime=t-s,this._pausedTime=0,this.onrestart()}return!1}this._pausedTime+=e},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){this._paused=!1},t.prototype.setEasing=function(t){this.easing=t,this.easingFunc=U(t)?t:Le[t]||rn(t)},t}(),an=function(t){this.value=t},sn=function(){function t(){this._len=0}return t.prototype.insert=function(t){var e=new an(t);return this.insertEntry(e),e},t.prototype.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},t.prototype.remove=function(t){var e=t.prev,n=t.next;e?e.next=n:this.head=n,n?n.prev=e:this.tail=e,t.next=t.prev=null,this._len--},t.prototype.len=function(){return this._len},t.prototype.clear=function(){this.head=this.tail=null,this._len=0},t}(),ln=function(){function t(t){this._list=new sn,this._maxSize=10,this._map={},this._maxSize=t}return t.prototype.put=function(t,e){var n=this._list,i=this._map,r=null;if(null==i[t]){var o=n.len(),a=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var s=n.head;n.remove(s),delete i[s.key],r=s.value,this._lastRemovedEntry=s}a?a.value=e:a=new an(e),a.key=t,n.insertEntry(a),i[t]=a}return r},t.prototype.get=function(t){var e=this._map[t],n=this._list;if(null!=e)return e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value},t.prototype.clear=function(){this._list.clear(),this._map={}},t.prototype.len=function(){return this._list.len()},t}(),un={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function hn(t){return(t=Math.round(t))<0?0:t>255?255:t}function cn(t){return t<0?0:t>1?1:t}function pn(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?hn(parseFloat(e)/100*255):hn(parseInt(e,10))}function dn(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?cn(parseFloat(e)/100):cn(parseFloat(e))}function fn(t,e,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}function gn(t,e,n){return t+(e-t)*n}function yn(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function vn(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var mn=new ln(20),xn=null;function _n(t,e){xn&&vn(xn,e),xn=mn.put(t,xn||e.slice())}function bn(t,e){if(t){e=e||[];var n=mn.get(t);if(n)return vn(e,n);var i=(t+="").replace(/ /g,"").toLowerCase();if(i in un)return vn(e,un[i]),_n(t,e),e;var r,o=i.length;if("#"===i.charAt(0))return 4===o||5===o?(r=parseInt(i.slice(1,4),16))>=0&&r<=4095?(yn(e,(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,5===o?parseInt(i.slice(4),16)/15:1),_n(t,e),e):void yn(e,0,0,0,1):7===o||9===o?(r=parseInt(i.slice(1,7),16))>=0&&r<=16777215?(yn(e,(16711680&r)>>16,(65280&r)>>8,255&r,9===o?parseInt(i.slice(7),16)/255:1),_n(t,e),e):void yn(e,0,0,0,1):void 0;var a=i.indexOf("("),s=i.indexOf(")");if(-1!==a&&s+1===o){var l=i.substr(0,a),u=i.substr(a+1,s-(a+1)).split(","),h=1;switch(l){case"rgba":if(4!==u.length)return 3===u.length?yn(e,+u[0],+u[1],+u[2],1):yn(e,0,0,0,1);h=dn(u.pop());case"rgb":return 3!==u.length?void yn(e,0,0,0,1):(yn(e,pn(u[0]),pn(u[1]),pn(u[2]),h),_n(t,e),e);case"hsla":return 4!==u.length?void yn(e,0,0,0,1):(u[3]=dn(u[3]),wn(u,e),_n(t,e),e);case"hsl":return 3!==u.length?void yn(e,0,0,0,1):(wn(u,e),_n(t,e),e);default:return}}yn(e,0,0,0,1)}}function wn(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=dn(t[1]),r=dn(t[2]),o=r<=.5?r*(i+1):r+i-r*i,a=2*r-o;return yn(e=e||[],hn(255*fn(a,o,n+1/3)),hn(255*fn(a,o,n)),hn(255*fn(a,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Sn(t,e){var n=bn(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,n[i]>255?n[i]=255:n[i]<0&&(n[i]=0);return kn(n,4===n.length?"rgba":"rgb")}}function Mn(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[];var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=e[r],s=e[o],l=i-r;return n[0]=hn(gn(a[0],s[0],l)),n[1]=hn(gn(a[1],s[1],l)),n[2]=hn(gn(a[2],s[2],l)),n[3]=cn(gn(a[3],s[3],l)),n}}var In=Mn;function Tn(t,e,n){if(e&&e.length&&t>=0&&t<=1){var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=bn(e[r]),s=bn(e[o]),l=i-r,u=kn([hn(gn(a[0],s[0],l)),hn(gn(a[1],s[1],l)),hn(gn(a[2],s[2],l)),cn(gn(a[3],s[3],l))],"rgba");return n?{color:u,leftIndex:r,rightIndex:o,value:i}:u}}var Cn=Tn;function Dn(t,e,n,i){var r=bn(t);if(t)return r=function(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(i,r,o),s=Math.max(i,r,o),l=s-a,u=(s+a)/2;if(0===l)e=0,n=0;else{n=u<.5?l/(s+a):l/(2-s-a);var h=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,p=((s-o)/6+l/2)/l;i===s?e=p-c:r===s?e=1/3+h-p:o===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var d=[360*e,n,u];return null!=t[3]&&d.push(t[3]),d}}(r),null!=e&&(r[0]=function(t){return(t=Math.round(t))<0?0:t>360?360:t}(e)),null!=n&&(r[1]=dn(n)),null!=i&&(r[2]=dn(i)),kn(wn(r),"rgba")}function An(t,e){var n=bn(t);if(n&&null!=e)return n[3]=cn(e),kn(n,"rgba")}function kn(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}function Ln(t,e){var n=bn(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*e:0}var Pn=Object.freeze({__proto__:null,parse:bn,lift:Sn,toHex:function(t){var e=bn(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)},fastLerp:Mn,fastMapToColor:In,lerp:Tn,mapToColor:Cn,modifyHSL:Dn,modifyAlpha:An,stringify:kn,lum:Ln,random:function(){return kn([Math.round(255*Math.random()),Math.round(255*Math.random()),Math.round(255*Math.random())],"rgb")}}),On=Math.round;function Rn(t){var e;if(t&&"transparent"!==t){if("string"==typeof t&&t.indexOf("rgba")>-1){var n=bn(t);n&&(t="rgb("+n[0]+","+n[1]+","+n[2]+")",e=n[3])}}else t="none";return{color:t,opacity:null==e?1:e}}var Nn=1e-4;function En(t){return t-1e-4}function zn(t){return On(1e3*t)/1e3}function Vn(t){return On(1e4*t)/1e4}var Bn={left:"start",right:"end",center:"middle",middle:"middle"};function Fn(t){return t&&!!t.image}function Gn(t){return"linear"===t.type}function Wn(t){return"radial"===t.type}function Hn(t){return"url(#"+t+")"}function Yn(t){var e=t.getGlobalScale(),n=Math.max(e[0],e[1]);return Math.max(Math.ceil(Math.log(n)/Math.log(10)),1)}function Un(t){var e=t.x||0,n=t.y||0,i=(t.rotation||0)*_t,r=rt(t.scaleX,1),o=rt(t.scaleY,1),a=t.skewX||0,s=t.skewY||0,l=[];return(e||n)&&l.push("translate("+e+"px,"+n+"px)"),i&&l.push("rotate("+i+")"),1===r&&1===o||l.push("scale("+r+","+o+")"),(a||s)&&l.push("skew("+On(a*_t)+"deg, "+On(s*_t)+"deg)"),l.join(" ")}var Xn=r.hasGlobalWindow&&U(window.btoa)?function(t){return window.btoa(unescape(t))}:"undefined"!=typeof Buffer?function(t){return Buffer.from(t).toString("base64")}:function(t){return null},Zn=Array.prototype.slice;function jn(t,e,n){return(e-t)*n+t}function qn(t,e,n,i){for(var r=e.length,o=0;oi?e:t,o=Math.min(n,i),a=r[o-1]||{color:[0,0,0,0],offset:0},s=o;sa)i.length=a;else for(var s=o;s=1},t.prototype.getAdditiveTrack=function(){return this._additiveTrack},t.prototype.addKeyframe=function(t,e,n){this._needsSort=!0;var i=this.keyframes,r=i.length,o=!1,a=6,s=e;if(N(e)){var l=function(t){return N(t&&t[0])?2:1}(e);a=l,(1===l&&!j(e[0])||2===l&&!j(e[0][0]))&&(o=!0)}else if(j(e)&&!nt(e))a=0;else if(X(e))if(isNaN(+e)){var u=bn(e);u&&(s=u,a=3)}else a=0;else if(Q(e)){var h=A({},s);h.colorStops=z(e.colorStops,(function(t){return{offset:t.offset,color:bn(t.color)}})),Gn(e)?a=4:Wn(e)&&(a=5),s=h}0===r?this.valType=a:a===this.valType&&6!==a||(o=!0),this.discrete=this.discrete||o;var c={time:t,value:s,rawValue:e,percent:0};return n&&(c.easing=n,c.easingFunc=U(n)?n:Le[n]||rn(n)),i.push(c),c},t.prototype.prepare=function(t,e){var n=this.keyframes;this._needsSort&&n.sort((function(t,e){return t.time-e.time}));for(var i=this.valType,r=n.length,o=n[r-1],a=this.discrete,s=ii(i),l=ni(i),u=0;u=0&&!(l[n].percent<=e);n--);n=d(n,u-2)}else{for(n=p;ne);n++);n=d(n-1,u-2)}r=l[n+1],i=l[n]}if(i&&r){this._lastFr=n,this._lastFrP=e;var f=r.percent-i.percent,g=0===f?1:d((e-i.percent)/f,1);r.easingFunc&&(g=r.easingFunc(g));var y=o?this._additiveValue:c?ri:t[h];if(!ii(s)&&!c||y||(y=this._additiveValue=[]),this.discrete)t[h]=g<1?i.rawValue:r.rawValue;else if(ii(s))1===s?qn(y,i[a],r[a],g):function(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a0&&s.addKeyframe(0,ti(l),i),this._trackKeys.push(a)}s.addKeyframe(t,ti(e[a]),i)}return this._maxTime=Math.max(this._maxTime,t),this},t.prototype.pause=function(){this._clip.pause(),this._paused=!0},t.prototype.resume=function(){this._clip.resume(),this._paused=!1},t.prototype.isPaused=function(){return!!this._paused},t.prototype.duration=function(t){return this._maxTime=t,this._force=!0,this},t.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneCbs;if(t)for(var e=t.length,n=0;n0)){this._started=1;for(var e=this,n=[],i=this._maxTime||0,r=0;r1){var a=o.pop();r.addKeyframe(a.time,t[i]),r.prepare(this._maxTime,r.getAdditiveTrack())}}}},t}();function si(){return(new Date).getTime()}var li,ui,hi=function(t){function e(e){var n=t.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,e=e||{},n.stage=e.stage||{},n}return n(e,t),e.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._head?(this._tail.next=t,t.prev=this._tail,t.next=null,this._tail=t):this._head=this._tail=t,t.animation=this},e.prototype.addAnimator=function(t){t.animation=this;var e=t.getClip();e&&this.addClip(e)},e.prototype.removeClip=function(t){if(t.animation){var e=t.prev,n=t.next;e?e.next=n:this._head=n,n?n.prev=e:this._tail=e,t.next=t.prev=t.animation=null}},e.prototype.removeAnimator=function(t){var e=t.getClip();e&&this.removeClip(e),t.animation=null},e.prototype.update=function(t){for(var e=si()-this._pausedTime,n=e-this._time,i=this._head;i;){var r=i.next;i.step(e,n)?(i.ondestroy(),this.removeClip(i),i=r):i=r}this._time=e,t||(this.trigger("frame",n),this.stage.update&&this.stage.update())},e.prototype._startLoop=function(){var t=this;this._running=!0,ke((function e(){t._running&&(ke(e),!t._paused&&t.update())}))},e.prototype.start=function(){this._running||(this._time=si(),this._pausedTime=0,this._startLoop())},e.prototype.stop=function(){this._running=!1},e.prototype.pause=function(){this._paused||(this._pauseStart=si(),this._paused=!0)},e.prototype.resume=function(){this._paused&&(this._pausedTime+=si()-this._pauseStart,this._paused=!1)},e.prototype.clear=function(){for(var t=this._head;t;){var e=t.next;t.prev=t.next=t.animation=null,t=e}this._head=this._tail=null},e.prototype.isFinished=function(){return null==this._head},e.prototype.animate=function(t,e){e=e||{},this.start();var n=new ai(t,e.loop);return this.addAnimator(n),n},e}(Xt),ci=r.domSupported,pi=(ui={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},{mouse:li=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],touch:["touchstart","touchend","touchmove"],pointer:z(li,(function(t){var e=t.replace("mouse","pointer");return ui.hasOwnProperty(e)?e:t}))}),di=["mousemove","mouseup"],fi=["pointermove","pointerup"],gi=!1;function yi(t){var e=t.pointerType;return"pen"===e||"touch"===e}function vi(t){t&&(t.zrByTouch=!0)}function mi(t,e){for(var n=e,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr||n!==e&&n===t.painterRoot);)n=n.parentNode;return i}var xi=function(t,e){this.stopPropagation=xt,this.stopImmediatePropagation=xt,this.preventDefault=xt,this.type=e.type,this.target=this.currentTarget=t.dom,this.pointerType=e.pointerType,this.clientX=e.clientX,this.clientY=e.clientY},_i={mousedown:function(t){t=oe(this.dom,t),this.__mayPointerCapture=[t.zrX,t.zrY],this.trigger("mousedown",t)},mousemove:function(t){t=oe(this.dom,t);var e=this.__mayPointerCapture;!e||t.zrX===e[0]&&t.zrY===e[1]||this.__togglePointerCapture(!0),this.trigger("mousemove",t)},mouseup:function(t){t=oe(this.dom,t),this.__togglePointerCapture(!1),this.trigger("mouseup",t)},mouseout:function(t){mi(this,(t=oe(this.dom,t)).toElement||t.relatedTarget)||(this.__pointerCapturing&&(t.zrEventControl="no_globalout"),this.trigger("mouseout",t))},wheel:function(t){gi=!0,t=oe(this.dom,t),this.trigger("mousewheel",t)},mousewheel:function(t){gi||(t=oe(this.dom,t),this.trigger("mousewheel",t))},touchstart:function(t){vi(t=oe(this.dom,t)),this.__lastTouchMoment=new Date,this.handler.processGesture(t,"start"),_i.mousemove.call(this,t),_i.mousedown.call(this,t)},touchmove:function(t){vi(t=oe(this.dom,t)),this.handler.processGesture(t,"change"),_i.mousemove.call(this,t)},touchend:function(t){vi(t=oe(this.dom,t)),this.handler.processGesture(t,"end"),_i.mouseup.call(this,t),+new Date-+this.__lastTouchMoment<300&&_i.click.call(this,t)},pointerdown:function(t){_i.mousedown.call(this,t)},pointermove:function(t){yi(t)||_i.mousemove.call(this,t)},pointerup:function(t){_i.mouseup.call(this,t)},pointerout:function(t){yi(t)||_i.mouseout.call(this,t)}};E(["click","dblclick","contextmenu"],(function(t){_i[t]=function(e){e=oe(this.dom,e),this.trigger(t,e)}}));var bi={pointermove:function(t){yi(t)||bi.mousemove.call(this,t)},pointerup:function(t){bi.mouseup.call(this,t)},mousemove:function(t){this.trigger("mousemove",t)},mouseup:function(t){var e=this.__pointerCapturing;this.__togglePointerCapture(!1),this.trigger("mouseup",t),e&&(t.zrEventControl="only_globalout",this.trigger("mouseout",t))}};function Mi(t,e,n,i){t.mounted[e]=n,t.listenerOpts[e]=i,ae(t.domTarget,e,n,i)}function Ii(t){var e,n,i,r,o=t.mounted;for(var a in o)o.hasOwnProperty(a)&&(e=t.domTarget,n=a,i=o[a],r=t.listenerOpts[a],e.removeEventListener(n,i,r));t.mounted={}}var Ti=function(t,e){this.mounted={},this.listenerOpts={},this.touching=!1,this.domTarget=t,this.domHandlers=e},Ci=function(t){function e(e,n){var i=t.call(this)||this;return i.__pointerCapturing=!1,i.dom=e,i.painterRoot=n,i._localHandlerScope=new Ti(e,_i),ci&&(i._globalHandlerScope=new Ti(document,bi)),function(t,e){var n=e.domHandlers;r.pointerEventsSupported?E(pi.pointer,(function(i){Mi(e,i,(function(e){n[i].call(t,e)}))})):(r.touchEventsSupported&&E(pi.touch,(function(i){Mi(e,i,(function(r){n[i].call(t,r),function(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTimer),t.touchTimer=null),t.touchTimer=setTimeout((function(){t.touching=!1,t.touchTimer=null}),700)}(e)}))})),E(pi.mouse,(function(i){Mi(e,i,(function(r){r=re(r),e.touching||n[i].call(t,r)}))})))}(i,i._localHandlerScope),i}return n(e,t),e.prototype.dispose=function(){Ii(this._localHandlerScope),ci&&Ii(this._globalHandlerScope)},e.prototype.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},e.prototype.__togglePointerCapture=function(t){if(this.__mayPointerCapture=null,ci&&+this.__pointerCapturing^+t){this.__pointerCapturing=t;var e=this._globalHandlerScope;t?function(t,e){function n(n){Mi(e,n,(function(i){i=re(i),mi(t,i.target)||(i=function(t,e){return oe(t.dom,new xi(t,e),!0)}(t,i),e.domHandlers[n].call(t,i))}),{capture:!0})}r.pointerEventsSupported?E(fi,n):r.touchEventsSupported||E(di,n)}(this,e):Ii(e)}},e}(Xt),Di=1;r.hasGlobalWindow&&(Di=Math.max(window.devicePixelRatio||window.screen&&window.screen.deviceXDPI/window.screen.logicalXDPI||1,1));var Ai=Di,ki="#333",Li="#ccc";function Oi(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function Ri(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function Ni(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],o=e[0]*n[2]+e[2]*n[3],a=e[1]*n[2]+e[3]*n[3],s=e[0]*n[4]+e[2]*n[5]+e[4],l=e[1]*n[4]+e[3]*n[5]+e[5];return t[0]=i,t[1]=r,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t}function Ei(t,e,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+n[0],t[5]=e[5]+n[1],t}function zi(t,e,n){var i=e[0],r=e[2],o=e[4],a=e[1],s=e[3],l=e[5],u=Math.sin(n),h=Math.cos(n);return t[0]=i*h+a*u,t[1]=-i*u+a*h,t[2]=r*h+s*u,t[3]=-r*u+h*s,t[4]=h*o+u*l,t[5]=h*l-u*o,t}function Vi(t,e,n){var i=n[0],r=n[1];return t[0]=e[0]*i,t[1]=e[1]*r,t[2]=e[2]*i,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*r,t}function Bi(t,e){var n=e[0],i=e[2],r=e[4],o=e[1],a=e[3],s=e[5],l=n*a-o*i;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*s-a*r)*l,t[5]=(o*r-n*s)*l,t):null}function Fi(t){var e=[1,0,0,1,0,0];return Ri(e,t),e}var Gi=Object.freeze({__proto__:null,create:function(){return[1,0,0,1,0,0]},identity:Oi,copy:Ri,mul:Ni,translate:Ei,rotate:zi,scale:Vi,invert:Bi,clone:Fi}),Wi=Oi;function Yi(t){return t>5e-5||t<-5e-5}var Ui=[],Xi=[],Zi=[1,0,0,1,0,0],ji=Math.abs,qi=function(){function t(){}return t.prototype.getLocalTransform=function(e){return t.getLocalTransform(this,e)},t.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},t.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},t.prototype.setSkew=function(t){this.skewX=t[0],this.skewY=t[1]},t.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},t.prototype.needLocalTransform=function(){return Yi(this.rotation)||Yi(this.x)||Yi(this.y)||Yi(this.scaleX-1)||Yi(this.scaleY-1)||Yi(this.skewX)||Yi(this.skewY)},t.prototype.updateTransform=function(){var t=this.parent&&this.parent.transform,e=this.needLocalTransform(),n=this.transform;e||t?(n=n||[1,0,0,1,0,0],e?this.getLocalTransform(n):Wi(n),t&&(e?Ni(n,t,n):Ri(n,t)),this.transform=n,this._resolveGlobalScaleRatio(n)):n&&Wi(n)},t.prototype._resolveGlobalScaleRatio=function(t){var e=this.globalScaleRatio;if(null!=e&&1!==e){this.getGlobalScale(Ui);var n=Ui[0]<0?-1:1,i=Ui[1]<0?-1:1,r=((Ui[0]-n)*e+n)/Ui[0]||0,o=((Ui[1]-i)*e+i)/Ui[1]||0;t[0]*=r,t[1]*=r,t[2]*=o,t[3]*=o}this.invTransform=this.invTransform||[1,0,0,1,0,0],Bi(this.invTransform,t)},t.prototype.getComputedTransform=function(){for(var t=this,e=[];t;)e.push(t),t=t.parent;for(;t=e.pop();)t.updateTransform();return this.transform},t.prototype.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],i=Math.atan2(t[1],t[0]),r=Math.PI/2+i-Math.atan2(t[3],t[2]);n=Math.sqrt(n)*Math.cos(r),e=Math.sqrt(e),this.skewX=r,this.skewY=0,this.rotation=-i,this.x=+t[4],this.y=+t[5],this.scaleX=e,this.scaleY=n,this.originX=0,this.originY=0}},t.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(Ni(Xi,t.invTransform,e),e=Xi);var n=this.originX,i=this.originY;(n||i)&&(Zi[4]=n,Zi[5]=i,Ni(Xi,e,Zi),Xi[4]-=n,Xi[5]-=i,e=Xi),this.setLocalTransform(e)}},t.prototype.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},t.prototype.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&Ft(n,n,i),n},t.prototype.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&Ft(n,n,i),n},t.prototype.getLineScale=function(){var t=this.transform;return t&&ji(t[0]-1)>1e-10&&ji(t[3]-1)>1e-10?Math.sqrt(ji(t[0]*t[3]-t[2]*t[1])):1},t.prototype.copyTransform=function(t){$i(this,t)},t.getLocalTransform=function(t,e){e=e||[];var n=t.originX||0,i=t.originY||0,r=t.scaleX,o=t.scaleY,a=t.anchorX,s=t.anchorY,l=t.rotation||0,u=t.x,h=t.y,c=t.skewX?Math.tan(t.skewX):0,p=t.skewY?Math.tan(-t.skewY):0;if(n||i||a||s){var d=n+a,f=i+s;e[4]=-d*r-c*f*o,e[5]=-f*o-p*d*r}else e[4]=e[5]=0;return e[0]=r,e[3]=o,e[1]=p*r,e[2]=c*o,l&&zi(e,e,l),e[4]+=n+u,e[5]+=i+h,e},t.initDefaultProps=function(){var e=t.prototype;e.scaleX=e.scaleY=e.globalScaleRatio=1,e.x=e.y=e.originX=e.originY=e.skewX=e.skewY=e.rotation=e.anchorX=e.anchorY=0}(),t}(),Ki=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function $i(t,e){for(var n=0;nf&&(f=x,gf&&(f=_,v=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.copy=function(e){t.copy(this,e)},t.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},t.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},t.prototype.isZero=function(){return 0===this.width||0===this.height},t.create=function(e){return new t(e.x,e.y,e.width,e.height)},t.copy=function(t,e){t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height},t.applyTransform=function(e,n,i){if(i){if(i[1]<1e-5&&i[1]>-1e-5&&i[2]<1e-5&&i[2]>-1e-5){var r=i[0],o=i[3],a=i[4],s=i[5];return e.x=n.x*r+a,e.y=n.y*o+s,e.width=n.width*r,e.height=n.height*o,e.width<0&&(e.x+=e.width,e.width=-e.width),void(e.height<0&&(e.y+=e.height,e.height=-e.height))}er.x=ir.x=n.x,er.y=rr.y=n.y,nr.x=rr.x=n.x+n.width,nr.y=ir.y=n.y+n.height,er.transform(i),rr.transform(i),nr.transform(i),ir.transform(i),e.x=Qi(er.x,nr.x,ir.x,rr.x),e.y=Qi(er.y,nr.y,ir.y,rr.y);var l=tr(er.x,nr.x,ir.x,rr.x),u=tr(er.y,nr.y,ir.y,rr.y);e.width=l-e.x,e.height=u-e.y}else e!==n&&t.copy(e,n)},t}(),lr={};function ur(t,e){var n=lr[e=e||a];n||(n=lr[e]=new ln(500));var i=n.get(t);return null==i&&(i=h.measureText(t,e).width,n.put(t,i)),i}function hr(t,e,n,i){var r=ur(t,e),o=fr(e),a=pr(0,r,n),s=dr(0,o,i);return new sr(a,s,r,o)}function cr(t,e,n,i){var r=((t||"")+"").split("\n");if(1===r.length)return hr(r[0],e,n,i);for(var o=new sr(0,0,0,0),a=0;a=0?parseFloat(t)/100*e:parseFloat(t):t}function yr(t,e,n){var i=e.position||"inside",r=null!=e.distance?e.distance:5,o=n.height,a=n.width,s=o/2,l=n.x,u=n.y,h="left",c="top";if(i instanceof Array)l+=gr(i[0],n.width),u+=gr(i[1],n.height),h=null,c=null;else switch(i){case"left":l-=r,u+=s,h="right",c="middle";break;case"right":l+=r+a,u+=s,c="middle";break;case"top":l+=a/2,u-=r,h="center",c="bottom";break;case"bottom":l+=a/2,u+=o+r,h="center";break;case"inside":l+=a/2,u+=s,h="center",c="middle";break;case"insideLeft":l+=r,u+=s,c="middle";break;case"insideRight":l+=a-r,u+=s,h="right",c="middle";break;case"insideTop":l+=a/2,u+=r,h="center";break;case"insideBottom":l+=a/2,u+=o-r,h="center",c="bottom";break;case"insideTopLeft":l+=r,u+=r;break;case"insideTopRight":l+=a-r,u+=r,h="right";break;case"insideBottomLeft":l+=r,u+=o-r,c="bottom";break;case"insideBottomRight":l+=a-r,u+=o-r,h="right",c="bottom"}return(t=t||{}).x=l,t.y=u,t.align=h,t.verticalAlign=c,t}var vr="__zr_normal__",mr=Ki.concat(["ignore"]),xr=V(Ki,(function(t,e){return t[e]=!0,t}),{ignore:!1}),_r={},br=new sr(0,0,0,0),wr=function(){function t(t){this.id=M(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return t.prototype._init=function(t){this.attr(t)},t.prototype.drift=function(t,e,n){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=e,this.decomposeTransform(),this.markRedraw()},t.prototype.beforeUpdate=function(){},t.prototype.afterUpdate=function(){},t.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},t.prototype.updateInnerText=function(t){var e=this._textContent;if(e&&(!e.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,r=e.innerTransformable,o=void 0,a=void 0,s=!1;r.parent=i?this:null;var l=!1;if(r.copyTransform(e),null!=n.position){var u=br;n.layoutRect?u.copy(n.layoutRect):u.copy(this.getBoundingRect()),i||u.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(_r,n,u):yr(_r,n,u),r.x=_r.x,r.y=_r.y,o=_r.align,a=_r.verticalAlign;var h=n.origin;if(h&&null!=n.rotation){var c=void 0,p=void 0;"center"===h?(c=.5*u.width,p=.5*u.height):(c=gr(h[0],u.width),p=gr(h[1],u.height)),l=!0,r.originX=-r.x+c+(i?0:u.x),r.originY=-r.y+p+(i?0:u.y)}}null!=n.rotation&&(r.rotation=n.rotation);var d=n.offset;d&&(r.x+=d[0],r.y+=d[1],l||(r.originX=-d[0],r.originY=-d[1]));var f=null==n.inside?"string"==typeof n.position&&n.position.indexOf("inside")>=0:n.inside,g=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),y=void 0,v=void 0,m=void 0;f&&this.canBeInsideText()?(y=n.insideFill,v=n.insideStroke,null!=y&&"auto"!==y||(y=this.getInsideTextFill()),null!=v&&"auto"!==v||(v=this.getInsideTextStroke(y),m=!0)):(y=n.outsideFill,v=n.outsideStroke,null!=y&&"auto"!==y||(y=this.getOutsideFill()),null!=v&&"auto"!==v||(v=this.getOutsideStroke(y),m=!0)),(y=y||"#000")===g.fill&&v===g.stroke&&m===g.autoStroke&&o===g.align&&a===g.verticalAlign||(s=!0,g.fill=y,g.stroke=v,g.autoStroke=m,g.align=o,g.verticalAlign=a,e.setDefaultTextStyle(g)),e.__dirty|=1,s&&e.dirtyStyle(!0)}},t.prototype.canBeInsideText=function(){return!0},t.prototype.getInsideTextFill=function(){return"#fff"},t.prototype.getInsideTextStroke=function(t){return"#000"},t.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Li:ki},t.prototype.getOutsideStroke=function(t){var e=this.__zr&&this.__zr.getBackgroundColor(),n="string"==typeof e&&bn(e);n||(n=[255,255,255,1]);for(var i=n[3],r=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*i+(r?0:255)*(1-i);return n[3]=1,kn(n,"rgba")},t.prototype.traverse=function(t,e){},t.prototype.attrKV=function(t,e){"textConfig"===t?this.setTextConfig(e):"textContent"===t?this.setTextContent(e):"clipPath"===t?this.setClipPath(e):"extra"===t?(this.extra=this.extra||{},A(this.extra,e)):this[t]=e},t.prototype.hide=function(){this.ignore=!0,this.markRedraw()},t.prototype.show=function(){this.ignore=!1,this.markRedraw()},t.prototype.attr=function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(q(t))for(var n=G(t),i=0;i0},t.prototype.getState=function(t){return this.states[t]},t.prototype.ensureState=function(t){var e=this.states;return e[t]||(e[t]={}),e[t]},t.prototype.clearStates=function(t){this.useState(vr,!1,t)},t.prototype.useState=function(t,e,n,i){var r=t===vr;if(this.hasState()||!r){var o=this.currentStates,a=this.stateTransition;if(!(P(o,t)>=0)||!e&&1!==o.length){var s;if(this.stateProxy&&!r&&(s=this.stateProxy(t)),s||(s=this.states&&this.states[t]),s||r){r||this.saveCurrentToNormalState(s);var l=!!(s&&s.hoverLayer||i);l&&this._toggleHoverLayerFlag(!0),this._applyStateObj(t,s,this._normalState,e,!n&&!this.__inHover&&a&&a.duration>0,a);var u=this._textContent,h=this._textGuide;return u&&u.useState(t,e,n,l),h&&h.useState(t,e,n,l),r?(this.currentStates=[],this._normalState={}):e?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!l&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2),s}I("State "+t+" not exists.")}}},t.prototype.useStates=function(t,e,n){if(t.length){var i=[],r=this.currentStates,o=t.length,a=o===r.length;if(a)for(var s=0;s0,d);var f=this._textContent,g=this._textGuide;f&&f.useStates(t,e,c),g&&g.useStates(t,e,c),this._updateAnimationTargets(),this.currentStates=t.slice(),this.markRedraw(),!c&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2)}else this.clearStates()},t.prototype._updateAnimationTargets=function(){for(var t=0;t=0){var n=this.currentStates.slice();n.splice(e,1),this.useStates(n)}},t.prototype.replaceState=function(t,e,n){var i=this.currentStates.slice(),r=P(i,t),o=P(i,e)>=0;r>=0?o?i.splice(r,1):i[r]=e:n&&!o&&i.push(e),this.useStates(i)},t.prototype.toggleState=function(t,e){e?this.useState(t,!0):this.removeState(t)},t.prototype._mergeStates=function(t){for(var e,n={},i=0;i=0&&e.splice(n,1)})),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},t.prototype.updateDuringAnimation=function(t){this.markRedraw()},t.prototype.stopAnimation=function(t,e){for(var n=this.animators,i=n.length,r=[],o=0;o0&&n.during&&o[0].during((function(t,e){n.during(e)}));for(var p=0;p0||r.force&&!a.length){var w,S=void 0,M=void 0,I=void 0;if(s)for(M={},p&&(S={}),_=0;_=0&&(n.splice(i,0,t),this._doAdd(t))}return this},e.prototype.replace=function(t,e){var n=P(this._children,t);return n>=0&&this.replaceAt(e,n),this},e.prototype.replaceAt=function(t,e){var n=this._children,i=n[e];if(t&&t!==this&&t.parent!==this&&t!==i){n[e]=t,i.parent=null;var r=this.__zr;r&&i.removeSelfFromZr(r),this._doAdd(t)}return this},e.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__zr;e&&e!==t.__zr&&t.addSelfToZr(e),e&&e.refresh()},e.prototype.remove=function(t){var e=this.__zr,n=this._children,i=P(n,t);return i<0||(n.splice(i,1),t.parent=null,e&&t.removeSelfFromZr(e),e&&e.refresh()),this},e.prototype.removeAll=function(){for(var t=this._children,e=this.__zr,n=0;n 18), a && (n.weChat = !0), e.svgSupported = typeof SVGRect != 'undefined', e.touchEventsSupported = 'ontouchstart' in window && !n.ie && !n.edge, e.pointerEventsSupported = 'onpointerdown' in window && (n.edge || n.ie && +n.version >= 11), e.domSupported = typeof document != 'undefined'; const s = document.documentElement.style; e.transform3dSupported = (n.ie && 'transition' in s || n.edge || 'WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix() || 'MozPerspective' in s) && !('OTransition' in s), e.transformSupported = e.transform3dSupported || n.ie && +n.version >= 9 }(navigator.userAgent, r)); let s; let l; const a = '12px sans-serif'; const u = (function (t) { + const e = {}; if (typeof JSON == 'undefined') + return e; for (let n = 0; n < 95; n++) { const i = String.fromCharCode(n + 32); const r = (t.charCodeAt(n) - 20) / 100; e[i] = r } return e + }('007LLmW\'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N')); var h = { createCanvas() { return typeof document != 'undefined' && document.createElement('canvas') }, measureText(t, e) { + if (!s) { const n = h.createCanvas(); s = n && n.getContext('2d') } if (s) + return l !== e && (l = s.font = e || a), s.measureText(t); t = t || ''; const i = /^(\d*)px$/.exec(e = e || a); const r = +(i && i[1]) || 12; let o = 0; if (e.includes('mono')) { + o = r * t.length + } + else { + for (let c = 0; c < t.length; c++) { const p = u[t[c]]; o += p == null ? r : p * r } + } return { width: o } + }, loadImage(t, e, n) { const i = h.createCanvas().canvasNode.createImage(); return i.onload = e, i.onerror = n, i.src = t, i } }; function c(t) { for (const e in h)t[e] && (h[e] = t[e]) } const p = V(['Function', 'RegExp', 'Date', 'Error', 'CanvasGradient', 'CanvasPattern', 'Image', 'Canvas'], (t, e) => { return t[`[object ${e}]`] = !0, t }, {}); const d = V(['Int8', 'Uint8', 'Uint8Clamped', 'Int16', 'Uint16', 'Int32', 'Uint32', 'Float32', 'Float64'], (t, e) => { return t[`[object ${e}Array]`] = !0, t }, {}); const f = Object.prototype.toString; const g = Array.prototype; const y = g.forEach; const v = g.filter; const m = g.slice; const x = g.map; const _ = function () {}.constructor; const b = _ ? _.prototype : null; const w = '__proto__'; let S = 2311; function M() { return S++ } function I() { for (var t = [], e = 0; e < arguments.length; e++)t[e] = arguments[e]; typeof console != 'undefined' && console.error.apply(console, t) } function T(t) { + if (t == null || typeof t != 'object') + return t; let e = t; const n = f.call(t); if (n === '[object Array]') { if (!pt(t)) { e = []; for (var i = 0, r = t.length; i < r; i++)e[i] = T(t[i]) } } + else if (d[n]) { + if (!pt(t)) { + const o = t.constructor; if (o.from) { + e = o.from(t) + } + else { + for (e = new o(t.length), i = 0, r = t.length; i < r; i++)e[i] = t[i] + } + } + } + else if (!p[n] && !pt(t) && !J(t)) { + for (const a in e = {}, t)t.hasOwnProperty(a) && a !== w && (e[a] = T(t[a])) + } return e + } function C(t, e, n) { + if (!q(e) || !q(t)) + return n ? T(e) : t; for (const i in e) { + if (e.hasOwnProperty(i) && i !== w) { const r = t[i]; const o = e[i]; !q(o) || !q(r) || Y(o) || Y(r) || J(o) || J(r) || K(o) || K(r) || pt(o) || pt(r) ? !n && i in t || (t[i] = T(e[i])) : C(r, o, n) } + } return t + } function D(t, e) { for (var n = t[0], i = 1, r = t.length; i < r; i++)n = C(n, t[i], e); return n } function A(t, e) { + if (Object.assign) { + Object.assign(t, e) + } + else { + for (const n in e)e.hasOwnProperty(n) && n !== w && (t[n] = e[n]) + } return t + } function k(t, e, n) { for (let i = G(e), r = 0; r < i.length; r++) { const o = i[r]; (n ? e[o] != null : t[o] == null) && (t[o] = e[o]) } return t } const L = h.createCanvas; function P(t, e) { + if (t) { + if (t.indexOf) + return t.indexOf(e); for (let n = 0, i = t.length; n < i; n++) { + if (t[n] === e) + return n + } + } return -1 + } function O(t, e) { const n = t.prototype; function i() {} for (const r in i.prototype = e.prototype, t.prototype = new i(), n)n.hasOwnProperty(r) && (t.prototype[r] = n[r]); t.prototype.constructor = t, t.superClass = e } function R(t, e, n) { + if (t = 'prototype' in t ? t.prototype : t, e = 'prototype' in e ? e.prototype : e, Object.getOwnPropertyNames) { + for (let i = Object.getOwnPropertyNames(e), r = 0; r < i.length; r++) { const o = i[r]; o !== 'constructor' && (n ? e[o] != null : t[o] == null) && (t[o] = e[o]) } + } + else { + k(t, e, n) + } + } function N(t) { return !!t && typeof t != 'string' && typeof t.length == 'number' } function E(t, e, n) { + if (t && e) { + if (t.forEach && t.forEach === y) { + t.forEach(e, n) + } + else if (t.length === +t.length) { + for (let i = 0, r = t.length; i < r; i++)e.call(n, t[i], i, t) + } + else { + for (const o in t)t.hasOwnProperty(o) && e.call(n, t[o], o, t) + } + } + } function z(t, e, n) { + if (!t) + return []; if (!e) + return at(t); if (t.map && t.map === x) + return t.map(e, n); for (var i = [], r = 0, o = t.length; r < o; r++)i.push(e.call(n, t[r], r, t)); return i + } function V(t, e, n, i) { if (t && e) { for (let r = 0, o = t.length; r < o; r++)n = e.call(i, n, t[r], r, t); return n } } function B(t, e, n) { + if (!t) + return []; if (!e) + return at(t); if (t.filter && t.filter === v) + return t.filter(e, n); for (var i = [], r = 0, o = t.length; r < o; r++)e.call(n, t[r], r, t) && i.push(t[r]); return i + } function F(t, e, n) { + if (t && e) { + for (let i = 0, r = t.length; i < r; i++) { + if (e.call(n, t[i], i, t)) + return t[i] + } + } + } function G(t) { + if (!t) + return []; if (Object.keys) + return Object.keys(t); const e = []; for (const n in t)t.hasOwnProperty(n) && e.push(n); return e + } const W = b && U(b.bind) ? b.call.bind(b.bind) : function (t, e) { for (var n = [], i = 2; i < arguments.length; i++)n[i - 2] = arguments[i]; return function () { return t.apply(e, n.concat(m.call(arguments))) } }; function H(t) { for (var e = [], n = 1; n < arguments.length; n++)e[n - 1] = arguments[n]; return function () { return t.apply(this, e.concat(m.call(arguments))) } } function Y(t) { return Array.isArray ? Array.isArray(t) : f.call(t) === '[object Array]' } function U(t) { return typeof t == 'function' } function X(t) { return typeof t == 'string' } function Z(t) { return f.call(t) === '[object String]' } function j(t) { return typeof t == 'number' } function q(t) { const e = typeof t; return e === 'function' || !!t && e === 'object' } function K(t) { return !!p[f.call(t)] } function $(t) { return !!d[f.call(t)] } function J(t) { return typeof t == 'object' && typeof t.nodeType == 'number' && typeof t.ownerDocument == 'object' } function Q(t) { return t.colorStops != null } function tt(t) { return t.image != null } function et(t) { return f.call(t) === '[object RegExp]' } function nt(t) { return t != t } function it() { + for (var t = [], e = 0; e < arguments.length; e++)t[e] = arguments[e]; for (let n = 0, i = t.length; n < i; n++) { + if (t[n] != null) + return t[n] + } + } function rt(t, e) { return t != null ? t : e } function ot(t, e, n) { return t != null ? t : e != null ? e : n } function at(t) { for (var e = [], n = 1; n < arguments.length; n++)e[n - 1] = arguments[n]; return m.apply(t, e) } function st(t) { + if (typeof t == 'number') + return [t, t, t, t]; const e = t.length; return e === 2 ? [t[0], t[1], t[0], t[1]] : e === 3 ? [t[0], t[1], t[2], t[1]] : t + } function lt(t, e) { + if (!t) + throw new Error(e) + } function ut(t) { return t == null ? null : typeof t.trim == 'function' ? t.trim() : t.replace(/^\s+|\s+$/g, '') } const ht = '__ec_primitive__'; function ct(t) { t[ht] = !0 } function pt(t) { return t[ht] } const dt = (function () { function t(e) { this.data = {}; const n = Y(e); this.data = {}; const i = this; function r(t, e) { n ? i.set(t, e) : i.set(e, t) }e instanceof t ? e.each(r) : e && E(e, r) } return t.prototype.get = function (t) { return this.data.hasOwnProperty(t) ? this.data[t] : null }, t.prototype.set = function (t, e) { return this.data[t] = e }, t.prototype.each = function (t, e) { for (const n in this.data) this.data.hasOwnProperty(n) && t.call(e, this.data[n], n) }, t.prototype.keys = function () { return G(this.data) }, t.prototype.removeKey = function (t) { delete this.data[t] }, t }()); function ft(t) { return new dt(t) } function gt(t, e) { for (var n = new t.constructor(t.length + e.length), i = 0; i < t.length; i++)n[i] = t[i]; const r = t.length; for (i = 0; i < e.length; i++)n[i + r] = e[i]; return n } function yt(t, e) { + let n; if (Object.create) { + n = Object.create(t) + } + else { const i = function () {}; i.prototype = t, n = new i() } return e && A(n, e), n + } function vt(t) { const e = t.style; e.webkitUserSelect = 'none', e.userSelect = 'none', e.webkitTapHighlightColor = 'rgba(0,0,0,0)', e['-webkit-touch-callout'] = 'none' } function mt(t, e) { return t.hasOwnProperty(e) } function xt() {} const _t = 180 / Math.PI; const bt = Object.freeze({ __proto__: null, guid: M, logError: I, clone: T, merge: C, mergeAll: D, extend: A, defaults: k, createCanvas: L, indexOf: P, inherits: O, mixin: R, isArrayLike: N, each: E, map: z, reduce: V, filter: B, find: F, keys: G, bind: W, curry: H, isArray: Y, isFunction: U, isString: X, isStringSafe: Z, isNumber: j, isObject: q, isBuiltInObject: K, isTypedArray: $, isDom: J, isGradientObject: Q, isImagePatternObject: tt, isRegExp: et, eqNaN: nt, retrieve: it, retrieve2: rt, retrieve3: ot, slice: at, normalizeCssArray: st, assert: lt, trim: ut, setAsPrimitive: ct, isPrimitive: pt, HashMap: dt, createHashMap: ft, concatArray: gt, createObject: yt, disableUserSelect: vt, hasOwn: mt, noop: xt, RADIAN_TO_DEGREE: _t }); function wt(t, e) { return t == null && (t = 0), e == null && (e = 0), [t, e] } function St(t, e) { return t[0] = e[0], t[1] = e[1], t } function Mt(t) { return [t[0], t[1]] } function It(t, e, n) { return t[0] = e, t[1] = n, t } function Tt(t, e, n) { return t[0] = e[0] + n[0], t[1] = e[1] + n[1], t } function Ct(t, e, n, i) { return t[0] = e[0] + n[0] * i, t[1] = e[1] + n[1] * i, t } function Dt(t, e, n) { return t[0] = e[0] - n[0], t[1] = e[1] - n[1], t } function At(t) { return Math.sqrt(Lt(t)) } const kt = At; function Lt(t) { return t[0] * t[0] + t[1] * t[1] } const Pt = Lt; function Ot(t, e, n) { return t[0] = e[0] * n, t[1] = e[1] * n, t } function Rt(t, e) { const n = At(e); return n === 0 ? (t[0] = 0, t[1] = 0) : (t[0] = e[0] / n, t[1] = e[1] / n), t } function Nt(t, e) { return Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1])) } const Et = Nt; function zt(t, e) { return (t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]) } const Vt = zt; function Bt(t, e, n, i) { return t[0] = e[0] + i * (n[0] - e[0]), t[1] = e[1] + i * (n[1] - e[1]), t } function Ft(t, e, n) { const i = e[0]; const r = e[1]; return t[0] = n[0] * i + n[2] * r + n[4], t[1] = n[1] * i + n[3] * r + n[5], t } function Gt(t, e, n) { return t[0] = Math.min(e[0], n[0]), t[1] = Math.min(e[1], n[1]), t } function Wt(t, e, n) { return t[0] = Math.max(e[0], n[0]), t[1] = Math.max(e[1], n[1]), t } const Ht = Object.freeze({ __proto__: null, create: wt, copy: St, clone: Mt, set: It, add: Tt, scaleAndAdd: Ct, sub: Dt, len: At, length: kt, lenSquare: Lt, lengthSquare: Pt, mul(t, e, n) { return t[0] = e[0] * n[0], t[1] = e[1] * n[1], t }, div(t, e, n) { return t[0] = e[0] / n[0], t[1] = e[1] / n[1], t }, dot(t, e) { return t[0] * e[0] + t[1] * e[1] }, scale: Ot, normalize: Rt, distance: Nt, dist: Et, distanceSquare: zt, distSquare: Vt, negate(t, e) { return t[0] = -e[0], t[1] = -e[1], t }, lerp: Bt, applyTransform: Ft, min: Gt, max: Wt }); const Yt = function (t, e) { this.target = t, this.topTarget = e && e.topTarget }; const Ut = (function () { function t(t) { this.handler = t, t.on('mousedown', this._dragStart, this), t.on('mousemove', this._drag, this), t.on('mouseup', this._dragEnd, this) } return t.prototype._dragStart = function (t) { for (var e = t.target; e && !e.draggable;)e = e.parent || e.__hostTarget; e && (this._draggingTarget = e, e.dragging = !0, this._x = t.offsetX, this._y = t.offsetY, this.handler.dispatchToElement(new Yt(e, t), 'dragstart', t.event)) }, t.prototype._drag = function (t) { const e = this._draggingTarget; if (e) { const n = t.offsetX; const i = t.offsetY; const r = n - this._x; const o = i - this._y; this._x = n, this._y = i, e.drift(r, o, t), this.handler.dispatchToElement(new Yt(e, t), 'drag', t.event); const a = this.handler.findHover(n, i, e).target; const s = this._dropTarget; this._dropTarget = a, e !== a && (s && a !== s && this.handler.dispatchToElement(new Yt(s, t), 'dragleave', t.event), a && a !== s && this.handler.dispatchToElement(new Yt(a, t), 'dragenter', t.event)) } }, t.prototype._dragEnd = function (t) { const e = this._draggingTarget; e && (e.dragging = !1), this.handler.dispatchToElement(new Yt(e, t), 'dragend', t.event), this._dropTarget && this.handler.dispatchToElement(new Yt(this._dropTarget, t), 'drop', t.event), this._draggingTarget = null, this._dropTarget = null }, t }()); const Xt = (function () { + function t(t) { t && (this._$eventProcessor = t) } return t.prototype.on = function (t, e, n, i) { + this._$handlers || (this._$handlers = {}); const r = this._$handlers; if (typeof e == 'function' && (i = n, n = e, e = null), !n || !t) + return this; const o = this._$eventProcessor; e != null && o && o.normalizeQuery && (e = o.normalizeQuery(e)), r[t] || (r[t] = []); for (let a = 0; a < r[t].length; a++) { + if (r[t][a].h === n) + return this + } const s = { h: n, query: e, ctx: i || this, callAtLast: n.zrEventfulCallAtLast }; const l = r[t].length - 1; const u = r[t][l]; return u && u.callAtLast ? r[t].splice(l, 0, s) : r[t].push(s), this + }, t.prototype.isSilent = function (t) { const e = this._$handlers; return !e || !e[t] || !e[t].length }, t.prototype.off = function (t, e) { + const n = this._$handlers; if (!n) + return this; if (!t) + return this._$handlers = {}, this; if (e) { if (n[t]) { for (var i = [], r = 0, o = n[t].length; r < o; r++)n[t][r].h !== e && i.push(n[t][r]); n[t] = i }n[t] && n[t].length === 0 && delete n[t] } + else { + delete n[t] + } return this + }, t.prototype.trigger = function (t) { + for (var e = [], n = 1; n < arguments.length; n++)e[n - 1] = arguments[n]; if (!this._$handlers) + return this; const i = this._$handlers[t]; const r = this._$eventProcessor; if (i) { + for (let o = e.length, a = i.length, s = 0; s < a; s++) { + const l = i[s]; if (!r || !r.filter || l.query == null || r.filter(t, l.query)) + switch (o) { case 0:l.h.call(l.ctx); break; case 1:l.h.call(l.ctx, e[0]); break; case 2:l.h.call(l.ctx, e[0], e[1]); break; default:l.h.apply(l.ctx, e) } + } + } return r && r.afterTrigger && r.afterTrigger(t), this + }, t.prototype.triggerWithContext = function (t) { + for (var e = [], n = 1; n < arguments.length; n++)e[n - 1] = arguments[n]; if (!this._$handlers) + return this; const i = this._$handlers[t]; const r = this._$eventProcessor; if (i) { + for (let o = e.length, a = e[o - 1], s = i.length, l = 0; l < s; l++) { + const u = i[l]; if (!r || !r.filter || u.query == null || r.filter(t, u.query)) + switch (o) { case 0:u.h.call(a); break; case 1:u.h.call(a, e[0]); break; case 2:u.h.call(a, e[0], e[1]); break; default:u.h.apply(a, e.slice(1, o - 1)) } + } + } return r && r.afterTrigger && r.afterTrigger(t), this + }, t + }()); const Zt = Math.log(2); function jt(t, e, n, i, r, o) { + const a = `${i}-${r}`; const s = t.length; if (o.hasOwnProperty(a)) + return o[a]; if (e === 1) { const l = Math.round(Math.log((1 << s) - 1 & ~r) / Zt); return t[n][l] } for (var u = i | 1 << n, h = n + 1; i & 1 << h;)h++; for (var c = 0, p = 0, d = 0; p < s; p++) { const f = 1 << p; f & r || (c += (d % 2 ? -1 : 1) * t[n][p] * jt(t, e - 1, h, u, r | f, o), d++) } return o[a] = c, c + } function qt(t, e) { + const n = [[t[0], t[1], 1, 0, 0, 0, -e[0] * t[0], -e[0] * t[1]], [0, 0, 0, t[0], t[1], 1, -e[1] * t[0], -e[1] * t[1]], [t[2], t[3], 1, 0, 0, 0, -e[2] * t[2], -e[2] * t[3]], [0, 0, 0, t[2], t[3], 1, -e[3] * t[2], -e[3] * t[3]], [t[4], t[5], 1, 0, 0, 0, -e[4] * t[4], -e[4] * t[5]], [0, 0, 0, t[4], t[5], 1, -e[5] * t[4], -e[5] * t[5]], [t[6], t[7], 1, 0, 0, 0, -e[6] * t[6], -e[6] * t[7]], [0, 0, 0, t[6], t[7], 1, -e[7] * t[6], -e[7] * t[7]]]; const i = {}; const r = jt(n, 8, 0, 0, 0, i); if (r !== 0) { + for (var o = [], a = 0; a < 8; a++) { + for (let s = 0; s < 8; s++)o[s] == null && (o[s] = 0), o[s] += ((a + s) % 2 ? -1 : 1) * jt(n, 7, a === 0 ? 1 : 0, 1 << a, 1 << s, i) / r * e[a] + } return function (t, e, n) { const i = e * o[6] + n * o[7] + 1; t[0] = (e * o[0] + n * o[1] + o[2]) / i, t[1] = (e * o[3] + n * o[4] + o[5]) / i } + } + } const Kt = []; function $t(t, e, n, i, o) { + if (e.getBoundingClientRect && r.domSupported && !Jt(e)) { + const a = e.___zrEVENTSAVED || (e.___zrEVENTSAVED = {}); const s = (function (t, e, n) { for (var i = n ? 'invTrans' : 'trans', r = e[i], o = e.srcCoords, a = [], s = [], l = !0, u = 0; u < 4; u++) { const h = t[u].getBoundingClientRect(); const c = 2 * u; const p = h.left; const d = h.top; a.push(p, d), l = l && o && p === o[c] && d === o[c + 1], s.push(t[u].offsetLeft, t[u].offsetTop) } return l && r ? r : (e.srcCoords = a, e[i] = n ? qt(s, a) : qt(a, s)) }((function (t, e) { + let n = e.markers; if (n) + return n; n = e.markers = []; for (let i = ['left', 'right'], r = ['top', 'bottom'], o = 0; o < 4; o++) { const a = document.createElement('div'); const s = o % 2; const l = (o >> 1) % 2; a.style.cssText = ['position: absolute', 'visibility: hidden', 'padding: 0', 'margin: 0', 'border-width: 0', 'user-select: none', 'width:0', 'height:0', `${i[s]}:0`, `${r[l]}:0`, `${i[1 - s]}:auto`, `${r[1 - l]}:auto`, ''].join('!important;'), t.appendChild(a), n.push(a) } return n + }(e, a)), a, o)); if (s) + return s(t, n, i), !0 + } return !1 + } function Jt(t) { return t.nodeName.toUpperCase() === 'CANVAS' } const Qt = /^(?:mouse|pointer|contextmenu|drag|drop)|click/; const te = []; const ee = r.browser.firefox && +r.browser.version.split('.')[0] < 39; function ne(t, e, n, i) { return n = n || {}, i ? ie(t, e, n) : ee && e.layerX != null && e.layerX !== e.offsetX ? (n.zrX = e.layerX, n.zrY = e.layerY) : e.offsetX != null ? (n.zrX = e.offsetX, n.zrY = e.offsetY) : ie(t, e, n), n } function ie(t, e, n) { + if (r.domSupported && t.getBoundingClientRect) { + const i = e.clientX; const o = e.clientY; if (Jt(t)) { const a = t.getBoundingClientRect(); return n.zrX = i - a.left, void (n.zrY = o - a.top) } if ($t(te, t, i, o)) + return n.zrX = te[0], void (n.zrY = te[1]) + }n.zrX = n.zrY = 0 + } function re(t) { return t || window.event } function oe(t, e, n) { + if ((e = re(e)).zrX != null) + return e; const i = e.type; if (i && i.includes('touch')) { const r = i !== 'touchend' ? e.targetTouches[0] : e.changedTouches[0]; r && ne(t, r, e, n) } + else { + ne(t, e, e, n); const o = (function (t) { + const e = t.wheelDelta; if (e) + return e; const n = t.deltaX; const i = t.deltaY; return n == null || i == null ? e : 3 * (i !== 0 ? Math.abs(i) : Math.abs(n)) * (i > 0 ? -1 : i < 0 ? 1 : n > 0 ? -1 : 1) + }(e)); e.zrDelta = o ? o / 120 : -(e.detail || 0) / 3 + } const a = e.button; return e.which == null && void 0 !== a && Qt.test(e.type) && (e.which = 1 & a ? 1 : 2 & a ? 3 : 4 & a ? 2 : 0), e + } function ae(t, e, n, i) { t.addEventListener(e, n, i) } const se = function (t) { t.preventDefault(), t.stopPropagation(), t.cancelBubble = !0 }; function le(t) { return t.which === 2 || t.which === 3 } const ue = (function () { + function t() { this._track = [] } return t.prototype.recognize = function (t, e, n) { return this._doTrack(t, e, n), this._recognize(t) }, t.prototype.clear = function () { return this._track.length = 0, this }, t.prototype._doTrack = function (t, e, n) { const i = t.touches; if (i) { for (var r = { points: [], touches: [], target: e, event: t }, o = 0, a = i.length; o < a; o++) { const s = i[o]; const l = ne(n, s, {}); r.points.push([l.zrX, l.zrY]), r.touches.push(s) } this._track.push(r) } }, t.prototype._recognize = function (t) { + for (const e in ce) { + if (ce.hasOwnProperty(e)) { + const n = ce[e](this._track, t); if (n) + return n + } + } + }, t + }()); function he(t) { const e = t[1][0] - t[0][0]; const n = t[1][1] - t[0][1]; return Math.sqrt(e * e + n * n) } var ce = { pinch(t, e) { const n = t.length; if (n) { let i; const r = (t[n - 1] || {}).points; const o = (t[n - 2] || {}).points || r; if (o && o.length > 1 && r && r.length > 1) { let a = he(r) / he(o); !isFinite(a) && (a = 1), e.pinchScale = a; const s = [((i = r)[0][0] + i[1][0]) / 2, (i[0][1] + i[1][1]) / 2]; return e.pinchX = s[0], e.pinchY = s[1], { type: 'pinch', target: t[0].target, event: e } } } } }; function de() { se(this.event) } const fe = (function (t) { function e() { const e = t !== null && t.apply(this, arguments) || this; return e.handler = null, e } return n(e, t), e.prototype.dispose = function () {}, e.prototype.setCursor = function () {}, e }(Xt)); const ge = function (t, e) { this.x = t, this.y = e }; const ye = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu']; const ve = (function (t) { function e(e, n, i, r) { const o = t.call(this) || this; return o._hovered = new ge(0, 0), o.storage = e, o.painter = n, o.painterRoot = r, i = i || new fe(), o.proxy = null, o.setHandlerProxy(i), o._draggingMgr = new Ut(o), o } return n(e, t), e.prototype.setHandlerProxy = function (t) { this.proxy && this.proxy.dispose(), t && (E(ye, function (e) { t.on && t.on(e, this[e], this) }, this), t.handler = this), this.proxy = t }, e.prototype.mousemove = function (t) { const e = t.zrX; const n = t.zrY; const i = xe(this, e, n); let r = this._hovered; let o = r.target; o && !o.__zr && (o = (r = this.findHover(r.x, r.y)).target); const a = this._hovered = i ? new ge(e, n) : this.findHover(e, n); const s = a.target; const l = this.proxy; l.setCursor && l.setCursor(s ? s.cursor : 'default'), o && s !== o && this.dispatchToElement(r, 'mouseout', t), this.dispatchToElement(a, 'mousemove', t), s && s !== o && this.dispatchToElement(a, 'mouseover', t) }, e.prototype.mouseout = function (t) { const e = t.zrEventControl; e !== 'only_globalout' && this.dispatchToElement(this._hovered, 'mouseout', t), e !== 'no_globalout' && this.trigger('globalout', { type: 'globalout', event: t }) }, e.prototype.resize = function () { this._hovered = new ge(0, 0) }, e.prototype.dispatch = function (t, e) { const n = this[t]; n && n.call(this, e) }, e.prototype.dispose = function () { this.proxy.dispose(), this.storage = null, this.proxy = null, this.painter = null }, e.prototype.setCursorStyle = function (t) { const e = this.proxy; e.setCursor && e.setCursor(t) }, e.prototype.dispatchToElement = function (t, e, n) { let i = (t = t || {}).target; if (!i || !i.silent) { for (var r = `on${e}`, o = (function (t, e, n) { return { type: t, event: n, target: e.target, topTarget: e.topTarget, cancelBubble: !1, offsetX: n.zrX, offsetY: n.zrY, gestureEvent: n.gestureEvent, pinchX: n.pinchX, pinchY: n.pinchY, pinchScale: n.pinchScale, wheelDelta: n.zrDelta, zrByTouch: n.zrByTouch, which: n.which, stop: de } }(e, t, n)); i && (i[r] && (o.cancelBubble = !!i[r].call(i, o)), i.trigger(e, o), i = i.__hostTarget ? i.__hostTarget : i.parent, !o.cancelBubble););o.cancelBubble || (this.trigger(e, o), this.painter && this.painter.eachOtherLayer && this.painter.eachOtherLayer((t) => { typeof t[r] == 'function' && t[r].call(t, o), t.trigger && t.trigger(e, o) })) } }, e.prototype.findHover = function (t, e, n) { for (var i = this.storage.getDisplayList(), r = new ge(t, e), o = i.length - 1; o >= 0; o--) { let a = void 0; if (i[o] !== n && !i[o].ignore && (a = me(i[o], t, e)) && (!r.topTarget && (r.topTarget = i[o]), a !== 'silent')) { r.target = i[o]; break } } return r }, e.prototype.processGesture = function (t, e) { this._gestureMgr || (this._gestureMgr = new ue()); const n = this._gestureMgr; e === 'start' && n.clear(); const i = n.recognize(t, this.findHover(t.zrX, t.zrY, null).target, this.proxy.dom); if (e === 'end' && n.clear(), i) { const r = i.type; t.gestureEvent = r; const o = new ge(); o.target = i.target, this.dispatchToElement(o, r, i.event) } }, e }(Xt)); function me(t, e, n) { + if (t[t.rectHover ? 'rectContain' : 'contain'](e, n)) { + for (var i = t, r = void 0, o = !1; i;) { + if (i.ignoreClip && (o = !0), !o) { + const a = i.getClipPath(); if (a && !a.contain(e, n)) + return !1; i.silent && (r = !0) + }i = i.__hostTarget || i.parent + } return !r || 'silent' + } return !1 + } function xe(t, e, n) { const i = t.painter; return e < 0 || e > i.getWidth() || n < 0 || n > i.getHeight() } function _e(t, e, n, i) { + let r = e + 1; if (r === n) + return 1; if (i(t[r++], t[e]) < 0) { for (;r < n && i(t[r], t[r - 1]) < 0;)r++; !(function (t, e, n) { for (n--; e < n;) { const i = t[e]; t[e++] = t[n], t[n--] = i } }(t, e, r)) } + else { + for (;r < n && i(t[r], t[r - 1]) >= 0;)r++ + } return r - e + } function be(t, e, n, i, r) { for (i === e && i++; i < n; i++) { for (var o, a = t[i], s = e, l = i; s < l;)r(a, t[o = s + l >>> 1]) < 0 ? l = o : s = o + 1; let u = i - s; switch (u) { case 3:t[s + 3] = t[s + 2]; case 2:t[s + 2] = t[s + 1]; case 1:t[s + 1] = t[s]; break; default:for (;u > 0;)t[s + u] = t[s + u - 1], u-- }t[s] = a } } function we(t, e, n, i, r, o) { + let a = 0; let s = 0; let l = 1; if (o(t, e[n + r]) > 0) { for (s = i - r; l < s && o(t, e[n + r + l]) > 0;)a = l, (l = 1 + (l << 1)) <= 0 && (l = s); l > s && (l = s), a += r, l += r } + else { for (s = r + 1; l < s && o(t, e[n + r - l]) <= 0;)a = l, (l = 1 + (l << 1)) <= 0 && (l = s); l > s && (l = s); const u = a; a = r - l, l = r - u } for (a++; a < l;) { const h = a + (l - a >>> 1); o(t, e[n + h]) > 0 ? a = h + 1 : l = h } return l + } function Se(t, e, n, i, r, o) { + let a = 0; let s = 0; let l = 1; if (o(t, e[n + r]) < 0) { for (s = r + 1; l < s && o(t, e[n + r - l]) < 0;)a = l, (l = 1 + (l << 1)) <= 0 && (l = s); l > s && (l = s); const u = a; a = r - l, l = r - u } + else { for (s = i - r; l < s && o(t, e[n + r + l]) >= 0;)a = l, (l = 1 + (l << 1)) <= 0 && (l = s); l > s && (l = s), a += r, l += r } for (a++; a < l;) { const h = a + (l - a >>> 1); o(t, e[n + h]) < 0 ? l = h : a = h + 1 } return l + } function Ie(t, e, n, i) { + n || (n = 0), i || (i = t.length); let r = i - n; if (!(r < 2)) { + let o = 0; if (r < 32) { + be(t, n, i, n + (o = _e(t, n, i, e)), e) + } + else { + const a = (function (t, e) { + let n; let i; let r = 7; let o = 0; t.length; const a = []; function s(s) { + let l = n[s]; let u = i[s]; const h = n[s + 1]; let c = i[s + 1]; i[s] = u + c, s === o - 3 && (n[s + 1] = n[s + 2], i[s + 1] = i[s + 2]), o--; const p = Se(t[h], t, l, u, 0, e); l += p, (u -= p) != 0 && (c = we(t[l + u - 1], t, h, c, c - 1, e)) !== 0 && (u <= c + ? (function (n, i, o, s) { + let l = 0; for (l = 0; l < i; l++)a[l] = t[n + l]; let u = 0; let h = o; let c = n; if (t[c++] = t[h++], --s != 0) { + if (i !== 1) { + for (var p, d, f, g = r; ;) { + p = 0, d = 0, f = !1; do { + if (e(t[h], a[u]) < 0) { if (t[c++] = t[h++], d++, p = 0, --s == 0) { f = !0; break } } + else if (t[c++] = a[u++], p++, d = 0, --i == 1) { f = !0; break } + } while ((p | d) < g); if (f) + break; do { if ((p = Se(t[h], a, u, i, 0, e)) !== 0) { for (l = 0; l < p; l++)t[c + l] = a[u + l]; if (c += p, u += p, (i -= p) <= 1) { f = !0; break } } if (t[c++] = t[h++], --s == 0) { f = !0; break } if ((d = we(a[u], t, h, s, 0, e)) !== 0) { for (l = 0; l < d; l++)t[c + l] = t[h + l]; if (c += d, h += d, (s -= d) == 0) { f = !0; break } } if (t[c++] = a[u++], --i == 1) { f = !0; break }g-- } while (p >= 7 || d >= 7); if (f) + break; g < 0 && (g = 0), g += 2 + } if ((r = g) < 1 && (r = 1), i === 1) { for (l = 0; l < s; l++)t[c + l] = t[h + l]; t[c + s] = a[u] } + else { + if (i === 0) + throw new Error(); for (l = 0; l < i; l++)t[c + l] = a[u + l] + } + } + else { for (l = 0; l < s; l++)t[c + l] = t[h + l]; t[c + s] = a[u] } + } + else { + for (l = 0; l < i; l++)t[c + l] = a[u + l] + } + }(l, u, h, c)) + : (function (n, i, o, s) { + let l = 0; for (l = 0; l < s; l++)a[l] = t[o + l]; let u = n + i - 1; let h = s - 1; let c = o + s - 1; let p = 0; let d = 0; if (t[c--] = t[u--], --i != 0) { + if (s !== 1) { + for (var f = r; ;) { + let g = 0; let y = 0; let v = !1; do { + if (e(a[h], t[u]) < 0) { if (t[c--] = t[u--], g++, y = 0, --i == 0) { v = !0; break } } + else if (t[c--] = a[h--], y++, g = 0, --s == 1) { v = !0; break } + } while ((g | y) < f); if (v) + break; do { if ((g = i - Se(a[h], t, n, i, i - 1, e)) != 0) { for (i -= g, d = 1 + (c -= g), p = 1 + (u -= g), l = g - 1; l >= 0; l--)t[d + l] = t[p + l]; if (i === 0) { v = !0; break } } if (t[c--] = a[h--], --s == 1) { v = !0; break } if ((y = s - we(t[u], a, 0, s, s - 1, e)) != 0) { for (s -= y, d = 1 + (c -= y), p = 1 + (h -= y), l = 0; l < y; l++)t[d + l] = a[p + l]; if (s <= 1) { v = !0; break } } if (t[c--] = t[u--], --i == 0) { v = !0; break }f-- } while (g >= 7 || y >= 7); if (v) + break; f < 0 && (f = 0), f += 2 + } if ((r = f) < 1 && (r = 1), s === 1) { for (d = 1 + (c -= i), p = 1 + (u -= i), l = i - 1; l >= 0; l--)t[d + l] = t[p + l]; t[c] = a[h] } + else { + if (s === 0) + throw new Error(); for (p = c - (s - 1), l = 0; l < s; l++)t[p + l] = a[l] + } + } + else { for (d = 1 + (c -= i), p = 1 + (u -= i), l = i - 1; l >= 0; l--)t[d + l] = t[p + l]; t[c] = a[h] } + } + else { + for (p = c - (s - 1), l = 0; l < s; l++)t[p + l] = a[l] + } + }(l, u, h, c))) + } return n = [], i = [], { mergeRuns() { + for (;o > 1;) { + let t = o - 2; if (t >= 1 && i[t - 1] <= i[t] + i[t + 1] || t >= 2 && i[t - 2] <= i[t] + i[t - 1]) + i[t - 1] < i[t + 1] && t--; else if (i[t] > i[t + 1]) + break; s(t) + } + }, forceMergeRuns() { for (;o > 1;) { let t = o - 2; t > 0 && i[t - 1] < i[t + 1] && t--, s(t) } }, pushRun(t, e) { n[o] = t, i[o] = e, o += 1 } } + }(t, e)); const s = (function (t) { for (var e = 0; t >= 32;)e |= 1 & t, t >>= 1; return t + e }(r)); do { if ((o = _e(t, n, i, e)) < s) { let l = r; l > s && (l = s), be(t, n, n + l, n + o, e), o = l }a.pushRun(n, o), a.mergeRuns(), r -= o, n += o } while (r !== 0); a.forceMergeRuns() + } + } + }E(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], (t) => { + ve.prototype[t] = function (e) { + let n; let i; const r = e.zrX; const o = e.zrY; const a = xe(this, r, o); if (t === 'mouseup' && a || (i = (n = this.findHover(r, o)).target), t === 'mousedown') { + this._downEl = i, this._downPoint = [e.zrX, e.zrY], this._upEl = i + } + else if (t === 'mouseup') { + this._upEl = i + } + else if (t === 'click') { + if (this._downEl !== this._upEl || !this._downPoint || Et(this._downPoint, [e.zrX, e.zrY]) > 4) + return; this._downPoint = null + } this.dispatchToElement(n, t, e) + } + }); let Te = !1; function Ce() { Te || (Te = !0, console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors')) } function De(t, e) { return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel } const Ae = (function () { + function t() { this._roots = [], this._displayList = [], this._displayListLen = 0, this.displayableSortFunc = De } return t.prototype.traverse = function (t, e) { for (let n = 0; n < this._roots.length; n++) this._roots[n].traverse(t, e) }, t.prototype.getDisplayList = function (t, e) { e = e || !1; const n = this._displayList; return !t && n.length || this.updateDisplayList(e), n }, t.prototype.updateDisplayList = function (t) { this._displayListLen = 0; for (var e = this._roots, n = this._displayList, i = 0, r = e.length; i < r; i++) this._updateAndAddDisplayable(e[i], null, t); n.length = this._displayListLen, Ie(n, De) }, t.prototype._updateAndAddDisplayable = function (t, e, n) { + if (!t.ignore || n) { + t.beforeUpdate(), t.update(), t.afterUpdate(); const i = t.getClipPath(); if (t.ignoreClip) { + e = null + } + else if (i) { e = e ? e.slice() : []; for (let r = i, o = t; r;)r.parent = o, r.updateTransform(), e.push(r), o = r, r = r.getClipPath() } if (t.childrenRef) { for (let a = t.childrenRef(), s = 0; s < a.length; s++) { const l = a[s]; t.__dirty && (l.__dirty |= 1), this._updateAndAddDisplayable(l, e, n) }t.__dirty = 0 } + else { const u = t; e && e.length ? u.__clipPaths = e : u.__clipPaths && u.__clipPaths.length > 0 && (u.__clipPaths = []), isNaN(u.z) && (Ce(), u.z = 0), isNaN(u.z2) && (Ce(), u.z2 = 0), isNaN(u.zlevel) && (Ce(), u.zlevel = 0), this._displayList[this._displayListLen++] = u } const h = t.getDecalElement && t.getDecalElement(); h && this._updateAndAddDisplayable(h, e, n); const c = t.getTextGuideLine(); c && this._updateAndAddDisplayable(c, e, n); const p = t.getTextContent(); p && this._updateAndAddDisplayable(p, e, n) + } + }, t.prototype.addRoot = function (t) { t.__zr && t.__zr.storage === this || this._roots.push(t) }, t.prototype.delRoot = function (t) { + if (Array.isArray(t)) { + for (let e = 0, n = t.length; e < n; e++) this.delRoot(t[e]) + } + else { const i = P(this._roots, t); i >= 0 && this._roots.splice(i, 1) } + }, t.prototype.delAllRoots = function () { this._roots = [], this._displayList = [], this._displayListLen = 0 }, t.prototype.getRoots = function () { return this._roots }, t.prototype.dispose = function () { this._displayList = null, this._roots = null }, t + }()); const ke = r.hasGlobalWindow && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function (t) { return setTimeout(t, 16) }; var Le = { linear(t) { return t }, quadraticIn(t) { return t * t }, quadraticOut(t) { return t * (2 - t) }, quadraticInOut(t) { return (t *= 2) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1) }, cubicIn(t) { return t * t * t }, cubicOut(t) { return --t * t * t + 1 }, cubicInOut(t) { return (t *= 2) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2) }, quarticIn(t) { return t * t * t * t }, quarticOut(t) { return 1 - --t * t * t * t }, quarticInOut(t) { return (t *= 2) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2) }, quinticIn(t) { return t * t * t * t * t }, quinticOut(t) { return --t * t * t * t * t + 1 }, quinticInOut(t) { return (t *= 2) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2) }, sinusoidalIn(t) { return 1 - Math.cos(t * Math.PI / 2) }, sinusoidalOut(t) { return Math.sin(t * Math.PI / 2) }, sinusoidalInOut(t) { return 0.5 * (1 - Math.cos(Math.PI * t)) }, exponentialIn(t) { return t === 0 ? 0 : 1024 ** (t - 1) }, exponentialOut(t) { return t === 1 ? 1 : 1 - 2 ** (-10 * t) }, exponentialInOut(t) { return t === 0 ? 0 : t === 1 ? 1 : (t *= 2) < 1 ? 0.5 * 1024 ** (t - 1) : 0.5 * (2 - 2 ** (-10 * (t - 1))) }, circularIn(t) { return 1 - Math.sqrt(1 - t * t) }, circularOut(t) { return Math.sqrt(1 - --t * t) }, circularInOut(t) { return (t *= 2) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1) }, elasticIn(t) { let e; let n = 0.1; return t === 0 ? 0 : t === 1 ? 1 : (!n || n < 1 ? (n = 1, e = 0.1) : e = 0.4 * Math.asin(1 / n) / (2 * Math.PI), -n * 2 ** (10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / 0.4)) }, elasticOut(t) { let e; let n = 0.1; return t === 0 ? 0 : t === 1 ? 1 : (!n || n < 1 ? (n = 1, e = 0.1) : e = 0.4 * Math.asin(1 / n) / (2 * Math.PI), n * 2 ** (-10 * t) * Math.sin((t - e) * (2 * Math.PI) / 0.4) + 1) }, elasticInOut(t) { let e; let n = 0.1; return t === 0 ? 0 : t === 1 ? 1 : (!n || n < 1 ? (n = 1, e = 0.1) : e = 0.4 * Math.asin(1 / n) / (2 * Math.PI), (t *= 2) < 1 ? n * 2 ** (10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / 0.4) * -0.5 : n * 2 ** (-10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / 0.4) * 0.5 + 1) }, backIn(t) { const e = 1.70158; return t * t * ((e + 1) * t - e) }, backOut(t) { const e = 1.70158; return --t * t * ((e + 1) * t + e) + 1 }, backInOut(t) { const e = 2.5949095; return (t *= 2) < 1 ? t * t * ((e + 1) * t - e) * 0.5 : 0.5 * ((t -= 2) * t * ((e + 1) * t + e) + 2) }, bounceIn(t) { return 1 - Le.bounceOut(1 - t) }, bounceOut(t) { return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + 0.75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375 : 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375 }, bounceInOut(t) { return t < 0.5 ? 0.5 * Le.bounceIn(2 * t) : 0.5 * Le.bounceOut(2 * t - 1) + 0.5 } }; const Pe = Math.pow; const Oe = Math.sqrt; const Re = 1e-8; const Ne = 1e-4; const Ee = Oe(3); const ze = 1 / 3; const Ve = wt(); const Be = wt(); const Fe = wt(); function Ge(t) { return t > -1e-8 && t < Re } function We(t) { return t > Re || t < -1e-8 } function He(t, e, n, i, r) { const o = 1 - r; return o * o * (o * t + 3 * r * e) + r * r * (r * i + 3 * o * n) } function Ye(t, e, n, i, r) { const o = 1 - r; return 3 * (((e - t) * o + 2 * (n - e) * r) * o + (i - n) * r * r) } function Ue(t, e, n, i, r, o) { + const a = i + 3 * (e - n) - t; const s = 3 * (n - 2 * e + t); const l = 3 * (e - t); const u = t - r; const h = s * s - 3 * a * l; const c = s * l - 9 * a * u; const p = l * l - 3 * s * u; let d = 0; if (Ge(h) && Ge(c)) { + Ge(s) ? o[0] = 0 : (M = -l / s) >= 0 && M <= 1 && (o[d++] = M) + } + else { + const f = c * c - 4 * h * p; if (Ge(f)) { const g = c / h; var y = -g / 2; (M = -s / a + g) >= 0 && M <= 1 && (o[d++] = M), y >= 0 && y <= 1 && (o[d++] = y) } + else if (f > 0) { const v = Oe(f); let m = h * s + 1.5 * a * (-c + v); let x = h * s + 1.5 * a * (-c - v); (M = (-s - ((m = m < 0 ? -((-m) ** ze) : m ** ze) + (x = x < 0 ? -((-x) ** ze) : x ** ze))) / (3 * a)) >= 0 && M <= 1 && (o[d++] = M) } + else { const _ = (2 * h * s - 3 * a * c) / (2 * Oe(h * h * h)); const b = Math.acos(_) / 3; const w = Oe(h); const S = Math.cos(b); var M = (-s - 2 * w * S) / (3 * a); const I = (y = (-s + w * (S + Ee * Math.sin(b))) / (3 * a), (-s + w * (S - Ee * Math.sin(b))) / (3 * a)); M >= 0 && M <= 1 && (o[d++] = M), y >= 0 && y <= 1 && (o[d++] = y), I >= 0 && I <= 1 && (o[d++] = I) } + } return d + } function Xe(t, e, n, i, r) { + const o = 6 * n - 12 * e + 6 * t; const a = 9 * e + 3 * i - 3 * t - 9 * n; const s = 3 * e - 3 * t; let l = 0; if (Ge(a)) { + We(o) && (h = -s / o) >= 0 && h <= 1 && (r[l++] = h) + } + else { + const u = o * o - 4 * a * s; if (Ge(u)) { + r[0] = -o / (2 * a) + } + else if (u > 0) { var h; const c = Oe(u); const p = (-o - c) / (2 * a); (h = (-o + c) / (2 * a)) >= 0 && h <= 1 && (r[l++] = h), p >= 0 && p <= 1 && (r[l++] = p) } + } return l + } function Ze(t, e, n, i, r, o) { const a = (e - t) * r + t; const s = (n - e) * r + e; const l = (i - n) * r + n; const u = (s - a) * r + a; const h = (l - s) * r + s; const c = (h - u) * r + u; o[0] = t, o[1] = a, o[2] = u, o[3] = c, o[4] = c, o[5] = h, o[6] = l, o[7] = i } function je(t, e, n, i, r, o, a, s, l, u, h) { let c; let p; let d; let f; let g; let y = 0.005; let v = 1 / 0; Ve[0] = l, Ve[1] = u; for (let m = 0; m < 1; m += 0.05)Be[0] = He(t, n, r, a, m), Be[1] = He(e, i, o, s, m), (f = Vt(Ve, Be)) < v && (c = m, v = f); v = 1 / 0; for (let x = 0; x < 32 && !(y < Ne); x++)p = c - y, d = c + y, Be[0] = He(t, n, r, a, p), Be[1] = He(e, i, o, s, p), f = Vt(Be, Ve), p >= 0 && f < v ? (c = p, v = f) : (Fe[0] = He(t, n, r, a, d), Fe[1] = He(e, i, o, s, d), g = Vt(Fe, Ve), d <= 1 && g < v ? (c = d, v = g) : y *= 0.5); return h && (h[0] = He(t, n, r, a, c), h[1] = He(e, i, o, s, c)), Oe(v) } function qe(t, e, n, i, r, o, a, s, l) { for (var u = t, h = e, c = 0, p = 1 / l, d = 1; d <= l; d++) { const f = d * p; const g = He(t, n, r, a, f); const y = He(e, i, o, s, f); const v = g - u; const m = y - h; c += Math.sqrt(v * v + m * m), u = g, h = y } return c } function Ke(t, e, n, i) { const r = 1 - i; return r * (r * t + 2 * i * e) + i * i * n } function $e(t, e, n, i) { return 2 * ((1 - i) * (e - t) + i * (n - e)) } function Je(t, e, n) { const i = t + n - 2 * e; return i === 0 ? 0.5 : (t - e) / i } function Qe(t, e, n, i, r) { const o = (e - t) * i + t; const a = (n - e) * i + e; const s = (a - o) * i + o; r[0] = t, r[1] = o, r[2] = s, r[3] = s, r[4] = a, r[5] = n } function tn(t, e, n, i, r, o, a, s, l) { + let u; let h = 0.005; let c = 1 / 0; Ve[0] = a, Ve[1] = s; for (let p = 0; p < 1; p += 0.05)Be[0] = Ke(t, n, r, p), Be[1] = Ke(e, i, o, p), (y = Vt(Ve, Be)) < c && (u = p, c = y); c = 1 / 0; for (let d = 0; d < 32 && !(h < Ne); d++) { + const f = u - h; const g = u + h; Be[0] = Ke(t, n, r, f), Be[1] = Ke(e, i, o, f); var y = Vt(Be, Ve); if (f >= 0 && y < c) { + u = f, c = y + } + else { Fe[0] = Ke(t, n, r, g), Fe[1] = Ke(e, i, o, g); const v = Vt(Fe, Ve); g <= 1 && v < c ? (u = g, c = v) : h *= 0.5 } + } return l && (l[0] = Ke(t, n, r, u), l[1] = Ke(e, i, o, u)), Oe(c) + } function en(t, e, n, i, r, o, a) { for (var s = t, l = e, u = 0, h = 1 / a, c = 1; c <= a; c++) { const p = c * h; const d = Ke(t, n, r, p); const f = Ke(e, i, o, p); const g = d - s; const y = f - l; u += Math.sqrt(g * g + y * y), s = d, l = f } return u } const nn = /cubic-bezier\(([0-9,.e ]+)\)/; function rn(t) { + const e = t && nn.exec(t); if (e) { + const n = e[1].split(','); const i = +ut(n[0]); const r = +ut(n[1]); const o = +ut(n[2]); const a = +ut(n[3]); if (isNaN(i + r + o + a)) + return; const s = []; return function (t) { return t <= 0 ? 0 : t >= 1 ? 1 : Ue(0, i, o, 1, t, s) && He(0, r, a, 1, s[0]) } + } + } const on = (function () { + function t(t) { this._inited = !1, this._startTime = 0, this._pausedTime = 0, this._paused = !1, this._life = t.life || 1e3, this._delay = t.delay || 0, this.loop = t.loop || !1, this.onframe = t.onframe || xt, this.ondestroy = t.ondestroy || xt, this.onrestart = t.onrestart || xt, t.easing && this.setEasing(t.easing) } return t.prototype.step = function (t, e) { + if (this._inited || (this._startTime = t + this._delay, this._inited = !0), !this._paused) { + const n = this._life; const i = t - this._startTime - this._pausedTime; let r = i / n; r < 0 && (r = 0), r = Math.min(r, 1); const o = this.easingFunc; const a = o ? o(r) : r; if (this.onframe(a), r === 1) { + if (!this.loop) + return !0; const s = i % n; this._startTime = t - s, this._pausedTime = 0, this.onrestart() + } return !1 + } this._pausedTime += e + }, t.prototype.pause = function () { this._paused = !0 }, t.prototype.resume = function () { this._paused = !1 }, t.prototype.setEasing = function (t) { this.easing = t, this.easingFunc = U(t) ? t : Le[t] || rn(t) }, t + }()); const an = function (t) { this.value = t }; const sn = (function () { function t() { this._len = 0 } return t.prototype.insert = function (t) { const e = new an(t); return this.insertEntry(e), e }, t.prototype.insertEntry = function (t) { this.head ? (this.tail.next = t, t.prev = this.tail, t.next = null, this.tail = t) : this.head = this.tail = t, this._len++ }, t.prototype.remove = function (t) { const e = t.prev; const n = t.next; e ? e.next = n : this.head = n, n ? n.prev = e : this.tail = e, t.next = t.prev = null, this._len-- }, t.prototype.len = function () { return this._len }, t.prototype.clear = function () { this.head = this.tail = null, this._len = 0 }, t }()); const ln = (function () { + function t(t) { this._list = new sn(), this._maxSize = 10, this._map = {}, this._maxSize = t } return t.prototype.put = function (t, e) { const n = this._list; const i = this._map; let r = null; if (i[t] == null) { const o = n.len(); let a = this._lastRemovedEntry; if (o >= this._maxSize && o > 0) { const s = n.head; n.remove(s), delete i[s.key], r = s.value, this._lastRemovedEntry = s }a ? a.value = e : a = new an(e), a.key = t, n.insertEntry(a), i[t] = a } return r }, t.prototype.get = function (t) { + const e = this._map[t]; const n = this._list; if (e != null) + return e !== n.tail && (n.remove(e), n.insertEntry(e)), e.value + }, t.prototype.clear = function () { this._list.clear(), this._map = {} }, t.prototype.len = function () { return this._list.len() }, t + }()); const un = { transparent: [0, 0, 0, 0], aliceblue: [240, 248, 255, 1], antiquewhite: [250, 235, 215, 1], aqua: [0, 255, 255, 1], aquamarine: [127, 255, 212, 1], azure: [240, 255, 255, 1], beige: [245, 245, 220, 1], bisque: [255, 228, 196, 1], black: [0, 0, 0, 1], blanchedalmond: [255, 235, 205, 1], blue: [0, 0, 255, 1], blueviolet: [138, 43, 226, 1], brown: [165, 42, 42, 1], burlywood: [222, 184, 135, 1], cadetblue: [95, 158, 160, 1], chartreuse: [127, 255, 0, 1], chocolate: [210, 105, 30, 1], coral: [255, 127, 80, 1], cornflowerblue: [100, 149, 237, 1], cornsilk: [255, 248, 220, 1], crimson: [220, 20, 60, 1], cyan: [0, 255, 255, 1], darkblue: [0, 0, 139, 1], darkcyan: [0, 139, 139, 1], darkgoldenrod: [184, 134, 11, 1], darkgray: [169, 169, 169, 1], darkgreen: [0, 100, 0, 1], darkgrey: [169, 169, 169, 1], darkkhaki: [189, 183, 107, 1], darkmagenta: [139, 0, 139, 1], darkolivegreen: [85, 107, 47, 1], darkorange: [255, 140, 0, 1], darkorchid: [153, 50, 204, 1], darkred: [139, 0, 0, 1], darksalmon: [233, 150, 122, 1], darkseagreen: [143, 188, 143, 1], darkslateblue: [72, 61, 139, 1], darkslategray: [47, 79, 79, 1], darkslategrey: [47, 79, 79, 1], darkturquoise: [0, 206, 209, 1], darkviolet: [148, 0, 211, 1], deeppink: [255, 20, 147, 1], deepskyblue: [0, 191, 255, 1], dimgray: [105, 105, 105, 1], dimgrey: [105, 105, 105, 1], dodgerblue: [30, 144, 255, 1], firebrick: [178, 34, 34, 1], floralwhite: [255, 250, 240, 1], forestgreen: [34, 139, 34, 1], fuchsia: [255, 0, 255, 1], gainsboro: [220, 220, 220, 1], ghostwhite: [248, 248, 255, 1], gold: [255, 215, 0, 1], goldenrod: [218, 165, 32, 1], gray: [128, 128, 128, 1], green: [0, 128, 0, 1], greenyellow: [173, 255, 47, 1], grey: [128, 128, 128, 1], honeydew: [240, 255, 240, 1], hotpink: [255, 105, 180, 1], indianred: [205, 92, 92, 1], indigo: [75, 0, 130, 1], ivory: [255, 255, 240, 1], khaki: [240, 230, 140, 1], lavender: [230, 230, 250, 1], lavenderblush: [255, 240, 245, 1], lawngreen: [124, 252, 0, 1], lemonchiffon: [255, 250, 205, 1], lightblue: [173, 216, 230, 1], lightcoral: [240, 128, 128, 1], lightcyan: [224, 255, 255, 1], lightgoldenrodyellow: [250, 250, 210, 1], lightgray: [211, 211, 211, 1], lightgreen: [144, 238, 144, 1], lightgrey: [211, 211, 211, 1], lightpink: [255, 182, 193, 1], lightsalmon: [255, 160, 122, 1], lightseagreen: [32, 178, 170, 1], lightskyblue: [135, 206, 250, 1], lightslategray: [119, 136, 153, 1], lightslategrey: [119, 136, 153, 1], lightsteelblue: [176, 196, 222, 1], lightyellow: [255, 255, 224, 1], lime: [0, 255, 0, 1], limegreen: [50, 205, 50, 1], linen: [250, 240, 230, 1], magenta: [255, 0, 255, 1], maroon: [128, 0, 0, 1], mediumaquamarine: [102, 205, 170, 1], mediumblue: [0, 0, 205, 1], mediumorchid: [186, 85, 211, 1], mediumpurple: [147, 112, 219, 1], mediumseagreen: [60, 179, 113, 1], mediumslateblue: [123, 104, 238, 1], mediumspringgreen: [0, 250, 154, 1], mediumturquoise: [72, 209, 204, 1], mediumvioletred: [199, 21, 133, 1], midnightblue: [25, 25, 112, 1], mintcream: [245, 255, 250, 1], mistyrose: [255, 228, 225, 1], moccasin: [255, 228, 181, 1], navajowhite: [255, 222, 173, 1], navy: [0, 0, 128, 1], oldlace: [253, 245, 230, 1], olive: [128, 128, 0, 1], olivedrab: [107, 142, 35, 1], orange: [255, 165, 0, 1], orangered: [255, 69, 0, 1], orchid: [218, 112, 214, 1], palegoldenrod: [238, 232, 170, 1], palegreen: [152, 251, 152, 1], paleturquoise: [175, 238, 238, 1], palevioletred: [219, 112, 147, 1], papayawhip: [255, 239, 213, 1], peachpuff: [255, 218, 185, 1], peru: [205, 133, 63, 1], pink: [255, 192, 203, 1], plum: [221, 160, 221, 1], powderblue: [176, 224, 230, 1], purple: [128, 0, 128, 1], red: [255, 0, 0, 1], rosybrown: [188, 143, 143, 1], royalblue: [65, 105, 225, 1], saddlebrown: [139, 69, 19, 1], salmon: [250, 128, 114, 1], sandybrown: [244, 164, 96, 1], seagreen: [46, 139, 87, 1], seashell: [255, 245, 238, 1], sienna: [160, 82, 45, 1], silver: [192, 192, 192, 1], skyblue: [135, 206, 235, 1], slateblue: [106, 90, 205, 1], slategray: [112, 128, 144, 1], slategrey: [112, 128, 144, 1], snow: [255, 250, 250, 1], springgreen: [0, 255, 127, 1], steelblue: [70, 130, 180, 1], tan: [210, 180, 140, 1], teal: [0, 128, 128, 1], thistle: [216, 191, 216, 1], tomato: [255, 99, 71, 1], turquoise: [64, 224, 208, 1], violet: [238, 130, 238, 1], wheat: [245, 222, 179, 1], white: [255, 255, 255, 1], whitesmoke: [245, 245, 245, 1], yellow: [255, 255, 0, 1], yellowgreen: [154, 205, 50, 1] }; function hn(t) { return (t = Math.round(t)) < 0 ? 0 : t > 255 ? 255 : t } function cn(t) { return t < 0 ? 0 : t > 1 ? 1 : t } function pn(t) { const e = t; return e.length && e.charAt(e.length - 1) === '%' ? hn(Number.parseFloat(e) / 100 * 255) : hn(Number.parseInt(e, 10)) } function dn(t) { const e = t; return e.length && e.charAt(e.length - 1) === '%' ? cn(Number.parseFloat(e) / 100) : cn(Number.parseFloat(e)) } function fn(t, e, n) { return n < 0 ? n += 1 : n > 1 && (n -= 1), 6 * n < 1 ? t + (e - t) * n * 6 : 2 * n < 1 ? e : 3 * n < 2 ? t + (e - t) * (2 / 3 - n) * 6 : t } function gn(t, e, n) { return t + (e - t) * n } function yn(t, e, n, i, r) { return t[0] = e, t[1] = n, t[2] = i, t[3] = r, t } function vn(t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t } const mn = new ln(20); let xn = null; function _n(t, e) { xn && vn(xn, e), xn = mn.put(t, xn || e.slice()) } function bn(t, e) { + if (t) { + e = e || []; const n = mn.get(t); if (n) + return vn(e, n); const i = (t += '').replace(/ /g, '').toLowerCase(); if (i in un) + return vn(e, un[i]), _n(t, e), e; let r; const o = i.length; if (i.charAt(0) === '#') + return o === 4 || o === 5 ? (r = Number.parseInt(i.slice(1, 4), 16)) >= 0 && r <= 4095 ? (yn(e, (3840 & r) >> 4 | (3840 & r) >> 8, 240 & r | (240 & r) >> 4, 15 & r | (15 & r) << 4, o === 5 ? Number.parseInt(i.slice(4), 16) / 15 : 1), _n(t, e), e) : void yn(e, 0, 0, 0, 1) : o === 7 || o === 9 ? (r = Number.parseInt(i.slice(1, 7), 16)) >= 0 && r <= 16777215 ? (yn(e, (16711680 & r) >> 16, (65280 & r) >> 8, 255 & r, o === 9 ? Number.parseInt(i.slice(7), 16) / 255 : 1), _n(t, e), e) : void yn(e, 0, 0, 0, 1) : void 0; const a = i.indexOf('('); const s = i.indexOf(')'); if (a !== -1 && s + 1 === o) { + const l = i.substr(0, a); const u = i.substr(a + 1, s - (a + 1)).split(','); let h = 1; switch (l) { + case 'rgba':if (u.length !== 4) + return u.length === 3 ? yn(e, +u[0], +u[1], +u[2], 1) : yn(e, 0, 0, 0, 1); h = dn(u.pop()); case 'rgb':return u.length !== 3 ? void yn(e, 0, 0, 0, 1) : (yn(e, pn(u[0]), pn(u[1]), pn(u[2]), h), _n(t, e), e); case 'hsla':return u.length !== 4 ? void yn(e, 0, 0, 0, 1) : (u[3] = dn(u[3]), wn(u, e), _n(t, e), e); case 'hsl':return u.length !== 3 ? void yn(e, 0, 0, 0, 1) : (wn(u, e), _n(t, e), e); default:return + } + }yn(e, 0, 0, 0, 1) + } + } function wn(t, e) { const n = (Number.parseFloat(t[0]) % 360 + 360) % 360 / 360; const i = dn(t[1]); const r = dn(t[2]); const o = r <= 0.5 ? r * (i + 1) : r + i - r * i; const a = 2 * r - o; return yn(e = e || [], hn(255 * fn(a, o, n + 1 / 3)), hn(255 * fn(a, o, n)), hn(255 * fn(a, o, n - 1 / 3)), 1), t.length === 4 && (e[3] = t[3]), e } function Sn(t, e) { const n = bn(t); if (n) { for (let i = 0; i < 3; i++)n[i] = e < 0 ? n[i] * (1 - e) | 0 : (255 - n[i]) * e + n[i] | 0, n[i] > 255 ? n[i] = 255 : n[i] < 0 && (n[i] = 0); return kn(n, n.length === 4 ? 'rgba' : 'rgb') } } function Mn(t, e, n) { if (e && e.length && t >= 0 && t <= 1) { n = n || []; const i = t * (e.length - 1); const r = Math.floor(i); const o = Math.ceil(i); const a = e[r]; const s = e[o]; const l = i - r; return n[0] = hn(gn(a[0], s[0], l)), n[1] = hn(gn(a[1], s[1], l)), n[2] = hn(gn(a[2], s[2], l)), n[3] = cn(gn(a[3], s[3], l)), n } } const In = Mn; function Tn(t, e, n) { if (e && e.length && t >= 0 && t <= 1) { const i = t * (e.length - 1); const r = Math.floor(i); const o = Math.ceil(i); const a = bn(e[r]); const s = bn(e[o]); const l = i - r; const u = kn([hn(gn(a[0], s[0], l)), hn(gn(a[1], s[1], l)), hn(gn(a[2], s[2], l)), cn(gn(a[3], s[3], l))], 'rgba'); return n ? { color: u, leftIndex: r, rightIndex: o, value: i } : u } } const Cn = Tn; function Dn(t, e, n, i) { + let r = bn(t); if (t) { + return r = (function (t) { + if (t) { + let e; let n; const i = t[0] / 255; const r = t[1] / 255; const o = t[2] / 255; const a = Math.min(i, r, o); const s = Math.max(i, r, o); const l = s - a; const u = (s + a) / 2; if (l === 0) { + e = 0, n = 0 + } + else { n = u < 0.5 ? l / (s + a) : l / (2 - s - a); const h = ((s - i) / 6 + l / 2) / l; const c = ((s - r) / 6 + l / 2) / l; const p = ((s - o) / 6 + l / 2) / l; i === s ? e = p - c : r === s ? e = 1 / 3 + h - p : o === s && (e = 2 / 3 + c - h), e < 0 && (e += 1), e > 1 && (e -= 1) } const d = [360 * e, n, u]; return t[3] != null && d.push(t[3]), d + } + }(r)), e != null && (r[0] = (function (t) { return (t = Math.round(t)) < 0 ? 0 : t > 360 ? 360 : t }(e))), n != null && (r[1] = dn(n)), i != null && (r[2] = dn(i)), kn(wn(r), 'rgba') + } + } function An(t, e) { + const n = bn(t); if (n && e != null) + return n[3] = cn(e), kn(n, 'rgba') + } function kn(t, e) { if (t && t.length) { let n = `${t[0]},${t[1]},${t[2]}`; return e !== 'rgba' && e !== 'hsva' && e !== 'hsla' || (n += `,${t[3]}`), `${e}(${n})` } } function Ln(t, e) { const n = bn(t); return n ? (0.299 * n[0] + 0.587 * n[1] + 0.114 * n[2]) * n[3] / 255 + (1 - n[3]) * e : 0 } const Pn = Object.freeze({ __proto__: null, parse: bn, lift: Sn, toHex(t) { + const e = bn(t); if (e) + return ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1) + }, fastLerp: Mn, fastMapToColor: In, lerp: Tn, mapToColor: Cn, modifyHSL: Dn, modifyAlpha: An, stringify: kn, lum: Ln, random() { return kn([Math.round(255 * Math.random()), Math.round(255 * Math.random()), Math.round(255 * Math.random())], 'rgb') } }); const On = Math.round; function Rn(t) { + let e; if (t && t !== 'transparent') { if (typeof t == 'string' && t.includes('rgba')) { const n = bn(t); n && (t = `rgb(${n[0]},${n[1]},${n[2]})`, e = n[3]) } } + else { + t = 'none' + } return { color: t, opacity: e == null ? 1 : e } + } const Nn = 1e-4; function En(t) { return t < Nn && t > -1e-4 } function zn(t) { return On(1e3 * t) / 1e3 } function Vn(t) { return On(1e4 * t) / 1e4 } const Bn = { left: 'start', right: 'end', center: 'middle', middle: 'middle' }; function Fn(t) { return t && !!t.image } function Gn(t) { return t.type === 'linear' } function Wn(t) { return t.type === 'radial' } function Hn(t) { return `url(#${t})` } function Yn(t) { const e = t.getGlobalScale(); const n = Math.max(e[0], e[1]); return Math.max(Math.ceil(Math.log(n) / Math.log(10)), 1) } function Un(t) { const e = t.x || 0; const n = t.y || 0; const i = (t.rotation || 0) * _t; const r = rt(t.scaleX, 1); const o = rt(t.scaleY, 1); const a = t.skewX || 0; const s = t.skewY || 0; const l = []; return (e || n) && l.push(`translate(${e}px,${n}px)`), i && l.push(`rotate(${i})`), r === 1 && o === 1 || l.push(`scale(${r},${o})`), (a || s) && l.push(`skew(${On(a * _t)}deg, ${On(s * _t)}deg)`), l.join(' ') } const Xn = r.hasGlobalWindow && U(window.btoa) ? function (t) { return window.btoa(unescape(t)) } : typeof Buffer != 'undefined' ? function (t) { return Buffer.from(t).toString('base64') } : function (t) { return null }; const Zn = Array.prototype.slice; function jn(t, e, n) { return (e - t) * n + t } function qn(t, e, n, i) { for (let r = e.length, o = 0; o < r; o++)t[o] = jn(e[o], n[o], i); return t } function Kn(t, e, n, i) { for (let r = e.length, o = 0; o < r; o++)t[o] = e[o] + n[o] * i; return t } function $n(t, e, n, i) { for (let r = e.length, o = r && e[0].length, a = 0; a < r; a++) { t[a] || (t[a] = []); for (let s = 0; s < o; s++)t[a][s] = e[a][s] + n[a][s] * i } return t } function Jn(t, e) { for (let n = t.length, i = e.length, r = n > i ? e : t, o = Math.min(n, i), a = r[o - 1] || { color: [0, 0, 0, 0], offset: 0 }, s = o; s < Math.max(n, i); s++)r.push({ offset: a.offset, color: a.color.slice() }) } function Qn(t, e, n) { + const i = t; const r = e; if (i.push && r.push) { + const o = i.length; const a = r.length; if (o !== a) { + if (o > a) { + i.length = a + } + else { + for (var s = o; s < a; s++)i.push(n === 1 ? r[s] : Zn.call(r[s])) + } + } const l = i[0] && i[0].length; for (s = 0; s < i.length; s++) { + if (n === 1) { + isNaN(i[s]) && (i[s] = r[s]) + } + else { + for (let u = 0; u < l; u++)isNaN(i[s][u]) && (i[s][u] = r[s][u]) + } + } + } + } function ti(t) { if (N(t)) { const e = t.length; if (N(t[0])) { for (var n = [], i = 0; i < e; i++)n.push(Zn.call(t[i])); return n } return Zn.call(t) } return t } function ei(t) { return t[0] = Math.floor(t[0]) || 0, t[1] = Math.floor(t[1]) || 0, t[2] = Math.floor(t[2]) || 0, t[3] = t[3] == null ? 1 : t[3], `rgba(${t.join(',')})` } function ni(t) { return t === 4 || t === 5 } function ii(t) { return t === 1 || t === 2 } const ri = [0, 0, 0, 0]; const oi = (function () { + function t(t) { this.keyframes = [], this.discrete = !1, this._invalid = !1, this._needsSort = !1, this._lastFr = 0, this._lastFrP = 0, this.propName = t } return t.prototype.isFinished = function () { return this._finished }, t.prototype.setFinished = function () { this._finished = !0, this._additiveTrack && this._additiveTrack.setFinished() }, t.prototype.needsAnimate = function () { return this.keyframes.length >= 1 }, t.prototype.getAdditiveTrack = function () { return this._additiveTrack }, t.prototype.addKeyframe = function (t, e, n) { + this._needsSort = !0; const i = this.keyframes; const r = i.length; let o = !1; let a = 6; let s = e; if (N(e)) { const l = (function (t) { return N(t && t[0]) ? 2 : 1 }(e)); a = l, (l === 1 && !j(e[0]) || l === 2 && !j(e[0][0])) && (o = !0) } + else if (j(e) && !nt(e)) { + a = 0 + } + else if (X(e)) { + if (isNaN(+e)) { const u = bn(e); u && (s = u, a = 3) } + else { + a = 0 + } + } + else if (Q(e)) { const h = A({}, s); h.colorStops = z(e.colorStops, (t) => { return { offset: t.offset, color: bn(t.color) } }), Gn(e) ? a = 4 : Wn(e) && (a = 5), s = h }r === 0 ? this.valType = a : a === this.valType && a !== 6 || (o = !0), this.discrete = this.discrete || o; const c = { time: t, value: s, rawValue: e, percent: 0 }; return n && (c.easing = n, c.easingFunc = U(n) ? n : Le[n] || rn(n)), i.push(c), c + }, t.prototype.prepare = function (t, e) { const n = this.keyframes; this._needsSort && n.sort((t, e) => { return t.time - e.time }); for (var i = this.valType, r = n.length, o = n[r - 1], a = this.discrete, s = ii(i), l = ni(i), u = 0; u < r; u++) { const h = n[u]; const c = h.value; const p = o.value; h.percent = h.time / t, a || (s && u !== r - 1 ? Qn(c, p, i) : l && Jn(c.colorStops, p.colorStops)) } if (!a && i !== 5 && e && this.needsAnimate() && e.needsAnimate() && i === e.valType && !e._finished) { this._additiveTrack = e; const d = n[0].value; for (u = 0; u < r; u++)i === 0 ? n[u].additiveValue = n[u].value - d : i === 3 ? n[u].additiveValue = Kn([], n[u].value, d, -1) : ii(i) && (n[u].additiveValue = i === 1 ? Kn([], n[u].value, d, -1) : $n([], n[u].value, d, -1)) } }, t.prototype.step = function (t, e) { + if (!this._finished) { + this._additiveTrack && this._additiveTrack._finished && (this._additiveTrack = null); let n; let i; let r; const o = this._additiveTrack != null; const a = o ? 'additiveValue' : 'value'; const s = this.valType; const l = this.keyframes; const u = l.length; const h = this.propName; const c = s === 3; const p = this._lastFr; const d = Math.min; if (u === 1) { + i = r = l[0] + } + else { + if (e < 0) { + n = 0 + } + else if (e < this._lastFrP) { for (n = d(p + 1, u - 1); n >= 0 && !(l[n].percent <= e); n--);n = d(n, u - 2) } + else { for (n = p; n < u && !(l[n].percent > e); n++);n = d(n - 1, u - 2) }r = l[n + 1], i = l[n] + } if (i && r) { + this._lastFr = n, this._lastFrP = e; const f = r.percent - i.percent; let g = f === 0 ? 1 : d((e - i.percent) / f, 1); r.easingFunc && (g = r.easingFunc(g)); let y = o ? this._additiveValue : c ? ri : t[h]; if (!ii(s) && !c || y || (y = this._additiveValue = []), this.discrete) { + t[h] = g < 1 ? i.rawValue : r.rawValue + } + else if (ii(s)) { + s === 1 ? qn(y, i[a], r[a], g) : (function (t, e, n, i) { for (let r = e.length, o = r && e[0].length, a = 0; a < r; a++) { t[a] || (t[a] = []); for (let s = 0; s < o; s++)t[a][s] = jn(e[a][s], n[a][s], i) } }(y, i[a], r[a], g)) + } + else if (ni(s)) { const v = i[a]; const m = r[a]; const x = s === 4; t[h] = { type: x ? 'linear' : 'radial', x: jn(v.x, m.x, g), y: jn(v.y, m.y, g), colorStops: z(v.colorStops, (t, e) => { const n = m.colorStops[e]; return { offset: jn(t.offset, n.offset, g), color: ei(qn([], t.color, n.color, g)) } }), global: m.global }, x ? (t[h].x2 = jn(v.x2, m.x2, g), t[h].y2 = jn(v.y2, m.y2, g)) : t[h].r = jn(v.r, m.r, g) } + else if (c) { + qn(y, i[a], r[a], g), o || (t[h] = ei(y)) + } + else { const _ = jn(i[a], r[a], g); o ? this._additiveValue = _ : t[h] = _ }o && this._addToTarget(t) + } + } + }, t.prototype._addToTarget = function (t) { const e = this.valType; const n = this.propName; const i = this._additiveValue; e === 0 ? t[n] = t[n] + i : e === 3 ? (bn(t[n], ri), Kn(ri, ri, i, 1), t[n] = ei(ri)) : e === 1 ? Kn(t[n], t[n], i, 1) : e === 2 && $n(t[n], t[n], i, 1) }, t + }()); const ai = (function () { + function t(t, e, n, i) { this._tracks = {}, this._trackKeys = [], this._maxTime = 0, this._started = 0, this._clip = null, this._target = t, this._loop = e, e && i ? I('Can\' use additive animation on looped animation.') : (this._additiveAnimators = i, this._allowDiscrete = n) } return t.prototype.getMaxTime = function () { return this._maxTime }, t.prototype.getDelay = function () { return this._delay }, t.prototype.getLoop = function () { return this._loop }, t.prototype.getTarget = function () { return this._target }, t.prototype.changeTarget = function (t) { this._target = t }, t.prototype.when = function (t, e, n) { return this.whenWithKeys(t, e, G(e), n) }, t.prototype.whenWithKeys = function (t, e, n, i) { + for (let r = this._tracks, o = 0; o < n.length; o++) { + const a = n[o]; let s = r[a]; if (!s) { + s = r[a] = new oi(a); let l = void 0; const u = this._getAdditiveTrack(a); if (u) { const h = u.keyframes; const c = h[h.length - 1]; l = c && c.value, u.valType === 3 && l && (l = ei(l)) } + else { + l = this._target[a] + } if (l == null) + continue; t > 0 && s.addKeyframe(0, ti(l), i), this._trackKeys.push(a) + }s.addKeyframe(t, ti(e[a]), i) + } return this._maxTime = Math.max(this._maxTime, t), this + }, t.prototype.pause = function () { this._clip.pause(), this._paused = !0 }, t.prototype.resume = function () { this._clip.resume(), this._paused = !1 }, t.prototype.isPaused = function () { return !!this._paused }, t.prototype.duration = function (t) { return this._maxTime = t, this._force = !0, this }, t.prototype._doneCallback = function () { + this._setTracksFinished(), this._clip = null; const t = this._doneCbs; if (t) { + for (let e = t.length, n = 0; n < e; n++)t[n].call(this) + } + }, t.prototype._abortedCallback = function () { + this._setTracksFinished(); const t = this.animation; const e = this._abortedCbs; if (t && t.removeClip(this._clip), this._clip = null, e) { + for (let n = 0; n < e.length; n++)e[n].call(this) + } + }, t.prototype._setTracksFinished = function () { for (let t = this._tracks, e = this._trackKeys, n = 0; n < e.length; n++)t[e[n]].setFinished() }, t.prototype._getAdditiveTrack = function (t) { + let e; const n = this._additiveAnimators; if (n) { + for (let i = 0; i < n.length; i++) { const r = n[i].getTrack(t); r && (e = r) } + } return e + }, t.prototype.start = function (t) { + if (!(this._started > 0)) { + this._started = 1; for (var e = this, n = [], i = this._maxTime || 0, r = 0; r < this._trackKeys.length; r++) { + const o = this._trackKeys[r]; const a = this._tracks[o]; const s = this._getAdditiveTrack(o); const l = a.keyframes; const u = l.length; if (a.prepare(i, s), a.needsAnimate()) { + if (!this._allowDiscrete && a.discrete) { const h = l[u - 1]; h && (e._target[a.propName] = h.rawValue), a.setFinished() } + else { + n.push(a) + } + } + } if (n.length || this._force) { + const c = new on({ life: i, loop: this._loop, delay: this._delay || 0, onframe(t) { + e._started = 2; const i = e._additiveAnimators; if (i) { + for (var r = !1, o = 0; o < i.length; o++) { + if (i[o]._clip) { r = !0; break } + }r || (e._additiveAnimators = null) + } for (o = 0; o < n.length; o++)n[o].step(e._target, t); const a = e._onframeCbs; if (a) { + for (o = 0; o < a.length; o++)a[o](e._target, t) + } + }, ondestroy() { e._doneCallback() } }); this._clip = c, this.animation && this.animation.addClip(c), t && c.setEasing(t) + } + else { + this._doneCallback() + } return this + } + }, t.prototype.stop = function (t) { if (this._clip) { const e = this._clip; t && e.onframe(1), this._abortedCallback() } }, t.prototype.delay = function (t) { return this._delay = t, this }, t.prototype.during = function (t) { return t && (this._onframeCbs || (this._onframeCbs = []), this._onframeCbs.push(t)), this }, t.prototype.done = function (t) { return t && (this._doneCbs || (this._doneCbs = []), this._doneCbs.push(t)), this }, t.prototype.aborted = function (t) { return t && (this._abortedCbs || (this._abortedCbs = []), this._abortedCbs.push(t)), this }, t.prototype.getClip = function () { return this._clip }, t.prototype.getTrack = function (t) { return this._tracks[t] }, t.prototype.getTracks = function () { const t = this; return z(this._trackKeys, (e) => { return t._tracks[e] }) }, t.prototype.stopTracks = function (t, e) { + if (!t.length || !this._clip) + return !0; for (var n = this._tracks, i = this._trackKeys, r = 0; r < t.length; r++) { const o = n[t[r]]; o && !o.isFinished() && (e ? o.step(this._target, 1) : this._started === 1 && o.step(this._target, 0), o.setFinished()) } let a = !0; for (r = 0; r < i.length; r++) { + if (!n[i[r]].isFinished()) { a = !1; break } + } return a && this._abortedCallback(), a + }, t.prototype.saveTo = function (t, e, n) { if (t) { e = e || this._trackKeys; for (let i = 0; i < e.length; i++) { const r = e[i]; const o = this._tracks[r]; if (o && !o.isFinished()) { const a = o.keyframes; const s = a[n ? 0 : a.length - 1]; s && (t[r] = ti(s.rawValue)) } } } }, t.prototype.__changeFinalValue = function (t, e) { e = e || G(t); for (let n = 0; n < e.length; n++) { const i = e[n]; const r = this._tracks[i]; if (r) { const o = r.keyframes; if (o.length > 1) { const a = o.pop(); r.addKeyframe(a.time, t[i]), r.prepare(this._maxTime, r.getAdditiveTrack()) } } } }, t + }()); function si() { return (new Date()).getTime() } let li; let ui; const hi = (function (t) { function e(e) { const n = t.call(this) || this; return n._running = !1, n._time = 0, n._pausedTime = 0, n._pauseStart = 0, n._paused = !1, e = e || {}, n.stage = e.stage || {}, n } return n(e, t), e.prototype.addClip = function (t) { t.animation && this.removeClip(t), this._head ? (this._tail.next = t, t.prev = this._tail, t.next = null, this._tail = t) : this._head = this._tail = t, t.animation = this }, e.prototype.addAnimator = function (t) { t.animation = this; const e = t.getClip(); e && this.addClip(e) }, e.prototype.removeClip = function (t) { if (t.animation) { const e = t.prev; const n = t.next; e ? e.next = n : this._head = n, n ? n.prev = e : this._tail = e, t.next = t.prev = t.animation = null } }, e.prototype.removeAnimator = function (t) { const e = t.getClip(); e && this.removeClip(e), t.animation = null }, e.prototype.update = function (t) { for (var e = si() - this._pausedTime, n = e - this._time, i = this._head; i;) { const r = i.next; i.step(e, n) ? (i.ondestroy(), this.removeClip(i), i = r) : i = r } this._time = e, t || (this.trigger('frame', n), this.stage.update && this.stage.update()) }, e.prototype._startLoop = function () { const t = this; this._running = !0, ke(function e() { t._running && (ke(e), !t._paused && t.update()) }) }, e.prototype.start = function () { this._running || (this._time = si(), this._pausedTime = 0, this._startLoop()) }, e.prototype.stop = function () { this._running = !1 }, e.prototype.pause = function () { this._paused || (this._pauseStart = si(), this._paused = !0) }, e.prototype.resume = function () { this._paused && (this._pausedTime += si() - this._pauseStart, this._paused = !1) }, e.prototype.clear = function () { for (let t = this._head; t;) { const e = t.next; t.prev = t.next = t.animation = null, t = e } this._head = this._tail = null }, e.prototype.isFinished = function () { return this._head == null }, e.prototype.animate = function (t, e) { e = e || {}, this.start(); const n = new ai(t, e.loop); return this.addAnimator(n), n }, e }(Xt)); const ci = r.domSupported; const pi = (ui = { pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1 }, { mouse: li = ['click', 'dblclick', 'mousewheel', 'wheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'], touch: ['touchstart', 'touchend', 'touchmove'], pointer: z(li, (t) => { const e = t.replace('mouse', 'pointer'); return ui.hasOwnProperty(e) ? e : t }) }); const di = ['mousemove', 'mouseup']; const fi = ['pointermove', 'pointerup']; let gi = !1; function yi(t) { const e = t.pointerType; return e === 'pen' || e === 'touch' } function vi(t) { t && (t.zrByTouch = !0) } function mi(t, e) { for (var n = e, i = !1; n && n.nodeType !== 9 && !(i = n.domBelongToZr || n !== e && n === t.painterRoot);)n = n.parentNode; return i } const xi = function (t, e) { this.stopPropagation = xt, this.stopImmediatePropagation = xt, this.preventDefault = xt, this.type = e.type, this.target = this.currentTarget = t.dom, this.pointerType = e.pointerType, this.clientX = e.clientX, this.clientY = e.clientY }; var _i = { mousedown(t) { t = oe(this.dom, t), this.__mayPointerCapture = [t.zrX, t.zrY], this.trigger('mousedown', t) }, mousemove(t) { t = oe(this.dom, t); const e = this.__mayPointerCapture; !e || t.zrX === e[0] && t.zrY === e[1] || this.__togglePointerCapture(!0), this.trigger('mousemove', t) }, mouseup(t) { t = oe(this.dom, t), this.__togglePointerCapture(!1), this.trigger('mouseup', t) }, mouseout(t) { mi(this, (t = oe(this.dom, t)).toElement || t.relatedTarget) || (this.__pointerCapturing && (t.zrEventControl = 'no_globalout'), this.trigger('mouseout', t)) }, wheel(t) { gi = !0, t = oe(this.dom, t), this.trigger('mousewheel', t) }, mousewheel(t) { gi || (t = oe(this.dom, t), this.trigger('mousewheel', t)) }, touchstart(t) { vi(t = oe(this.dom, t)), this.__lastTouchMoment = new Date(), this.handler.processGesture(t, 'start'), _i.mousemove.call(this, t), _i.mousedown.call(this, t) }, touchmove(t) { vi(t = oe(this.dom, t)), this.handler.processGesture(t, 'change'), _i.mousemove.call(this, t) }, touchend(t) { vi(t = oe(this.dom, t)), this.handler.processGesture(t, 'end'), _i.mouseup.call(this, t), +new Date() - +this.__lastTouchMoment < 300 && _i.click.call(this, t) }, pointerdown(t) { _i.mousedown.call(this, t) }, pointermove(t) { yi(t) || _i.mousemove.call(this, t) }, pointerup(t) { _i.mouseup.call(this, t) }, pointerout(t) { yi(t) || _i.mouseout.call(this, t) } }; E(['click', 'dblclick', 'contextmenu'], (t) => { _i[t] = function (e) { e = oe(this.dom, e), this.trigger(t, e) } }); var bi = { pointermove(t) { yi(t) || bi.mousemove.call(this, t) }, pointerup(t) { bi.mouseup.call(this, t) }, mousemove(t) { this.trigger('mousemove', t) }, mouseup(t) { const e = this.__pointerCapturing; this.__togglePointerCapture(!1), this.trigger('mouseup', t), e && (t.zrEventControl = 'only_globalout', this.trigger('mouseout', t)) } }; function Mi(t, e, n, i) { t.mounted[e] = n, t.listenerOpts[e] = i, ae(t.domTarget, e, n, i) } function Ii(t) { let e; let n; let i; let r; const o = t.mounted; for (const a in o)o.hasOwnProperty(a) && (e = t.domTarget, n = a, i = o[a], r = t.listenerOpts[a], e.removeEventListener(n, i, r)); t.mounted = {} } const Ti = function (t, e) { this.mounted = {}, this.listenerOpts = {}, this.touching = !1, this.domTarget = t, this.domHandlers = e }; const Ci = (function (t) { function e(e, n) { const i = t.call(this) || this; return i.__pointerCapturing = !1, i.dom = e, i.painterRoot = n, i._localHandlerScope = new Ti(e, _i), ci && (i._globalHandlerScope = new Ti(document, bi)), (function (t, e) { const n = e.domHandlers; r.pointerEventsSupported ? E(pi.pointer, (i) => { Mi(e, i, (e) => { n[i].call(t, e) }) }) : (r.touchEventsSupported && E(pi.touch, (i) => { Mi(e, i, (r) => { n[i].call(t, r), (function (t) { t.touching = !0, null != t.touchTimer && (clearTimeout(t.touchTimer), t.touchTimer = null), t.touchTimer = setTimeout(function(){t.touching=!1,t.touchTimer=null}, 700) }(e)) }) }), E(pi.mouse, (i) => { Mi(e, i, (r) => { r = re(r), e.touching || n[i].call(t, r) }) })) }(i, i._localHandlerScope)), i } return n(e, t), e.prototype.dispose = function () { Ii(this._localHandlerScope), ci && Ii(this._globalHandlerScope) }, e.prototype.setCursor = function (t) { this.dom.style && (this.dom.style.cursor = t || 'default') }, e.prototype.__togglePointerCapture = function (t) { if (this.__mayPointerCapture = null, ci && +this.__pointerCapturing ^ +t) { this.__pointerCapturing = t; const e = this._globalHandlerScope; t ? (function (t, e) { function n(n) { Mi(e, n, (i) => { i = re(i), mi(t, i.target) || (i = (function (t, e) { return oe(t.dom, new xi(t, e), !0) }(t, i)), e.domHandlers[n].call(t, i)) }, { capture: !0 }) }r.pointerEventsSupported ? E(fi, n) : r.touchEventsSupported || E(di, n) }(this, e)) : Ii(e) } }, e }(Xt)); let Di = 1; r.hasGlobalWindow && (Di = Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI || 1, 1)); const Ai = Di; const ki = '#333'; const Li = '#ccc'; function Oi(t) { return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t[4] = 0, t[5] = 0, t } function Ri(t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], t } function Ni(t, e, n) { const i = e[0] * n[0] + e[2] * n[1]; const r = e[1] * n[0] + e[3] * n[1]; const o = e[0] * n[2] + e[2] * n[3]; const a = e[1] * n[2] + e[3] * n[3]; const s = e[0] * n[4] + e[2] * n[5] + e[4]; const l = e[1] * n[4] + e[3] * n[5] + e[5]; return t[0] = i, t[1] = r, t[2] = o, t[3] = a, t[4] = s, t[5] = l, t } function Ei(t, e, n) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4] + n[0], t[5] = e[5] + n[1], t } function zi(t, e, n) { const i = e[0]; const r = e[2]; const o = e[4]; const a = e[1]; const s = e[3]; const l = e[5]; const u = Math.sin(n); const h = Math.cos(n); return t[0] = i * h + a * u, t[1] = -i * u + a * h, t[2] = r * h + s * u, t[3] = -r * u + h * s, t[4] = h * o + u * l, t[5] = h * l - u * o, t } function Vi(t, e, n) { const i = n[0]; const r = n[1]; return t[0] = e[0] * i, t[1] = e[1] * r, t[2] = e[2] * i, t[3] = e[3] * r, t[4] = e[4] * i, t[5] = e[5] * r, t } function Bi(t, e) { const n = e[0]; const i = e[2]; const r = e[4]; const o = e[1]; const a = e[3]; const s = e[5]; let l = n * a - o * i; return l ? (l = 1 / l, t[0] = a * l, t[1] = -o * l, t[2] = -i * l, t[3] = n * l, t[4] = (i * s - a * r) * l, t[5] = (o * r - n * s) * l, t) : null } function Fi(t) { const e = [1, 0, 0, 1, 0, 0]; return Ri(e, t), e } const Gi = Object.freeze({ __proto__: null, create() { return [1, 0, 0, 1, 0, 0] }, identity: Oi, copy: Ri, mul: Ni, translate: Ei, rotate: zi, scale: Vi, invert: Bi, clone: Fi }); const Wi = Oi; function Yi(t) { return t > 5e-5 || t < -5e-5 } const Ui = []; const Xi = []; const Zi = [1, 0, 0, 1, 0, 0]; const ji = Math.abs; const qi = (function () { + function t() {} return t.prototype.getLocalTransform = function (e) { return t.getLocalTransform(this, e) }, t.prototype.setPosition = function (t) { this.x = t[0], this.y = t[1] }, t.prototype.setScale = function (t) { this.scaleX = t[0], this.scaleY = t[1] }, t.prototype.setSkew = function (t) { this.skewX = t[0], this.skewY = t[1] }, t.prototype.setOrigin = function (t) { this.originX = t[0], this.originY = t[1] }, t.prototype.needLocalTransform = function () { return Yi(this.rotation) || Yi(this.x) || Yi(this.y) || Yi(this.scaleX - 1) || Yi(this.scaleY - 1) || Yi(this.skewX) || Yi(this.skewY) }, t.prototype.updateTransform = function () { const t = this.parent && this.parent.transform; const e = this.needLocalTransform(); let n = this.transform; e || t ? (n = n || [1, 0, 0, 1, 0, 0], e ? this.getLocalTransform(n) : Wi(n), t && (e ? Ni(n, t, n) : Ri(n, t)), this.transform = n, this._resolveGlobalScaleRatio(n)) : n && Wi(n) }, t.prototype._resolveGlobalScaleRatio = function (t) { const e = this.globalScaleRatio; if (e != null && e !== 1) { this.getGlobalScale(Ui); const n = Ui[0] < 0 ? -1 : 1; const i = Ui[1] < 0 ? -1 : 1; const r = ((Ui[0] - n) * e + n) / Ui[0] || 0; const o = ((Ui[1] - i) * e + i) / Ui[1] || 0; t[0] *= r, t[1] *= r, t[2] *= o, t[3] *= o } this.invTransform = this.invTransform || [1, 0, 0, 1, 0, 0], Bi(this.invTransform, t) }, t.prototype.getComputedTransform = function () { for (var t = this, e = []; t;)e.push(t), t = t.parent; for (;t = e.pop();)t.updateTransform(); return this.transform }, t.prototype.setLocalTransform = function (t) { if (t) { let e = t[0] * t[0] + t[1] * t[1]; let n = t[2] * t[2] + t[3] * t[3]; const i = Math.atan2(t[1], t[0]); const r = Math.PI / 2 + i - Math.atan2(t[3], t[2]); n = Math.sqrt(n) * Math.cos(r), e = Math.sqrt(e), this.skewX = r, this.skewY = 0, this.rotation = -i, this.x = +t[4], this.y = +t[5], this.scaleX = e, this.scaleY = n, this.originX = 0, this.originY = 0 } }, t.prototype.decomposeTransform = function () { if (this.transform) { const t = this.parent; let e = this.transform; t && t.transform && (Ni(Xi, t.invTransform, e), e = Xi); const n = this.originX; const i = this.originY; (n || i) && (Zi[4] = n, Zi[5] = i, Ni(Xi, e, Zi), Xi[4] -= n, Xi[5] -= i, e = Xi), this.setLocalTransform(e) } }, t.prototype.getGlobalScale = function (t) { const e = this.transform; return t = t || [], e ? (t[0] = Math.sqrt(e[0] * e[0] + e[1] * e[1]), t[1] = Math.sqrt(e[2] * e[2] + e[3] * e[3]), e[0] < 0 && (t[0] = -t[0]), e[3] < 0 && (t[1] = -t[1]), t) : (t[0] = 1, t[1] = 1, t) }, t.prototype.transformCoordToLocal = function (t, e) { const n = [t, e]; const i = this.invTransform; return i && Ft(n, n, i), n }, t.prototype.transformCoordToGlobal = function (t, e) { const n = [t, e]; const i = this.transform; return i && Ft(n, n, i), n }, t.prototype.getLineScale = function () { const t = this.transform; return t && ji(t[0] - 1) > 1e-10 && ji(t[3] - 1) > 1e-10 ? Math.sqrt(ji(t[0] * t[3] - t[2] * t[1])) : 1 }, t.prototype.copyTransform = function (t) { $i(this, t) }, t.getLocalTransform = function (t, e) { + e = e || []; const n = t.originX || 0; const i = t.originY || 0; const r = t.scaleX; const o = t.scaleY; const a = t.anchorX; const s = t.anchorY; const l = t.rotation || 0; const u = t.x; const h = t.y; const c = t.skewX ? Math.tan(t.skewX) : 0; const p = t.skewY ? Math.tan(-t.skewY) : 0; if (n || i || a || s) { const d = n + a; const f = i + s; e[4] = -d * r - c * f * o, e[5] = -f * o - p * d * r } + else { + e[4] = e[5] = 0 + } return e[0] = r, e[3] = o, e[1] = p * r, e[2] = c * o, l && zi(e, e, l), e[4] += n + u, e[5] += i + h, e + }, t.initDefaultProps = (function () { const e = t.prototype; e.scaleX = e.scaleY = e.globalScaleRatio = 1, e.x = e.y = e.originX = e.originY = e.skewX = e.skewY = e.rotation = e.anchorX = e.anchorY = 0 }()), t + }()); const Ki = ['x', 'y', 'originX', 'originY', 'anchorX', 'anchorY', 'rotation', 'scaleX', 'scaleY', 'skewX', 'skewY']; function $i(t, e) { for (let n = 0; n < Ki.length; n++) { const i = Ki[n]; t[i] = e[i] } } const Ji = (function () { function t(t, e) { this.x = t || 0, this.y = e || 0 } return t.prototype.copy = function (t) { return this.x = t.x, this.y = t.y, this }, t.prototype.clone = function () { return new t(this.x, this.y) }, t.prototype.set = function (t, e) { return this.x = t, this.y = e, this }, t.prototype.equal = function (t) { return t.x === this.x && t.y === this.y }, t.prototype.add = function (t) { return this.x += t.x, this.y += t.y, this }, t.prototype.scale = function (t) { this.x *= t, this.y *= t }, t.prototype.scaleAndAdd = function (t, e) { this.x += t.x * e, this.y += t.y * e }, t.prototype.sub = function (t) { return this.x -= t.x, this.y -= t.y, this }, t.prototype.dot = function (t) { return this.x * t.x + this.y * t.y }, t.prototype.len = function () { return Math.sqrt(this.x * this.x + this.y * this.y) }, t.prototype.lenSquare = function () { return this.x * this.x + this.y * this.y }, t.prototype.normalize = function () { const t = this.len(); return this.x /= t, this.y /= t, this }, t.prototype.distance = function (t) { const e = this.x - t.x; const n = this.y - t.y; return Math.sqrt(e * e + n * n) }, t.prototype.distanceSquare = function (t) { const e = this.x - t.x; const n = this.y - t.y; return e * e + n * n }, t.prototype.negate = function () { return this.x = -this.x, this.y = -this.y, this }, t.prototype.transform = function (t) { if (t) { const e = this.x; const n = this.y; return this.x = t[0] * e + t[2] * n + t[4], this.y = t[1] * e + t[3] * n + t[5], this } }, t.prototype.toArray = function (t) { return t[0] = this.x, t[1] = this.y, t }, t.prototype.fromArray = function (t) { this.x = t[0], this.y = t[1] }, t.set = function (t, e, n) { t.x = e, t.y = n }, t.copy = function (t, e) { t.x = e.x, t.y = e.y }, t.len = function (t) { return Math.sqrt(t.x * t.x + t.y * t.y) }, t.lenSquare = function (t) { return t.x * t.x + t.y * t.y }, t.dot = function (t, e) { return t.x * e.x + t.y * e.y }, t.add = function (t, e, n) { t.x = e.x + n.x, t.y = e.y + n.y }, t.sub = function (t, e, n) { t.x = e.x - n.x, t.y = e.y - n.y }, t.scale = function (t, e, n) { t.x = e.x * n, t.y = e.y * n }, t.scaleAndAdd = function (t, e, n, i) { t.x = e.x + n.x * i, t.y = e.y + n.y * i }, t.lerp = function (t, e, n, i) { const r = 1 - i; t.x = r * e.x + i * n.x, t.y = r * e.y + i * n.y }, t }()); const Qi = Math.min; const tr = Math.max; const er = new Ji(); const nr = new Ji(); const ir = new Ji(); const rr = new Ji(); const or = new Ji(); const ar = new Ji(); const sr = (function () { + function t(t, e, n, i) { n < 0 && (t += n, n = -n), i < 0 && (e += i, i = -i), this.x = t, this.y = e, this.width = n, this.height = i } return t.prototype.union = function (t) { const e = Qi(t.x, this.x); const n = Qi(t.y, this.y); isFinite(this.x) && isFinite(this.width) ? this.width = tr(t.x + t.width, this.x + this.width) - e : this.width = t.width, isFinite(this.y) && isFinite(this.height) ? this.height = tr(t.y + t.height, this.y + this.height) - n : this.height = t.height, this.x = e, this.y = n }, t.prototype.applyTransform = function (e) { t.applyTransform(this, this, e) }, t.prototype.calculateTransform = function (t) { const e = this; const n = t.width / e.width; const i = t.height / e.height; const r = [1, 0, 0, 1, 0, 0]; return Ei(r, r, [-e.x, -e.y]), Vi(r, r, [n, i]), Ei(r, r, [t.x, t.y]), r }, t.prototype.intersect = function (e, n) { + if (!e) + return !1; e instanceof t || (e = t.create(e)); const i = this; const r = i.x; const o = i.x + i.width; const a = i.y; const s = i.y + i.height; const l = e.x; const u = e.x + e.width; const h = e.y; const c = e.y + e.height; const p = !(o < l || u < r || s < h || c < a); if (n) { let d = 1 / 0; let f = 0; const g = Math.abs(o - l); const y = Math.abs(u - r); const v = Math.abs(s - h); const m = Math.abs(c - a); const x = Math.min(g, y); const _ = Math.min(v, m); o < l || u < r ? x > f && (f = x, g < y ? Ji.set(ar, -g, 0) : Ji.set(ar, y, 0)) : x < d && (d = x, g < y ? Ji.set(or, g, 0) : Ji.set(or, -y, 0)), s < h || c < a ? _ > f && (f = _, v < m ? Ji.set(ar, 0, -v) : Ji.set(ar, 0, m)) : x < d && (d = x, v < m ? Ji.set(or, 0, v) : Ji.set(or, 0, -m)) } return n && Ji.copy(n, p ? or : ar), p + }, t.prototype.contain = function (t, e) { const n = this; return t >= n.x && t <= n.x + n.width && e >= n.y && e <= n.y + n.height }, t.prototype.clone = function () { return new t(this.x, this.y, this.width, this.height) }, t.prototype.copy = function (e) { t.copy(this, e) }, t.prototype.plain = function () { return { x: this.x, y: this.y, width: this.width, height: this.height } }, t.prototype.isFinite = function () { return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height) }, t.prototype.isZero = function () { return this.width === 0 || this.height === 0 }, t.create = function (e) { return new t(e.x, e.y, e.width, e.height) }, t.copy = function (t, e) { t.x = e.x, t.y = e.y, t.width = e.width, t.height = e.height }, t.applyTransform = function (e, n, i) { + if (i) { if (i[1] < 1e-5 && i[1] > -1e-5 && i[2] < 1e-5 && i[2] > -1e-5) { const r = i[0]; const o = i[3]; const a = i[4]; const s = i[5]; return e.x = n.x * r + a, e.y = n.y * o + s, e.width = n.width * r, e.height = n.height * o, e.width < 0 && (e.x += e.width, e.width = -e.width), void (e.height < 0 && (e.y += e.height, e.height = -e.height)) }er.x = ir.x = n.x, er.y = rr.y = n.y, nr.x = rr.x = n.x + n.width, nr.y = ir.y = n.y + n.height, er.transform(i), rr.transform(i), nr.transform(i), ir.transform(i), e.x = Qi(er.x, nr.x, ir.x, rr.x), e.y = Qi(er.y, nr.y, ir.y, rr.y); const l = tr(er.x, nr.x, ir.x, rr.x); const u = tr(er.y, nr.y, ir.y, rr.y); e.width = l - e.x, e.height = u - e.y } + else { + e !== n && t.copy(e, n) + } + }, t + }()); const lr = {}; function ur(t, e) { let n = lr[e = e || a]; n || (n = lr[e] = new ln(500)); let i = n.get(t); return i == null && (i = h.measureText(t, e).width, n.put(t, i)), i } function hr(t, e, n, i) { const r = ur(t, e); const o = fr(e); const a = pr(0, r, n); const s = dr(0, o, i); return new sr(a, s, r, o) } function cr(t, e, n, i) { + const r = (`${t || ''}`).split('\n'); if (r.length === 1) + return hr(r[0], e, n, i); for (var o = new sr(0, 0, 0, 0), a = 0; a < r.length; a++) { const s = hr(r[a], e, n, i); a === 0 ? o.copy(s) : o.union(s) } return o + } function pr(t, e, n) { return n === 'right' ? t -= e : n === 'center' && (t -= e / 2), t } function dr(t, e, n) { return n === 'middle' ? t -= e / 2 : n === 'bottom' && (t -= e), t } function fr(t) { return ur('国', t) } function gr(t, e) { return typeof t == 'string' ? t.includes('%') ? Number.parseFloat(t) / 100 * e : Number.parseFloat(t) : t } function yr(t, e, n) { + const i = e.position || 'inside'; const r = e.distance != null ? e.distance : 5; const o = n.height; const a = n.width; const s = o / 2; let l = n.x; let u = n.y; let h = 'left'; let c = 'top'; if (Array.isArray(i)) + l += gr(i[0], n.width), u += gr(i[1], n.height), h = null, c = null; else switch (i) { case 'left':l -= r, u += s, h = 'right', c = 'middle'; break; case 'right':l += r + a, u += s, c = 'middle'; break; case 'top':l += a / 2, u -= r, h = 'center', c = 'bottom'; break; case 'bottom':l += a / 2, u += o + r, h = 'center'; break; case 'inside':l += a / 2, u += s, h = 'center', c = 'middle'; break; case 'insideLeft':l += r, u += s, c = 'middle'; break; case 'insideRight':l += a - r, u += s, h = 'right', c = 'middle'; break; case 'insideTop':l += a / 2, u += r, h = 'center'; break; case 'insideBottom':l += a / 2, u += o - r, h = 'center', c = 'bottom'; break; case 'insideTopLeft':l += r, u += r; break; case 'insideTopRight':l += a - r, u += r, h = 'right'; break; case 'insideBottomLeft':l += r, u += o - r, c = 'bottom'; break; case 'insideBottomRight':l += a - r, u += o - r, h = 'right', c = 'bottom' } return (t = t || {}).x = l, t.y = u, t.align = h, t.verticalAlign = c, t + } const vr = '__zr_normal__'; const mr = Ki.concat(['ignore']); const xr = V(Ki, (t, e) => { return t[e] = !0, t }, { ignore: !1 }); const _r = {}; const br = new sr(0, 0, 0, 0); const wr = (function () { + function t(t) { this.id = M(), this.animators = [], this.currentStates = [], this.states = {}, this._init(t) } return t.prototype._init = function (t) { this.attr(t) }, t.prototype.drift = function (t, e, n) { switch (this.draggable) { case 'horizontal':e = 0; break; case 'vertical':t = 0 } let i = this.transform; i || (i = this.transform = [1, 0, 0, 1, 0, 0]), i[4] += t, i[5] += e, this.decomposeTransform(), this.markRedraw() }, t.prototype.beforeUpdate = function () {}, t.prototype.afterUpdate = function () {}, t.prototype.update = function () { this.updateTransform(), this.__dirty && this.updateInnerText() }, t.prototype.updateInnerText = function (t) { const e = this._textContent; if (e && (!e.ignore || t)) { this.textConfig || (this.textConfig = {}); const n = this.textConfig; const i = n.local; const r = e.innerTransformable; let o = void 0; let a = void 0; let s = !1; r.parent = i ? this : null; let l = !1; if (r.copyTransform(e), n.position != null) { const u = br; n.layoutRect ? u.copy(n.layoutRect) : u.copy(this.getBoundingRect()), i || u.applyTransform(this.transform), this.calculateTextPosition ? this.calculateTextPosition(_r, n, u) : yr(_r, n, u), r.x = _r.x, r.y = _r.y, o = _r.align, a = _r.verticalAlign; const h = n.origin; if (h && n.rotation != null) { let c = void 0; let p = void 0; h === 'center' ? (c = 0.5 * u.width, p = 0.5 * u.height) : (c = gr(h[0], u.width), p = gr(h[1], u.height)), l = !0, r.originX = -r.x + c + (i ? 0 : u.x), r.originY = -r.y + p + (i ? 0 : u.y) } }n.rotation != null && (r.rotation = n.rotation); const d = n.offset; d && (r.x += d[0], r.y += d[1], l || (r.originX = -d[0], r.originY = -d[1])); const f = n.inside == null ? typeof n.position == 'string' && n.position.includes('inside') : n.inside; const g = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {}); let y = void 0; let v = void 0; let m = void 0; f && this.canBeInsideText() ? (y = n.insideFill, v = n.insideStroke, y != null && y !== 'auto' || (y = this.getInsideTextFill()), v != null && v !== 'auto' || (v = this.getInsideTextStroke(y), m = !0)) : (y = n.outsideFill, v = n.outsideStroke, y != null && y !== 'auto' || (y = this.getOutsideFill()), v != null && v !== 'auto' || (v = this.getOutsideStroke(y), m = !0)), (y = y || '#000') === g.fill && v === g.stroke && m === g.autoStroke && o === g.align && a === g.verticalAlign || (s = !0, g.fill = y, g.stroke = v, g.autoStroke = m, g.align = o, g.verticalAlign = a, e.setDefaultTextStyle(g)), e.__dirty |= 1, s && e.dirtyStyle(!0) } }, t.prototype.canBeInsideText = function () { return !0 }, t.prototype.getInsideTextFill = function () { return '#fff' }, t.prototype.getInsideTextStroke = function (t) { return '#000' }, t.prototype.getOutsideFill = function () { return this.__zr && this.__zr.isDarkMode() ? Li : ki }, t.prototype.getOutsideStroke = function (t) { const e = this.__zr && this.__zr.getBackgroundColor(); let n = typeof e == 'string' && bn(e); n || (n = [255, 255, 255, 1]); for (let i = n[3], r = this.__zr.isDarkMode(), o = 0; o < 3; o++)n[o] = n[o] * i + (r ? 0 : 255) * (1 - i); return n[3] = 1, kn(n, 'rgba') }, t.prototype.traverse = function (t, e) {}, t.prototype.attrKV = function (t, e) { t === 'textConfig' ? this.setTextConfig(e) : t === 'textContent' ? this.setTextContent(e) : t === 'clipPath' ? this.setClipPath(e) : t === 'extra' ? (this.extra = this.extra || {}, A(this.extra, e)) : this[t] = e }, t.prototype.hide = function () { this.ignore = !0, this.markRedraw() }, t.prototype.show = function () { this.ignore = !1, this.markRedraw() }, t.prototype.attr = function (t, e) { + if (typeof t == 'string') { + this.attrKV(t, e) + } + else if (q(t)) { + for (let n = G(t), i = 0; i < n.length; i++) { const r = n[i]; this.attrKV(r, t[r]) } + } return this.markRedraw(), this + }, t.prototype.saveCurrentToNormalState = function (t) { this._innerSaveToNormal(t); for (let e = this._normalState, n = 0; n < this.animators.length; n++) { const i = this.animators[n]; const r = i.__fromStateTransition; if (!(i.getLoop() || r && r !== vr)) { const o = i.targetName; const a = o ? e[o] : e; i.saveTo(a) } } }, t.prototype._innerSaveToNormal = function (t) { let e = this._normalState; e || (e = this._normalState = {}), t.textConfig && !e.textConfig && (e.textConfig = this.textConfig), this._savePrimaryToNormal(t, e, mr) }, t.prototype._savePrimaryToNormal = function (t, e, n) { for (let i = 0; i < n.length; i++) { const r = n[i]; t[r] == null || r in e || (e[r] = this[r]) } }, t.prototype.hasState = function () { return this.currentStates.length > 0 }, t.prototype.getState = function (t) { return this.states[t] }, t.prototype.ensureState = function (t) { const e = this.states; return e[t] || (e[t] = {}), e[t] }, t.prototype.clearStates = function (t) { this.useState(vr, !1, t) }, t.prototype.useState = function (t, e, n, i) { const r = t === vr; if (this.hasState() || !r) { const o = this.currentStates; const a = this.stateTransition; if (!(P(o, t) >= 0) || !e && o.length !== 1) { let s; if (this.stateProxy && !r && (s = this.stateProxy(t)), s || (s = this.states && this.states[t]), s || r) { r || this.saveCurrentToNormalState(s); const l = !!(s && s.hoverLayer || i); l && this._toggleHoverLayerFlag(!0), this._applyStateObj(t, s, this._normalState, e, !n && !this.__inHover && a && a.duration > 0, a); const u = this._textContent; const h = this._textGuide; return u && u.useState(t, e, n, l), h && h.useState(t, e, n, l), r ? (this.currentStates = [], this._normalState = {}) : e ? this.currentStates.push(t) : this.currentStates = [t], this._updateAnimationTargets(), this.markRedraw(), !l && this.__inHover && (this._toggleHoverLayerFlag(!1), this.__dirty &= -2), s }I(`State ${t} not exists.`) } } }, t.prototype.useStates = function (t, e, n) { + if (t.length) { + const i = []; const r = this.currentStates; const o = t.length; let a = o === r.length; if (a) { + for (var s = 0; s < o; s++) { + if (t[s] !== r[s]) { a = !1; break } + } + } if (a) + return; for (s = 0; s < o; s++) { const l = t[s]; let u = void 0; this.stateProxy && (u = this.stateProxy(l, t)), u || (u = this.states[l]), u && i.push(u) } const h = i[o - 1]; const c = !!(h && h.hoverLayer || n); c && this._toggleHoverLayerFlag(!0); const p = this._mergeStates(i); const d = this.stateTransition; this.saveCurrentToNormalState(p), this._applyStateObj(t.join(','), p, this._normalState, !1, !e && !this.__inHover && d && d.duration > 0, d); const f = this._textContent; const g = this._textGuide; f && f.useStates(t, e, c), g && g.useStates(t, e, c), this._updateAnimationTargets(), this.currentStates = t.slice(), this.markRedraw(), !c && this.__inHover && (this._toggleHoverLayerFlag(!1), this.__dirty &= -2) + } + else { + this.clearStates() + } + }, t.prototype._updateAnimationTargets = function () { for (let t = 0; t < this.animators.length; t++) { const e = this.animators[t]; e.targetName && e.changeTarget(this[e.targetName]) } }, t.prototype.removeState = function (t) { const e = P(this.currentStates, t); if (e >= 0) { const n = this.currentStates.slice(); n.splice(e, 1), this.useStates(n) } }, t.prototype.replaceState = function (t, e, n) { const i = this.currentStates.slice(); const r = P(i, t); const o = P(i, e) >= 0; r >= 0 ? o ? i.splice(r, 1) : i[r] = e : n && !o && i.push(e), this.useStates(i) }, t.prototype.toggleState = function (t, e) { e ? this.useState(t, !0) : this.removeState(t) }, t.prototype._mergeStates = function (t) { for (var e, n = {}, i = 0; i < t.length; i++) { const r = t[i]; A(n, r), r.textConfig && A(e = e || {}, r.textConfig) } return e && (n.textConfig = e), n }, t.prototype._applyStateObj = function (t, e, n, i, r, o) { + const a = !(e && i); e && e.textConfig ? (this.textConfig = A({}, i ? this.textConfig : n.textConfig), A(this.textConfig, e.textConfig)) : a && n.textConfig && (this.textConfig = n.textConfig); for (var s = {}, l = !1, u = 0; u < mr.length; u++) { const h = mr[u]; const c = r && xr[h]; e && e[h] != null ? c ? (l = !0, s[h] = e[h]) : this[h] = e[h] : a && n[h] != null && (c ? (l = !0, s[h] = n[h]) : this[h] = n[h]) } if (!r) { + for (u = 0; u < this.animators.length; u++) { const p = this.animators[u]; const d = p.targetName; p.getLoop() || p.__changeFinalValue(d ? (e || n)[d] : e || n) } + }l && this._transitionState(t, s, o) + }, t.prototype._attachComponent = function (t) { if ((!t.__zr || t.__hostTarget) && t !== this) { const e = this.__zr; e && t.addSelfToZr(e), t.__zr = e, t.__hostTarget = this } }, t.prototype._detachComponent = function (t) { t.__zr && t.removeSelfFromZr(t.__zr), t.__zr = null, t.__hostTarget = null }, t.prototype.getClipPath = function () { return this._clipPath }, t.prototype.setClipPath = function (t) { this._clipPath && this._clipPath !== t && this.removeClipPath(), this._attachComponent(t), this._clipPath = t, this.markRedraw() }, t.prototype.removeClipPath = function () { const t = this._clipPath; t && (this._detachComponent(t), this._clipPath = null, this.markRedraw()) }, t.prototype.getTextContent = function () { return this._textContent }, t.prototype.setTextContent = function (t) { const e = this._textContent; e !== t && (e && e !== t && this.removeTextContent(), t.innerTransformable = new qi(), this._attachComponent(t), this._textContent = t, this.markRedraw()) }, t.prototype.setTextConfig = function (t) { this.textConfig || (this.textConfig = {}), A(this.textConfig, t), this.markRedraw() }, t.prototype.removeTextConfig = function () { this.textConfig = null, this.markRedraw() }, t.prototype.removeTextContent = function () { const t = this._textContent; t && (t.innerTransformable = null, this._detachComponent(t), this._textContent = null, this._innerTextDefaultStyle = null, this.markRedraw()) }, t.prototype.getTextGuideLine = function () { return this._textGuide }, t.prototype.setTextGuideLine = function (t) { this._textGuide && this._textGuide !== t && this.removeTextGuideLine(), this._attachComponent(t), this._textGuide = t, this.markRedraw() }, t.prototype.removeTextGuideLine = function () { const t = this._textGuide; t && (this._detachComponent(t), this._textGuide = null, this.markRedraw()) }, t.prototype.markRedraw = function () { this.__dirty |= 1; const t = this.__zr; t && (this.__inHover ? t.refreshHover() : t.refresh()), this.__hostTarget && this.__hostTarget.markRedraw() }, t.prototype.dirty = function () { this.markRedraw() }, t.prototype._toggleHoverLayerFlag = function (t) { this.__inHover = t; const e = this._textContent; const n = this._textGuide; e && (e.__inHover = t), n && (n.__inHover = t) }, t.prototype.addSelfToZr = function (t) { + if (this.__zr !== t) { + this.__zr = t; const e = this.animators; if (e) { + for (let n = 0; n < e.length; n++)t.animation.addAnimator(e[n]) + } this._clipPath && this._clipPath.addSelfToZr(t), this._textContent && this._textContent.addSelfToZr(t), this._textGuide && this._textGuide.addSelfToZr(t) + } + }, t.prototype.removeSelfFromZr = function (t) { + if (this.__zr) { + this.__zr = null; const e = this.animators; if (e) { + for (let n = 0; n < e.length; n++)t.animation.removeAnimator(e[n]) + } this._clipPath && this._clipPath.removeSelfFromZr(t), this._textContent && this._textContent.removeSelfFromZr(t), this._textGuide && this._textGuide.removeSelfFromZr(t) + } + }, t.prototype.animate = function (t, e, n) { const i = t ? this[t] : this; const r = new ai(i, e, n); return t && (r.targetName = t), this.addAnimator(r, t), r }, t.prototype.addAnimator = function (t, e) { const n = this.__zr; const i = this; t.during(() => { i.updateDuringAnimation(e) }).done(() => { const e = i.animators; const n = P(e, t); n >= 0 && e.splice(n, 1) }), this.animators.push(t), n && n.animation.addAnimator(t), n && n.wakeUp() }, t.prototype.updateDuringAnimation = function (t) { this.markRedraw() }, t.prototype.stopAnimation = function (t, e) { for (var n = this.animators, i = n.length, r = [], o = 0; o < i; o++) { const a = n[o]; t && t !== a.scope ? r.push(a) : a.stop(e) } return this.animators = r, this }, t.prototype.animateTo = function (t, e, n) { Sr(this, t, e, n) }, t.prototype.animateFrom = function (t, e, n) { Sr(this, t, e, n, !0) }, t.prototype._transitionState = function (t, e, n, i) { for (let r = Sr(this, e, n, i), o = 0; o < r.length; o++)r[o].__fromStateTransition = t }, t.prototype.getBoundingRect = function () { return null }, t.prototype.getPaintRect = function () { return null }, t.initDefaultProps = (function () { const e = t.prototype; function n(t, n, i, r) { function o(t, e) { Object.defineProperty(e, 0, { get() { return t[i] }, set(e) { t[i] = e } }), Object.defineProperty(e, 1, { get() { return t[r] }, set(e) { t[r] = e } }) }Object.defineProperty(e, t, { get() { return this[n] || o(this, this[n] = []), this[n] }, set(t) { this[i] = t[0], this[r] = t[1], this[n] = t, o(this, t) } }) }e.type = 'element', e.name = '', e.ignore = e.silent = e.isGroup = e.draggable = e.dragging = e.ignoreClip = e.__inHover = !1, e.__dirty = 1, Object.defineProperty && (n('position', '_legacyPos', 'x', 'y'), n('scale', '_legacyScale', 'scaleX', 'scaleY'), n('origin', '_legacyOrigin', 'originX', 'originY')) }()), t + }()); function Sr(t, e, n, i, r) { const o = []; Tr(t, '', t, e, n = n || {}, i, o, r); let a = o.length; let s = !1; const l = n.done; const u = n.aborted; const h = function () { s = !0, --a <= 0 && (s ? l && l() : u && u()) }; const c = function () { --a <= 0 && (s ? l && l() : u && u()) }; a || l && l(), o.length > 0 && n.during && o[0].during((t, e) => { n.during(e) }); for (let p = 0; p < o.length; p++) { const d = o[p]; h && d.done(h), c && d.aborted(c), n.force && d.duration(n.duration), d.start(n.easing) } return o } function Mr(t, e, n) { for (let i = 0; i < n; i++)t[i] = e[i] } function Ir(t, e, n) { + if (N(e[n])) { + if (N(t[n]) || (t[n] = []), $(e[n])) { const i = e[n].length; t[n].length !== i && (t[n] = new e[n].constructor(i), Mr(t[n], e[n], i)) } + else { + const r = e[n]; const o = t[n]; const a = r.length; if (N(r[0])) { + for (let s = r[0].length, l = 0; l < a; l++)o[l] ? Mr(o[l], r[l], s) : o[l] = Array.prototype.slice.call(r[l]) + } + else { + Mr(o, r, a) + }o.length = r.length + } + } + else { + t[n] = e[n] + } + } function Tr(t, e, n, i, r, o, a, s) { + for (var l = G(i), u = r.duration, h = r.delay, c = r.additive, p = r.setToFinal, d = !q(o), f = t.animators, g = [], y = 0; y < l.length; y++) { + var v = l[y]; const m = i[v]; if (m != null && n[v] != null && (d || o[v])) { + if (!q(m) || N(m) || Q(m)) { + g.push(v) + } + else { if (e) { s || (n[v] = m, t.updateDuringAnimation(e)); continue }Tr(t, v, n[v], m, r, o && o[v], a, s) } + } + else { + s || (n[v] = m, t.updateDuringAnimation(e), g.push(v)) + } + } let x = g.length; if (!c && x) { + for (var _ = 0; _ < f.length; _++) { + if ((w = f[_]).targetName === e && w.stopTracks(g)) { const b = P(f, w); f.splice(b, 1) } + } + } if (r.force || (x = (g = B(g, (t) => { + return !((e = i[t]) === (r = n[t]) || N(e) && N(r) && (function (t, e) { + const n = t.length; if (n !== e.length) + return !1; for (let i = 0; i < n; i++) { + if (t[i] !== e[i]) + return !1 + } return !0 + }(e, r))); let e, r + })).length), x > 0 || r.force && !a.length) { + var w; let S = void 0; let M = void 0; let I = void 0; if (s) { + for (M = {}, p && (S = {}), _ = 0; _ < x; _++)M[v = g[_]] = n[v], p ? S[v] = i[v] : n[v] = i[v] + } + else if (p) { + for (I = {}, _ = 0; _ < x; _++)I[v = g[_]] = ti(n[v]), Ir(n, i, v) + } (w = new ai(n, !1, !1, c ? B(f, (t) => { return t.targetName === e }) : null)).targetName = e, r.scope && (w.scope = r.scope), p && S && w.whenWithKeys(0, S, g), I && w.whenWithKeys(0, I, g), w.whenWithKeys(u == null ? 500 : u, s ? M : i, g).delay(h || 0), t.addAnimator(w, e), a.push(w) + } + }R(wr, Xt), R(wr, qi); const Cr = (function (t) { + function e(e) { const n = t.call(this) || this; return n.isGroup = !0, n._children = [], n.attr(e), n } return n(e, t), e.prototype.childrenRef = function () { return this._children }, e.prototype.children = function () { return this._children.slice() }, e.prototype.childAt = function (t) { return this._children[t] }, e.prototype.childOfName = function (t) { + for (let e = this._children, n = 0; n < e.length; n++) { + if (e[n].name === t) + return e[n] + } + }, e.prototype.childCount = function () { return this._children.length }, e.prototype.add = function (t) { return t && t !== this && t.parent !== this && (this._children.push(t), this._doAdd(t)), this }, e.prototype.addBefore = function (t, e) { if (t && t !== this && t.parent !== this && e && e.parent === this) { const n = this._children; const i = n.indexOf(e); i >= 0 && (n.splice(i, 0, t), this._doAdd(t)) } return this }, e.prototype.replace = function (t, e) { const n = P(this._children, t); return n >= 0 && this.replaceAt(e, n), this }, e.prototype.replaceAt = function (t, e) { const n = this._children; const i = n[e]; if (t && t !== this && t.parent !== this && t !== i) { n[e] = t, i.parent = null; const r = this.__zr; r && i.removeSelfFromZr(r), this._doAdd(t) } return this }, e.prototype._doAdd = function (t) { t.parent && t.parent.remove(t), t.parent = this; const e = this.__zr; e && e !== t.__zr && t.addSelfToZr(e), e && e.refresh() }, e.prototype.remove = function (t) { const e = this.__zr; const n = this._children; const i = P(n, t); return i < 0 || (n.splice(i, 1), t.parent = null, e && t.removeSelfFromZr(e), e && e.refresh()), this }, e.prototype.removeAll = function () { for (var t = this._children, e = this.__zr, n = 0; n < t.length; n++) { const i = t[n]; e && i.removeSelfFromZr(e), i.parent = null } return t.length = 0, this }, e.prototype.eachChild = function (t, e) { for (let n = this._children, i = 0; i < n.length; i++) { const r = n[i]; t.call(e, r, i) } return this }, e.prototype.traverse = function (t, e) { for (let n = 0; n < this._children.length; n++) { const i = this._children[n]; const r = t.call(e, i); i.isGroup && !r && i.traverse(t, e) } return this }, e.prototype.addSelfToZr = function (e) { t.prototype.addSelfToZr.call(this, e); for (let n = 0; n < this._children.length; n++) this._children[n].addSelfToZr(e) }, e.prototype.removeSelfFromZr = function (e) { t.prototype.removeSelfFromZr.call(this, e); for (let n = 0; n < this._children.length; n++) this._children[n].removeSelfFromZr(e) }, e.prototype.getBoundingRect = function (t) { for (var e = new sr(0, 0, 0, 0), n = t || this._children, i = [], r = null, o = 0; o < n.length; o++) { const a = n[o]; if (!a.ignore && !a.invisible) { const s = a.getBoundingRect(); const l = a.getLocalTransform(i); l ? (sr.applyTransform(e, s, l), (r = r || e.clone()).union(e)) : (r = r || s.clone()).union(s) } } return r || e }, e + }(wr)); Cr.prototype.type = 'group' + /*! * ZRender, a high performance 2d drawing library. * * Copyright (c) 2013, Baidu Inc. @@ -22,4 +614,4586 @@ * LICENSE * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt */ -var Dr={},Ar={},kr=function(){function t(t,e,n){var i=this;this._sleepAfterStill=10,this._stillFrameAccum=0,this._needsRefresh=!0,this._needsRefreshHover=!0,this._darkMode=!1,n=n||{},this.dom=e,this.id=t;var o=new Ae,a=n.renderer||"canvas";Dr[a]||(a=G(Dr)[0]),n.useDirtyRect=null!=n.useDirtyRect&&n.useDirtyRect;var s=new Dr[a](e,o,n,t),l=n.ssr||s.ssrOnly;this.storage=o,this.painter=s;var u=r.node||r.worker||l?null:new Ci(s.getViewportRoot(),s.root);this.handler=new ve(o,s,u,s.root),this.animation=new hi({stage:{update:l?null:function(){return i._flush(!0)}}}),l||this.animation.start()}return t.prototype.add=function(t){t&&(this.storage.addRoot(t),t.addSelfToZr(this),this.refresh())},t.prototype.remove=function(t){t&&(this.storage.delRoot(t),t.removeSelfFromZr(this),this.refresh())},t.prototype.configLayer=function(t,e){this.painter.configLayer&&this.painter.configLayer(t,e),this.refresh()},t.prototype.setBackgroundColor=function(t){this.painter.setBackgroundColor&&this.painter.setBackgroundColor(t),this.refresh(),this._backgroundColor=t,this._darkMode=function(t){if(!t)return!1;if("string"==typeof t)return Ln(t,1)<.4;if(t.colorStops){for(var e=t.colorStops,n=0,i=e.length,r=0;r0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},t.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},t.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},t.prototype.refreshHover=function(){this._needsRefreshHover=!0},t.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover()},t.prototype.resize=function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},t.prototype.clearAnimation=function(){this.animation.clear()},t.prototype.getWidth=function(){return this.painter.getWidth()},t.prototype.getHeight=function(){return this.painter.getHeight()},t.prototype.setCursorStyle=function(t){this.handler.setCursorStyle(t)},t.prototype.findHover=function(t,e){return this.handler.findHover(t,e)},t.prototype.on=function(t,e,n){return this.handler.on(t,e,n),this},t.prototype.off=function(t,e){this.handler.off(t,e)},t.prototype.trigger=function(t,e){this.handler.trigger(t,e)},t.prototype.clear=function(){for(var t=this.storage.getRoots(),e=0;e0){if(t<=r)return a;if(t>=o)return s}else{if(t>=r)return a;if(t<=o)return s}else{if(t===r)return a;if(t===o)return s}return(t-r)/l*u+a}function Er(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return X(t)?(n=t,n.replace(/^\s+|\s+$/g,"")).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t;var n}function zr(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t}function Vr(t){return t.sort((function(t,e){return t-e})),t}function Br(t){if(t=+t,isNaN(t))return 0;if(t>1e-14)for(var e=1,n=0;n<15;n++,e*=10)if(Math.round(t*e)/e===t)return n;return Fr(t)}function Fr(t){var e=t.toString().toLowerCase(),n=e.indexOf("e"),i=n>0?+e.slice(n+1):0,r=n>0?n:e.length,o=e.indexOf("."),a=o<0?0:r-1-o;return Math.max(0,a-i)}function Gr(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),o=Math.round(n(Math.abs(e[1]-e[0]))/i),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20}function Wr(t,e,n){if(!t[e])return 0;var i=V(t,(function(t,e){return t+(isNaN(e)?0:e)}),0);if(0===i)return 0;for(var r=Math.pow(10,n),o=z(t,(function(t){return(isNaN(t)?0:t)/i*r*100})),a=100*r,s=z(o,(function(t){return Math.floor(t)})),l=V(s,(function(t,e){return t+e}),0),u=z(o,(function(t,e){return t-s[e]}));lh&&(h=u[p],c=p);++s[c],u[c]=0,++l}return s[e]/r}function Hr(t,e){var n=Math.max(Br(t),Br(e)),i=t+e;return n>20?i:zr(i,n)}var Yr=9007199254740991;function Ur(t){var e=2*Math.PI;return(t%e+e)%e}function Xr(t){return t>-1e-4&&t<1e-4}var Zr=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;function jr(t){if(t instanceof Date)return t;if(X(t)){var e=Zr.exec(t);if(!e)return new Date(NaN);if(e[8]){var n=+e[4]||0;return"Z"!==e[8].toUpperCase()&&(n-=+e[8].slice(0,3)),new Date(Date.UTC(+e[1],+(e[2]||1)-1,+e[3]||1,n,+(e[5]||0),+e[6]||0,e[7]?+e[7].substring(0,3):0))}return new Date(+e[1],+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0),+e[6]||0,e[7]?+e[7].substring(0,3):0)}return null==t?new Date(NaN):new Date(Math.round(t))}function qr(t){return Math.pow(10,Kr(t))}function Kr(t){if(0===t)return 0;var e=Math.floor(Math.log(t)/Math.LN10);return t/Math.pow(10,e)>=10&&e++,e}function $r(t,e){var n=Kr(t),i=Math.pow(10,n),r=t/i;return t=(e?r<1.5?1:r<2.5?2:r<4?3:r<7?5:10:r<1?1:r<2?2:r<3?3:r<5?5:10)*i,n>=-20?+t.toFixed(n<0?-n:0):t}function Jr(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r}function Qr(t){t.sort((function(t,e){return s(t,e,0)?-1:1}));for(var e=-1/0,n=1,i=0;i=0||r&&P(r,s)<0)){var l=n.getShallow(s,e);null!=l&&(o[t[a][0]]=l)}}return o}}var Ho=Wo([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),Yo=function(){function t(){}return t.prototype.getAreaStyle=function(t,e){return Ho(this,t,e)},t}(),Uo=new ln(50);function Xo(t){if("string"==typeof t){var e=Uo.get(t);return e&&e.image}return t}function Zo(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!n)return e;var o=Uo.get(t),a={hostEl:n,cb:i,cbPayload:r};return o?!qo(e=o.image)&&o.pending.push(a):((e=h.loadImage(t,jo,jo)).__zrImageSrc=t,Uo.put(t,e.__cachedImgObj={image:e,pending:[a]})),e}return t}return e}function jo(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e=a;l++)s-=a;var u=ur(n,e);return u>s&&(n="",u=0),s=t-u,r.ellipsis=n,r.ellipsisWidth=u,r.contentWidth=s,r.containerWidth=t,r}function Qo(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)return"";var o=ur(t,i);if(o<=n)return t;for(var a=0;;a++){if(o<=r||a>=e.maxIterations){t+=e.ellipsis;break}var s=0===a?ta(t,r,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*r/o):0;o=ur(t=t.substr(0,s),i)}return""===t&&(t=e.placeholder),t}function ta(t,e,n,i){for(var r=0,o=0,a=t.length;o0&&f+i.accumWidth>i.width&&(o=e.split("\n"),c=!0),i.accumWidth=f}else{var g=sa(e,h,i.width,i.breakAll,i.accumWidth);i.accumWidth=g.accumWidth+d,a=g.linesWidths,o=g.lines}}else o=e.split("\n");for(var y=0;y=33&&e<=383}(t)||!!oa[t]}function sa(t,e,n,i,r){for(var o=[],a=[],s="",l="",u=0,h=0,c=0;cn:r+h+d>n)?h?(s||l)&&(f?(s||(s=l,l="",h=u=0),o.push(s),a.push(h-u),l+=p,s="",h=u+=d):(l&&(s+=l,l="",u=0),o.push(s),a.push(h),s=p,h=d)):f?(o.push(l),a.push(u),l=p,u=d):(o.push(p),a.push(d)):(h+=d,f?(l+=p,u+=d):(l&&(s+=l,l="",u=0),s+=p))}else l&&(s+=l,h+=u),o.push(s),a.push(h),s="",l="",u=0,h=0}return o.length||s||(s=t,l="",u=0),l&&(s+=l),s&&(o.push(s),a.push(h)),1===o.length&&(h+=r),{accumWidth:h,lines:o,linesWidths:a}}var la="__zr_style_"+Math.round(10*Math.random()),ua={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},ha={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};ua[la]=!0;var ca=["z","z2","invisible"],pa=["invisible"],da=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype._init=function(e){for(var n=G(e),i=0;i1e-4)return s[0]=t-n,s[1]=e-i,l[0]=t+n,void(l[1]=e+i);if(ba[0]=xa(r)*n+t,ba[1]=ma(r)*i+e,wa[0]=xa(o)*n+t,wa[1]=ma(o)*i+e,u(s,ba,wa),h(l,ba,wa),(r%=_a)<0&&(r+=_a),(o%=_a)<0&&(o+=_a),r>o&&!a?o+=_a:rr&&(Sa[0]=xa(d)*n+t,Sa[1]=ma(d)*i+e,u(s,Sa,s),h(l,Sa,l))}var La={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Pa=[],Oa=[],Ra=[],Na=[],Ea=[],za=[],Va=Math.min,Ba=Math.max,Fa=Math.cos,Ga=Math.sin,Wa=Math.abs,Ha=Math.PI,Ya=2*Ha,Ua="undefined"!=typeof Float32Array,Xa=[];function Za(t){return Math.round(t/Ha*1e8)/1e8%2*Ha}function ja(t,e){var n=Za(t[0]);n<0&&(n+=Ya);var i=n-t[0],r=t[1];r+=i,!e&&r-n>=Ya?r=n+Ya:e&&n-r>=Ya?r=n-Ya:!e&&n>r?r=n+(Ya-Za(n-r)):e&&n0&&(this._ux=Wa(n/Ai/t)||0,this._uy=Wa(n/Ai/e)||0)},t.prototype.setDPR=function(t){this.dpr=t},t.prototype.setContext=function(t){this._ctx=t},t.prototype.getContext=function(){return this._ctx},t.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},t.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},t.prototype.moveTo=function(t,e){return this._drawPendingPt(),this.addData(La.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},t.prototype.lineTo=function(t,e){var n=Wa(t-this._xi),i=Wa(e-this._yi),r=n>this._ux||i>this._uy;if(this.addData(La.L,t,e),this._ctx&&r&&this._ctx.lineTo(t,e),r)this._xi=t,this._yi=e,this._pendingPtDist=0;else{var o=n*n+i*i;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=e,this._pendingPtDist=o)}return this},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){return this._drawPendingPt(),this.addData(La.C,t,e,n,i,r,o),this._ctx&&this._ctx.bezierCurveTo(t,e,n,i,r,o),this._xi=r,this._yi=o,this},t.prototype.quadraticCurveTo=function(t,e,n,i){return this._drawPendingPt(),this.addData(La.Q,t,e,n,i),this._ctx&&this._ctx.quadraticCurveTo(t,e,n,i),this._xi=n,this._yi=i,this},t.prototype.arc=function(t,e,n,i,r,o){this._drawPendingPt(),Xa[0]=i,Xa[1]=r,ja(Xa,o),i=Xa[0];var a=(r=Xa[1])-i;return this.addData(La.A,t,e,n,n,i,a,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=Fa(r)*n+t,this._yi=Ga(r)*n+e,this},t.prototype.arcTo=function(t,e,n,i,r){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},t.prototype.rect=function(t,e,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,e,n,i),this.addData(La.R,t,e,n,i),this},t.prototype.closePath=function(){this._drawPendingPt(),this.addData(La.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&t.closePath(),this._xi=e,this._yi=n,this},t.prototype.fill=function(t){t&&t.fill(),this.toStatic()},t.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},t.prototype.len=function(){return this._len},t.prototype.setData=function(t){var e=t.length;this.data&&this.data.length===e||!Ua||(this.data=new Float32Array(e));for(var n=0;nu.length&&(this._expandData(),u=this.data);for(var h=0;h0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},t.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],e=0;e11&&(this.data=new Float32Array(t)))}},t.prototype.getBoundingRect=function(){Ra[0]=Ra[1]=Ea[0]=Ea[1]=Number.MAX_VALUE,Na[0]=Na[1]=za[0]=za[1]=-Number.MAX_VALUE;var t,e=this.data,n=0,i=0,r=0,o=0;for(t=0;tn||Wa(y)>i||c===e-1)&&(f=Math.sqrt(A*A+y*y),r=g,o=x);break;case La.C:var v=t[c++],m=t[c++],x=(g=t[c++],t[c++]),_=t[c++],b=t[c++];f=qe(r,o,v,m,g,x,_,b,10),r=_,o=b;break;case La.Q:f=en(r,o,v=t[c++],m=t[c++],g=t[c++],x=t[c++],10),r=g,o=x;break;case La.A:var w=t[c++],S=t[c++],M=t[c++],I=t[c++],T=t[c++],C=t[c++],D=C+T;c+=1,t[c++],d&&(a=Fa(T)*M+w,s=Ga(T)*I+S),f=Ba(M,I)*Va(Ya,Math.abs(C)),r=Fa(D)*M+w,o=Ga(D)*I+S;break;case La.R:a=r=t[c++],s=o=t[c++],f=2*t[c++]+2*t[c++];break;case La.Z:var A=a-r;y=s-o,f=Math.sqrt(A*A+y*y),r=a,o=s}f>=0&&(l[h++]=f,u+=f)}return this._pathLen=u,u},t.prototype.rebuildPath=function(t,e){var n,i,r,o,a,s,l,u,h,c,p=this.data,d=this._ux,f=this._uy,g=this._len,y=e<1,v=0,m=0,x=0;if(!y||(this._pathSegLen||this._calculateLength(),l=this._pathSegLen,u=e*this._pathLen))t:for(var _=0;_0&&(t.lineTo(h,c),x=0),b){case La.M:n=r=p[_++],i=o=p[_++],t.moveTo(r,o);break;case La.L:a=p[_++],s=p[_++];var S=Wa(a-r),M=Wa(s-o);if(S>d||M>f){if(y){if(v+(j=l[m++])>u){var I=(u-v)/j;t.lineTo(r*(1-I)+a*I,o*(1-I)+s*I);break t}v+=j}t.lineTo(a,s),r=a,o=s,x=0}else{var T=S*S+M*M;T>x&&(h=a,c=s,x=T)}break;case La.C:var C=p[_++],D=p[_++],A=p[_++],k=p[_++],L=p[_++],P=p[_++];if(y){if(v+(j=l[m++])>u){Ze(r,C,A,L,I=(u-v)/j,Pa),Ze(o,D,k,P,I,Oa),t.bezierCurveTo(Pa[1],Oa[1],Pa[2],Oa[2],Pa[3],Oa[3]);break t}v+=j}t.bezierCurveTo(C,D,A,k,L,P),r=L,o=P;break;case La.Q:if(C=p[_++],D=p[_++],A=p[_++],k=p[_++],y){if(v+(j=l[m++])>u){Qe(r,C,A,I=(u-v)/j,Pa),Qe(o,D,k,I,Oa),t.quadraticCurveTo(Pa[1],Oa[1],Pa[2],Oa[2]);break t}v+=j}t.quadraticCurveTo(C,D,A,k),r=A,o=k;break;case La.A:var O=p[_++],R=p[_++],N=p[_++],E=p[_++],z=p[_++],V=p[_++],B=p[_++],F=!p[_++],G=N>E?N:E,W=Wa(N-E)>.001,H=z+V,Y=!1;if(y&&(v+(j=l[m++])>u&&(H=z+V*(u-v)/j,Y=!0),v+=j),W&&t.ellipse?t.ellipse(O,R,N,E,B,z,H,F):t.arc(O,R,G,z,H,F),Y)break t;w&&(n=Fa(z)*N+O,i=Ga(z)*E+R),r=Fa(H)*N+O,o=Ga(H)*E+R;break;case La.R:n=r=p[_],i=o=p[_+1],a=p[_++],s=p[_++];var U=p[_++],X=p[_++];if(y){if(v+(j=l[m++])>u){var Z=u-v;t.moveTo(a,s),t.lineTo(a+Va(Z,U),s),(Z-=U)>0&&t.lineTo(a+U,s+Va(Z,X)),(Z-=X)>0&&t.lineTo(a+Ba(U-Z,0),s+X),(Z-=U)>0&&t.lineTo(a,s+Ba(X-Z,0));break t}v+=j}t.rect(a,s,U,X);break;case La.Z:if(y){var j;if(v+(j=l[m++])>u){I=(u-v)/j,t.lineTo(r*(1-I)+n*I,o*(1-I)+i*I);break t}v+=j}t.closePath(),r=n,o=i}}},t.prototype.clone=function(){var e=new t,n=this.data;return e.data=n.slice?n.slice():Array.prototype.slice.call(n),e._len=this._len,e},t.CMD=La,t.initDefaultProps=function(){var e=t.prototype;e._saveData=!0,e._ux=0,e._uy=0,e._pendingPtDist=0,e._version=0}(),t}();function Ka(t,e,n,i,r,o,a){if(0===r)return!1;var l,s=r;if(a>e+s&&a>i+s||at+s&&o>n+s||oe+c&&h>i+c&&h>o+c&&h>s+c||ht+c&&u>n+c&&u>r+c&&u>a+c||ue+u&&l>i+u&&l>o+u||lt+u&&s>n+u&&s>r+u||sn||h+ur&&(r+=es);var p=Math.atan2(l,s);return p<0&&(p+=es),p>=i&&p<=r||p+es>=i&&p+es<=r}function is(t,e,n,i,r,o){if(o>e&&o>i||or?s:0}var rs=qa.CMD,os=2*Math.PI,as=[-1,-1,-1],ss=[-1,-1];function ls(t,e,n,i,r,o,a,s,l,u){if(u>e&&u>i&&u>o&&u>s||u1&&(void 0,h=ss[0],ss[0]=ss[1],ss[1]=h),f=He(e,i,o,s,ss[0]),d>1&&(g=He(e,i,o,s,ss[1]))),2===d?ve&&s>i&&s>o||s=0&&h<=1&&(r[l++]=h);else{var u=a*a-4*o*s;if(Ge(u))(h=-a/(2*o))>=0&&h<=1&&(r[l++]=h);else if(u>0){var h,c=Oe(u),p=(-a-c)/(2*o);(h=(-a+c)/(2*o))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}(e,i,o,s,as);if(0===l)return 0;var u=Je(e,i,o);if(u>=0&&u<=1){for(var h=0,c=Ke(e,i,o,u),p=0;pn||s<-n)return 0;var l=Math.sqrt(n*n-s*s);as[0]=-l,as[1]=l;var u=Math.abs(i-r);if(u<1e-4)return 0;if(u>=os-1e-4){i=0,r=os;var h=o?1:-1;return a>=as[0]+t&&a<=as[1]+t?h:0}if(i>r){var c=i;i=r,r=c}i<0&&(i+=os,r+=os);for(var p=0,d=0;d<2;d++){var f=as[d];if(f+t>a){var g=Math.atan2(s,f);h=o?1:-1,g<0&&(g=os+g),(g>=i&&g<=r||g+os>=i&&g+os<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),p+=h)}}return p}function cs(t,e,n,i,r){for(var o,a,s,l,u=t.data,h=t.len(),c=0,p=0,d=0,f=0,g=0,y=0;y1&&(n||(c+=is(p,d,f,g,i,r))),m&&(f=p=u[y],g=d=u[y+1]),v){case rs.M:p=f=u[y++],d=g=u[y++];break;case rs.L:if(n){if(Ka(p,d,u[y],u[y+1],e,i,r))return!0}else c+=is(p,d,u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case rs.C:if(n){if($a(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=ls(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case rs.Q:if(n){if(Ja(p,d,u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=us(p,d,u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case rs.A:var x=u[y++],_=u[y++],b=u[y++],w=u[y++],S=u[y++],M=u[y++];y+=1;var I=!!(1-u[y++]);o=Math.cos(S)*b+x,a=Math.sin(S)*w+_,m?(f=o,g=a):c+=is(p,d,o,a,i,r);var T=(i-x)*w/b+x;if(n){if(ns(x,_,w,S,S+M,I,e,T,r))return!0}else c+=hs(x,_,w,S,S+M,I,T,r);p=Math.cos(S+M)*b+x,d=Math.sin(S+M)*w+_;break;case rs.R:if(f=p=u[y++],g=d=u[y++],o=f+u[y++],a=g+u[y++],n){if(Ka(f,g,o,g,e,i,r)||Ka(o,g,o,a,e,i,r)||Ka(o,a,f,a,e,i,r)||Ka(f,a,f,g,e,i,r))return!0}else c+=is(o,g,o,a,i,r),c+=is(f,a,f,g,i,r);break;case rs.Z:if(n){if(Ka(p,d,f,g,e,i,r))return!0}else c+=is(p,d,f,g,i,r);p=f,d=g}}return n||(s=d,l=g,Math.abs(s-l)<1e-4)||(c+=is(p,d,f,g,i,r)||0),0!==c}var ps=k({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},ua),ds={style:k({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},ha.style)},fs=Ki.concat(["invisible","culling","z","z2","zlevel","parent"]),gs=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype.update=function(){var n=this;t.prototype.update.call(this);var i=this.style;if(i.decal){var r=this._decalEl=this._decalEl||new e;r.buildPath===e.prototype.buildPath&&(r.buildPath=function(t){n.buildPath(t,n.shape)}),r.silent=!0;var o=r.style;for(var a in i)o[a]!==i[a]&&(o[a]=i[a]);o.fill=i.fill?i.decal:null,o.decal=null,o.shadowColor=null,i.strokeFirst&&(o.stroke=null);for(var s=0;s.5?ki:e>.2?"#eee":Li}if(t)return Li}return ki},e.prototype.getInsideTextStroke=function(t){var e=this.style.fill;if(X(e)){var n=this.__zr;if(!(!n||!n.isDarkMode())==Ln(t,0)<.4)return e}},e.prototype.buildPath=function(t,e,n){},e.prototype.pathUpdated=function(){this.__dirty&=-5},e.prototype.getUpdatedPathProxy=function(t){return!this.path&&this.createPathProxy(),this.path.beginPath(),this.buildPath(this.path,this.shape,t),this.path},e.prototype.createPathProxy=function(){this.path=new qa(!1)},e.prototype.hasStroke=function(){var t=this.style,e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.getBoundingRect=function(){var t=this._rect,e=this.style,n=!t;if(n){var i=!1;this.path||(i=!0,this.createPathProxy());var r=this.path;(i||4&this.__dirty)&&(r.beginPath(),this.buildPath(r,this.shape,!1),this.pathUpdated()),t=r.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var o=this._rectStroke||(this._rectStroke=t.clone());if(this.__dirty||n){o.copy(t);var a=e.strokeNoScale?this.getLineScale():1,s=e.lineWidth;if(!this.hasFill()){var l=this.strokeContainThreshold;s=Math.max(s,null==l?4:l)}a>1e-10&&(o.width+=s/a,o.height+=s/a,o.x-=s/a/2,o.y-=s/a/2)}return o}return t},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect(),r=this.style;if(t=n[0],e=n[1],i.contain(t,e)){var o=this.path;if(this.hasStroke()){var a=r.lineWidth,s=r.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),function(t,e,n,i){return cs(t,e,!0,n,i)}(o,a/s,t,e)))return!0}if(this.hasFill())return function(t,e,n){return cs(t,0,!1,e,n)}(o,t,e)}return!1},e.prototype.dirtyShape=function(){this.__dirty|=4,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},e.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},e.prototype.animateShape=function(t){return this.animate("shape",t)},e.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},e.prototype.attrKV=function(e,n){"shape"===e?this.setShape(n):t.prototype.attrKV.call(this,e,n)},e.prototype.setShape=function(t,e){var n=this.shape;return n||(n=this.shape={}),"string"==typeof t?n[t]=e:A(n,t),this.dirtyShape(),this},e.prototype.shapeChanged=function(){return!!(4&this.__dirty)},e.prototype.createStyle=function(t){return yt(ps,t)},e.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.shape&&!n.shape&&(n.shape=A({},this.shape))},e.prototype._applyStateObj=function(e,n,i,r,o,a){t.prototype._applyStateObj.call(this,e,n,i,r,o,a);var s,l=!(n&&r);if(n&&n.shape?o?r?s=n.shape:(s=A({},i.shape),A(s,n.shape)):(s=A({},r?this.shape:i.shape),A(s,n.shape)):l&&(s=i.shape),s)if(o){this.shape=A({},this.shape);for(var u={},h=G(s),c=0;c0},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.createStyle=function(t){return yt(ys,t)},e.prototype.setBoundingRect=function(t){this._rect=t},e.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var e=t.text;null!=e?e+="":e="";var n=cr(e,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var i=t.lineWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect},e.initDefaultProps=void(e.prototype.dirtyRectTolerance=10),e}(da);vs.prototype.type="tspan";var ms=k({x:0,y:0},ua),xs={style:k({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},ha.style)},_s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.createStyle=function(t){return yt(ms,t)},e.prototype._getSize=function(t){var e=this.style,n=e[t];if(null!=n)return n;var i,r=(i=e.image)&&"string"!=typeof i&&i.width&&i.height?e.image:this.__image;if(!r)return 0;var o="width"===t?"height":"width",a=e[o];return null==a?r[t]:r[t]/r[o]*a},e.prototype.getWidth=function(){return this._getSize("width")},e.prototype.getHeight=function(){return this._getSize("height")},e.prototype.getAnimationStyleProps=function(){return xs},e.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new sr(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},e}(da);_s.prototype.type="image";var bs=Math.round;function ws(t,e,n){if(e){var i=e.x1,r=e.x2,o=e.y1,a=e.y2;t.x1=i,t.x2=r,t.y1=o,t.y2=a;var s=n&&n.lineWidth;return s?(bs(2*i)===bs(2*r)&&(t.x1=t.x2=Ms(i,s,!0)),bs(2*o)===bs(2*a)&&(t.y1=t.y2=Ms(o,s,!0)),t):t}}function Ss(t,e,n){if(e){var i=e.x,r=e.y,o=e.width,a=e.height;t.x=i,t.y=r,t.width=o,t.height=a;var s=n&&n.lineWidth;return s?(t.x=Ms(i,s,!0),t.y=Ms(r,s,!0),t.width=Math.max(Ms(i+o,s,!1)-t.x,0===o?0:1),t.height=Math.max(Ms(r+a,s,!1)-t.y,0===a?0:1),t):t}}function Ms(t,e,n){if(!e)return t;var i=bs(2*t);return(i+bs(e))%2==0?i/2:(i+(n?1:-1))/2}var Is=function(){this.x=0,this.y=0,this.width=0,this.height=0},Ts={},Cs=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Is},e.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=Ss(Ts,e,this.style);n=a.x,i=a.y,r=a.width,o=a.height,a.r=e.r,e=a}else n=e.x,i=e.y,r=e.width,o=e.height;e.r?function(t,e){var n,i,r,o,a,s=e.x,l=e.y,u=e.width,h=e.height,c=e.r;u<0&&(s+=u,u=-u),h<0&&(l+=h,h=-h),"number"==typeof c?n=i=r=o=c:c instanceof Array?1===c.length?n=i=r=o=c[0]:2===c.length?(n=r=c[0],i=o=c[1]):3===c.length?(n=c[0],i=o=c[1],r=c[2]):(n=c[0],i=c[1],r=c[2],o=c[3]):n=i=r=o=0,n+i>u&&(n*=u/(a=n+i),i*=u/a),r+o>u&&(r*=u/(a=r+o),o*=u/a),i+r>h&&(i*=h/(a=i+r),r*=h/a),n+o>h&&(n*=h/(a=n+o),o*=h/a),t.moveTo(s+n,l),t.lineTo(s+u-i,l),0!==i&&t.arc(s+u-i,l+i,i,-Math.PI/2,0),t.lineTo(s+u,l+h-r),0!==r&&t.arc(s+u-r,l+h-r,r,0,Math.PI/2),t.lineTo(s+o,l+h),0!==o&&t.arc(s+o,l+h-o,o,Math.PI/2,Math.PI),t.lineTo(s,l+n),0!==n&&t.arc(s+n,l+n,n,Math.PI,1.5*Math.PI)}(t,e):t.rect(n,i,r,o)},e.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},e}(gs);Cs.prototype.type="rect";var Ds={fill:"#000"},As={style:k({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},ha.style)},ks=function(t){function e(e){var n=t.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=Ds,n.attr(e),n}return n(e,t),e.prototype.childrenRef=function(){return this._children},e.prototype.update=function(){t.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var e=0;ed&&h){var f=Math.floor(d/l);n=n.slice(0,f)}if(t&&a&&null!=c)for(var g=Jo(c,o,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),y=0;y0,T=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),C=i.calculatedLineHeight,D=0;Dl&&ra(n,t.substring(l,u),e,s),ra(n,i[2],e,s,i[1]),l=Ko.lastIndex}lo){b>0?(m.tokens=m.tokens.slice(0,b),y(m,_,x),n.lines=n.lines.slice(0,v+1)):n.lines=n.lines.slice(0,v);break t}var C=w.width,D=null==C||"auto"===C;if("string"==typeof C&&"%"===C.charAt(C.length-1))P.percentWidth=C,h.push(P),P.contentWidth=ur(P.text,I);else{if(D){var A=w.backgroundColor,k=A&&A.image;k&&qo(k=Xo(k))&&(P.width=Math.max(P.width,k.width*T/k.height))}var L=f&&null!=r?r-_:null;null!=L&&L=0&&"right"===(C=x[T]).align;)this._placeToken(C,t,b,f,I,"right",y),w-=C.width,I-=C.width,T--;for(M+=(n-(M-d)-(g-I)-w)/2;S<=T;)C=x[S],this._placeToken(C,t,b,f,M+C.width/2,"center",y),M+=C.width,S++;f+=b}},e.prototype._placeToken=function(t,e,n,i,r,o,s){var l=e.rich[t.styleName]||{};l.text=t.text;var u=t.verticalAlign,h=i+n/2;"top"===u?h=i+t.height/2:"bottom"===u&&(h=i+n-t.height/2),!t.isLineHolder&&Ws(l)&&this._renderBackground(l,e,"right"===o?r-t.width:"center"===o?r-t.width/2:r,h-t.height/2,t.width,t.height);var c=!!l.backgroundColor,p=t.textPadding;p&&(r=Fs(r,o,p),h-=t.height/2-p[0]-t.innerHeight/2);var d=this._getOrCreateChild(vs),f=d.createStyle();d.useStyle(f);var g=this._defaultStyle,y=!1,v=0,m=Bs("fill"in l?l.fill:"fill"in e?e.fill:(y=!0,g.fill)),x=Vs("stroke"in l?l.stroke:"stroke"in e?e.stroke:c||s||g.autoStroke&&!y?null:(v=2,g.stroke)),_=l.textShadowBlur>0||e.textShadowBlur>0;f.text=t.text,f.x=r,f.y=h,_&&(f.shadowBlur=l.textShadowBlur||e.textShadowBlur||0,f.shadowColor=l.textShadowColor||e.textShadowColor||"transparent",f.shadowOffsetX=l.textShadowOffsetX||e.textShadowOffsetX||0,f.shadowOffsetY=l.textShadowOffsetY||e.textShadowOffsetY||0),f.textAlign=o,f.textBaseline="middle",f.font=t.font||a,f.opacity=ot(l.opacity,e.opacity,1),Ns(f,l),x&&(f.lineWidth=ot(l.lineWidth,e.lineWidth,v),f.lineDash=rt(l.lineDash,e.lineDash),f.lineDashOffset=e.lineDashOffset||0,f.stroke=x),m&&(f.fill=m);var b=t.contentWidth,w=t.contentHeight;d.setBoundingRect(new sr(pr(f.x,b,f.textAlign),dr(f.y,w,f.textBaseline),b,w))},e.prototype._renderBackground=function(t,e,n,i,r,o){var a,s,l,u=t.backgroundColor,h=t.borderWidth,c=t.borderColor,p=u&&u.image,d=u&&!p,f=t.borderRadius,g=this;if(d||t.lineHeight||h&&c){(a=this._getOrCreateChild(Cs)).useStyle(a.createStyle()),a.style.fill=null;var y=a.shape;y.x=n,y.y=i,y.width=r,y.height=o,y.r=f,a.dirtyShape()}if(d)(l=a.style).fill=u||null,l.fillOpacity=rt(t.fillOpacity,1);else if(p){(s=this._getOrCreateChild(_s)).onload=function(){g.dirtyStyle()};var v=s.style;v.image=u.image,v.x=n,v.y=i,v.width=r,v.height=o}h&&c&&((l=a.style).lineWidth=h,l.stroke=c,l.strokeOpacity=rt(t.strokeOpacity,1),l.lineDash=t.borderDash,l.lineDashOffset=t.borderDashOffset||0,a.strokeContainThreshold=0,a.hasFill()&&a.hasStroke()&&(l.strokeFirst=!0,l.lineWidth*=2));var m=(a||s).style;m.shadowBlur=t.shadowBlur||0,m.shadowColor=t.shadowColor||"transparent",m.shadowOffsetX=t.shadowOffsetX||0,m.shadowOffsetY=t.shadowOffsetY||0,m.opacity=ot(t.opacity,e.opacity,1)},e.makeFont=function(t){var e="";return Es(t)&&(e=[t.fontStyle,t.fontWeight,Rs(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),e&&ut(e)||t.textFont||t.font},e}(da),Ls={left:!0,right:1,center:1},Ps={top:1,bottom:1,middle:1},Os=["fontStyle","fontWeight","fontSize","fontFamily"];function Rs(t){return"string"!=typeof t||-1===t.indexOf("px")&&-1===t.indexOf("rem")&&-1===t.indexOf("em")?isNaN(+t)?"12px":t+"px":t}function Ns(t,e){for(var n=0;n=0,o=!1;if(t instanceof gs){var a=Zs(t),s=r&&a.selectFill||a.normalFill,l=r&&a.selectStroke||a.normalStroke;if(il(s)||il(l)){var u=(i=i||{}).style||{};"inherit"===u.fill?(o=!0,i=A({},i),(u=A({},u)).fill=s):!il(u.fill)&&il(s)?(o=!0,i=A({},i),(u=A({},u)).fill=ol(s)):!il(u.stroke)&&il(l)&&(o||(i=A({},i),u=A({},u)),u.stroke=ol(l)),i.style=u}}if(i&&null==i.z2){o||(i=A({},i));var h=t.z2EmphasisLift;i.z2=t.z2+(null!=h?h:$s)}return i}(this,0,e,n);if("blur"===t)return function(t,e,n){var i=P(t.currentStates,e)>=0,r=t.style.opacity,o=i?null:function(t,e,n,i){for(var r=t.style,o={},a=0;a0){var o={dataIndex:r,seriesIndex:t.seriesIndex};null!=i&&(o.dataType=i),e.push(o)}}))})),e}function Ol(t,e,n){Bl(t,!0),fl(t,vl),Nl(t,e,n)}function Rl(t,e,n,i){i?function(t){Bl(t,!1)}(t):Ol(t,e,n)}function Nl(t,e,n){var i=Hs(t);null!=e?(i.focus=e,i.blurScope=n):i.focus&&(i.focus=null)}var El=["emphasis","blur","select"],zl={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function Vl(t,e,n,i){n=n||"itemStyle";for(var r=0;r1&&(a*=jl(f),s*=jl(f));var g=(r===o?-1:1)*jl((a*a*(s*s)-a*a*(d*d)-s*s*(p*p))/(a*a*(d*d)+s*s*(p*p)))||0,y=g*a*d/s,v=g*-s*p/a,m=(t+n)/2+Kl(c)*y-ql(c)*v,x=(e+i)/2+ql(c)*y+Kl(c)*v,_=tu([1,0],[(p-y)/a,(d-v)/s]),b=[(p-y)/a,(d-v)/s],w=[(-1*p-y)/a,(-1*d-v)/s],S=tu(b,w);if(Ql(b,w)<=-1&&(S=$l),Ql(b,w)>=1&&(S=0),S<0){var M=Math.round(S/$l*1e6)/1e6;S=2*$l+M%2*$l}h.addData(u,m,x,a,s,_,S,c,o)}var nu=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,iu=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g,ru=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.applyTransform=function(t){},e}(gs);function ou(t){return null!=t.setData}function au(t,e){var n=function(t){var e=new qa;if(!t)return e;var n,i=0,r=0,o=i,a=r,s=qa.CMD,l=t.match(nu);if(!l)return e;for(var u=0;uk*k+L*L&&(M=T,I=C),{cx:M,cy:I,x0:-h,y0:-c,x1:M*(r/b-1),y1:I*(r/b-1)}}var Tu=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0,this.cornerRadius=0},Cu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Tu},e.prototype.buildPath=function(t,e){!function(t,e){var n,i=bu(e.r,0),r=bu(e.r0||0,0),o=i>0;if(o||r>0){if(o||(i=r,r=0),r>i){var a=i;i=r,r=a}var s=e.startAngle,l=e.endAngle;if(!isNaN(s)&&!isNaN(l)){var u=e.cx,h=e.cy,c=!!e.clockwise,p=xu(l-s),d=p>fu&&p%fu;if(d>Su&&(p=d),i>Su)if(p>fu-Su)t.moveTo(u+i*yu(s),h+i*gu(s)),t.arc(u,h,i,s,l,!c),r>Su&&(t.moveTo(u+r*yu(l),h+r*gu(l)),t.arc(u,h,r,l,s,c));else{var f=void 0,g=void 0,y=void 0,v=void 0,m=void 0,x=void 0,_=void 0,b=void 0,w=void 0,S=void 0,M=void 0,I=void 0,T=void 0,C=void 0,D=void 0,A=void 0,k=i*yu(s),L=i*gu(s),P=r*yu(l),O=r*gu(l),R=p>Su;if(R){var N=e.cornerRadius;N&&(f=(n=function(t){var e;if(Y(t)){var n=t.length;if(!n)return t;e=1===n?[t[0],t[0],0,0]:2===n?[t[0],t[0],t[1],t[1]]:3===n?t.concat(t[2]):t}else e=[t,t,t,t];return e}(N))[0],g=n[1],y=n[2],v=n[3]);var E=xu(i-r)/2;if(m=wu(E,y),x=wu(E,v),_=wu(E,f),b=wu(E,g),M=w=bu(m,x),I=S=bu(_,b),(w>Su||S>Su)&&(T=i*yu(l),C=i*gu(l),D=r*yu(s),A=r*gu(s),pSu){var U=wu(y,M),X=wu(v,M),Z=Mu(D,A,k,L,i,U,c),j=Mu(T,C,P,O,i,X,c);t.moveTo(u+Z.cx+Z.x0,h+Z.cy+Z.y0),M0&&t.arc(u+Z.cx,h+Z.cy,U,mu(Z.y0,Z.x0),mu(Z.y1,Z.x1),!c),t.arc(u,h,i,mu(Z.cy+Z.y1,Z.cx+Z.x1),mu(j.cy+j.y1,j.cx+j.x1),!c),X>0&&t.arc(u+j.cx,h+j.cy,X,mu(j.y1,j.x1),mu(j.y0,j.x0),!c))}else t.moveTo(u+k,h+L),t.arc(u,h,i,s,l,!c);else t.moveTo(u+k,h+L);r>Su&&R?I>Su?(U=wu(f,I),Z=Mu(P,O,T,C,r,-(X=wu(g,I)),c),j=Mu(k,L,D,A,r,-U,c),t.lineTo(u+Z.cx+Z.x0,h+Z.cy+Z.y0),I0&&t.arc(u+Z.cx,h+Z.cy,X,mu(Z.y0,Z.x0),mu(Z.y1,Z.x1),!c),t.arc(u,h,r,mu(Z.cy+Z.y1,Z.cx+Z.x1),mu(j.cy+j.y1,j.cx+j.x1),c),U>0&&t.arc(u+j.cx,h+j.cy,U,mu(j.y1,j.x1),mu(j.y0,j.x0),!c))):(t.lineTo(u+P,h+O),t.arc(u,h,r,l,s,c)):t.lineTo(u+P,h+O)}else t.moveTo(u,h);t.closePath()}}}(t,e)},e.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},e}(gs);Cu.prototype.type="sector";var Du=function(){this.cx=0,this.cy=0,this.r=0,this.r0=0},Au=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Du},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=2*Math.PI;t.moveTo(n+e.r,i),t.arc(n,i,e.r,0,r,!1),t.moveTo(n+e.r0,i),t.arc(n,i,e.r0,0,r,!0)},e}(gs);function ku(t,e,n){var i=e.smooth,r=e.points;if(r&&r.length>=2){if(i){var o=function(t,e,n,i){var r,o,a,s,l=[],u=[],h=[],c=[];if(i){a=[1/0,1/0],s=[-1/0,-1/0];for(var p=0,d=t.length;pqu[1]){if(a=!1,r)return a;var u=Math.abs(qu[0]-ju[1]),h=Math.abs(ju[0]-qu[1]);Math.min(u,h)>i.len()&&(u0){var c={duration:h.duration,delay:h.delay||0,easing:h.easing,done:o,force:!!o||!!a,setToFinal:!u,scope:t,during:a};l?e.animateFrom(n,c):e.animateTo(n,c)}else e.stopAnimation(),!l&&e.attr(n),a&&a(1),o&&o()}function rh(t,e,n,i,r,o){ih("update",t,e,n,i,r,o)}function oh(t,e,n,i,r,o){ih("enter",t,e,n,i,r,o)}function ah(t){if(!t.__zr)return!0;for(var e=0;eMath.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"}function Dh(t){return!t.isGroup}function Ah(t,e,n){if(t&&e){var i,r=(i={},t.traverse((function(t){Dh(t)&&t.anid&&(i[t.anid]=t)})),i);e.traverse((function(t){if(Dh(t)&&t.anid){var e=r[t.anid];if(e){var i=o(t);t.attr(o(e)),rh(t,i,n,Hs(t).dataIndex)}}}))}function o(t){var e={x:t.x,y:t.y,rotation:t.rotation};return function(t){return null!=t.shape}(t)&&(e.shape=A({},t.shape)),e}}function kh(t,e){return z(t,(function(t){var n=t[0];n=ch(n,e.x),n=ph(n,e.x+e.width);var i=t[1];return i=ch(i,e.y),[n,i=ph(i,e.y+e.height)]}))}function Lh(t,e){var n=ch(t.x,e.x),i=ph(t.x+t.width,e.x+e.width),r=ch(t.y,e.y),o=ph(t.y+t.height,e.y+e.height);if(i>=n&&o>=r)return{x:n,y:r,width:i-n,height:o-r}}function Ph(t,e,n){var i=A({rectHover:!0},e),r=i.style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(r.image=t.slice(8),k(r,n),new _s(i)):xh(t.replace("path://",""),i,n,"center")}function Oh(t,e,n,i,r){for(var o=0,a=r[r.length-1];o=-1e-6)return!1;var f=t-r,g=e-o,y=Nh(f,g,u,h)/d;if(y<0||y>1)return!1;var v=Nh(f,g,c,p)/d;return!(v<0||v>1)}function Nh(t,e,n,i){return t*i-n*e}function Eh(t){var e=t.itemTooltipOption,n=t.componentModel,i=t.itemName,r=X(e)?{formatter:e}:e,o=n.mainType,a=n.componentIndex,s={componentType:o,name:i,$vars:["name"]};s[o+"Index"]=a;var l=t.formatterParamsExtra;l&&E(G(l),(function(t){mt(s,t)||(s[t]=l[t],s.$vars.push(t))}));var u=Hs(t.el);u.componentMainType=o,u.componentIndex=a,u.tooltipConfig={name:i,option:k({content:i,formatterParams:s},r)}}function zh(t,e){var n;t.isGroup&&(n=e(t)),n||t.traverse(e)}function Vh(t,e){if(t)if(Y(t))for(var n=0;n-1?"ZH":"EN";function Sc(t,e){t=t.toUpperCase(),bc[t]=new dc(e),_c[t]=e}function Mc(t){return bc[t]}Sc("EN",{time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}}),Sc("ZH",{time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}});var Dc=864e5,Ac=31536e6,kc={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},Pc={year:"{yyyy}",month:"{yyyy}-{MM}",day:"{yyyy}-{MM}-{dd}",hour:"{yyyy}-{MM}-{dd} "+kc.hour,minute:"{yyyy}-{MM}-{dd} "+kc.minute,second:"{yyyy}-{MM}-{dd} "+kc.second,millisecond:kc.none},Oc=["year","month","day","hour","minute","second","millisecond"],Rc=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Nc(t,e){return"0000".substr(0,e-(t+="").length)+t}function Ec(t){switch(t){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return t}}function zc(t){return t===Ec(t)}function Vc(t,e,n,i){var r=jr(t),o=r[Gc(n)](),a=r[Wc(n)]()+1,s=Math.floor((a-1)/3)+1,l=r[Hc(n)](),u=r["get"+(n?"UTC":"")+"Day"](),h=r[Yc(n)](),c=(h-1)%12+1,p=r[Uc(n)](),d=r[Xc(n)](),f=r[Zc(n)](),g=(i instanceof dc?i:Mc(i||wc)||bc.EN).getModel("time"),y=g.get("month"),v=g.get("monthAbbr"),m=g.get("dayOfWeek"),x=g.get("dayOfWeekAbbr");return(e||"").replace(/{yyyy}/g,o+"").replace(/{yy}/g,o%100+"").replace(/{Q}/g,s+"").replace(/{MMMM}/g,y[a-1]).replace(/{MMM}/g,v[a-1]).replace(/{MM}/g,Nc(a,2)).replace(/{M}/g,a+"").replace(/{dd}/g,Nc(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,m[u]).replace(/{ee}/g,x[u]).replace(/{e}/g,u+"").replace(/{HH}/g,Nc(h,2)).replace(/{H}/g,h+"").replace(/{hh}/g,Nc(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,Nc(p,2)).replace(/{m}/g,p+"").replace(/{ss}/g,Nc(d,2)).replace(/{s}/g,d+"").replace(/{SSS}/g,Nc(f,3)).replace(/{S}/g,f+"")}function Bc(t,e){var n=jr(t),i=n[Wc(e)]()+1,r=n[Hc(e)](),o=n[Yc(e)](),a=n[Uc(e)](),s=n[Xc(e)](),l=0===n[Zc(e)](),u=l&&0===s,h=u&&0===a,c=h&&0===o,p=c&&1===r;return p&&1===i?"year":p?"month":c?"day":h?"hour":u?"minute":l?"second":"millisecond"}function Fc(t,e,n){var i=j(t)?jr(t):t;switch(e=e||Bc(t,n)){case"year":return i[Gc(n)]();case"half-year":return i[Wc(n)]()>=6?1:0;case"quarter":return Math.floor((i[Wc(n)]()+1)/4);case"month":return i[Wc(n)]();case"day":return i[Hc(n)]();case"half-day":return i[Yc(n)]()/24;case"hour":return i[Yc(n)]();case"minute":return i[Uc(n)]();case"second":return i[Xc(n)]();case"millisecond":return i[Zc(n)]()}}function Gc(t){return t?"getUTCFullYear":"getFullYear"}function Wc(t){return t?"getUTCMonth":"getMonth"}function Hc(t){return t?"getUTCDate":"getDate"}function Yc(t){return t?"getUTCHours":"getHours"}function Uc(t){return t?"getUTCMinutes":"getMinutes"}function Xc(t){return t?"getUTCSeconds":"getSeconds"}function Zc(t){return t?"getUTCMilliseconds":"getMilliseconds"}function jc(t){return t?"setUTCFullYear":"setFullYear"}function qc(t){return t?"setUTCMonth":"setMonth"}function Kc(t){return t?"setUTCDate":"setDate"}function $c(t){return t?"setUTCHours":"setHours"}function Jc(t){return t?"setUTCMinutes":"setMinutes"}function Qc(t){return t?"setUTCSeconds":"setSeconds"}function tp(t){return t?"setUTCMilliseconds":"setMilliseconds"}function ep(t){if(!eo(t))return X(t)?t:"-";var e=(t+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function np(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,(function(t,e){return e.toUpperCase()})),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var ip=st,rp=/([&<>"'])/g,op={"&":"&","<":"<",">":">",'"':""","'":"'"};function ap(t){return null==t?"":(t+"").replace(rp,(function(t,e){return op[e]}))}function sp(t,e,n){function i(t){return t&&ut(t)?t:"-"}function r(t){return!(null==t||isNaN(t)||!isFinite(t))}var o="time"===e,a=t instanceof Date;if(o||a){var s=o?jr(t):t;if(!isNaN(+s))return Vc(s,"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}",n);if(a)return"-"}if("ordinal"===e)return Z(t)?i(t):j(t)&&r(t)?t+"":"-";var l=to(t);return r(l)?ep(l):Z(t)?i(t):"boolean"==typeof t?t+"":"-"}var lp=["a","b","c","d","e","f","g"],up=function(t,e){return"{"+t+(null==e?"":e)+"}"};function hp(t,e,n){Y(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r=e[0].$vars||[],o=0;o':'':{renderMode:o,content:"{"+(n.markerId||"markerX")+"|} ",style:"subItem"===r?{width:4,height:4,borderRadius:2,backgroundColor:i}:{width:10,height:10,borderRadius:5,backgroundColor:i}}:""}function pp(t,e){return e=e||"transparent",X(t)?t:q(t)&&t.colorStops&&(t.colorStops[0]||{}).color||e}function dp(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location.href=t}else window.open(t,e)}var fp=E,gp=["left","right","top","bottom","width","height"],yp=[["width","left","right"],["height","top","bottom"]];function vp(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild((function(l,u){var h,c,p=l.getBoundingRect(),d=e.childAt(u+1),f=d&&d.getBoundingRect();if("horizontal"===t){var g=p.width+(f?-f.x+p.x:0);(h=o+g)>i||l.newline?(o=0,h=g,a+=s+n,s=p.height):s=Math.max(s,p.height)}else{var y=p.height+(f?-f.y+p.y:0);(c=a+y)>r||l.newline?(o+=s+n,a=0,c=y,s=p.width):s=Math.max(s,p.width)}l.newline||(l.x=o,l.y=a,l.markRedraw(),"horizontal"===t?o=h+n:a=c+n)}))}var mp=vp;function xp(t,e,n){n=ip(n||0);var i=e.width,r=e.height,o=Er(t.left,i),a=Er(t.top,r),s=Er(t.right,i),l=Er(t.bottom,r),u=Er(t.width,i),h=Er(t.height,r),c=n[2]+n[0],p=n[1]+n[3],d=t.aspect;switch(isNaN(u)&&(u=i-s-p-o),isNaN(h)&&(h=r-l-c-a),null!=d&&(isNaN(u)&&isNaN(h)&&(d>i/r?u=.8*i:h=.8*r),isNaN(u)&&(u=d*h),isNaN(h)&&(h=u/d)),isNaN(o)&&(o=i-s-u-p),isNaN(a)&&(a=r-l-h-c),t.left||t.right){case"center":o=i/2-u/2-n[3];break;case"right":o=i-u-p}switch(t.top||t.bottom){case"middle":case"center":a=r/2-h/2-n[0];break;case"bottom":a=r-h-c}o=o||0,a=a||0,isNaN(u)&&(u=i-p-o-(s||0)),isNaN(h)&&(h=r-c-a-(l||0));var f=new sr(o+n[3],a+n[0],u,h);return f.margin=n,f}function _p(t,e,n,i,r,o){var a,s=!r||!r.hv||r.hv[0],l=!r||!r.hv||r.hv[1],u=r&&r.boundingMode||"all";if((o=o||t).x=t.x,o.y=t.y,!s&&!l)return!1;if("raw"===u)a="group"===t.type?new sr(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(a=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(a=a.clone()).applyTransform(h)}var c=xp(k({width:a.width,height:a.height},e),n,i),p=s?c.x-a.x:0,d=l?c.y-a.y:0;return"raw"===u?(o.x=p,o.y=d):(o.x+=p,o.y+=d),o===t&&t.markRedraw(),!0}function bp(t){var e=t.layoutMode||t.constructor.layoutMode;return q(e)?e:e?{type:e}:null}function wp(t,e,n){var i=n&&n.ignoreSize;!Y(i)&&(i=[i,i]);var r=a(yp[0],0),o=a(yp[1],1);function a(n,r){var o={},a=0,u={},h=0;if(fp(n,(function(e){u[e]=t[e]})),fp(n,(function(t){s(e,t)&&(o[t]=u[t]=e[t]),l(o,t)&&a++,l(u,t)&&h++})),i[r])return l(e,n[1])?u[n[2]]=null:l(e,n[2])&&(u[n[1]]=null),u;if(2!==h&&a){if(a>=2)return o;for(var c=0;c=0;a--)o=C(o,n[a],!0);e.defaultOption=o}return e.defaultOption},e.prototype.getReferringComponents=function(t,e){var n=t+"Index",i=t+"Id";return Ao(this.ecModel,t,{index:this.get(n,!0),id:this.get(i,!0)},e)},e.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},e.prototype.getZLevelKey=function(){return""},e.prototype.setZLevel=function(t){this.option.zlevel=t},e.protoInitialize=function(){var t=e.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),e}(dc);zo(Tp,dc),Go(Tp),function(t){var e={};t.registerSubTypeDefaulter=function(t,n){var i=No(t);e[i.main]=n},t.determineSubType=function(n,i){var r=i.type;if(!r){var o=No(n).main;t.hasSubTypes(n)&&e[o]&&(r=e[o](i))}return r}}(Tp),function(t,e){function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}t.topologicalTravel=function(t,i,r,o){if(t.length){var a=function(t){var i={},r=[];return E(t,(function(o){var a=n(i,o),s=function(t,e){var n=[];return E(t,(function(t){P(e,t)>=0&&n.push(t)})),n}(a.originalDeps=function(t){var e=[];return E(Tp.getClassesByMainType(t),(function(t){e=e.concat(t.dependencies||t.prototype.dependencies||[])})),e=z(e,(function(t){return No(t).main})),"dataset"!==t&&P(e,"dataset")<=0&&e.unshift("dataset"),e}(o),t);a.entryCount=s.length,0===a.entryCount&&r.push(o),E(s,(function(t){P(a.predecessor,t)<0&&a.predecessor.push(t);var e=n(i,t);P(e.successor,t)<0&&e.successor.push(o)}))})),{graph:i,noEntryList:r}}(i),s=a.graph,l=a.noEntryList,u={};for(E(t,(function(t){u[t]=!0}));l.length;){var h=l.pop(),c=s[h],p=!!u[h];p&&(r.call(o,h,c.originalDeps.slice()),delete u[h]),E(c.successor,p?f:d)}E(u,(function(){throw new Error("")}))}function d(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}function f(t){u[t]=!0,d(t)}}}(Tp);var Cp="";"undefined"!=typeof navigator&&(Cp=navigator.platform||"");var Dp="rgba(0, 0, 0, 0.2)",Ap={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Dp,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Dp,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Dp,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Dp,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Dp,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Dp,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:Cp.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},kp=ft(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),Lp="original",Pp="arrayRows",Op="objectRows",Rp="keyedColumns",Np="typedArray",Ep="unknown",zp="column",Vp="row",Bp=1,Fp=2,Gp=3,Wp=So();function Hp(t,e,n){var i={},r=Up(e);if(!r||!t)return i;var o,a,s=[],l=[],u=e.ecModel,h=Wp(u).datasetMap,c=r.uid+"_"+n.seriesLayoutBy;E(t=t.slice(),(function(e,n){var r=q(e)?e:t[n]={name:e};"ordinal"===r.type&&null==o&&(o=n,a=f(r)),i[r.name]=[]}));var p=h.get(c)||h.set(c,{categoryWayDim:a,valueWayDim:0});function d(t,e,n){for(var i=0;ie)return t[i];return t[n-1]}(i,a):n;if((h=h||n)&&h.length){var c=h[l];return r&&(u[r]=c),s.paletteIdx=(l+1)%h.length,c}}var id=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(t,e,n,i,r,o){i=i||{},this.option=null,this._theme=new dc(i),this._locale=new dc(r),this._optionManager=o},e.prototype.setOption=function(t,e,n){var i=ad(e);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},e.prototype.resetOption=function(t,e){return this._resetOption(t,ad(e))},e.prototype._resetOption=function(t,e){var n=!1,i=this._optionManager;if(!t||"recreate"===t){var r=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(r,e)):$p(this,r),n=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(n=!0,this._mergeOption(o,e))}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this);a.length&&E(a,(function(t){n=!0,this._mergeOption(t,e)}),this)}return n},e.prototype.mergeOption=function(t){this._mergeOption(t,null)},e.prototype._mergeOption=function(t,e){var n=this.option,i=this._componentsMap,r=this._componentsCount,o=[],a=ft(),s=e&&e.replaceMergeMainTypeMap;Wp(this).datasetMap=ft(),E(t,(function(t,e){null!=t&&(Tp.hasClass(e)?e&&(o.push(e),a.set(e,!0)):n[e]=null==n[e]?T(t):C(n[e],t,!0))})),s&&s.each((function(t,e){Tp.hasClass(e)&&!a.get(e)&&(o.push(e),a.set(e,!0))})),Tp.topologicalTravel(o,Tp.getAllClassMainTypes(),(function(e){var o=function(t,e,n){var i=jp.get(e);if(!i)return n;var r=i(t);return r?n.concat(r):n}(this,e,ho(t[e])),a=i.get(e),u=yo(a,o,a?s&&s.get(e)?"replaceMerge":"normalMerge":"replaceAll");(function(t,e,n){E(t,(function(t){var i=t.newOption;q(i)&&(t.keyInfo.mainType=e,t.keyInfo.subType=function(t,e,n,i){return e.type?e.type:n?n.subType:i.determineSubType(t,e)}(e,i,t.existing,n))}))})(u,e,Tp),n[e]=null,i.set(e,null),r.set(e,0);var h,c=[],p=[],d=0;E(u,(function(t,n){var i=t.existing,r=t.newOption;if(r){var o="series"===e,a=Tp.getClass(e,t.keyInfo.subType,!o);if(!a)return;if("tooltip"===e){if(h)return;h=!0}if(i&&i.constructor===a)i.name=t.keyInfo.name,i.mergeOption(r,this),i.optionUpdated(r,!1);else{var s=A({componentIndex:n},t.keyInfo);A(i=new a(r,this,this,s),s),t.brandNew&&(i.__requireNewView=!0),i.init(r,this,this),i.optionUpdated(null,!0)}}else i&&(i.mergeOption({},this),i.optionUpdated({},!1));i?(c.push(i.option),p.push(i),d++):(c.push(void 0),p.push(void 0))}),this),n[e]=c,i.set(e,p),r.set(e,d),"series"===e&&qp(this)}),this),this._seriesIndices||qp(this)},e.prototype.getOption=function(){var t=T(this.option);return E(t,(function(e,n){if(Tp.hasClass(n)){for(var i=ho(e),r=i.length,o=!1,a=r-1;a>=0;a--)i[a]&&!bo(i[a])?o=!0:(i[a]=null,!o&&r--);i.length=r,t[n]=i}})),delete t["\0_ec_inner"],t},e.prototype.getTheme=function(){return this._theme},e.prototype.getLocaleModel=function(){return this._locale},e.prototype.setUpdatePayload=function(t){this._payload=t},e.prototype.getUpdatePayload=function(){return this._payload},e.prototype.getComponent=function(t,e){var n=this._componentsMap.get(t);if(n){var i=n[e||0];if(i)return i;if(null==e)for(var r=0;r=e:"max"===n?t<=e:t===e})(i[a],t,o)||(r=!1)}})),r}var fd=E,gd=q,yd=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function vd(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=yd.length;n=0;g--){var y=t[g];if(s||(p=y.data.rawIndexOf(y.stackedByDimension,c)),p>=0){var v=y.data.getByRawIndex(y.stackResultDimension,p);if("all"===l||"positive"===l&&v>0||"negative"===l&&v<0||"samesign"===l&&d>=0&&v>0||"samesign"===l&&d<=0&&v<0){d=Hr(d,v),f=v;break}}}return i[0]=d,i[1]=f,i}))}))}var Nd,Ed,zd,Vd,Bd,Fd=function(t){this.data=t.data||(t.sourceFormat===Rp?{}:[]),this.sourceFormat=t.sourceFormat||Ep,this.seriesLayoutBy=t.seriesLayoutBy||zp,this.startIndex=t.startIndex||0,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.metaRawOption=t.metaRawOption;var e=this.dimensionsDefine=t.dimensionsDefine;if(e)for(var n=0;nu&&(u=d)}s[0]=l,s[1]=u}},i=function(){return this._data?this._data.length/this._dimSize:0};function r(t){for(var e=0;e=0&&(s=o.interpolatedValue[l])}return null!=s?s+"":""})):void 0},t.prototype.getRawValue=function(t,e){return af(this.getData(e),t)},t.prototype.formatTooltip=function(t,e,n){},t}();function uf(t){var e,n;return q(t)?t.type&&(n=t):e=t,{text:e,frag:n}}function hf(t){return new cf(t)}var cf=function(){function t(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return t.prototype.perform=function(t){var e,n=this._upstream,i=t&&t.skip;if(this._dirty&&n){var r=this.context;r.data=r.outputData=n.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!i&&(e=this._plan(this.context));var o,a=h(this._modBy),s=this._modDataCount||0,l=h(t&&t.modBy),u=t&&t.modDataCount||0;function h(t){return!(t>=1)&&(t=1),t}a===l&&s===u||(e="reset"),(this._dirty||"reset"===e)&&(this._dirty=!1,o=this._doReset(i)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var p=this._dueIndex,d=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!i&&(o||p1&&i>0?s:a}};return o;function a(){return e=t?null:oe},gte:function(t,e){return t>=e}},vf=function(){function t(t,e){if(!j(e)){ao("")}this._opFn=yf[t],this._rvalFloat=to(e)}return t.prototype.evaluate=function(t){return j(t)?this._opFn(t,this._rvalFloat):this._opFn(to(t),this._rvalFloat)},t}(),mf=function(){function t(t,e){var n="desc"===t;this._resultLT=n?1:-1,null==e&&(e=n?"min":"max"),this._incomparable="min"===e?-1/0:1/0}return t.prototype.evaluate=function(t,e){var n=j(t)?t:to(t),i=j(e)?e:to(e),r=isNaN(n),o=isNaN(i);if(r&&(n=this._incomparable),o&&(i=this._incomparable),r&&o){var a=X(t),s=X(e);a&&(n=s?t:0),s&&(i=a?e:0)}return ni?-this._resultLT:0},t}(),xf=function(){function t(t,e){this._rval=e,this._isEQ=t,this._rvalTypeof=typeof e,this._rvalFloat=to(e)}return t.prototype.evaluate=function(t){var e=t===this._rval;if(!e){var n=typeof t;n===this._rvalTypeof||"number"!==n&&"number"!==this._rvalTypeof||(e=to(t)===this._rvalFloat)}return this._isEQ?e:!e},t}();function _f(t,e){return"eq"===t||"ne"===t?new xf("eq"===t,e):mt(yf,t)?new vf(t,e):null}var bf=function(){function t(){}return t.prototype.getRawData=function(){throw new Error("not supported")},t.prototype.getRawDataItem=function(t){throw new Error("not supported")},t.prototype.cloneRawData=function(){},t.prototype.getDimensionInfo=function(t){},t.prototype.cloneAllDimensionInfo=function(){},t.prototype.count=function(){},t.prototype.retrieveValue=function(t,e){},t.prototype.retrieveValueFromItem=function(t,e){},t.prototype.convertValue=function(t,e){return df(t,e)},t}();function wf(t){if(!Df(t.sourceFormat)){ao("")}return t.data}function Sf(t){var e=t.sourceFormat,n=t.data;if(!Df(e)){ao("")}if(e===Pp){for(var r=[],o=0,a=n.length;o65535?Lf:Pf}function zf(t,e,n,i,r){var o=Nf[n||"float"];if(r){var a=t[e],s=a&&a.length;if(s!==i){for(var l=new o(i),u=0;ug[1]&&(g[1]=f)}return this._rawCount=this._count=s,{start:a,end:s}},t.prototype._initDataFromProvider=function(t,e,n){for(var i=this._provider,r=this._chunks,o=this._dimensions,a=o.length,s=this._rawExtent,l=z(o,(function(t){return t.property})),u=0;uy[1]&&(y[1]=g)}}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=e,this._extent=[]},t.prototype.count=function(){return this._count},t.prototype.get=function(t,e){if(!(e>=0&&e=0&&e=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&nt))return o;r=o-1}}return-1},t.prototype.indicesOfNearest=function(t,e,n){var i=this._chunks[t],r=[];if(!i)return r;null==n&&(n=1/0);for(var o=1/0,a=-1,s=0,l=0,u=this.count();l=0&&a<0)&&(o=c,a=h,s=0),h===a&&(r[s++]=l))}return r.length=s,r},t.prototype.getIndices=function(){var t,e=this._indices;if(e){var n=e.constructor,i=this._count;if(n===Array){t=new n(i);for(var r=0;r=u&&x<=h||isNaN(x))&&(a[s++]=d),d++;p=!0}else if(2===r){f=c[i[0]];var y=c[i[1]],v=t[i[1]][0],m=t[i[1]][1];for(g=0;g=u&&x<=h||isNaN(x))&&(_>=v&&_<=m||isNaN(_))&&(a[s++]=d),d++}p=!0}}if(!p)if(1===r)for(g=0;g=u&&x<=h||isNaN(x))&&(a[s++]=b)}else for(g=0;gt[M][1])&&(w=!1)}w&&(a[s++]=e.getRawIndex(g))}return sy[1]&&(y[1]=g)}}},t.prototype.lttbDownSample=function(t,e){var n,i,r,o=this.clone([t],!0),a=o._chunks[t],s=this.count(),l=0,u=Math.floor(1/e),h=this.getRawIndex(0),c=new(Ef(this._rawCount))(Math.min(2*(Math.ceil(s/u)+2),s));c[l++]=h;for(var p=1;pn&&(n=i,r=I)}M>0&&M<_-x&&(c[l++]=Math.min(S,r),r=Math.max(S,r)),c[l++]=r,h=r}return c[l++]=this.getRawIndex(s-1),o._count=l,o._indices=c,o.getRawIndex=this._getRawIdx,o},t.prototype.downSample=function(t,e,n,i){for(var r=this.clone([t],!0),o=r._chunks,a=[],s=Math.floor(1/e),l=o[t],u=this.count(),h=r._rawExtent[t]=[1/0,-1/0],c=new(Ef(this._rawCount))(Math.ceil(u/s)),p=0,d=0;du-d&&(s=u-d,a.length=s);for(var f=0;fh[1]&&(h[1]=y),c[p++]=v}return r._count=p,r._indices=c,r._updateGetRawIdx(),r},t.prototype.each=function(t,e){if(this._count)for(var n=t.length,i=this._chunks,r=0,o=this.count();ra&&(a=l)}return i=[o,a],this._extent[t]=i,i},t.prototype.getRawDataItem=function(t){var e=this.getRawIndex(t);if(this._provider.persistent)return this._provider.getItem(e);for(var n=[],i=this._chunks,r=0;r=0?this._indices[t]:-1},t.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},t.internalField=function(){function t(t,e,n,i){return df(t[i],this._dimensions[i])}Af={arrayRows:t,objectRows:function(t,e,n,i){return df(t[e],this._dimensions[i])},keyedColumns:t,original:function(t,e,n,i){var r=t&&(null==t.value?t:t.value);return df(r instanceof Array?r[i]:r,this._dimensions[i])},typedArray:function(t,e,n,i){return t[i]}}}(),t}(),Bf=function(){function t(t){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=t}return t.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},t.prototype._setLocalSource=function(t,e){this._sourceList=t,this._upstreamSignList=e,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},t.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},t.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},t.prototype._createSource=function(){this._setLocalSource([],[]);var t,e,n=this._sourceHost,i=this._getUpstreamSourceManagers(),r=!!i.length;if(Gf(n)){var o=n,a=void 0,s=void 0,l=void 0;if(r){var u=i[0];u.prepareSource(),a=(l=u.getSource()).data,s=l.sourceFormat,e=[u._getVersionSign()]}else s=$(a=o.get("data",!0))?Np:Lp,e=[];var h=this._getSourceMetaRawOption()||{},c=l&&l.metaRawOption||{},p=rt(h.seriesLayoutBy,c.seriesLayoutBy)||null,d=rt(h.sourceHeader,c.sourceHeader),f=rt(h.dimensions,c.dimensions);t=p!==c.seriesLayoutBy||!!d!=!!c.sourceHeader||f?[Wd(a,{seriesLayoutBy:p,sourceHeader:d,dimensions:f},s)]:[]}else{var g=n;if(r){var y=this._applyTransform(i);t=y.sourceList,e=y.upstreamSignList}else t=[Wd(g.get("source",!0),this._getSourceMetaRawOption(),null)],e=[]}this._setLocalSource(t,e)},t.prototype._applyTransform=function(t){var e,n=this._sourceHost,i=n.get("transform",!0),r=n.get("fromTransformResult",!0);if(null!=r){1!==t.length&&Wf("")}var a,s=[],l=[];return E(t,(function(t){t.prepareSource();var e=t.getSource(r||0);null==r||e||Wf(""),s.push(e),l.push(t._getVersionSign())})),i?e=function(t,e,n){var i=ho(t),r=i.length;r||ao("");for(var a=0,s=r;a1||n>0&&!t.noHeader;return E(t.blocks,(function(t){var n=qf(t);n>=e&&(e=n+ +(i&&(!n||Zf(t)&&!t.noHeader)))})),e}return 0}function Kf(t,e,n,i){var r,o=e.noHeader,a=(r=qf(e),{html:Yf[r],richText:Uf[r]}),s=[],l=e.blocks||[];lt(!l||Y(l)),l=l||[];var u=t.orderMode;if(e.sortBlocks&&u){l=l.slice();var h={valueAsc:"asc",valueDesc:"desc"};if(mt(h,u)){var c=new mf(h[u],null);l.sort((function(t,e){return c.evaluate(t.sortParam,e.sortParam)}))}else"seriesDesc"===u&&l.reverse()}E(l,(function(n,r){var o=e.valueFormatter,l=jf(n)(o?A(A({},t),{valueFormatter:o}):t,n,r>0?a.html:0,i);null!=l&&s.push(l)}));var p="richText"===t.renderMode?s.join(a.richText):Qf(s.join(""),o?n:a.html);if(o)return p;var d=sp(e.header,"ordinal",t.useUTC),f=Hf(i,t.renderMode).nameStyle;return"richText"===t.renderMode?tg(t,d,f)+a.richText+p:Qf('
'+ap(d)+"
"+p,n)}function $f(t,e,n,i){var r=t.renderMode,o=e.noName,a=e.noValue,s=!e.markerType,l=e.name,u=t.useUTC,h=e.valueFormatter||t.valueFormatter||function(t){return z(t=Y(t)?t:[t],(function(t,e){return sp(t,Y(d)?d[e]:d,u)}))};if(!o||!a){var c=s?"":t.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",r),p=o?"":sp(l,"ordinal",u),d=e.valueType,f=a?[]:h(e.value),g=!s||!o,y=!s&&o,v=Hf(i,r),m=v.nameStyle,x=v.valueStyle;return"richText"===r?(s?"":c)+(o?"":tg(t,p,m))+(a?"":function(t,e,n,i,r){var o=[r],a=i?10:20;return n&&o.push({padding:[0,0,0,a],align:"right"}),t.markupStyleCreator.wrapRichTextStyle(Y(e)?e.join(" "):e,o)}(t,f,g,y,x)):Qf((s?"":c)+(o?"":function(t,e,n){return''+ap(t)+""}(p,!s,m))+(a?"":function(t,e,n,i){return''+z(t=Y(t)?t:[t],(function(t){return ap(t)})).join("  ")+""}(f,g,y,x)),n)}}function Jf(t,e,n,i,r,o){if(t)return jf(t)({useUTC:r,renderMode:n,orderMode:i,markupStyleCreator:e,valueFormatter:t.valueFormatter},t,0,o)}function Qf(t,e){return'
'+t+'
'}function tg(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}function eg(t,e){return pp(t.getData().getItemVisual(e,"style")[t.visualDrawType])}function ng(t,e){var n=t.get("padding");return null!=n?n:"richText"===e?[8,10]:10}var ig=function(){function t(){this.richTextStyles={},this._nextStyleNameId=no()}return t.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},t.prototype.makeTooltipMarker=function(t,e,n){var i="richText"===n?this._generateStyleName():null,r=cp({color:e,type:t,renderMode:n,markerId:i});return X(r)?r:(this.richTextStyles[i]=r.style,r.content)},t.prototype.wrapRichTextStyle=function(t,e){var n={};Y(e)?E(e,(function(t){return A(n,t)})):A(n,e);var i=this._generateStyleName();return this.richTextStyles[i]=n,"{"+i+"|"+t+"}"},t}();function rg(t){var e,n,i,r,o=t.series,a=t.dataIndex,s=t.multipleSeries,l=o.getData(),u=l.mapDimensionsAll("defaultedTooltip"),h=u.length,c=o.getRawValue(a),p=Y(c),d=eg(o,a);if(h>1||p&&!h){var f=function(t,e,n,i,r){var o=e.getData(),a=V(t,(function(t,e,n){var i=o.getDimensionInfo(n);return t||i&&!1!==i.tooltip&&null!=i.displayName}),!1),s=[],l=[],u=[];function h(t,e){var n=o.getDimensionInfo(e);n&&!1!==n.otherDims.tooltip&&(a?u.push(Xf("nameValue",{markerType:"subItem",markerColor:r,name:n.displayName,value:t,valueType:n.type})):(s.push(t),l.push(n.type)))}return i.length?E(i,(function(t){h(af(o,n,t),t)})):E(t,h),{inlineValues:s,inlineValueTypes:l,blocks:u}}(c,o,a,u,d);e=f.inlineValues,n=f.inlineValueTypes,i=f.blocks,r=f.inlineValues[0]}else if(h){var g=l.getDimensionInfo(u[0]);r=e=af(l,a,u[0]),n=g.type}else r=e=p?c[0]:c;var y=_o(o),v=y&&o.name||"",m=l.getName(a),x=s?v:m;return Xf("section",{header:v,noHeader:s||!y,sortParam:r,blocks:[Xf("nameValue",{markerType:"item",markerColor:d,name:x,noName:!ut(x),value:e,valueType:n})].concat(i||[])})}var og=So();function ag(t,e){return t.getName(e)||t.getId(e)}var sg=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._selectedDataIndicesMap={},e}return n(e,t),e.prototype.init=function(t,e,n){this.seriesIndex=this.componentIndex,this.dataTask=hf({count:ug,reset:hg}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n),(og(this).sourceManager=new Bf(this)).prepareSource();var i=this.getInitialData(t,n);pg(i,this),this.dataTask.context.data=i,og(this).dataBeforeProcessed=i,lg(this),this._initSelectedMapFromData(i)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=bp(this),i=n?Sp(t):{},r=this.subType;Tp.hasClass(r)&&(r+="Series"),C(t,e.getTheme().get(this.subType)),C(t,this.getDefaultOption()),co(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&wp(t,i,n)},e.prototype.mergeOption=function(t,e){t=C(this.option,t,!0),this.fillDataTextStyle(t.data);var n=bp(this);n&&wp(this.option,t,n);var i=og(this).sourceManager;i.dirty(),i.prepareSource();var r=this.getInitialData(t,e);pg(r,this),this.dataTask.dirty(),this.dataTask.context.data=r,og(this).dataBeforeProcessed=r,lg(this),this._initSelectedMapFromData(r)},e.prototype.fillDataTextStyle=function(t){if(t&&!$(t))for(var e=["show"],n=0;nthis.getShallow("animationThreshold")&&(e=!1),!!e},e.prototype.restoreData=function(){this.dataTask.dirty()},e.prototype.getColorFromPalette=function(t,e,n){var i=this.ecModel,r=td.prototype.getColorFromPalette.call(this,t,e,n);return r||(r=i.getColorFromPalette(t,e,n)),r},e.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},e.prototype.getProgressive=function(){return this.get("progressive")},e.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},e.prototype.select=function(t,e){this._innerSelect(this.getData(e),t)},e.prototype.unselect=function(t,e){var n=this.option.selectedMap;if(n){var i=this.option.selectedMode,r=this.getData(e);if("series"===i||"all"===n)return this.option.selectedMap={},void(this._selectedDataIndicesMap={});for(var o=0;o=0&&n.push(r)}return n},e.prototype.isSelected=function(t,e){var n=this.option.selectedMap;if(!n)return!1;var i=this.getData(e);return("all"===n||n[ag(i,t)])&&!i.getItemModel(t).get(["select","disabled"])},e.prototype.isUniversalTransitionEnabled=function(){if(this.__universalTransitionEnabled)return!0;var t=this.option.universalTransition;return!!t&&(!0===t||t&&t.enabled)},e.prototype._innerSelect=function(t,e){var n,i,r=this.option,o=r.selectedMode,a=e.length;if(o&&a)if("series"===o)r.selectedMap="all";else if("multiple"===o){q(r.selectedMap)||(r.selectedMap={});for(var s=r.selectedMap,l=0;l0&&this._innerSelect(t,e)}},e.registerClass=function(t){return Tp.registerClass(t)},e.protoInitialize=function(){var t=e.prototype;t.type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),e}(Tp);function lg(t){var e=t.name;_o(t)||(t.name=function(t){var e=t.getRawData(),n=e.mapDimensionsAll("seriesName"),i=[];return E(n,(function(t){var n=e.getDimensionInfo(t);n.displayName&&i.push(n.displayName)})),i.join(" ")}(t)||e)}function ug(t){return t.model.getRawData().count()}function hg(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),cg}function cg(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function pg(t,e){E(gt(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),(function(n){t.wrapMethod(n,H(dg,e))}))}function dg(t,e){var n=fg(t);return n&&n.setOutputEnd((e||this).count()),e}function fg(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}R(sg,lf),R(sg,td),zo(sg,Tp);var gg=function(){function t(){this.group=new Cr,this.uid=gc("viewComponent")}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){},t.prototype.updateLayout=function(t,e,n,i){},t.prototype.updateVisual=function(t,e,n,i){},t.prototype.toggleBlurSeries=function(t,e,n){},t.prototype.eachRendered=function(t){var e=this.group;e&&e.traverse(t)},t}();function yg(){var t=So();return function(e){var n=t(e),i=e.pipelineContext,r=!!n.large,o=!!n.progressiveRender,a=n.large=!(!i||!i.large),s=n.progressiveRender=!(!i||!i.progressiveRender);return!(r===a&&o===s)&&"reset"}}Eo(gg),Go(gg);var vg=So(),mg=yg(),xg=function(){function t(){this.group=new Cr,this.uid=gc("viewChart"),this.renderTask=hf({plan:wg,reset:Sg}),this.renderTask.context={view:this}}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){},t.prototype.highlight=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&bg(r,i,"emphasis")},t.prototype.downplay=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&bg(r,i,"normal")},t.prototype.remove=function(t,e){this.group.removeAll()},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateLayout=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.eachRendered=function(t){Vh(this.group,t)},t.markUpdateMethod=function(t,e){vg(t).updateMethod=e},t.protoInitialize=void(t.prototype.type="chart"),t}();function _g(t,e,n){t&&Fl(t)&&("emphasis"===e?_l:bl)(t,n)}function bg(t,e,n){var i=wo(t,e),r=e&&null!=e.highlightKey?function(t){var e=Xs[t];return null==e&&Us<=32&&(e=Xs[t]=Us++),e}(e.highlightKey):null;null!=i?E(ho(i),(function(e){_g(t.getItemGraphicEl(e),n,r)})):t.eachItemGraphicEl((function(t){_g(t,n,r)}))}function wg(t){return mg(t.model)}function Sg(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelineContext.progressiveRender,a=t.view,s=r&&vg(r).updateMethod,l=o?"incrementalPrepareRender":s&&a[s]?s:"render";return"render"!==l&&a[l](e,n,i,r),Mg[l]}Eo(xg),Go(xg);var Mg={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},Ig="\0__throttleOriginMethod",Tg="\0__throttleRate",Cg="\0__throttleType";function Dg(t,e,n){var i,r,o,a,s,l=0,u=0,h=null;function c(){u=(new Date).getTime(),h=null,t.apply(o,a||[])}e=e||0;var p=function(){for(var t=[],p=0;p=0?c():h=setTimeout(c,-r),l=i};return p.clear=function(){h&&(clearTimeout(h),h=null)},p.debounceNextCall=function(t){s=t},p}function Ag(t,e,n,i){var r=t[e];if(r){var o=r[Ig]||r,a=r[Cg];if(r[Tg]!==n||a!==i){if(null==n||!i)return t[e]=o;(r=t[e]=Dg(o,n,"debounce"===i))[Ig]=o,r[Cg]=i,r[Tg]=n}return r}}function kg(t,e){var n=t[e];n&&n[Ig]&&(n.clear&&n.clear(),t[e]=n[Ig])}var Lg=So(),Pg={itemStyle:Wo(hc,!0),lineStyle:Wo(sc,!0)},Og={lineStyle:"stroke",itemStyle:"fill"};function Rg(t,e){return t.visualStyleMapper||Pg[e]||(console.warn("Unkown style type '"+e+"'."),Pg.itemStyle)}function Ng(t,e){return t.visualDrawType||Og[e]||(console.warn("Unkown style type '"+e+"'."),"fill")}var Eg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=t.getModel(i),o=Rg(t,i)(r),a=r.getShallow("decal");a&&(n.setVisual("decal",a),a.dirty=!0);var s=Ng(t,i),l=o[s],u=U(l)?l:null,h="auto"===o.fill||"auto"===o.stroke;if(!o[s]||u||h){var c=t.getColorFromPalette(t.name,null,e.getSeriesCount());o[s]||(o[s]=c,n.setVisual("colorFromPalette",!0)),o.fill="auto"===o.fill||U(o.fill)?c:o.fill,o.stroke="auto"===o.stroke||U(o.stroke)?c:o.stroke}if(n.setVisual("style",o),n.setVisual("drawType",s),!e.isSeriesFiltered(t)&&u)return n.setVisual("colorFromPalette",!1),{dataEach:function(e,n){var i=t.getDataParams(n),r=A({},o);r[s]=u(i),e.setItemVisual(n,"style",r)}}}},zg=new dc,Vg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(!t.ignoreStyleOnData&&!e.isSeriesFiltered(t)){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=Rg(t,i),o=n.getVisual("drawType");return{dataEach:n.hasItemOption?function(t,e){var n=t.getRawDataItem(e);if(n&&n[i]){zg.option=n[i];var a=r(zg);A(t.ensureUniqueItemVisual(e,"style"),a),zg.option.decal&&(t.setItemVisual(e,"decal",zg.option.decal),zg.option.decal.dirty=!0),o in a&&t.setItemVisual(e,"colorFromPalette",!1)}}:null}}}},Bg={performRawSeries:!0,overallReset:function(t){var e=ft();t.eachSeries((function(t){var n=t.getColorBy();if(!t.isColorBySeries()){var i=t.type+"-"+n,r=e.get(i);r||(r={},e.set(i,r)),Lg(t).scope=r}})),t.eachSeries((function(e){if(!e.isColorBySeries()&&!t.isSeriesFiltered(e)){var n=e.getRawData(),i={},r=e.getData(),o=Lg(e).scope,a=e.visualStyleAccessPath||"itemStyle",s=Ng(e,a);r.each((function(t){var e=r.getRawIndex(t);i[e]=t})),n.each((function(t){var a=i[t];if(r.getItemVisual(a,"colorFromPalette")){var l=r.ensureUniqueItemVisual(a,"style"),u=n.getName(t)||t+"",h=n.count();l[s]=e.getColorFromPalette(u,o,h)}}))}}))}},Fg=Math.PI,Gg=function(){function t(t,e,n,i){this._stageTaskMap=ft(),this.ecInstance=t,this.api=e,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return t.prototype.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each((function(t){var e=t.overallTask;e&&e.dirty()}))},t.prototype.getPerformArgs=function(t,e){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,r=!e&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},t.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},t.prototype.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),r=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),a="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:r,modDataCount:a,large:o}},t.prototype.restorePipelines=function(t){var e=this,n=e._pipelineMap=ft();t.eachSeries((function(t){var i=t.getProgressive(),r=t.uid;n.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),e._pipe(t,t.dataTask)}))},t.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.api.getModel(),n=this.api;E(this._allHandlers,(function(i){var r=t.get(i.uid)||t.set(i.uid,{});lt(!(i.reset&&i.overallReset),""),i.reset&&this._createSeriesStageTask(i,r,e,n),i.overallReset&&this._createOverallStageTask(i,r,e,n)}),this)},t.prototype.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,this._pipe(e,r)},t.prototype.performDataProcessorTasks=function(t,e){this._performStageTasks(this._dataProcessorHandlers,t,e,{block:!0})},t.prototype.performVisualTasks=function(t,e,n){this._performStageTasks(this._visualHandlers,t,e,n)},t.prototype._performStageTasks=function(t,e,n,i){i=i||{};var r=!1,o=this;function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}E(t,(function(t,s){if(!i.visualType||i.visualType===t.visualType){var l=o._stageTaskMap.get(t.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,p=h.agentStubMap;p.each((function(t){a(i,t)&&(t.dirty(),c=!0)})),c&&h.dirty(),o.updatePayload(h,n);var d=o.getPerformArgs(h,i.block);p.each((function(t){t.perform(d)})),h.perform(d)&&(r=!0)}else u&&u.each((function(s,l){a(i,s)&&s.dirty();var u=o.getPerformArgs(s,i.block);u.skip=!t.performRawSeries&&e.isSeriesFiltered(s.context.model),o.updatePayload(s,n),s.perform(u)&&(r=!0)}))}})),this.unfinished=r||this.unfinished},t.prototype.performSeriesTasks=function(t){var e;t.eachSeries((function(t){e=t.dataTask.perform()||e})),this.unfinished=e||this.unfinished},t.prototype.plan=function(){this._pipelineMap.each((function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)}))},t.prototype.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},t.prototype._createSeriesStageTask=function(t,e,n,i){var r=this,o=e.seriesTaskMap,a=e.seriesTaskMap=ft(),s=t.seriesType,l=t.getTargetSeries;function u(e){var s=e.uid,l=a.set(s,o&&o.get(s)||hf({plan:Xg,reset:Zg,count:Kg}));l.context={model:e,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:r},r._pipe(e,l)}t.createOnAllSeries?n.eachRawSeries(u):s?n.eachRawSeriesByType(s,u):l&&l(n,i).each(u)},t.prototype._createOverallStageTask=function(t,e,n,i){var r=this,o=e.overallTask=e.overallTask||hf({reset:Wg});o.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:r};var a=o.agentStubMap,s=o.agentStubMap=ft(),l=t.seriesType,u=t.getTargetSeries,h=!0,c=!1;function d(t){var e=t.uid,n=s.set(e,a&&a.get(e)||(c=!0,hf({reset:Hg,onDirty:Ug})));n.context={model:t,overallProgress:h},n.agent=o,n.__block=h,r._pipe(t,n)}lt(!t.createOnAllSeries,""),l?n.eachRawSeriesByType(l,d):u?u(n,i).each(d):(h=!1,E(n.getSeries(),d)),c&&o.dirty()},t.prototype._pipe=function(t,e){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=e),i.tail&&i.tail.pipe(e),i.tail=e,e.__idxInPipeline=i.count++,e.__pipeline=i},t.wrapStageHandler=function(t,e){return U(t)&&(t={overallReset:t,seriesType:$g(t)}),t.uid=gc("stageHandler"),e&&(t.visualType=e),t},t}();function Wg(t){t.overallReset(t.ecModel,t.api,t.payload)}function Hg(t){return t.overallProgress&&Yg}function Yg(){this.agent.dirty(),this.getDownstream().dirty()}function Ug(){this.agent&&this.agent.dirty()}function Xg(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function Zg(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=ho(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?z(e,(function(t,e){return qg(e)})):jg}var jg=qg(0);function qg(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(r&&r.dataEach)for(var o=e.start;o0&&h===r.length-u.length){var c=r.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}a.hasOwnProperty(r)&&(n[r]=t,s=!0),s||(i[r]=t)}))}return{cptQuery:e,dataQuery:n,otherQuery:i}},t.prototype.filter=function(t,e){var n=this.eventInfo;if(!n)return!0;var i=n.targetEl,r=n.packedEvent,o=n.model,a=n.view;if(!o||!a)return!0;var s=e.cptQuery,l=e.dataQuery;return u(s,o,"mainType")&&u(s,o,"subType")&&u(s,o,"index","componentIndex")&&u(s,o,"name")&&u(s,o,"id")&&u(l,r,"name")&&u(l,r,"dataIndex")&&u(l,r,"dataType")&&(!a.filterForExposedEvent||a.filterForExposedEvent(t,e.otherQuery,i,r));function u(t,e,n,i){return null==t[n]||e[i||n]===t[n]}},t.prototype.afterTrigger=function(){this.eventInfo=null},t}(),hy=["symbol","symbolSize","symbolRotate","symbolOffset"],cy=hy.concat(["symbolKeepAspect"]),py={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData();if(t.legendIcon&&n.setVisual("legendIcon",t.legendIcon),t.hasSymbolVisual){for(var i={},r={},o=!1,a=0;a=0&&Ry(l)?l:.5,t.createRadialGradient(a,s,0,a,s,l)}(t,e,n):function(t,e,n){var i=null==e.x?0:e.x,r=null==e.x2?1:e.x2,o=null==e.y?0:e.y,a=null==e.y2?0:e.y2;return e.global||(i=i*n.width+n.x,r=r*n.width+n.x,o=o*n.height+n.y,a=a*n.height+n.y),i=Ry(i)?i:0,r=Ry(r)?r:1,o=Ry(o)?o:0,a=Ry(a)?a:0,t.createLinearGradient(i,o,r,a)}(t,e,n),r=e.colorStops,o=0;o0&&(e=i.lineDash,n=i.lineWidth,e&&"solid"!==e&&n>0?"dashed"===e?[4*n,2*n]:"dotted"===e?[n]:j(e)?[e]:Y(e)?e:null:null),o=i.lineDashOffset;if(r){var a=i.strokeNoScale&&t.getLineScale?t.getLineScale():1;a&&1!==a&&(r=z(r,(function(t){return t/a})),o/=a)}return[r,o]}var By=new qa(!0);function Fy(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))}function Gy(t){return"string"==typeof t&&"none"!==t}function Wy(t){var e=t.fill;return null!=e&&"none"!==e}function Hy(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.globalAlpha;t.globalAlpha=e.fillOpacity*e.opacity,t.fill(),t.globalAlpha=n}else t.fill()}function Yy(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t.globalAlpha;t.globalAlpha=e.strokeOpacity*e.opacity,t.stroke(),t.globalAlpha=n}else t.stroke()}function Uy(t,e,n){var i=Zo(e.image,e.__image,n);if(qo(i)){var r=t.createPattern(i,e.repeat||"repeat");if("function"==typeof DOMMatrix&&r&&r.setTransform){var o=new DOMMatrix;o.translateSelf(e.x||0,e.y||0),o.rotateSelf(0,0,(e.rotation||0)*_t),o.scaleSelf(e.scaleX||1,e.scaleY||1),r.setTransform(o)}return r}}var Xy=["shadowBlur","shadowOffsetX","shadowOffsetY"],Zy=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function jy(t,e,n,i,r){var o=!1;if(!i&&e===(n=n||{}))return!1;if(i||e.opacity!==n.opacity){$y(t,r),o=!0;var a=Math.max(Math.min(e.opacity,1),0);t.globalAlpha=isNaN(a)?ua.opacity:a}(i||e.blend!==n.blend)&&(o||($y(t,r),o=!0),t.globalCompositeOperation=e.blend||ua.blend);for(var s=0;s0&&t.unfinished);t.unfinished||this._zr.flush()}}},e.prototype.getDom=function(){return this._dom},e.prototype.getId=function(){return this.id},e.prototype.getZr=function(){return this._zr},e.prototype.isSSR=function(){return this._ssr},e.prototype.setOption=function(t,e,n){if(!this.__flagInMainProcess)if(this._disposed)Hv(this.id);else{var i,r,o;if(q(e)&&(n=e.lazyUpdate,i=e.silent,r=e.replaceMerge,o=e.transition,e=e.notMerge),this.__flagInMainProcess=!0,!this._model||e){var a=new pd(this._api),s=this._theme,l=this._model=new id;l.scheduler=this._scheduler,l.ssr=this._ssr,l.init(null,null,null,s,this._locale,a)}this._model.setOption(t,{replaceMerge:r},Zv);var u={seriesTransition:o,optionChanged:!0};if(n)this.__pendingUpdate={silent:i,updateParams:u},this.__flagInMainProcess=!1,this.getZr().wakeUp();else{try{_v(this),Sv.update.call(this,null,u)}catch(t){throw this.__pendingUpdate=null,this.__flagInMainProcess=!1,t}this._ssr||this._zr.flush(),this.__pendingUpdate=null,this.__flagInMainProcess=!1,Cv.call(this,i),Dv.call(this,i)}}},e.prototype.setTheme=function(){},e.prototype.getModel=function(){return this._model},e.prototype.getOption=function(){return this._model&&this._model.getOption()},e.prototype.getWidth=function(){return this._zr.getWidth()},e.prototype.getHeight=function(){return this._zr.getHeight()},e.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||cv&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},e.prototype.renderToCanvas=function(t){return t=t||{},this._zr.painter.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},e.prototype.renderToSVGString=function(t){return t=t||{},this._zr.painter.renderToString({useViewBox:t.useViewBox})},e.prototype.getSvgDataURL=function(){if(r.svgSupported){var t=this._zr;return E(t.storage.getDisplayList(),(function(t){t.stopAnimation(null,!0)})),t.painter.toDataURL()}},e.prototype.getDataURL=function(t){if(!this._disposed){var e=(t=t||{}).excludeComponents,n=this._model,i=[],r=this;E(e,(function(t){n.eachComponent({mainType:t},(function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(i.push(e),e.group.ignore=!0)}))}));var o="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.renderToCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return E(i,(function(t){t.group.ignore=!1})),o}Hv(this.id)},e.prototype.getConnectedDataURL=function(t){if(!this._disposed){var e="svg"===t.type,n=this.group,i=Math.min,r=Math.max,o=1/0;if(Jv[n]){var a=o,s=o,l=-1/0,u=-1/0,c=[],p=t&&t.pixelRatio||this.getDevicePixelRatio();E($v,(function(o,h){if(o.group===n){var p=e?o.getZr().painter.getSvgDom().innerHTML:o.renderToCanvas(T(t)),d=o.getDom().getBoundingClientRect();a=i(d.left,a),s=i(d.top,s),l=r(d.right,l),u=r(d.bottom,u),c.push({dom:p,left:d.left,top:d.top})}}));var d=(l*=p)-(a*=p),f=(u*=p)-(s*=p),g=h.createCanvas(),y=Lr(g,{renderer:e?"svg":"canvas"});if(y.resize({width:d,height:f}),e){var v="";return E(c,(function(t){var e=t.left-a,n=t.top-s;v+=''+t.dom+""})),y.painter.getSvgRoot().innerHTML=v,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}return t.connectedBackgroundColor&&y.add(new Cs({shape:{x:0,y:0,width:d,height:f},style:{fill:t.connectedBackgroundColor}})),E(c,(function(t){var e=new _s({style:{x:t.left*p-a,y:t.top*p-s,image:t.dom}});y.add(e)})),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}Hv(this.id)},e.prototype.convertToPixel=function(t,e){return Mv(this,"convertToPixel",t,e)},e.prototype.convertFromPixel=function(t,e){return Mv(this,"convertFromPixel",t,e)},e.prototype.containPixel=function(t,e){var n;if(!this._disposed)return E(Io(this._model,t),(function(t,i){i.indexOf("Models")>=0&&E(t,(function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n=n||!!r.containPoint(e);else if("seriesModels"===i){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n=n||o.containPoint(e,t))}}),this)}),this),!!n;Hv(this.id)},e.prototype.getVisual=function(t,e){var n=Io(this._model,t,{defaultMainType:"series"}),r=n.seriesModel.getData(),o=n.hasOwnProperty("dataIndexInside")?n.dataIndexInside:n.hasOwnProperty("dataIndex")?r.indexOfRawIndex(n.dataIndex):null;return null!=o?fy(r,o,e):gy(r,e)},e.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},e.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},e.prototype._initEvents=function(){var t,e,n,i=this;E(Wv,(function(t){var e=function(e){var n,r=i.getModel(),o=e.target;if("globalout"===t?n={}:o&&xy(o,(function(t){var e=Hs(t);if(e&&null!=e.dataIndex){var i=e.dataModel||r.getSeriesByIndex(e.seriesIndex);return n=i&&i.getDataParams(e.dataIndex,e.dataType)||{},!0}if(e.eventData)return n=A({},e.eventData),!0}),!0),n){var s=n.componentType,l=n.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=n.seriesIndex);var u=s&&null!=l&&r.getComponent(s,l),h=u&&i["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];n.event=e,n.type=t,i._$eventProcessor.eventInfo={targetEl:o,packedEvent:n,model:u,view:h},i.trigger(t,n)}};e.zrEventfulCallAtLast=!0,i._zr.on(t,e,i)})),E(Uv,(function(t,e){i._messageCenter.on(e,(function(t){this.trigger(e,t)}),i)})),E(["selectchanged"],(function(t){i._messageCenter.on(t,(function(e){this.trigger(t,e)}),i)})),t=this._messageCenter,e=this,n=this._api,t.on("selectchanged",(function(t){var i=n.getModel();t.isFromClick?(my("map","selectchanged",e,i,t),my("pie","selectchanged",e,i,t)):"select"===t.fromAction?(my("map","selected",e,i,t),my("pie","selected",e,i,t)):"unselect"===t.fromAction&&(my("map","unselected",e,i,t),my("pie","unselected",e,i,t))}))},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){this._disposed?Hv(this.id):this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed)Hv(this.id);else{this._disposed=!0,this.getDom()&&ko(this.getDom(),em,"");var t=this,e=t._api,n=t._model;E(t._componentsViews,(function(t){t.dispose(n,e)})),E(t._chartsViews,(function(t){t.dispose(n,e)})),t._zr.dispose(),t._dom=t._model=t._chartsMap=t._componentsMap=t._chartsViews=t._componentsViews=t._scheduler=t._api=t._zr=t._throttledZrFlush=t._theme=t._coordSysMgr=t._messageCenter=null,delete $v[t.id]}},e.prototype.resize=function(t){if(!this.__flagInMainProcess)if(this._disposed)Hv(this.id);else{this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this.__pendingUpdate&&(null==i&&(i=this.__pendingUpdate.silent),n=!0,this.__pendingUpdate=null),this.__flagInMainProcess=!0;try{n&&_v(this),Sv.update.call(this,{type:"resize",animation:A({duration:0},t&&t.animation)})}catch(t){throw this.__flagInMainProcess=!1,t}this.__flagInMainProcess=!1,Cv.call(this,i),Dv.call(this,i)}}},e.prototype.showLoading=function(t,e){if(this._disposed)Hv(this.id);else if(q(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),Kv[t]){var n=Kv[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},e.prototype.hideLoading=function(){this._disposed?Hv(this.id):(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},e.prototype.makeActionFromEvent=function(t){var e=A({},t);return e.type=Uv[t.type],e},e.prototype.dispatchAction=function(t,e){if(this._disposed)Hv(this.id);else if(q(e)||(e={silent:!!e}),Yv[t.type]&&this._model)if(this.__flagInMainProcess)this._pendingActions.push(t);else{var n=e.silent;Tv.call(this,t,n);var i=e.flush;i?this._zr.flush():!1!==i&&r.browser.weChat&&this._throttledZrFlush(),Cv.call(this,n),Dv.call(this,n)}},e.prototype.updateLabelLayout=function(){lv.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},e.prototype.appendData=function(t){if(this._disposed)Hv(this.id);else{var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},e.internalField=function(){function t(t){t.clearColorPalette(),t.eachSeries((function(t){t.clearColorPalette()}))}function e(t){for(var e=[],n=t.currentStates,i=0;i0?{duration:o,delay:i.get("delay"),easing:i.get("easing")}:null;n.eachRendered((function(t){if(t.states&&t.states.emphasis){if(ah(t))return;if(t instanceof gs&&function(t){var e=Zs(t);e.normalFill=t.style.fill,e.normalStroke=t.style.stroke;var n=t.states.select||{};e.selectFill=n.style&&n.style.fill||null,e.selectStroke=n.style&&n.style.stroke||null}(t),t.__dirty){var n=t.prevStates;n&&t.useStates(n)}if(r){t.stateTransition=a;var i=t.getTextContent(),o=t.getTextGuideLine();i&&(i.stateTransition=a),o&&(o.stateTransition=a)}t.__dirty&&e(t)}}))}_v=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),bv(t,!0),bv(t,!1),e.plan()},bv=function(t,e){for(var n=t._model,i=t._scheduler,r=e?t._componentsViews:t._chartsViews,o=e?t._componentsMap:t._chartsMap,a=t._zr,s=t._api,l=0;le.get("hoverLayerThreshold")&&!r.node&&!r.worker&&e.eachSeries((function(e){if(!e.preventUsingHoverLayer){var n=t._chartsMap[e.__viewId];n.__alive&&n.eachRendered((function(t){t.states.emphasis&&(t.states.emphasis.hoverLayer=!0)}))}}))}(t,e),lv.trigger("series:afterupdate",e,n,l)},Ev=function(t){t.__needsUpdateStatus=!0,t.getZr().wakeUp()},zv=function(t){t.__needsUpdateStatus&&(t.getZr().storage.traverse((function(t){ah(t)||e(t)})),t.__needsUpdateStatus=!1)},Rv=function(t){return new(function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return n(i,e),i.prototype.getCoordinateSystems=function(){return t._coordSysMgr.getCoordinateSystems()},i.prototype.getComponentByElement=function(e){for(;e;){var n=e.__ecComponentInfo;if(null!=n)return t._model.getComponent(n.mainType,n.index);e=e.parent}},i.prototype.enterEmphasis=function(e,n){_l(e,n),Ev(t)},i.prototype.leaveEmphasis=function(e,n){bl(e,n),Ev(t)},i.prototype.enterBlur=function(e){wl(e),Ev(t)},i.prototype.leaveBlur=function(e){Sl(e),Ev(t)},i.prototype.enterSelect=function(e){Ml(e),Ev(t)},i.prototype.leaveSelect=function(e){Il(e),Ev(t)},i.prototype.getModel=function(){return t.getModel()},i.prototype.getViewOfComponentModel=function(e){return t.getViewOfComponentModel(e)},i.prototype.getViewOfSeriesModel=function(e){return t.getViewOfSeriesModel(e)},i}(ld))(t)},Nv=function(t){function e(t,e){for(var n=0;n=0)){gm.push(n);var o=Gg.wrapStageHandler(n,r);o.__prio=e,o.__raw=n,t.push(o)}}function vm(t,e){Kv[t]=e}function mm(t,e,n){var i=hv("registerMap");i&&i(t,e,n)}var xm=function(t){var e=(t=T(t)).type;e||ao("");var i=e.split(":");2!==i.length&&ao("");var r=!1;"echarts"===i[0]&&(e=i[1],r=!0),t.__isBuiltIn=r,Tf.set(e,t)};fm(2e3,Eg),fm(4500,Vg),fm(4500,Bg),fm(2e3,py),fm(4500,dy),fm(7e3,(function(t,e){t.eachRawSeries((function(n){if(!t.isSeriesFiltered(n)){var i=n.getData();i.hasItemVisual()&&i.each((function(t){var n=i.getItemVisual(t,"decal");n&&(i.ensureUniqueItemVisual(t,"style").decal=rv(n,e))}));var r=i.getVisual("decal");r&&(i.getVisual("style").decal=rv(r,e))}}))})),am(Od),sm(900,(function(t){var e=ft();t.eachSeries((function(t){var n=t.get("stack");if(n){var i=e.get(n)||e.set(n,[]),r=t.getData(),o={stackResultDimension:r.getCalculationInfo("stackResultDimension"),stackedOverDimension:r.getCalculationInfo("stackedOverDimension"),stackedDimension:r.getCalculationInfo("stackedDimension"),stackedByDimension:r.getCalculationInfo("stackedByDimension"),isStackedByIndex:r.getCalculationInfo("isStackedByIndex"),data:r,seriesModel:t};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&r.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(o)}})),e.each(Rd)})),vm("default",(function(t,e){k(e=e||{},{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new Cr,i=new Cs({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(i);var r,o=new ks({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),a=new Cs({style:{fill:"none"},textContent:o,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});return n.add(a),e.showSpinner&&((r=new Hu({shape:{startAngle:-Fg/2,endAngle:-Fg/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001})).animateShape(!0).when(1e3,{endAngle:3*Fg/2}).start("circularInOut"),r.animateShape(!0).when(1e3,{startAngle:3*Fg/2}).delay(300).start("circularInOut"),n.add(r)),n.resize=function(){var n=o.getBoundingRect().width,s=e.showSpinner?e.spinnerRadius:0,l=(t.getWidth()-2*s-(e.showSpinner&&n?10:0)-n)/2-(e.showSpinner&&n?0:5+n/2)+(e.showSpinner?0:n/2)+(n?0:s),u=t.getHeight()/2;e.showSpinner&&r.setShape({cx:l,cy:u}),a.setShape({x:l-s,y:u-s,width:2*s,height:2*s}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},n.resize(),n})),cm({type:Js,event:Js,update:Js},xt),cm({type:Qs,event:Qs,update:Qs},xt),cm({type:tl,event:tl,update:tl},xt),cm({type:el,event:el,update:el},xt),cm({type:nl,event:nl,update:nl},xt),om("light",iy),om("dark",ly);var _m=[],bm={registerPreprocessor:am,registerProcessor:sm,registerPostInit:lm,registerPostUpdate:um,registerUpdateLifecycle:hm,registerAction:cm,registerCoordinateSystem:pm,registerLayout:dm,registerVisual:fm,registerTransform:xm,registerLoading:vm,registerMap:mm,registerImpl:function(t,e){uv[t]=e},PRIORITY:fv,ComponentModel:Tp,ComponentView:gg,SeriesModel:sg,ChartView:xg,registerComponentModel:function(t){Tp.registerClass(t)},registerComponentView:function(t){gg.registerClass(t)},registerSeriesModel:function(t){sg.registerClass(t)},registerChartView:function(t){xg.registerClass(t)},registerSubTypeDefaulter:function(t,e){Tp.registerSubTypeDefaulter(t,e)},registerPainter:function(t,e){Pr(t,e)}};function wm(t){Y(t)?E(t,(function(t){wm(t)})):P(_m,t)>=0||(_m.push(t),U(t)&&(t={install:t}),t.install(bm))}function Sm(t){return null==t?0:t.length||1}function Mm(t){return t}var Im=function(){function t(t,e,n,i,r,o){this._old=t,this._new=e,this._oldKeyGetter=n||Mm,this._newKeyGetter=i||Mm,this.context=r,this._diffModeMultiple="multiple"===o}return t.prototype.add=function(t){return this._add=t,this},t.prototype.update=function(t){return this._update=t,this},t.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},t.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},t.prototype.updateManyToMany=function(t){return this._updateManyToMany=t,this},t.prototype.remove=function(t){return this._remove=t,this},t.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},t.prototype._executeOneToOne=function(){var t=this._old,e=this._new,n={},i=new Array(t.length),r=new Array(e.length);this._initIndexMap(t,null,i,"_oldKeyGetter"),this._initIndexMap(e,n,r,"_newKeyGetter");for(var o=0;o1){var u=s.shift();1===s.length&&(n[a]=s[0]),this._update&&this._update(u,o)}else 1===l?(n[a]=null,this._update&&this._update(s,o)):this._remove&&this._remove(o)}this._performRestAdd(r,n)},t.prototype._executeMultiple=function(){var t=this._old,e=this._new,n={},i={},r=[],o=[];this._initIndexMap(t,n,r,"_oldKeyGetter"),this._initIndexMap(e,i,o,"_newKeyGetter");for(var a=0;a1&&1===c)this._updateManyToOne&&this._updateManyToOne(u,l),i[s]=null;else if(1===h&&c>1)this._updateOneToMany&&this._updateOneToMany(u,l),i[s]=null;else if(1===h&&1===c)this._update&&this._update(u,l),i[s]=null;else if(h>1&&c>1)this._updateManyToMany&&this._updateManyToMany(u,l),i[s]=null;else if(h>1)for(var p=0;p1)for(var a=0;a30}var zm,Vm,Bm,Fm,Gm,Wm,Hm,Ym=q,Um=z,Xm="undefined"==typeof Int32Array?Array:Int32Array,Zm=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],jm=["_approximateExtent"],qm=function(){function t(t,e){var n;this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","lttbDownSample"];var i=!1;Om(t)?(n=t.dimensions,this._dimOmitted=t.isDimensionOmitted(),this._schema=t):(i=!0,n=t),n=n||["x","y"];for(var r={},o=[],a={},s=!1,l={},u=0;u=e)){var n=this._store.getProvider();this._updateOrdinalMeta();var i=this._nameList,r=this._idList;if(n.getSource().sourceFormat===Lp&&!n.pure)for(var o=[],a=t;a0},t.prototype.ensureUniqueItemVisual=function(t,e){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var r=i[e];return null==r&&(Y(r=this.getVisual(e))?r=r.slice():Ym(r)&&(r=A({},r)),i[e]=r),r},t.prototype.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,Ym(e)?A(i,e):i[e]=n},t.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},t.prototype.setLayout=function(t,e){Ym(t)?A(this._layout,t):this._layout[t]=e},t.prototype.getLayout=function(t){return this._layout[t]},t.prototype.getItemLayout=function(t){return this._itemLayouts[t]},t.prototype.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?A(this._itemLayouts[t]||{},e):e},t.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},t.prototype.setItemGraphicEl=function(t,e){var n=this.hostModel&&this.hostModel.seriesIndex;Ys(n,this.dataType,t,e),this._graphicEls[t]=e},t.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},t.prototype.eachItemGraphicEl=function(t,e){E(this._graphicEls,(function(n,i){n&&t&&t.call(e,n,i)}))},t.prototype.cloneShallow=function(e){return e||(e=new t(this._schema?this._schema:Um(this.dimensions,this._getDimInfo,this),this.hostModel)),Gm(e,this),e._store=this._store,e},t.prototype.wrapMethod=function(t,e){var n=this[t];U(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=n.apply(this,arguments);return e.apply(this,[t].concat(at(arguments)))})},t.internalField=(zm=function(t){var e=t._invertedIndicesMap;E(e,(function(n,i){var r=t._dimInfos[i],o=r.ordinalMeta,a=t._store;if(o){n=e[i]=new Xm(o.categories.length);for(var s=0;s1&&(s+="__ec__"+u),i[e]=s}})),t}();function Km(t,e){Gd(t)||(t=Hd(t));var n=(e=e||{}).coordDimensions||[],i=e.dimensionsDefine||t.dimensionsDefine||[],r=ft(),o=[],a=function(t,e,n,i){var r=Math.max(t.dimensionsDetectedCount||1,e.length,n.length,i||0);return E(e,(function(t){var e;q(t)&&(e=t.dimsDef)&&(r=Math.max(r,e.length))})),r}(t,n,i,e.dimensionsCount),s=e.canOmitUnusedDimensions&&Em(a),l=i===t.dimensionsDefine,u=l?Nm(t):Rm(i),h=e.encodeDefine;!h&&e.encodeDefaulter&&(h=e.encodeDefaulter(t,a));for(var c=ft(h),p=new Of(a),d=0;d0&&(i.name=r+(o-1)),o++,e.set(r,o)}}(o),new Pm({source:t,dimensions:o,fullDimensionCount:a,dimensionOmitted:s})}function $m(t,e,n){var i=e.data;if(n||i.hasOwnProperty(t)){for(var r=0;i.hasOwnProperty(t+r);)r++;t+=r}return e.set(t,!0),t}var Jm=function(t){this.coordSysDims=[],this.axisMap=ft(),this.categoryAxisMap=ft(),this.coordSysName=t},Qm={cartesian2d:function(t,e,n,i){var r=t.getReferringComponents("xAxis",Co).models[0],o=t.getReferringComponents("yAxis",Co).models[0];e.coordSysDims=["x","y"],n.set("x",r),n.set("y",o),tx(r)&&(i.set("x",r),e.firstCategoryDimIndex=0),tx(o)&&(i.set("y",o),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},singleAxis:function(t,e,n,i){var r=t.getReferringComponents("singleAxis",Co).models[0];e.coordSysDims=["single"],n.set("single",r),tx(r)&&(i.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,n,i){var r=t.getReferringComponents("polar",Co).models[0],o=r.findAxisModel("radiusAxis"),a=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],n.set("radius",o),n.set("angle",a),tx(o)&&(i.set("radius",o),e.firstCategoryDimIndex=0),tx(a)&&(i.set("angle",a),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},geo:function(t,e,n,i){e.coordSysDims=["lng","lat"]},parallel:function(t,e,n,i){var r=t.ecModel,o=r.getComponent("parallel",t.get("parallelIndex")),a=e.coordSysDims=o.dimensions.slice();E(o.parallelAxisIndex,(function(t,o){var s=r.getComponent("parallelAxis",t),l=a[o];n.set(l,s),tx(s)&&(i.set(l,s),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=o))}))}};function tx(t){return"category"===t.get("type")}function ex(t,e,n){var i,r,o,a=(n=n||{}).byIndex,s=n.stackedCoordDimension;!function(t){return!Om(t.schema)}(e)?(r=e.schema,i=r.dimensions,o=e.store):i=e;var l,u,h,c,p=!(!t||!t.get("stack"));if(E(i,(function(t,e){X(t)&&(i[e]=t={name:t}),p&&!t.isExtraCoord&&(a||l||!t.ordinalMeta||(l=t),u||"ordinal"===t.type||"time"===t.type||s&&s!==t.coordDim||(u=t))})),!u||a||l||(a=!0),u){h="__\0ecstackresult_"+t.id,c="__\0ecstackedover_"+t.id,l&&(l.createInvertedIndices=!0);var d=u.coordDim,f=u.type,g=0;E(i,(function(t){t.coordDim===d&&g++}));var y={name:h,coordDim:d,coordDimIndex:g,type:f,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length},v={name:c,coordDim:c,coordDimIndex:g+1,type:f,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length+1};r?(o&&(y.storeDimIndex=o.ensureCalculationDimension(c,f),v.storeDimIndex=o.ensureCalculationDimension(h,f)),r.appendCalculationDimension(y),r.appendCalculationDimension(v)):(i.push(y),i.push(v))}return{stackedDimension:u&&u.name,stackedByDimension:l&&l.name,isStackedByIndex:a,stackedOverDimension:c,stackResultDimension:h}}function nx(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function ix(t,e){return nx(t,e)?t.getCalculationInfo("stackResultDimension"):e}function rx(t,e,n){n=n||{};var i,r=e.getSourceManager(),o=!1;t?(o=!0,i=Hd(t)):o=(i=r.getSource()).sourceFormat===Lp;var a=function(t){var e=t.get("coordinateSystem"),n=new Jm(e),i=Qm[e];if(i)return i(t,n,n.axisMap,n.categoryAxisMap),n}(e),s=function(t,e){var n,i=t.get("coordinateSystem"),r=hd.get(i);return e&&e.coordSysDims&&(n=z(e.coordSysDims,(function(t){var n={name:t},i=e.axisMap.get(t);if(i){var r=i.get("type");n.type=Dm(r)}return n}))),n||(n=r&&(r.getDimensionsInfo?r.getDimensionsInfo():r.dimensions.slice())||["x","y"]),n}(e,a),l=n.useEncodeDefaulter,u=U(l)?l:l?H(Hp,s,e):null,h=Km(i,{coordDimensions:s,generateCoord:n.generateCoord,encodeDefine:e.getEncode(),encodeDefaulter:u,canOmitUnusedDimensions:!o}),c=function(t,e,n){var i,r;return n&&E(t,(function(t,o){var a=t.coordDim,s=n.categoryAxisMap.get(a);s&&(null==i&&(i=o),t.ordinalMeta=s.getOrdinalMeta(),e&&(t.createInvertedIndices=!0)),null!=t.otherDims.itemName&&(r=!0)})),r||null==i||(t[i].otherDims.itemName=0),i}(h.dimensions,n.createInvertedIndices,a),p=o?null:r.getSharedDataStore(h),d=ex(e,{schema:h,store:p}),f=new qm(h,e);f.setCalculationInfo(d);var g=null!=c&&function(t){if(t.sourceFormat===Lp)return!Y(fo(function(t){for(var e=0;ee[1]&&(e[1]=t[1])},t.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},t.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},t.prototype.isBlank=function(){return this._isBlank},t.prototype.setBlank=function(t){this._isBlank=t},t}();Go(ox);var ax=0,sx=function(){function t(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this.uid=++ax}return t.createByAxisModel=function(e){var n=e.option,i=n.data,r=i&&z(i,lx);return new t({categories:r,needCollect:!r,deduplication:!1!==n.dedplication})},t.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},t.prototype.parseAndCollect=function(t){var e,n=this._needCollect;if(!X(t)&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var i=this._getOrCreateMap();return null==(e=i.get(t))&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=NaN),e},t.prototype._getOrCreateMap=function(){return this._map||(this._map=ft(this.categories))},t}();function lx(t){return q(t)&&null!=t.value?t.value:t+""}function ux(t){return"interval"===t.type||"log"===t.type}function cx(t){var e=Math.pow(10,Kr(t)),n=t/e;return n?2===n?n=3:3===n?n=5:n*=2:n=1,zr(n*e)}function px(t){return Br(t)+2}function dx(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function fx(t,e){return t>=e[0]&&t<=e[1]}function gx(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}function yx(t,e){return t*(e[1]-e[0])+e[0]}var vx=function(t){function e(e){var n=t.call(this,e)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new sx({})),Y(i)&&(i=new sx({categories:z(i,(function(t){return q(t)?t.value:t}))})),n._ordinalMeta=i,n._extent=n.getSetting("extent")||[0,i.categories.length-1],n}return n(e,t),e.prototype.parse=function(t){return null==t?NaN:X(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},e.prototype.contain=function(t){return fx(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},e.prototype.normalize=function(t){return gx(t=this._getTickNumber(this.parse(t)),this._extent)},e.prototype.scale=function(t){return t=Math.round(yx(t,this._extent)),this.getRawOrdinalNumber(t)},e.prototype.getTicks=function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push({value:n}),n++;return t},e.prototype.getMinorTicks=function(t){},e.prototype.setSortInfo=function(t){if(null!=t){for(var e=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],r=0,o=this._ordinalMeta.categories.length,a=Math.min(o,e.length);r=0&&t=0&&t=t},e.prototype.getOrdinalMeta=function(){return this._ordinalMeta},e.prototype.calcNiceTicks=function(){},e.prototype.calcNiceExtent=function(){},e.type="ordinal",e}(ox);ox.registerClass(vx);var mx=zr,xx=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="interval",e._interval=0,e._intervalPrecision=2,e}return n(e,t),e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return fx(t,this._extent)},e.prototype.normalize=function(t){return gx(t,this._extent)},e.prototype.scale=function(t){return yx(t,this._extent)},e.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},e.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),this.setExtent(e[0],e[1])},e.prototype.getInterval=function(){return this._interval},e.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=px(t)},e.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!e)return o;n[0]1e4)return[];var s=o.length?o[o.length-1].value:i[1];return n[1]>s&&(t?o.push({value:mx(s+e,r)}):o.push({value:n[1]})),o},e.prototype.getMinorTicks=function(t){for(var e=this.getTicks(!0),n=[],i=this.getExtent(),r=1;ri[0]&&hi&&(a=r.interval=i);var s=r.intervalPrecision=px(a);return function(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),dx(t,0,e),dx(t,1,e),t[0]>t[1]&&(t[0]=t[1])}(r.niceTickExtent=[zr(Math.ceil(t[0]/a)*a,s),zr(Math.floor(t[1]/a)*a,s)],t),r}(i,t,e,n);this._intervalPrecision=o.intervalPrecision,this._interval=o.interval,this._niceExtent=o.niceTickExtent}},e.prototype.calcNiceExtent=function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var n=e[0];t.fixMax||(e[1]+=n/2),e[0]-=n/2}else e[1]=1;var i=e[1]-e[0];isFinite(i)||(e[0]=0,e[1]=1),this.calcNiceTicks(t.splitNumber,t.minInterval,t.maxInterval);var r=this._interval;t.fixMin||(e[0]=mx(Math.floor(e[0]/r)*r)),t.fixMax||(e[1]=mx(Math.ceil(e[1]/r)*r))},e.prototype.setNiceExtent=function(t,e){this._niceExtent=[t,e]},e.type="interval",e}(ox);ox.registerClass(xx);var _x="undefined"!=typeof Float32Array,bx=_x?Float32Array:Array;function Sx(t){return Y(t)?_x?new Float32Array(t):t:new bx(t)}var Mx="__ec_stack_";function Ix(t){return t.get("stack")||Mx+t.seriesIndex}function Tx(t){return t.dim+t.index}function Cx(t,e){var n=[];return e.eachSeriesByType(t,(function(t){Px(t)&&n.push(t)})),n}function Dx(t){var e=function(t){var e={};E(t,(function(t){var n=t.coordinateSystem.getBaseAxis();if("time"===n.type||"value"===n.type)for(var i=t.getData(),r=n.dim+"_"+n.index,o=i.getDimensionIndex(i.mapDimension(n.dim)),a=i.getStore(),s=0,l=a.count();s0&&(o=null===o?s:Math.min(o,s))}n[i]=o}}return n}(t),n=[];return E(t,(function(t){var i,r=t.coordinateSystem.getBaseAxis(),o=r.getExtent();if("category"===r.type)i=r.getBandWidth();else if("value"===r.type||"time"===r.type){var a=r.dim+"_"+r.index,s=e[a],l=Math.abs(o[1]-o[0]),u=r.scale.getExtent(),h=Math.abs(u[1]-u[0]);i=s?l/h*s:l}else{var c=t.getData();i=Math.abs(o[1]-o[0])/c.count()}var p=Er(t.get("barWidth"),i),d=Er(t.get("barMaxWidth"),i),f=Er(t.get("barMinWidth")||(Ox(t)?.5:1),i),g=t.get("barGap"),y=t.get("barCategoryGap");n.push({bandWidth:i,barWidth:p,barMaxWidth:d,barMinWidth:f,barGap:g,barCategoryGap:y,axisKey:Tx(r),stackId:Ix(t)})})),Ax(n)}function Ax(t){var e={};E(t,(function(t,n){var i=t.axisKey,r=t.bandWidth,o=e[i]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},a=o.stacks;e[i]=o;var s=t.stackId;a[s]||o.autoWidthCount++,a[s]=a[s]||{width:0,maxWidth:0};var l=t.barWidth;l&&!a[s].width&&(a[s].width=l,l=Math.min(o.remainedWidth,l),o.remainedWidth-=l);var u=t.barMaxWidth;u&&(a[s].maxWidth=u);var h=t.barMinWidth;h&&(a[s].minWidth=h);var c=t.barGap;null!=c&&(o.gap=c);var p=t.barCategoryGap;null!=p&&(o.categoryGap=p)}));var n={};return E(e,(function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=t.categoryGap;if(null==o){var a=G(i).length;o=Math.max(35-4*a,15)+"%"}var s=Er(o,r),l=Er(t.gap,1),u=t.remainedWidth,h=t.autoWidthCount,c=(u-s)/(h+(h-1)*l);c=Math.max(c,0),E(i,(function(t){var e=t.maxWidth,n=t.minWidth;if(t.width)i=t.width,e&&(i=Math.min(i,e)),n&&(i=Math.max(i,n)),t.width=i,u-=i+l*i,h--;else{var i=c;e&&ei&&(i=n),i!==c&&(t.width=i,u-=i+l*i,h--)}})),c=(u-s)/(h+(h-1)*l),c=Math.max(c,0);var p,d=0;E(i,(function(t,e){t.width||(t.width=c),p=t,d+=t.width*(1+l)})),p&&(d-=p.width*l);var f=-d/2;E(i,(function(t,i){n[e][i]=n[e][i]||{bandWidth:r,offset:f,width:t.width},f+=t.width*(1+l)}))})),n}function kx(t,e){var n=Cx(t,e),i=Dx(n);E(n,(function(t){var e=t.getData(),n=t.coordinateSystem.getBaseAxis(),r=Ix(t),o=i[Tx(n)][r],a=o.offset,s=o.width;e.setLayout({bandWidth:o.bandWidth,offset:a,size:s})}))}function Lx(t){return{seriesType:t,plan:yg(),reset:function(t){if(Px(t)){var e=t.getData(),n=t.coordinateSystem,i=n.getBaseAxis(),r=n.getOtherAxis(i),o=e.getDimensionIndex(e.mapDimension(r.dim)),a=e.getDimensionIndex(e.mapDimension(i.dim)),s=t.get("showBackground",!0),l=e.mapDimension(r.dim),u=e.getCalculationInfo("stackResultDimension"),h=nx(e,l)&&!!e.getCalculationInfo("stackedOnSeries"),c=r.isHorizontal(),p=function(t,e){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1:0))}(0,r),d=Ox(t),f=t.get("barMinHeight")||0,g=u&&e.getDimensionIndex(u),y=e.getLayout("size"),v=e.getLayout("offset");return{progress:function(t,e){for(var i,r=t.count,l=d&&Sx(3*r),u=d&&s&&Sx(3*r),m=d&&Sx(r),x=n.master.getRect(),_=c?x.width:x.height,b=e.getStore(),w=0;null!=(i=t.next());){var S=b.get(h?g:o,i),M=b.get(a,i),I=p,T=void 0;h&&(T=+S-b.get(o,i));var C=void 0,D=void 0,A=void 0,k=void 0;if(c){var L=n.dataToPoint([S,M]);h&&(I=n.dataToPoint([T,M])[0]),C=I,D=L[1]+v,A=L[0]-I,k=y,Math.abs(A)0)for(var s=0;s=0;--s)if(l[u]){o=l[u];break}o=o||a.none}if(Y(o)){var h=null==t.level?0:t.level>=0?t.level:o.length+t.level;o=o[h=Math.min(h,o.length-1)]}}return Vc(new Date(t.value),o,r,i)}(t,e,n,this.getSetting("locale"),i)},e.prototype.getTicks=function(){var t=this._interval,e=this._extent,n=[];if(!t)return n;n.push({value:e[0],level:0});var i=this.getSetting("useUTC"),r=function(t,e,n,i){var o=Rc,a=0;function s(t,e,n,r,o,a,s){for(var l=new Date(e),u=e,h=l[r]();u1&&0===u&&o.unshift({value:o[0].value-p})}}for(u=0;u=i[0]&&v<=i[1]&&c++)}var m=(i[1]-i[0])/e;if(c>1.5*m&&p>m/1.5)break;if(u.push(g),c>m||t===o[d])break}h=[]}}var x=B(z(u,(function(t){return B(t,(function(t){return t.value>=i[0]&&t.value<=i[1]&&!t.notAdd}))})),(function(t){return t.length>0})),_=[],b=x.length-1;for(d=0;dn&&(this._approxInterval=n);var o=Nx.length,a=Math.min(function(t,e,n,i){for(;n>>1;t[r][1]16?16:t>7.5?7:t>3.5?4:t>1.5?2:1}function zx(t){return(t/=2592e6)>6?6:t>3?3:t>2?2:1}function Vx(t){return(t/=36e5)>12?12:t>6?6:t>3.5?4:t>2?2:1}function Bx(t,e){return(t/=e?6e4:1e3)>30?30:t>20?20:t>15?15:t>10?10:t>5?5:t>2?2:1}function Fx(t){return $r(t,!0)}function Gx(t,e,n){var i=new Date(t);switch(Ec(e)){case"year":case"month":i[qc(n)](0);case"day":i[Kc(n)](1);case"hour":i[$c(n)](0);case"minute":i[Jc(n)](0);case"second":i[Qc(n)](0),i[tp(n)](0)}return i.getTime()}ox.registerClass(Rx);var Wx=ox.prototype,Hx=xx.prototype,Yx=zr,Ux=Math.floor,Xx=Math.ceil,Zx=Math.pow,jx=Math.log,qx=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e.base=10,e._originalScale=new xx,e._interval=0,e}return n(e,t),e.prototype.getTicks=function(t){var e=this._originalScale,n=this._extent,i=e.getExtent();return z(Hx.getTicks.call(this,t),(function(t){var e=t.value,r=zr(Zx(this.base,e));return r=e===n[0]&&this._fixMin?$x(r,i[0]):r,{value:r=e===n[1]&&this._fixMax?$x(r,i[1]):r}}),this)},e.prototype.setExtent=function(t,e){var n=this.base;t=jx(t)/jx(n),e=jx(e)/jx(n),Hx.setExtent.call(this,t,e)},e.prototype.getExtent=function(){var t=this.base,e=Wx.getExtent.call(this);e[0]=Zx(t,e[0]),e[1]=Zx(t,e[1]);var n=this._originalScale.getExtent();return this._fixMin&&(e[0]=$x(e[0],n[0])),this._fixMax&&(e[1]=$x(e[1],n[1])),e},e.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=jx(t[0])/jx(e),t[1]=jx(t[1])/jx(e),Wx.unionExtent.call(this,t)},e.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},e.prototype.calcNiceTicks=function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(n===1/0||n<=0)){var i=qr(n);for(t/n*i<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var r=[zr(Xx(e[0]/i)*i),zr(Ux(e[1]/i)*i)];this._interval=i,this._niceExtent=r}},e.prototype.calcNiceExtent=function(t){Hx.calcNiceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return fx(t=jx(t)/jx(this.base),this._extent)},e.prototype.normalize=function(t){return gx(t=jx(t)/jx(this.base),this._extent)},e.prototype.scale=function(t){return t=yx(t,this._extent),Zx(this.base,t)},e.type="log",e}(ox),Kx=qx.prototype;function $x(t,e){return Yx(t,Br(e))}Kx.getMinorTicks=Hx.getMinorTicks,Kx.getLabel=Hx.getLabel,ox.registerClass(qx);var Jx=function(){function t(t,e,n){this._prepareParams(t,e,n)}return t.prototype._prepareParams=function(t,e,n){n[1]0&&s>0&&!l&&(a=0),a<0&&s<0&&!u&&(s=0));var c=this._determinedMin,p=this._determinedMax;return null!=c&&(a=c,l=!0),null!=p&&(s=p,u=!0),{min:a,max:s,minFixed:l,maxFixed:u,isBlank:h}},t.prototype.modifyDataMinMax=function(t,e){this[t_[t]]=e},t.prototype.setDeterminedMinMax=function(t,e){this[Qx[t]]=e},t.prototype.freeze=function(){this.frozen=!0},t}(),Qx={min:"_determinedMin",max:"_determinedMax"},t_={min:"_dataMin",max:"_dataMax"};function e_(t,e,n){var i=t.rawExtentInfo;return i||(i=new Jx(t,e,n),t.rawExtentInfo=i,i)}function n_(t,e){return null==e?null:nt(e)?NaN:t.parse(e)}function i_(t,e){var n=t.type,i=e_(t,e,t.getExtent()).calculate();t.setBlank(i.isBlank);var r=i.min,o=i.max,a=e.ecModel;if(a&&"time"===n){var s=Cx("bar",a),l=!1;if(E(s,(function(t){l=l||t.getBaseAxis()===e.axis})),l){var u=Dx(s),h=function(t,e,n,i){var r=n.axis.getExtent(),o=r[1]-r[0],a=function(t,e,n){if(t&&e){var i=t[Tx(e)];return i}}(i,n.axis);if(void 0===a)return{min:t,max:e};var s=1/0;E(a,(function(t){s=Math.min(t.offset,s)}));var l=-1/0;E(a,(function(t){l=Math.max(t.offset+t.width,l)})),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/o)-h;return{min:t-=c*(s/u),max:e+=c*(l/u)}}(r,o,e,u);r=h.min,o=h.max}}return{extent:[r,o],fixMin:i.minFixed,fixMax:i.maxFixed}}function r_(t,e){var n=e,i=i_(t,n),r=i.extent,o=n.get("splitNumber");t instanceof qx&&(t.base=n.get("logBase"));var a=t.type,s=n.get("interval"),l="interval"===a||"time"===a;t.setExtent(r[0],r[1]),t.calcNiceExtent({splitNumber:o,fixMin:i.fixMin,fixMax:i.fixMax,minInterval:l?n.get("minInterval"):null,maxInterval:l?n.get("maxInterval"):null}),null!=s&&t.setInterval&&t.setInterval(s)}function o_(t,e){if(e=e||t.get("type"))switch(e){case"category":return new vx({ordinalMeta:t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),extent:[1/0,-1/0]});case"time":return new Rx({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new(ox.getClass(e)||xx)}}function a_(t){var e,n,i=t.getLabelModel().get("formatter"),r="category"===t.type?t.scale.getExtent()[0]:null;return"time"===t.scale.type?(n=i,function(e,i){return t.scale.getFormattedLabel(e,i,n)}):X(i)?function(e){return function(n){var i=t.scale.getLabel(n);return e.replace("{value}",null!=i?i:"")}}(i):U(i)?(e=i,function(n,i){return null!=r&&(i=n.value-r),e(s_(t,n),i,null!=n.level?{level:n.level}:null)}):function(e){return t.scale.getLabel(e)}}function s_(t,e){return"category"===t.type?t.scale.getLabel(e):e.value}function l_(t,e){var n=e*Math.PI/180,i=t.width,r=t.height,o=i*Math.abs(Math.cos(n))+Math.abs(r*Math.sin(n)),a=i*Math.abs(Math.sin(n))+Math.abs(r*Math.cos(n));return new sr(t.x,t.y,o,a)}function u_(t){var e=t.get("interval");return null==e?"auto":e}function h_(t){return"category"===t.type&&0===u_(t.getLabelModel())}function c_(t,e){var n={};return E(t.mapDimensionsAll(e),(function(e){n[ix(t,e)]=!0})),G(n)}var p_=function(){function t(){}return t.prototype.getNeedCrossZero=function(){return!this.option.scale},t.prototype.getCoordSysModel=function(){},t}(),d_={isDimensionStacked:nx,enableDataStack:ex,getStackedDimension:ix},f_=Object.freeze({__proto__:null,createList:function(t){return rx(null,t)},getLayoutRect:xp,dataStack:d_,createScale:function(t,e){var n=e;e instanceof dc||(n=new dc(e));var i=o_(n);return i.setExtent(t[0],t[1]),r_(i,n),i},mixinAxisModelCommonMethods:function(t){R(t,p_)},getECData:Hs,createTextStyle:function(t,e){return Uh(t,null,null,"normal"!==(e=e||{}).state)},createDimensions:function(t,e){return Km(t,e).dimensions},createSymbol:Ly,enableHoverEmphasis:Ol});function g_(t,e){return Math.abs(t-e)<1e-8}function y_(t,e,n){var i=0,r=t[0];if(!r)return!1;for(var o=1;on&&(t=r,n=a)}if(t)return function(t){for(var e=0,n=0,i=0,r=t.length,o=t[r-1][0],a=t[r-1][1],s=0;s>1^-(1&s),l=l>>1^-(1&l),r=s+=r,o=l+=o,i.push([s/n,l/n])}return i}function C_(t,e){return z(B((t=function(t){if(!t.UTF8Encoding)return t;var e=t,n=e.UTF8Scale;return null==n&&(n=1024),E(e.features,(function(t){var e=t.geometry,i=e.encodeOffsets,r=e.coordinates;if(i)switch(e.type){case"LineString":e.coordinates=T_(r,i,n);break;case"Polygon":case"MultiLineString":I_(r,i,n);break;case"MultiPolygon":E(r,(function(t,e){return I_(t,i[e],n)}))}})),e.UTF8Encoding=!1,e}(t)).features,(function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0})),(function(t){var n=t.properties,i=t.geometry,r=[];switch(i.type){case"Polygon":var o=i.coordinates;r.push(new b_(o[0],o.slice(1)));break;case"MultiPolygon":E(i.coordinates,(function(t){t[0]&&r.push(new b_(t[0],t.slice(1)))}));break;case"LineString":r.push(new w_([i.coordinates]));break;case"MultiLineString":r.push(new w_(i.coordinates))}var a=new S_(n[e||"name"],r,n.cp);return a.properties=n,a}))}var D_=Object.freeze({__proto__:null,linearMap:Nr,round:zr,asc:Vr,getPrecision:Br,getPrecisionSafe:Fr,getPixelPrecision:Gr,getPercentWithPrecision:Wr,MAX_SAFE_INTEGER:Yr,remRadian:Ur,isRadianAroundZero:Xr,parseDate:jr,quantity:qr,quantityExponent:Kr,nice:$r,quantile:Jr,reformIntervals:Qr,isNumeric:eo,numericToNumber:to}),A_=Object.freeze({__proto__:null,parse:jr,format:Vc}),k_=Object.freeze({__proto__:null,extendShape:fh,extendPath:yh,makePath:xh,makeImage:_h,mergePath:wh,resizePath:Sh,createIcon:Ph,updateProps:rh,initProps:oh,getTransform:Ih,clipPointsByRect:kh,clipRectByRect:Lh,registerShape:vh,getShapeClass:mh,Group:Cr,Image:_s,Text:ks,Circle:hu,Ellipse:pu,Sector:Cu,Ring:Au,Polygon:Pu,Polyline:Ru,Rect:Cs,Line:zu,BezierCurve:Gu,Arc:Hu,IncrementalDisplayable:th,CompoundPath:Yu,LinearGradient:Xu,RadialGradient:Zu,BoundingRect:sr}),L_=Object.freeze({__proto__:null,addCommas:ep,toCamelCase:np,normalizeCssArray:ip,encodeHTML:ap,formatTpl:hp,getTooltipMarker:cp,formatTime:function(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=jr(e),r=n?"getUTC":"get",o=i[r+"FullYear"](),a=i[r+"Month"]()+1,s=i[r+"Date"](),l=i[r+"Hours"](),u=i[r+"Minutes"](),h=i[r+"Seconds"](),c=i[r+"Milliseconds"]();return t.replace("MM",Nc(a,2)).replace("M",a).replace("yyyy",o).replace("yy",Nc(o%100+"",2)).replace("dd",Nc(s,2)).replace("d",s).replace("hh",Nc(l,2)).replace("h",l).replace("mm",Nc(u,2)).replace("m",u).replace("ss",Nc(h,2)).replace("s",h).replace("SSS",Nc(c,3))},capitalFirst:function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},truncateText:$o,getTextRect:function(t,e,n,i,r,o,a,s){return new ks({style:{text:t,font:e,align:n,verticalAlign:i,padding:r,rich:o,overflow:a?"truncate":null,lineHeight:s}}).getBoundingRect()}}),P_=Object.freeze({__proto__:null,map:z,each:E,indexOf:P,inherits:O,reduce:V,filter:B,bind:W,curry:H,isArray:Y,isString:X,isObject:q,isFunction:U,extend:A,defaults:k,clone:T,merge:C}),O_=So();function E_(t,e){var n,i,r=z_(t,"labels"),o=u_(e);return V_(r,o)||(U(o)?n=G_(t,o):(i="auto"===o?function(t){var e=O_(t).autoInterval;return null!=e?e:O_(t).autoInterval=t.calculateCategoryInterval()}(t):o,n=F_(t,i)),B_(r,o,{labels:n,labelCategoryInterval:i}))}function z_(t,e){return O_(t)[e]||(O_(t)[e]=[])}function V_(t,e){for(var n=0;n1&&h/l>2&&(u=Math.round(Math.ceil(u/l)*l));var c=h_(t),p=a.get("showMinLabel")||c,d=a.get("showMaxLabel")||c;p&&u!==o[0]&&g(o[0]);for(var f=u;f<=o[1];f+=l)g(f);function g(t){var e={value:t};s.push(n?t:{formattedLabel:i(e),rawLabel:r.getLabel(e),tickValue:t})}return d&&f-l!==o[1]&&g(o[1]),s}function G_(t,e,n){var i=t.scale,r=a_(t),o=[];return E(i.getTicks(),(function(t){var a=i.getLabel(t),s=t.value;e(t.value,a)&&o.push(n?s:{formattedLabel:r(t),rawLabel:a,tickValue:s})})),o}var W_=[0,1],H_=function(){function t(t,e,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=e,this._extent=n||[0,0]}return t.prototype.contain=function(t){var e=this._extent,n=Math.min(e[0],e[1]),i=Math.max(e[0],e[1]);return t>=n&&t<=i},t.prototype.containData=function(t){return this.scale.contain(t)},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.getPixelPrecision=function(t){return Gr(t||this.scale.getExtent(),this._extent)},t.prototype.setExtent=function(t,e){var n=this._extent;n[0]=t,n[1]=e},t.prototype.dataToCoord=function(t,e){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&"ordinal"===i.type&&Y_(n=n.slice(),i.count()),Nr(t,W_,n,e)},t.prototype.coordToData=function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&Y_(n=n.slice(),i.count());var r=Nr(t,n,W_,e);return this.scale.scale(r)},t.prototype.pointToData=function(t,e){},t.prototype.getTicksCoords=function(t){var e=(t=t||{}).tickModel||this.getTickModel(),n=z(function(t,e){return"category"===t.type?function(t,e){var n,i,r=z_(t,"ticks"),o=u_(e),a=V_(r,o);if(a)return a;if(e.get("show")&&!t.scale.isBlank()||(n=[]),U(o))n=G_(t,o,!0);else if("auto"===o){var s=E_(t,t.getLabelModel());i=s.labelCategoryInterval,n=z(s.labels,(function(t){return t.tickValue}))}else n=F_(t,i=o,!0);return B_(r,o,{ticks:n,tickCategoryInterval:i})}(t,e):{ticks:z(t.scale.getTicks(),(function(t){return t.value}))}}(this,e).ticks,(function(t){return{coord:this.dataToCoord("ordinal"===this.scale.type?this.scale.getRawOrdinalNumber(t):t),tickValue:t}}),this);return function(t,e,n,i){var r=e.length;if(t.onBand&&!n&&r){var o,a,s=t.getExtent();if(1===r)e[0].coord=s[0],o=e[1]={coord:s[0]};else{var l=e[r-1].tickValue-e[0].tickValue,u=(e[r-1].coord-e[0].coord)/l;E(e,(function(t){t.coord-=u/2})),a=1+t.scale.getExtent()[1]-e[r-1].tickValue,o={coord:e[r-1].coord+u*a},e.push(o)}var h=s[0]>s[1];c(e[0].coord,s[0])&&(i?e[0].coord=s[0]:e.shift()),i&&c(s[0],e[0].coord)&&e.unshift({coord:s[0]}),c(s[1],o.coord)&&(i?o.coord=s[1]:e.pop()),i&&c(o.coord,s[1])&&e.push({coord:s[1]})}function c(t,e){return t=zr(t),e=zr(e),h?t>e:t0&&t<100||(t=5),z(this.scale.getMinorTicks(t),(function(t){return z(t,(function(t){return{coord:this.dataToCoord(t),tickValue:t}}),this)}),this)},t.prototype.getViewLabels=function(){return function(t){return"category"===t.type?function(t){var e=t.getLabelModel(),n=E_(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}(t):function(t){var e=t.scale.getTicks(),n=a_(t);return{labels:z(e,(function(e,i){return{level:e.level,formattedLabel:n(e,i),rawLabel:t.scale.getLabel(e),tickValue:e.value}}))}}(t)}(this).labels},t.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},t.prototype.getTickModel=function(){return this.model.getModel("axisTick")},t.prototype.getBandWidth=function(){var t=this._extent,e=this.scale.getExtent(),n=e[1]-e[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},t.prototype.calculateCategoryInterval=function(){return function(t){var e=function(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}(t),n=a_(t),i=(e.axisRotate-e.labelRotate)/180*Math.PI,r=t.scale,o=r.getExtent(),a=r.count();if(o[1]-o[0]<1)return 0;var s=1;a>40&&(s=Math.max(1,Math.floor(a/40)));for(var l=o[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(i)),c=Math.abs(u*Math.sin(i)),p=0,d=0;l<=o[1];l+=s){var f,g,y=cr(n({value:l}),e.font,"center","top");f=1.3*y.width,g=1.3*y.height,p=Math.max(p,f,7),d=Math.max(d,g,7)}var v=p/h,m=d/c;isNaN(v)&&(v=1/0),isNaN(m)&&(m=1/0);var x=Math.max(0,Math.floor(Math.min(v,m))),_=O_(t.model),b=t.getExtent(),w=_.lastAutoInterval,S=_.lastTickCount;return null!=w&&null!=S&&Math.abs(w-x)<=1&&Math.abs(S-a)<=1&&w>x&&_.axisExtent0===b[0]&&_.axisExtent1===b[1]?x=w:(_.lastTickCount=a,_.lastAutoInterval=x,_.axisExtent0=b[0],_.axisExtent1=b[1]),x}(this)},t}();function Y_(t,e){var n=(t[1]-t[0])/e/2;t[0]+=n,t[1]-=n}var U_=2*Math.PI,X_=qa.CMD,Z_=["top","right","bottom","left"];function j_(t,e,n,i,r){var o=n.width,a=n.height;switch(t){case"top":i.set(n.x+o/2,n.y-e),r.set(0,-1);break;case"bottom":i.set(n.x+o/2,n.y+a+e),r.set(0,1);break;case"left":i.set(n.x-e,n.y+a/2),r.set(-1,0);break;case"right":i.set(n.x+o+e,n.y+a/2),r.set(1,0)}}function q_(t,e,n,i,r,o,a,s,l){a-=t,s-=e;var u=Math.sqrt(a*a+s*s),h=(a/=u)*n+t,c=(s/=u)*n+e;if(Math.abs(i-r)%U_<1e-4)return l[0]=h,l[1]=c,u-n;if(o){var p=i;i=ts(r),r=ts(p)}else i=ts(i),r=ts(r);i>r&&(r+=U_);var d=Math.atan2(s,a);if(d<0&&(d+=U_),d>=i&&d<=r||d+U_>=i&&d+U_<=r)return l[0]=h,l[1]=c,u-n;var f=n*Math.cos(i)+t,g=n*Math.sin(i)+e,y=n*Math.cos(r)+t,v=n*Math.sin(r)+e,m=(f-a)*(f-a)+(g-s)*(g-s),x=(y-a)*(y-a)+(v-s)*(v-s);return m0){e=e/180*Math.PI,eb.fromArray(t[0]),nb.fromArray(t[1]),ib.fromArray(t[2]),Ji.sub(rb,eb,nb),Ji.sub(ob,ib,nb);var n=rb.len(),i=ob.len();if(!(n<.001||i<.001)){rb.scale(1/n),ob.scale(1/i);var r=rb.dot(ob);if(Math.cos(e)1&&Ji.copy(lb,ib),lb.toArray(t[1])}}}}function hb(t,e,n){if(n<=180&&n>0){n=n/180*Math.PI,eb.fromArray(t[0]),nb.fromArray(t[1]),ib.fromArray(t[2]),Ji.sub(rb,nb,eb),Ji.sub(ob,ib,nb);var i=rb.len(),r=ob.len();if(!(i<.001||r<.001)&&(rb.scale(1/i),ob.scale(1/r),rb.dot(e)=a)Ji.copy(lb,ib);else{lb.scaleAndAdd(ob,o/Math.tan(Math.PI/2-s));var l=ib.x!==nb.x?(lb.x-nb.x)/(ib.x-nb.x):(lb.y-nb.y)/(ib.y-nb.y);if(isNaN(l))return;l<0?Ji.copy(lb,nb):l>1&&Ji.copy(lb,ib)}lb.toArray(t[1])}}}function cb(t,e,n,i){var r="normal"===n,o=r?t:t.ensureState(n);o.ignore=e;var a=i.get("smooth");a&&!0===a&&(a=.3),o.shape=o.shape||{},a>0&&(o.shape.smooth=a);var s=i.getModel("lineStyle").getLineStyle();r?t.useStyle(s):o.style=s}function pb(t,e){var n=e.smooth,i=e.points;if(i)if(t.moveTo(i[0][0],i[0][1]),n>0&&i.length>=3){var r=Et(i[0],i[1]),o=Et(i[1],i[2]);if(!r||!o)return t.lineTo(i[1][0],i[1][1]),void t.lineTo(i[2][0],i[2][1]);var a=Math.min(r,o)*n,s=Bt([],i[1],i[0],a/r),l=Bt([],i[1],i[2],a/o),u=Bt([],s,l,.5);t.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),t.bezierCurveTo(l[0],l[1],l[0],l[1],i[2][0],i[2][1])}else for(var h=1;h0&&o&&_(-h/a,0,a);var f,g,y=t[0],v=t[a-1];return m(),f<0&&b(-f,.8),g<0&&b(g,.8),m(),x(f,g,1),x(g,f,-1),m(),f<0&&w(-f),g<0&&w(g),u}function m(){f=y.rect[e]-i,g=r-v.rect[e]-v.rect[n]}function x(t,e,n){if(t<0){var i=Math.min(e,-t);if(i>0){_(i*n,0,a);var r=i+t;r<0&&b(-r*n,1)}else b(-t*n,1)}}function _(n,i,r){0!==n&&(u=!0);for(var o=i;o0)for(l=0;l0;l--)_(-o[l-1]*c,l,a)}}function w(t){var e=t<0?-1:1;t=Math.abs(t);for(var n=Math.ceil(t/(a-1)),i=0;i0?_(n,0,i+1):_(-n,a-i-1,a),(t-=n)<=0)return}}function vb(t,e,n,i){return yb(t,"y","height",e,n,i)}function mb(t){var e=[];t.sort((function(t,e){return e.priority-t.priority}));var n=new sr(0,0,0,0);function i(t){if(!t.ignore){var e=t.ensureState("emphasis");null==e.ignore&&(e.ignore=!1)}t.ignore=!0}for(var r=0;r=0&&n.attr(d.oldLayoutSelect),P(u,"emphasis")>=0&&n.attr(d.oldLayoutEmphasis)),rh(n,s,e,a)}else if(n.attr(s),!Jh(n).valueAnimation){var h=rt(n.style.opacity,1);n.style.opacity=0,oh(n,{style:{opacity:h}},e,a)}if(d.oldLayout=s,n.states.select){var c=d.oldLayoutSelect={};Ib(c,s,Tb),Ib(c,n.states.select,Tb)}if(n.states.emphasis){var p=d.oldLayoutEmphasis={};Ib(p,s,Tb),Ib(p,n.states.emphasis,Tb)}tc(n,a,l,e,e)}if(i&&!i.ignore&&!i.invisible){r=(d=Mb(i)).oldLayout;var d,f={points:i.shape.points};r?(i.attr({shape:r}),rh(i,{shape:f},e)):(i.setShape(f),i.style.strokePercent=0,oh(i,{style:{strokePercent:1}},e)),d.oldLayout=f}},t}(),Db=So(),Ab=Math.sin,kb=Math.cos,Lb=Math.PI,Pb=2*Math.PI,Ob=180/Lb,Rb=function(){function t(){}return t.prototype.reset=function(t){this._start=!0,this._d=[],this._str="",this._p=Math.pow(10,t||4)},t.prototype.moveTo=function(t,e){this._add("M",t,e)},t.prototype.lineTo=function(t,e){this._add("L",t,e)},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){this._add("C",t,e,n,i,r,o)},t.prototype.quadraticCurveTo=function(t,e,n,i){this._add("Q",t,e,n,i)},t.prototype.arc=function(t,e,n,i,r,o){this.ellipse(t,e,n,n,0,i,r,o)},t.prototype.ellipse=function(t,e,n,i,r,o,a,s){var d,l=a-o,u=!s,h=Math.abs(l),c=En(h-Pb)||(u?l>=Pb:-l>=Pb),p=l>0?l%Pb:l%Pb+Pb;d=!!c||!En(h)&&p>=Lb==!!u;var f=t+n*kb(o),g=e+i*Ab(o);this._start&&this._add("M",f,g);var y=Math.round(r*Ob);if(c){var v=1/this._p,m=(u?1:-1)*(Pb-v);this._add("A",n,i,y,1,+u,t+n*kb(o+m),e+i*Ab(o+m)),v>.01&&this._add("A",n,i,y,0,+u,f,g)}else{var x=t+n*kb(a),_=e+i*Ab(a);this._add("A",n,i,y,+d,+u,x,_)}},t.prototype.rect=function(t,e,n,i){this._add("M",t,e),this._add("l",n,0),this._add("l",0,i),this._add("l",-n,0),this._add("Z")},t.prototype.closePath=function(){this._d.length>0&&this._add("Z")},t.prototype._add=function(t,e,n,i,r,o,a,s,l){for(var u=[],h=this._p,c=1;c"}(r,e.attrs)+(e.text||"")+(i?""+n+z(i,(function(e){return t(e)})).join(n)+n:"")+""}(t)}function Ub(t){return{zrId:t,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssClassIdx:0,cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function Xb(t,e,n,i){return Hb("svg","root",{width:t,height:e,xmlns:Fb,"xmlns:xlink":Gb,version:"1.1",baseProfile:"full",viewBox:!!i&&"0 0 "+t+" "+e},n)}var Zb={cubicIn:"0.32,0,0.67,0",cubicOut:"0.33,1,0.68,1",cubicInOut:"0.65,0,0.35,1",quadraticIn:"0.11,0,0.5,0",quadraticOut:"0.5,1,0.89,1",quadraticInOut:"0.45,0,0.55,1",quarticIn:"0.5,0,0.75,0",quarticOut:"0.25,1,0.5,1",quarticInOut:"0.76,0,0.24,1",quinticIn:"0.64,0,0.78,0",quinticOut:"0.22,1,0.36,1",quinticInOut:"0.83,0,0.17,1",sinusoidalIn:"0.12,0,0.39,0",sinusoidalOut:"0.61,1,0.88,1",sinusoidalInOut:"0.37,0,0.63,1",exponentialIn:"0.7,0,0.84,0",exponentialOut:"0.16,1,0.3,1",exponentialInOut:"0.87,0,0.13,1",circularIn:"0.55,0,1,0.45",circularOut:"0,0.55,0.45,1",circularInOut:"0.85,0,0.15,1"},jb="transform-origin";function qb(t,e,n){var i=A({},t.shape);A(i,e),t.buildPath(n,i);var r=new Rb;return r.reset(Yn(t)),n.rebuildPath(r,1),r.generateStr(),r.getStr()}function Kb(t,e){var n=e.originX,i=e.originY;(n||i)&&(t[jb]=n+"px "+i+"px")}var $b={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function Jb(t,e){var n=e.zrId+"-ani-"+e.cssAnimIdx++;return e.cssAnims[n]=t,n}function Qb(t){return X(t)?Zb[t]?"cubic-bezier("+Zb[t]+")":rn(t)?t:"":""}function tw(t,e,n,i){var r=t.animators,o=r.length,a=[];if(t instanceof Yu){if(y=function(t,e,n){var i,r,o=t.shape.paths,a={};if(E(o,(function(t){var e=Ub(n.zrId);e.animation=!0,tw(t,{},e,!0);var o=e.cssAnims,s=e.cssNodes,l=G(o),u=l.length;if(u){var h=o[r=l[u-1]];for(var c in h){var p=h[c];a[c]=a[c]||{d:""},a[c].d+=p.d||""}for(var d in s){var f=s[d].animation;f.indexOf(r)>=0&&(i=f)}}})),i){e.d=!1;var s=Jb(a,n);return i.replace(r,s)}}(t,e,n))a.push(y);else if(!o)return}else if(!o)return;for(var s={},l=0;l0})).length)return Jb(h,n)+" "+r[0]+" both"}for(var g in s){var y;(y=f(s[g]))&&a.push(y)}if(a.length){var v=n.zrId+"-cls-"+n.cssClassIdx++;n.cssNodes["."+v]={animation:a.join(",")},e.class=v}}var ew=Math.round;function nw(t){return t&&X(t.src)}function iw(t){return t&&U(t.toDataURL)}function rw(t,e,n,i){(function(t,e,n,i){var r=null==e.opacity?1:e.opacity;if(n instanceof _s)t("opacity",r);else{if(function(t){var e=t.fill;return null!=e&&e!==Nb}(e)){var o=Rn(e.fill);t("fill",o.color);var a=null!=e.fillOpacity?e.fillOpacity*o.opacity*r:o.opacity*r;(i||a<1)&&t("fill-opacity",a)}else t("fill",Nb);if(function(t){var e=t.stroke;return null!=e&&e!==Nb}(e)){var s=Rn(e.stroke);t("stroke",s.color);var l=e.strokeNoScale?n.getLineScale():1,u=l?(e.lineWidth||0)/l:0,h=null!=e.strokeOpacity?e.strokeOpacity*s.opacity*r:s.opacity*r,c=e.strokeFirst;if((i||1!==u)&&t("stroke-width",u),(i||c)&&t("paint-order",c?"stroke":"fill"),(i||h<1)&&t("stroke-opacity",h),e.lineDash){var p=Vy(n),d=p[0],f=p[1];d&&(f=Eb(f||0),t("stroke-dasharray",d.join(",")),(f||i)&&t("stroke-dashoffset",f))}else i&&t("stroke-dasharray",Nb);for(var g=0;gl?Dw(t,null==n[c+1]?null:n[c+1].elm,n,s,c):Aw(t,e,a,l))}(n,i,r):Mw(r)?(Mw(t.text)&&bw(n,""),Dw(n,null,r,0,r.length-1)):Mw(i)?Aw(n,i,0,i.length-1):Mw(t.text)&&bw(n,""):t.text!==e.text&&(Mw(i)&&Aw(n,i,0,i.length-1),bw(n,e.text)))}var Pw=0,Ow=function(){function t(t,e,n){if(this.type="svg",this.refreshHover=function(){},this.configLayer=function(){},this.storage=e,this._opts=n=A({},n),this.root=t,this._id="zr"+Pw++,this._oldVNode=Xb(n.width,n.height),t&&!n.ssr){var i=this._viewport=document.createElement("div");i.style.cssText="position:relative;overflow:hidden";var r=this._svgDom=this._oldVNode.elm=Wb("svg");kw(null,this._oldVNode),i.appendChild(r),t.appendChild(i)}this.resize(n.width,n.height)}return t.prototype.getType=function(){return this.type},t.prototype.getViewportRoot=function(){return this._viewport},t.prototype.getViewportRootOffset=function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},t.prototype.getSvgDom=function(){return this._svgDom},t.prototype.refresh=function(){if(this.root){var t=this.renderToVNode({willUpdate:!0});t.attrs.style="position:absolute;left:0;top:0;user-select:none",function(t,e){if(Tw(t,e))Lw(t,e);else{var n=t.elm,i=xw(n);Cw(e),null!==i&&(yw(i,e.elm,_w(n)),Aw(i,[t],0,0))}}(this._oldVNode,t),this._oldVNode=t}},t.prototype.renderOneToVNode=function(t){return dw(t,Ub(this._id))},t.prototype.renderToVNode=function(t){t=t||{};var e=this.storage.getDisplayList(!0),n=this._backgroundColor,i=this._width,r=this._height,o=Ub(this._id);o.animation=t.animation,o.willUpdate=t.willUpdate,o.compress=t.compress;var a=[];if(n&&"none"!==n){var s=Rn(n),l=s.color,u=s.opacity;this._bgVNode=Hb("rect","bg",{width:i,height:r,x:"0",y:"0",id:"0",fill:l,"fill-opacity":u}),a.push(this._bgVNode)}else this._bgVNode=null;var h=t.compress?null:this._mainVNode=Hb("g","main",{},[]);this._paintList(e,o,h?h.children:a),h&&a.push(h);var c=z(G(o.defs),(function(t){return o.defs[t]}));if(c.length&&a.push(Hb("defs","defs",{},c)),t.animation){var p=function(t,e,n){var i=(n=n||{}).newline?"\n":"",r=" {"+i,o=i+"}",a=z(G(t),(function(e){return e+r+z(G(t[e]),(function(n){return n+":"+t[e][n]+";"})).join(i)+o})).join(i),s=z(G(e),(function(t){return"@keyframes "+t+r+z(G(e[t]),(function(n){return n+r+z(G(e[t][n]),(function(i){var r=e[t][n][i];return"d"===i&&(r='path("'+r+'")'),i+":"+r+";"})).join(i)+o})).join(i)+o})).join(i);return a||s?[""].join(i):""}(o.cssNodes,o.cssAnims,{newline:!0});if(p){var d=Hb("style","stl",{},[],p);a.push(d)}}return Xb(i,r,a,t.useViewBox)},t.prototype.renderToString=function(t){return t=t||{},Yb(this.renderToVNode({animation:rt(t.cssAnimation,!0),willUpdate:!1,compress:!0,useViewBox:rt(t.useViewBox,!0)}),{newline:!0})},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t;var e=this._bgVNode;if(e&&e.elm){var n=Rn(t),i=n.color,r=n.opacity;e.elm.setAttribute("fill",i),r<1&&e.elm.setAttribute("fill-opacity",r)}},t.prototype.getSvgRoot=function(){return this._mainVNode&&this._mainVNode.elm},t.prototype._paintList=function(t,e,n){for(var i,r,o=t.length,a=[],s=0,l=0,u=0;u=0&&(!c||!r||c[f]!==r[f]);f--);for(var g=d-1;g>f;g--)i=a[--s-1];for(var y=f+1;y=a)}}for(var h=this.__startIndex;h15)break}n.prevElClipPaths&&u.restore()};if(p)if(0===p.length)s=l.__endIndex;else for(var _=d.dpr,b=0;b0&&t>i[0]){for(s=0;st);s++);a=n[i[s]]}if(i.splice(s+1,0,t),n[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?o.insertBefore(e.dom,l.nextSibling):o.appendChild(e.dom)}else o.firstChild?o.insertBefore(e.dom,o.firstChild):o.appendChild(e.dom);e.__painter=this}},t.prototype.eachLayer=function(t,e){for(var n=this._zlevelList,i=0;i0?.01:0),this._needsManuallyCompositing),u.__builtin__||I("ZLevel "+l+" has been used by unkown layer "+u.id),u!==o&&(u.__used=!0,u.__startIndex!==r&&(u.__dirty=!0),u.__startIndex=r,u.incremental?u.__drawIndex=-1:u.__drawIndex=r,e(r),o=u),1&s.__dirty&&!s.__inHover&&(u.__dirty=!0,u.incremental&&u.__drawIndex<0&&(u.__drawIndex=r))}e(r),this.eachBuiltinLayer((function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)}))},t.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},t.prototype._clearLayer=function(t){t.clear()},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t,E(this._layers,(function(t){t.setUnpainted()}))},t.prototype.configLayer=function(t,e){if(e){var n=this._layerConfig;n[t]?C(n[t],e,!0):n[t]=e;for(var i=0;i-1&&(s.style.stroke=s.style.fill,s.style.fill="#fff",s.style.lineWidth=2),e},e.type="series.line",e.dependencies=["grid","polar"],e.defaultOption={z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:"clone"},triggerLineEvent:!1},e}(sg);function Ww(t,e){var n=t.mapDimensionsAll("defaultedLabel"),i=n.length;if(1===i){var r=af(t,e,n[0]);return null!=r?r+"":null}if(i){for(var o=[],a=0;a=0&&i.push(e[o])}return i.join(" ")}var Yw=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o.updateData(e,n,i,r),o}return n(e,t),e.prototype._createSymbol=function(t,e,n,i,r){this.removeAll();var o=Ly(t,-1,-1,2,2,null,r);o.attr({z2:100,culling:!0,scaleX:i[0]/2,scaleY:i[1]/2}),o.drift=Uw,this._symbolType=t,this.add(o)},e.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},e.prototype.getSymbolType=function(){return this._symbolType},e.prototype.getSymbolPath=function(){return this.childAt(0)},e.prototype.highlight=function(){_l(this.childAt(0))},e.prototype.downplay=function(){bl(this.childAt(0))},e.prototype.setZ=function(t,e){var n=this.childAt(0);n.zlevel=t,n.z=e},e.prototype.setDraggable=function(t,e){var n=this.childAt(0);n.draggable=t,n.cursor=!e&&t?"move":n.cursor},e.prototype.updateData=function(t,n,i,r){this.silent=!1;var o=t.getItemVisual(n,"symbol")||"circle",a=t.hostModel,s=e.getSymbolSize(t,n),l=o!==this._symbolType,u=r&&r.disableAnimation;if(l){var h=t.getItemVisual(n,"symbolKeepAspect");this._createSymbol(o,t,n,s,h)}else{(p=this.childAt(0)).silent=!1;var c={scaleX:s[0]/2,scaleY:s[1]/2};u?p.attr(c):rh(p,c,a,n),hh(p)}if(this._updateCommon(t,n,s,i,r),l){var p=this.childAt(0);u||(c={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:p.style.opacity}},p.scaleX=p.scaleY=0,p.style.opacity=0,oh(p,c,a,n))}u&&this.childAt(0).stopAnimation("leave")},e.prototype._updateCommon=function(t,e,n,i,r){var o,a,s,l,u,h,c,p,d,f=this.childAt(0),g=t.hostModel;if(i&&(o=i.emphasisItemStyle,a=i.blurItemStyle,s=i.selectItemStyle,l=i.focus,u=i.blurScope,c=i.labelStatesModels,p=i.hoverScale,d=i.cursorStyle,h=i.emphasisDisabled),!i||t.hasItemOption){var y=i&&i.itemModel?i.itemModel:t.getItemModel(e),v=y.getModel("emphasis");o=v.getModel("itemStyle").getItemStyle(),s=y.getModel(["select","itemStyle"]).getItemStyle(),a=y.getModel(["blur","itemStyle"]).getItemStyle(),l=v.get("focus"),u=v.get("blurScope"),h=v.get("disabled"),c=Yh(y),p=v.getShallow("scale"),d=y.getShallow("cursor")}var m=t.getItemVisual(e,"symbolRotate");f.attr("rotation",(m||0)*Math.PI/180||0);var x=Oy(t.getItemVisual(e,"symbolOffset"),n);x&&(f.x=x[0],f.y=x[1]),d&&f.attr("cursor",d);var _=t.getItemVisual(e,"style"),b=_.fill;if(f instanceof _s){var w=f.style;f.useStyle(A({image:w.image,x:w.x,y:w.y,width:w.width,height:w.height},_))}else f.__isEmptyBrush?f.useStyle(A({},_)):f.useStyle(_),f.style.decal=null,f.setColor(b,r&&r.symbolInnerColor),f.style.strokeNoScale=!0;var S=t.getItemVisual(e,"liftZ"),M=this._z2;null!=S?null==M&&(this._z2=f.z2,f.z2+=S):null!=M&&(f.z2=M,this._z2=null);var I=r&&r.useNameLabel;Hh(f,c,{labelFetcher:g,labelDataIndex:e,defaultText:function(e){return I?t.getName(e):Ww(t,e)},inheritColor:b,defaultOpacity:_.opacity}),this._sizeX=n[0]/2,this._sizeY=n[1]/2;var T=f.ensureState("emphasis");if(T.style=o,f.ensureState("select").style=s,f.ensureState("blur").style=a,p){var C=Math.max(j(p)?p:1.1,3/this._sizeY);T.scaleX=this._sizeX*C,T.scaleY=this._sizeY*C}this.setSymbolScale(1),Rl(this,l,u,h)},e.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},e.prototype.fadeOut=function(t,e,n){var i=this.childAt(0),r=Hs(this).dataIndex,o=n&&n.animation;if(this.silent=i.silent=!0,n&&n.fadeLabel){var a=i.getTextContent();a&&sh(a,{style:{opacity:0}},e,{dataIndex:r,removeOpt:o,cb:function(){i.removeTextContent()}})}else i.removeTextContent();sh(i,{style:{opacity:0},scaleX:0,scaleY:0},e,{dataIndex:r,cb:t,removeOpt:o})},e.getSymbolSize=function(t,e){return Py(t.getItemVisual(e,"symbolSize"))},e}(Cr);function Uw(t,e){this.parent.drift(t,e)}function Xw(t,e,n,i){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(i.isIgnore&&i.isIgnore(n))&&!(i.clipShape&&!i.clipShape.contain(e[0],e[1]))&&"none"!==t.getItemVisual(n,"symbol")}function Zw(t){return null==t||q(t)||(t={isIgnore:t}),t||{}}function jw(t){var e=t.hostModel,n=e.getModel("emphasis");return{emphasisItemStyle:n.getModel("itemStyle").getItemStyle(),blurItemStyle:e.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:e.getModel(["select","itemStyle"]).getItemStyle(),focus:n.get("focus"),blurScope:n.get("blurScope"),emphasisDisabled:n.get("disabled"),hoverScale:n.get("scale"),labelStatesModels:Yh(e),cursorStyle:e.get("cursor")}}var qw=function(){function t(t){this.group=new Cr,this._SymbolCtor=t||Yw}return t.prototype.updateData=function(t,e){this._progressiveEls=null,e=Zw(e);var n=this.group,i=t.hostModel,r=this._data,o=this._SymbolCtor,a=e.disableAnimation,s=jw(t),l={disableAnimation:a},u=e.getSymbolPoint||function(e){return t.getItemLayout(e)};r||n.removeAll(),t.diff(r).add((function(i){var r=u(i);if(Xw(t,r,i,e)){var a=new o(t,i,s,l);a.setPosition(r),t.setItemGraphicEl(i,a),n.add(a)}})).update((function(h,c){var p=r.getItemGraphicEl(c),d=u(h);if(Xw(t,d,h,e)){var f=t.getItemVisual(h,"symbol")||"circle",g=p&&p.getSymbolType&&p.getSymbolType();if(!p||g&&g!==f)n.remove(p),(p=new o(t,h,s,l)).setPosition(d);else{p.updateData(t,h,s,l);var y={x:d[0],y:d[1]};a?p.attr(y):rh(p,y,i)}n.add(p),t.setItemGraphicEl(h,p)}else n.remove(p)})).remove((function(t){var e=r.getItemGraphicEl(t);e&&e.fadeOut((function(){n.remove(e)}),i)})).execute(),this._getSymbolPoint=u,this._data=t},t.prototype.updateLayout=function(){var t=this,e=this._data;e&&e.eachItemGraphicEl((function(e,n){var i=t._getSymbolPoint(n);e.setPosition(i),e.markRedraw()}))},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=jw(t),this._data=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e,n){function i(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[],n=Zw(n);for(var r=t.start;r0?n=i[0]:i[1]<0&&(n=i[1]),n}(r,n),a=i.dim,s=r.dim,l=e.mapDimension(s),u=e.mapDimension(a),h="x"===s||"radius"===s?1:0,c=z(t.dimensions,(function(t){return e.mapDimension(t)})),p=!1,d=e.getCalculationInfo("stackResultDimension");return nx(e,c[0])&&(p=!0,c[0]=d),nx(e,c[1])&&(p=!0,c[1]=d),{dataDimsForPoint:c,valueStart:o,valueAxisDim:s,baseAxisDim:a,stacked:!!p,valueDim:l,baseDim:u,baseDataOffset:h,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}}function $w(t,e,n,i){var r=NaN;t.stacked&&(r=n.get(n.getCalculationInfo("stackedOverDimension"),i)),isNaN(r)&&(r=t.valueStart);var o=t.baseDataOffset,a=[];return a[o]=n.get(t.baseDim,i),a[1-o]=r,e.dataToPoint(a)}var Jw=Math.min,Qw=Math.max;function tS(t,e){return isNaN(t)||isNaN(e)}function eS(t,e,n,i,r,o,a,s,l){for(var u,h,c,p,d,f,g=n,y=0;y=r||g<0)break;if(tS(v,m)){if(l){g+=o;continue}break}if(g===n)t[o>0?"moveTo":"lineTo"](v,m),c=v,p=m;else{var x=v-u,_=m-h;if(x*x+_*_<.5){g+=o;continue}if(a>0){for(var b=g+o,w=e[2*b],S=e[2*b+1];w===v&&S===m&&y=i||tS(w,S))d=v,f=m;else{T=w-u,C=S-h;var k=v-u,L=w-v,P=m-h,O=S-m,R=void 0,N=void 0;if("x"===s){var E=T>0?1:-1;d=v-E*(R=Math.abs(k))*a,f=m,D=v+E*(N=Math.abs(L))*a,A=m}else if("y"===s){var z=C>0?1:-1;d=v,f=m-z*(R=Math.abs(P))*a,D=v,A=m+z*(N=Math.abs(O))*a}else R=Math.sqrt(k*k+P*P),d=v-T*a*(1-(I=(N=Math.sqrt(L*L+O*O))/(N+R))),f=m-C*a*(1-I),A=m+C*a*I,D=Jw(D=v+T*a*I,Qw(w,v)),A=Jw(A,Qw(S,m)),D=Qw(D,Jw(w,v)),f=m-(C=(A=Qw(A,Jw(S,m)))-m)*R/N,d=Jw(d=v-(T=D-v)*R/N,Qw(u,v)),f=Jw(f,Qw(h,m)),D=v+(T=v-(d=Qw(d,Jw(u,v))))*N/R,A=m+(C=m-(f=Qw(f,Jw(h,m))))*N/R}t.bezierCurveTo(c,p,d,f,v,m),c=D,p=A}else t.lineTo(v,m)}u=v,h=m,g+=o}return y}var nS=function(){this.smooth=0,this.smoothConstraint=!0},iS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polyline",n}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new nS},e.prototype.buildPath=function(t,e){var n=e.points,i=0,r=n.length/2;if(e.connectNulls){for(;r>0&&tS(n[2*r-2],n[2*r-1]);r--);for(;i=0){var y=a?(h-i)*g+i:(u-n)*g+n;return a?[t,y]:[y,t]}n=u,i=h;break;case o.C:u=r[l++],h=r[l++],c=r[l++],p=r[l++],d=r[l++],f=r[l++];var v=a?Ue(n,u,c,d,t,s):Ue(i,h,p,f,t,s);if(v>0)for(var m=0;m=0)return y=a?He(i,h,p,f,x):He(n,u,c,d,x),a?[t,y]:[y,t]}n=d,i=f}}},e}(gs),rS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(nS),oS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polygon",n}return n(e,t),e.prototype.getDefaultShape=function(){return new rS},e.prototype.buildPath=function(t,e){var n=e.points,i=e.stackedOnPoints,r=0,o=n.length/2,a=e.smoothMonotone;if(e.connectNulls){for(;o>0&&tS(n[2*o-2],n[2*o-1]);o--);for(;r=0;a--){var s=t.getDimensionInfo(i[a].dimension);if("x"===(r=s&&s.coordDim)||"y"===r){o=i[a];break}}if(o){var l=e.getAxis(r),u=z(o.stops,(function(t){return{coord:l.toGlobalCoord(l.dataToCoord(t.value)),color:t.color}})),h=u.length,c=o.outerColors.slice();h&&u[0].coord>u[h-1].coord&&(u.reverse(),c.reverse());var p=function(t,e){var n,i,r=[],o=t.length;function a(t,e,n){var i=t.coord;return{coord:n,color:Tn((n-i)/(e.coord-i),[t.color,e.color])}}for(var s=0;se){i?r.push(a(i,l,e)):n&&r.push(a(n,l,0),a(n,l,e));break}n&&(r.push(a(n,l,0)),n=null),r.push(l),i=l}}return r}(u,"x"===r?n.getWidth():n.getHeight()),d=p.length;if(!d&&h)return u[0].coord<0?c[1]?c[1]:u[h-1].color:c[0]?c[0]:u[0].color;var f=p[0].coord-10,g=p[d-1].coord+10,y=g-f;if(y<.001)return"transparent";E(p,(function(t){t.offset=(t.coord-f)/y})),p.push({offset:d?p[d-1].offset:.5,color:c[1]||"transparent"}),p.unshift({offset:d?p[0].offset:.5,color:c[0]||"transparent"});var v=new Xu(0,0,0,0,p,!0);return v[r]=f,v[r+"2"]=g,v}}}function yS(t,e,n){var i=t.get("showAllSymbol"),r="auto"===i;if(!i||r){var o=n.getAxesByScale("ordinal")[0];if(o&&(!r||!function(t,e){var n=t.getExtent(),i=Math.abs(n[1]-n[0])/t.scale.count();isNaN(i)&&(i=0);for(var r=e.count(),o=Math.max(1,Math.round(r/5)),a=0;ai)return!1;return!0}(o,e))){var a=e.mapDimension(o.dim),s={};return E(o.getViewLabels(),(function(t){var e=o.scale.getRawOrdinalNumber(t.tickValue);s[e]=1})),function(t){return!s.hasOwnProperty(e.get(a,t))}}}}function vS(t,e){return[t[2*e],t[2*e+1]]}function mS(t){if(t.get(["endLabel","show"]))return!0;for(var e=0;e0&&"bolder"===t.get(["emphasis","lineStyle","width"])&&(d.getState("emphasis").style.lineWidth=+d.style.lineWidth+1),Hs(d).seriesIndex=t.seriesIndex,Rl(d,L,P,O);var R=dS(t.get("smooth")),N=t.get("smoothMonotone");if(d.setShape({smooth:R,smoothMonotone:N,connectNulls:w}),f){var E=a.getCalculationInfo("stackedOnSeries"),z=0;f.useStyle(k(l.getAreaStyle(),{fill:C,opacity:.7,lineJoin:"bevel",decal:a.getVisual("style").decal})),E&&(z=dS(E.get("smooth"))),f.setShape({smooth:R,stackedOnSmooth:z,smoothMonotone:N,connectNulls:w}),Vl(f,t,"areaStyle"),Hs(f).seriesIndex=t.seriesIndex,Rl(f,L,P,O)}var V=function(t){i._changePolyState(t)};a.eachItemGraphicEl((function(t){t&&(t.onHoverStateChange=V)})),this._polyline.onHoverStateChange=V,this._data=a,this._coordSys=r,this._stackedOnPoints=_,this._points=u,this._step=T,this._valueOrigin=m,t.get("triggerLineEvent")&&(this.packEventData(t,d),f&&this.packEventData(t,f))},e.prototype.packEventData=function(t,e){Hs(e).eventData={componentType:"series",componentSubType:"line",componentIndex:t.componentIndex,seriesIndex:t.seriesIndex,seriesName:t.name,seriesType:"line"}},e.prototype.highlight=function(t,e,n,i){var r=t.getData(),o=wo(r,i);if(this._changePolyState("emphasis"),!(o instanceof Array)&&null!=o&&o>=0){var a=r.getLayout("points"),s=r.getItemGraphicEl(o);if(!s){var l=a[2*o],u=a[2*o+1];if(isNaN(l)||isNaN(u))return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(l,u))return;var h=t.get("zlevel"),c=t.get("z");(s=new Yw(r,o)).x=l,s.y=u,s.setZ(h,c);var p=s.getSymbolPath().getTextContent();p&&(p.zlevel=h,p.z=c,p.z2=this._polyline.z2+1),s.__temp=!0,r.setItemGraphicEl(o,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else xg.prototype.highlight.call(this,t,e,n,i)},e.prototype.downplay=function(t,e,n,i){var r=t.getData(),o=wo(r,i);if(this._changePolyState("normal"),null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else xg.prototype.downplay.call(this,t,e,n,i)},e.prototype._changePolyState=function(t){var e=this._polygon;gl(this._polyline,t),e&&gl(e,t)},e.prototype._newPolyline=function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new iS({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(e),this._polyline=e,e},e.prototype._newPolygon=function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new oS({shape:{points:t,stackedOnPoints:e},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},e.prototype._initSymbolLabelAnimation=function(t,e,n){var i,r,o=e.getBaseAxis(),a=o.inverse;"cartesian2d"===e.type?(i=o.isHorizontal(),r=!1):"polar"===e.type&&(i="angle"===o.dim,r=!0);var s=t.hostModel,l=s.get("animationDuration");U(l)&&(l=l(null));var u=s.get("animationDelay")||0,h=U(u)?u(null):u;t.eachItemGraphicEl((function(t,o){var s=t;if(s){var c=[t.x,t.y],p=void 0,d=void 0,f=void 0;if(n)if(r){var g=n,y=e.pointToCoord(c);i?(p=g.startAngle,d=g.endAngle,f=-y[1]/180*Math.PI):(p=g.r0,d=g.r,f=y[0])}else{var v=n;i?(p=v.x,d=v.x+v.width,f=t.x):(p=v.y+v.height,d=v.y,f=t.y)}var m=d===p?0:(f-p)/(d-p);a&&(m=1-m);var x=U(u)?u(o):l*m+h,_=s.getSymbolPath(),b=_.getTextContent();s.attr({scaleX:0,scaleY:0}),s.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:x}),b&&b.animateFrom({style:{opacity:0}},{duration:300,delay:x}),_.disableLabelAnimation=!0}}))},e.prototype._initOrUpdateEndLabel=function(t,e,n){var i=t.getModel("endLabel");if(mS(t)){var r=t.getData(),o=this._polyline,a=r.getLayout("points");if(!a)return o.removeTextContent(),void(this._endLabel=null);var s=this._endLabel;s||((s=this._endLabel=new ks({z2:200})).ignoreClip=!0,o.setTextContent(this._endLabel),o.disableLabelAnimation=!0);var l=function(t){for(var e,n,i=t.length/2;i>0&&(e=t[2*i-2],n=t[2*i-1],isNaN(e)||isNaN(n));i--);return i-1}(a);l>=0&&(Hh(o,Yh(t,"endLabel"),{inheritColor:n,labelFetcher:t,labelDataIndex:l,defaultText:function(t,e,n){return null!=n?Hw(r,n):Ww(r,t)},enableTextSetter:!0},function(t,e){var n=e.getBaseAxis(),i=n.isHorizontal(),r=n.inverse,o=i?r?"right":"left":"center",a=i?"middle":r?"top":"bottom";return{normal:{align:t.get("align")||o,verticalAlign:t.get("verticalAlign")||a}}}(i,e)),o.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},e.prototype._endLabelOnDuring=function(t,e,n,i,r,o,a){var s=this._endLabel,l=this._polyline;if(s){t<1&&null==i.originalX&&(i.originalX=s.x,i.originalY=s.y);var u=n.getLayout("points"),h=n.hostModel,c=h.get("connectNulls"),p=o.get("precision"),d=o.get("distance")||0,f=a.getBaseAxis(),g=f.isHorizontal(),y=f.inverse,v=e.shape,m=y?g?v.x:v.y+v.height:g?v.x+v.width:v.y,x=(g?d:0)*(y?-1:1),_=(g?0:-d)*(y?-1:1),b=g?"x":"y",w=function(t,e,n){for(var i,r,o=t.length/2,a="x"===n?0:1,s=0,l=-1,u=0;u=e||i>=e&&r<=e){l=u;break}s=u,i=r}else i=r;return{range:[s,l],t:(e-i)/(r-i)}}(u,m,b),S=w.range,M=S[1]-S[0],I=void 0;if(M>=1){if(M>1&&!c){var T=vS(u,S[0]);s.attr({x:T[0]+x,y:T[1]+_}),r&&(I=h.getRawValue(S[0]))}else{(T=l.getPointOn(m,b))&&s.attr({x:T[0]+x,y:T[1]+_});var C=h.getRawValue(S[0]),D=h.getRawValue(S[1]);r&&(I=Po(n,p,C,D,w.t))}i.lastFrameIndex=S[0]}else{var A=1===t||i.lastFrameIndex>0?S[0]:0;T=vS(u,A),r&&(I=h.getRawValue(A)),s.attr({x:T[0]+x,y:T[1]+_})}r&&Jh(s).setLabelText(I)}},e.prototype._doUpdateAnimation=function(t,e,n,i,r,o,a){var s=this._polyline,l=this._polygon,u=t.hostModel,h=function(t,e,n,i,r,o,a,s){for(var l=function(t,e){var n=[];return e.diff(t).add((function(t){n.push({cmd:"+",idx:t})})).update((function(t,e){n.push({cmd:"=",idx:e,idx1:t})})).remove((function(t){n.push({cmd:"-",idx:t})})).execute(),n}(t,e),u=[],h=[],c=[],p=[],d=[],f=[],g=[],y=Kw(r,e,a),v=t.getLayout("points")||[],m=e.getLayout("points")||[],x=0;x3e3||l&&pS(p,f)>3e3)return s.stopAnimation(),s.setShape({points:d}),void(l&&(l.stopAnimation(),l.setShape({points:d,stackedOnPoints:f})));s.shape.__points=h.current,s.shape.points=c;var g={shape:{points:d}};h.current!==c&&(g.shape.__points=h.next),s.stopAnimation(),rh(s,g,u),l&&(l.setShape({points:c,stackedOnPoints:p}),l.stopAnimation(),rh(l,{shape:{stackedOnPoints:f}},u),s.shape.points!==l.shape.points&&(l.shape.points=s.shape.points));for(var y=[],v=h.status,m=0;me&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;n10&&"cartesian2d"===o.type&&r){var s=o.getBaseAxis(),l=o.getOtherAxis(s),u=s.getExtent(),h=n.getDevicePixelRatio(),c=Math.abs(u[1]-u[0])*(h||1),p=Math.round(a/c);if(isFinite(p)&&p>1){"lttb"===r&&t.setData(i.lttbDownSample(i.mapDimension(l.dim),1/p));var d=void 0;X(r)?d=wS[r]:U(r)&&(d=r),d&&t.setData(i.downSample(i.mapDimension(l.dim),1/p,d,SS))}}}}}var IS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){return rx(null,this,{useEncodeDefaulter:!0})},e.prototype.getMarkerPosition=function(t){var e=this.coordinateSystem;if(e&&e.clampData){var n=e.dataToPoint(e.clampData(t)),i=this.getData(),r=i.getLayout("offset"),o=i.getLayout("size");return n[e.getBaseAxis().isHorizontal()?0:1]+=r+o/2,n}return[NaN,NaN]},e.type="series.__base_bar__",e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},e}(sg);sg.registerClass(IS);var TS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(){return rx(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},e.prototype.getProgressive=function(){return!!this.get("large")&&this.get("progressive")},e.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t},e.prototype.brushSelector=function(t,e,n){return n.rect(e.getItemLayout(t))},e.type="series.bar",e.dependencies=["grid","polar"],e.defaultOption=yc(IS.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),e}(IS),CS=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},DS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="sausage",n}return n(e,t),e.prototype.getDefaultShape=function(){return new CS},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=.5*(o-r),s=r+a,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=2*Math.PI,p=h?u-lo)return!0;o=u}return!1},e.prototype._isOrderDifferentInView=function(t,e){for(var n=e.scale,i=n.getExtent(),r=Math.max(0,i[0]),o=Math.min(i[1],n.getOrdinalMeta().categories.length-1);r<=o;++r)if(t.ordinalNumbers[r]!==n.getRawOrdinalNumber(r))return!0},e.prototype._updateSortWithinSameData=function(t,e,n,i){if(this._isOrderChangedWithinSameData(t,e,n)){var r=this._dataSort(t,n,e);this._isOrderDifferentInView(r,n)&&(this._removeOnRenderedListener(i),i.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:r}))}},e.prototype._dispatchInitSort=function(t,e,n){var i=e.baseAxis,r=this._dataSort(t,i,(function(n){return t.get(t.mapDimension(e.otherAxis.dim),n)}));n.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",isInitSort:!0,axisId:i.index,sortInfo:r})},e.prototype.remove=function(t,e){this._clear(this._model),this._removeOnRenderedListener(e)},e.prototype.dispose=function(t,e){this._removeOnRenderedListener(e)},e.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},e.prototype._clear=function(t){var e=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl((function(e){uh(e,t,Hs(e).dataIndex)}))):e.removeAll(),this._data=null,this._isFirstFrame=!0},e.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},e.type="bar",e}(xg),RS={cartesian2d:function(t,e){var n=e.width<0?-1:1,i=e.height<0?-1:1;n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height);var r=t.x+t.width,o=t.y+t.height,a=LS(e.x,t.x),s=PS(e.x+e.width,r),l=LS(e.y,t.y),u=PS(e.y+e.height,o),h=sr?s:a,e.y=c&&l>o?u:l,e.width=h?0:s-a,e.height=c?0:u-l,n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height),h||c},polar:function(t,e){var n=e.r0<=e.r?1:-1;if(n<0){var i=e.r;e.r=e.r0,e.r0=i}var r=PS(e.r,t.r),o=LS(e.r0,t.r0);e.r=r,e.r0=o;var a=r-o<0;return n<0&&(i=e.r,e.r=e.r0,e.r0=i),a}},NS={cartesian2d:function(t,e,n,i,r,o,a,s,l){var u=new Cs({shape:A({},i),z2:1});return u.__dataIndex=n,u.name="item",o&&(u.shape[r?"height":"width"]=0),u},polar:function(t,e,n,i,r,o,a,s,l){var u=!r&&l?DS:Cu,h=new u({shape:i,z2:1});h.name="item";var c,p,d=WS(r);if(h.calculateTextPosition=(c=d,p=({isRoundCap:u===DS}||{}).isRoundCap,function(t,e,n){var i=e.position;if(!i||i instanceof Array)return yr(t,e,n);var r=c(i),o=null!=e.distance?e.distance:5,a=this.shape,s=a.cx,l=a.cy,u=a.r,h=a.r0,d=(u+h)/2,f=a.startAngle,g=a.endAngle,y=(f+g)/2,v=p?Math.abs(u-h)/2:0,m=Math.cos,x=Math.sin,_=s+u*m(f),b=l+u*x(f),w="left",S="top";switch(r){case"startArc":_=s+(h-o)*m(y),b=l+(h-o)*x(y),w="center",S="top";break;case"insideStartArc":_=s+(h+o)*m(y),b=l+(h+o)*x(y),w="center",S="bottom";break;case"startAngle":_=s+d*m(f)+AS(f,o+v,!1),b=l+d*x(f)+kS(f,o+v,!1),w="right",S="middle";break;case"insideStartAngle":_=s+d*m(f)+AS(f,-o+v,!1),b=l+d*x(f)+kS(f,-o+v,!1),w="left",S="middle";break;case"middle":_=s+d*m(y),b=l+d*x(y),w="center",S="middle";break;case"endArc":_=s+(u+o)*m(y),b=l+(u+o)*x(y),w="center",S="bottom";break;case"insideEndArc":_=s+(u-o)*m(y),b=l+(u-o)*x(y),w="center",S="top";break;case"endAngle":_=s+d*m(g)+AS(g,o+v,!0),b=l+d*x(g)+kS(g,o+v,!0),w="left",S="middle";break;case"insideEndAngle":_=s+d*m(g)+AS(g,-o+v,!0),b=l+d*x(g)+kS(g,-o+v,!0),w="right",S="middle";break;default:return yr(t,e,n)}return(t=t||{}).x=_,t.y=b,t.align=w,t.verticalAlign=S,t}),o){var f=r?"r":"endAngle",g={};h.shape[f]=r?0:i.startAngle,g[f]=i[f],(s?rh:oh)(h,{shape:g},o)}return h}};function ES(t,e,n,i,r,o,a,s){var l,u;o?(u={x:i.x,width:i.width},l={y:i.y,height:i.height}):(u={y:i.y,height:i.height},l={x:i.x,width:i.width}),s||(a?rh:oh)(n,{shape:l},e,r,null),(a?rh:oh)(n,{shape:u},e?t.baseAxis.model:null,r)}function zS(t,e){for(var n=0;n0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e,n){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle,clockwise:i.clockwise}}};function WS(t){return function(t){var e=t?"Arc":"Angle";return function(t){switch(t){case"start":case"insideStart":case"end":case"insideEnd":return t+e;default:return t}}}(t)}function HS(t,e,n,i,r,o,a,s){var l=e.getItemVisual(n,"style");s||t.setShape("r",i.get(["itemStyle","borderRadius"])||0),t.useStyle(l);var u=i.getShallow("cursor");u&&t.attr("cursor",u);var h=s?a?r.r>=r.r0?"endArc":"startArc":r.endAngle>=r.startAngle?"endAngle":"startAngle":a?r.height>=0?"bottom":"top":r.width>=0?"right":"left",c=Yh(i);Hh(t,c,{labelFetcher:o,labelDataIndex:n,defaultText:Ww(o.getData(),n),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:h});var p=t.getTextContent();if(s&&p){var d=i.get(["label","position"]);t.textConfig.inside="middle"===d||null,function(t,e,n,i){if(j(i))t.setTextConfig({rotation:i});else if(Y(e))t.setTextConfig({rotation:0});else{var r,o=t.shape,a=o.clockwise?o.startAngle:o.endAngle,s=o.clockwise?o.endAngle:o.startAngle,l=(a+s)/2,u=n(e);switch(u){case"startArc":case"insideStartArc":case"middle":case"insideEndArc":case"endArc":r=l;break;case"startAngle":case"insideStartAngle":r=a;break;case"endAngle":case"insideEndAngle":r=s;break;default:return void t.setTextConfig({rotation:0})}var h=1.5*Math.PI-r;"middle"===u&&h>Math.PI/2&&h<1.5*Math.PI&&(h-=Math.PI),t.setTextConfig({rotation:h})}}(t,"outside"===d?h:d,WS(a),i.get(["label","rotate"]))}Qh(p,c,o.getRawValue(n),(function(t){return Hw(e,t)}));var f=i.getModel(["emphasis"]);Rl(t,f.get("focus"),f.get("blurScope"),f.get("disabled")),Vl(t,i),function(t){return null!=t.startAngle&&null!=t.endAngle&&t.startAngle===t.endAngle}(r)&&(t.style.fill="none",t.style.stroke="none",E(t.states,(function(t){t.style&&(t.style.fill=t.style.stroke="none")})))}var YS=function(){},US=function(t){function e(e){var n=t.call(this,e)||this;return n.type="largeBar",n}return n(e,t),e.prototype.getDefaultShape=function(){return new YS},e.prototype.buildPath=function(t,e){for(var n=e.points,i=this.baseDimIdx,r=1-this.baseDimIdx,o=[],a=[],s=this.barWidth,l=0;l=s[0]&&e<=s[0]+l[0]&&n>=s[1]&&n<=s[1]+l[1])return a[h]}return-1}(this,t.offsetX,t.offsetY);Hs(this).dataIndex=e>=0?e:null}),30,!1);function jS(t,e,n){if(uS(n,"cartesian2d")){var i=e,r=n.getArea();return{x:t?i.x:r.x,y:t?r.y:i.y,width:t?i.width:r.width,height:t?r.height:i.height}}var o=e;return{cx:(r=n.getArea()).cx,cy:r.cy,r0:t?r.r0:o.r0,r:t?r.r:o.r,startAngle:t?o.startAngle:0,endAngle:t?o.endAngle:2*Math.PI}}var qS=2*Math.PI,KS=Math.PI/180;function $S(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function JS(t,e){var n=$S(t,e),i=t.get("center"),r=t.get("radius");Y(r)||(r=[0,r]),Y(i)||(i=[i,i]);var o=Er(n.width,e.getWidth()),a=Er(n.height,e.getHeight()),s=Math.min(o,a);return{cx:Er(i[0],o)+n.x,cy:Er(i[1],a)+n.y,r0:Er(r[0],s/2),r:Er(r[1],s/2)}}function QS(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.getData(),i=e.mapDimension("value"),r=$S(t,n),o=JS(t,n),a=o.cx,s=o.cy,l=o.r,u=o.r0,h=-t.get("startAngle")*KS,c=t.get("minAngle")*KS,p=0;e.each(i,(function(t){!isNaN(t)&&p++}));var d=e.getSum(i),f=Math.PI/(d||p)*2,g=t.get("clockwise"),y=t.get("roseType"),v=t.get("stillShowZeroSum"),m=e.getDataExtent(i);m[0]=0;var x=qS,_=0,b=h,w=g?1:-1;if(e.setLayout({viewRect:r,r:l}),e.each(i,(function(t,n){var i;if(isNaN(t))e.setItemLayout(n,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:g,cx:a,cy:s,r0:u,r:y?NaN:l});else{(i="area"!==y?0===d&&v?f:t*f:qS/p)n?a:o,h=Math.abs(l.label.y-n);if(h>=u.maxY){var c=l.label.x-e-l.len2*r,p=i+l.len,f=Math.abs(c)t.unconstrainedWidth?null:d:null;i.setStyle("width",f)}var g=i.getBoundingRect();o.width=g.width;var y=(i.style.margin||0)+2.1;o.height=g.height+y,o.y-=(o.height-c)/2}}}function rM(t){return"center"===t.position}function aM(t,e,n){var i=t.get("borderRadius");if(null==i)return n?{cornerRadius:0}:null;Y(i)||(i=[i,i,i,i]);var r=Math.abs(e.r||0-e.r0||0);return{cornerRadius:z(i,(function(t){return gr(t,r)}))}}var sM=function(t){function e(e,n,i){var r=t.call(this)||this;r.z2=2;var o=new ks;return r.setTextContent(o),r.updateData(e,n,i,!0),r}return n(e,t),e.prototype.updateData=function(t,e,n,i){var r=this,o=t.hostModel,a=t.getItemModel(e),s=a.getModel("emphasis"),l=t.getItemLayout(e),u=A(aM(a.getModel("itemStyle"),l,!0),l);if(isNaN(u.startAngle))r.setShape(u);else{if(i){r.setShape(u);var h=o.getShallow("animationType");o.ecModel.ssr?(oh(r,{scaleX:0,scaleY:0},o,{dataIndex:e,isFrom:!0}),r.originX=u.cx,r.originY=u.cy):"scale"===h?(r.shape.r=l.r0,oh(r,{shape:{r:l.r}},o,e)):null!=n?(r.setShape({startAngle:n,endAngle:n}),oh(r,{shape:{startAngle:l.startAngle,endAngle:l.endAngle}},o,e)):(r.shape.endAngle=l.startAngle,rh(r,{shape:{endAngle:l.endAngle}},o,e))}else hh(r),rh(r,{shape:u},o,e);r.useStyle(t.getItemVisual(e,"style")),Vl(r,a);var c=(l.startAngle+l.endAngle)/2,p=o.get("selectedOffset"),d=Math.cos(c)*p,f=Math.sin(c)*p,g=a.getShallow("cursor");g&&r.attr("cursor",g),this._updateLabel(o,t,e),r.ensureState("emphasis").shape=A({r:l.r+(s.get("scale")&&s.get("scaleSize")||0)},aM(s.getModel("itemStyle"),l)),A(r.ensureState("select"),{x:d,y:f,shape:aM(a.getModel(["select","itemStyle"]),l)}),A(r.ensureState("blur"),{shape:aM(a.getModel(["blur","itemStyle"]),l)});var y=r.getTextGuideLine(),v=r.getTextContent();y&&A(y.ensureState("select"),{x:d,y:f}),A(v.ensureState("select"),{x:d,y:f}),Rl(this,s.get("focus"),s.get("blurScope"),s.get("disabled"))}},e.prototype._updateLabel=function(t,e,n){var i=this,r=e.getItemModel(n),o=r.getModel("labelLine"),a=e.getItemVisual(n,"style"),s=a&&a.fill,l=a&&a.opacity;Hh(i,Yh(r),{labelFetcher:e.hostModel,labelDataIndex:n,inheritColor:s,defaultOpacity:l,defaultText:t.getFormattedLabel(n,"normal")||e.getName(n)});var u=i.getTextContent();i.setTextConfig({position:null,rotation:null}),u.attr({z2:10});var h=t.get(["label","position"]);if("outside"!==h&&"outer"!==h)i.removeTextGuideLine();else{var c=this.getTextGuideLine();c||(c=new Ru,this.setTextGuideLine(c)),db(this,fb(r),{stroke:s,opacity:ot(o.get(["lineStyle","opacity"]),l,1)})}},e}(Cu),lM=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.ignoreLabelLineUpdate=!0,e}return n(e,t),e.prototype.render=function(t,e,n,i){var r,o=t.getData(),a=this._data,s=this.group;if(!a&&o.count()>0){for(var l=o.getItemLayout(0),u=1;isNaN(l&&l.startAngle)&&u0?"right":"left":k>0?"left":"right"}var B=Math.PI,F=0,G=y.get("rotate");if(j(G))F=G*(B/180);else if("center"===v)F=0;else if("radial"===G||!0===G)F=k<0?-A+B:-A;else if("tangential"===G&&"outside"!==v&&"outer"!==v){var W=Math.atan2(k,L);W<0&&(W=2*B+W),L>0&&(W=B+W),F=W-B}if(o=!!F,p.x=I,p.y=T,p.rotation=F,p.setStyle({verticalAlign:"middle"}),P){p.setStyle({align:D});var H=p.states.select;H&&(H.x+=p.x,H.y+=p.y)}else{var Y=p.getBoundingRect().clone();Y.applyTransform(p.getComputedTransform());var U=(p.style.margin||0)+2.1;Y.y-=U/2,Y.height+=U,r.push({label:p,labelLine:f,position:v,len:S,len2:M,minTurnAngle:w.get("minTurnAngle"),maxSurfaceAngle:w.get("maxSurfaceAngle"),surfaceNormal:new Ji(k,L),linePoints:C,textAlign:D,labelDistance:m,labelAlignTo:x,edgeDistance:_,bleedMargin:b,rect:Y,unconstrainedWidth:Y.width,labelStyleWidth:p.style.width})}s.setTextConfig({inside:P})}})),!o&&t.get("avoidLabelOverlap")&&function(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=Number.MAX_VALUE,c=-Number.MAX_VALUE,p=0;p=n.r0}},e.type="pie",e}(xg);function uM(t,e,n){e=Y(e)&&{coordDimensions:e}||A({encodeDefine:t.getEncode()},e);var i=t.getSource(),r=Km(i,e).dimensions,o=new qm(r,t);return o.initData(i,n),o}var hM=function(){function t(t,e){this._getDataWithEncodedVisual=t,this._getRawData=e}return t.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},t.prototype.containName=function(t){return this._getRawData().indexOfName(t)>=0},t.prototype.indexOfName=function(t){return this._getDataWithEncodedVisual().indexOfName(t)},t.prototype.getItemVisual=function(t,e){return this._getDataWithEncodedVisual().getItemVisual(t,e)},t}(),cM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new hM(W(this.getData,this),W(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.mergeOption=function(){t.prototype.mergeOption.apply(this,arguments)},e.prototype.getInitialData=function(){return uM(this,{coordDimensions:["value"],encodeDefaulter:H(Yp,this)})},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=[];return n.each(n.mapDimension("value"),(function(t){r.push(t)})),i.percent=Wr(r,e,n.hostModel.get("percentPrecision")),i.$vars.push("percent"),i},e.prototype._defaultLabelLine=function(t){co(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.type="series.pie",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},e}(sg),pM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return rx(null,this,{useEncodeDefaulter:!0})},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},e.prototype.brushSelector=function(t,e,n){return n.point(e.getItemLayout(t))},e.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:""},e.type="series.scatter",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}},universalTransition:{divideShape:"clone"}},e}(sg),dM=function(){},fM=function(t){function e(e){var n=t.call(this,e)||this;return n._off=0,n.hoverDataIdx=-1,n}return n(e,t),e.prototype.getDefaultShape=function(){return new dM},e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.buildPath=function(t,e){var n,i=e.points,r=e.size,o=this.symbolProxy,a=o.shape,s=t.getContext?t.getContext():t,l=s&&r[0]<4,u=this.softClipShape;if(l)this._ctx=s;else{for(this._ctx=null,n=this._off;n=0;s--){var l=2*s,u=i[l]-o/2,h=i[l+1]-a/2;if(t>=u&&e>=h&&t<=u+o&&e<=h+a)return s}return-1},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return t=n[0],e=n[1],i.contain(t,e)?(this.hoverDataIdx=this.findDataIndex(t,e))>=0:(this.hoverDataIdx=-1,!1)},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var e=this.shape,n=e.points,i=e.size,r=i[0],o=i[1],a=1/0,s=1/0,l=-1/0,u=-1/0,h=0;h=0&&(l.dataIndex=n+(t.startIndex||0))}))},t.prototype.remove=function(){this._clear()},t.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},t}(),yM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).incrementalPrepareUpdate(i),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},e.prototype.updateTransform=function(t,e,n){var i=t.getData();if(this.group.dirty(),!this._finished||i.count()>1e4)return{update:!0};var r=bS("").reset(t,e,n);r.progress&&r.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout(i)},e.prototype.eachRendered=function(t){this._symbolDraw&&this._symbolDraw.eachRendered(t)},e.prototype._getClipShape=function(t){var e=t.coordinateSystem,n=e&&e.getArea&&e.getArea();return t.get("clip",!0)?n:null},e.prototype._updateSymbolDraw=function(t,e){var n=this._symbolDraw,i=e.pipelineContext.large;return n&&i===this._isLargeDraw||(n&&n.remove(),n=this._symbolDraw=i?new gM:new qw,this._isLargeDraw=i,this.group.removeAll()),this.group.add(n.group),n},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},e.prototype.dispose=function(){},e.type="scatter",e}(xg),vM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.type="grid",e.dependencies=["xAxis","yAxis"],e.layoutMode="box",e.defaultOption={show:!1,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},e}(Tp),mM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",Co).models[0]},e.type="cartesian2dAxis",e}(Tp);R(mM,p_);var xM={show:!0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},_M=C({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},xM),bM=C({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},xM),wM={category:_M,value:bM,time:C({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},bM),log:k({logBase:10},bM)},SM={value:1,category:1,time:1,log:1};function MM(t,e,i,r){E(SM,(function(o,a){var s=C(C({},wM[a],!0),r,!0),l=function(t){function i(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e+"Axis."+a,n}return n(i,t),i.prototype.mergeDefaultAndTheme=function(t,e){var n=bp(this),i=n?Sp(t):{};C(t,e.getTheme().get(a+"Axis")),C(t,this.getDefaultOption()),t.type=IM(t),n&&wp(t,i,n)},i.prototype.optionUpdated=function(){"category"===this.option.type&&(this.__ordinalMeta=sx.createByAxisModel(this))},i.prototype.getCategories=function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},i.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},i.type=e+"Axis."+a,i.defaultOption=s,i}(i);t.registerComponentModel(l)})),t.registerSubTypeDefaulter(e+"Axis",IM)}function IM(t){return t.type||(t.data?"category":"value")}var TM=function(){function t(t){this.type="cartesian",this._dimList=[],this._axes={},this.name=t||""}return t.prototype.getAxis=function(t){return this._axes[t]},t.prototype.getAxes=function(){return z(this._dimList,(function(t){return this._axes[t]}),this)},t.prototype.getAxesByScale=function(t){return t=t.toLowerCase(),B(this.getAxes(),(function(e){return e.scale.type===t}))},t.prototype.addAxis=function(t){var e=t.dim;this._axes[e]=t,this._dimList.push(e)},t}(),CM=["x","y"];function DM(t){return"interval"===t.type||"time"===t.type}var AM=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="cartesian2d",e.dimensions=CM,e}return n(e,t),e.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var t=this.getAxis("x").scale,e=this.getAxis("y").scale;if(DM(t)&&DM(e)){var n=t.getExtent(),i=e.getExtent(),r=this.dataToPoint([n[0],i[0]]),o=this.dataToPoint([n[1],i[1]]),a=n[1]-n[0],s=i[1]-i[0];if(a&&s){var l=(o[0]-r[0])/a,u=(o[1]-r[1])/s,h=r[0]-n[0]*l,c=r[1]-i[0]*u,p=this._transform=[l,0,0,u,h,c];this._invTransform=Bi([],p)}}},e.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},e.prototype.containPoint=function(t){var e=this.getAxis("x"),n=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},e.prototype.containData=function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},e.prototype.containZone=function(t,e){var n=this.dataToPoint(t),i=this.dataToPoint(e),r=this.getArea(),o=new sr(n[0],n[1],i[0]-n[0],i[1]-n[1]);return r.intersect(o)},e.prototype.dataToPoint=function(t,e,n){n=n||[];var i=t[0],r=t[1];if(this._transform&&null!=i&&isFinite(i)&&null!=r&&isFinite(r))return Ft(n,t,this._transform);var o=this.getAxis("x"),a=this.getAxis("y");return n[0]=o.toGlobalCoord(o.dataToCoord(i,e)),n[1]=a.toGlobalCoord(a.dataToCoord(r,e)),n},e.prototype.clampData=function(t,e){var n=this.getAxis("x").scale,i=this.getAxis("y").scale,r=n.getExtent(),o=i.getExtent(),a=n.parse(t[0]),s=i.parse(t[1]);return(e=e||[])[0]=Math.min(Math.max(Math.min(r[0],r[1]),a),Math.max(r[0],r[1])),e[1]=Math.min(Math.max(Math.min(o[0],o[1]),s),Math.max(o[0],o[1])),e},e.prototype.pointToData=function(t,e){var n=[];if(this._invTransform)return Ft(n,t,this._invTransform);var i=this.getAxis("x"),r=this.getAxis("y");return n[0]=i.coordToData(i.toLocalCoord(t[0]),e),n[1]=r.coordToData(r.toLocalCoord(t[1]),e),n},e.prototype.getOtherAxis=function(t){return this.getAxis("x"===t.dim?"y":"x")},e.prototype.getArea=function(){var t=this.getAxis("x").getGlobalExtent(),e=this.getAxis("y").getGlobalExtent(),n=Math.min(t[0],t[1]),i=Math.min(e[0],e[1]),r=Math.max(t[0],t[1])-n,o=Math.max(e[0],e[1])-i;return new sr(n,i,r,o)},e}(TM),kM=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.index=0,a.type=r||"value",a.position=o||"bottom",a}return n(e,t),e.prototype.isHorizontal=function(){var t=this.position;return"top"===t||"bottom"===t},e.prototype.getGlobalExtent=function(t){var e=this.getExtent();return e[0]=this.toGlobalCoord(e[0]),e[1]=this.toGlobalCoord(e[1]),t&&e[0]>e[1]&&e.reverse(),e},e.prototype.pointToData=function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},e.prototype.setCategorySortInfo=function(t){if("category"!==this.type)return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},e}(H_);function LM(t,e,n){n=n||{};var i=t.coordinateSystem,r=e.axis,o={},a=r.getAxesOnZeroOf()[0],s=r.position,l=a?"onZero":s,u=r.dim,h=i.getRect(),c=[h.x,h.x+h.width,h.y,h.y+h.height],p={left:0,right:1,top:0,bottom:1,onZero:2},d=e.get("offset")||0,f="x"===u?[c[2]-d,c[3]+d]:[c[0]-d,c[1]+d];if(a){var g=a.toGlobalCoord(a.dataToCoord(0));f[p.onZero]=Math.max(Math.min(g,f[1]),f[0])}o.position=["y"===u?f[p[l]]:c[0],"x"===u?f[p[l]]:c[3]],o.rotation=Math.PI/2*("x"===u?0:1),o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,left:-1,right:1}[s],o.labelOffset=a?f[p[s]]-f[p.onZero]:0,e.get(["axisTick","inside"])&&(o.tickDirection=-o.tickDirection),it(n.labelInside,e.get(["axisLabel","inside"]))&&(o.labelDirection=-o.labelDirection);var y=e.get(["axisLabel","rotate"]);return o.labelRotate="top"===l?-y:y,o.z2=1,o}function PM(t){return"cartesian2d"===t.get("coordinateSystem")}function OM(t){var e={xAxisModel:null,yAxisModel:null};return E(e,(function(n,i){var r=i.replace(/Model$/,""),o=t.getReferringComponents(r,Co).models[0];e[i]=o})),e}var RM=Math.log;function NM(t,e,n){var i=xx.prototype,r=i.getTicks.call(n),o=i.getTicks.call(n,!0),a=r.length-1,s=i.getInterval.call(n),l=i_(t,e),u=l.extent,h=l.fixMin,c=l.fixMax;if("log"===t.type){var p=RM(t.base);u=[RM(u[0])/p,RM(u[1])/p]}t.setExtent(u[0],u[1]),t.calcNiceExtent({splitNumber:a,fixMin:h,fixMax:c});var d=i.getExtent.call(t);h&&(u[0]=d[0]),c&&(u[1]=d[1]);var f=i.getInterval.call(t),g=u[0],y=u[1];if(h&&c)f=(y-g)/a;else if(h)for(y=u[0]+f*a;yu[0]&&isFinite(g)&&isFinite(u[0]);)f=cx(f),g=u[1]-f*a;else{t.getTicks().length-1>a&&(f=cx(f));var v=f*a;(g=zr((y=Math.ceil(u[1]/f)*f)-v))<0&&u[0]>=0?(g=0,y=zr(v)):y>0&&u[1]<=0&&(y=0,g=-zr(v))}var m=(r[0].value-o[0].value)/s,x=(r[a].value-o[a].value)/s;i.setExtent.call(t,g+f*m,y+f*x),i.setInterval.call(t,f),(m||x)&&i.setNiceExtent.call(t,g+f,y-f)}var EM=function(){function t(t,e,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=CM,this._initCartesian(t,e,n),this.model=t}return t.prototype.getRect=function(){return this._rect},t.prototype.update=function(t,e){var n=this._axesMap;function i(t){var e,n=G(t),i=n.length;if(i){for(var r=[],o=i-1;o>=0;o--){var a=t[+n[o]],s=a.model,l=a.scale;ux(l)&&s.get("alignTicks")&&null==s.get("interval")?r.push(a):(r_(l,s),ux(l)&&(e=a))}r.length&&(e||r_((e=r.pop()).scale,e.model),E(r,(function(t){NM(t.scale,t.model,e.scale)})))}}this._updateScale(t,this.model),i(n.x),i(n.y);var r={};E(n.x,(function(t){VM(n,"y",t,r)})),E(n.y,(function(t){VM(n,"x",t,r)})),this.resize(this.model,e)},t.prototype.resize=function(t,e,n){var i=t.getBoxLayoutParams(),r=!n&&t.get("containLabel"),o=xp(i,{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;function s(){E(a,(function(t){var e=t.isHorizontal(),n=e?[0,o.width]:[0,o.height],i=t.inverse?1:0;t.setExtent(n[i],n[1-i]),function(t,e){var n=t.getExtent(),i=n[0]+n[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return i-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return i-t+e}}(t,e?o.x:o.y)}))}s(),r&&(E(a,(function(t){if(!t.model.get(["axisLabel","inside"])){var e=function(t){var e=t.model,n=t.scale;if(e.get(["axisLabel","show"])&&!n.isBlank()){var i,r,o=n.getExtent();r=n instanceof vx?n.count():(i=n.getTicks()).length;var a,s=t.getLabelModel(),l=a_(t),u=1;r>40&&(u=Math.ceil(r/40));for(var h=0;h0&&i>0||n<0&&i<0)}(t)}var FM=Math.PI,GM=function(){function t(t,e){this.group=new Cr,this.opt=e,this.axisModel=t,k(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0,handleAutoShown:function(){return!0}});var n=new Cr({x:e.position[0],y:e.position[1],rotation:e.rotation});n.updateTransform(),this._transformGroup=n}return t.prototype.hasBuilder=function(t){return!!WM[t]},t.prototype.add=function(t){WM[t](this.opt,this.axisModel,this.group,this._transformGroup)},t.prototype.getGroup=function(){return this.group},t.innerTextLayout=function(t,e,n){var i,r,o=Ur(e-t);return Xr(o)?(r=n>0?"top":"bottom",i="center"):Xr(o-FM)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=o>0&&o0?"right":"left":n>0?"left":"right"),{rotation:o,textAlign:i,textVerticalAlign:r}},t.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},t.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)},t}(),WM={axisLine:function(t,e,n,i){var r=e.get(["axisLine","show"]);if("auto"===r&&t.handleAutoShown&&(r=t.handleAutoShown("axisLine")),r){var o=e.axis.getExtent(),a=i.transform,s=[o[0],0],l=[o[1],0];a&&(Ft(s,s,a),Ft(l,l,a));var u=A({lineCap:"round"},e.getModel(["axisLine","lineStyle"]).getLineStyle()),h=new zu({subPixelOptimize:!0,shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:u,strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1});h.anid="line",n.add(h);var c=e.get(["axisLine","symbol"]);if(null!=c){var p=e.get(["axisLine","symbolSize"]);X(c)&&(c=[c,c]),(X(p)||j(p))&&(p=[p,p]);var d=Oy(e.get(["axisLine","symbolOffset"])||0,p),f=p[0],g=p[1];E([{rotate:t.rotation+Math.PI/2,offset:d[0],r:0},{rotate:t.rotation-Math.PI/2,offset:d[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],(function(e,i){if("none"!==c[i]&&null!=c[i]){var r=Ly(c[i],-f/2,-g/2,f,g,u.stroke,!0),o=e.r+e.offset;r.attr({rotation:e.rotate,x:s[0]+o*Math.cos(t.rotation),y:s[1]-o*Math.sin(t.rotation),silent:!0,z2:11}),n.add(r)}}))}}},axisTickLabel:function(t,e,n,i){var r=function(t,e,n,i){var r=n.axis,o=n.getModel("axisTick"),a=o.get("show");if("auto"===a&&i.handleAutoShown&&(a=i.handleAutoShown("axisTick")),a&&!r.scale.isBlank()){for(var s=o.getModel("lineStyle"),l=i.tickDirection*o.get("length"),u=XM(r.getTicksCoords(),e.transform,l,k(s.getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])}),"ticks"),h=0;hc[1]?-1:1,d=["start"===s?c[0]-p*h:"end"===s?c[1]+p*h:(c[0]+c[1])/2,UM(s)?t.labelOffset+l*h:0],f=e.get("nameRotate");null!=f&&(f=f*FM/180),UM(s)?o=GM.innerTextLayout(t.rotation,null!=f?f:t.rotation,l):(o=function(t,e,n,i){var r,o,a=Ur(n-t),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;return Xr(a-FM/2)?(o=l?"bottom":"top",r="center"):Xr(a-1.5*FM)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*FM&&a>FM/2?l?"left":"right":l?"right":"left"),{rotation:a,textAlign:r,textVerticalAlign:o}}(t.rotation,s,f||0,c),null!=(a=t.axisNameAvailableWidth)&&(a=Math.abs(a/Math.sin(o.rotation)),!isFinite(a)&&(a=null)));var g=u.getFont(),y=e.get("nameTruncate",!0)||{},v=y.ellipsis,m=it(t.nameTruncateMaxWidth,y.maxWidth,a),x=new ks({x:d[0],y:d[1],rotation:o.rotation,silent:GM.isLabelSilent(e),style:Uh(u,{text:r,font:g,overflow:"truncate",width:m,ellipsis:v,fill:u.getTextColor()||e.get(["axisLine","lineStyle","color"]),align:u.get("align")||o.textAlign,verticalAlign:u.get("verticalAlign")||o.textVerticalAlign}),z2:1});if(Eh({el:x,componentModel:e,itemName:r}),x.__fullText=r,x.anid="name",e.get("triggerEvent")){var _=GM.makeAxisEventDataBase(e);_.targetType="axisName",_.name=r,Hs(x).eventData=_}i.add(x),x.updateTransform(),n.add(x),x.decomposeTransform()}}};function HM(t){t&&(t.ignore=!0)}function YM(t,e){var n=t&&t.getBoundingRect().clone(),i=e&&e.getBoundingRect().clone();if(n&&i){var r=Oi([]);return zi(r,r,-t.rotation),n.applyTransform(Ni([],r,t.getLocalTransform())),i.applyTransform(Ni([],r,e.getLocalTransform())),n.intersect(i)}}function UM(t){return"middle"===t||"center"===t}function XM(t,e,n,i,r){for(var o=[],a=[],s=[],l=0;l=0||t===e}function KM(t){var e=(t.ecModel.getComponent("axisPointer")||{}).coordSysAxesInfo;return e&&e.axesInfo[JM(t)]}function $M(t){return!!t.get(["handle","show"])}function JM(t){return t.type+"||"+t.id}var QM={},tI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(e,n,i,r){this.axisPointerClass&&function(t){var e=KM(t);if(e){var n=e.axisPointerModel,i=e.axis.scale,r=n.option,o=n.get("status"),a=n.get("value");null!=a&&(a=i.parse(a));var s=$M(n);null==o&&(r.status=s?"show":"hide");var l=i.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==a||a>l[1])&&(a=l[1]),a0&&!c.min?c.min=0:null!=c.min&&c.min<0&&!c.max&&(c.max=0);var p=a;null!=c.color&&(p=k({color:c.color},a));var d=C(T(c),{boundaryGap:t,splitNumber:e,scale:n,axisLine:i,axisTick:r,axisLabel:o,name:c.text,showName:s,nameLocation:"end",nameGap:u,nameTextStyle:p,triggerEvent:h},!1);if(X(l)){var f=d.name;d.name=l.replace("{value}",null!=f?f:"")}else U(l)&&(d.name=l(d.name,d));var g=new dc(d,null,this.ecModel);return R(g,p_.prototype),g.mainType="radar",g.componentIndex=this.componentIndex,g}),this);this._indicatorModels=c},e.prototype.getIndicatorModels=function(){return this._indicatorModels},e.type="radar",e.defaultOption={z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:C({lineStyle:{color:"#bbb"}},xI.axisLine),axisLabel:_I(xI.axisLabel,!1),axisTick:_I(xI.axisTick,!1),splitLine:_I(xI.splitLine,!0),splitArea:_I(xI.splitArea,!0),indicator:[]},e}(Tp),wI=["axisLine","axisTickLabel","axisName"],SI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},e.prototype._buildAxes=function(t){var e=t.coordinateSystem;E(z(e.getIndicatorAxes(),(function(t){var n=t.model.get("showName")?t.name:"";return new GM(t.model,{axisName:n,position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})})),(function(t){E(wI,t.add,t),this.group.add(t.getGroup())}),this)},e.prototype._buildSplitLineAndArea=function(t){var e=t.coordinateSystem,n=e.getIndicatorAxes();if(n.length){var i=t.get("shape"),r=t.getModel("splitLine"),o=t.getModel("splitArea"),a=r.getModel("lineStyle"),s=o.getModel("areaStyle"),l=r.get("show"),u=o.get("show"),h=a.get("color"),c=s.get("color"),p=Y(h)?h:[h],d=Y(c)?c:[c],f=[],g=[];if("circle"===i)for(var y=n[0].getTicksCoords(),v=e.cx,m=e.cy,x=0;x3?1.4:r>1?1.2:1.1;LI(this,"zoom","zoomOnMouseWheel",t,{scale:i>0?s:1/s,originX:o,originY:a,isAvailableBehavior:null})}if(n){var l=Math.abs(i);LI(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(i>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:o,originY:a,isAvailableBehavior:null})}}},e.prototype._pinchHandler=function(t){DI(this._zr,"globalPan")||LI(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})},e}(Xt);function LI(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r.originY)&&(se(i.event),PI(t,e,n,i,r))}function PI(t,e,n,i,r){r.isAvailableBehavior=W(OI,null,n,i),t.trigger(e,r)}function OI(t,e,n){var i=n[t];return!t||i&&(!X(i)||e.event[i+"Key"])}function RI(t,e,n){var i=t.target;i.x+=e,i.y+=n,i.dirty()}function NI(t,e,n,i){var r=t.target,o=t.zoomLimit,a=t.zoom=t.zoom||1;if(a*=e,o){var s=o.min||0,l=o.max||1/0;a=Math.max(Math.min(l,a),s)}var u=a/t.zoom;t.zoom=a,r.x-=(n-r.x)*(u-1),r.y-=(i-r.y)*(u-1),r.scaleX*=u,r.scaleY*=u,r.dirty()}var EI,zI={axisPointer:1,tooltip:1,brush:1};function VI(t,e,n){var i=e.getComponentByElement(t.topTarget),r=i&&i.coordinateSystem;return i&&i!==n&&!zI.hasOwnProperty(i.mainType)&&r&&r.model!==n}function BI(t){X(t)&&(t=(new DOMParser).parseFromString(t,"text/xml"));var e=t;for(9===e.nodeType&&(e=e.firstChild);"svg"!==e.nodeName.toLowerCase()||1!==e.nodeType;)e=e.nextSibling;return e}var FI={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-anchor":"textAlign",visibility:"visibility",display:"display"},GI=G(FI),WI={"alignment-baseline":"textBaseline","stop-color":"stopColor"},HI=G(WI),YI=function(){function t(){this._defs={},this._root=null}return t.prototype.parse=function(t,e){e=e||{};var n=BI(t);this._defsUsePending=[];var i=new Cr;this._root=i;var r=[],o=n.getAttribute("viewBox")||"",a=parseFloat(n.getAttribute("width")||e.width),s=parseFloat(n.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(s)&&(s=null),KI(n,i,null,!0,!1);for(var l,u,h=n.firstChild;h;)this._parseNode(h,i,r,null,!1,!1),h=h.nextSibling;if(function(t,e){for(var n=0;n=4&&(l={x:parseFloat(c[0]||0),y:parseFloat(c[1]||0),width:parseFloat(c[2]),height:parseFloat(c[3])})}if(l&&null!=a&&null!=s&&(u=oT(l,{x:0,y:0,width:a,height:s}),!e.ignoreViewBox)){var p=i;(i=new Cr).add(p),p.scaleX=p.scaleY=u.scale,p.x=u.x,p.y=u.y}return e.ignoreRootClip||null==a||null==s||i.setClipPath(new Cs({shape:{x:0,y:0,width:a,height:s}})),{root:i,width:a,height:s,viewBoxRect:l,viewBoxTransform:u,named:r}},t.prototype._parseNode=function(t,e,n,i,r,o){var a,s=t.nodeName.toLowerCase(),l=i;if("defs"===s&&(r=!0),"text"===s&&(o=!0),"defs"===s||"switch"===s)a=e;else{if(!r){var u=EI[s];if(u&&mt(EI,s)){a=u.call(this,t,e);var h=t.getAttribute("name");if(h){var c={name:h,namedFrom:null,svgNodeTagLower:s,el:a};n.push(c),"g"===s&&(l=c)}else i&&n.push({name:i.name,namedFrom:i,svgNodeTagLower:s,el:a});e.add(a)}}var p=UI[s];if(p&&mt(UI,s)){var d=p.call(this,t),f=t.getAttribute("id");f&&(this._defs[f]=d)}}if(a&&a.isGroup)for(var g=t.firstChild;g;)1===g.nodeType?this._parseNode(g,a,n,l,r,o):3===g.nodeType&&o&&this._parseText(g,a),g=g.nextSibling},t.prototype._parseText=function(t,e){var n=new vs({style:{text:t.textContent},silent:!0,x:this._textX||0,y:this._textY||0});jI(e,n),KI(t,n,this._defsUsePending,!1,!1),function(t,e){var n=e.__selfStyle;if(n){var i=n.textBaseline,r=i;i&&"auto"!==i?"baseline"===i?r="alphabetic":"before-edge"===i||"text-before-edge"===i?r="top":"after-edge"===i||"text-after-edge"===i?r="bottom":"central"!==i&&"mathematical"!==i||(r="middle"):r="alphabetic",t.style.textBaseline=r}var o=e.__inheritedStyle;if(o){var a=o.textAlign,s=a;a&&("middle"===a&&(s="center"),t.style.textAlign=s)}}(n,e);var i=n.style,r=i.fontSize;r&&r<9&&(i.fontSize=9,n.scaleX*=r/9,n.scaleY*=r/9);var o=(i.fontSize||i.fontFamily)&&[i.fontStyle,i.fontWeight,(i.fontSize||12)+"px",i.fontFamily||"sans-serif"].join(" ");i.font=o;var a=n.getBoundingRect();return this._textX+=a.width,e.add(n),n},t.internalField=void(EI={g:function(t,e){var n=new Cr;return jI(e,n),KI(t,n,this._defsUsePending,!1,!1),n},rect:function(t,e){var n=new Cs;return jI(e,n),KI(t,n,this._defsUsePending,!1,!1),n.setShape({x:parseFloat(t.getAttribute("x")||"0"),y:parseFloat(t.getAttribute("y")||"0"),width:parseFloat(t.getAttribute("width")||"0"),height:parseFloat(t.getAttribute("height")||"0")}),n.silent=!0,n},circle:function(t,e){var n=new hu;return jI(e,n),KI(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),r:parseFloat(t.getAttribute("r")||"0")}),n.silent=!0,n},line:function(t,e){var n=new zu;return jI(e,n),KI(t,n,this._defsUsePending,!1,!1),n.setShape({x1:parseFloat(t.getAttribute("x1")||"0"),y1:parseFloat(t.getAttribute("y1")||"0"),x2:parseFloat(t.getAttribute("x2")||"0"),y2:parseFloat(t.getAttribute("y2")||"0")}),n.silent=!0,n},ellipse:function(t,e){var n=new pu;return jI(e,n),KI(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),rx:parseFloat(t.getAttribute("rx")||"0"),ry:parseFloat(t.getAttribute("ry")||"0")}),n.silent=!0,n},polygon:function(t,e){var n,i=t.getAttribute("points");i&&(n=qI(i));var r=new Pu({shape:{points:n||[]},silent:!0});return jI(e,r),KI(t,r,this._defsUsePending,!1,!1),r},polyline:function(t,e){var n,i=t.getAttribute("points");i&&(n=qI(i));var r=new Ru({shape:{points:n||[]},silent:!0});return jI(e,r),KI(t,r,this._defsUsePending,!1,!1),r},image:function(t,e){var n=new _s;return jI(e,n),KI(t,n,this._defsUsePending,!1,!1),n.setStyle({image:t.getAttribute("xlink:href")||t.getAttribute("href"),x:+t.getAttribute("x"),y:+t.getAttribute("y"),width:+t.getAttribute("width"),height:+t.getAttribute("height")}),n.silent=!0,n},text:function(t,e){var n=t.getAttribute("x")||"0",i=t.getAttribute("y")||"0",r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0";this._textX=parseFloat(n)+parseFloat(r),this._textY=parseFloat(i)+parseFloat(o);var a=new Cr;return jI(e,a),KI(t,a,this._defsUsePending,!1,!0),a},tspan:function(t,e){var n=t.getAttribute("x"),i=t.getAttribute("y");null!=n&&(this._textX=parseFloat(n)),null!=i&&(this._textY=parseFloat(i));var r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0",a=new Cr;return jI(e,a),KI(t,a,this._defsUsePending,!1,!0),this._textX+=parseFloat(r),this._textY+=parseFloat(o),a},path:function(t,e){var n=su(t.getAttribute("d")||"");return jI(e,n),KI(t,n,this._defsUsePending,!1,!1),n.silent=!0,n}}),t}(),UI={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||"0",10),n=parseInt(t.getAttribute("y1")||"0",10),i=parseInt(t.getAttribute("x2")||"10",10),r=parseInt(t.getAttribute("y2")||"0",10),o=new Xu(e,n,i,r);return XI(t,o),ZI(t,o),o},radialgradient:function(t){var e=parseInt(t.getAttribute("cx")||"0",10),n=parseInt(t.getAttribute("cy")||"0",10),i=parseInt(t.getAttribute("r")||"0",10),r=new Zu(e,n,i);return XI(t,r),ZI(t,r),r}};function XI(t,e){"userSpaceOnUse"===t.getAttribute("gradientUnits")&&(e.global=!0)}function ZI(t,e){for(var n=t.firstChild;n;){if(1===n.nodeType&&"stop"===n.nodeName.toLocaleLowerCase()){var r,i=n.getAttribute("offset");r=i&&i.indexOf("%")>0?parseInt(i,10)/100:i?parseFloat(i):0;var o={};rT(n,o,o);var a=o.stopColor||n.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:r,color:a})}n=n.nextSibling}}function jI(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),k(e.__inheritedStyle,t.__inheritedStyle))}function qI(t){for(var e=tT(t),n=[],i=0;i0;o-=2){var a=i[o],s=i[o-1],l=tT(a);switch(r=r||[1,0,0,1,0,0],s){case"translate":Ei(r,r,[parseFloat(l[0]),parseFloat(l[1]||"0")]);break;case"scale":Vi(r,r,[parseFloat(l[0]),parseFloat(l[1]||l[0])]);break;case"rotate":zi(r,r,-parseFloat(l[0])*nT);break;case"skewX":Ni(r,[1,0,Math.tan(parseFloat(l[0])*nT),1,0,0],r);break;case"skewY":Ni(r,[1,Math.tan(parseFloat(l[0])*nT),0,1,0,0],r);break;case"matrix":r[0]=parseFloat(l[0]),r[1]=parseFloat(l[1]),r[2]=parseFloat(l[2]),r[3]=parseFloat(l[3]),r[4]=parseFloat(l[4]),r[5]=parseFloat(l[5])}}e.setLocalTransform(r)}}(t,e),rT(t,a,s),i||function(t,e,n){for(var i=0;i0,f={api:n,geo:s,mapOrGeoModel:t,data:a,isVisualEncodedByVisualMap:d,isGeo:o,transformInfoRaw:c};"geoJSON"===s.resourceType?this._buildGeoJSON(f):"geoSVG"===s.resourceType&&this._buildSVG(f),this._updateController(t,e,n),this._updateMapSelectHandler(t,l,n,i)},t.prototype._buildGeoJSON=function(t){var e=this._regionsGroupByName=ft(),n=ft(),i=this._regionsGroup,r=t.transformInfoRaw,o=t.mapOrGeoModel,a=t.data,s=t.geo.projection,l=s&&s.stream;function u(t,e){return e&&(t=e(t)),t&&[t[0]*r.scaleX+r.x,t[1]*r.scaleY+r.y]}function h(t){for(var e=[],n=!l&&s&&s.project,i=0;i=0)&&(p=r);var d=a?{normal:{align:"center",verticalAlign:"middle"}}:null;Hh(e,Yh(i),{labelFetcher:p,labelDataIndex:c,defaultText:n},d);var f=e.getTextContent();if(f&&(TT(f).ignore=f.ignore,e.textConfig&&a)){var g=e.getBoundingRect().clone();e.textConfig.layoutRect=g,e.textConfig.position=[(a[0]-g.x)/g.width*100+"%",(a[1]-g.y)/g.height*100+"%"]}e.disableLabelAnimation=!0}else e.removeTextContent(),e.removeTextConfig(),e.disableLabelAnimation=null}function PT(t,e,n,i,r,o){t.data?t.data.setItemGraphicEl(o,e):Hs(e).eventData={componentType:"geo",componentIndex:r.componentIndex,geoIndex:r.componentIndex,name:n,region:i&&i.option||{}}}function OT(t,e,n,i,r){t.data||Eh({el:e,componentModel:r,itemName:n,itemTooltipOption:i.get("tooltip")})}function RT(t,e,n,i,r){e.highDownSilentOnTouch=!!r.get("selectedMode");var o=i.getModel("emphasis"),a=o.get("focus");return Rl(e,a,o.get("blurScope"),o.get("disabled")),t.isGeo&&function(t,e,n){var i=Hs(t);i.componentMainType=e.mainType,i.componentIndex=e.componentIndex,i.componentHighDownName=n}(e,r,n),a}function NT(t,e,n){var i,r=[];function o(){i=[]}function a(){i.length&&(r.push(i),i=[])}var s=e({polygonStart:o,polygonEnd:a,lineStart:o,lineEnd:a,point:function(t,e){isFinite(t)&&isFinite(e)&&i.push([t,e])},sphere:function(){}});return!n&&s.polygonStart(),E(t,(function(t){s.lineStart();for(var e=0;e-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n},e.type="series.map",e.dependencies=["geo"],e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},e}(sg);function VT(t){var e={};t.eachSeriesByType("map",(function(t){var n=t.getHostGeoModel(),i=n?"o"+n.id:"i"+t.getMapType();(e[i]=e[i]||[]).push(t)})),E(e,(function(t,e){for(var n,i,r,o=(n=z(t,(function(t){return t.getData()})),i=t[0].get("mapValueCalculation"),r={},E(n,(function(t){t.each(t.mapDimension("value"),(function(e,n){var i="ec-"+t.getName(n);r[i]=r[i]||[],isNaN(e)||r[i].push(e)}))})),n[0].map(n[0].mapDimension("value"),(function(t,e){for(var o="ec-"+n[0].getName(e),a=0,s=1/0,l=-1/0,u=r[o].length,h=0;h1?(d.width=p,d.height=p/x):(d.height=p,d.width=p*x),d.y=c[1]-d.height/2,d.x=c[0]-d.width/2;else{var b=t.getBoxLayoutParams();b.aspect=x,d=xp(b,{width:v,height:m})}this.setViewRect(d.x,d.y,d.width,d.height),this.setCenter(t.get("center"),e),this.setZoom(t.get("zoom"))}R(UT,GT);var jT=new(function(){function t(){this.dimensions=YT}return t.prototype.create=function(t,e){var n=[];function i(t){return{nameProperty:t.get("nameProperty"),aspectScale:t.get("aspectScale"),projection:t.get("projection")}}t.eachComponent("geo",(function(t,r){var o=t.get("map"),a=new UT(o+r,o,A({nameMap:t.get("nameMap")},i(t)));a.zoomLimit=t.get("scaleLimit"),n.push(a),t.coordinateSystem=a,a.model=t,a.resize=ZT,a.resize(t,e)})),t.eachSeries((function(t){if("geo"===t.get("coordinateSystem")){var e=t.get("geoIndex")||0;t.coordinateSystem=n[e]}}));var r={};return t.eachSeriesByType("map",(function(t){if(!t.getHostGeoModel()){var e=t.getMapType();r[e]=r[e]||[],r[e].push(t)}})),E(r,(function(t,r){var o=z(t,(function(t){return t.get("nameMap")})),a=new UT(r,r,A({nameMap:D(o)},i(t[0])));a.zoomLimit=it.apply(null,z(t,(function(t){return t.get("scaleLimit")}))),n.push(a),a.resize=ZT,a.resize(t[0],e),E(t,(function(t){t.coordinateSystem=a,function(t,e){E(e.get("geoCoord"),(function(e,n){t.addGeoCoord(n,e)}))}(a,t)}))})),n},t.prototype.getFilledRegions=function(t,e,n,i){for(var r=(t||[]).slice(),o=ft(),a=0;a=0;){var o=e[n];o.hierNode.prelim+=i,o.hierNode.modifier+=i,r+=o.hierNode.change,i+=o.hierNode.shift+r}}(t);var o=(n[0].hierNode.prelim+n[n.length-1].hierNode.prelim)/2;r?(t.hierNode.prelim=r.hierNode.prelim+e(t,r),t.hierNode.modifier=t.hierNode.prelim-o):t.hierNode.prelim=o}else r&&(t.hierNode.prelim=r.hierNode.prelim+e(t,r));t.parentNode.hierNode.defaultAncestor=function(t,e,n,i){if(e){for(var r=t,o=t,a=o.parentNode.children[0],s=e,l=r.hierNode.modifier,u=o.hierNode.modifier,h=a.hierNode.modifier,c=s.hierNode.modifier;s=oC(s),o=aC(o),s&&o;){r=oC(r),a=aC(a),r.hierNode.ancestor=t;var p=s.hierNode.prelim+c-o.hierNode.prelim-u+i(s,o);p>0&&(lC(sC(s,t,n),t,p),u+=p,l+=p),c+=s.hierNode.modifier,u+=o.hierNode.modifier,l+=r.hierNode.modifier,h+=a.hierNode.modifier}s&&!oC(r)&&(r.hierNode.thread=s,r.hierNode.modifier+=c-l),o&&!aC(a)&&(a.hierNode.thread=o,a.hierNode.modifier+=u-h,n=t)}return n}(t,r,t.parentNode.hierNode.defaultAncestor||i[0],e)}function nC(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function iC(t){return arguments.length?t:uC}function rC(t,e){return t-=Math.PI/2,{x:e*Math.cos(t),y:e*Math.sin(t)}}function oC(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function aC(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function sC(t,e,n){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:n}function lC(t,e,n){var i=n/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=i,e.hierNode.shift+=n,e.hierNode.modifier+=n,e.hierNode.prelim+=n,t.hierNode.change+=i}function uC(t,e){return t.parentNode===e.parentNode?1:2}var hC=function(){this.parentPoint=[],this.childPoints=[]},cC=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new hC},e.prototype.buildPath=function(t,e){var n=e.childPoints,i=n.length,r=e.parentPoint,o=n[0],a=n[i-1];if(1===i)return t.moveTo(r[0],r[1]),void t.lineTo(o[0],o[1]);var s=e.orient,l="TB"===s||"BT"===s?0:1,u=1-l,h=Er(e.forkPosition,1),c=[];c[l]=r[l],c[u]=r[u]+(a[u]-r[u])*h,t.moveTo(r[0],r[1]),t.lineTo(c[0],c[1]),t.moveTo(o[0],o[1]),c[l]=o[l],t.lineTo(c[0],c[1]),c[l]=a[l],t.lineTo(c[0],c[1]),t.lineTo(a[0],a[1]);for(var p=1;pm.x)||(_-=Math.PI);var S=b?"left":"right",M=s.getModel("label"),I=M.get("rotate"),T=I*(Math.PI/180),C=y.getTextContent();C&&(y.setTextConfig({position:M.get("position")||S,rotation:null==I?-_:T,origin:"center"}),C.setStyle("verticalAlign","middle"))}var D=s.get(["emphasis","focus"]),A="relative"===D?gt(a.getAncestorsIndices(),a.getDescendantIndices()):"ancestor"===D?a.getAncestorsIndices():"descendant"===D?a.getDescendantIndices():null;A&&(Hs(n).focus=A),function(t,e,n,i,r,o,a,s){var l=e.getModel(),u=t.get("edgeShape"),h=t.get("layout"),c=t.getOrient(),p=t.get(["lineStyle","curveness"]),d=t.get("edgeForkPosition"),f=l.getModel("lineStyle").getLineStyle(),g=i.__edge;if("curve"===u)e.parentNode&&e.parentNode!==n&&(g||(g=i.__edge=new Gu({shape:mC(h,c,p,r,r)})),rh(g,{shape:mC(h,c,p,o,a)},t));else if("polyline"===u&&"orthogonal"===h&&e!==n&&e.children&&0!==e.children.length&&!0===e.isExpand){for(var y=e.children,v=[],m=0;me&&(e=i.height)}this.height=e+1},t.prototype.getNodeById=function(t){if(this.getId()===t)return this;for(var e=0,n=this.children,i=n.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},t.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostTree.data.getItemModel(this.dataIndex).getModel(t)},t.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},t.prototype.setVisual=function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},t.prototype.getVisual=function(t){return this.hostTree.data.getItemVisual(this.dataIndex,t)},t.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},t.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},t.prototype.getChildIndex=function(){if(this.parentNode){for(var t=this.parentNode.children,e=0;e=0){var i=n.getData().tree.root,r=t.targetNode;if(X(r)&&(r=i.getNodeById(r)),r&&i.contains(r))return{node:r};var o=t.targetNodeId;if(null!=o&&(r=i.getNodeById(o)))return{node:r}}}function LC(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function PC(t,e){return P(LC(t),e)>=0}function OC(t,e){for(var n=[];t;){var i=t.dataIndex;n.push({name:t.name,dataIndex:i,value:e.getRawValue(i)}),t=t.parentNode}return n.reverse(),n}var RC=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasSymbolVisual=!0,e.ignoreStyleOnData=!0,e}return n(e,t),e.prototype.getInitialData=function(t){var e={name:t.name,children:t.data},n=t.leaves||{},i=new dc(n,this,this.ecModel),r=AC.createTree(e,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e);return n&&n.children.length&&n.isExpand||(t.parentModel=i),t}))})),o=0;r.eachNode("preorder",(function(t){t.depth>o&&(o=t.depth)}));var a=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:o;return r.root.eachNode("preorder",(function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=a})),r.data},e.prototype.getOrient=function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.formatTooltip=function(t,e,n){for(var i=this.getData().tree,r=i.root.children[0],o=i.getNodeByDataIndex(t),a=o.getValue(),s=o.name;o&&o!==r;)s=o.parentNode.name+"."+s,o=o.parentNode;return Xf("nameValue",{name:s,value:a,noValue:isNaN(a)||null==a})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treeAncestors=OC(i,this),n.collapsed=!i.isExpand,n},e.type="series.tree",e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},e}(sg);function NC(t,e){for(var n,i=[t];n=i.pop();)if(e(n),n.isExpand){var r=n.children;if(r.length)for(var o=r.length-1;o>=0;o--)i.push(r[o])}}function EC(t,e){t.eachSeriesByType("tree",(function(t){!function(t,e){var n=function(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=n;var i=t.get("layout"),r=0,o=0,a=null;"radial"===i?(r=2*Math.PI,o=Math.min(n.height,n.width)/2,a=iC((function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth}))):(r=n.width,o=n.height,a=iC());var s=t.getData().tree.root,l=s.children[0];if(l){!function(t){var e=t;e.hierNode={defaultAncestor:null,ancestor:e,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var n,i,r=[e];n=r.pop();)if(i=n.children,n.isExpand&&i.length)for(var o=i.length-1;o>=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},r.push(a)}}(s),function(t,e,n){for(var i,r=[t],o=[];i=r.pop();)if(o.push(i),i.isExpand){var a=i.children;if(a.length)for(var s=0;sh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)}));var p=u===h?1:a(u,h)/2,d=p-u.getLayout().x,f=0,g=0,y=0,v=0;if("radial"===i)f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),NC(l,(function(t){y=(t.getLayout().x+d)*f,v=(t.depth-1)*g;var e=rC(y,v);t.setLayout({x:e.x,y:e.y,rawX:y,rawY:v},!0)}));else{var m=t.getOrient();"RL"===m||"LR"===m?(g=o/(h.getLayout().x+p+d),f=r/(c.depth-1||1),NC(l,(function(t){v=(t.getLayout().x+d)*g,y="LR"===m?(t.depth-1)*f:r-(t.depth-1)*f,t.setLayout({x:y,y:v},!0)}))):"TB"!==m&&"BT"!==m||(f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),NC(l,(function(t){y=(t.getLayout().x+d)*f,v="TB"===m?(t.depth-1)*g:o-(t.depth-1)*g,t.setLayout({x:y,y:v},!0)})))}}}(t,e)}))}function zC(t){t.eachSeriesByType("tree",(function(t){var e=t.getData();e.tree.eachNode((function(t){var n=t.getModel().getModel("itemStyle").getItemStyle();A(e.ensureUniqueItemVisual(t.dataIndex,"style"),n)}))}))}var VC=["treemapZoomToNode","treemapRender","treemapMove"];function BC(t){var e=t.getData().tree,n={};e.eachNode((function(e){for(var i=e;i&&i.depth>1;)i=i.parentNode;var r=ed(t.ecModel,i.name||i.dataIndex+"",n);e.setVisual("decal",r)}))}var FC=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.preventUsingHoverLayer=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};GC(n);var i=t.levels||[],r=this.designatedVisualItemStyle={},o=new dc({itemStyle:r},this,e),a=z((i=t.levels=function(t,e){var n,i,r=ho(e.get("color")),o=ho(e.get(["aria","decal","decals"]));if(r){E(t=t||[],(function(t){var e=new dc(t),r=e.get("color"),o=e.get("decal");(e.get(["itemStyle","color"])||r&&"none"!==r)&&(n=!0),(e.get(["itemStyle","decal"])||o&&"none"!==o)&&(i=!0)}));var a=t[0]||(t[0]={});return n||(a.color=r.slice()),!i&&o&&(a.decal=o.slice()),t}}(i,e))||[],(function(t){return new dc(t,o,e)}),this),s=AC.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=s.getNodeByDataIndex(e),i=n?a[n.depth]:null;return t.parentModel=i||o,t}))}));return s.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.getRawValue(t);return Xf("nameValue",{name:i.getName(t),value:r})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treeAncestors=OC(i,this),n.treePathInfo=n.treeAncestors,n},e.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},A(this.layoutInfo,t)},e.prototype.mapIdToIndex=function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=ft(),this._idIndexMapCount=0);var n=e.get(t);return null==n&&e.set(t,n=this._idIndexMapCount++),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){BC(this)},e.type="series.treemap",e.layoutMode="box",e.defaultOption={progressive:0,left:"center",top:"middle",width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",textStyle:{color:"#fff"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],overflow:"truncate",verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},e}(sg);function GC(t){var e=0;E(t.children,(function(t){GC(t);var n=t.value;Y(n)&&(n=n[0]),e+=n}));var n=t.value;Y(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),Y(t.value)?t.value[0]=n:t.value=n}var WC=function(){function t(t){this.group=new Cr,t.add(this.group)}return t.prototype.render=function(t,e,n,i){var r=t.getModel("breadcrumb"),o=this.group;if(o.removeAll(),r.get("show")&&n){var a=r.getModel("itemStyle"),s=a.getModel("textStyle"),l={pos:{left:r.get("left"),right:r.get("right"),top:r.get("top"),bottom:r.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:r.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(n,l,s),this._renderContent(t,l,a,s,i),_p(o,l.pos,l.box)}},t.prototype._prepare=function(t,e,n){for(var i=t;i;i=i.parentNode){var r=xo(i.getModel().get("name"),""),o=n.getTextRect(r),a=Math.max(o.width+16,e.emptyItemWidth);e.totalWidth+=a+8,e.renderList.push({node:i,text:r,width:a})}},t.prototype._renderContent=function(t,e,n,i,r){for(var o,a,s,l,u,h,c,p,d,f=0,g=e.emptyItemWidth,y=t.get(["breadcrumb","height"]),v=(o=e.pos,l=(a=e.box).width,u=a.height,h=Er(o.left,l),c=Er(o.top,u),p=Er(o.right,l),d=Er(o.bottom,u),(isNaN(h)||isNaN(parseFloat(o.left)))&&(h=0),(isNaN(p)||isNaN(parseFloat(o.right)))&&(p=l),(isNaN(c)||isNaN(parseFloat(o.top)))&&(c=0),(isNaN(d)||isNaN(parseFloat(o.bottom)))&&(d=u),s=ip(s||0),{width:Math.max(p-h-s[1]-s[3],0),height:Math.max(d-c-s[0]-s[2],0)}),m=e.totalWidth,x=e.renderList,_=x.length-1;_>=0;_--){var b=x[_],w=b.node,S=b.width,M=b.text;m>v.width&&(m-=S-g,S=g,M=null);var I=new Pu({shape:{points:HC(f,0,S,y,_===x.length-1,0===_)},style:k(n.getItemStyle(),{lineJoin:"bevel"}),textContent:new ks({style:{text:M,fill:i.getTextColor(),font:i.getFont()}}),textConfig:{position:"inside"},z2:1e5,onclick:H(r,w)});I.disableLabelAnimation=!0,this.group.add(I),YC(I,t,w),f+=S+8}},t.prototype.remove=function(){this.group.removeAll()},t}();function HC(t,e,n,i,r,o){var a=[[r?t:t-5,e],[t+n,e],[t+n,e+i],[r?t:t-5,e+i]];return!o&&a.splice(2,0,[t+n+5,e+i/2]),!r&&a.push([t,e+i/2]),a}function YC(t,e,n){Hs(t).eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.seriesIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:n&&n.dataIndex,name:n&&n.name},treePathInfo:n&&OC(n,e)}}var UC=function(){function t(){this._storage=[],this._elExistsMap={}}return t.prototype.add=function(t,e,n,i,r){return!this._elExistsMap[t.id]&&(this._elExistsMap[t.id]=!0,this._storage.push({el:t,target:e,duration:n,delay:i,easing:r}),!0)},t.prototype.finished=function(t){return this._finishedCallback=t,this},t.prototype.start=function(){for(var t=this,e=this._storage.length,n=function(){--e<=0&&(t._storage.length=0,t._elExistsMap={},t._finishedCallback&&t._finishedCallback())},i=0,r=this._storage.length;i3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var n=e.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},e.prototype._onZoom=function(t){var e=t.originX,n=t.originY;if("animating"!==this._state){var i=this.seriesModel.getData().tree.root;if(!i)return;var r=i.getLayout();if(!r)return;var o=new sr(r.x,r.y,r.width,r.height),a=this.seriesModel.layoutInfo,s=[1,0,0,1,0,0];Ei(s,s,[-(e-=a.x),-(n-=a.y)]),Vi(s,s,[t.scale,t.scale]),Ei(s,s,[e,n]),o.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:o.x,y:o.y,width:o.width,height:o.height}})}},e.prototype._initEvents=function(t){var e=this;t.on("click",(function(t){if("ready"===e._state){var n=e.seriesModel.get("nodeClick",!0);if(n){var i=e.findTarget(t.offsetX,t.offsetY);if(i){var r=i.node;if(r.getLayout().isLeafRoot)e._rootToNode(i);else if("zoomToNode"===n)e._zoomToNode(i);else if("link"===n){var o=r.hostTree.data.getItemModel(r.dataIndex),a=o.get("link",!0),s=o.get("target",!0)||"blank";a&&dp(a,s)}}}}}),this)},e.prototype._renderBreadcrumb=function(t,e,n){var i=this;n||(n=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(n={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new WC(this.group))).render(t,e,n.node,(function(e){"animating"!==i._state&&(PC(t.getViewRoot(),e)?i._rootToNode({node:e}):i._zoomToNode({node:e}))}))},e.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},e.prototype.dispose=function(){this._clearController()},e.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype.findTarget=function(t,e){var n;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},(function(i){var r=this._storage.background[i.getRawIndex()];if(r){var o=r.transformCoordToLocal(t,e),a=r.shape;if(!(a.x<=o[0]&&o[0]<=a.x+a.width&&a.y<=o[1]&&o[1]<=a.y+a.height))return!1;n={node:i,offsetX:o[0],offsetY:o[1]}}}),this),n},e.type="treemap",e}(xg),tD=E,eD=q,nD=-1,iD=function(){function t(e){var n=e.mappingMethod,i=e.type,r=this.option=T(e);this.type=i,this.mappingMethod=n,this._normalizeData=dD[n];var o=t.visualHandlers[i];this.applyVisual=o.applyVisual,this.getColorMapper=o.getColorMapper,this._normalizedToVisual=o._normalizedToVisual[n],"piecewise"===n?(rD(r),function(t){var e=t.pieceList;t.hasSpecialVisual=!1,E(e,(function(e,n){e.originIndex=n,null!=e.visual&&(t.hasSpecialVisual=!0)}))}(r)):"category"===n?r.categories?function(t){var e=t.categories,n=t.categoryMap={},i=t.visual;if(tD(e,(function(t,e){n[t]=e})),!Y(i)){var r=[];q(i)?tD(i,(function(t,e){var i=n[e];r[null!=i?i:nD]=t})):r[-1]=i,i=pD(t,r)}for(var o=e.length-1;o>=0;o--)null==i[o]&&(delete n[e[o]],e.pop())}(r):rD(r,!0):(lt("linear"!==n||r.dataExtent),rD(r))}return t.prototype.mapValueToVisual=function(t){var e=this._normalizeData(t);return this._normalizedToVisual(e,t)},t.prototype.getNormalizer=function(){return W(this._normalizeData,this)},t.listVisualTypes=function(){return G(t.visualHandlers)},t.isValidType=function(e){return t.visualHandlers.hasOwnProperty(e)},t.eachVisual=function(t,e,n){q(t)?E(t,e,n):e.call(n,t)},t.mapVisual=function(e,n,i){var r,o=Y(e)?[]:q(e)?{}:(r=!0,null);return t.eachVisual(e,(function(t,e){var a=n.call(i,t,e);r?o=a:o[e]=a})),o},t.retrieveVisuals=function(e){var n,i={};return e&&tD(t.visualHandlers,(function(t,r){e.hasOwnProperty(r)&&(i[r]=e[r],n=!0)})),n?i:null},t.prepareVisualTypes=function(t){if(Y(t))t=t.slice();else{if(!eD(t))return[];var e=[];tD(t,(function(t,n){e.push(n)})),t=e}return t.sort((function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1})),t},t.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},t.findPieceIndex=function(t,e,n){for(var i,r=1/0,o=0,a=e.length;ou[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:a.name,dataExtent:u,visual:a.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var p=new iD(c);return gD(p).drColorMappingBy=h,p}}}(0,r,o,0,u,d);E(d,(function(t,e){if(t.depth>=n.length||t===n[t.depth]){var o=function(t,e,n,i,r,o){var a=A({},e);if(r){var s=r.type,l="color"===s&&gD(r).drColorMappingBy,u="index"===l?i:"id"===l?o.mapIdToIndex(n.getId()):n.getValue(t.get("visualDimension"));a[s]=r.mapValueToVisual(u)}return a}(r,u,t,e,f,i);vD(t,o,n,i)}}))}else s=mD(u),h.fill=s}}function mD(t){var e=xD(t,"color");if(e){var n=xD(t,"colorAlpha"),i=xD(t,"colorSaturation");return i&&(e=Dn(e,null,null,i)),n&&(e=An(e,n)),e}}function xD(t,e){var n=t[e];if(null!=n&&"none"!==n)return n}function _D(t,e){var n=t.get(e);return Y(n)&&n.length?{name:e,range:n}:null}var bD=Math.max,wD=Math.min,SD=it,MD=E,ID=["itemStyle","borderWidth"],TD=["itemStyle","gapWidth"],CD=["upperLabel","show"],DD=["upperLabel","height"],AD={seriesType:"treemap",reset:function(t,e,n,i){var r=n.getWidth(),o=n.getHeight(),a=t.option,s=xp(t.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()}),l=a.size||[],u=Er(SD(s.width,l[0]),r),h=Er(SD(s.height,l[1]),o),c=i&&i.type,p=kC(i,["treemapZoomToNode","treemapRootToNode"],t),d="treemapRender"===c||"treemapMove"===c?i.rootRect:null,f=t.getViewRoot(),g=LC(f);if("treemapMove"!==c){var y="treemapZoomToNode"===c?function(t,e,n,i,r){var o,a=(e||{}).node,s=[i,r];if(!a||a===n)return s;for(var l=i*r,u=l*t.option.zoomToNodeRatio;o=a.parentNode;){for(var h=0,c=o.children,p=0,d=c.length;pYr&&(u=Yr),a=o}ua[1]&&(a[1]=e)}))):a=[NaN,NaN],{sum:i,dataExtent:a}}(e,a,s);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,n,i,r){if(!i)return n;for(var o=t.get("visibleMin"),a=r.length,s=a,l=a-1;l>=0;l--){var u=r["asc"===i?a-l-1:l].getValue();u/n*ei&&(i=a));var l=t.area*t.area,u=e*e*n;return l?bD(u*i/l,l/(u*r)):1/0}function PD(t,e,n,i,r){var o=e===n.width?0:1,a=1-o,s=["x","y"],l=["width","height"],u=n[s[o]],h=e?t.area/e:0;(r||h>n[l[a]])&&(h=n[l[a]]);for(var c=0,p=t.length;ci&&(i=e);var o=i%2?i+2:i+3;r=[];for(var a=0;a0&&(m[0]=-m[0],m[1]=-m[1]);var _=v[0]<0?-1:1;if("start"!==i.__position&&"end"!==i.__position){var b=-Math.atan2(v[1],v[0]);u[0].8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";break;case"start":i.x=-h[0]*f+l[0],i.y=-h[1]*g+l[1],c=h[0]>.8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":i.x=f*_+l[0],i.y=l[1]+w,c=v[0]<0?"right":"left",i.originX=-f*_,i.originY=-w;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":i.x=x[0],i.y=x[1]+w,c="center",i.originY=-w;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":i.x=-f*_+u[0],i.y=u[1]+w,c=v[0]>=0?"right":"left",i.originX=f*_,i.originY=-w}i.scaleX=i.scaleY=r,i.setStyle({verticalAlign:i.__verticalAlign||p,align:i.__align||c})}}}function S(t,e){var n=t.__specifiedRotation;if(null==n){var i=a.tangentAt(e);t.attr("rotation",(1===e?-1:1)*Math.PI/2-Math.atan2(i[1],i[0]))}else t.attr("rotation",n)}},e}(Cr),gA=function(){function t(t){this.group=new Cr,this._LineCtor=t||fA}return t.prototype.updateData=function(t){var e=this;this._progressiveEls=null;var n=this,i=n.group,r=n._lineData;n._lineData=t,r||i.removeAll();var o=yA(t);t.diff(r).add((function(n){e._doAdd(t,n,o)})).update((function(n,i){e._doUpdate(r,t,i,n,o)})).remove((function(t){i.remove(r.getItemGraphicEl(t))})).execute()},t.prototype.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl((function(e,n){e.updateLayout(t,n)}),this)},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=yA(t),this._lineData=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e){function n(t){t.isGroup||function(t){return t.animators&&t.animators.length>0}(t)||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[];for(var i=t.start;i=0?i+=u:i-=u:f>=0?i-=u:i+=u}return i}function TA(t,e){var n=[],i=Qe,r=[[],[],[]],o=[[],[]],a=[];e/=2,t.eachEdge((function(t,s){var l=t.getLayout(),u=t.getVisual("fromSymbol"),h=t.getVisual("toSymbol");l.__original||(l.__original=[Mt(l[0]),Mt(l[1])],l[2]&&l.__original.push(Mt(l[2])));var c=l.__original;if(null!=l[2]){if(St(r[0],c[0]),St(r[1],c[2]),St(r[2],c[1]),u&&"none"!==u){var p=KD(t.node1),d=IA(r,c[0],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[0][0]=n[3],r[1][0]=n[4],i(r[0][1],r[1][1],r[2][1],d,n),r[0][1]=n[3],r[1][1]=n[4]}h&&"none"!==h&&(p=KD(t.node2),d=IA(r,c[1],p*e),i(r[0][0],r[1][0],r[2][0],d,n),r[1][0]=n[1],r[2][0]=n[2],i(r[0][1],r[1][1],r[2][1],d,n),r[1][1]=n[1],r[2][1]=n[2]),St(l[0],r[0]),St(l[1],r[2]),St(l[2],r[1])}else St(o[0],c[0]),St(o[1],c[1]),Dt(a,o[1],o[0]),Rt(a,a),u&&"none"!==u&&(p=KD(t.node1),Ct(o[0],o[0],a,p*e)),h&&"none"!==h&&(p=KD(t.node2),Ct(o[1],o[1],a,-p*e)),St(l[0],o[0]),St(l[1],o[1])}))}function CA(t){return"view"===t.type}var DA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){var n=new qw,i=new gA,r=this.group;this._controller=new kI(e.getZr()),this._controllerHost={target:r},r.add(n.group),r.add(i.group),this._symbolDraw=n,this._lineDraw=i,this._firstRender=!0},e.prototype.render=function(t,e,n){var i=this,r=t.coordinateSystem;this._model=t;var o=this._symbolDraw,a=this._lineDraw,s=this.group;if(CA(r)){var l={x:r.x,y:r.y,scaleX:r.scaleX,scaleY:r.scaleY};this._firstRender?s.attr(l):rh(s,l,t)}TA(t.getGraph(),qD(t));var u=t.getData();o.updateData(u);var h=t.getEdgeData();a.updateData(h),this._updateNodeAndLinkScale(),this._updateController(t,e,n),clearTimeout(this._layoutTimeout);var c=t.forceLayout,p=t.get(["force","layoutAnimation"]);c&&this._startForceLayoutIteration(c,p),u.graph.eachNode((function(t){var e=t.dataIndex,n=t.getGraphicEl(),r=t.getModel();if(n){n.off("drag").off("dragend");var o=r.get("draggable");o&&n.on("drag",(function(){c&&(c.warmUp(),!i._layouting&&i._startForceLayoutIteration(c,p),c.setFixed(e),u.setItemLayout(e,[n.x,n.y]))})).on("dragend",(function(){c&&c.setUnfixed(e)})),n.setDraggable(o&&!!c,!!r.get("cursor")),"adjacency"===r.get(["emphasis","focus"])&&(Hs(n).focus=t.getAdjacentDataIndices())}})),u.graph.eachEdge((function(t){var e=t.getGraphicEl(),n=t.getModel().get(["emphasis","focus"]);e&&"adjacency"===n&&(Hs(e).focus={edge:[t.dataIndex],node:[t.node1.dataIndex,t.node2.dataIndex]})}));var d="circular"===t.get("layout")&&t.get(["circular","rotateLabel"]),f=u.getLayout("cx"),g=u.getLayout("cy");u.eachItemGraphicEl((function(t,e){var n=u.getItemModel(e).get(["label","rotate"])||0,i=t.getSymbolPath();if(d){var r=u.getItemLayout(e),o=Math.atan2(r[1]-g,r[0]-f);o<0&&(o=2*Math.PI+o);var a=r[0]=0&&t.call(e,n[r],r)},t.prototype.eachEdge=function(t,e){for(var n=this.edges,i=n.length,r=0;r=0&&n[r].node1.dataIndex>=0&&n[r].node2.dataIndex>=0&&t.call(e,n[r],r)},t.prototype.breadthFirstTraverse=function(t,e,n,i){if(e instanceof LA||(e=this._nodesMap[AA(e)]),e){for(var r="out"===n?"outEdges":"in"===n?"inEdges":"edges",o=0;o=0&&n.node2.dataIndex>=0})),r=0,o=i.length;r=0&&this[t][e].setItemVisual(this.dataIndex,n,i)},getVisual:function(n){return this[t][e].getItemVisual(this.dataIndex,n)},setLayout:function(n,i){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,n,i)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}}function RA(t,e,n,i,r){for(var o=new kA(i),a=0;a "+p)),u++)}var d,f=n.get("coordinateSystem");if("cartesian2d"===f||"polar"===f)d=rx(t,n);else{var g=hd.get(f),y=g&&g.dimensions||[];P(y,"value")<0&&y.concat(["value"]);var v=Km(t,{coordDimensions:y,encodeDefine:n.getEncode()}).dimensions;(d=new qm(v,n)).initData(t)}var m=new qm(["value"],n);return m.initData(l,s),r&&r(d,m),_C({mainData:d,struct:o,structAttr:"graph",datas:{node:d,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),o.update(),o}R(LA,OA("hostGraph","data")),R(PA,OA("hostGraph","edgeData"));var NA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments);var n=this;function i(){return n._categoriesData}this.legendVisualProvider=new hM(i,i),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeDefaultAndTheme=function(e){t.prototype.mergeDefaultAndTheme.apply(this,arguments),co(e,"edgeLabel",["show"])},e.prototype.getInitialData=function(t,e){var n,i=t.edges||t.links||[],r=t.data||t.nodes||[],o=this;if(r&&i){FD(n=this)&&(n.__curvenessList=[],n.__edgeMap={},GD(n));var a=RA(r,i,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t}));var n=dc.prototype.getModel;function i(t,e){var i=n.call(this,t,e);return i.resolveParentPath=r,i}function r(t){if(t&&("label"===t[0]||"label"===t[1])){var e=t.slice();return"label"===t[0]?e[0]="edgeLabel":"label"===t[1]&&(e[1]="edgeLabel"),e}return t}e.wrapMethod("getItemModel",(function(t){return t.resolveParentPath=r,t.getModel=i,t}))}));return E(a.edges,(function(t){!function(t,e,n,i){if(FD(n)){var r=WD(t,e,n),o=n.__edgeMap,a=o[HD(r)];o[r]&&!a?o[r].isForward=!0:a&&o[r]&&(a.isForward=!0,o[r].isForward=!1),o[r]=o[r]||[],o[r].push(i)}}(t.node1,t.node2,this,t.dataIndex)}),this),a.data}},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.getCategoriesData=function(){return this._categoriesData},e.prototype.formatTooltip=function(t,e,n){if("edge"===n){var i=this.getData(),r=this.getDataParams(t,n),o=i.graph.getEdgeByIndex(t),a=i.getName(o.node1.dataIndex),s=i.getName(o.node2.dataIndex),l=[];return null!=a&&l.push(a),null!=s&&l.push(s),Xf("nameValue",{name:l.join(" > "),value:r.value,noValue:null==r.value})}return rg({series:this,dataIndex:t,multipleSeries:e})},e.prototype._updateCategoriesData=function(){var t=z(this.option.categories||[],(function(t){return null!=t.value?t:A({value:0},t)})),e=new qm(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray((function(t){return e.getItemModel(t)}))},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.isAnimationEnabled=function(){return t.prototype.isAnimationEnabled.call(this)&&!("force"===this.get("layout")&&this.get(["force","layoutAnimation"]))},e.type="series.graph",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(sg),EA={type:"graphRoam",event:"graphRoam",update:"none"},zA=function(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0},VA=function(t){function e(e){var n=t.call(this,e)||this;return n.type="pointer",n}return n(e,t),e.prototype.getDefaultShape=function(){return new zA},e.prototype.buildPath=function(t,e){var n=Math.cos,i=Math.sin,r=e.r,o=e.width,a=e.angle,s=e.x-n(a)*o*(o>=r/3?1:2),l=e.y-i(a)*o*(o>=r/3?1:2);a=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+n(a)*o,e.y+i(a)*o),t.lineTo(e.x+n(e.angle)*r,e.y+i(e.angle)*r),t.lineTo(e.x-n(a)*o,e.y-i(a)*o),t.lineTo(s,l)},e}(gs);function BA(t,e){var n=null==t?"":t+"";return e&&(X(e)?n=e.replace("{value}",n):U(e)&&(n=e(t))),n}var FA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll();var i=t.get(["axisLine","lineStyle","color"]),r=function(t,e){var n=t.get("center"),i=e.getWidth(),r=e.getHeight(),o=Math.min(i,r);return{cx:Er(n[0],e.getWidth()),cy:Er(n[1],e.getHeight()),r:Er(t.get("radius"),o/2)}}(t,n);this._renderMain(t,e,n,i,r),this._data=t.getData()},e.prototype.dispose=function(){},e.prototype._renderMain=function(t,e,n,i,r){var o=this.group,a=t.get("clockwise"),s=-t.get("startAngle")/180*Math.PI,l=-t.get("endAngle")/180*Math.PI,u=t.getModel("axisLine"),h=u.get("roundCap")?DS:Cu,c=u.get("show"),p=u.getModel("lineStyle"),d=p.get("width"),f=[s,l];ja(f,!a);for(var g=(l=f[1])-(s=f[0]),y=s,v=0;c&&v=t&&(0===e?0:i[e-1][0]).8?"bottom":"middle",align:u<-.4?"left":u>.4?"right":"center"},{inheritColor:R}),silent:!0}))}if(m.get("show")&&k!==_){P=(P=m.get("distance"))?P+l:l;for(var N=0;N<=b;N++){u=Math.cos(M),h=Math.sin(M);var E=new zu({shape:{x1:u*(f-P)+p,y1:h*(f-P)+d,x2:u*(f-S-P)+p,y2:h*(f-S-P)+d},silent:!0,style:D});"auto"===D.stroke&&E.setStyle({stroke:i((k+N/b)/_)}),c.add(E),M+=T}M-=T}else M+=I}},e.prototype._renderPointer=function(t,e,n,i,r,o,a,s,l){var u=this.group,h=this._data,c=this._progressEls,p=[],d=t.get(["pointer","show"]),f=t.getModel("progress"),g=f.get("show"),y=t.getData(),v=y.mapDimension("value"),m=+t.get("min"),x=+t.get("max"),_=[m,x],b=[o,a];function w(e,n){var i,o=y.getItemModel(e).getModel("pointer"),a=Er(o.get("width"),r.r),s=Er(o.get("length"),r.r),l=t.get(["pointer","icon"]),u=o.get("offsetCenter"),h=Er(u[0],r.r),c=Er(u[1],r.r),p=o.get("keepAspect");return(i=l?Ly(l,h-a/2,c-s,a,s,null,p):new VA({shape:{angle:-Math.PI/2,width:a,r:s,x:h,y:c}})).rotation=-(n+Math.PI/2),i.x=r.cx,i.y=r.cy,i}function S(t,e){var n=f.get("roundCap")?DS:Cu,i=f.get("overlap"),a=i?f.get("width"):l/y.count(),u=i?r.r-a:r.r-(t+1)*a,h=i?r.r:r.r-t*a,c=new n({shape:{startAngle:o,endAngle:e,cx:r.cx,cy:r.cy,clockwise:s,r0:u,r:h}});return i&&(c.z2=x-y.get(v,t)%x),c}(g||d)&&(y.diff(h).add((function(e){var n=y.get(v,e);if(d){var i=w(e,o);oh(i,{rotation:-((isNaN(+n)?b[0]:Nr(n,_,b,!0))+Math.PI/2)},t),u.add(i),y.setItemGraphicEl(e,i)}if(g){var r=S(e,o),a=f.get("clip");oh(r,{shape:{endAngle:Nr(n,_,b,a)}},t),u.add(r),Ys(t.seriesIndex,y.dataType,e,r),p[e]=r}})).update((function(e,n){var i=y.get(v,e);if(d){var r=h.getItemGraphicEl(n),a=r?r.rotation:o,s=w(e,a);s.rotation=a,rh(s,{rotation:-((isNaN(+i)?b[0]:Nr(i,_,b,!0))+Math.PI/2)},t),u.add(s),y.setItemGraphicEl(e,s)}if(g){var l=c[n],m=S(e,l?l.shape.endAngle:o),x=f.get("clip");rh(m,{shape:{endAngle:Nr(i,_,b,x)}},t),u.add(m),Ys(t.seriesIndex,y.dataType,e,m),p[e]=m}})).execute(),y.each((function(t){var e=y.getItemModel(t),n=e.getModel("emphasis"),r=n.get("focus"),o=n.get("blurScope"),a=n.get("disabled");if(d){var s=y.getItemGraphicEl(t),l=y.getItemVisual(t,"style"),u=l.fill;if(s instanceof _s){var h=s.style;s.useStyle(A({image:h.image,x:h.x,y:h.y,width:h.width,height:h.height},l))}else s.useStyle(l),"pointer"!==s.type&&s.setColor(u);s.setStyle(e.getModel(["pointer","itemStyle"]).getItemStyle()),"auto"===s.style.fill&&s.setStyle("fill",i(Nr(y.get(v,t),_,[0,1],!0))),s.z2EmphasisLift=0,Vl(s,e),Rl(s,r,o,a)}if(g){var c=p[t];c.useStyle(y.getItemVisual(t,"style")),c.setStyle(e.getModel(["progress","itemStyle"]).getItemStyle()),c.z2EmphasisLift=0,Vl(c,e),Rl(c,r,o,a)}})),this._progressEls=p)},e.prototype._renderAnchor=function(t,e){var n=t.getModel("anchor");if(n.get("show")){var i=n.get("size"),r=n.get("icon"),o=n.get("offsetCenter"),a=n.get("keepAspect"),s=Ly(r,e.cx-i/2+Er(o[0],e.r),e.cy-i/2+Er(o[1],e.r),i,i,null,a);s.z2=n.get("showAbove")?1:0,s.setStyle(n.getModel("itemStyle").getItemStyle()),this.group.add(s)}},e.prototype._renderTitleAndDetail=function(t,e,n,i,r){var o=this,a=t.getData(),s=a.mapDimension("value"),l=+t.get("min"),u=+t.get("max"),h=new Cr,c=[],p=[],d=t.isAnimationEnabled(),f=t.get(["pointer","showAbove"]);a.diff(this._data).add((function(t){c[t]=new ks({silent:!0}),p[t]=new ks({silent:!0})})).update((function(t,e){c[t]=o._titleEls[e],p[t]=o._detailEls[e]})).execute(),a.each((function(e){var n=a.getItemModel(e),o=a.get(s,e),g=new Cr,y=i(Nr(o,[l,u],[0,1],!0)),v=n.getModel("title");if(v.get("show")){var m=v.get("offsetCenter"),x=r.cx+Er(m[0],r.r),_=r.cy+Er(m[1],r.r);(D=c[e]).attr({z2:f?0:2,style:Uh(v,{x:x,y:_,text:a.getName(e),align:"center",verticalAlign:"middle"},{inheritColor:y})}),g.add(D)}var b=n.getModel("detail");if(b.get("show")){var w=b.get("offsetCenter"),S=r.cx+Er(w[0],r.r),M=r.cy+Er(w[1],r.r),I=Er(b.get("width"),r.r),T=Er(b.get("height"),r.r),C=t.get(["progress","show"])?a.getItemVisual(e,"style").fill:y,D=p[e],A=b.get("formatter");D.attr({z2:f?0:2,style:Uh(b,{x:S,y:M,text:BA(o,A),width:isNaN(I)?null:I,height:isNaN(T)?null:T,align:"center",verticalAlign:"middle"},{inheritColor:C})}),Qh(D,{normal:b},o,(function(t){return BA(t,A)})),d&&tc(D,e,a,t,{getFormattedLabel:function(t,e,n,i,r,a){return BA(a?a.interpolatedValue:o,A)}}),g.add(D)}h.add(g)})),this.group.add(h),this._titleEls=c,this._detailEls=p},e.type="gauge",e}(xg),GA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="itemStyle",n}return n(e,t),e.prototype.getInitialData=function(t,e){return uM(this,["value"])},e.type="series.gauge",e.defaultOption={z:2,colorBy:"data",center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#fff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},e}(sg),WA=["itemStyle","opacity"],HA=function(t){function e(e,n){var i=t.call(this)||this,r=i,o=new Ru,a=new ks;return r.setTextContent(a),i.setTextGuideLine(o),i.updateData(e,n,!0),i}return n(e,t),e.prototype.updateData=function(t,e,n){var i=this,r=t.hostModel,o=t.getItemModel(e),a=t.getItemLayout(e),s=o.getModel("emphasis"),l=o.get(WA);l=null==l?1:l,n||hh(i),i.useStyle(t.getItemVisual(e,"style")),i.style.lineJoin="round",n?(i.setShape({points:a.points}),i.style.opacity=0,oh(i,{style:{opacity:l}},r,e)):rh(i,{style:{opacity:l},shape:{points:a.points}},r,e),Vl(i,o),this._updateLabel(t,e),Rl(this,s.get("focus"),s.get("blurScope"),s.get("disabled"))},e.prototype._updateLabel=function(t,e){var n=this,i=this.getTextGuideLine(),r=n.getTextContent(),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e).label,l=t.getItemVisual(e,"style"),u=l.fill;Hh(r,Yh(a),{labelFetcher:t.hostModel,labelDataIndex:e,defaultOpacity:l.opacity,defaultText:t.getName(e)},{normal:{align:s.textAlign,verticalAlign:s.verticalAlign}}),n.setTextConfig({local:!0,inside:!!s.inside,insideStroke:u,outsideFill:u});var h=s.linePoints;i.setShape({points:h}),n.textGuideLineConfig={anchor:h?new Ji(h[0][0],h[0][1]):null},rh(r,{style:{x:s.x,y:s.y}},o,e),r.attr({rotation:s.rotation,originX:s.x,originY:s.y,z2:10}),db(n,fb(a),{stroke:u})},e}(Pu),YA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreLabelLineUpdate=!0,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this._data,o=this.group;i.diff(r).add((function(t){var e=new HA(i,t);i.setItemGraphicEl(t,e),o.add(e)})).update((function(t,e){var n=r.getItemGraphicEl(e);n.updateData(i,t),o.add(n),i.setItemGraphicEl(t,n)})).remove((function(e){uh(r.getItemGraphicEl(e),t,e)})).execute(),this._data=i},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.prototype.dispose=function(){},e.type="funnel",e}(xg),UA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new hM(W(this.getData,this),W(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.getInitialData=function(t,e){return uM(this,{coordDimensions:["value"],encodeDefaulter:H(Yp,this)})},e.prototype._defaultLabelLine=function(t){co(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=n.mapDimension("value"),o=n.getSum(r);return i.percent=o?+(n.get(r,e)/o*100).toFixed(2):0,i.$vars.push("percent"),i},e.type="series.funnel",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(sg);function XA(t,e){t.eachSeriesByType("funnel",(function(t){var n=t.getData(),i=n.mapDimension("value"),r=t.get("sort"),o=function(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e),a=t.get("orient"),s=o.width,l=o.height,u=function(t,e){for(var n=t.mapDimension("value"),i=t.mapArray(n,(function(t){return t})),r=[],o="ascending"===e,a=0,s=t.count();a5)return;var i=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==i.behavior&&this._dispatchExpand({axisExpandWindow:i.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&ok(this,"mousemove")){var e=this._model,n=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),i=n.behavior;"jump"===i&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===i?null:{axisExpandWindow:n.axisExpandWindow,animation:"jump"===i?null:{duration:0}})}}};function ok(t,e){var n=t._model;return n.get("axisExpandable")&&n.get("axisExpandTriggerOn")===e}var ak=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){t.prototype.init.apply(this,arguments),this.mergeOption({})},e.prototype.mergeOption=function(t){var e=this.option;t&&C(e,t,!0),this._initDimensions()},e.prototype.contains=function(t,e){var n=t.get("parallelIndex");return null!=n&&e.getComponent("parallel",n)===this},e.prototype.setAxisExpand=function(t){E(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],(function(e){t.hasOwnProperty(e)&&(this.option[e]=t[e])}),this)},e.prototype._initDimensions=function(){var t=this.dimensions=[],e=this.parallelAxisIndex=[];E(B(this.ecModel.queryComponents({mainType:"parallelAxis"}),(function(t){return(t.get("parallelIndex")||0)===this.componentIndex}),this),(function(n){t.push("dim"+n.get("dim")),e.push(n.componentIndex)}))},e.type="parallel",e.dependencies=["parallelAxis"],e.layoutMode="box",e.defaultOption={z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},e}(Tp),sk=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"value",a.axisIndex=o,a}return n(e,t),e.prototype.isHorizontal=function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")},e}(H_);function lk(t,e,n,i,r,o){t=t||0;var a=n[1]-n[0];if(null!=r&&(r=hk(r,[0,a])),null!=o&&(o=Math.max(o,null!=r?r:0)),"all"===i){var s=Math.abs(e[1]-e[0]);s=hk(s,[0,a]),r=o=hk(s,[r,o]),i=0}e[0]=hk(e[0],n),e[1]=hk(e[1],n);var l=uk(e,i);e[i]+=t;var u,h=r||0,c=n.slice();return l.sign<0?c[0]+=h:c[1]-=h,e[i]=hk(e[i],c),u=uk(e,i),null!=r&&(u.sign!==l.sign||u.spano&&(e[1-i]=e[i]+u.sign*o),e}function uk(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:n>0?-1:n<0?1:e?-1:1}}function hk(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}var ck=E,pk=Math.min,dk=Math.max,fk=Math.floor,gk=Math.ceil,yk=zr,vk=Math.PI,mk=function(){function t(t,e,n){this.type="parallel",this._axesMap=ft(),this._axesLayout={},this.dimensions=t.dimensions,this._model=t,this._init(t,e,n)}return t.prototype._init=function(t,e,n){var i=t.dimensions,r=t.parallelAxisIndex;ck(i,(function(t,n){var i=r[n],o=e.getComponent("parallelAxis",i),a=this._axesMap.set(t,new sk(t,o_(o),[0,0],o.get("type"),i)),s="category"===a.type;a.onBand=s&&o.get("boundaryGap"),a.inverse=o.get("inverse"),o.axis=a,a.model=o,a.coordinateSystem=o.coordinateSystem=this}),this)},t.prototype.update=function(t,e){this._updateAxesFromSeries(this._model,t)},t.prototype.containPoint=function(t){var e=this._makeLayoutInfo(),n=e.axisBase,i=e.layoutBase,r=e.pixelDimIndex,o=t[1-r],a=t[r];return o>=n&&o<=n+e.axisLength&&a>=i&&a<=i+e.layoutLength},t.prototype.getModel=function(){return this._model},t.prototype._updateAxesFromSeries=function(t,e){e.eachSeries((function(n){if(t.contains(n,e)){var i=n.getData();ck(this.dimensions,(function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(i,i.mapDimension(t)),r_(e.scale,e.model)}),this)}}),this)},t.prototype.resize=function(t,e){this._rect=xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},t.prototype.getRect=function(){return this._rect},t.prototype._makeLayoutInfo=function(){var t,e=this._model,n=this._rect,i=["x","y"],r=["width","height"],o=e.get("layout"),a="horizontal"===o?0:1,s=n[r[a]],l=[0,s],u=this.dimensions.length,h=xk(e.get("axisExpandWidth"),l),c=xk(e.get("axisExpandCount")||0,[0,u]),p=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,d=e.get("axisExpandWindow");d?(t=xk(d[1]-d[0],l),d[1]=d[0]+t):(t=xk(h*(c-1),l),(d=[h*(e.get("axisExpandCenter")||fk(u/2))-t/2])[1]=d[0]+t);var f=(s-t)/(u-c);f<3&&(f=0);var g=[fk(yk(d[0]/h,1))+1,gk(yk(d[1]/h,1))-1],y=f/h*d[0];return{layout:o,pixelDimIndex:a,layoutBase:n[i[a]],layoutLength:s,axisBase:n[i[1-a]],axisLength:n[r[1-a]],axisExpandable:p,axisExpandWidth:h,axisCollapseWidth:f,axisExpandWindow:d,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:y}},t.prototype._layoutAxes=function(){var t=this._rect,e=this._axesMap,n=this.dimensions,i=this._makeLayoutInfo(),r=i.layout;e.each((function(t){var e=[0,i.axisLength],n=t.inverse?1:0;t.setExtent(e[n],e[1-n])})),ck(n,(function(e,n){var o=(i.axisExpandable?bk:_k)(n,i),a={horizontal:{x:o.position,y:i.axisLength},vertical:{x:0,y:o.position}},s={horizontal:vk/2,vertical:0},l=[a[r].x+t.x,a[r].y+t.y],u=s[r],h=[1,0,0,1,0,0];zi(h,h,u),Ei(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:o.axisNameAvailableWidth,axisLabelShow:o.axisLabelShow,nameTruncateMaxWidth:o.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}}),this)},t.prototype.getAxis=function(t){return this._axesMap.get(t)},t.prototype.dataToPoint=function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},t.prototype.eachActiveState=function(t,e,n,i){null==n&&(n=0),null==i&&(i=t.count());var r=this._axesMap,o=this.dimensions,a=[],s=[];E(o,(function(e){a.push(t.mapDimension(e)),s.push(r.get(e).model)}));for(var l=this.hasAxisBrushed(),u=n;ur*(1-h[0])?(l="jump",a=s-r*(1-h[2])):(a=s-r*h[1])>=0&&(a=s-r*(1-h[1]))<=0&&(a=0),(a*=e.axisExpandWidth/u)?lk(a,i,o,"all"):l="none";else{var p=i[1]-i[0];(i=[dk(0,o[1]*s/p-p/2)])[1]=pk(o[1],i[0]+p),i[0]=i[1]-p}return{axisExpandWindow:i,behavior:l}},t}();function xk(t,e){return pk(dk(t,e[0]),e[1])}function _k(t,e){var n=e.layoutLength/(e.axisCount-1);return{position:n*t,axisNameAvailableWidth:n,axisLabelShow:!0}}function bk(t,e){var n,i,r=e.layoutLength,o=e.axisExpandWidth,a=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return t=0;n--)Vr(e[n])},e.prototype.getActiveState=function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(+t))return"inactive";if(1===e.length){var n=e[0];if(n[0]<=t&&t<=n[1])return"active"}else for(var i=0,r=e.length;i6}(t)||o){if(a&&!o){"single"===s.brushMode&&Wk(t);var l=T(s);l.brushType=oL(l.brushType,a),l.panelId=a===Mk?null:a.panelId,o=t._creatingCover=Rk(t,l),t._covers.push(o)}if(o){var u=lL[oL(t._brushType,a)];o.__brushOption.range=u.getCreatingRange(eL(t,o,t._track)),i&&(Nk(t,o),u.updateCommon(t,o)),Ek(t,o),r={isEnd:i}}}else i&&"single"===s.brushMode&&s.removeOnClick&&Fk(t,e,n)&&Wk(t)&&(r={isEnd:i,removeOnClick:!0});return r}function oL(t,e){return"auto"===t?e.defaultBrushType:t}var aL={mousedown:function(t){if(this._dragging)sL(this,t);else if(!t.target||!t.target.draggable){nL(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=Fk(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=t.offsetX,n=t.offsetY,i=this.group.transformCoordToLocal(e,n);if(function(t,e,n){if(t._brushType&&!function(t,e,n){var i=t._zr;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}(t,e.offsetX,e.offsetY)){var i=t._zr,r=t._covers,o=Fk(t,e,n);if(!t._dragging)for(var a=0;a=0&&(o[r[a].depth]=new dc(r[a],this,e));if(i&&n)return RA(i,n,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getData().getItemLayout(e);if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t})),e.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getGraph().getEdgeByIndex(e).node1.getLayout();if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t}))})).data},e.prototype.setNodePosition=function(t,e){var n=(this.option.data||this.option.nodes)[t];n.localX=e[0],n.localY=e[1]},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.formatTooltip=function(t,e,n){function i(t){return isNaN(t)||null==t}if("edge"===n){var r=this.getDataParams(t,n),o=r.data,a=r.value;return Xf("nameValue",{name:o.source+" -- "+o.target,value:a,noValue:i(a)})}var s=this.getGraph().getNodeByIndex(t).getLayout().value,l=this.getDataParams(t,n).data.name;return Xf("nameValue",{name:null!=l?l+"":null,value:s,noValue:i(s)})},e.prototype.optionUpdated=function(){},e.prototype.getDataParams=function(e,n){var i=t.prototype.getDataParams.call(this,e,n);if(null==i.value&&"node"===n){var r=this.getGraph().getNodeByIndex(e).getLayout().value;i.value=r}return i},e.type="series.sankey",e.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},e}(sg);function SL(t,e){t.eachSeriesByType("sankey",(function(t){var n=t.get("nodeWidth"),i=t.get("nodeGap"),r=function(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=r;var o=r.width,a=r.height,s=t.getGraph(),l=s.nodes,u=s.edges;!function(t){E(t,(function(t){var e=OL(t.outEdges,PL),n=OL(t.inEdges,PL),i=t.getValue()||0,r=Math.max(e,n,i);t.setLayout({value:r},!0)}))}(l),function(t,e,n,i,r,o,a,s,l){(function(t,e,n,i,r,o,a){for(var s=[],l=[],u=[],h=[],c=0,p=0;p=0;v&&y.depth>d&&(d=y.depth),g.setLayout({depth:v?y.depth:c},!0),"vertical"===o?g.setLayout({dy:n},!0):g.setLayout({dx:n},!0);for(var m=0;mc-1?d:c-1;a&&"left"!==a&&function(t,e,n,i){if("right"===e){for(var r=[],o=t,a=0;o.length;){for(var s=0;s0;o--)TL(s,l*=.99,a),IL(s,r,n,i,a),RL(s,l,a),IL(s,r,n,i,a)}(t,e,o,r,i,a,s),function(t,e){var n="vertical"===e?"x":"y";E(t,(function(t){t.outEdges.sort((function(t,e){return t.node2.getLayout()[n]-e.node2.getLayout()[n]})),t.inEdges.sort((function(t,e){return t.node1.getLayout()[n]-e.node1.getLayout()[n]}))})),E(t,(function(t){var e=0,n=0;E(t.outEdges,(function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy})),E(t.inEdges,(function(t){t.setLayout({ty:n},!0),n+=t.getLayout().dy}))}))}(t,s)}(l,u,n,i,o,a,0!==B(l,(function(t){return 0===t.getLayout().value})).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))}))}function ML(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return null!=e.depth&&e.depth>=0}function IL(t,e,n,i,r){var o="vertical"===r?"x":"y";E(t,(function(t){var a,s,l;t.sort((function(t,e){return t.getLayout()[o]-e.getLayout()[o]}));for(var u=0,h=t.length,c="vertical"===r?"dx":"dy",p=0;p0&&(a=s.getLayout()[o]+l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]+s.getLayout()[c]+e;if((l=u-e-("vertical"===r?i:n))>0)for(a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0),u=a,p=h-2;p>=0;--p)(l=(s=t[p]).getLayout()[o]+s.getLayout()[c]+e-u)>0&&(a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]}))}function TL(t,e,n){E(t.slice().reverse(),(function(t){E(t,(function(t){if(t.outEdges.length){var i=OL(t.outEdges,CL,n)/OL(t.outEdges,PL);if(isNaN(i)){var r=t.outEdges.length;i=r?OL(t.outEdges,DL,n)/r:0}if("vertical"===n){var o=t.getLayout().x+(i-LL(t,n))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(i-LL(t,n))*e;t.setLayout({y:a},!0)}}}))}))}function CL(t,e){return LL(t.node2,e)*t.getValue()}function DL(t,e){return LL(t.node2,e)}function AL(t,e){return LL(t.node1,e)*t.getValue()}function kL(t,e){return LL(t.node1,e)}function LL(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function PL(t){return t.getValue()}function OL(t,e,n){for(var i=0,r=t.length,o=-1;++oi&&(i=e)})),E(e,(function(e){var r=new iD({type:"color",mappingMethod:"linear",dataExtent:[n,i],visual:t.get("color")}).mapValueToVisual(e.getLayout().value),o=e.getModel().get(["itemStyle","color"]);null!=o?(e.setVisual("color",o),e.setVisual("style",{fill:o})):(e.setVisual("color",r),e.setVisual("style",{fill:r}))}))}}))}var EL=function(){function t(){}return t.prototype.getInitialData=function(t,e){var n,i,r=e.getComponent("xAxis",this.get("xAxisIndex")),o=e.getComponent("yAxis",this.get("yAxisIndex")),a=r.get("type"),s=o.get("type");"category"===a?(t.layout="horizontal",n=r.getOrdinalMeta(),i=!0):"category"===s?(t.layout="vertical",n=o.getOrdinalMeta(),i=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],p=[r,o],d=p[u].get("type"),f=p[1-u].get("type"),g=t.data;if(g&&i){var y=[];E(g,(function(t,e){var n;Y(t)?(n=t.slice(),t.unshift(e)):Y(t.value)?((n=A({},t)).value=n.value.slice(),t.value.unshift(e)):n=t,y.push(n)})),t.data=y}var v=this.defaultValueDimensions,m=[{name:h,type:Dm(d),ordinalMeta:n,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:Dm(f),dimsDef:v.slice()}];return uM(this,{coordDimensions:m,dimensionsCount:v.length+1,encodeDefaulter:H(Hp,m,this)})},t.prototype.getBaseAxis=function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis},t}(),zL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],n.visualDrawType="stroke",n}return n(e,t),e.type="series.boxplot",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},e}(sg);R(zL,EL,!0);var VL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this.group,o=this._data;this._data||r.removeAll();var a="horizontal"===t.get("layout")?1:0;i.diff(o).add((function(t){if(i.hasValue(t)){var e=GL(i.getItemLayout(t),i,t,a,!0);i.setItemGraphicEl(t,e),r.add(e)}})).update((function(t,e){var n=o.getItemGraphicEl(e);if(i.hasValue(t)){var s=i.getItemLayout(t);n?(hh(n),WL(s,n,i,t)):n=GL(s,i,t,a),r.add(n),i.setItemGraphicEl(t,n)}else r.remove(n)})).remove((function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)})).execute(),this._data=i},e.prototype.remove=function(t){var e=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl((function(t){t&&e.remove(t)}))},e.type="boxplot",e}(xg),BL=function(){},FL=function(t){function e(e){var n=t.call(this,e)||this;return n.type="boxplotBoxPath",n}return n(e,t),e.prototype.getDefaultShape=function(){return new BL},e.prototype.buildPath=function(t,e){var n=e.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();ig){var _=[v,x];i.push(_)}}}return{boxData:n,outliers:i}}(e.getRawData(),t.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:i.boxData},{data:i.outliers}]}},jL=["color","borderColor"],qL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeClipPath(),this._progressiveEls=null,this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},e.prototype.incrementalPrepareRender=function(t,e,n){this._clear(),this._updateDrawMode(t)},e.prototype.incrementalRender=function(t,e,n,i){this._progressiveEls=[],this._isLargeDraw?this._incrementalRenderLarge(t,e):this._incrementalRenderNormal(t,e)},e.prototype.eachRendered=function(t){Vh(this._progressiveEls||this.group,t)},e.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;null!=this._isLargeDraw&&e===this._isLargeDraw||(this._isLargeDraw=e,this._clear())},e.prototype._renderNormal=function(t){var e=t.getData(),n=this._data,i=this.group,r=e.getLayout("isSimpleBox"),o=t.get("clip",!0),a=t.coordinateSystem,s=a.getArea&&a.getArea();this._data||i.removeAll(),e.diff(n).add((function(n){if(e.hasValue(n)){var a=e.getItemLayout(n);if(o&&QL(s,a))return;var l=JL(a,n,!0);oh(l,{shape:{points:a.ends}},t,n),tP(l,e,n,r),i.add(l),e.setItemGraphicEl(n,l)}})).update((function(a,l){var u=n.getItemGraphicEl(l);if(e.hasValue(a)){var h=e.getItemLayout(a);o&&QL(s,h)?i.remove(u):(u?(rh(u,{shape:{points:h.ends}},t,a),hh(u)):u=JL(h),tP(u,e,a,r),i.add(u),e.setItemGraphicEl(a,u))}else i.remove(u)})).remove((function(t){var e=n.getItemGraphicEl(t);e&&i.remove(e)})).execute(),this._data=e},e.prototype._renderLarge=function(t){this._clear(),rP(t,this.group);var e=t.get("clip",!0)?lS(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},e.prototype._incrementalRenderNormal=function(t,e){for(var n,i=e.getData(),r=i.getLayout("isSimpleBox");null!=(n=t.next());){var o=JL(i.getItemLayout(n));tP(o,i,n,r),o.incremental=!0,this.group.add(o),this._progressiveEls.push(o)}},e.prototype._incrementalRenderLarge=function(t,e){rP(e,this.group,this._progressiveEls,!0)},e.prototype.remove=function(t){this._clear()},e.prototype._clear=function(){this.group.removeAll(),this._data=null},e.type="candlestick",e}(xg),KL=function(){},$L=function(t){function e(e){var n=t.call(this,e)||this;return n.type="normalCandlestickBox",n}return n(e,t),e.prototype.getDefaultShape=function(){return new KL},e.prototype.buildPath=function(t,e){var n=e.points;this.__simpleBox?(t.moveTo(n[4][0],n[4][1]),t.lineTo(n[6][0],n[6][1])):(t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1]),t.lineTo(n[2][0],n[2][1]),t.lineTo(n[3][0],n[3][1]),t.closePath(),t.moveTo(n[4][0],n[4][1]),t.lineTo(n[5][0],n[5][1]),t.moveTo(n[6][0],n[6][1]),t.lineTo(n[7][0],n[7][1]))},e}(gs);function JL(t,e,n){var i=t.ends;return new $L({shape:{points:n?eP(i,t):i},z2:100})}function QL(t,e){for(var n=!0,i=0;i0?"borderColor":"borderColor0"])||n.get(["itemStyle",t>0?"color":"color0"]),o=n.getModel("itemStyle").getItemStyle(jL);e.useStyle(o),e.style.fill=null,e.style.stroke=r}var aP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],n}return n(e,t),e.prototype.getShadowDim=function(){return"open"},e.prototype.brushSelector=function(t,e,n){var i=e.getItemLayout(t);return i&&n.rect(i.brushRect)},e.type="series.candlestick",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,clip:!0,itemStyle:{color:"#eb5454",color0:"#47b262",borderColor:"#eb5454",borderColor0:"#47b262",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationEasing:"linear",animationDuration:300},e}(sg);function sP(t){t&&Y(t.series)&&E(t.series,(function(t){q(t)&&"k"===t.type&&(t.type="candlestick")}))}R(aP,EL,!0);var lP=["itemStyle","borderColor"],uP=["itemStyle","borderColor0"],hP=["itemStyle","color"],cP=["itemStyle","color0"],pP={seriesType:"candlestick",plan:yg(),performRawSeries:!0,reset:function(t,e){function n(t,e){return e.get(t>0?hP:cP)}function i(t,e){return e.get(t>0?lP:uP)}if(!e.isSeriesFiltered(t))return!t.pipelineContext.large&&{progress:function(t,e){for(var r;null!=(r=t.next());){var o=e.getItemModel(r),a=e.getItemLayout(r).sign,s=o.getItemStyle();s.fill=n(a,o),s.stroke=i(a,o)||s.fill,A(e.ensureUniqueItemVisual(r,"style"),s)}}}}},dP={seriesType:"candlestick",plan:yg(),reset:function(t){var e=t.coordinateSystem,n=t.getData(),i=function(t,e){var n,i=t.getBaseAxis(),r="category"===i.type?i.getBandWidth():(n=i.getExtent(),Math.abs(n[1]-n[0])/e.count()),o=Er(rt(t.get("barMaxWidth"),r),r),a=Er(rt(t.get("barMinWidth"),1),r),s=t.get("barWidth");return null!=s?Er(s,r):Math.max(Math.min(r/2,o),a)}(t,n),r=["x","y"],o=n.getDimensionIndex(n.mapDimension(r[0])),a=z(n.mapDimensionsAll(r[1]),n.getDimensionIndex,n),s=a[0],l=a[1],u=a[2],h=a[3];if(n.setLayout({candleWidth:i,isSimpleBox:i<=1.3}),!(o<0||a.length<4))return{progress:t.pipelineContext.large?function(t,n){for(var i,r,a=Sx(4*t.count),c=0,p=[],d=[],f=n.getStore();null!=(r=t.next());){var g=f.get(o,r),y=f.get(s,r),v=f.get(l,r),m=f.get(u,r),x=f.get(h,r);isNaN(g)||isNaN(m)||isNaN(x)?(a[c++]=NaN,c+=3):(a[c++]=fP(f,r,y,v,l),p[0]=g,p[1]=m,i=e.dataToPoint(p,null,d),a[c++]=i?i[0]:NaN,a[c++]=i?i[1]:NaN,p[1]=x,i=e.dataToPoint(p,null,d),a[c++]=i?i[1]:NaN)}n.setLayout("largePoints",a)}:function(t,n){for(var r,a=n.getStore();null!=(r=t.next());){var c=a.get(o,r),p=a.get(s,r),d=a.get(l,r),f=a.get(u,r),g=a.get(h,r),y=Math.min(p,d),v=Math.max(p,d),m=S(y,c),x=S(v,c),_=S(f,c),b=S(g,c),w=[];M(w,x,0),M(w,m,1),w.push(T(b),T(x),T(_),T(m)),n.setItemLayout(r,{sign:fP(a,r,p,d,l),initBaseline:p>d?x[1]:m[1],ends:w,brushRect:I(f,g,c)})}function S(t,n){var i=[];return i[0]=n,i[1]=t,isNaN(n)||isNaN(t)?[NaN,NaN]:e.dataToPoint(i)}function M(t,e,n){var r=e.slice(),o=e.slice();r[0]=Mh(r[0]+i/2,1,!1),o[0]=Mh(o[0]-i/2,1,!0),n?t.push(r,o):t.push(o,r)}function I(t,e,n){var r=S(t,n),o=S(e,n);return r[0]-=i/2,o[0]-=i/2,{x:r[0],y:r[1],width:i,height:o[1]-r[1]}}function T(t){return t[0]=Mh(t[0],1),t}}}}};function fP(t,e,n,i,r){return n>i?-1:n0?t.get(r,e-1)<=i?1:-1:1}function gP(t,e){var n=e.rippleEffectColor||e.color;t.eachChild((function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?n:null,fill:"fill"===e.brushType?n:null}})}))}var yP=function(t){function e(e,n){var i=t.call(this)||this,r=new Yw(e,n),o=new Cr;return i.add(r),i.add(o),i.updateData(e,n),i}return n(e,t),e.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},e.prototype.startEffectAnimation=function(t){for(var e=t.symbolType,n=t.color,i=t.rippleNumber,r=this.childAt(1),o=0;o0&&(o=this._getLineLength(i)/s*1e3),o!==this._period||a!==this._loop){i.stopAnimation();var u=void 0;u=U(l)?l(n):l,i.__t>0&&(u=-o*i.__t),this._animateSymbol(i,o,u,a)}this._period=o,this._loop=a}},e.prototype._animateSymbol=function(t,e,n,i){if(e>0){t.__t=0;var r=this,o=t.animate("",i).when(e,{__t:1}).delay(n).during((function(){r._updateSymbolPosition(t)}));i||o.done((function(){r.remove(t)})),o.start()}},e.prototype._getLineLength=function(t){return Et(t.__p1,t.__cp1)+Et(t.__cp1,t.__p2)},e.prototype._updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},e.prototype.updateData=function(t,e,n){this.childAt(0).updateData(t,e,n),this._updateEffectSymbol(t,e)},e.prototype._updateSymbolPosition=function(t){var e=t.__p1,n=t.__p2,i=t.__cp1,r=t.__t,o=[t.x,t.y],a=o.slice(),s=Ke,l=$e;o[0]=s(e[0],i[0],n[0],r),o[1]=s(e[1],i[1],n[1],r);var u=l(e[0],i[0],n[0],r),h=l(e[1],i[1],n[1],r);t.rotation=-Math.atan2(h,u)-Math.PI/2,"line"!==this._symbolType&&"rect"!==this._symbolType&&"roundRect"!==this._symbolType||(void 0!==t.__lastT&&t.__lastT=0&&!(i[o]<=e);o--);o=Math.min(o,r-2)}else{for(o=a;oe);o++);o=Math.min(o-1,r-2)}var s=(e-i[o])/(i[o+1]-i[o]),l=n[o],u=n[o+1];t.x=l[0]*(1-s)+s*u[0],t.y=l[1]*(1-s)+s*u[1];var h=u[0]-l[0],c=u[1]-l[1];t.rotation=-Math.atan2(c,h)-Math.PI/2,this._lastFrame=o,this._lastFramePercent=e,t.ignore=!1}},e}(xP),wP=function(){this.polyline=!1,this.curveness=0,this.segs=[]},SP=function(t){function e(e){var n=t.call(this,e)||this;return n._off=0,n.hoverDataIdx=-1,n}return n(e,t),e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new wP},e.prototype.buildPath=function(t,e){var n,i=e.segs,r=e.curveness;if(e.polyline)for(n=this._off;n0){t.moveTo(i[n++],i[n++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*r,p=(l+h)/2-(u-s)*r;t.quadraticCurveTo(c,p,u,h)}else t.lineTo(u,h)}this.incremental&&(this._off=n,this.notClear=!0)},e.prototype.findDataIndex=function(t,e){var n=this.shape,i=n.segs,r=n.curveness,o=this.style.lineWidth;if(n.polyline)for(var a=0,s=0;s0)for(var u=i[s++],h=i[s++],c=1;c0){if(Ja(u,h,(u+p)/2-(h-d)*r,(h+d)/2-(p-u)*r,p,d,o,t,e))return a}else if(Ka(u,h,p,d,o,t,e))return a;a++}return-1},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return t=n[0],e=n[1],i.contain(t,e)?(this.hoverDataIdx=this.findDataIndex(t,e))>=0:(this.hoverDataIdx=-1,!1)},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var e=this.shape.segs,n=1/0,i=1/0,r=-1/0,o=-1/0,a=0;a0&&(o.dataIndex=n+t.__startIndex)}))},t.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},t}(),IP={seriesType:"lines",plan:yg(),reset:function(t){var e=t.coordinateSystem;if(e){var n=t.get("polyline"),i=t.pipelineContext.large;return{progress:function(r,o){var a=[];if(i){var s=void 0,l=r.end-r.start;if(n){for(var u=0,h=r.start;h0&&(l||s.configLayer(o,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(a/10+.9,1),0)})),r.updateData(i);var u=t.get("clip",!0)&&lS(t.coordinateSystem,!1,t);u?this.group.setClipPath(u):this.group.removeClipPath(),this._lastZlevel=o,this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateLineDraw(i,t).incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._lineDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},e.prototype.eachRendered=function(t){this._lineDraw&&this._lineDraw.eachRendered(t)},e.prototype.updateTransform=function(t,e,n){var i=t.getData(),r=t.pipelineContext;if(!this._finished||r.large||r.progressiveRender)return{update:!0};var o=IP.reset(t,e,n);o.progress&&o.progress({start:0,end:i.count(),count:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},e.prototype._updateLineDraw=function(t,e){var n=this._lineDraw,i=this._showEffect(e),r=!!e.get("polyline"),o=e.pipelineContext.large;return n&&i===this._hasEffet&&r===this._isPolyline&&o===this._isLargeDraw||(n&&n.remove(),n=this._lineDraw=o?new MP:new gA(r?i?bP:_P:i?xP:fA),this._hasEffet=i,this._isPolyline=r,this._isLargeDraw=o),this.group.add(n.group),n},e.prototype._showEffect=function(t){return!!t.get(["effect","show"])},e.prototype._clearLayer=function(t){var e=t.getZr();"svg"===e.painter.getType()||null==this._lastZlevel||e.painter.getLayer(this._lastZlevel).clear(!0)},e.prototype.remove=function(t,e){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(e)},e.prototype.dispose=function(t,e){this.remove(t,e)},e.type="lines",e}(xg),CP="undefined"==typeof Uint32Array?Array:Uint32Array,DP="undefined"==typeof Float64Array?Array:Float64Array;function AP(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=z(e,(function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),D([e,t[0],t[1]])})))}var kP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="lineStyle",n.visualDrawType="stroke",n}return n(e,t),e.prototype.init=function(e){e.data=e.data||[],AP(e);var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count)),t.prototype.init.apply(this,arguments)},e.prototype.mergeOption=function(e){if(AP(e),e.data){var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count))}t.prototype.mergeOption.apply(this,arguments)},e.prototype.appendData=function(t){var e=this._processFlatCoordsArray(t.data);e.flatCoords&&(this._flatCoords?(this._flatCoords=gt(this._flatCoords,e.flatCoords),this._flatCoordsOffset=gt(this._flatCoordsOffset,e.flatCoordsOffset)):(this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset),t.data=new Float32Array(e.count)),this.getRawData().appendData(t.data)},e.prototype._getCoordsFromItemModel=function(t){var e=this.getData().getItemModel(t);return e.option instanceof Array?e.option:e.getShallow("coords")},e.prototype.getLineCoordsCount=function(t){return this._flatCoordsOffset?this._flatCoordsOffset[2*t+1]:this._getCoordsFromItemModel(t).length},e.prototype.getLineCoords=function(t,e){if(this._flatCoordsOffset){for(var n=this._flatCoordsOffset[2*t],i=this._flatCoordsOffset[2*t+1],r=0;r ")})},e.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},e.prototype.getZLevelKey=function(){var t=this.getModel("effect"),e=t.get("trailLength");return this.getData().count()>this.getProgressiveThreshold()?this.id:t.get("show")&&e>0?e+"":""},e.type="series.lines",e.dependencies=["grid","polar","geo","calendar"],e.defaultOption={coordinateSystem:"geo",z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},e}(sg);function LP(t){return t instanceof Array||(t=[t,t]),t}var PP={seriesType:"lines",reset:function(t){var e=LP(t.get("symbol")),n=LP(t.get("symbolSize")),i=t.getData();return i.setVisual("fromSymbol",e&&e[0]),i.setVisual("toSymbol",e&&e[1]),i.setVisual("fromSymbolSize",n&&n[0]),i.setVisual("toSymbolSize",n&&n[1]),{dataEach:i.hasItemOption?function(t,e){var n=t.getItemModel(e),i=LP(n.getShallow("symbol",!0)),r=LP(n.getShallow("symbolSize",!0));i[0]&&t.setItemVisual(e,"fromSymbol",i[0]),i[1]&&t.setItemVisual(e,"toSymbol",i[1]),r[0]&&t.setItemVisual(e,"fromSymbolSize",r[0]),r[1]&&t.setItemVisual(e,"toSymbolSize",r[1])}:null}}},OP=function(){function t(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var t=h.createCanvas();this.canvas=t}return t.prototype.update=function(t,e,n,i,r,o){var a=this._getBrush(),s=this._getGradient(r,"inRange"),l=this._getGradient(r,"outOfRange"),u=this.pointSize+this.blurSize,h=this.canvas,c=h.getContext("2d"),p=t.length;h.width=e,h.height=n;for(var d=0;d0){var I=o(v)?s:l;v>0&&(v=v*S+w),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(m,0,0),h},t.prototype._getBrush=function(){var t=this._brushCanvas||(this._brushCanvas=h.createCanvas()),e=this.pointSize+this.blurSize,n=2*e;t.width=n,t.height=n;var i=t.getContext("2d");return i.clearRect(0,0,n,n),i.shadowOffsetX=n,i.shadowBlur=this.blurSize,i.shadowColor="#000",i.beginPath(),i.arc(-e,e,this.pointSize,0,2*Math.PI,!0),i.closePath(),i.fill(),t},t.prototype._getGradient=function(t,e){for(var n=this._gradientPixels,i=n[e]||(n[e]=new Uint8ClampedArray(1024)),r=[0,0,0,0],o=0,a=0;a<256;a++)t[e](a/255,!0,r),i[o++]=r[0],i[o++]=r[1],i[o++]=r[2],i[o++]=r[3];return i},t}();function RP(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var NP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i;e.eachComponent("visualMap",(function(e){e.eachTargetSeries((function(n){n===t&&(i=e)}))})),this._progressiveEls=null,this.group.removeAll();var r=t.coordinateSystem;"cartesian2d"===r.type||"calendar"===r.type?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):RP(r)&&this._renderOnGeo(r,t,i,n)},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll()},e.prototype.incrementalRender=function(t,e,n,i){var r=e.coordinateSystem;r&&(RP(r)?this.render(e,n,i):(this._progressiveEls=[],this._renderOnCartesianAndCalendar(e,i,t.start,t.end,!0)))},e.prototype.eachRendered=function(t){Vh(this._progressiveEls||this.group,t)},e.prototype._renderOnCartesianAndCalendar=function(t,e,n,i,r){var o,a,s,l,u=t.coordinateSystem,h=uS(u,"cartesian2d");if(h){var c=u.getAxis("x"),p=u.getAxis("y");o=c.getBandWidth()+.5,a=p.getBandWidth()+.5,s=c.scale.getExtent(),l=p.scale.getExtent()}for(var d=this.group,f=t.getData(),g=t.getModel(["emphasis","itemStyle"]).getItemStyle(),y=t.getModel(["blur","itemStyle"]).getItemStyle(),v=t.getModel(["select","itemStyle"]).getItemStyle(),m=t.get(["itemStyle","borderRadius"]),x=Yh(t),_=t.getModel("emphasis"),b=_.get("focus"),w=_.get("blurScope"),S=_.get("disabled"),M=h?[f.mapDimension("x"),f.mapDimension("y"),f.mapDimension("value")]:[f.mapDimension("time"),f.mapDimension("value")],I=n;Is[1]||Al[1])continue;var k=u.dataToPoint([D,A]);T=new Cs({shape:{x:k[0]-o/2,y:k[1]-a/2,width:o,height:a},style:C})}else{if(isNaN(f.get(M[1],I)))continue;T=new Cs({z2:1,shape:u.dataToRect([f.get(M[0],I)]).contentShape,style:C})}if(f.hasItemOption){var L=f.getItemModel(I),P=L.getModel("emphasis");g=P.getModel("itemStyle").getItemStyle(),y=L.getModel(["blur","itemStyle"]).getItemStyle(),v=L.getModel(["select","itemStyle"]).getItemStyle(),m=L.get(["itemStyle","borderRadius"]),b=P.get("focus"),w=P.get("blurScope"),S=P.get("disabled"),x=Yh(L)}T.shape.r=m;var O=t.getRawValue(I),R="-";O&&null!=O[2]&&(R=O[2]+""),Hh(T,x,{labelFetcher:t,labelDataIndex:I,defaultOpacity:C.opacity,defaultText:R}),T.ensureState("emphasis").style=g,T.ensureState("blur").style=y,T.ensureState("select").style=v,Rl(T,b,w,S),T.incremental=r,r&&(T.states.emphasis.hoverLayer=!0),d.add(T),f.setItemGraphicEl(I,T),this._progressiveEls&&this._progressiveEls.push(T)}},e.prototype._renderOnGeo=function(t,e,n,i){var r=n.targetVisuals.inRange,o=n.targetVisuals.outOfRange,a=e.getData(),s=this._hmLayer||this._hmLayer||new OP;s.blurSize=e.get("blurSize"),s.pointSize=e.get("pointSize"),s.minOpacity=e.get("minOpacity"),s.maxOpacity=e.get("maxOpacity");var l=t.getViewRect().clone(),u=t.getRoamTransform();l.applyTransform(u);var h=Math.max(l.x,0),c=Math.max(l.y,0),p=Math.min(l.width+l.x,i.getWidth()),d=Math.min(l.height+l.y,i.getHeight()),f=p-h,g=d-c,y=[a.mapDimension("lng"),a.mapDimension("lat"),a.mapDimension("value")],v=a.mapArray(y,(function(e,n,i){var r=t.dataToPoint([e,n]);return r[0]-=h,r[1]-=c,r.push(i),r})),m=n.getExtent(),x="visualMap.continuous"===n.type?function(t,e){var n=t[1]-t[0];return e=[(e[0]-t[0])/n,(e[1]-t[0])/n],function(t){return t>=e[0]&&t<=e[1]}}(m,n.option.range):function(t,e,n){var i=t[1]-t[0],r=(e=z(e,(function(e){return{interval:[(e.interval[0]-t[0])/i,(e.interval[1]-t[0])/i]}}))).length,o=0;return function(t){var i;for(i=o;i=0;i--){var a;if((a=e[i].interval)[0]<=t&&t<=a[1]){o=i;break}}return i>=0&&i0?1:-1}(n,o,r,i,c),function(t,e,n,i,r,o,a,s,l,u){var h,c=l.valueDim,p=l.categoryDim,d=Math.abs(n[p.wh]),f=t.getItemVisual(e,"symbolSize");(h=Y(f)?f.slice():null==f?["100%","100%"]:[f,f])[p.index]=Er(h[p.index],d),h[c.index]=Er(h[c.index],i?d:Math.abs(o)),u.symbolSize=h,(u.symbolScale=[h[0]/s,h[1]/s])[c.index]*=(l.isHorizontal?-1:1)*a}(t,e,r,o,0,c.boundingLength,c.pxSign,u,i,c),function(t,e,n,i,r){var o=t.get(zP)||0;o&&(BP.attr({scaleX:e[0],scaleY:e[1],rotation:n}),BP.updateTransform(),o/=BP.getLineScale(),o*=e[i.valueDim.index]),r.valueLineWidth=o||0}(n,c.symbolScale,l,i,c);var p=c.symbolSize,d=Oy(n.get("symbolOffset"),p);return function(t,e,n,i,r,o,a,s,l,u,h,c){var p=h.categoryDim,d=h.valueDim,f=c.pxSign,g=Math.max(e[d.index]+s,0),y=g;if(i){var v=Math.abs(l),m=it(t.get("symbolMargin"),"15%")+"",x=!1;m.lastIndexOf("!")===m.length-1&&(x=!0,m=m.slice(0,m.length-1));var _=Er(m,e[d.index]),b=Math.max(g+2*_,0),w=x?0:2*_,S=eo(i),M=S?i:iO((v+w)/b);b=g+2*(_=(v-M*g)/2/(x?M:Math.max(M-1,1))),w=x?0:2*_,S||"fixed"===i||(M=u?iO((Math.abs(u)+w)/b):0),y=M*b-w,c.repeatTimes=M,c.symbolMargin=_}var I=f*(y/2),T=c.pathPosition=[];T[p.index]=n[p.wh]/2,T[d.index]="start"===a?I:"end"===a?l-I:l/2,o&&(T[0]+=o[0],T[1]+=o[1]);var C=c.bundlePosition=[];C[p.index]=n[p.xy],C[d.index]=n[d.xy];var D=c.barRectShape=A({},n);D[d.wh]=f*Math.max(Math.abs(n[d.wh]),Math.abs(T[d.index]+I)),D[p.wh]=n[p.wh];var k=c.clipShape={};k[p.xy]=-n[p.xy],k[p.wh]=h.ecSize[p.wh],k[d.xy]=0,k[d.wh]=n[d.wh]}(n,p,r,o,0,d,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,i,c),c}function WP(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function HP(t){var e=t.symbolPatternSize,n=Ly(t.symbolType,-e/2,-e/2,e,e);return n.attr({culling:!0}),"image"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function YP(t,e,n,i){var r=t.__pictorialBundle,o=n.symbolSize,a=n.valueLineWidth,s=n.pathPosition,l=e.valueDim,u=n.repeatTimes||0,h=0,c=o[e.valueDim.index]+a+2*n.symbolMargin;for(tO(t,(function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h0:i<0)&&(r=u-1-t),e[l.index]=c*(r-u/2+.5)+s[l.index],{x:e[0],y:e[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation}}}function UP(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;o?eO(o,null,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation},n,i):(o=t.__pictorialMainPath=HP(n),r.add(o),eO(o,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:0,scaleY:0,rotation:n.rotation},{scaleX:n.symbolScale[0],scaleY:n.symbolScale[1]},n,i))}function XP(t,e,n){var i=A({},e.barRectShape),r=t.__pictorialBarRect;r?eO(r,null,{shape:i},e,n):((r=t.__pictorialBarRect=new Cs({z2:2,shape:i,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}})).disableMorphing=!0,t.add(r))}function ZP(t,e,n,i){if(n.symbolClip){var r=t.__pictorialClipPath,o=A({},n.clipShape),a=e.valueDim,s=n.animationModel,l=n.dataIndex;if(r)rh(r,{shape:o},s,l);else{o[a.wh]=0,r=new Cs({shape:o}),t.__pictorialBundle.setClipPath(r),t.__pictorialClipPath=r;var u={};u[a.wh]=n.clipShape[a.wh],Bh[i?"updateProps":"initProps"](r,{shape:u},s,l)}}}function jP(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParams=qP,n.isAnimationEnabled=KP,n}function qP(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function KP(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function $P(t,e,n,i){var r=new Cr,o=new Cr;return r.add(o),r.__pictorialBundle=o,o.x=n.bundlePosition[0],o.y=n.bundlePosition[1],n.symbolRepeat?YP(r,e,n):UP(r,0,n),XP(r,n,i),ZP(r,e,n,i),r.__pictorialShapeStr=QP(t,n),r.__pictorialSymbolMeta=n,r}function JP(t,e,n,i){var r=i.__pictorialBarRect;r&&r.removeTextContent();var o=[];tO(i,(function(t){o.push(t)})),i.__pictorialMainPath&&o.push(i.__pictorialMainPath),i.__pictorialClipPath&&(n=null),E(o,(function(t){sh(t,{scaleX:0,scaleY:0},n,e,(function(){i.parent&&i.parent.remove(i)}))})),t.setItemGraphicEl(e,null)}function QP(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function tO(t,e,n){E(t.__pictorialBundle.children(),(function(i){i!==t.__pictorialBarRect&&e.call(n,i)}))}function eO(t,e,n,i,r,o){e&&t.attr(e),i.symbolClip&&!r?n&&t.attr(n):n&&Bh[r?"updateProps":"initProps"](t,n,i.animationModel,i.dataIndex,o)}function nO(t,e,n){var i=n.dataIndex,r=n.itemModel,o=r.getModel("emphasis"),a=o.getModel("itemStyle").getItemStyle(),s=r.getModel(["blur","itemStyle"]).getItemStyle(),l=r.getModel(["select","itemStyle"]).getItemStyle(),u=r.getShallow("cursor"),h=o.get("focus"),c=o.get("blurScope"),p=o.get("scale");tO(t,(function(t){if(t instanceof _s){var e=t.style;t.useStyle(A({image:e.image,x:e.x,y:e.y,width:e.width,height:e.height},n.style))}else t.useStyle(n.style);var i=t.ensureState("emphasis");i.style=a,p&&(i.scaleX=1.1*t.scaleX,i.scaleY=1.1*t.scaleY),t.ensureState("blur").style=s,t.ensureState("select").style=l,u&&(t.cursor=u),t.z2=n.z2}));var d=e.valueDim.posDesc[+(n.boundingLength>0)];Hh(t.__pictorialBarRect,Yh(r),{labelFetcher:e.seriesModel,labelDataIndex:i,defaultText:Ww(e.seriesModel.getData(),i),inheritColor:n.style.fill,defaultOpacity:n.style.opacity,defaultOutsidePosition:d}),Rl(t,h,c,o.get("disabled"))}function iO(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var rO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n.defaultSymbol="roundRect",n}return n(e,t),e.prototype.getInitialData=function(e){return e.stack=null,t.prototype.getInitialData.apply(this,arguments)},e.type="series.pictorialBar",e.dependencies=["grid"],e.defaultOption=yc(IS.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),e}(IS),oO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._layers=[],n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this,o=this.group,a=t.getLayerSeries(),s=i.getLayout("layoutInfo"),l=s.rect,u=s.boundaryGap;function h(t){return t.name}o.x=0,o.y=l.y+u[0];var c=new Im(this._layersSeries||[],a,h,h),p=[];function d(e,n,s){var l=r._layers;if("remove"!==e){for(var u,h,c=[],d=[],f=a[n].indices,g=0;go&&(o=s),i.push(s)}for(var u=0;uo&&(o=c)}return{y0:r,max:o}}(l),h=u.y0,c=n/u.max,p=o.length,d=o[0].indices.length,f=0;fMath.PI/2?"right":"left"):S&&"center"!==S?"left"===S?(m=r.r0+w,a>Math.PI/2&&(S="right")):"right"===S&&(m=r.r-w,a>Math.PI/2&&(S="left")):(m=o===2*Math.PI&&0===r.r0?0:(r.r+r.r0)/2,S="center"),g.style.align=S,g.style.verticalAlign=f(p,"verticalAlign")||"middle",g.x=m*s+r.cx,g.y=m*l+r.cy;var M=f(p,"rotate"),I=0;"radial"===M?(I=-a)<-Math.PI/2&&(I+=Math.PI):"tangential"===M?(I=Math.PI/2-a)>Math.PI/2?I-=Math.PI:I<-Math.PI/2&&(I+=Math.PI):j(M)&&(I=M*Math.PI/180),g.rotation=I})),h.dirtyStyle()},e}(Cu),hO="sunburstRootToNode",cO="sunburstHighlight",pO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this;this.seriesModel=t,this.api=n,this.ecModel=e;var o=t.getData(),a=o.tree.root,s=t.getViewRoot(),l=this.group,u=t.get("renderLabelForZeroData"),h=[];s.eachNode((function(t){h.push(t)}));var c=this._oldChildren||[];!function(i,r){function s(t){return t.getId()}function h(s,h){!function(i,r){if(u||!i||i.getValue()||(i=null),i!==a&&r!==a)if(r&&r.piece)i?(r.piece.updateData(!1,i,t,e,n),o.setItemGraphicEl(i.dataIndex,r.piece)):function(t){t&&t.piece&&(l.remove(t.piece),t.piece=null)}(r);else if(i){var s=new uO(i,t,e,n);l.add(s),o.setItemGraphicEl(i.dataIndex,s)}}(null==s?null:i[s],null==h?null:r[h])}0===i.length&&0===r.length||new Im(r,i,s,s).add(h).update(h).remove(H(h,null)).execute()}(h,c),function(i,o){o.depth>0?(r.virtualPiece?r.virtualPiece.updateData(!1,i,t,e,n):(r.virtualPiece=new uO(i,t,e,n),l.add(r.virtualPiece)),o.piece.off("click"),r.virtualPiece.on("click",(function(t){r._rootToNode(o.parentNode)}))):r.virtualPiece&&(l.remove(r.virtualPiece),r.virtualPiece=null)}(a,s),this._initEvents(),this._oldChildren=h},e.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",(function(e){var n=!1;t.seriesModel.getViewRoot().eachNode((function(i){if(!n&&i.piece&&i.piece===e.target){var r=i.getModel().get("nodeClick");if("rootToNode"===r)t._rootToNode(i);else if("link"===r){var o=i.getModel(),a=o.get("link");a&&dp(a,o.get("target",!0)||"_blank")}n=!0}}))}))},e.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:hO,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},e.prototype.containPoint=function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}},e.type="sunburst",e}(xg),dO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreStyleOnData=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};fO(n);var i=this._levelModels=z(t.levels||[],(function(t){return new dc(t,this,e)}),this),r=AC.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e),o=i[n.depth];return o&&(t.parentModel=o),t}))}));return r.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treePathInfo=OC(i,this),n},e.prototype.getLevelModel=function(t){return this._levelModels&&this._levelModels[t.depth]},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){BC(this)},e.type="series.sunburst",e.defaultOption={z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],sort:"desc"},e}(sg);function fO(t){var e=0;E(t.children,(function(t){fO(t);var n=t.value;Y(n)&&(n=n[0]),e+=n}));var n=t.value;Y(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),Y(t.value)?t.value[0]=n:t.value=n}var gO=Math.PI/180;function yO(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.get("center"),i=t.get("radius");Y(i)||(i=[0,i]),Y(e)||(e=[e,e]);var r=n.getWidth(),o=n.getHeight(),a=Math.min(r,o),s=Er(e[0],r),l=Er(e[1],o),u=Er(i[0],a/2),h=Er(i[1],a/2),c=-t.get("startAngle")*gO,p=t.get("minAngle")*gO,d=t.getData().tree.root,f=t.getViewRoot(),g=f.depth,y=t.get("sort");null!=y&&vO(f,y);var v=0;E(f.children,(function(t){!isNaN(t.getValue())&&v++}));var m=f.getValue(),x=Math.PI/(m||v)*2,_=f.depth>0,b=f.height-(_?-1:1),w=(h-u)/(b||1),S=t.get("clockwise"),M=t.get("stillShowZeroSum"),I=S?1:-1,T=function(e,n){if(e){var i=n;if(e!==d){var r=e.getValue(),o=0===m&&M?x:r*x;o1;)r=r.parentNode;var o=n.getColorFromPalette(r.name||r.dataIndex+"",e);return t.depth>1&&X(o)&&(o=Sn(o,(t.depth-1)/(i-1)*.5)),o}(r,t,i.root.height)),A(n.ensureUniqueItemVisual(r.dataIndex,"style"),o)}))}))}var xO={color:"fill",borderColor:"stroke"},_O={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},bO=So(),wO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},e.prototype.getInitialData=function(t,e){return rx(null,this)},e.prototype.getDataParams=function(e,n,i){var r=t.prototype.getDataParams.call(this,e,n);return i&&(r.info=bO(i).info),r},e.type="series.custom",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,clip:!1},e}(sg);function SO(t,e){return e=e||[0,0],z(["x","y"],(function(n,i){var r=this.getAxis(n),o=e[i],a=t[i]/2;return"category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a))}),this)}function MO(t,e){return e=e||[0,0],z([0,1],(function(n){var i=e[n],r=t[n]/2,o=[],a=[];return o[n]=i-r,a[n]=i+r,o[1-n]=a[1-n]=e[1-n],Math.abs(this.dataToPoint(o)[n]-this.dataToPoint(a)[n])}),this)}function IO(t,e){var n=this.getAxis(),i=e instanceof Array?e[0]:e,r=(t instanceof Array?t[0]:t)/2;return"category"===n.type?n.getBandWidth():Math.abs(n.dataToCoord(i-r)-n.dataToCoord(i+r))}function TO(t,e){return e=e||[0,0],z(["Radius","Angle"],(function(n,i){var r=this["get"+n+"Axis"](),o=e[i],a=t[i]/2,s="category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a));return"Angle"===n&&(s=s*Math.PI/180),s}),this)}function CO(t,e,n,i){return t&&(t.legacy||!1!==t.legacy&&!n&&!i&&"tspan"!==e&&("text"===e||mt(t,"text")))}function DO(t,e,n){var i,r,o,a=t;if("text"===e)o=a;else{o={},mt(a,"text")&&(o.text=a.text),mt(a,"rich")&&(o.rich=a.rich),mt(a,"textFill")&&(o.fill=a.textFill),mt(a,"textStroke")&&(o.stroke=a.textStroke),mt(a,"fontFamily")&&(o.fontFamily=a.fontFamily),mt(a,"fontSize")&&(o.fontSize=a.fontSize),mt(a,"fontStyle")&&(o.fontStyle=a.fontStyle),mt(a,"fontWeight")&&(o.fontWeight=a.fontWeight),r={type:"text",style:o,silent:!0},i={};var s=mt(a,"textPosition");n?i.position=s?a.textPosition:"inside":s&&(i.position=a.textPosition),mt(a,"textPosition")&&(i.position=a.textPosition),mt(a,"textOffset")&&(i.offset=a.textOffset),mt(a,"textRotation")&&(i.rotation=a.textRotation),mt(a,"textDistance")&&(i.distance=a.textDistance)}return AO(o,t),E(o.rich,(function(t){AO(t,t)})),{textConfig:i,textContent:r}}function AO(t,e){e&&(e.font=e.textFont||e.font,mt(e,"textStrokeWidth")&&(t.lineWidth=e.textStrokeWidth),mt(e,"textAlign")&&(t.align=e.textAlign),mt(e,"textVerticalAlign")&&(t.verticalAlign=e.textVerticalAlign),mt(e,"textLineHeight")&&(t.lineHeight=e.textLineHeight),mt(e,"textWidth")&&(t.width=e.textWidth),mt(e,"textHeight")&&(t.height=e.textHeight),mt(e,"textBackgroundColor")&&(t.backgroundColor=e.textBackgroundColor),mt(e,"textPadding")&&(t.padding=e.textPadding),mt(e,"textBorderColor")&&(t.borderColor=e.textBorderColor),mt(e,"textBorderWidth")&&(t.borderWidth=e.textBorderWidth),mt(e,"textBorderRadius")&&(t.borderRadius=e.textBorderRadius),mt(e,"textBoxShadowColor")&&(t.shadowColor=e.textBoxShadowColor),mt(e,"textBoxShadowBlur")&&(t.shadowBlur=e.textBoxShadowBlur),mt(e,"textBoxShadowOffsetX")&&(t.shadowOffsetX=e.textBoxShadowOffsetX),mt(e,"textBoxShadowOffsetY")&&(t.shadowOffsetY=e.textBoxShadowOffsetY))}function kO(t,e,n){var i=t;i.textPosition=i.textPosition||n.position||"inside",null!=n.offset&&(i.textOffset=n.offset),null!=n.rotation&&(i.textRotation=n.rotation),null!=n.distance&&(i.textDistance=n.distance);var r=i.textPosition.indexOf("inside")>=0,o=t.fill||"#000";LO(i,e);var a=null==i.textFill;return r?a&&(i.textFill=n.insideFill||"#fff",!i.textStroke&&n.insideStroke&&(i.textStroke=n.insideStroke),!i.textStroke&&(i.textStroke=o),null==i.textStrokeWidth&&(i.textStrokeWidth=2)):(a&&(i.textFill=t.fill||n.outsideFill||"#000"),!i.textStroke&&n.outsideStroke&&(i.textStroke=n.outsideStroke)),i.text=e.text,i.rich=e.rich,E(e.rich,(function(t){LO(t,t)})),i}function LO(t,e){e&&(mt(e,"fill")&&(t.textFill=e.fill),mt(e,"stroke")&&(t.textStroke=e.fill),mt(e,"lineWidth")&&(t.textStrokeWidth=e.lineWidth),mt(e,"font")&&(t.font=e.font),mt(e,"fontStyle")&&(t.fontStyle=e.fontStyle),mt(e,"fontWeight")&&(t.fontWeight=e.fontWeight),mt(e,"fontSize")&&(t.fontSize=e.fontSize),mt(e,"fontFamily")&&(t.fontFamily=e.fontFamily),mt(e,"align")&&(t.textAlign=e.align),mt(e,"verticalAlign")&&(t.textVerticalAlign=e.verticalAlign),mt(e,"lineHeight")&&(t.textLineHeight=e.lineHeight),mt(e,"width")&&(t.textWidth=e.width),mt(e,"height")&&(t.textHeight=e.height),mt(e,"backgroundColor")&&(t.textBackgroundColor=e.backgroundColor),mt(e,"padding")&&(t.textPadding=e.padding),mt(e,"borderColor")&&(t.textBorderColor=e.borderColor),mt(e,"borderWidth")&&(t.textBorderWidth=e.borderWidth),mt(e,"borderRadius")&&(t.textBorderRadius=e.borderRadius),mt(e,"shadowColor")&&(t.textBoxShadowColor=e.shadowColor),mt(e,"shadowBlur")&&(t.textBoxShadowBlur=e.shadowBlur),mt(e,"shadowOffsetX")&&(t.textBoxShadowOffsetX=e.shadowOffsetX),mt(e,"shadowOffsetY")&&(t.textBoxShadowOffsetY=e.shadowOffsetY),mt(e,"textShadowColor")&&(t.textShadowColor=e.textShadowColor),mt(e,"textShadowBlur")&&(t.textShadowBlur=e.textShadowBlur),mt(e,"textShadowOffsetX")&&(t.textShadowOffsetX=e.textShadowOffsetX),mt(e,"textShadowOffsetY")&&(t.textShadowOffsetY=e.textShadowOffsetY))}var PO={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},OO=G(PO),RO=(V(Ki,(function(t,e){return t[e]=1,t}),{}),Ki.join(", "),["","style","shape","extra"]),NO=So();function EO(t,e,n,i,r){var o=t+"Animation",a=nh(t,i,r)||{},s=NO(e).userDuring;return a.duration>0&&(a.during=s?W(HO,{el:e,userDuring:s}):null,a.setToFinal=!0,a.scope=t),A(a,n[o]),a}function zO(t,e,n,i){var r=(i=i||{}).dataIndex,o=i.isInit,a=i.clearStyle,s=n.isAnimationEnabled(),l=NO(t),u=e.style;l.userDuring=e.during;var h={},c={};if(function(t,e,n){for(var i=0;i=0)){var c=t.getAnimationStyleProps(),p=c?c.style:null;if(p){!r&&(r=i.style={});var d=G(n);for(u=0;u0&&t.animateFrom(p,d)}else!function(t,e,n,i,r){if(r){var o=EO("update",t,e,i,n);o.duration>0&&t.animateFrom(r,o)}}(t,e,r||0,n,h);VO(t,e),u?t.dirty():t.markRedraw()}function VO(t,e){for(var n=NO(t).leaveToProps,i=0;i=0){!o&&(o=i[t]={});var p=G(a);for(h=0;hi[1]&&i.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:i[1],r0:i[0]},api:{coord:function(i){var r=e.dataToRadius(i[0]),o=n.dataToAngle(i[1]),a=t.coordToPoint([r,o]);return a.push(r,o*Math.PI/180),a},size:W(TO,t)}}},calendar:function(t){var e=t.getRect(),n=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(e,n){return t.dataToPoint(e,n)}}}}};function sR(t){return t instanceof gs}function lR(t){return t instanceof da}var uR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){this._progressiveEls=null;var r=this._data,o=t.getData(),a=this.group,s=fR(t,o,e,n);r||a.removeAll(),o.diff(r).add((function(e){yR(n,null,e,s(e,i),t,a,o)})).remove((function(e){var n=r.getItemGraphicEl(e);BO(n,bO(n).option,t)})).update((function(e,l){var u=r.getItemGraphicEl(l);yR(n,u,e,s(e,i),t,a,o)})).execute();var l=t.get("clip",!0)?lS(t.coordinateSystem,!1,t):null;l?a.setClipPath(l):a.removeClipPath(),this._data=o},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll(),this._data=null},e.prototype.incrementalRender=function(t,e,n,i,r){var o=e.getData(),a=fR(e,o,n,i),s=this._progressiveEls=[];function l(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}for(var u=t.start;u=0?e.getStore().get(r,n):void 0}var o=e.get(i.name,n),a=i&&i.ordinalMeta;return a?a.categories[o]:o},styleEmphasis:function(n,i){null==i&&(i=s);var r=m(i,$O).getItemStyle(),o=x(i,$O),a=Uh(o,null,null,!0,!0);a.text=o.getShallow("show")?ot(t.getFormattedLabel(i,$O),t.getFormattedLabel(i,JO),Ww(e,i)):null;var l=Xh(o,null,!0);return b(n,r),r=kO(r,a,l),n&&_(r,n),r.legacy=!0,r},visual:function(t,n){if(null==n&&(n=s),mt(xO,t)){var i=e.getItemVisual(n,"style");return i?i[xO[t]]:null}if(mt(_O,t))return e.getItemVisual(n,t)},barLayout:function(t){if("cartesian2d"===o.type)return function(t){var e=[],n=t.axis;if("category"===n.type){for(var r=n.getBandWidth(),o=0;o=c;p--)BO(e.childAt(p),bO(e).option,r)}}(t,c,n,i,r),a>=0?o.replaceAt(c,a):o.add(c),c}function mR(t,e,n){var i,r=bO(t),o=e.type,a=e.shape,s=e.style;return n.isUniversalTransitionEnabled()||null!=o&&o!==r.customGraphicType||"path"===o&&(i=a)&&(mt(i,"pathData")||mt(i,"d"))&&IR(a)!==r.customPathData||"image"===o&&mt(s,"image")&&s.image!==r.customImagePath}function xR(t,e,n){var i=e?_R(t,e):t,r=e?bR(t,i,$O):t.style,o=t.type,a=i?i.textConfig:null,s=t.textContent,l=s?e?_R(s,e):s:null;if(r&&(n.isLegacy||CO(r,o,!!a,!!l))){n.isLegacy=!0;var u=DO(r,o,!e);!a&&u.textConfig&&(a=u.textConfig),!l&&u.textContent&&(l=u.textContent)}if(!e&&l){var h=l;!h.type&&(h.type="text")}var c=e?n[e]:n.normal;c.cfg=a,c.conOpt=l}function _R(t,e){return e?t?t[e]:null:t}function bR(t,e,n){var i=e&&e.style;return null==i&&n===$O&&t&&(i=t.styleEmphasis),i}function wR(t,e){var n=t&&t.name;return null!=n?n:"e\0\0"+e}function SR(t,e){var n=this.context,i=null!=t?n.newChildren[t]:null,r=null!=e?n.oldChildren[e]:null;vR(n.api,r,n.dataIndex,i,n.seriesModel,n.group)}function MR(t){var e=this.context,n=e.oldChildren[t];BO(n,bO(n).option,e.seriesModel)}function IR(t){return t&&(t.pathData||t.d)}var TR=So(),CR=T,DR=W,AR=function(){function t(){this._dragging=!1,this.animationThreshold=15}return t.prototype.render=function(t,e,n,i){var r=e.get("value"),o=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=n,i||this._lastValue!==r||this._lastStatus!==o){this._lastValue=r,this._lastStatus=o;var a=this._group,s=this._handle;if(!o||"hide"===o)return a&&a.hide(),void(s&&s.hide());a&&a.show(),s&&s.show();var l={};this.makeElOption(l,r,t,e,n);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(a){var c=H(kR,e,h);this.updatePointerEl(a,l,c),this.updateLabelEl(a,l,c,e)}else a=this._group=new Cr,this.createPointerEl(a,l,t,e),this.createLabelEl(a,l,t,e),n.getZr().add(a);RR(a,e,!0),this._renderHandle(r)}},t.prototype.remove=function(t){this.clear(t)},t.prototype.dispose=function(t){this.clear(t)},t.prototype.determineAnimation=function(t,e){var n=e.get("animation"),i=t.axis,r="category"===i.type,o=e.get("snap");if(!o&&!r)return!1;if("auto"===n||null==n){var a=this.animationThreshold;if(r&&i.getBandWidth()>a)return!0;if(o){var s=KM(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1}return!0===n},t.prototype.makeElOption=function(t,e,n,i,r){},t.prototype.createPointerEl=function(t,e,n,i){var r=e.pointer;if(r){var o=TR(t).pointerEl=new Bh[r.type](CR(e.pointer));t.add(o)}},t.prototype.createLabelEl=function(t,e,n,i){if(e.label){var r=TR(t).labelEl=new ks(CR(e.label));t.add(r),PR(r,i)}},t.prototype.updatePointerEl=function(t,e,n){var i=TR(t).pointerEl;i&&e.pointer&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},t.prototype.updateLabelEl=function(t,e,n,i){var r=TR(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{x:e.label.x,y:e.label.y}),PR(r,i))},t.prototype._renderHandle=function(t){if(!this._dragging&&this.updateHandleTransform){var e,n=this._axisPointerModel,i=this._api.getZr(),r=this._handle,o=n.getModel("handle"),a=n.get("status");if(!o.get("show")||!a||"hide"===a)return r&&i.remove(r),void(this._handle=null);this._handle||(e=!0,r=this._handle=Ph(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){se(t.event)},onmousedown:DR(this._onHandleDragMove,this,0,0),drift:DR(this._onHandleDragMove,this),ondragend:DR(this._onHandleDragEnd,this)}),i.add(r)),RR(r,n,!1),r.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");Y(s)||(s=[s,s]),r.scaleX=s[0]/2,r.scaleY=s[1]/2,Ag(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},t.prototype._moveHandleToValue=function(t,e){kR(this._axisPointerModel,!e&&this._moveAnimation,this._handle,OR(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},t.prototype._onHandleDragMove=function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(OR(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(OR(i)),TR(n).lastProp=null,this._doDispatchAxisPointer()}},t.prototype._doDispatchAxisPointer=function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},t.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},t.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),n=this._group,i=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),i&&e.remove(i),this._group=null,this._handle=null,this._payloadInfo=null),kg(this,"_doDispatchAxisPointer")},t.prototype.doClear=function(){},t.prototype.buildLabel=function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}},t}();function kR(t,e,n,i){LR(TR(n).lastProp,i)||(TR(n).lastProp=i,e?rh(n,i,t):(n.stopAnimation(),n.attr(i)))}function LR(t,e){if(q(t)&&q(e)){var n=!0;return E(e,(function(e,i){n=n&&LR(t[i],e)})),!!n}return t===e}function PR(t,e){t[e.get(["label","show"])?"show":"hide"]()}function OR(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}function RR(t,e,n){var i=e.get("z"),r=e.get("zlevel");t&&t.traverse((function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=r&&(t.zlevel=r),t.silent=n)}))}function NR(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle()).fill=null:"shadow"===n&&((e=i.getAreaStyle()).stroke=null),e}function ER(t,e,n,i,r){var o=zR(n.get("value"),e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get(["label","precision"]),formatter:n.get(["label","formatter"])}),a=n.getModel("label"),s=ip(a.get("padding")||0),l=a.getFont(),u=cr(o,l),h=r.position,c=u.width+s[1]+s[3],p=u.height+s[0]+s[2],d=r.align;"right"===d&&(h[0]-=c),"center"===d&&(h[0]-=c/2);var f=r.verticalAlign;"bottom"===f&&(h[1]-=p),"middle"===f&&(h[1]-=p/2),function(t,e,n,i){var r=i.getWidth(),o=i.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+n,o)-n,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}(h,c,p,i);var g=a.get("backgroundColor");g&&"auto"!==g||(g=e.get(["axisLine","lineStyle","color"])),t.label={x:h[0],y:h[1],style:Uh(a,{text:o,font:l,fill:a.getTextColor(),padding:s,backgroundColor:g}),z2:10}}function zR(t,e,n,i,r){t=e.scale.parse(t);var o=e.scale.getLabel({value:t},{precision:r.precision}),a=r.formatter;if(a){var s={value:s_(e,{value:t}),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};E(i,(function(t){var e=n.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,r=e&&e.getDataParams(i);r&&s.seriesData.push(r)})),X(a)?o=a.replace("{value}",o):U(a)&&(o=a(s))}return o}function VR(t,e,n){var i=[1,0,0,1,0,0];return zi(i,i,n.rotation),Ei(i,i,n.position),Th([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}function BR(t,e,n,i,r,o){var a=GM.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get(["label","margin"]),ER(e,i,r,o,{position:VR(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}function FR(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}function GR(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}function WR(t,e,n,i,r,o){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle:o,clockwise:!0}}var HR=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.grid,s=i.get("type"),l=YR(a,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=NR(i),c=UR[s](o,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}BR(e,t,LM(a.model,n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=LM(e.axis.grid.model,e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=VR(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.grid,a=r.getGlobalExtent(!0),s=YR(o,r).getOtherAxis(r).getGlobalExtent(),l="x"===r.dim?0:1,u=[t.x,t.y];u[l]+=e[l],u[l]=Math.min(a[1],u[l]),u[l]=Math.max(a[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];return c[l]=u[l],{x:u[0],y:u[1],rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}},e}(AR);function YR(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var UR={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:FR([e,n[0]],[e,n[1]],XR(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),r=n[1]-n[0];return{type:"Rect",shape:GR([e-i/2,n[0]],[i,r],XR(t))}}};function XR(t){return"x"===t.dim?0:1}var ZR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="axisPointer",e.defaultOption={show:"auto",z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}},e}(Tp),jR=So(),qR=E;function KR(t,e,n){if(!r.node){var i=e.getZr();jR(i).records||(jR(i).records={}),function(t,e){function n(n,i){t.on(n,(function(n){var r=function(t){var e={showTip:[],hideTip:[]},n=function(i){var r=e[i.type];r?r.push(i):(i.dispatchAction=n,t.dispatchAction(i))};return{dispatchAction:n,pendings:e}}(e);qR(jR(t).records,(function(t){t&&i(t,n,r.dispatchAction)})),function(t,e){var n,i=t.showTip.length,r=t.hideTip.length;i?n=t.showTip[i-1]:r&&(n=t.hideTip[r-1]),n&&(n.dispatchAction=null,e.dispatchAction(n))}(r.pendings,e)}))}jR(t).initialized||(jR(t).initialized=!0,n("click",H(JR,"click")),n("mousemove",H(JR,"mousemove")),n("globalout",$R))}(i,e),(jR(i).records[t]||(jR(i).records[t]={})).handler=n}}function $R(t,e,n){t.handler("leave",null,n)}function JR(t,e,n,i){e.handler(t,n,i)}function QR(t,e){if(!r.node){var n=e.getZr();(jR(n).records||{})[t]&&(jR(n).records[t]=null)}}var tN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=e.getComponent("tooltip"),r=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";KR("axisPointer",n,(function(t,e,n){"none"!==r&&("leave"===t||r.indexOf(t)>=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})}))},e.prototype.remove=function(t,e){QR("axisPointer",e)},e.prototype.dispose=function(t,e){QR("axisPointer",e)},e.type="axisPointer",e}(gg);function eN(t,e){var n,i=[],r=t.seriesIndex;if(null==r||!(n=e.getSeriesByIndex(r)))return{point:[]};var o=n.getData(),a=wo(o,t);if(null==a||a<0||Y(a))return{point:[]};var s=o.getItemGraphicEl(a),l=n.coordinateSystem;if(n.getTooltipPosition)i=n.getTooltipPosition(a)||[];else if(l&&l.dataToPoint)if(t.isStacked){var u=l.getBaseAxis(),h=l.getOtherAxis(u).dim,c=u.dim,p="x"===h||"radius"===h?1:0,d=o.mapDimension(c),f=[];f[p]=o.get(d,a),f[1-p]=o.get(o.getCalculationInfo("stackResultDimension"),a),i=l.dataToPoint(f)||[]}else i=l.dataToPoint(o.getValues(z(l.dimensions,(function(t){return o.mapDimension(t)})),a))||[];else if(s){var g=s.getBoundingRect().clone();g.applyTransform(s.transform),i=[g.x+g.width/2,g.y+g.height/2]}return{point:i,el:s}}var nN=So();function iN(t,e,n){var i=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchAction||W(n.dispatchAction,n),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lN(r)&&(r=eN({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=lN(r),u=o.axesInfo,h=s.axesInfo,c="leave"===i||lN(r),p={},d={},f={list:[],map:{}},g={showPointer:H(oN,d),showTooltip:H(aN,f)};E(s.coordSysMap,(function(t,e){var n=l||t.containPoint(r);E(s.coordSysAxesInfo[e],(function(t,e){var i=t.axis,o=function(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}(u,t);if(!c&&n&&(!u||o)){var a=o&&o.value;null!=a||l||(a=i.pointToData(r)),null!=a&&rN(t,a,g,!1,p)}}))}));var y={};return E(h,(function(t,e){var n=t.linkGroup;n&&!d[e]&&E(n.axesInfo,(function(e,i){var r=d[i];if(e!==t&&r){var o=r.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,sN(e),sN(t)))),y[t.key]=o}}))})),E(y,(function(t,e){rN(h[e],t,g,!0,p)})),function(t,e,n){var i=n.axesInfo=[];E(e,(function(e,n){var r=e.axisPointerModel.option,o=t[n];o?(!e.useHandle&&(r.status="show"),r.value=o.value,r.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&i.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})}))}(d,h,p),function(t,e,n,i){if(!lN(e)&&t.list.length){var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}else i({type:"hideTip"})}(f,r,t,a),function(t,e,n){var i=n.getZr(),r="axisPointerLastHighlights",o=nN(i)[r]||{},a=nN(i)[r]={};E(t,(function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&E(n.seriesDataIndices,(function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t}))}));var s=[],l=[];E(o,(function(t,e){!a[e]&&l.push(t)})),E(a,(function(t,e){!o[e]&&s.push(t)})),l.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}(h,0,n),p}}function rN(t,e,n,i,r){var o=t.axis;if(!o.scale.isBlank()&&o.containData(e))if(t.involveSeries){var a=function(t,e){var n=e.axis,i=n.dim,r=t,o=[],a=Number.MAX_VALUE,s=-1;return E(e.seriesModels,(function(e,l){var u,h,c=e.getData().mapDimensionsAll(i);if(e.getAxisTooltipData){var p=e.getAxisTooltipData(c,t,n);h=p.dataIndices,u=p.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===n.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var d=t-u,f=Math.abs(d);f<=a&&((f=0&&s<0)&&(a=f,s=d,r=u,o.length=0),E(h,(function(t){o.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})})))}})),{payloadBatch:o,snapToValue:r}}(e,t),s=a.payloadBatch,l=a.snapToValue;s[0]&&null==r.seriesIndex&&A(r,s[0]),!i&&t.snap&&o.containData(l)&&null!=l&&(e=l),n.showPointer(t,e,s),n.showTooltip(t,a,l)}else n.showPointer(t,e)}function oN(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function aN(t,e,n,i){var r=n.payloadBatch,o=e.axis,a=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,u=JM(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:o.dim,axisIndex:a.componentIndex,axisType:a.type,axisId:a.id,value:i,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:r.slice()})}}function sN(t){var e=t.axis.model,n={},i=n.axisDim=t.axis.dim;return n.axisIndex=n[i+"AxisIndex"]=e.componentIndex,n.axisName=n[i+"AxisName"]=e.name,n.axisId=n[i+"AxisId"]=e.id,n}function lN(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function uN(t){tI.registerAxisPointerClass("CartesianAxisPointer",HR),t.registerComponentModel(ZR),t.registerComponentView(tN),t.registerPreprocessor((function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!Y(e)&&(t.axisPointer.link=[e])}})),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,(function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=function(t,e){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return function(t,e,n){var i=e.getComponent("tooltip"),r=e.getComponent("axisPointer"),o=r.get("link",!0)||[],a=[];E(n.getCoordinateSystems(),(function(n){if(n.axisPointerEnabled){var s=JM(n.model),l=t.coordSysAxesInfo[s]={};t.coordSysMap[s]=n;var u=n.model.getModel("tooltip",i);if(E(n.getAxes(),H(d,!1,null)),n.getTooltipAxes&&i&&u.get("show")){var h="axis"===u.get("trigger"),c="cross"===u.get(["axisPointer","type"]),p=n.getTooltipAxes(u.get(["axisPointer","axis"]));(h||c)&&E(p.baseAxes,H(d,!c||"cross",h)),c&&E(p.otherAxes,H(d,"cross",!1))}}function d(i,s,h){var c=h.model.getModel("axisPointer",r),p=c.get("show");if(p&&("auto"!==p||i||$M(c))){null==s&&(s=c.get("triggerTooltip"));var d=(c=i?function(t,e,n,i,r,o){var a=e.getModel("axisPointer"),s={};E(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],(function(t){s[t]=T(a.get(t))})),s.snap="category"!==t.type&&!!o,"cross"===a.get("type")&&(s.type="line");var l=s.label||(s.label={});if(null==l.show&&(l.show=!1),"cross"===r){var u=a.get(["label","show"]);if(l.show=null==u||u,!o){var h=s.lineStyle=a.get("crossStyle");h&&k(l,h.textStyle)}}return t.model.getModel("axisPointer",new dc(s,n,i))}(h,u,r,e,i,s):c).get("snap"),f=JM(h.model),g=s||d||"category"===h.type,y=t.axesInfo[f]={key:f,axis:h,coordSys:n,axisPointerModel:c,triggerTooltip:s,involveSeries:g,snap:d,useHandle:$M(c),seriesModels:[],linkGroup:null};l[f]=y,t.seriesInvolved=t.seriesInvolved||g;var v=function(t,e){for(var n=e.model,i=e.dim,r=0;ry?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}(e,n,0,a,i.get(["label","margin"]));ER(t,n,i,r,p)},e}(AR),cN={line:function(t,e,n,i){return"angle"===t.dim?{type:"Line",shape:FR(e.coordToPoint([i[0],n]),e.coordToPoint([i[1],n]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:n}}},shadow:function(t,e,n,i){var r=Math.max(1,t.getBandWidth()),o=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:WR(e.cx,e.cy,i[0],i[1],(-n-r/2)*o,(r/2-n)*o)}:{type:"Sector",shape:WR(e.cx,e.cy,n-r/2,n+r/2,0,2*Math.PI)}}},pN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.findAxisModel=function(t){var e;return this.ecModel.eachComponent(t,(function(t){t.getCoordSysModel()===this&&(e=t)}),this),e},e.type="polar",e.dependencies=["radiusAxis","angleAxis"],e.defaultOption={z:0,center:["50%","50%"],radius:"80%"},e}(Tp),dN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",Co).models[0]},e.type="polarAxis",e}(Tp);R(dN,p_);var fN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="angleAxis",e}(dN),gN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="radiusAxis",e}(dN),yN=function(t){function e(e,n){return t.call(this,"radius",e,n)||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e}(H_);yN.prototype.dataToRadius=H_.prototype.dataToCoord,yN.prototype.radiusToData=H_.prototype.coordToData;var vN=So(),mN=function(t){function e(e,n){return t.call(this,"angle",e,n||[0,360])||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e.prototype.calculateCategoryInterval=function(){var t=this,e=t.getLabelModel(),n=t.scale,i=n.getExtent(),r=n.count();if(i[1]-i[0]<1)return 0;var o=i[0],a=t.dataToCoord(o+1)-t.dataToCoord(o),s=Math.abs(a),l=cr(null==o?"":o+"",e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=vN(t.model),p=c.lastAutoInterval,d=c.lastTickCount;return null!=p&&null!=d&&Math.abs(p-h)<=1&&Math.abs(d-r)<=1&&p>h?h=p:(c.lastTickCount=r,c.lastAutoInterval=h),h},e}(H_);mN.prototype.dataToAngle=H_.prototype.dataToCoord,mN.prototype.angleToData=H_.prototype.coordToData;var xN=["radius","angle"],_N=function(){function t(t){this.dimensions=xN,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new yN,this._angleAxis=new mN,this.axisPointerEnabled=!0,this.name=t||"",this._radiusAxis.polar=this._angleAxis.polar=this}return t.prototype.containPoint=function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},t.prototype.containData=function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},t.prototype.getAxis=function(t){return this["_"+t+"Axis"]},t.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},t.prototype.getAxesByScale=function(t){var e=[],n=this._angleAxis,i=this._radiusAxis;return n.scale.type===t&&e.push(n),i.scale.type===t&&e.push(i),e},t.prototype.getAngleAxis=function(){return this._angleAxis},t.prototype.getRadiusAxis=function(){return this._radiusAxis},t.prototype.getOtherAxis=function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},t.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},t.prototype.getTooltipAxes=function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},t.prototype.dataToPoint=function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},t.prototype.pointToData=function(t,e){var n=this.pointToCoord(t);return[this._radiusAxis.radiusToData(n[0],e),this._angleAxis.angleToData(n[1],e)]},t.prototype.pointToCoord=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=this.getAngleAxis(),r=i.getExtent(),o=Math.min(r[0],r[1]),a=Math.max(r[0],r[1]);i.inverse?o=a-360:a=o+360;var s=Math.sqrt(e*e+n*n);e/=s,n/=s;for(var l=Math.atan2(-n,e)/Math.PI*180,u=la;)l+=360*u;return[s,l]},t.prototype.coordToPoint=function(t){var e=t[0],n=t[1]/180*Math.PI;return[Math.cos(n)*e+this.cx,-Math.sin(n)*e+this.cy]},t.prototype.getArea=function(){var t=this.getAngleAxis(),e=this.getRadiusAxis().getExtent().slice();e[0]>e[1]&&e.reverse();var n=t.getExtent(),i=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:t.inverse,contain:function(t,e){var n=t-this.cx,i=e-this.cy,r=n*n+i*i-1e-4,o=this.r,a=this.r0;return r<=o*o&&r>=a*a}}},t.prototype.convertToPixel=function(t,e,n){return bN(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return bN(e)===this?this.pointToData(n):null},t}();function bN(t){var e=t.seriesModel,n=t.polarModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}function wN(t,e){var n=this,i=n.getAngleAxis(),r=n.getRadiusAxis();if(i.scale.setExtent(1/0,-1/0),r.scale.setExtent(1/0,-1/0),t.eachSeries((function(t){if(t.coordinateSystem===n){var e=t.getData();E(c_(e,"radius"),(function(t){r.scale.unionExtentFromData(e,t)})),E(c_(e,"angle"),(function(t){i.scale.unionExtentFromData(e,t)}))}})),r_(i.scale,i.model),r_(r.scale,r.model),"category"===i.type&&!i.onBand){var o=i.getExtent(),a=360/i.scale.count();i.inverse?o[1]+=a:o[1]-=a,i.setExtent(o[0],o[1])}}function SN(t,e){if(t.type=e.get("type"),t.scale=o_(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),function(t){return"angleAxis"===t.mainType}(e)){t.inverse=t.inverse!==e.get("clockwise");var n=e.get("startAngle");t.setExtent(n,n+(t.inverse?-360:360))}e.axis=t,t.model=e}var MN={dimensions:xN,create:function(t,e){var n=[];return t.eachComponent("polar",(function(t,i){var r=new _N(i+"");r.update=wN;var o=r.getRadiusAxis(),a=r.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");SN(o,s),SN(a,l),function(t,e,n){var i=e.get("center"),r=n.getWidth(),o=n.getHeight();t.cx=Er(i[0],r),t.cy=Er(i[1],o);var a=t.getRadiusAxis(),s=Math.min(r,o)/2,l=e.get("radius");null==l?l=[0,"100%"]:Y(l)||(l=[0,l]);var u=[Er(l[0],s),Er(l[1],s)];a.inverse?a.setExtent(u[1],u[0]):a.setExtent(u[0],u[1])}(r,t,e),n.push(r),t.coordinateSystem=r,r.model=t})),t.eachSeries((function(t){if("polar"===t.get("coordinateSystem")){var e=t.getReferringComponents("polar",Co).models[0];t.coordinateSystem=e.coordinateSystem}})),n}},IN=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function TN(t,e,n){e[1]>e[0]&&(e=e.slice().reverse());var i=t.coordToPoint([e[0],n]),r=t.coordToPoint([e[1],n]);return{x1:i[0],y1:i[1],x2:r[0],y2:r[1]}}function CN(t){return t.getRadiusAxis().inverse?0:1}function DN(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coord-n.coord)-360)<1e-4&&t.pop()}var AN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="PolarAxisPointer",n}return n(e,t),e.prototype.render=function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,i=n.polar,r=i.getRadiusAxis().getExtent(),o=n.getTicksCoords(),a=n.getMinorTicksCoords(),s=z(n.getViewLabels(),(function(t){t=T(t);var e=n.scale,i="ordinal"===e.type?e.getRawOrdinalNumber(t.tickValue):t.tickValue;return t.coord=n.dataToCoord(i),t}));DN(s),DN(o),E(IN,(function(e){!t.get([e,"show"])||n.scale.isBlank()&&"axisLine"!==e||kN[e](this.group,t,i,o,a,r,s)}),this)}},e.type="angleAxis",e}(tI),kN={axisLine:function(t,e,n,i,r,o){var a,s=e.getModel(["axisLine","lineStyle"]),l=CN(n),u=l?0:1;(a=0===o[u]?new hu({shape:{cx:n.cx,cy:n.cy,r:o[l]},style:s.getLineStyle(),z2:1,silent:!0}):new Au({shape:{cx:n.cx,cy:n.cy,r:o[l],r0:o[u]},style:s.getLineStyle(),z2:1,silent:!0})).style.fill=null,t.add(a)},axisTick:function(t,e,n,i,r,o){var a=e.getModel("axisTick"),s=(a.get("inside")?-1:1)*a.get("length"),l=o[CN(n)],u=z(i,(function(t){return new zu({shape:TN(n,[l,l+s],t.coord)})}));t.add(wh(u,{style:k(a.getModel("lineStyle").getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])})}))},minorTick:function(t,e,n,i,r,o){if(r.length){for(var a=e.getModel("axisTick"),s=e.getModel("minorTick"),l=(a.get("inside")?-1:1)*s.get("length"),u=o[CN(n)],h=[],c=0;cf?"left":"right",v=Math.abs(d[1]-g)/p<.3?"middle":d[1]>g?"top":"bottom";if(s&&s[c]){var m=s[c];q(m)&&m.textStyle&&(a=new dc(m.textStyle,l,l.ecModel))}var x=new ks({silent:GM.isLabelSilent(e),style:Uh(a,{x:d[0],y:d[1],fill:a.getTextColor()||e.get(["axisLine","lineStyle","color"]),text:i.formattedLabel,align:y,verticalAlign:v})});if(t.add(x),h){var _=GM.makeAxisEventDataBase(e);_.targetType="axisLabel",_.value=i.rawLabel,Hs(x).eventData=_}}),this)},splitLine:function(t,e,n,i,r,o){var a=e.getModel("splitLine").getModel("lineStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=0;h=0?"p":"n",T=_;m&&(i[s][M]||(i[s][M]={p:_,n:_}),T=i[s][M][I]);var C=void 0,D=void 0,A=void 0,k=void 0;if("radius"===c.dim){var L=c.dataToCoord(S)-_,P=o.dataToCoord(M);Math.abs(L)=k})}}}))}var VN={startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:0}},BN={splitNumber:5},FN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="polar",e}(gg);function GN(t,e){e=e||{};var n=t.coordinateSystem,i=t.axis,r={},o=i.position,a=i.orient,s=n.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};r.position=["vertical"===a?u.vertical[o]:l[0],"horizontal"===a?u.horizontal[o]:l[3]],r.rotation=Math.PI/2*{horizontal:0,vertical:1}[a],r.labelDirection=r.tickDirection=r.nameDirection={top:-1,bottom:1,right:1,left:-1}[o],t.get(["axisTick","inside"])&&(r.tickDirection=-r.tickDirection),it(e.labelInside,t.get(["axisLabel","inside"]))&&(r.labelDirection=-r.labelDirection);var h=e.rotate;return null==h&&(h=t.get(["axisLabel","rotate"])),r.labelRotation="top"===o?-h:h,r.z2=1,r}var WN=["axisLine","axisTickLabel","axisName"],HN=["splitArea","splitLine"],YN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="SingleAxisPointer",n}return n(e,t),e.prototype.render=function(e,n,i,r){var o=this.group;o.removeAll();var a=this._axisGroup;this._axisGroup=new Cr;var s=GN(e),l=new GM(e,s);E(WN,l.add,l),o.add(this._axisGroup),o.add(l.getGroup()),E(HN,(function(t){e.get([t,"show"])&&UN[t](this,this.group,this._axisGroup,e)}),this),Ah(a,this._axisGroup,e),t.prototype.render.call(this,e,n,i,r)},e.prototype.remove=function(){iI(this)},e.type="singleAxis",e}(tI),UN={splitLine:function(t,e,n,i){var r=i.axis;if(!r.scale.isBlank()){var o=i.getModel("splitLine"),a=o.getModel("lineStyle"),s=a.get("color");s=s instanceof Array?s:[s];for(var l=i.coordinateSystem.getRect(),u=r.isHorizontal(),h=[],c=0,p=r.getTicksCoords({tickModel:o}),d=[],f=[],g=0;g=e.y&&t[1]<=e.y+e.height:n.contain(n.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},t.prototype.pointToData=function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},t.prototype.dataToPoint=function(t){var e=this.getAxis(),n=this.getRect(),i=[],r="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),i[r]=e.toGlobalCoord(e.dataToCoord(+t)),i[1-r]=0===r?n.y+n.height/2:n.x+n.width/2,i},t.prototype.convertToPixel=function(t,e,n){return KN(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return KN(e)===this?this.pointToData(n):null},t}();function KN(t){var e=t.seriesModel,n=t.singleAxisModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}var $N={create:function(t,e){var n=[];return t.eachComponent("singleAxis",(function(i,r){var o=new qN(i,t,e);o.name="single_"+r,o.resize(i,e),i.coordinateSystem=o,n.push(o)})),t.eachSeries((function(t){if("singleAxis"===t.get("coordinateSystem")){var e=t.getReferringComponents("singleAxis",Co).models[0];t.coordinateSystem=e&&e.coordinateSystem}})),n},dimensions:jN},JN=["x","y"],QN=["width","height"],tE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.coordinateSystem,s=iE(a,1-nE(o)),l=a.dataToPoint(e)[0],u=i.get("type");if(u&&"none"!==u){var h=NR(i),c=eE[u](o,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}BR(e,t,GN(n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=GN(e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=VR(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.coordinateSystem,a=nE(r),s=iE(o,a),l=[t.x,t.y];l[a]+=e[a],l[a]=Math.min(s[1],l[a]),l[a]=Math.max(s[0],l[a]);var u=iE(o,1-a),h=(u[1]+u[0])/2,c=[h,h];return c[a]=l[a],{x:l[0],y:l[1],rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}},e}(AR),eE={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:FR([e,n[0]],[e,n[1]],nE(t))}},shadow:function(t,e,n){var i=t.getBandWidth(),r=n[1]-n[0];return{type:"Rect",shape:GR([e-i/2,n[0]],[i,r],nE(t))}}};function nE(t){return t.isHorizontal()?0:1}function iE(t,e){var n=t.getRect();return[n[JN[e]],n[JN[e]]+n[QN[e]]]}var rE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="single",e}(gg),oE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e,n,i){var r=Sp(e);t.prototype.init.apply(this,arguments),aE(e,r)},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),aE(this.option,e)},e.prototype.getCellSize=function(){return this.option.cellSize},e.type="calendar",e.defaultOption={z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},e}(Tp);function aE(t,e){var n,i=t.cellSize;1===(n=Y(i)?i:t.cellSize=[i,i]).length&&(n[1]=n[0]);var r=z([0,1],(function(t){return function(t,e){return null!=t[yp[e][0]]||null!=t[yp[e][1]]&&null!=t[yp[e][2]]}(e,t)&&(n[t]="auto"),null!=n[t]&&"auto"!==n[t]}));wp(t,e,{type:"box",ignoreSize:r})}var sE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this.group;i.removeAll();var r=t.coordinateSystem,o=r.getRangeInfo(),a=r.getOrient(),s=e.getLocaleModel();this._renderDayRect(t,o,i),this._renderLines(t,o,a,i),this._renderYearText(t,o,a,i),this._renderMonthText(t,s,a,i),this._renderWeekText(t,s,o,a,i)},e.prototype._renderDayRect=function(t,e,n){for(var i=t.coordinateSystem,r=t.getModel("itemStyle").getItemStyle(),o=i.getCellWidth(),a=i.getCellHeight(),s=e.start.time;s<=e.end.time;s=i.getNextNDay(s,1).time){var l=i.dataToRect([s],!1).tl,u=new Cs({shape:{x:l[0],y:l[1],width:o,height:a},cursor:"default",style:r});n.add(u)}},e.prototype._renderLines=function(t,e,n,i){var r=this,o=t.coordinateSystem,a=t.getModel(["splitLine","lineStyle"]).getLineStyle(),s=t.get(["splitLine","show"]),l=a.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=e.start,h=0;u.time<=e.end.time;h++){p(u.formatedDate),0===h&&(u=o.getDateInfo(e.start.y+"-"+e.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=o.getDateInfo(c)}function p(e){r._firstDayOfMonth.push(o.getDateInfo(e)),r._firstDayPoints.push(o.dataToRect([e],!1).tl);var l=r._getLinePointsOfOneWeek(t,e,n);r._tlpoints.push(l[0]),r._blpoints.push(l[l.length-1]),s&&r._drawSplitline(l,a,i)}p(o.getNextNDay(e.end.time,1).formatedDate),s&&this._drawSplitline(r._getEdgesPoints(r._tlpoints,l,n),a,i),s&&this._drawSplitline(r._getEdgesPoints(r._blpoints,l,n),a,i)},e.prototype._getEdgesPoints=function(t,e,n){var i=[t[0].slice(),t[t.length-1].slice()],r="horizontal"===n?0:1;return i[0][r]=i[0][r]-e/2,i[1][r]=i[1][r]+e/2,i},e.prototype._drawSplitline=function(t,e,n){var i=new Ru({z2:20,shape:{points:t},style:e});n.add(i)},e.prototype._getLinePointsOfOneWeek=function(t,e,n){for(var i=t.coordinateSystem,r=i.getDateInfo(e),o=[],a=0;a<7;a++){var s=i.getNextNDay(r.time,a),l=i.dataToRect([s.time],!1);o[2*s.day]=l.tl,o[2*s.day+1]=l["horizontal"===n?"bl":"tr"]}return o},e.prototype._formatterLabel=function(t,e){return X(t)&&t?(n=t,E(e,(function(t,e){n=n.replace("{"+e+"}",t)})),n):U(t)?t(e):e.nameMap;var n},e.prototype._yearTextPositionControl=function(t,e,n,i,r){var o=e[0],a=e[1],s=["center","bottom"];"bottom"===i?(a+=r,s=["center","top"]):"left"===i?o-=r:"right"===i?(o+=r,s=["center","top"]):a-=r;var l=0;return"left"!==i&&"right"!==i||(l=Math.PI/2),{rotation:l,x:o,y:a,style:{align:s[0],verticalAlign:s[1]}}},e.prototype._renderYearText=function(t,e,n,i){var r=t.getModel("yearLabel");if(r.get("show")){var o=r.get("margin"),a=r.get("position");a||(a="horizontal"!==n?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===n?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},p=e.start.y;+e.end.y>+e.start.y&&(p=p+"-"+e.end.y);var d=r.get("formatter"),f={start:e.start.y,end:e.end.y,nameMap:p},g=this._formatterLabel(d,f),y=new ks({z2:30,style:Uh(r,{text:g})});y.attr(this._yearTextPositionControl(y,c[a],n,a,o)),i.add(y)}},e.prototype._monthTextPositionControl=function(t,e,n,i,r){var o="left",a="top",s=t[0],l=t[1];return"horizontal"===n?(l+=r,e&&(o="center"),"start"===i&&(a="bottom")):(s+=r,e&&(a="middle"),"start"===i&&(o="right")),{x:s,y:l,align:o,verticalAlign:a}},e.prototype._renderMonthText=function(t,e,n,i){var r=t.getModel("monthLabel");if(r.get("show")){var o=r.get("nameMap"),a=r.get("margin"),s=r.get("position"),l=r.get("align"),u=[this._tlpoints,this._blpoints];o&&!X(o)||(o&&(e=Mc(o)||e),o=e.get(["time","monthAbbr"])||[]);var h="start"===s?0:1,c="horizontal"===n?0:1;a="start"===s?-a:a;for(var p="center"===l,d=0;d=i.start.time&&n.timea.end.time&&t.reverse(),t},t.prototype._getRangeInfo=function(t){var e,n=[this.getDateInfo(t[0]),this.getDateInfo(t[1])];n[0].time>n[1].time&&(e=!0,n.reverse());var i=Math.floor(n[1].time/lE)-Math.floor(n[0].time/lE)+1,r=new Date(n[0].time),o=r.getDate(),a=n[1].date.getDate();r.setDate(o+i-1);var s=r.getDate();if(s!==a)for(var l=r.getTime()-n[1].time>0?1:-1;(s=r.getDate())!==a&&(r.getTime()-n[1].time)*l>0;)i-=l,r.setDate(s-l);var u=Math.floor((i+n[0].day+6)/7),h=e?1-u:u-1;return e&&n.reverse(),{range:[n[0].formatedDate,n[1].formatedDate],start:n[0],end:n[1],allDay:i,weeks:u,nthWeek:h,fweek:n[0].day,lweek:n[1].day}},t.prototype._getDateByWeeksAndDay=function(t,e,n){var i=this._getRangeInfo(n);if(t>i.weeks||0===t&&ei.lweek)return null;var r=7*(t-1)-i.fweek+e,o=new Date(i.start.time);return o.setDate(+i.start.d+r),this.getDateInfo(o)},t.create=function(e,n){var i=[];return e.eachComponent("calendar",(function(r){var o=new t(r,e,n);i.push(o),r.coordinateSystem=o})),e.eachSeries((function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])})),i},t.dimensions=["time","value"],t}();function hE(t){var e=t.calendarModel,n=t.seriesModel;return e?e.coordinateSystem:n?n.coordinateSystem:null}function cE(t,e){var n;return E(e,(function(e){null!=t[e]&&"auto"!==t[e]&&(n=!0)})),n}var pE=["transition","enterFrom","leaveTo"],dE=pE.concat(["enterAnimation","updateAnimation","leaveAnimation"]);function fE(t,e,n){if(n&&(!t[n]&&e[n]&&(t[n]={}),t=t[n],e=e[n]),t&&e)for(var i=n?pE:dE,r=0;r=0;l--){var p,d,f;if(f=null!=(d=xo((p=n[l]).id,null))?r.get(d):null){var g=f.parent,y=(c=vE(g),{}),v=_p(f,p,g===i?{width:o,height:a}:{width:c.width,height:c.height},null,{hv:p.hv,boundingMode:p.bounding},y);if(!vE(f).isNew&&v){for(var m=p.transition,x={},_=0;_=0)?x[b]=w:f[b]=w}rh(f,x,t,0)}else f.attr(y)}}},e.prototype._clear=function(){var t=this,e=this._elMap;e.each((function(n){bE(n,vE(n).option,e,t._lastGraphicModel)})),this._elMap=ft()},e.prototype.dispose=function(){this._clear()},e.type="graphic",e}(gg);function xE(t){var n=new(mt(yE,t)?yE[t]:mh(t))({});return vE(n).type=t,n}function _E(t,e,n,i){var r=xE(n);return e.add(r),i.set(t,r),vE(r).id=t,vE(r).isNew=!0,r}function bE(t,e,n,i){t&&t.parent&&("group"===t.type&&t.traverse((function(t){bE(t,e,n,i)})),BO(t,e,i),n.removeKey(vE(t).id))}function wE(t,e,n,i){t.isGroup||E([["cursor",da.prototype.cursor],["zlevel",i||0],["z",n||0],["z2",0]],(function(n){var i=n[0];mt(e,i)?t[i]=rt(e[i],n[1]):null==t[i]&&(t[i]=n[1])})),E(G(e),(function(n){if(0===n.indexOf("on")){var i=e[n];t[n]=U(i)?i:null}})),mt(e,"draggable")&&(t.draggable=e.draggable),null!=e.name&&(t.name=e.name),null!=e.id&&(t.id=e.id)}var SE=["x","y","radius","angle","single"],ME=["cartesian2d","polar","singleAxis"];function IE(t){return t+"Axis"}function CE(t){var e=t.ecModel,n={infoList:[],infoMap:ft()};return t.eachTargetAxis((function(t,i){var r=e.getComponent(IE(t),i);if(r){var o=r.getCoordSysModel();if(o){var a=o.uid,s=n.infoMap.get(a);s||(s={model:o,axisModels:[]},n.infoList.push(s),n.infoMap.set(a,s)),s.axisModels.push(r)}}})),n}var DE=function(){function t(){this.indexList=[],this.indexMap=[]}return t.prototype.add=function(t){this.indexMap[t]||(this.indexList.push(t),this.indexMap[t]=!0)},t}(),AE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._autoThrottle=!0,n._noTarget=!0,n._rangePropMode=["percent","percent"],n}return n(e,t),e.prototype.init=function(t,e,n){var i=kE(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this._doInit(i)},e.prototype.mergeOption=function(t){var e=kE(t);C(this.option,t,!0),C(this.settledOption,e,!0),this._doInit(e)},e.prototype._doInit=function(t){var e=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var n=this.settledOption;E([["start","startValue"],["end","endValue"]],(function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=n[t[0]]=null)}),this),this._resetTarget()},e.prototype._resetTarget=function(){var t=this.get("orient",!0),e=this._targetAxisInfoMap=ft();this._fillSpecifiedTargetAxis(e)?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(e,this._orient)),this._noTarget=!0,e.each((function(t){t.indexList.length&&(this._noTarget=!1)}),this)},e.prototype._fillSpecifiedTargetAxis=function(t){var e=!1;return E(SE,(function(n){var i=this.getReferringComponents(IE(n),Do);if(i.specified){e=!0;var r=new DE;E(i.models,(function(t){r.add(t.componentIndex)})),t.set(n,r)}}),this),e},e.prototype._fillAutoTargetAxisByOrient=function(t,e){var n=this.ecModel,i=!0;if(i){var r="vertical"===e?"y":"x";o(n.findComponents({mainType:r+"Axis"}),r)}function o(e,n){var r=e[0];if(r){var o=new DE;if(o.add(r.componentIndex),t.set(n,o),i=!1,"x"===n||"y"===n){var a=r.getReferringComponents("grid",Co).models[0];a&&E(e,(function(t){r.componentIndex!==t.componentIndex&&a===t.getReferringComponents("grid",Co).models[0]&&o.add(t.componentIndex)}))}}}i&&o(n.findComponents({mainType:"singleAxis",filter:function(t){return t.get("orient",!0)===e}}),"single"),i&&E(SE,(function(e){if(i){var r=n.findComponents({mainType:IE(e),filter:function(t){return"category"===t.get("type",!0)}});if(r[0]){var o=new DE;o.add(r[0].componentIndex),t.set(e,o),i=!1}}}),this)},e.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis((function(e){!t&&(t=e)}),this),"y"===t?"vertical":"horizontal"},e.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var e=this.ecModel.option;this.option.throttle=e.animation&&e.animationDurationUpdate>0?100:20}},e.prototype._updateRangeUse=function(t){var e=this._rangePropMode,n=this.get("rangeMode");E([["start","startValue"],["end","endValue"]],(function(i,r){var o=null!=t[i[0]],a=null!=t[i[1]];o&&!a?e[r]="percent":!o&&a?e[r]="value":n?e[r]=n[r]:o&&(e[r]="percent")}))},e.prototype.noTarget=function(){return this._noTarget},e.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis((function(e,n){null==t&&(t=this.ecModel.getComponent(IE(e),n))}),this),t},e.prototype.eachTargetAxis=function(t,e){this._targetAxisInfoMap.each((function(n,i){E(n.indexList,(function(n){t.call(e,i,n)}))}))},e.prototype.getAxisProxy=function(t,e){var n=this.getAxisModel(t,e);if(n)return n.__dzAxisProxy},e.prototype.getAxisModel=function(t,e){var n=this._targetAxisInfoMap.get(t);if(n&&n.indexMap[e])return this.ecModel.getComponent(IE(t),e)},e.prototype.setRawRange=function(t){var e=this.option,n=this.settledOption;E([["start","startValue"],["end","endValue"]],(function(i){null==t[i[0]]&&null==t[i[1]]||(e[i[0]]=n[i[0]]=t[i[0]],e[i[1]]=n[i[1]]=t[i[1]])}),this),this._updateRangeUse(t)},e.prototype.setCalculatedRange=function(t){var e=this.option;E(["start","startValue","end","endValue"],(function(n){e[n]=t[n]}))},e.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},e.prototype.getValueRange=function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},e.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var e,n=this._targetAxisInfoMap.keys(),i=0;i=0}(e)){var n=IE(this._dimName),i=e.getReferringComponents(n,Co).models[0];i&&this._axisIndex===i.componentIndex&&t.push(e)}}),this),t},t.prototype.getAxisModel=function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},t.prototype.getMinMaxSpan=function(){return T(this._minMaxSpan)},t.prototype.calculateDataWindow=function(t){var e,n=this._dataExtent,i=this.getAxisModel().axis.scale,r=this._dataZoomModel.getRangePropMode(),o=[0,100],a=[],s=[];RE(["start","end"],(function(l,u){var h=t[l],c=t[l+"Value"];"percent"===r[u]?(null==h&&(h=o[u]),c=i.parse(Nr(h,o,n))):(e=!0,h=Nr(c=null==c?n[u]:i.parse(c),n,o)),s[u]=c,a[u]=h})),NE(s),NE(a);var l=this._minMaxSpan;function u(t,e,n,r,o){var a=o?"Span":"ValueSpan";lk(0,t,n,"all",l["min"+a],l["max"+a]);for(var s=0;s<2;s++)e[s]=Nr(t[s],n,r,!0),o&&(e[s]=i.parse(e[s]))}return e?u(s,a,n,o,!1):u(a,s,o,n,!0),{valueWindow:s,percentWindow:a}},t.prototype.reset=function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=function(t,e,n){var i=[1/0,-1/0];RE(n,(function(t){!function(t,e,n){e&&E(c_(e,n),(function(n){var i=e.getApproximateExtent(n);i[0]t[1]&&(t[1]=i[1])}))}(i,t.getData(),e)}));var r=t.getAxisModel(),o=e_(r.axis.scale,r,i).calculate();return[o.min,o.max]}(this,this._dimName,e),this._updateMinMaxSpan();var n=this.calculateDataWindow(t.settledOption);this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,this._setAxisModel()}},t.prototype.filterData=function(t,e){if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow;"none"!==r&&RE(i,(function(t){var e=t.getData(),i=e.mapDimensionsAll(n);if(i.length){if("weakFilter"===r){var a=e.getStore(),s=z(i,(function(t){return e.getDimensionIndex(t)}),e);e.filterSelf((function(t){for(var e,n,r,l=0;lo[1];if(h&&!c&&!p)return!0;h&&(r=!0),c&&(e=!0),p&&(n=!0)}return r&&e&&n}))}else RE(i,(function(n){if("empty"===r)t.setData(e=e.map(n,(function(t){return function(t){return t>=o[0]&&t<=o[1]}(t)?t:NaN})));else{var i={};i[n]=o,e.selectRange(i)}}));RE(i,(function(t){e.setApproximateExtent(o,t)}))}}))}},t.prototype._updateMinMaxSpan=function(){var t=this._minMaxSpan={},e=this._dataZoomModel,n=this._dataExtent;RE(["min","max"],(function(i){var r=e.get(i+"Span"),o=e.get(i+"ValueSpan");null!=o&&(o=this.getAxisModel().axis.scale.parse(o)),null!=o?r=Nr(n[0]+o,n,[0,100],!0):null!=r&&(o=Nr(r,[0,100],n,!0)-n[0]),t[i+"Span"]=r,t[i+"ValueSpan"]=o}),this)},t.prototype._setAxisModel=function(){var t=this.getAxisModel(),e=this._percentWindow,n=this._valueWindow;if(e){var i=Gr(n,[0,500]);i=Math.min(i,20);var r=t.axis.scale.rawExtentInfo;0!==e[0]&&r.setDeterminedMinMax("min",+n[0].toFixed(i)),100!==e[1]&&r.setDeterminedMinMax("max",+n[1].toFixed(i)),r.freeze()}},t}(),zE={getTargetSeries:function(t){function e(e){t.eachComponent("dataZoom",(function(n){n.eachTargetAxis((function(i,r){var o=t.getComponent(IE(i),r);e(i,r,o,n)}))}))}e((function(t,e,n,i){n.__dzAxisProxy=null}));var n=[];e((function(e,i,r,o){r.__dzAxisProxy||(r.__dzAxisProxy=new EE(e,i,o,t),n.push(r.__dzAxisProxy))}));var i=ft();return E(n,(function(t){E(t.getTargetSeriesModels(),(function(t){i.set(t.uid,t)}))})),i},overallReset:function(t,e){t.eachComponent("dataZoom",(function(t){t.eachTargetAxis((function(e,n){t.getAxisProxy(e,n).reset(t)})),t.eachTargetAxis((function(n,i){t.getAxisProxy(n,i).filterData(t,e)}))})),t.eachComponent("dataZoom",(function(t){var e=t.findRepresentativeAxisProxy();if(e){var n=e.getDataPercentWindow(),i=e.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})}}))}},VE=!1;function BE(t){VE||(VE=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,zE),function(t){t.registerAction("dataZoom",(function(t,e){E(function(t,e){var n,i=ft(),r=[],o=ft();t.eachComponent({mainType:"dataZoom",query:e},(function(t){o.get(t.uid)||s(t)}));do{n=!1,t.eachComponent("dataZoom",a)}while(n);function a(t){!o.get(t.uid)&&function(t){var e=!1;return t.eachTargetAxis((function(t,n){var r=i.get(t);r&&r[n]&&(e=!0)})),e}(t)&&(s(t),n=!0)}function s(t){o.set(t.uid,!0),r.push(t),t.eachTargetAxis((function(t,e){(i.get(t)||i.set(t,[]))[e]=!0}))}return r}(e,t),(function(e){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})}))}))}(t),t.registerSubTypeDefaulter("dataZoom",(function(){return"slider"})))}function FE(t){t.registerComponentModel(LE),t.registerComponentView(OE),BE(t)}var GE=function(){},WE={};function HE(t,e){WE[t]=e}function YE(t){return WE[t]}var UE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){t.prototype.optionUpdated.apply(this,arguments);var e=this.ecModel;E(this.option.feature,(function(t,n){var i=YE(n);i&&(i.getDefaultOption&&(i.defaultOption=i.getDefaultOption(e)),C(t,i.defaultOption))}))},e.type="toolbox",e.layoutMode={type:"box",ignoreSize:!0},e.defaultOption={show:!0,z:6,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},e}(Tp);function XE(t,e){var n=ip(e.get("padding")),i=e.getItemStyle(["color","opacity"]);return i.fill=e.get("backgroundColor"),new Cs({shape:{x:t.x-n[3],y:t.y-n[0],width:t.width+n[1]+n[3],height:t.height+n[0]+n[2],r:e.get("borderRadius")},style:i,silent:!0,z2:-1})}var ZE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this.group;if(r.removeAll(),t.get("show")){var o=+t.get("itemSize"),a="vertical"===t.get("orient"),s=t.get("feature")||{},l=this._features||(this._features={}),u=[];E(s,(function(t,e){u.push(e)})),new Im(this._featureNames||[],u).add(h).update(h).remove(H(h,null)).execute(),this._featureNames=u,function(t,e,n){var i=e.getBoxLayoutParams(),r=e.get("padding"),o={width:n.getWidth(),height:n.getHeight()},a=xp(i,o,r);mp(e.get("orient"),t,e.get("itemGap"),a.width,a.height),_p(t,i,o,r)}(r,t,n),r.add(XE(r.getBoundingRect(),t)),a||r.eachChild((function(t){var e=t.__title,i=t.ensureState("emphasis"),a=i.textConfig||(i.textConfig={}),s=t.getTextContent(),l=s&&s.ensureState("emphasis");if(l&&!U(l)&&e){var u=l.style||(l.style={}),h=cr(e,ks.makeFont(u)),c=t.x+r.x,p=!1;t.y+r.y+o+h.height>n.getHeight()&&(a.position="top",p=!0);var d=p?-5-h.height:o+10;c+h.width/2>n.getWidth()?(a.position=["100%",d],u.align="right"):c-h.width/2<0&&(a.position=[0,d],u.align="left")}}))}function h(h,c){var p,d=u[h],f=u[c],g=s[d],y=new dc(g,t,t.ecModel);if(i&&null!=i.newTitle&&i.featureName===d&&(g.title=i.newTitle),d&&!f){if(function(t){return 0===t.indexOf("my")}(d))p={onclick:y.option.onclick,featureName:d};else{var v=YE(d);if(!v)return;p=new v}l[d]=p}else if(!(p=l[f]))return;p.uid=gc("toolbox-feature"),p.model=y,p.ecModel=e,p.api=n;var m=p instanceof GE;d||!f?!y.get("show")||m&&p.unusable?m&&p.remove&&p.remove(e,n):(function(i,s,l){var u,h,c=i.getModel("iconStyle"),p=i.getModel(["emphasis","iconStyle"]),d=s instanceof GE&&s.getIcons?s.getIcons():i.get("icon"),f=i.get("title")||{};X(d)?(u={})[l]=d:u=d,X(f)?(h={})[l]=f:h=f;var g=i.iconPaths={};E(u,(function(l,u){var d=Ph(l,{},{x:-o/2,y:-o/2,width:o,height:o});d.setStyle(c.getItemStyle()),d.ensureState("emphasis").style=p.getItemStyle();var f=new ks({style:{text:h[u],align:p.get("textAlign"),borderRadius:p.get("textBorderRadius"),padding:p.get("textPadding"),fill:null},ignore:!0});d.setTextContent(f),Eh({el:d,componentModel:t,itemName:u,formatterParamsExtra:{title:h[u]}}),d.__title=h[u],d.on("mouseover",(function(){var e=p.getItemStyle(),i=a?null==t.get("right")&&"right"!==t.get("left")?"right":"left":null==t.get("bottom")&&"bottom"!==t.get("top")?"bottom":"top";f.setStyle({fill:p.get("textFill")||e.fill||e.stroke||"#000",backgroundColor:p.get("textBackgroundColor")}),d.setTextConfig({position:p.get("textPosition")||i}),f.ignore=!t.get("showTitle"),n.enterEmphasis(this)})).on("mouseout",(function(){"emphasis"!==i.get(["iconStatus",u])&&n.leaveEmphasis(this),f.hide()})),("emphasis"===i.get(["iconStatus",u])?_l:bl)(d),r.add(d),d.on("click",W(s.onclick,s,e,n,u)),g[u]=d}))}(y,p,d),y.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&("emphasis"===e?_l:bl)(i[t])},p instanceof GE&&p.render&&p.render(y,e,n,i)):m&&p.dispose&&p.dispose(e,n)}},e.prototype.updateView=function(t,e,n,i){E(this._features,(function(t){t instanceof GE&&t.updateView&&t.updateView(t.model,e,n,i)}))},e.prototype.remove=function(t,e){E(this._features,(function(n){n instanceof GE&&n.remove&&n.remove(t,e)})),this.group.removeAll()},e.prototype.dispose=function(t,e){E(this._features,(function(n){n instanceof GE&&n.dispose&&n.dispose(t,e)}))},e.type="toolbox",e}(gg),jE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",o="svg"===e.getZr().painter.getType(),a=o?"svg":n.get("type",!0)||"png",s=e.getConnectedDataURL({type:a,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")}),l=r.browser;if(U(MouseEvent)&&(l.newEdge||!l.ie&&!l.edge)){var u=document.createElement("a");u.download=i+"."+a,u.target="_blank",u.href=s;var h=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});u.dispatchEvent(h)}else if(window.navigator.msSaveOrOpenBlob||o){var c=s.split(","),p=c[0].indexOf("base64")>-1,d=o?decodeURIComponent(c[1]):c[1];p&&(d=window.atob(d));var f=i+"."+a;if(window.navigator.msSaveOrOpenBlob){for(var g=d.length,y=new Uint8Array(g);g--;)y[g]=d.charCodeAt(g);var v=new Blob([y]);window.navigator.msSaveOrOpenBlob(v,f)}else{var m=document.createElement("iframe");document.body.appendChild(m);var x=m.contentWindow,_=x.document;_.open("image/svg+xml","replace"),_.write(d),_.close(),x.focus(),_.execCommand("SaveAs",!0,f),document.body.removeChild(m)}}else{var b=n.get("lang"),w='',S=window.open();S.document.write(w),S.document.title=i}},e.getDefaultOption=function(t){return{show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocaleModel().get(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocaleModel().get(["toolbox","saveAsImage","lang"])}},e}(GE),qE="__ec_magicType_stack__",KE=[["line","bar"],["stack"]],$E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return E(t.get("type"),(function(t){e[t]&&(n[t]=e[t])})),n},e.getDefaultOption=function(t){return{show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocaleModel().get(["toolbox","magicType","title"]),option:{},seriesIndex:{}}},e.prototype.onclick=function(t,e,n){var i=this.model,r=i.get(["seriesIndex",n]);if(JE[n]){var o,a={series:[]};E(KE,(function(t){P(t,n)>=0&&E(t,(function(t){i.setIconStatus(t,"normal")}))})),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:null==r?null:{seriesIndex:r}},(function(t){var e=t.subType,r=t.id,o=JE[n](e,r,t,i);o&&(k(o,t.option),a.series.push(o));var s=t.coordinateSystem;if(s&&"cartesian2d"===s.type&&("line"===n||"bar"===n)){var l=s.getAxesByScale("ordinal")[0];if(l){var u=l.dim+"Axis",h=t.getReferringComponents(u,Co).models[0].componentIndex;a[u]=a[u]||[];for(var c=0;c<=h;c++)a[u][h]=a[u][h]||{};a[u][h].boundaryGap="bar"===n}}}));var s=n;"stack"===n&&(o=C({stack:i.option.title.tiled,tiled:i.option.title.stack},i.option.title),"emphasis"!==i.get(["iconStatus",n])&&(s="tiled")),e.dispatchAction({type:"changeMagicType",currentType:s,newOption:a,newTitle:o,featureName:"magicType"})}},e}(GE),JE={line:function(t,e,n,i){if("bar"===t)return C({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","line"])||{},!0)},bar:function(t,e,n,i){if("line"===t)return C({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","bar"])||{},!0)},stack:function(t,e,n,i){var r=n.get("stack")===qE;if("line"===t||"bar"===t)return i.setIconStatus("stack",r?"normal":"emphasis"),C({id:e,stack:r?"":qE},i.get(["option","stack"])||{},!0)}};cm({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},(function(t,e){e.mergeOption(t.newOption)}));var QE=new Array(60).join("-");function ez(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}var nz=new RegExp("[\t]+","g");var rz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){setTimeout((function(){e.dispatchAction({type:"hideTip"})}));var n=e.getDom(),i=this.model;this._dom&&n.removeChild(this._dom);var r=document.createElement("div");r.style.cssText="position:absolute;top:0;bottom:0;left:0;right:0;padding:5px",r.style.backgroundColor=i.get("backgroundColor")||"#fff";var o=document.createElement("h4"),a=i.get("lang")||[];o.innerHTML=a[0]||i.get("title"),o.style.cssText="margin:10px 20px",o.style.color=i.get("textColor");var s=document.createElement("div"),l=document.createElement("textarea");s.style.cssText="overflow:auto";var u=i.get("optionToContent"),h=i.get("contentToOption"),c=function(t){var e,n,i,r=function(t){var e={},n=[],i=[];return t.eachRawSeries((function(t){var r=t.coordinateSystem;if(!r||"cartesian2d"!==r.type&&"polar"!==r.type)n.push(t);else{var o=r.getBaseAxis();if("category"===o.type){var a=o.dim+"_"+o.index;e[a]||(e[a]={categoryAxis:o,valueAxis:r.getOtherAxis(o),series:[]},i.push({axisDim:o.dim,axisIndex:o.index})),e[a].series.push(t)}else n.push(t)}})),{seriesGroupByCategoryAxis:e,other:n,meta:i}}(t);return{value:B([(n=r.seriesGroupByCategoryAxis,i=[],E(n,(function(t,e){var n=t.categoryAxis,r=t.valueAxis.dim,o=[" "].concat(z(t.series,(function(t){return t.name}))),a=[n.model.getCategories()];E(t.series,(function(t){var e=t.getRawData();a.push(t.getRawData().mapArray(e.mapDimension(r),(function(t){return t})))}));for(var s=[o.join("\t")],l=0;l=0)return!0}(t)){var r=function(t){for(var e=t.split(/\n+/g),n=[],i=z(ez(e.shift()).split(nz),(function(t){return{name:t,data:[]}})),r=0;r=0)&&t(r,i._targetInfoList)}))}return t.prototype.setOutputRanges=function(t,e){return this.matchOutputRanges(t,e,(function(t,e,n){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var i=vz[t.brushType](0,n,e);t.__rangeOffset={offset:xz[t.brushType](i.values,t.range,[1,1]),xyMinMax:i.xyMinMax}}})),t},t.prototype.matchOutputRanges=function(t,e,n){E(t,(function(t){var i=this.findTargetInfo(t,e);i&&!0!==i&&E(i.coordSyses,(function(i){var r=vz[t.brushType](1,i,t.range,!0);n(t,r.values,i,e)}))}),this)},t.prototype.setInputRanges=function(t,e){E(t,(function(t){var n,i,r,o,a,s=this.findTargetInfo(t,e);if(t.range=t.range||[],s&&!0!==s){t.panelId=s.panelId;var l=vz[t.brushType](0,s.coordSys,t.coordRange),u=t.__rangeOffset;t.range=u?xz[t.brushType](l.values,u.offset,(n=l.xyMinMax,i=u.xyMinMax,r=bz(n),o=bz(i),a=[r[0]/o[0],r[1]/o[1]],isNaN(a[0])&&(a[0]=1),isNaN(a[1])&&(a[1]=1),a)):l.values}}),this)},t.prototype.makePanelOpts=function(t,e){return z(this._targetInfoList,(function(n){var i=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:e?e(n):null,clipPath:hL(i),isTargetByCursor:pL(i,t,n.coordSysModel),getLinearBrushOtherExtent:cL(i)}}))},t.prototype.controlSeries=function(t,e,n){var i=this.findTargetInfo(t,n);return!0===i||i&&P(i.coordSyses,e.coordinateSystem)>=0},t.prototype.findTargetInfo=function(t,e){for(var n=this._targetInfoList,i=dz(e,t),r=0;rt[1]&&t.reverse(),t}function dz(t,e){return Io(t,e,{includeMainTypes:hz})}var fz={grid:function(t,e){var n=t.xAxisModels,i=t.yAxisModels,r=t.gridModels,o=ft(),a={},s={};(n||i||r)&&(E(n,(function(t){var e=t.axis.grid.model;o.set(e.id,e),a[e.id]=!0})),E(i,(function(t){var e=t.axis.grid.model;o.set(e.id,e),s[e.id]=!0})),E(r,(function(t){o.set(t.id,t),a[t.id]=!0,s[t.id]=!0})),o.each((function(t){var r=t.coordinateSystem,o=[];E(r.getCartesians(),(function(t,e){(P(n,t.getAxis("x").model)>=0||P(i,t.getAxis("y").model)>=0)&&o.push(t)})),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:o[0],coordSyses:o,getPanelRect:yz.grid,xAxisDeclared:a[t.id],yAxisDeclared:s[t.id]})})))},geo:function(t,e){E(t.geoModels,(function(t){var n=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:n,coordSyses:[n],getPanelRect:yz.geo})}))}},gz=[function(t,e){var n=t.xAxisModel,i=t.yAxisModel,r=t.gridModel;return!r&&n&&(r=n.axis.grid.model),!r&&i&&(r=i.axis.grid.model),r&&r===e.gridModel},function(t,e){var n=t.geoModel;return n&&n===e.geoModel}],yz={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ih(t)),e}},vz={lineX:H(mz,0),lineY:H(mz,1),rect:function(t,e,n,i){var r=t?e.pointToData([n[0][0],n[1][0]],i):e.dataToPoint([n[0][0],n[1][0]],i),o=t?e.pointToData([n[0][1],n[1][1]],i):e.dataToPoint([n[0][1],n[1][1]],i),a=[pz([r[0],o[0]]),pz([r[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,n,i){var r=[[1/0,-1/0],[1/0,-1/0]];return{values:z(n,(function(n){var o=t?e.pointToData(n,i):e.dataToPoint(n,i);return r[0][0]=Math.min(r[0][0],o[0]),r[1][0]=Math.min(r[1][0],o[1]),r[0][1]=Math.max(r[0][1],o[0]),r[1][1]=Math.max(r[1][1],o[1]),o})),xyMinMax:r}}};function mz(t,e,n,i){var r=n.getAxis(["x","y"][t]),o=pz(z([0,1],(function(t){return e?r.coordToData(r.toLocalCoord(i[t]),!0):r.toGlobalCoord(r.dataToCoord(i[t]))}))),a=[];return a[t]=o,a[1-t]=[NaN,NaN],{values:o,xyMinMax:a}}var xz={lineX:H(_z,0),lineY:H(_z,1),rect:function(t,e,n){return[[t[0][0]-n[0]*e[0][0],t[0][1]-n[0]*e[0][1]],[t[1][0]-n[1]*e[1][0],t[1][1]-n[1]*e[1][1]]]},polygon:function(t,e,n){return z(t,(function(t,i){return[t[0]-n[0]*e[i][0],t[1]-n[1]*e[i][1]]}))}};function _z(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function bz(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var wz,Sz,Mz=E,Iz=uo+"toolbox-dataZoom_",Tz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){this._brushController||(this._brushController=new Ok(n.getZr()),this._brushController.on("brush",W(this._onBrush,this)).mount()),function(t,e,n,i,r){var o=n._isZoomActive;i&&"takeGlobalCursor"===i.type&&(o="dataZoomSelect"===i.key&&i.dataZoomSelectActive),n._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var a=new cz(Dz(t),e,{include:["grid"]}).makePanelOpts(r,(function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"}));n._brushController.setPanels(a).enableBrush(!(!o||!a.length)&&{brushType:"auto",brushStyle:t.getModel("brushStyle").getItemStyle()})}(t,e,this,i,n),function(t,e){t.setIconStatus("back",function(t){return lz(t).length}(e)>1?"emphasis":"normal")}(t,e)},e.prototype.onclick=function(t,e,n){Cz[n].call(this)},e.prototype.remove=function(t,e){this._brushController&&this._brushController.unmount()},e.prototype.dispose=function(t,e){this._brushController&&this._brushController.dispose()},e.prototype._onBrush=function(t){var e=t.areas;if(t.isEnd&&e.length){var n={},i=this.ecModel;this._brushController.updateCovers([]),new cz(Dz(this.model),i,{include:["grid"]}).matchOutputRanges(e,i,(function(t,e,n){if("cartesian2d"===n.type){var i=t.brushType;"rect"===i?(r("x",n,e[0]),r("y",n,e[1])):r({lineX:"x",lineY:"y"}[i],n,e)}})),function(t,e){var n=lz(t);az(e,(function(e,i){for(var r=n.length-1;r>=0&&!n[r][i];r--);if(r<0){var o=t.queryComponents({mainType:"dataZoom",subType:"select",id:i})[0];if(o){var a=o.getPercentRange();n[0][i]={dataZoomId:i,start:a[0],end:a[1]}}}})),n.push(e)}(i,n),this._dispatchZoomAction(n)}function r(t,e,r){var o=e.getAxis(t),a=o.model,s=function(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},(function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)})),i}(t,a,i),l=s.findRepresentativeAxisProxy(a).getMinMaxSpan();null==l.minValueSpan&&null==l.maxValueSpan||(r=lk(0,r.slice(),o.scale.getExtent(),0,l.minValueSpan,l.maxValueSpan)),s&&(n[s.id]={dataZoomId:s.id,startValue:r[0],endValue:r[1]})}},e.prototype._dispatchZoomAction=function(t){var e=[];Mz(t,(function(t,n){e.push(T(t))})),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},e.getDefaultOption=function(t){return{show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocaleModel().get(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}}},e}(GE),Cz={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(function(t){var e=lz(t),n=e[e.length-1];e.length>1&&e.pop();var i={};return az(n,(function(t,n){for(var r=e.length-1;r>=0;r--)if(t=e[r][n]){i[n]=t;break}})),i}(this.ecModel))}};function Dz(t){var e={xAxisIndex:t.get("xAxisIndex",!0),yAxisIndex:t.get("yAxisIndex",!0),xAxisId:t.get("xAxisId",!0),yAxisId:t.get("yAxisId",!0)};return null==e.xAxisIndex&&null==e.xAxisId&&(e.xAxisIndex="all"),null==e.yAxisIndex&&null==e.yAxisId&&(e.yAxisIndex="all"),e}wz="dataZoom",Sz=function(t){var e=t.getComponent("toolbox",0),n=["feature","dataZoom"];if(e&&null!=e.get(n)){var i=e.getModel(n),r=[],o=Io(t,Dz(i));return Mz(o.xAxisModels,(function(t){return a(t,"xAxis","xAxisIndex")})),Mz(o.yAxisModels,(function(t){return a(t,"yAxis","yAxisIndex")})),r}function a(t,e,n){var o=t.componentIndex,a={type:"select",$fromToolbox:!0,filterMode:i.get("filterMode",!0)||"filter",id:Iz+e+o};a[n]=o,r.push(a)}},lt(null==jp.get(wz)&&Sz),jp.set(wz,Sz);var Az=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="tooltip",e.dependencies=["axisPointer"],e.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}},e}(Tp);function kz(t){var e=t.get("confine");return null!=e?!!e:"richText"===t.get("renderMode")}function Lz(t){if(r.domSupported)for(var e=document.documentElement.style,n=0,i=t.length;n-1?(u+="top:50%",h+="translateY(-50%) rotate("+(a="left"===s?-225:-45)+"deg)"):(u+="left:50%",h+="translateX(-50%) rotate("+(a="top"===s?225:45)+"deg)");var c=a*Math.PI/180,p=l+r,d=p*Math.abs(Math.cos(c))+p*Math.abs(Math.sin(c)),f=e+" solid "+r+"px;";return'
'}(n,i,r)),X(t))o.innerHTML=t+a;else if(t){o.innerHTML="",Y(t)||(t=[t]);for(var s=0;s=0?this._tryShow(n,i):"leave"===e&&this._hide(i))}),this))},e.prototype._keepShow=function(){var t=this._tooltipModel,e=this._ecModel,n=this._api,i=t.get("triggerOn");if(null!=this._lastX&&null!=this._lastY&&"none"!==i&&"click"!==i){var r=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout((function(){!n.isDisposed()&&r.manuallyShowTip(t,e,n,{x:r._lastX,y:r._lastY,dataByCoordSys:r._lastDataByCoordSys})}))}},e.prototype.manuallyShowTip=function(t,e,n,i){if(i.from!==this.uid&&!r.node&&n.getDom()){var o=jz(i,n);this._ticket="";var a=i.dataByCoordSys,s=function(t,e,n){var i=To(t).queryOptionMap,r=i.keys()[0];if(r&&"series"!==r){var o,a=Ao(e,r,i.get(r),{useDefault:!1,enableAll:!1,enableNone:!1}).models[0];if(a)return n.getViewOfComponentModel(a).group.traverse((function(e){var n=Hs(e).tooltipConfig;if(n&&n.name===t.name)return o=e,!0})),o?{componentMainType:r,componentIndex:a.componentIndex,el:o}:void 0}}(i,e,n);if(s){var l=s.el.getBoundingRect().clone();l.applyTransform(s.el.transform),this._tryShow({offsetX:l.x+l.width/2,offsetY:l.y+l.height/2,target:s.el,position:i.position,positionDefault:"bottom"},o)}else if(i.tooltip&&null!=i.x&&null!=i.y){var u=Uz;u.x=i.x,u.y=i.y,u.update(),Hs(u).tooltipConfig={name:null,option:i.tooltip},this._tryShow({offsetX:i.x,offsetY:i.y,target:u},o)}else if(a)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:a,tooltipOption:i.tooltipOption},o);else if(null!=i.seriesIndex){if(this._manuallyAxisShowTip(t,e,n,i))return;var h=eN(i,e),c=h.point[0],p=h.point[1];null!=c&&null!=p&&this._tryShow({offsetX:c,offsetY:p,target:h.el,position:i.position,positionDefault:"bottom"},o)}else null!=i.x&&null!=i.y&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},o))}},e.prototype.manuallyHideTip=function(t,e,n,i){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,i.from!==this.uid&&this._hide(jz(i,n))},e.prototype._manuallyAxisShowTip=function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=e.getSeriesByIndex(r);if(s&&"axis"===Zz([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model],this._tooltipModel).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},e.prototype._tryShow=function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;if(i&&i.length)this._showAxisTooltip(i,t);else if(n){var r,o;this._lastDataByCoordSys=null,xy(n,(function(t){return null!=Hs(t).dataIndex?(r=t,!0):null!=Hs(t).tooltipConfig?(o=t,!0):void 0}),!0),r?this._showSeriesItemTooltip(t,r,e):o?this._showComponentItemTooltip(t,o,e):this._hide(e)}else this._lastDataByCoordSys=null,this._hide(e)}},e.prototype._showOrMove=function(t,e){var n=t.get("showDelay");e=W(e,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(e,n):e()},e.prototype._showAxisTooltip=function(t,e){var n=this._ecModel,i=this._tooltipModel,r=[e.offsetX,e.offsetY],o=Zz([e.tooltipOption],i),a=this._renderMode,s=[],l=Xf("section",{blocks:[],noHeader:!0}),u=[],h=new ig;E(t,(function(t){E(t.dataByAxis,(function(t){var e=n.getComponent(t.axisDim+"Axis",t.axisIndex),r=t.value;if(e&&null!=r){var o=zR(r,e.axis,n,t.seriesDataIndices,t.valueLabelOpt),c=Xf("section",{header:o,noHeader:!ut(o),sortBlocks:!0,blocks:[]});l.blocks.push(c),E(t.seriesDataIndices,(function(l){var p=n.getSeriesByIndex(l.seriesIndex),d=l.dataIndexInside,f=p.getDataParams(d);if(!(f.dataIndex<0)){f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=s_(e.axis,{value:r}),f.axisValueLabel=o,f.marker=h.makeTooltipMarker("item",pp(f.color),a);var g=uf(p.formatTooltip(d,!0,null)),y=g.frag;if(y){var v=Zz([p],i).get("valueFormatter");c.blocks.push(v?A({valueFormatter:v},y):y)}g.text&&u.push(g.text),s.push(f)}}))}}))})),l.blocks.reverse(),u.reverse();var c=e.position,p=o.get("order"),d=Jf(l,h,a,p,n.get("useUTC"),o.get("textStyle"));d&&u.unshift(d);var f="richText"===a?"\n\n":"
",g=u.join(f);this._showOrMove(o,(function(){this._updateContentNotChangedOnAxis(t,s)?this._updatePosition(o,c,r[0],r[1],this._tooltipContent,s):this._showTooltipContent(o,g,s,Math.random()+"",r[0],r[1],c,null,h)}))},e.prototype._showSeriesItemTooltip=function(t,e,n){var i=this._ecModel,r=Hs(e),o=r.seriesIndex,a=i.getSeriesByIndex(o),s=r.dataModel||a,l=r.dataIndex,u=r.dataType,h=s.getData(u),c=this._renderMode,p=t.positionDefault,d=Zz([h.getItemModel(l),s,a&&(a.coordinateSystem||{}).model],this._tooltipModel,p?{position:p}:null),f=d.get("trigger");if(null==f||"item"===f){var g=s.getDataParams(l,u),y=new ig;g.marker=y.makeTooltipMarker("item",pp(g.color),c);var v=uf(s.formatTooltip(l,!1,u)),m=d.get("order"),x=d.get("valueFormatter"),_=v.frag,b=_?Jf(x?A({valueFormatter:x},_):_,y,c,m,i.get("useUTC"),d.get("textStyle")):v.text,w="item_"+s.name+"_"+l;this._showOrMove(d,(function(){this._showTooltipContent(d,b,g,w,t.offsetX,t.offsetY,t.position,t.target,y)})),n({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:o,from:this.uid})}},e.prototype._showComponentItemTooltip=function(t,e,n){var i=Hs(e),r=i.tooltipConfig.option||{};X(r)&&(r={content:r,formatter:r});var o=[r],a=this._ecModel.getComponent(i.componentMainType,i.componentIndex);a&&o.push(a),o.push({formatter:r.content});var s=t.positionDefault,l=Zz(o,this._tooltipModel,s?{position:s}:null),u=l.get("content"),h=Math.random()+"",c=new ig;this._showOrMove(l,(function(){var n=T(l.get("formatterParams")||{});this._showTooltipContent(l,u,n,h,t.offsetX,t.offsetY,t.position,e,c)})),n({type:"showTip",from:this.uid})},e.prototype._showTooltipContent=function(t,e,n,i,r,o,a,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent;u.setEnterable(t.get("enterable"));var h=t.get("formatter");a=a||t.get("position");var c=e,p=this._getNearestPoint([r,o],n,t.get("trigger"),t.get("borderColor")).color;if(h)if(X(h)){var d=t.ecModel.get("useUTC"),f=Y(n)?n[0]:n;c=h,f&&f.axisType&&f.axisType.indexOf("time")>=0&&(c=Vc(f.axisValue,c,d)),c=hp(c,n,!0)}else if(U(h)){var g=W((function(e,i){e===this._ticket&&(u.setContent(i,l,t,p,a),this._updatePosition(t,a,r,o,u,n,s))}),this);this._ticket=i,c=h(n,i,g)}else c=h;u.setContent(c,l,t,p,a),u.show(t,p),this._updatePosition(t,a,r,o,u,n,s)}},e.prototype._getNearestPoint=function(t,e,n,i){return"axis"===n||Y(e)?{color:i||("html"===this._renderMode?"#fff":"none")}:Y(e)?void 0:{color:i||e.color||e.borderColor}},e.prototype._updatePosition=function(t,e,n,i,r,o,a){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=r.getSize(),h=t.get("align"),c=t.get("verticalAlign"),p=a&&a.getBoundingRect().clone();if(a&&p.applyTransform(a.transform),U(e)&&(e=e([n,i],o,r.el,p,{viewSize:[s,l],contentSize:u.slice()})),Y(e))n=Er(e[0],s),i=Er(e[1],l);else if(q(e)){var d=e;d.width=u[0],d.height=u[1];var f=xp(d,{width:s,height:l});n=f.x,i=f.y,h=null,c=null}else if(X(e)&&a){var g=function(t,e,n,i){var r=n[0],o=n[1],a=Math.ceil(Math.SQRT2*i)+8,s=0,l=0,u=e.width,h=e.height;switch(t){case"inside":s=e.x+u/2-r/2,l=e.y+h/2-o/2;break;case"top":s=e.x+u/2-r/2,l=e.y-o-a;break;case"bottom":s=e.x+u/2-r/2,l=e.y+h+a;break;case"left":s=e.x-r-a,l=e.y+h/2-o/2;break;case"right":s=e.x+u+a,l=e.y+h/2-o/2}return[s,l]}(e,p,u,t.get("borderWidth"));n=g[0],i=g[1]}else g=function(t,e,n,i,r,o,a){var s=n.getSize(),l=s[0],u=s[1];return null!=o&&(t+l+o+2>i?t-=l+o:t+=o),null!=a&&(e+u+a>r?e-=u+a:e+=a),[t,e]}(n,i,r,s,l,h?null:20,c?null:20),n=g[0],i=g[1];h&&(n-=qz(h)?u[0]/2:"right"===h?u[0]:0),c&&(i-=qz(c)?u[1]/2:"bottom"===c?u[1]:0),kz(t)&&(g=function(t,e,n,i,r){var o=n.getSize(),a=o[0],s=o[1];return t=Math.min(t+a,i)-a,e=Math.min(e+s,r)-s,[t=Math.max(t,0),e=Math.max(e,0)]}(n,i,r,s,l),n=g[0],i=g[1]),r.moveTo(n,i)},e.prototype._updateContentNotChangedOnAxis=function(t,e){var n=this._lastDataByCoordSys,i=this._cbParamsList,r=!!n&&n.length===t.length;return r&&E(n,(function(n,o){var a=n.dataByAxis||[],s=(t[o]||{}).dataByAxis||[];(r=r&&a.length===s.length)&&E(a,(function(t,n){var o=s[n]||{},a=t.seriesDataIndices||[],l=o.seriesDataIndices||[];(r=r&&t.value===o.value&&t.axisType===o.axisType&&t.axisId===o.axisId&&a.length===l.length)&&E(a,(function(t,e){var n=l[e];r=r&&t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})),i&&E(t.seriesDataIndices,(function(t){var n=t.seriesIndex,o=e[n],a=i[n];o&&a&&a.data!==o.data&&(r=!1)}))}))})),this._lastDataByCoordSys=t,this._cbParamsList=e,!!r},e.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},e.prototype.dispose=function(t,e){!r.node&&e.getDom()&&(kg(this,"_updatePosition"),this._tooltipContent.dispose(),QR("itemTooltip",e))},e.type="tooltip",e}(gg);function Zz(t,e,n){var i,r=e.ecModel;n?(i=new dc(n,r,r),i=new dc(e.option,i,r)):i=e;for(var o=t.length-1;o>=0;o--){var a=t[o];a&&(a instanceof dc&&(a=a.get("tooltip",!0)),X(a)&&(a={formatter:a}),a&&(i=new dc(a,i,r)))}return i}function jz(t,e){return t.dispatchAction||W(e.dispatchAction,e)}function qz(t){return"center"===t||"middle"===t}var Kz=["rect","polygon","keep","clear"];function $z(t,e){var n=ho(t?t.brush:[]);if(n.length){var i=[];E(n,(function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(i=i.concat(e))}));var r=t&&t.toolbox;Y(r)&&(r=r[0]),r||(r={feature:{}},t.toolbox=[r]);var o=r.feature||(r.feature={}),a=o.brush||(o.brush={}),s=a.type||(a.type=[]);s.push.apply(s,i),function(t){var e={};E(t,(function(t){e[t]=1})),t.length=0,E(e,(function(e,n){t.push(n)}))}(s),e&&!s.length&&s.push.apply(s,Kz)}}var Jz=E;function Qz(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function tV(t,e,n){var i={};return Jz(e,(function(e){var r,o=i[e]=((r=function(){}).prototype.__hidden=r.prototype,new r);Jz(t[e],(function(t,i){if(iD.isValidType(i)){var r={type:i,visual:t};n&&n(r,e),o[i]=new iD(r),"opacity"===i&&((r=T(r)).type="colorAlpha",o.__hidden.__alphaForOpacity=new iD(r))}}))})),i}function eV(t,e,n){var i;E(n,(function(t){e.hasOwnProperty(t)&&Qz(e[t])&&(i=!0)})),i&&E(n,(function(n){e.hasOwnProperty(n)&&Qz(e[n])?t[n]=T(e[n]):delete t[n]}))}var nV={lineX:iV(0),lineY:iV(1),rect:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])},rect:function(t,e,n){return t&&n.boundingRect.intersect(t)}},polygon:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])&&y_(n.range,t[0],t[1])},rect:function(t,e,n){var i=n.range;if(!t||i.length<=1)return!1;var r=t.x,o=t.y,a=t.width,s=t.height,l=i[0];return!!(y_(i,r,o)||y_(i,r+a,o)||y_(i,r,o+s)||y_(i,r+a,o+s)||sr.create(t).contain(l[0],l[1])||Oh(r,o,r+a,o,i)||Oh(r,o,r,o+s,i)||Oh(r+a,o,r+a,o+s,i)||Oh(r,o+s,r+a,o+s,i))||void 0}}};function iV(t){var e=["x","y"],n=["width","height"];return{point:function(e,n,i){if(e){var r=i.range;return rV(e[t],r)}},rect:function(i,r,o){if(i){var a=o.range,s=[i[e[t]],i[e[t]]+i[n[t]]];return s[1]e[0][1]&&(e[0][1]=o[0]),o[1]e[1][1]&&(e[1][1]=o[1])}return e&&dV(e)}};function dV(t){return new sr(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var fV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new Ok(e.getZr())).on("brush",W(this._onBrush,this)).mount()},e.prototype.render=function(t,e,n,i){this.model=t,this._updateController(t,e,n,i)},e.prototype.updateTransform=function(t,e,n,i){lV(e),this._updateController(t,e,n,i)},e.prototype.updateVisual=function(t,e,n,i){this.updateTransform(t,e,n,i)},e.prototype.updateView=function(t,e,n,i){this._updateController(t,e,n,i)},e.prototype._updateController=function(t,e,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},e.prototype.dispose=function(){this._brushController.dispose()},e.prototype._onBrush=function(t){var e=this.model.id,n=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:e,areas:T(n),$from:e}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:e,areas:T(n),$from:e})},e.type="brush",e}(gg),gV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.areas=[],n.brushOption={},n}return n(e,t),e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&eV(n,t,["inBrush","outOfBrush"]);var i=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:"#ddd"},i.hasOwnProperty("liftZ")||(i.liftZ=5)},e.prototype.setAreas=function(t){t&&(this.areas=z(t,(function(t){return yV(this.option,t)}),this))},e.prototype.setBrushOption=function(t){this.brushOption=yV(this.option,t),this.brushType=this.brushOption.brushType},e.type="brush",e.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],e.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},e}(Tp);function yV(t,e){return C({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new dc(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}var vV=["rect","polygon","lineX","lineY","keep","clear"],mV=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n){var i,r,o;e.eachComponent({mainType:"brush"},(function(t){i=t.brushType,r=t.brushOption.brushMode||"single",o=o||!!t.areas.length})),this._brushType=i,this._brushMode=r,E(t.get("type",!0),(function(e){t.setIconStatus(e,("keep"===e?"multiple"===r:"clear"===e?o:e===i)?"emphasis":"normal")}))},e.prototype.updateView=function(t,e,n){this.render(t,e,n)},e.prototype.getIcons=function(){var t=this.model,e=t.get("icon",!0),n={};return E(t.get("type",!0),(function(t){e[t]&&(n[t]=e[t])})),n},e.prototype.onclick=function(t,e,n){var i=this._brushType,r=this._brushMode;"clear"===n?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===n?i:i!==n&&n,brushMode:"keep"===n?"multiple"===r?"single":"multiple":r}})},e.getDefaultOption=function(t){return{show:!0,type:vV.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocaleModel().get(["toolbox","brush","title"])}},e}(GE),xV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return n(e,t),e.type="title",e.defaultOption={z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},e}(Tp),_V=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){if(this.group.removeAll(),t.get("show")){var i=this.group,r=t.getModel("textStyle"),o=t.getModel("subtextStyle"),a=t.get("textAlign"),s=rt(t.get("textBaseline"),t.get("textVerticalAlign")),l=new ks({style:Uh(r,{text:t.get("text"),fill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new ks({style:Uh(o,{text:h,fill:o.getTextColor(),y:u.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),p=t.get("link"),d=t.get("sublink"),f=t.get("triggerEvent",!0);l.silent=!p&&!f,c.silent=!d&&!f,p&&l.on("click",(function(){dp(p,"_"+t.get("target"))})),d&&c.on("click",(function(){dp(d,"_"+t.get("subtarget"))})),Hs(l).eventData=Hs(c).eventData=f?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(l),h&&i.add(c);var g=i.getBoundingRect(),y=t.getBoxLayoutParams();y.width=g.width,y.height=g.height;var v=xp(y,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));a||("middle"===(a=t.get("left")||t.get("right"))&&(a="center"),"right"===a?v.x+=v.width:"center"===a&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),i.x=v.x,i.y=v.y,i.markRedraw();var m={align:a,verticalAlign:s};l.setStyle(m),c.setStyle(m),g=i.getBoundingRect();var x=v.margin,_=t.getItemStyle(["color","opacity"]);_.fill=t.get("backgroundColor");var b=new Cs({shape:{x:g.x-x[3],y:g.y-x[0],width:g.width+x[1]+x[3],height:g.height+x[0]+x[2],r:t.get("borderRadius")},style:_,subPixelOptimize:!0,silent:!0});i.add(b)}},e.type="title",e}(gg),bV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode="box",n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),this._initData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this._initData()},e.prototype.setCurrentIndex=function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},e.prototype.getCurrentIndex=function(){return this.option.currentIndex},e.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},e.prototype.setPlayState=function(t){this.option.autoPlay=!!t},e.prototype.getPlayState=function(){return!!this.option.autoPlay},e.prototype._initData=function(){var t,e=this.option,n=e.data||[],i=e.axisType,r=this._names=[];"category"===i?(t=[],E(n,(function(e,n){var i,o=xo(fo(e),"");q(e)?(i=T(e)).value=n:i=n,t.push(i),r.push(o)}))):t=n;var o={category:"ordinal",time:"time",value:"number"}[i]||"number";(this._data=new qm([{name:"value",type:o}],this)).initData(t,r)},e.prototype.getData=function(){return this._data},e.prototype.getCategories=function(){if("category"===this.get("axisType"))return this._names.slice()},e.type="timeline",e.defaultOption={z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},e}(Tp),wV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline.slider",e.defaultOption=yc(bV.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),e}(bV);R(wV,lf.prototype);var SV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline",e}(gg),MV=function(t){function e(e,n,i,r){var o=t.call(this,e,n,i)||this;return o.type=r||"value",o}return n(e,t),e.prototype.getLabelModel=function(){return this.model.getModel("label")},e.prototype.isHorizontal=function(){return"horizontal"===this.model.get("orient")},e}(H_),IV=Math.PI,TV=So(),CV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.api=e},e.prototype.render=function(t,e,n){if(this.model=t,this.api=n,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var i=this._layout(t,n),r=this._createGroup("_mainGroup"),o=this._createGroup("_labelGroup"),a=this._axis=this._createAxis(i,t);t.formatTooltip=function(t){return Xf("nameValue",{noName:!0,value:a.scale.getLabel({value:t})})},E(["AxisLine","AxisTick","Control","CurrentPointer"],(function(e){this["_render"+e](i,r,a,t)}),this),this._renderAxisLabel(i,o,a,t),this._position(i,t)}this._doPlayStop(),this._updateTicksStatus()},e.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},e.prototype.dispose=function(){this._clearTimer()},e.prototype._layout=function(t,e){var n,i,r,o,a=t.get(["label","position"]),s=t.get("orient"),l=function(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}(t,e),u={horizontal:"center",vertical:(n=null==a||"auto"===a?"horizontal"===s?l.y+l.height/2=0||"+"===n?"left":"right"},h={horizontal:n>=0||"+"===n?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:IV/2},p="vertical"===s?l.height:l.width,d=t.getModel("controlStyle"),f=d.get("show",!0),g=f?d.get("itemSize"):0,y=f?d.get("itemGap"):0,v=g+y,m=t.get(["label","rotate"])||0;m=m*IV/180;var x=d.get("position",!0),_=f&&d.get("showPlayBtn",!0),b=f&&d.get("showPrevBtn",!0),w=f&&d.get("showNextBtn",!0),S=0,M=p;"left"===x||"bottom"===x?(_&&(i=[0,0],S+=v),b&&(r=[S,0],S+=v),w&&(o=[M-g,0],M-=v)):(_&&(i=[M-g,0],M-=v),b&&(r=[0,0],S+=v),w&&(o=[M-g,0],M-=v));var I=[S,M];return t.get("inverse")&&I.reverse(),{viewRect:l,mainLength:p,orient:s,rotation:c[s],labelRotation:m,labelPosOpt:n,labelAlign:t.get(["label","align"])||u[s],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||h[s],playPosition:i,prevBtnPosition:r,nextBtnPosition:o,axisExtent:I,controlSize:g,controlGap:y}},e.prototype._position=function(t,e){var n=this._mainGroup,i=this._labelGroup,r=t.viewRect;if("vertical"===t.orient){var o=[1,0,0,1,0,0],a=r.x,s=r.y+r.height;Ei(o,o,[-a,-s]),zi(o,o,-IV/2),Ei(o,o,[a,s]),(r=r.clone()).applyTransform(o)}var l=y(r),u=y(n.getBoundingRect()),h=y(i.getBoundingRect()),c=[n.x,n.y],p=[i.x,i.y];p[0]=c[0]=l[0][0];var d,f=t.labelPosOpt;function g(t){t.originX=l[0][0]-t.x,t.originY=l[1][0]-t.y}function y(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function v(t,e,n,i,r){t[i]+=n[i][r]-e[i][r]}null==f||X(f)?(v(c,u,l,1,d="+"===f?0:1),v(p,h,l,1,1-d)):(v(c,u,l,1,d=f>=0?0:1),p[1]=c[1]+f),n.setPosition(c),i.setPosition(p),n.rotation=i.rotation=t.rotation,g(n),g(i)},e.prototype._createAxis=function(t,e){var n=e.getData(),i=e.get("axisType"),r=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new vx({ordinalMeta:t.getCategories(),extent:[1/0,-1/0]});case"time":return new Rx({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new xx}}(e,i);r.getTicks=function(){return n.mapArray(["value"],(function(t){return{value:t}}))};var o=n.getDataExtent("value");r.setExtent(o[0],o[1]),r.calcNiceTicks();var a=new MV("value",r,t.axisExtent,i);return a.model=e,a},e.prototype._createGroup=function(t){var e=this[t]=new Cr;return this.group.add(e),e},e.prototype._renderAxisLine=function(t,e,n,i){var r=n.getExtent();if(i.get(["lineStyle","show"])){var o=new zu({shape:{x1:r[0],y1:0,x2:r[1],y2:0},style:A({lineCap:"round"},i.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});e.add(o);var a=this._progressLine=new zu({shape:{x1:r[0],x2:this._currentPointer?this._currentPointer.x:r[0],y1:0,y2:0},style:k({lineCap:"round",lineWidth:o.style.lineWidth},i.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});e.add(a)}},e.prototype._renderAxisTick=function(t,e,n,i){var r=this,o=i.getData(),a=n.scale.getTicks();this._tickSymbols=[],E(a,(function(t){var a=n.dataToCoord(t.value),s=o.getItemModel(t.value),l=s.getModel("itemStyle"),u=s.getModel(["emphasis","itemStyle"]),h=s.getModel(["progress","itemStyle"]),c={x:a,y:0,onclick:W(r._changeTimeline,r,t.value)},p=DV(s,l,e,c);p.ensureState("emphasis").style=u.getItemStyle(),p.ensureState("progress").style=h.getItemStyle(),Ol(p);var d=Hs(p);s.get("tooltip")?(d.dataIndex=t.value,d.dataModel=i):d.dataIndex=d.dataModel=null,r._tickSymbols.push(p)}))},e.prototype._renderAxisLabel=function(t,e,n,i){var r=this;if(n.getLabelModel().get("show")){var o=i.getData(),a=n.getViewLabels();this._tickLabels=[],E(a,(function(i){var a=i.tickValue,s=o.getItemModel(a),l=s.getModel("label"),u=s.getModel(["emphasis","label"]),h=s.getModel(["progress","label"]),c=n.dataToCoord(i.tickValue),p=new ks({x:c,y:0,rotation:t.labelRotation-t.rotation,onclick:W(r._changeTimeline,r,a),silent:!1,style:Uh(l,{text:i.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});p.ensureState("emphasis").style=Uh(u),p.ensureState("progress").style=Uh(h),e.add(p),Ol(p),TV(p).dataIndex=a,r._tickLabels.push(p)}))}},e.prototype._renderControl=function(t,e,n,i){var r=t.controlSize,o=t.rotation,a=i.getModel("controlStyle").getItemStyle(),s=i.getModel(["emphasis","controlStyle"]).getItemStyle(),l=i.getPlayState(),u=i.get("inverse",!0);function h(t,n,l,u){if(t){var h=gr(rt(i.get(["controlStyle",n+"BtnSize"]),r),r),c=function(t,e,n,i){var r=i.style,o=Ph(t.get(["controlStyle",e]),i||{},new sr(n[0],n[1],n[2],n[3]));return r&&o.setStyle(r),o}(i,n+"Icon",[0,-h/2,h,h],{x:t[0],y:t[1],originX:r/2,originY:0,rotation:u?-o:0,rectHover:!0,style:a,onclick:l});c.ensureState("emphasis").style=s,e.add(c),Ol(c)}}h(t.nextBtnPosition,"next",W(this._changeTimeline,this,u?"-":"+")),h(t.prevBtnPosition,"prev",W(this._changeTimeline,this,u?"+":"-")),h(t.playPosition,l?"stop":"play",W(this._handlePlayClick,this,!l),!0)},e.prototype._renderCurrentPointer=function(t,e,n,i){var r=i.getData(),o=i.getCurrentIndex(),a=r.getItemModel(o).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=W(s._handlePointerDrag,s),t.ondragend=W(s._handlePointerDragend,s),AV(t,s._progressLine,o,n,i,!0)},onUpdate:function(t){AV(t,s._progressLine,o,n,i)}};this._currentPointer=DV(a,a,this._mainGroup,{},this._currentPointer,l)},e.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},e.prototype._handlePointerDrag=function(t,e,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},e.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},e.prototype._pointerChangeTimeline=function(t,e){var n=this._toAxisCoord(t)[0],i=Vr(this._axis.getExtent().slice());n>i[1]&&(n=i[1]),n=0&&(a[o]=+a[o].toFixed(c)),[a,h]}var FV={min:H(BV,"min"),max:H(BV,"max"),average:H(BV,"average"),median:H(BV,"median")};function GV(t,e){var n=t.getData(),i=t.coordinateSystem;if(e&&!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!Y(e.coord)&&i){var r=i.dimensions,o=WV(e,n,i,t);if((e=T(e)).type&&FV[e.type]&&o.baseAxis&&o.valueAxis){var a=P(r,o.baseAxis.dim),s=P(r,o.valueAxis.dim),l=FV[e.type](n,o.baseDataDim,o.valueDataDim,a,s);e.coord=l[0],e.value=l[1]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)FV[u[h]]&&(u[h]=UV(n,n.mapDimension(r[h]),u[h]));e.coord=u}}return e}function WV(t,e,n,i){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=n.getAxis(function(t,e){var n=t.getData().getDimensionInfo(e);return n&&n.coordDim}(i,r.valueDataDim)),r.baseAxis=n.getOtherAxis(r.valueAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim)):(r.baseAxis=i.getBaseAxis(),r.valueAxis=n.getOtherAxis(r.baseAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim),r.valueDataDim=e.mapDimension(r.valueAxis.dim)),r}function HV(t,e){return!(t&&t.containData&&e.coord&&!VV(e))||t.containData(e.coord)}function YV(t,e){return t?function(t,n,i,r){return df(r<2?t.coord&&t.coord[r]:t.value,e[r])}:function(t,n,i,r){return df(t.value,e[r])}}function UV(t,e,n){if("average"===n){var i=0,r=0;return t.each(e,(function(t,e){isNaN(t)||(i+=t,r++)})),i/r}return"median"===n?t.getMedian(e):t.getDataExtent(e)["max"===n?1:0]}var XV=So(),ZV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this.markerGroupMap=ft()},e.prototype.render=function(t,e,n){var i=this,r=this.markerGroupMap;r.each((function(t){XV(t).keep=!1})),e.eachSeries((function(t){var r=EV.getMarkerModelFromSeries(t,i.type);r&&i.renderSeries(t,r,e,n)})),r.each((function(t){!XV(t).keep&&i.group.remove(t.group)}))},e.prototype.markKeep=function(t){XV(t).keep=!0},e.prototype.toggleBlurSeries=function(t,e){var n=this;E(t,(function(t){var i=EV.getMarkerModelFromSeries(t,n.type);i&&i.getData().eachItemGraphicEl((function(t){t&&(e?wl(t):Sl(t))}))}))},e.type="marker",e}(gg);function jV(t,e,n){var i=e.coordinateSystem;t.each((function(r){var o,a=t.getItemModel(r),s=Er(a.get("x"),n.getWidth()),l=Er(a.get("y"),n.getHeight());if(isNaN(s)||isNaN(l)){if(e.getMarkerPosition)o=e.getMarkerPosition(t.getValues(t.dimensions,r));else if(i){var u=t.get(i.dimensions[0],r),h=t.get(i.dimensions[1],r);o=i.dataToPoint([u,h])}}else o=[s,l];isNaN(s)||(o[0]=s),isNaN(l)||(o[1]=l),t.setItemLayout(r,o)}))}var qV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=EV.getMarkerModelFromSeries(t,"markPoint");e&&(jV(e.getData(),t,n),this.markerGroupMap.get(t.id).updateLayout())}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new qw),u=function(t,e,n){var i;i=t?z(t&&t.dimensions,(function(t){return A(A({},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{}),{name:t,ordinalMeta:null})})):[{name:"value",type:"float"}];var r=new qm(i,n),o=z(n.get("data"),H(GV,e));t&&(o=B(o,H(HV,t)));var a=YV(!!t,i);return r.initData(o,null,a),r}(r,t,e);e.setData(u),jV(e.getData(),t,i),u.each((function(t){var n=u.getItemModel(t),i=n.getShallow("symbol"),r=n.getShallow("symbolSize"),o=n.getShallow("symbolRotate"),s=n.getShallow("symbolOffset"),l=n.getShallow("symbolKeepAspect");if(U(i)||U(r)||U(o)||U(s)){var h=e.getRawValue(t),c=e.getDataParams(t);U(i)&&(i=i(h,c)),U(r)&&(r=r(h,c)),U(o)&&(o=o(h,c)),U(s)&&(s=s(h,c))}var p=n.getModel("itemStyle").getItemStyle(),d=gy(a,"color");p.fill||(p.fill=d),u.setItemVisual(t,{symbol:i,symbolSize:r,symbolRotate:o,symbolOffset:s,symbolKeepAspect:l,style:p})})),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl((function(t){t.traverse((function(t){Hs(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markPoint",e}(ZV),KV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markLine",e.defaultOption={z:5,symbol:["circle","arrow"],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"},e}(EV),$V=So(),JV=function(t,e,n,i){var r,o=t.getData();if(Y(i))r=i;else{var a=i.type;if("min"===a||"max"===a||"average"===a||"median"===a||null!=i.xAxis||null!=i.yAxis){var s=void 0,l=void 0;if(null!=i.yAxis||null!=i.xAxis)s=e.getAxis(null!=i.yAxis?"y":"x"),l=it(i.yAxis,i.xAxis);else{var u=WV(i,o,e,t);s=u.valueAxis,l=UV(o,ix(o,u.valueDataDim),a)}var h="x"===s.dim?0:1,c=1-h,p=T(i),d={coord:[]};p.type=null,p.coord=[],p.coord[c]=-1/0,d.coord[c]=1/0;var f=n.get("precision");f>=0&&j(l)&&(l=+l.toFixed(Math.min(f,20))),p.coord[h]=d.coord[h]=l,r=[p,d,{type:a,valueIndex:i.valueIndex,value:l}]}else r=[]}var g=[GV(t,r[0]),GV(t,r[1]),A({},r[2])];return g[2].type=g[2].type||null,C(g[2],g[0]),C(g[2],g[1]),g};function QV(t){return!isNaN(t)&&!isFinite(t)}function tB(t,e,n,i){var r=1-t,o=i.dimensions[t];return QV(e[r])&&QV(n[r])&&e[t]===n[t]&&i.getAxis(o).containData(e[t])}function eB(t,e){if("cartesian2d"===t.type){var n=e[0].coord,i=e[1].coord;if(n&&i&&(tB(1,n,i,t)||tB(0,n,i,t)))return!0}return HV(t,e[0])&&HV(t,e[1])}function nB(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Er(s.get("x"),r.getWidth()),u=Er(s.get("y"),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(t.dimensions,e));else{var h=a.dimensions,c=t.get(h[0],e),p=t.get(h[1],e);o=a.dataToPoint([c,p])}if(uS(a,"cartesian2d")){var d=a.getAxis("x"),f=a.getAxis("y");h=a.dimensions,QV(t.get(h[0],e))?o[0]=d.toGlobalCoord(d.getExtent()[n?0:1]):QV(t.get(h[1],e))&&(o[1]=f.toGlobalCoord(f.getExtent()[n?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];t.setItemLayout(e,o)}var iB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=EV.getMarkerModelFromSeries(t,"markLine");if(e){var i=e.getData(),r=$V(e).from,o=$V(e).to;r.each((function(e){nB(r,e,!0,t,n),nB(o,e,!1,t,n)})),i.each((function(t){i.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])})),this.markerGroupMap.get(t.id).updateLayout()}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new gA);this.group.add(l.group);var u=function(t,e,n){var i;i=t?z(t&&t.dimensions,(function(t){return A(A({},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{}),{name:t,ordinalMeta:null})})):[{name:"value",type:"float"}];var r=new qm(i,n),o=new qm(i,n),a=new qm([],n),s=z(n.get("data"),H(JV,e,t,n));t&&(s=B(s,H(eB,t)));var l=YV(!!t,i);return r.initData(z(s,(function(t){return t[0]})),null,l),o.initData(z(s,(function(t){return t[1]})),null,l),a.initData(z(s,(function(t){return t[2]}))),a.hasItemOption=!0,{from:r,to:o,line:a}}(r,t,e),h=u.from,c=u.to,p=u.line;$V(e).from=h,$V(e).to=c,e.setData(p);var d=e.get("symbol"),f=e.get("symbolSize"),g=e.get("symbolRotate"),y=e.get("symbolOffset");function v(e,n,r){var o=e.getItemModel(n);nB(e,n,r,t,i);var s=o.getModel("itemStyle").getItemStyle();null==s.fill&&(s.fill=gy(a,"color")),e.setItemVisual(n,{symbolKeepAspect:o.get("symbolKeepAspect"),symbolOffset:rt(o.get("symbolOffset",!0),y[r?0:1]),symbolRotate:rt(o.get("symbolRotate",!0),g[r?0:1]),symbolSize:rt(o.get("symbolSize"),f[r?0:1]),symbol:rt(o.get("symbol",!0),d[r?0:1]),style:s})}Y(d)||(d=[d,d]),Y(f)||(f=[f,f]),Y(g)||(g=[g,g]),Y(y)||(y=[y,y]),u.from.each((function(t){v(h,t,!0),v(c,t,!1)})),p.each((function(t){var e=p.getItemModel(t).getModel("lineStyle").getLineStyle();p.setItemLayout(t,[h.getItemLayout(t),c.getItemLayout(t)]),null==e.stroke&&(e.stroke=h.getItemVisual(t,"style").fill),p.setItemVisual(t,{fromSymbolKeepAspect:h.getItemVisual(t,"symbolKeepAspect"),fromSymbolOffset:h.getItemVisual(t,"symbolOffset"),fromSymbolRotate:h.getItemVisual(t,"symbolRotate"),fromSymbolSize:h.getItemVisual(t,"symbolSize"),fromSymbol:h.getItemVisual(t,"symbol"),toSymbolKeepAspect:c.getItemVisual(t,"symbolKeepAspect"),toSymbolOffset:c.getItemVisual(t,"symbolOffset"),toSymbolRotate:c.getItemVisual(t,"symbolRotate"),toSymbolSize:c.getItemVisual(t,"symbolSize"),toSymbol:c.getItemVisual(t,"symbol"),style:e})})),l.updateData(p),u.line.eachItemGraphicEl((function(t){Hs(t).dataModel=e,t.traverse((function(t){Hs(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markLine",e}(ZV),rB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markArea",e.defaultOption={z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},e}(EV),oB=So(),aB=function(t,e,n,i){var r=GV(t,i[0]),o=GV(t,i[1]),a=r.coord,s=o.coord;a[0]=it(a[0],-1/0),a[1]=it(a[1],-1/0),s[0]=it(s[0],1/0),s[1]=it(s[1],1/0);var l=D([{},r,o]);return l.coord=[r.coord,o.coord],l.x0=r.x,l.y0=r.y,l.x1=o.x,l.y1=o.y,l};function sB(t){return!isNaN(t)&&!isFinite(t)}function lB(t,e,n,i){var r=1-t;return sB(e[r])&&sB(n[r])}function uB(t,e){var n=e.coord[0],i=e.coord[1],r={coord:n,x:e.x0,y:e.y0},o={coord:i,x:e.x1,y:e.y1};return uS(t,"cartesian2d")?!(!n||!i||!lB(1,n,i)&&!lB(0,n,i))||function(t,e,n){return!(t&&t.containZone&&e.coord&&n.coord&&!VV(e)&&!VV(n))||t.containZone(e.coord,n.coord)}(t,r,o):HV(t,r)||HV(t,o)}function hB(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Er(s.get(n[0]),r.getWidth()),u=Er(s.get(n[1]),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(n,e));else{var h=[d=t.get(n[0],e),f=t.get(n[1],e)];a.clampData&&a.clampData(h,h),o=a.dataToPoint(h,!0)}if(uS(a,"cartesian2d")){var c=a.getAxis("x"),p=a.getAxis("y"),d=t.get(n[0],e),f=t.get(n[1],e);sB(d)?o[0]=c.toGlobalCoord(c.getExtent()["x0"===n[0]?0:1]):sB(f)&&(o[1]=p.toGlobalCoord(p.getExtent()["y0"===n[1]?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];return o}var cB=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],pB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=EV.getMarkerModelFromSeries(t,"markArea");if(e){var i=e.getData();i.each((function(e){var r=z(cB,(function(r){return hB(i,e,r,t,n)}));i.setItemLayout(e,r),i.getItemGraphicEl(e).setShape("points",r)}))}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,{group:new Cr});this.group.add(l.group),this.markKeep(l);var u=function(t,e,n){var i,r;if(t){var a=z(t&&t.dimensions,(function(t){var n=e.getData();return A(A({},n.getDimensionInfo(n.mapDimension(t))||{}),{name:t,ordinalMeta:null})}));r=z(["x0","y0","x1","y1"],(function(t,e){return{name:t,type:a[e%2].type}})),i=new qm(r,n)}else i=new qm(r=[{name:"value",type:"float"}],n);var s=z(n.get("data"),H(aB,e,t,n));t&&(s=B(s,H(uB,t)));var l=t?function(t,e,n,i){return df(t.coord[Math.floor(i/2)][i%2],r[i])}:function(t,e,n,i){return df(t.value,r[i])};return i.initData(s,null,l),i.hasItemOption=!0,i}(r,t,e);e.setData(u),u.each((function(e){var n=z(cB,(function(n){return hB(u,e,n,t,i)})),o=r.getAxis("x").scale,s=r.getAxis("y").scale,l=o.getExtent(),h=s.getExtent(),c=[o.parse(u.get("x0",e)),o.parse(u.get("x1",e))],p=[s.parse(u.get("y0",e)),s.parse(u.get("y1",e))];Vr(c),Vr(p);var d=!!(l[0]>c[1]||l[1]p[1]||h[1]=0},e.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},e.type="legend.plain",e.dependencies=["series"],e.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},e}(Tp),fB=H,gB=E,yB=Cr,vB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.newlineDisabled=!1,n}return n(e,t),e.prototype.init=function(){this.group.add(this._contentGroup=new yB),this.group.add(this._selectorGroup=new yB),this._isFirstRender=!0},e.prototype.getContentGroup=function(){return this._contentGroup},e.prototype.getSelectorGroup=function(){return this._selectorGroup},e.prototype.render=function(t,e,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var r=t.get("align"),o=t.get("orient");r&&"auto"!==r||(r="right"===t.get("left")&&"vertical"===o?"right":"left");var a=t.get("selector",!0),s=t.get("selectorPosition",!0);!a||s&&"auto"!==s||(s="horizontal"===o?"end":"start"),this.renderInner(r,t,e,n,a,o,s);var l=t.getBoxLayoutParams(),u={width:n.getWidth(),height:n.getHeight()},h=t.get("padding"),c=xp(l,u,h),p=this.layoutInner(t,r,c,i,a,s),d=xp(k({width:p.width,height:p.height},l),u,h);this.group.x=d.x-p.x,this.group.y=d.y-p.y,this.group.markRedraw(),this.group.add(this._backgroundEl=XE(p,t))}},e.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},e.prototype.renderInner=function(t,e,n,i,r,o,a){var s=this.getContentGroup(),l=ft(),u=e.get("selectedMode"),h=[];n.eachRawSeries((function(t){!t.get("legendHoverLink")&&h.push(t.id)})),gB(e.getData(),(function(r,o){var a=r.get("name");if(!this.newlineDisabled&&(""===a||"\n"===a)){var c=new yB;return c.newline=!0,void s.add(c)}var p=n.getSeriesByName(a)[0];if(!l.get(a))if(p){var d=p.getData(),f=d.getVisual("legendLineStyle")||{},g=d.getVisual("legendIcon"),y=d.getVisual("style");this._createItem(p,a,o,r,e,t,f,y,g,u,i).on("click",fB(mB,a,null,i,h)).on("mouseover",fB(_B,p.name,null,i,h)).on("mouseout",fB(bB,p.name,null,i,h)),l.set(a,!0)}else n.eachRawSeries((function(n){if(!l.get(a)&&n.legendVisualProvider){var s=n.legendVisualProvider;if(!s.containName(a))return;var c=s.indexOfName(a),p=s.getItemVisual(c,"style"),d=s.getItemVisual(c,"legendIcon"),f=bn(p.fill);f&&0===f[3]&&(f[3]=.2,p=A(A({},p),{fill:kn(f,"rgba")})),this._createItem(n,a,o,r,e,t,{},p,d,u,i).on("click",fB(mB,null,a,i,h)).on("mouseover",fB(_B,null,a,i,h)).on("mouseout",fB(bB,null,a,i,h)),l.set(a,!0)}}),this)}),this),r&&this._createSelector(r,e,i,o,a)},e.prototype._createSelector=function(t,e,n,i,r){var o=this.getSelectorGroup();gB(t,(function(t){var i=t.type,r=new ks({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:"all"===i?"legendAllSelect":"legendInverseSelect"})}});o.add(r),Hh(r,{normal:e.getModel("selectorLabel"),emphasis:e.getModel(["emphasis","selectorLabel"])},{defaultText:t.title}),Ol(r)}))},e.prototype._createItem=function(t,e,n,i,r,o,a,s,l,u,h){var c=t.visualDrawType,p=r.get("itemWidth"),d=r.get("itemHeight"),f=r.isSelected(e),g=i.get("symbolRotate"),y=i.get("symbolKeepAspect"),v=i.get("icon"),m=function(t,e,n,i,r,o,a){function s(t,e){"auto"===t.lineWidth&&(t.lineWidth=e.lineWidth>0?2:0),gB(t,(function(n,i){"inherit"===t[i]&&(t[i]=e[i])}))}var l=e.getModel("itemStyle"),u=l.getItemStyle(),h=0===t.lastIndexOf("empty",0)?"fill":"stroke",c=l.getShallow("decal");u.decal=c&&"inherit"!==c?rv(c,a):i.decal,"inherit"===u.fill&&(u.fill=i[r]),"inherit"===u.stroke&&(u.stroke=i[h]),"inherit"===u.opacity&&(u.opacity=("fill"===r?i:n).opacity),s(u,i);var p=e.getModel("lineStyle"),d=p.getLineStyle();if(s(d,n),"auto"===u.fill&&(u.fill=i.fill),"auto"===u.stroke&&(u.stroke=i.fill),"auto"===d.stroke&&(d.stroke=i.fill),!o){var f=e.get("inactiveBorderWidth"),g=u[h];u.lineWidth="auto"===f?i.lineWidth>0&&g?2:0:u.lineWidth,u.fill=e.get("inactiveColor"),u.stroke=e.get("inactiveBorderColor"),d.stroke=p.get("inactiveColor"),d.lineWidth=p.get("inactiveWidth")}return{itemStyle:u,lineStyle:d}}(l=v||l||"roundRect",i,a,s,c,f,h),x=new yB,_=i.getModel("textStyle");if(!U(t.getLegendIcon)||v&&"inherit"!==v){var b="inherit"===v&&t.getData().getVisual("symbol")?"inherit"===g?t.getData().getVisual("symbolRotate"):g:0;x.add(function(t){var e=t.icon||"roundRect",n=Ly(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill,t.symbolKeepAspect);return n.setStyle(t.itemStyle),n.rotation=(t.iconRotate||0)*Math.PI/180,n.setOrigin([t.itemWidth/2,t.itemHeight/2]),e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n}({itemWidth:p,itemHeight:d,icon:l,iconRotate:b,itemStyle:m.itemStyle,lineStyle:m.lineStyle,symbolKeepAspect:y}))}else x.add(t.getLegendIcon({itemWidth:p,itemHeight:d,icon:l,iconRotate:g,itemStyle:m.itemStyle,lineStyle:m.lineStyle,symbolKeepAspect:y}));var w="left"===o?p+5:-5,S=o,M=r.get("formatter"),I=e;X(M)&&M?I=M.replace("{name}",null!=e?e:""):U(M)&&(I=M(e));var T=i.get("inactiveColor");x.add(new ks({style:Uh(_,{text:I,x:w,y:d/2,fill:f?_.getTextColor():T,align:S,verticalAlign:"middle"})}));var C=new Cs({shape:x.getBoundingRect(),invisible:!0}),D=i.getModel("tooltip");return D.get("show")&&Eh({el:C,componentModel:r,itemName:e,itemTooltipOption:D.option}),x.add(C),x.eachChild((function(t){t.silent=!0})),C.silent=!u,this.getContentGroup().add(x),Ol(x),x.__legendDataIndex=n,x},e.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getContentGroup(),s=this.getSelectorGroup();mp(t.get("orient"),a,t.get("itemGap"),n.width,n.height);var l=a.getBoundingRect(),u=[-l.x,-l.y];if(s.markRedraw(),a.markRedraw(),r){mp("horizontal",s,t.get("selectorItemGap",!0));var h=s.getBoundingRect(),c=[-h.x,-h.y],p=t.get("selectorButtonGap",!0),d=t.getOrient().index,f=0===d?"width":"height",g=0===d?"height":"width",y=0===d?"y":"x";"end"===o?c[d]+=l[f]+p:u[d]+=h[f]+p,c[1-d]+=l[g]/2-h[g]/2,s.x=c[0],s.y=c[1],a.x=u[0],a.y=u[1];var v={x:0,y:0};return v[f]=l[f]+p+h[f],v[g]=Math.max(l[g],h[g]),v[y]=Math.min(0,h[y]+c[1-d]),v}return a.x=u[0],a.y=u[1],this.group.getBoundingRect()},e.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},e.type="legend.plain",e}(gg);function mB(t,e,n,i){bB(t,e,n,i),n.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),_B(t,e,n,i)}function xB(t){for(var e,n=t.getZr().storage.getDisplayList(),i=0,r=n.length;in[r],f=[-c.x,-c.y];e||(f[i]=l[s]);var g=[0,0],y=[-p.x,-p.y],v=rt(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?y[i]+=n[r]-p[r]:g[i]+=p[r]+v),y[1-i]+=c[o]/2-p[o]/2,l.setPosition(f),u.setPosition(g),h.setPosition(y);var m={x:0,y:0};if(m[r]=d?n[r]:c[r],m[o]=Math.max(c[o],p[o]),m[a]=Math.min(0,p[a]+y[1-i]),u.__rectSize=n[r],d){var x={x:0,y:0};x[r]=Math.max(n[r]-p[r]-v,0),x[o]=m[o],u.setClipPath(new Cs({shape:x})),u.__rectSize=x[r]}else h.eachChild((function(t){t.attr({invisible:!0,silent:!0})}));var _=this._getPageInfo(t);return null!=_.pageIndex&&rh(l,{x:_.contentPosition[0],y:_.contentPosition[1]},d?t:null),this._updatePageInfoView(t,_),m},e.prototype._pageGo=function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},e.prototype._updatePageInfoView=function(t,e){var n=this._controllerGroup;E(["pagePrev","pageNext"],(function(i){var r=null!=e[i+"DataIndex"],o=n.childOfName(i);o&&(o.setStyle("fill",r?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),o.cursor=r?"pointer":"default")}));var i=n.childOfName("pageText"),r=t.get("pageFormatter"),o=e.pageIndex,a=null!=o?o+1:0,s=e.pageCount;i&&r&&i.setStyle("text",X(r)?r.replace("{current}",null==a?"":a+"").replace("{total}",null==s?"":s+""):r({current:a,total:s}))},e.prototype._getPageInfo=function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=t.getOrient().index,o=DB[r],a=AB[r],s=this._findTargetItemIndex(e),l=n.children(),u=l[s],h=l.length,c=h?1:0,p={contentPosition:[n.x,n.y],pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return p;var d=m(u);p.contentPosition[r]=-d.s;for(var f=s+1,g=d,y=d,v=null;f<=h;++f)(!(v=m(l[f]))&&y.e>g.s+i||v&&!x(v,g.s))&&(g=y.i>g.i?y:v)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=g.i),++p.pageCount),y=v;for(f=s-1,g=d,y=d,v=null;f>=-1;--f)(v=m(l[f]))&&x(y,v.s)||!(g.i=e&&t.s<=e+i}},e.prototype._findTargetItemIndex=function(t){return this._showController?(this.getContentGroup().eachChild((function(i,r){var o=i.__legendDataIndex;null==n&&null!=o&&(n=r),o===t&&(e=r)})),null!=e?e:n):0;var e,n},e.type="legend.scroll",e}(vB);function LB(t){wm(MB),t.registerComponentModel(IB),t.registerComponentView(kB),function(t){t.registerAction("legendScroll","legendscroll",(function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},(function(t){t.setScrollDataIndex(n)}))}))}(t)}var PB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.inside",e.defaultOption=yc(AE.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),e}(AE),OB=So();function NB(t,e){if(e){t.removeKey(e.model.uid);var n=e.controller;n&&n.dispose()}}function EB(t,e){t.isDisposed()||t.dispatchAction({type:"dataZoom",animation:{easing:"cubicOut",duration:100},batch:e})}function zB(t,e,n,i){return t.coordinateSystem.containPoint([n,i])}var BB=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataZoom.inside",e}return n(e,t),e.prototype.render=function(e,n,i){t.prototype.render.apply(this,arguments),e.noTarget()?this._clear():(this.range=e.getPercentRange(),function(t,e,n){OB(t).coordSysRecordMap.each((function(t){var i=t.dataZoomInfoMap.get(e.uid);i&&(i.getRange=n)}))}(i,e,{pan:W(FB.pan,this),zoom:W(FB.zoom,this),scrollMove:W(FB.scrollMove,this)}))},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){!function(t,e){for(var n=OB(t).coordSysRecordMap,i=n.keys(),r=0;r0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(o[1]-o[0])+o[0],u=Math.max(1/i.scale,0);o[0]=(o[0]-l)*u+l,o[1]=(o[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return lk(0,o,[0,100],0,h.minSpan,h.maxSpan),this.range=o,r[0]!==o[0]||r[1]!==o[1]?o:void 0}},pan:GB((function(t,e,n,i,r,o){var a=WB[i]([o.oldX,o.oldY],[o.newX,o.newY],e,r,n);return a.signal*(t[1]-t[0])*a.pixel/a.pixelLength})),scrollMove:GB((function(t,e,n,i,r,o){return WB[i]([0,0],[o.scrollDelta,o.scrollDelta],e,r,n).signal*(t[1]-t[0])*o.scrollDelta}))};function GB(t){return function(e,n,i,r){var o=this.range,a=o.slice(),s=e.axisModels[0];if(s)return lk(t(a,s,e,n,i,r),a,[0,100],"all"),this.range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}}var WB={grid:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a},polar:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===n.mainType?(a.pixel=e[0]-t[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=o.inverse?-1:1),a},singleAxis:function(t,e,n,i,r){var o=n.axis,a=r.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===o.orient?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s}};function HB(t){BE(t),t.registerComponentModel(PB),t.registerComponentView(BB),function(t){t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,(function(t,e){var n=OB(e),i=n.coordSysRecordMap||(n.coordSysRecordMap=ft());i.each((function(t){t.dataZoomInfoMap=null})),t.eachComponent({mainType:"dataZoom",subType:"inside"},(function(t){E(CE(t).infoList,(function(n){var r=n.model.uid,o=i.get(r)||i.set(r,function(t,e){var n={model:e,containsPoint:H(zB,e),dispatchAction:H(EB,t),dataZoomInfoMap:null,controller:null},i=n.controller=new kI(t.getZr());return E(["pan","zoom","scrollMove"],(function(t){i.on(t,(function(e){var i=[];n.dataZoomInfoMap.each((function(r){if(e.isAvailableBehavior(r.model.option)){var o=(r.getRange||{})[t],a=o&&o(r.dzReferCoordSysInfo,n.model.mainType,n.controller,e);!r.model.get("disabled",!0)&&a&&i.push({dataZoomId:r.model.id,start:a[0],end:a[1]})}})),i.length&&n.dispatchAction(i)}))})),n}(e,n.model));(o.dataZoomInfoMap||(o.dataZoomInfoMap=ft())).set(t.uid,{dzReferCoordSysInfo:n,model:t,getRange:null})}))})),i.each((function(t){var e,n=t.controller,r=t.dataZoomInfoMap;if(r){var o=r.keys()[0];null!=o&&(e=r.get(o))}if(e){var a=function(t){var e,n="type_",i={type_true:2,type_move:1,type_false:0,type_undefined:-1},r=!0;return t.each((function(t){var o=t.model,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i[n+a]>i[n+e]&&(e=a),r=r&&o.get("preventDefaultMouseMove",!0)})),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!r}}}(r);n.enable(a.controlType,a.opt),n.setPointerChecker(t.containsPoint),Ag(t,"dispatchAction",e.model.get("throttle",!0),"fixRate")}else NB(i,t)}))}))}(t)}var YB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.slider",e.layoutMode="box",e.defaultOption=yc(AE.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),e}(AE),UB=Cs,XB="horizontal",ZB="vertical",jB=["line","bar","candlestick","scatter"],qB={easing:"cubicOut",duration:100,delay:0},KB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._displayables={},n}return n(e,t),e.prototype.init=function(t,e){this.api=e,this._onBrush=W(this._onBrush,this),this._onBrushEnd=W(this._onBrushEnd,this)},e.prototype.render=function(e,n,i,r){if(t.prototype.render.apply(this,arguments),Ag(this,"_dispatchZoomAction",e.get("throttle"),"fixRate"),this._orient=e.getOrient(),!1!==e.get("show")){if(e.noTarget())return this._clear(),void this.group.removeAll();r&&"dataZoom"===r.type&&r.from===this.uid||this._buildView(),this._updateView()}else this.group.removeAll()},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){kg(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},e.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var e=this._displayables.sliderGroup=new Cr;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},e.prototype._resetLocation=function(){var t=this.dataZoomModel,e=this.api,n=t.get("brushSelect")?7:0,i=this._findCoordRect(),r={width:e.getWidth(),height:e.getHeight()},o=this._orient===XB?{right:r.width-i.x-i.width,top:r.height-30-7-n,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},a=Sp(t.option);E(["right","top","width","height"],(function(t){"ph"===a[t]&&(a[t]=o[t])}));var s=xp(a,r);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===ZB&&this._size.reverse()},e.prototype._positionGroup=function(){var t=this.group,e=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),r=i&&i.get("inverse"),o=this._displayables.sliderGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(n!==XB||r?n===XB&&r?{scaleY:a?1:-1,scaleX:-1}:n!==ZB||r?{scaleY:a?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:a?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:a?1:-1,scaleX:1});var s=t.getBoundingRect([o]);t.x=e.x-s.x,t.y=e.y-s.y,t.markRedraw()},e.prototype._getViewExtent=function(){return[0,this._size[0]]},e.prototype._renderBackground=function(){var t=this.dataZoomModel,e=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect");n.add(new UB({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var r=new UB({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:W(this._onClickPanel,this)}),o=this.api.getZr();i?(r.on("mousedown",this._onBrushStart,this),r.cursor="crosshair",o.on("mousemove",this._onBrush),o.on("mouseup",this._onBrushEnd)):(o.off("mousemove",this._onBrush),o.off("mouseup",this._onBrushEnd)),n.add(r)},e.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],t){var e=this._size,n=this._shadowSize||[],i=t.series,r=i.getRawData(),o=i.getShadowDim?i.getShadowDim():t.otherDim;if(null!=o){var a=this._shadowPolygonPts,s=this._shadowPolylinePts;if(r!==this._shadowData||o!==this._shadowDim||e[0]!==n[0]||e[1]!==n[1]){var l=r.getDataExtent(o),u=.3*(l[1]-l[0]);l=[l[0]-u,l[1]+u];var h,c=[0,e[1]],p=[0,e[0]],d=[[e[0],0],[0,0]],f=[],g=p[1]/(r.count()-1),y=0,v=Math.round(r.count()/e[0]);r.each([o],(function(t,e){if(v>0&&e%v)y+=g;else{var n=null==t||isNaN(t)||""===t,i=n?0:Nr(t,l,c,!0);n&&!h&&e?(d.push([d[d.length-1][0],0]),f.push([f[f.length-1][0],0])):!n&&h&&(d.push([y,0]),f.push([y,0])),d.push([y,i]),f.push([y,i]),y+=g,h=n}})),a=this._shadowPolygonPts=d,s=this._shadowPolylinePts=f}this._shadowData=r,this._shadowDim=o,this._shadowSize=[e[0],e[1]];for(var m=this.dataZoomModel,x=0;x<3;x++){var _=b(1===x);this._displayables.sliderGroup.add(_),this._displayables.dataShadowSegs.push(_)}}}function b(t){var e=m.getModel(t?"selectedDataBackground":"dataBackground"),n=new Cr,i=new Pu({shape:{points:a},segmentIgnoreThreshold:1,style:e.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),r=new Ru({shape:{points:s},segmentIgnoreThreshold:1,style:e.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return n.add(i),n.add(r),n}},e.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var n,i=this.ecModel;return t.eachTargetAxis((function(r,o){E(t.getAxisProxy(r,o).getTargetSeriesModels(),(function(t){if(!(n||!0!==e&&P(jB,t.get("type"))<0)){var a,s=i.getComponent(IE(r),o).axis,l={x:"y",y:"x",radius:"angle",angle:"radius"}[r],u=t.coordinateSystem;null!=l&&u.getOtherAxis&&(a=u.getOtherAxis(s).inverse),l=t.getData().mapDimension(l),n={thisAxis:s,series:t,thisDim:r,otherDim:l,otherAxisInverse:a}}}),this)}),this),n}},e.prototype._renderHandle=function(){var t=this.group,e=this._displayables,n=e.handles=[null,null],i=e.handleLabels=[null,null],r=this._displayables.sliderGroup,o=this._size,a=this.dataZoomModel,s=this.api,l=a.get("borderRadius")||0,u=a.get("brushSelect"),h=e.filler=new UB({silent:u,style:{fill:a.get("fillerColor")},textConfig:{position:"inside"}});r.add(h),r.add(new UB({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:o[0],height:o[1],r:l},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),E([0,1],(function(e){var o=a.get("handleIcon");!Dy[o]&&o.indexOf("path://")<0&&o.indexOf("image://")<0&&(o="path://"+o);var s=Ly(o,-1,0,2,2,null,!0);s.attr({cursor:$B(this._orient),draggable:!0,drift:W(this._onDragMove,this,e),ondragend:W(this._onDragEnd,this),onmouseover:W(this._showDataInfo,this,!0),onmouseout:W(this._showDataInfo,this,!1),z2:5});var l=s.getBoundingRect(),u=a.get("handleSize");this._handleHeight=Er(u,this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,s.setStyle(a.getModel("handleStyle").getItemStyle()),s.style.strokeNoScale=!0,s.rectHover=!0,s.ensureState("emphasis").style=a.getModel(["emphasis","handleStyle"]).getItemStyle(),Ol(s);var h=a.get("handleColor");null!=h&&(s.style.fill=h),r.add(n[e]=s);var c=a.getModel("textStyle");t.add(i[e]=new ks({silent:!0,invisible:!0,style:Uh(c,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:c.getTextColor(),font:c.getFont()}),z2:10}))}),this);var c=h;if(u){var p=Er(a.get("moveHandleSize"),o[1]),d=e.moveHandle=new Cs({style:a.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:o[1]-.5,height:p}}),f=.8*p,g=e.moveHandleIcon=Ly(a.get("moveHandleIcon"),-f/2,-f/2,f,f,"#fff",!0);g.silent=!0,g.y=o[1]+p/2-.5,d.ensureState("emphasis").style=a.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var y=Math.min(o[1]/2,Math.max(p,10));(c=e.moveZone=new Cs({invisible:!0,shape:{y:o[1]-y,height:p+y}})).on("mouseover",(function(){s.enterEmphasis(d)})).on("mouseout",(function(){s.leaveEmphasis(d)})),r.add(d),r.add(g),r.add(c)}c.attr({draggable:!0,cursor:$B(this._orient),drift:W(this._onDragMove,this,"all"),ondragstart:W(this._showDataInfo,this,!0),ondragend:W(this._onDragEnd,this),onmouseover:W(this._showDataInfo,this,!0),onmouseout:W(this._showDataInfo,this,!1)})},e.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[Nr(t[0],[0,100],e,!0),Nr(t[1],[0,100],e,!0)]},e.prototype._updateInterval=function(t,e){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),a=[0,100];lk(e,i,r,n.get("zoomLock")?"all":t,null!=o.minSpan?Nr(o.minSpan,a,r,!0):null,null!=o.maxSpan?Nr(o.maxSpan,a,r,!0):null);var s=this._range,l=this._range=Vr([Nr(i[0],r,a,!0),Nr(i[1],r,a,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},e.prototype._updateView=function(t){var e=this._displayables,n=this._handleEnds,i=Vr(n.slice()),r=this._size;E([0,1],(function(t){var i=e.handles[t],o=this._handleHeight;i.attr({scaleX:o/2,scaleY:o/2,x:n[t]+(t?-1:1),y:r[1]/2-o/2})}),this),e.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]});var o={x:i[0],width:i[1]-i[0]};e.moveHandle&&(e.moveHandle.setShape(o),e.moveZone.setShape(o),e.moveZone.getBoundingRect(),e.moveHandleIcon&&e.moveHandleIcon.attr("x",o.x+o.width/2));for(var a=e.dataShadowSegs,s=[0,i[0],i[1],r[0]],l=0;le[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&this._dispatchZoomAction(!1)}},e.prototype._onBrushStart=function(t){var e=t.offsetX,n=t.offsetY;this._brushStart=new Ji(e,n),this._brushing=!0,this._brushStartTime=+new Date},e.prototype._onBrushEnd=function(t){if(this._brushing){var e=this._displayables.brushRect;if(this._brushing=!1,e){e.attr("ignore",!0);var n=e.shape;if(!(+new Date-this._brushStartTime<200&&Math.abs(n.width)<5)){var i=this._getViewExtent(),r=[0,100];this._range=Vr([Nr(n.x,i,r,!0),Nr(n.x+n.width,i,r,!0)]),this._handleEnds=[n.x,n.x+n.width],this._updateView(),this._dispatchZoomAction(!1)}}}},e.prototype._onBrush=function(t){this._brushing&&(se(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},e.prototype._updateBrushRect=function(t,e){var n=this._displayables,i=this.dataZoomModel,r=n.brushRect;r||(r=n.brushRect=new UB({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(r)),r.attr("ignore",!1);var o=this._brushStart,a=this._displayables.sliderGroup,s=a.transformCoordToLocal(t,e),l=a.transformCoordToLocal(o.x,o.y),u=this._size;s[0]=Math.max(Math.min(u[0],s[0]),0),r.setShape({x:l[0],y:0,width:s[0]-l[0],height:u[1]})},e.prototype._dispatchZoomAction=function(t){var e=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?qB:null,start:e[0],end:e[1]})},e.prototype._findCoordRect=function(){var t,e=CE(this.dataZoomModel).infoList;if(!t&&e.length){var n=e[0].model.coordinateSystem;t=n.getRect&&n.getRect()}if(!t){var i=this.api.getWidth(),r=this.api.getHeight();t={x:.2*i,y:.2*r,width:.6*i,height:.6*r}}return t},e.type="dataZoom.slider",e}(PE);function $B(t){return"vertical"===t?"ns-resize":"ew-resize"}function JB(t){t.registerComponentModel(YB),t.registerComponentView(KB),BE(t)}var QB=function(t,e,n){var i=T((tF[t]||{})[e]);return n&&Y(i)?i[i.length-1]:i},tF={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},eF=iD.mapVisual,nF=iD.eachVisual,iF=Y,rF=E,oF=Vr,aF=Nr,sF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.stateList=["inRange","outOfRange"],n.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],n.layoutMode={type:"box",ignoreSize:!0},n.dataBound=[-1/0,1/0],n.targetVisuals={},n.controllerVisuals={},n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&eV(n,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},e.prototype.resetVisual=function(t){var e=this.stateList;t=W(t,this),this.controllerVisuals=tV(this.option.controller,e,t),this.targetVisuals=tV(this.option.target,e,t)},e.prototype.getItemSymbol=function(){return null},e.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries((function(t,n){e.push(n)})):e=ho(t),e},e.prototype.eachTargetSeries=function(t,e){E(this.getTargetSeriesIndices(),(function(n){var i=this.ecModel.getSeriesByIndex(n);i&&t.call(e,i)}),this)},e.prototype.isTargetSeries=function(t){var e=!1;return this.eachTargetSeries((function(n){n===t&&(e=!0)})),e},e.prototype.formatValueText=function(t,e,n){var i,r=this.option,o=r.precision,a=this.dataBound,s=r.formatter;n=n||["<",">"],Y(t)&&(t=t.slice(),i=!0);var l=e?t:i?[u(t[0]),u(t[1])]:u(t);return X(s)?s.replace("{value}",i?l[0]:l).replace("{value2}",i?l[1]:l):U(s)?i?s(t[0],t[1]):s(t):i?t[0]===a[0]?n[0]+" "+l[1]:t[1]===a[1]?n[1]+" "+l[0]:l[0]+" - "+l[1]:l;function u(t){return t===a[0]?"min":t===a[1]?"max":(+t).toFixed(Math.min(o,20))}},e.prototype.resetExtent=function(){var t=this.option,e=oF([t.min,t.max]);this._dataExtent=e},e.prototype.getDataDimensionIndex=function(t){var e=this.option.dimension;if(null!=e)return t.getDimensionIndex(e);for(var n=t.dimensions,i=n.length-1;i>=0;i--){var r=n[i],o=t.getDimensionInfo(r);if(!o.isCalculationCoord)return o.storeDimIndex}},e.prototype.getExtent=function(){return this._dataExtent.slice()},e.prototype.completeVisualOption=function(){var t=this.ecModel,e=this.option,n={inRange:e.inRange,outOfRange:e.outOfRange},i=e.target||(e.target={}),r=e.controller||(e.controller={});C(i,n),C(r,n);var o=this.isCategory();function a(n){iF(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice().reverse()}),n.inRange=n.inRange||{color:t.get("gradientColor")}}a.call(this,i),a.call(this,r),function(t,e,n){var i=t[e],r=t[n];i&&!r&&(r=t[n]={},rF(i,(function(t,e){if(iD.isValidType(e)){var n=QB(e,"inactive",o);null!=n&&(r[e]=n,"color"!==e||r.hasOwnProperty("opacity")||r.hasOwnProperty("colorAlpha")||(r.opacity=[0,0]))}})))}.call(this,i,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,i=this.get("inactiveColor"),r=this.getItemSymbol()||"roundRect";rF(this.stateList,(function(a){var s=this.itemSize,l=t[a];l||(l=t[a]={color:o?i:[i]}),null==l.symbol&&(l.symbol=e&&T(e)||(o?r:[r])),null==l.symbolSize&&(l.symbolSize=n&&T(n)||(o?s[0]:[s[0],s[0]])),l.symbol=eF(l.symbol,(function(t){return"none"===t?r:t}));var u=l.symbolSize;if(null!=u){var h=-1/0;nF(u,(function(t){t>h&&(h=t)})),l.symbolSize=eF(u,(function(t){return aF(t,[0,h],[0,s[0]],!0)}))}}),this)}.call(this,r)},e.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},e.prototype.isCategory=function(){return!!this.option.categories},e.prototype.setSelected=function(t){},e.prototype.getSelected=function(){return null},e.prototype.getValueState=function(t){return null},e.prototype.getVisualMeta=function(t){return null},e.type="visualMap",e.dependencies=["series"],e.defaultOption={show:!0,z:4,seriesIndex:"all",min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,textStyle:{color:"#333"}},e}(Tp),lF=[20,140],uF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual((function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()})),this._resetRange()},e.prototype.resetItemSize=function(){t.prototype.resetItemSize.apply(this,arguments);var e=this.itemSize;(null==e[0]||isNaN(e[0]))&&(e[0]=lF[0]),(null==e[1]||isNaN(e[1]))&&(e[1]=lF[1])},e.prototype._resetRange=function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):Y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},e.prototype.completeVisualOption=function(){t.prototype.completeVisualOption.apply(this,arguments),E(this.stateList,(function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=e[1]/3)}),this)},e.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},e.prototype.getSelected=function(){var t=this.getExtent(),e=Vr((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=n[1]||t<=e[1])?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[];return this.eachTargetSeries((function(n){var i=[],r=n.getData();r.each(this.getDataDimensionIndex(r),(function(e,n){t[0]<=e&&e<=t[1]&&i.push(n)}),this),e.push({seriesId:n.id,dataIndex:i})}),this),e},e.prototype.getVisualMeta=function(t){var e=hF(this,"outOfRange",this.getExtent()),n=hF(this,"inRange",this.option.range.slice()),i=[];function r(e,n){i.push({value:e,color:t(e,n)})}for(var o=0,a=0,s=n.length,l=e.length;at[1])break;n.push({color:this.getControllerVisual(o,"color",e),offset:r/100})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},e.prototype._createBarPoints=function(t,e){var n=this.visualMapModel.itemSize;return[[n[0]-e[0],t[0]],[n[0],t[0]],[n[0],t[1]],[n[0]-e[1],t[1]]]},e.prototype._createBarGroup=function(t){var e=this._orient,n=this.visualMapModel.get("inverse");return new Cr("horizontal"!==e||n?"horizontal"===e&&n?{scaleX:"bottom"===t?-1:1,rotation:-Math.PI/2}:"vertical"!==e||n?{scaleX:"left"===t?1:-1}:{scaleX:"left"===t?1:-1,scaleY:-1}:{scaleX:"bottom"===t?1:-1,rotation:Math.PI/2})},e.prototype._updateHandle=function(t,e){if(this._useHandle){var n=this._shapes,i=this.visualMapModel,r=n.handleThumbs,o=n.handleLabels,a=i.itemSize,s=i.getExtent();yF([0,1],(function(l){var u=r[l];u.setStyle("fill",e.handlesColor[l]),u.y=t[l];var h=gF(t[l],[0,a[1]],s,!0),c=this.getControllerVisual(h,"symbolSize");u.scaleX=u.scaleY=c/a[0],u.x=a[0]-c/2;var p=Th(n.handleLabelPoints[l],Ih(u,this.group));o[l].setStyle({x:p[0],y:p[1],text:i.formatValueText(this._dataInterval[l]),verticalAlign:"middle",align:"vertical"===this._orient?this._applyTransform("left",n.mainGroup):"center"})}),this)}},e.prototype._showIndicator=function(t,e,n,i){var r=this.visualMapModel,o=r.getExtent(),a=r.itemSize,s=[0,a[1]],l=this._shapes,u=l.indicator;if(u){u.attr("invisible",!1);var h=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0}),c=this.getControllerVisual(t,"symbolSize"),p=gF(t,o,s,!0),d=a[0]-c/2,f={x:u.x,y:u.y};u.y=p,u.x=d;var g=Th(l.indicatorLabelPoint,Ih(u,this.group)),y=l.indicatorLabel;y.attr("invisible",!1);var v=this._applyTransform("left",l.mainGroup),m="horizontal"===this._orient;y.setStyle({text:(n||"")+r.formatValueText(e),verticalAlign:m?v:"middle",align:m?"center":v});var x={x:d,y:p,style:{fill:h}},_={style:{x:g[0],y:g[1]}};if(r.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var b={duration:100,easing:"cubicInOut",additive:!0};u.x=f.x,u.y=f.y,u.animateTo(x,b),y.animateTo(_,b)}else u.attr(x),y.attr(_);this._firstShowIndicator=!1;var w=this._shapes.handleLabels;if(w)for(var S=0;Sr[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",a):u[1]===1/0?this._showIndicator(l,u[0],"> ",a):this._showIndicator(l,l,"≈ ",a));var h=this._hoverLinkDataIndices,c=[];(e||bF(n))&&(c=this._hoverLinkDataIndices=n.findTargetDataIndices(u));var p=function(t,e){var n={},i={};return r(t||[],n),r(e||[],i,n),[o(n),o(i)];function r(t,e,n){for(var i=0,r=t.length;i=0&&(r.dimension=o,i.push(r))}})),t.getData().setVisual("visualMeta",i)}}];function TF(t,e,n,i){for(var r=e.targetVisuals[i],o=iD.prepareVisualTypes(r),a={color:gy(t.getData(),"color")},s=0,l=o.length;s0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})),t.registerAction(SF,MF),E(IF,(function(e){t.registerVisual(t.PRIORITY.VISUAL.COMPONENT,e)})),t.registerPreprocessor(DF))}function PF(t){t.registerComponentModel(uF),t.registerComponentView(xF),LF(t)}var OF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._pieceList=[],n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var i=this._mode=this._determineMode();this._pieceList=[],RF[this._mode].call(this,this._pieceList),this._resetSelected(e,n);var r=this.option.categories;this.resetVisual((function(t,e){"categories"===i?(t.mappingMethod="category",t.categories=T(r)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=z(this._pieceList,(function(t){return t=T(t),"inRange"!==e&&(t.visual=null),t})))}))},e.prototype.completeVisualOption=function(){var e=this.option,n={},i=iD.listVisualTypes(),r=this.isCategory();function o(t,e,n){return t&&t[e]&&t[e].hasOwnProperty(n)}E(e.pieces,(function(t){E(i,(function(e){t.hasOwnProperty(e)&&(n[e]=1)}))})),E(n,(function(t,n){var i=!1;E(this.stateList,(function(t){i=i||o(e,t,n)||o(e.target,t,n)}),this),!i&&E(this.stateList,(function(t){(e[t]||(e[t]={}))[n]=QB(n,"inRange"===t?"active":"inactive",r)}))}),this),t.prototype.completeVisualOption.apply(this,arguments)},e.prototype._resetSelected=function(t,e){var n=this.option,i=this._pieceList,r=(e?n:t).selected||{};if(n.selected=r,E(i,(function(t,e){var n=this.getSelectedMapKey(t);r.hasOwnProperty(n)||(r[n]=!0)}),this),"single"===n.selectedMode){var o=!1;E(i,(function(t,e){var n=this.getSelectedMapKey(t);r[n]&&(o?r[n]=!1:o=!0)}),this)}},e.prototype.getItemSymbol=function(){return this.get("itemSymbol")},e.prototype.getSelectedMapKey=function(t){return"categories"===this._mode?t.value+"":t.index+""},e.prototype.getPieceList=function(){return this._pieceList},e.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},e.prototype.setSelected=function(t){this.option.selected=T(t)},e.prototype.getValueState=function(t){var e=iD.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[],n=this._pieceList;return this.eachTargetSeries((function(i){var r=[],o=i.getData();o.each(this.getDataDimensionIndex(o),(function(e,i){iD.findPieceIndex(e,n)===t&&r.push(i)}),this),e.push({seriesId:i.id,dataIndex:r})}),this),e},e.prototype.getRepresentValue=function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var n=t.interval||[];e=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return e},e.prototype.getVisualMeta=function(t){if(!this.isCategory()){var e=[],n=["",""],i=this,r=this._pieceList.slice();if(r.length){var o=r[0].interval[0];o!==-1/0&&r.unshift({interval:[-1/0,o]}),(o=r[r.length-1].interval[1])!==1/0&&r.push({interval:[o,1/0]})}else r.push({interval:[-1/0,1/0]});var a=-1/0;return E(r,(function(t){var e=t.interval;e&&(e[0]>a&&s([a,e[0]],"outOfRange"),s(e.slice()),a=e[1])}),this),{stops:e,outerColors:n}}function s(r,o){var a=i.getRepresentValue({interval:r});o||(o=i.getValueState(a));var s=t(a,o);r[0]===-1/0?n[0]=s:r[1]===1/0?n[1]=s:e.push({value:r[0],color:s},{value:r[1],color:s})}},e.type="visualMap.piecewise",e.defaultOption=yc(sF.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),e}(sF),RF={splitNumber:function(t){var e=this.option,n=Math.min(e.precision,20),i=this.getExtent(),r=e.splitNumber;r=Math.max(parseInt(r,10),1),e.splitNumber=r;for(var o=(i[1]-i[0])/r;+o.toFixed(n)!==o&&n<5;)n++;e.precision=n,o=+o.toFixed(n),e.minOpen&&t.push({interval:[-1/0,i[0]],close:[0,0]});for(var a=0,s=i[0];a","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,n)}),this)}};function NF(t,e){var n=t.inverse;("vertical"===t.orient?!n:n)&&e.reverse()}var EF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.doRender=function(){var t=this.group;t.removeAll();var e=this.visualMapModel,n=e.get("textGap"),i=e.textStyleModel,r=i.getFont(),o=i.getTextColor(),a=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=it(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,a),E(l.viewPieceList,(function(i){var l=i.piece,u=new Cr;u.onclick=W(this._onItemClick,this,l),this._enableHoverLink(u,i.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var p=this.visualMapModel.getValueState(c);u.add(new ks({style:{x:"right"===a?-n:s[0]+n,y:s[1]/2,text:l.text,verticalAlign:"middle",align:a,font:r,fill:o,opacity:"outOfRange"===p?.5:1}}))}t.add(u)}),this),u&&this._renderEndsText(t,u[1],s,h,a),mp(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},e.prototype._enableHoverLink=function(t,e){var n=this;t.on("mouseover",(function(){return i("highlight")})).on("mouseout",(function(){return i("downplay")}));var i=function(t){var i=n.visualMapModel;i.option.hoverLink&&n.api.dispatchAction({type:t,batch:fF(i.findTargetDataIndices(e),i)})}},e.prototype._getItemAlign=function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return dF(t,this.api,t.itemSize);var n=e.align;return n&&"auto"!==n||(n="left"),n},e.prototype._renderEndsText=function(t,e,n,i,r){if(e){var o=new Cr,a=this.visualMapModel.textStyleModel;o.add(new ks({style:Uh(a,{x:i?"right"===r?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?r:"center",text:e})})),t.add(o)}},e.prototype._getViewData=function(){var t=this.visualMapModel,e=z(t.getPieceList(),(function(t,e){return{piece:t,indexInModelPieceList:e}})),n=t.get("text"),i=t.get("orient"),r=t.get("inverse");return("horizontal"===i?r:!r)?e.reverse():n&&(n=n.slice().reverse()),{viewPieceList:e,endsText:n}},e.prototype._createItemSymbol=function(t,e,n){t.add(Ly(this.getControllerVisual(e,"symbol"),n[0],n[1],n[2],n[3],this.getControllerVisual(e,"color")))},e.prototype._onItemClick=function(t){var e=this.visualMapModel,n=e.option,i=n.selectedMode;if(i){var r=T(n.selected),o=e.getSelectedMapKey(t);"single"===i||!0===i?(r[o]=!0,E(r,(function(t,e){r[e]=e===o}))):r[o]=!r[o],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:r})}},e.type="visualMap.piecewise",e}(cF);function zF(t){t.registerComponentModel(OF),t.registerComponentView(EF),LF(t)}var VF={label:{enabled:!0},decal:{show:!1}},BF=So(),FF={};function GF(t,e){var n=t.getModel("aria");if(n.get("enabled")){var i=T(VF);C(i.label,t.getLocaleModel().get("aria"),!1),C(n.option,i,!1),function(){if(n.getModel("decal").get("show")){var e=ft();t.eachSeries((function(t){if(!t.isColorBySeries()){var n=e.get(t.type);n||(n={},e.set(t.type,n)),BF(t).scope=n}})),t.eachRawSeries((function(e){if(!t.isSeriesFiltered(e))if(U(e.enableAriaDecal))e.enableAriaDecal();else{var n=e.getData();if(e.isColorBySeries()){var i=ed(e.ecModel,e.name,FF,t.getSeriesCount()),r=n.getVisual("decal");n.setVisual("decal",u(r,i))}else{var o=e.getRawData(),a={},s=BF(e).scope;n.each((function(t){var e=n.getRawIndex(t);a[e]=t}));var l=o.count();o.each((function(t){var i=a[t],r=o.getName(t)||t+"",h=ed(e.ecModel,r,s,l),c=n.getItemVisual(i,"decal");n.setItemVisual(i,"decal",u(c,h))}))}}function u(t,e){var n=t?A(A({},e),t):e;return n.dirty=!0,n}}))}}(),function(){var i=t.getLocaleModel().get("aria"),o=n.getModel("label");if(o.option=k(o.option,i),o.get("enabled")){var a=e.getZr().dom;if(o.get("description"))a.setAttribute("aria-label",o.get("description"));else{var s,l=t.getSeriesCount(),u=o.get(["data","maxCount"])||10,h=o.get(["series","maxCount"])||10,c=Math.min(l,h);if(!(l<1)){var p=function(){var e=t.get("title");return e&&e.length&&(e=e[0]),e&&e.text}();if(p)s=r(o.get(["general","withTitle"]),{title:p});else s=o.get(["general","withoutTitle"]);var f=[];s+=r(l>1?o.get(["series","multiple","prefix"]):o.get(["series","single","prefix"]),{seriesCount:l}),t.eachSeries((function(e,n){if(n1?o.get(["series","multiple",a]):o.get(["series","single",a]),{seriesId:e.seriesIndex,seriesName:e.get("name"),seriesType:(x=e.subType,t.getLocaleModel().get(["series","typeNames"])[x]||"自定义图")});var s=e.getData();s.count()>u?i+=r(o.get(["data","partialData"]),{displayCnt:u}):i+=o.get(["data","allData"]);for(var h=o.get(["data","separator","middle"]),p=o.get(["data","separator","end"]),d=[],g=0;g":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},YF=function(){function t(t){if(null==(this._condVal=X(t)?new RegExp(t):et(t)?t:null)){ao("")}}return t.prototype.evaluate=function(t){var e=typeof t;return X(e)?this._condVal.test(t):!!j(e)&&this._condVal.test(t+"")},t}(),UF=function(){function t(){}return t.prototype.evaluate=function(){return this.value},t}(),XF=function(){function t(){}return t.prototype.evaluate=function(){for(var t=this.children,e=0;e2&&l.push(e),e=[t,n]}function f(t,n,i,r){oG(t,i)&&oG(n,r)||e.push(t,n,i,r,i,r)}function g(t,n,i,r,o,a){var s=Math.abs(n-t),l=4*Math.tan(s/4)/3,u=nM:C2&&l.push(e),l}function sG(t,e,n,i,r,o,a,s,l,u){if(oG(t,n)&&oG(e,i)&&oG(r,a)&&oG(o,s))l.push(a,s);else{var h=2/u,c=h*h,p=a-t,d=s-e,f=Math.sqrt(p*p+d*d);p/=f,d/=f;var g=n-t,y=i-e,v=r-a,m=o-s,x=g*g+y*y,_=v*v+m*m;if(x=0&&_-w*w=0)l.push(a,s);else{var S=[],M=[];Ze(t,n,r,a,.5,S),Ze(e,i,o,s,.5,M),sG(S[0],M[0],S[1],M[1],S[2],M[2],S[3],M[3],l,u),sG(S[4],M[4],S[5],M[5],S[6],M[6],S[7],M[7],l,u)}}}}function lG(t,e,n){var i=t[e],r=t[1-e],o=Math.abs(i/r),a=Math.ceil(Math.sqrt(o*n)),s=Math.floor(n/a);0===s&&(s=1,a=n);for(var l=[],u=0;u0)for(u=0;uMath.abs(u),c=lG([l,u],h?0:1,e),p=(h?s:u)/c.length,d=0;d1?null:new Ji(d*l+t,d*u+e)}function pG(t,e,n){var i=new Ji;Ji.sub(i,n,e),i.normalize();var r=new Ji;return Ji.sub(r,t,e),r.dot(i)}function dG(t,e){var n=t[t.length-1];n&&n[0]===e[0]&&n[1]===e[1]||t.push(e)}function fG(t){var e=t.points,n=[],i=[];Ma(e,n,i);var r=new sr(n[0],n[1],i[0]-n[0],i[1]-n[1]),o=r.width,a=r.height,s=r.x,l=r.y,u=new Ji,h=new Ji;return o>a?(u.x=h.x=s+o/2,u.y=l,h.y=l+a):(u.y=h.y=l+a/2,u.x=s,h.x=s+o),function(t,e,n){for(var i=t.length,r=[],o=0;o0;l/=2){var u=0,h=0;(t&l)>0&&(u=1),(e&l)>0&&(h=1),s+=l*l*(3*u^h),0===h&&(1===u&&(t=l-1-t,e=l-1-e),a=t,t=e,e=a)}return s}function LG(t){var e=1/0,n=1/0,i=-1/0,r=-1/0,o=z(t,(function(t){var o=t.getBoundingRect(),a=t.getComputedTransform(),s=o.x+o.width/2+(a?a[4]:0),l=o.y+o.height/2+(a?a[5]:0);return e=Math.min(s,e),n=Math.min(l,n),i=Math.max(s,i),r=Math.max(l,r),[s,l]}));return z(o,(function(o,a){return{cp:o,z:kG(o[0],o[1],e,n,i,r),path:t[a]}})).sort((function(t,e){return t.z-e.z})).map((function(t){return t.path}))}function PG(t){return function(t,e){var n,i=[],r=t.shape;switch(t.type){case"rect":!function(t,e,n){for(var i=t.width,r=t.height,o=i>r,a=lG([i,r],o?0:1,e),s=o?"width":"height",l=o?"height":"width",u=o?"x":"y",h=o?"y":"x",c=t[s]/a.length,p=0;p=0;r--)if(!n[r].many.length){var l=n[s].many;if(l.length<=1){if(!s)return n;s=0}o=l.length;var u=Math.ceil(o/2);n[r].many=l.slice(u,o),n[s].many=l.slice(0,u),s++}return n}var NG={clone:function(t){for(var e=[],n=1-Math.pow(1-t.path.style.opacity,1/t.count),i=0;i0){var s,l,u=i.getModel("universalTransition").get("delay"),h=Object.assign({setToFinal:!0},a);OG(t)&&(s=t,l=e),OG(e)&&(s=e,l=t);for(var c=s?s===t:t.length>e.length,p=s?RG(l,s):RG(c?e:t,[c?t:e]),d=0,f=0;f1e4))for(var i=n.getIndices(),r=function(t){for(var e=t.dimensions,n=0;n0&&i.group.traverse((function(t){t instanceof gs&&!t.animators.length&&t.animateFrom({style:{opacity:0}},r)}))}))}function UG(t){return t.getModel("universalTransition").get("seriesKey")||t.id}function XG(t){return Y(t)?t.sort().join(","):t}function ZG(t){if(t.hostModel)return t.hostModel.getModel("universalTransition").get("divideShape")}function jG(t,e){for(var n=0;n=0&&r.push({data:e.oldData[n],divide:ZG(e.oldData[n]),dim:t.dimension})})),E(ho(t.to),(function(t){var e=jG(n.updatedSeries,t);if(e>=0){var i=n.updatedSeries[e].getData();o.push({data:i,divide:ZG(i),dim:t.dimension})}})),r.length>0&&o.length>0&&YG(r,o,i)}(t,i,n,e)}));else{var o=function(t,e){var n=ft(),i=ft(),r=ft();return E(t.oldSeries,(function(e,n){var o=t.oldData[n],a=UG(e),s=XG(a);i.set(s,o),Y(a)&&E(a,(function(t){r.set(t,{data:o,key:s})}))})),E(e.updatedSeries,(function(t){if(t.isUniversalTransitionEnabled()&&t.isAnimationEnabled()){var e=t.getData(),o=UG(t),a=XG(o),s=i.get(a);if(s)n.set(a,{oldSeries:[{divide:ZG(s),data:s}],newSeries:[{divide:ZG(e),data:e}]});else if(Y(o)){var l=[];E(o,(function(t){var e=i.get(t);e&&l.push({divide:ZG(e),data:e})})),l.length&&n.set(a,{oldSeries:l,newSeries:[{data:e,divide:ZG(e)}]})}else{var u=r.get(o);if(u){var h=n.get(u.key);h||(h={oldSeries:[{data:u.data,divide:ZG(u.data)}],newSeries:[]},n.set(u.key,h)),h.newSeries.push({data:e,divide:ZG(e)})}}}})),n}(i,n);E(o.keys(),(function(t){var n=o.get(t);YG(n.oldSeries,n.newSeries,e)}))}E(n.updatedSeries,(function(t){t.__universalTransitionEnabled&&(t.__universalTransitionEnabled=!1)}))}for(var a=t.getSeries(),s=i.oldSeries=[],l=i.oldData=[],u=0;u 0 && (this._stillFrameAccum++, this._stillFrameAccum > this._sleepAfterStill && this.animation.stop()) }, t.prototype.setSleepAfterStill = function (t) { this._sleepAfterStill = t }, t.prototype.wakeUp = function () { this.animation.start(), this._stillFrameAccum = 0 }, t.prototype.refreshHover = function () { this._needsRefreshHover = !0 }, t.prototype.refreshHoverImmediately = function () { this._needsRefreshHover = !1, this.painter.refreshHover && this.painter.getType() === 'canvas' && this.painter.refreshHover() }, t.prototype.resize = function (t) { t = t || {}, this.painter.resize(t.width, t.height), this.handler.resize() }, t.prototype.clearAnimation = function () { this.animation.clear() }, t.prototype.getWidth = function () { return this.painter.getWidth() }, t.prototype.getHeight = function () { return this.painter.getHeight() }, t.prototype.setCursorStyle = function (t) { this.handler.setCursorStyle(t) }, t.prototype.findHover = function (t, e) { return this.handler.findHover(t, e) }, t.prototype.on = function (t, e, n) { return this.handler.on(t, e, n), this }, t.prototype.off = function (t, e) { this.handler.off(t, e) }, t.prototype.trigger = function (t, e) { this.handler.trigger(t, e) }, t.prototype.clear = function () { for (let t = this.storage.getRoots(), e = 0; e < t.length; e++)t[e] instanceof Cr && t[e].removeSelfFromZr(this); this.storage.delAllRoots(), this.painter.clear() }, t.prototype.dispose = function () { let t; this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, t = this.id, delete Ar[t] }, t + }()); function Lr(t, e) { const n = new kr(M(), t, e); return Ar[n.id] = n, n } function Pr(t, e) { Dr[t] = e } const Or = Object.freeze({ __proto__: null, init: Lr, dispose(t) { t.dispose() }, disposeAll() { for (const t in Ar)Ar.hasOwnProperty(t) && Ar[t].dispose(); Ar = {} }, getInstance(t) { return Ar[t] }, registerPainter: Pr, version: '5.3.2' }); function Nr(t, e, n, i) { + const r = e[0]; const o = e[1]; const a = n[0]; const s = n[1]; const l = o - r; const u = s - a; if (l === 0) + return u === 0 ? a : (a + s) / 2; if (i) { + if (l > 0) { + if (t <= r) + return a; if (t >= o) + return s + } + else { + if (t >= r) + return a; if (t <= o) + return s + } + } + else { + if (t === r) + return a; if (t === o) + return s + } return (t - r) / l * u + a + } function Er(t, e) { switch (t) { case 'center':case 'middle':t = '50%'; break; case 'left':case 'top':t = '0%'; break; case 'right':case 'bottom':t = '100%' } return X(t) ? (n = t, n.replace(/^\s+|\s+$/g, '')).match(/%$/) ? Number.parseFloat(t) / 100 * e : Number.parseFloat(t) : t == null ? Number.NaN : +t; let n } function zr(t, e, n) { return e == null && (e = 10), e = Math.min(Math.max(0, e), 20), t = (+t).toFixed(e), n ? t : +t } function Vr(t) { return t.sort((t, e) => { return t - e }), t } function Br(t) { + if (t = +t, isNaN(t)) + return 0; if (t > 1e-14) { + for (let e = 1, n = 0; n < 15; n++, e *= 10) { + if (Math.round(t * e) / e === t) + return n + } + } return Fr(t) + } function Fr(t) { const e = t.toString().toLowerCase(); const n = e.indexOf('e'); const i = n > 0 ? +e.slice(n + 1) : 0; const r = n > 0 ? n : e.length; const o = e.indexOf('.'); const a = o < 0 ? 0 : r - 1 - o; return Math.max(0, a - i) } function Gr(t, e) { const n = Math.log; const i = Math.LN10; const r = Math.floor(n(t[1] - t[0]) / i); const o = Math.round(n(Math.abs(e[1] - e[0])) / i); const a = Math.min(Math.max(-r + o, 0), 20); return isFinite(a) ? a : 20 } function Wr(t, e, n) { + if (!t[e]) + return 0; const i = V(t, (t, e) => { return t + (isNaN(e) ? 0 : e) }, 0); if (i === 0) + return 0; for (var r = 10 ** n, o = z(t, (t) => { return (isNaN(t) ? 0 : t) / i * r * 100 }), a = 100 * r, s = z(o, (t) => { return Math.floor(t) }), l = V(s, (t, e) => { return t + e }, 0), u = z(o, (t, e) => { return t - s[e] }); l < a;) { for (var h = Number.NEGATIVE_INFINITY, c = null, p = 0, d = u.length; p < d; ++p)u[p] > h && (h = u[p], c = p); ++s[c], u[c] = 0, ++l } return s[e] / r + } function Hr(t, e) { const n = Math.max(Br(t), Br(e)); const i = t + e; return n > 20 ? i : zr(i, n) } const Yr = 9007199254740991; function Ur(t) { const e = 2 * Math.PI; return (t % e + e) % e } function Xr(t) { return t > -1e-4 && t < 1e-4 } const Zr = /^(?:(\d{4})(?:[-/](\d{1,2})(?:[-/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[+\-]\d\d:?\d\d)?)?)?)?)?$/; function jr(t) { + if (t instanceof Date) + return t; if (X(t)) { + const e = Zr.exec(t); if (!e) + return new Date(Number.NaN); if (e[8]) { let n = +e[4] || 0; return e[8].toUpperCase() !== 'Z' && (n -= +e[8].slice(0, 3)), new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, n, +(e[5] || 0), +e[6] || 0, e[7] ? +e[7].substring(0, 3) : 0)) } return new Date(+e[1], +(e[2] || 1) - 1, +e[3] || 1, +e[4] || 0, +(e[5] || 0), +e[6] || 0, e[7] ? +e[7].substring(0, 3) : 0) + } return t == null ? new Date(Number.NaN) : new Date(Math.round(t)) + } function qr(t) { return 10 ** Kr(t) } function Kr(t) { + if (t === 0) + return 0; let e = Math.floor(Math.log(t) / Math.LN10); return t / 10 ** e >= 10 && e++, e + } function $r(t, e) { const n = Kr(t); const i = 10 ** n; const r = t / i; return t = (e ? r < 1.5 ? 1 : r < 2.5 ? 2 : r < 4 ? 3 : r < 7 ? 5 : 10 : r < 1 ? 1 : r < 2 ? 2 : r < 3 ? 3 : r < 5 ? 5 : 10) * i, n >= -20 ? +t.toFixed(n < 0 ? -n : 0) : t } function Jr(t, e) { const n = (t.length - 1) * e + 1; const i = Math.floor(n); const r = +t[i - 1]; const o = n - i; return o ? r + o * (t[i] - r) : r } function Qr(t) { t.sort((t, e) => { return s(t, e, 0) ? -1 : 1 }); for (let e = -1 / 0, n = 1, i = 0; i < t.length;) { for (var r = t[i].interval, o = t[i].close, a = 0; a < 2; a++)r[a] <= e && (r[a] = e, o[a] = a ? 1 : 1 - n), e = r[a], n = o[a]; r[0] === r[1] && o[0] * o[1] != 1 ? t.splice(i, 1) : i++ } return t; function s(t, e, n) { return t.interval[n] < e.interval[n] || t.interval[n] === e.interval[n] && (t.close[n] - e.close[n] == (n ? -1 : 1) || !n && s(t, e, 1)) } } function to(t) { const e = Number.parseFloat(t); return e == t && (e !== 0 || !X(t) || t.indexOf('x') <= 0) ? e : Number.NaN } function eo(t) { return !isNaN(to(t)) } function no() { return Math.round(9 * Math.random()) } function io(t, e) { return e === 0 ? t : io(e, t % e) } function ro(t, e) { return t == null ? e : e == null ? t : t * e / io(t, e) } function ao(t) { throw new Error(t) } function so(t, e, n) { return (e - t) * n + t } typeof console != 'undefined' && console.warn && console.log; const lo = 'series\0'; const uo = '\0_ec_\0'; function ho(t) { return Array.isArray(t) ? t : t == null ? [] : [t] } function co(t, e, n) { if (t) { t[e] = t[e] || {}, t.emphasis = t.emphasis || {}, t.emphasis[e] = t.emphasis[e] || {}; for (let i = 0, r = n.length; i < r; i++) { const o = n[i]; !t.emphasis[e].hasOwnProperty(o) && t[e].hasOwnProperty(o) && (t.emphasis[e][o] = t[e][o]) } } } const po = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; function fo(t) { return !q(t) || Y(t) || t instanceof Date ? t : t.value } function go(t) { return q(t) && !(Array.isArray(t)) } function yo(t, e, n) { + const i = n === 'normalMerge'; const r = n === 'replaceMerge'; const o = n === 'replaceAll'; t = t || [], e = (e || []).slice(); const a = ft(); E(e, (t, n) => { q(t) || (e[n] = null) }); let s; let l; const u = (function (t, e, n) { + const i = []; if (n === 'replaceAll') + return i; for (let r = 0; r < t.length; r++) { const o = t[r]; o && o.id != null && e.set(o.id, r), i.push({ existing: n === 'replaceMerge' || bo(o) ? null : o, newOption: null, keyInfo: null, brandNew: null }) } return i + }(t, a, n)); return (i || r) && (function (t, e, n, i) { E(i, (r, o) => { if (r && r.id != null) { const a = mo(r.id); const s = n.get(a); if (s != null) { const l = t[s]; lt(!l.newOption, `Duplicated option on id "${a}".`), l.newOption = r, l.existing = e[s], i[o] = null } } }) }(u, t, a, e)), i && (function (t, e) { + E(e, (n, i) => { + if (n && n.name != null) { + for (let r = 0; r < t.length; r++) { + const o = t[r].existing; if (!t[r].newOption && o && (o.id == null || n.id == null) && !bo(n) && !bo(o) && vo('name', o, n)) + return t[r].newOption = n, void (e[i] = null) + } + } + }) + }(u, e)), i || r ? (function (t, e, n) { E(e, (e) => { if (e) { for (var i, r = 0; (i = t[r]) && (i.newOption || bo(i.existing) || i.existing && e.id != null && !vo('id', e, i.existing));)r++; i ? (i.newOption = e, i.brandNew = n) : t.push({ newOption: e, brandNew: n, existing: null, keyInfo: null }), r++ } }) }(u, e, r)) : o && (function (t, e) { E(e, (e) => { t.push({ newOption: e, brandNew: !0, existing: null, keyInfo: null }) }) }(u, e)), s = u, l = ft(), E(s, (t) => { const e = t.existing; e && l.set(e.id, t) }), E(s, (t) => { const e = t.newOption; lt(!e || e.id == null || !l.get(e.id) || l.get(e.id) === t, `id duplicates: ${e && e.id}`), e && e.id != null && l.set(e.id, t), !t.keyInfo && (t.keyInfo = {}) }), E(s, (t, e) => { + const n = t.existing; const i = t.newOption; const r = t.keyInfo; if (q(i)) { + if (r.name = i.name != null ? mo(i.name) : n ? n.name : lo + e, n) { + r.id = mo(n.id) + } + else if (i.id != null) { + r.id = mo(i.id) + } + else { let o = 0; do { r.id = `\0${r.name}\0${o++}` } while (l.get(r.id)) }l.set(r.id, t) + } + }), u + } function vo(t, e, n) { const i = xo(e[t], null); const r = xo(n[t], null); return i != null && r != null && i === r } function mo(t) { return xo(t, '') } function xo(t, e) { return t == null ? e : X(t) ? t : j(t) || Z(t) ? `${t}` : e } function _o(t) { const e = t.name; return !(!e || !e.indexOf(lo)) } function bo(t) { return t && t.id != null && mo(t.id).indexOf(uo) === 0 } function wo(t, e) { return e.dataIndexInside != null ? e.dataIndexInside : e.dataIndex != null ? Y(e.dataIndex) ? z(e.dataIndex, (e) => { return t.indexOfRawIndex(e) }) : t.indexOfRawIndex(e.dataIndex) : e.name != null ? Y(e.name) ? z(e.name, (e) => { return t.indexOfName(e) }) : t.indexOfName(e.name) : void 0 } function So() { const t = `__ec_inner_${Mo++}`; return function (e) { return e[t] || (e[t] = {}) } } var Mo = no(); function Io(t, e, n) { const i = To(e, n); const r = i.mainTypeSpecified; const o = i.queryOptionMap; const a = i.others; const s = n ? n.defaultMainType : null; return !r && s && o.set(s, {}), o.each((e, i) => { const r = Ao(t, i, e, { useDefault: s === i, enableAll: !n || n.enableAll == null || n.enableAll, enableNone: !n || n.enableNone == null || n.enableNone }); a[`${i}Models`] = r.models, a[`${i}Model`] = r.models[0] }), a } function To(t, e) { + let n; if (X(t)) { const i = {}; i[`${t}Index`] = 0, n = i } + else { + n = t + } const r = ft(); const o = {}; let a = !1; return E(n, (t, n) => { + if (n !== 'dataIndex' && n !== 'dataIndexInside') { const i = n.match(/^(\w+)(Index|Id|Name)$/) || []; const s = i[1]; const l = (i[2] || '').toLowerCase(); !s || !l || e && e.includeMainTypes && P(e.includeMainTypes, s) < 0 || (a = a || !!s, (r.get(s) || r.set(s, {}))[l] = t) } + else { + o[n] = t + } + }), { mainTypeSpecified: a, queryOptionMap: r, others: o } + } const Co = { useDefault: !0, enableAll: !1, enableNone: !1 }; const Do = { useDefault: !1, enableAll: !0, enableNone: !0 }; function Ao(t, e, n, i) { i = i || Co; let r = n.index; let o = n.id; let a = n.name; const s = { models: null, specified: r != null || o != null || a != null }; if (!s.specified) { let l = void 0; return s.models = i.useDefault && (l = t.getComponent(e)) ? [l] : [], s } return r === 'none' || !1 === r ? (lt(i.enableNone, '`"none"` or `false` is not a valid value on index option.'), s.models = [], s) : (r === 'all' && (lt(i.enableAll, '`"all"` is not a valid value on index option.'), r = o = a = null), s.models = t.queryComponents({ mainType: e, index: r, id: o, name: a }), s) } function ko(t, e, n) { t.setAttribute ? t.setAttribute(e, n) : t[e] = n } function Lo(t, e) { const n = ft(); const i = []; return E(t, (t) => { const r = e(t); (n.get(r) || (i.push(r), n.set(r, []))).push(t) }), { keys: i, buckets: n } } function Po(t, e, n, i, r) { + const o = e == null || e === 'auto'; if (i == null) + return i; if (j(i)) + return zr(f = so(n || 0, i, r), o ? Math.max(Br(n || 0), Br(i)) : e); if (X(i)) + return r < 1 ? n : i; for (var a = [], s = n, l = i, u = Math.max(s ? s.length : 0, l.length), h = 0; h < u; ++h) { + const c = t.getDimensionInfo(h); if (c && c.type === 'ordinal') { + a[h] = (r < 1 && s ? s : l)[h] + } + else { const p = s && s[h] ? s[h] : 0; const d = l[h]; var f = so(p, d, r); a[h] = zr(f, o ? Math.max(Br(p), Br(d)) : e) } + } return a + } const Oo = '___EC__COMPONENT__CONTAINER___'; const Ro = '___EC__EXTENDED_CLASS___'; function No(t) { const e = { main: '', sub: '' }; if (t) { const n = t.split('.'); e.main = n[0] || '', e.sub = n[1] || '' } return e } function Eo(t, e) { t.$constructor = t, t.extend = function (t) { let e; let i; const r = this; return U(i = r) && /^class\s/.test(Function.prototype.toString.call(i)) ? e = (function (t) { function e() { return t.apply(this, arguments) || this } return n(e, t), e }(r)) : O(e = function () { (t.$constructor || r).apply(this, arguments) }, this), A(e.prototype, t), e[Ro] = !0, e.extend = this.extend, e.superCall = Bo, e.superApply = Fo, e.superClass = r, e } } function zo(t, e) { t.extend = e.extend } let Vo = Math.round(10 * Math.random()); function Bo(t, e) { for (var n = [], i = 2; i < arguments.length; i++)n[i - 2] = arguments[i]; return this.superClass.prototype[e].apply(t, n) } function Fo(t, e, n) { return this.superClass.prototype[e].apply(t, n) } function Go(t) { + const e = {}; t.registerClass = function (t) { let n; const i = t.type || t.prototype.type; if (i) { lt(/^\w+(\.\w+)?$/.test(n = i), `componentType "${n}" illegal`), t.prototype.type = i; const r = No(i); r.sub ? r.sub !== Oo && ((function (t) { let n = e[t.main]; return n && n[Oo] || ((n = e[t.main] = {})[Oo] = !0), n }(r))[r.sub] = t) : e[r.main] = t } return t }, t.getClass = function (t, n, i) { + let r = e[t]; if (r && r[Oo] && (r = n ? r[n] : null), i && !r) + throw new Error(n ? `Component ${t}.${n || ''} is used but not imported.` : `${t}.type should be specified.`); return r + }, t.getClassesByMainType = function (t) { const n = No(t); const i = []; const r = e[n.main]; return r && r[Oo] ? E(r, (t, e) => { e !== Oo && i.push(t) }) : i.push(r), i }, t.hasClass = function (t) { const n = No(t); return !!e[n.main] }, t.getAllClassMainTypes = function () { const t = []; return E(e, (e, n) => { t.push(n) }), t }, t.hasSubTypes = function (t) { const n = No(t); const i = e[n.main]; return i && i[Oo] } + } function Wo(t, e) { for (let n = 0; n < t.length; n++)t[n][1] || (t[n][1] = t[n][0]); return e = e || !1, function (n, i, r) { for (var o = {}, a = 0; a < t.length; a++) { const s = t[a][1]; if (!(i && P(i, s) >= 0 || r && P(r, s) < 0)) { const l = n.getShallow(s, e); l != null && (o[t[a][0]] = l) } } return o } } const Ho = Wo([['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor']]); const Yo = (function () { function t() {} return t.prototype.getAreaStyle = function (t, e) { return Ho(this, t, e) }, t }()); const Uo = new ln(50); function Xo(t) { if (typeof t == 'string') { const e = Uo.get(t); return e && e.image } return t } function Zo(t, e, n, i, r) { + if (t) { + if (typeof t == 'string') { + if (e && e.__zrImageSrc === t || !n) + return e; const o = Uo.get(t); const a = { hostEl: n, cb: i, cbPayload: r }; return o ? !qo(e = o.image) && o.pending.push(a) : ((e = h.loadImage(t, jo, jo)).__zrImageSrc = t, Uo.put(t, e.__cachedImgObj = { image: e, pending: [a] })), e + } return t + } return e + } function jo() { const t = this.__cachedImgObj; this.onload = this.onerror = this.__cachedImgObj = null; for (let e = 0; e < t.pending.length; e++) { const n = t.pending[e]; const i = n.cb; i && i(this, n.cbPayload), n.hostEl.dirty() }t.pending.length = 0 } function qo(t) { return t && t.width && t.height } const Ko = /\{(\w+)\|([^}]*)\}/g; function $o(t, e, n, i, r) { + if (!e) + return ''; const o = (`${t}`).split('\n'); r = Jo(e, n, i, r); for (let a = 0, s = o.length; a < s; a++)o[a] = Qo(o[a], r); return o.join('\n') + } function Jo(t, e, n, i) { const r = A({}, i = i || {}); r.font = e, n = rt(n, '...'), r.maxIterations = rt(i.maxIterations, 2); const o = r.minChar = rt(i.minChar, 0); r.cnCharWidth = ur('国', e); const a = r.ascCharWidth = ur('a', e); r.placeholder = rt(i.placeholder, ''); for (var s = t = Math.max(0, t - 1), l = 0; l < o && s >= a; l++)s -= a; let u = ur(n, e); return u > s && (n = '', u = 0), s = t - u, r.ellipsis = n, r.ellipsisWidth = u, r.contentWidth = s, r.containerWidth = t, r } function Qo(t, e) { + const n = e.containerWidth; const i = e.font; const r = e.contentWidth; if (!n) + return ''; let o = ur(t, i); if (o <= n) + return t; for (let a = 0; ;a++) { if (o <= r || a >= e.maxIterations) { t += e.ellipsis; break } const s = a === 0 ? ta(t, r, e.ascCharWidth, e.cnCharWidth) : o > 0 ? Math.floor(t.length * r / o) : 0; o = ur(t = t.substr(0, s), i) } return t === '' && (t = e.placeholder), t + } function ta(t, e, n, i) { for (var r = 0, o = 0, a = t.length; o < a && r < e; o++) { const s = t.charCodeAt(o); r += s >= 0 && s <= 127 ? n : i } return o } const ea = function () {}; const na = function (t) { this.tokens = [], t && (this.tokens = t) }; const ia = function () { this.width = 0, this.height = 0, this.contentWidth = 0, this.contentHeight = 0, this.outerWidth = 0, this.outerHeight = 0, this.lines = [] }; function ra(t, e, n, i, r) { + let o; let a; const s = e === ''; const l = r && n.rich[r] || {}; const u = t.lines; const h = l.font || n.font; let c = !1; if (i) { + const p = l.padding; const d = p ? p[1] + p[3] : 0; if (l.width != null && l.width !== 'auto') { const f = gr(l.width, i.width) + d; u.length > 0 && f + i.accumWidth > i.width && (o = e.split('\n'), c = !0), i.accumWidth = f } + else { const g = sa(e, h, i.width, i.breakAll, i.accumWidth); i.accumWidth = g.accumWidth + d, a = g.linesWidths, o = g.lines } + } + else { + o = e.split('\n') + } for (let y = 0; y < o.length; y++) { + const v = o[y]; const m = new ea(); if (m.styleName = r, m.text = v, m.isLineHolder = !v && !s, typeof l.width == 'number' ? m.width = l.width : m.width = a ? a[y] : ur(v, h), y || c) { + u.push(new na([m])) + } + else { const x = (u[u.length - 1] || (u[0] = new na())).tokens; const _ = x.length; _ === 1 && x[0].isLineHolder ? x[0] = m : (v || !_ || s) && x.push(m) } + } + } const oa = V(',&?/;] '.split(''), (t, e) => { return t[e] = !0, t }, {}); function aa(t) { return !(function (t) { const e = t.charCodeAt(0); return e >= 33 && e <= 383 }(t)) || !!oa[t] } function sa(t, e, n, i, r) { + for (var o = [], a = [], s = '', l = '', u = 0, h = 0, c = 0; c < t.length; c++) { + const p = t.charAt(c); if (p !== '\n') { const d = ur(p, e); const f = !i && !aa(p); (o.length ? h + d > n : r + h + d > n) ? h ? (s || l) && (f ? (s || (s = l, l = '', h = u = 0), o.push(s), a.push(h - u), l += p, s = '', h = u += d) : (l && (s += l, l = '', u = 0), o.push(s), a.push(h), s = p, h = d)) : f ? (o.push(l), a.push(u), l = p, u = d) : (o.push(p), a.push(d)) : (h += d, f ? (l += p, u += d) : (l && (s += l, l = '', u = 0), s += p)) } + else { + l && (s += l, h += u), o.push(s), a.push(h), s = '', l = '', u = 0, h = 0 + } + } return o.length || s || (s = t, l = '', u = 0), l && (s += l), s && (o.push(s), a.push(h)), o.length === 1 && (h += r), { accumWidth: h, lines: o, linesWidths: a } + } const la = `__zr_style_${Math.round(10 * Math.random())}`; const ua = { shadowBlur: 0, shadowOffsetX: 0, shadowOffsetY: 0, shadowColor: '#000', opacity: 1, blend: 'source-over' }; const ha = { style: { shadowBlur: !0, shadowOffsetX: !0, shadowOffsetY: !0, shadowColor: !0, opacity: !0 } }; ua[la] = !0; const ca = ['z', 'z2', 'invisible']; const pa = ['invisible']; const da = (function (t) { + function e(e) { return t.call(this, e) || this } let i; return n(e, t), e.prototype._init = function (e) { for (let n = G(e), i = 0; i < n.length; i++) { const r = n[i]; r === 'style' ? this.useStyle(e[r]) : t.prototype.attrKV.call(this, r, e[r]) } this.style || this.useStyle({}) }, e.prototype.beforeBrush = function () {}, e.prototype.afterBrush = function () {}, e.prototype.innerBeforeBrush = function () {}, e.prototype.innerAfterBrush = function () {}, e.prototype.shouldBePainted = function (t, e, n, i) { + const r = this.transform; if (this.ignore || this.invisible || this.style.opacity === 0 || this.culling && (function (t, e, n) { return fa.copy(t.getBoundingRect()), t.transform && fa.applyTransform(t.transform), ga.width = e, ga.height = n, !fa.intersect(ga) }(this, t, e)) || r && !r[0] && !r[3]) + return !1; if (n && this.__clipPaths) { + for (let o = 0; o < this.__clipPaths.length; ++o) { + if (this.__clipPaths[o].isZeroArea()) + return !1 + } + } if (i && this.parent) { + for (let a = this.parent; a;) { + if (a.ignore) + return !1; a = a.parent + } + } return !0 + }, e.prototype.contain = function (t, e) { return this.rectContain(t, e) }, e.prototype.traverse = function (t, e) { t.call(e, this) }, e.prototype.rectContain = function (t, e) { const n = this.transformCoordToLocal(t, e); return this.getBoundingRect().contain(n[0], n[1]) }, e.prototype.getPaintRect = function () { let t = this._paintRect; if (!this._paintRect || this.__dirty) { const e = this.transform; const n = this.getBoundingRect(); const i = this.style; const r = i.shadowBlur || 0; const o = i.shadowOffsetX || 0; const a = i.shadowOffsetY || 0; t = this._paintRect || (this._paintRect = new sr(0, 0, 0, 0)), e ? sr.applyTransform(t, n, e) : t.copy(n), (r || o || a) && (t.width += 2 * r + Math.abs(o), t.height += 2 * r + Math.abs(a), t.x = Math.min(t.x, t.x + o - r), t.y = Math.min(t.y, t.y + a - r)); const s = this.dirtyRectTolerance; t.isZero() || (t.x = Math.floor(t.x - s), t.y = Math.floor(t.y - s), t.width = Math.ceil(t.width + 1 + 2 * s), t.height = Math.ceil(t.height + 1 + 2 * s)) } return t }, e.prototype.setPrevPaintRect = function (t) { t ? (this._prevPaintRect = this._prevPaintRect || new sr(0, 0, 0, 0), this._prevPaintRect.copy(t)) : this._prevPaintRect = null }, e.prototype.getPrevPaintRect = function () { return this._prevPaintRect }, e.prototype.animateStyle = function (t) { return this.animate('style', t) }, e.prototype.updateDuringAnimation = function (t) { t === 'style' ? this.dirtyStyle() : this.markRedraw() }, e.prototype.attrKV = function (e, n) { e !== 'style' ? t.prototype.attrKV.call(this, e, n) : this.style ? this.setStyle(n) : this.useStyle(n) }, e.prototype.setStyle = function (t, e) { return typeof t == 'string' ? this.style[t] = e : A(this.style, t), this.dirtyStyle(), this }, e.prototype.dirtyStyle = function (t) { t || this.markRedraw(), this.__dirty |= 2, this._rect && (this._rect = null) }, e.prototype.dirty = function () { this.dirtyStyle() }, e.prototype.styleChanged = function () { return !!(2 & this.__dirty) }, e.prototype.styleUpdated = function () { this.__dirty &= -3 }, e.prototype.createStyle = function (t) { return yt(ua, t) }, e.prototype.useStyle = function (t) { t[la] || (t = this.createStyle(t)), this.__inHover ? this.__hoverStyle = t : this.style = t, this.dirtyStyle() }, e.prototype.isStyleObject = function (t) { return t[la] }, e.prototype._innerSaveToNormal = function (e) { t.prototype._innerSaveToNormal.call(this, e); const n = this._normalState; e.style && !n.style && (n.style = this._mergeStyle(this.createStyle(), this.style)), this._savePrimaryToNormal(e, n, ca) }, e.prototype._applyStateObj = function (e, n, i, r, o, a) { + t.prototype._applyStateObj.call(this, e, n, i, r, o, a); let s; const l = !(n && r); if (n && n.style ? o ? r ? s = n.style : (s = this._mergeStyle(this.createStyle(), i.style), this._mergeStyle(s, n.style)) : (s = this._mergeStyle(this.createStyle(), r ? this.style : i.style), this._mergeStyle(s, n.style)) : l && (s = i.style), s) { + if (o) { + const u = this.style; if (this.style = this.createStyle(l ? {} : u), l) { + for (var h = G(u), c = 0; c < h.length; c++)(d = h[c]) in s && (s[d] = s[d], this.style[d] = u[d]) + } const p = G(s); for (c = 0; c < p.length; c++) { var d = p[c]; this.style[d] = this.style[d] } this._transitionState(e, { style: s }, a, this.getAnimationStyleProps()) + } + else { + this.useStyle(s) + } + } const f = this.__inHover ? pa : ca; for (c = 0; c < f.length; c++)d = f[c], n && n[d] != null ? this[d] = n[d] : l && i[d] != null && (this[d] = i[d]) + }, e.prototype._mergeStates = function (e) { for (var n, i = t.prototype._mergeStates.call(this, e), r = 0; r < e.length; r++) { const o = e[r]; o.style && (n = n || {}, this._mergeStyle(n, o.style)) } return n && (i.style = n), i }, e.prototype._mergeStyle = function (t, e) { return A(t, e), t }, e.prototype.getAnimationStyleProps = function () { return ha }, e.initDefaultProps = ((i = e.prototype).type = 'displayable', i.invisible = !1, i.z = 0, i.z2 = 0, i.zlevel = 0, i.culling = !1, i.cursor = 'pointer', i.rectHover = !1, i.incremental = !1, i._rect = null, i.dirtyRectTolerance = 0, void (i.__dirty = 3)), e + }(wr)); var fa = new sr(0, 0, 0, 0); var ga = new sr(0, 0, 0, 0); const ya = Math.min; const va = Math.max; const ma = Math.sin; const xa = Math.cos; const _a = 2 * Math.PI; const ba = wt(); const wa = wt(); const Sa = wt(); function Ma(t, e, n) { if (t.length !== 0) { for (var i = t[0], r = i[0], o = i[0], a = i[1], s = i[1], l = 1; l < t.length; l++)i = t[l], r = ya(r, i[0]), o = va(o, i[0]), a = ya(a, i[1]), s = va(s, i[1]); e[0] = r, e[1] = a, n[0] = o, n[1] = s } } function Ia(t, e, n, i, r, o) { r[0] = ya(t, n), r[1] = ya(e, i), o[0] = va(t, n), o[1] = va(e, i) } const Ta = []; const Ca = []; function Da(t, e, n, i, r, o, a, s, l, u) { const h = Xe; const c = He; let p = h(t, n, r, a, Ta); l[0] = 1 / 0, l[1] = 1 / 0, u[0] = -1 / 0, u[1] = -1 / 0; for (var d = 0; d < p; d++) { const f = c(t, n, r, a, Ta[d]); l[0] = ya(f, l[0]), u[0] = va(f, u[0]) } for (p = h(e, i, o, s, Ca), d = 0; d < p; d++) { const g = c(e, i, o, s, Ca[d]); l[1] = ya(g, l[1]), u[1] = va(g, u[1]) }l[0] = ya(t, l[0]), u[0] = va(t, u[0]), l[0] = ya(a, l[0]), u[0] = va(a, u[0]), l[1] = ya(e, l[1]), u[1] = va(e, u[1]), l[1] = ya(s, l[1]), u[1] = va(s, u[1]) } function Aa(t, e, n, i, r, o, a, s) { const l = Je; const u = Ke; const h = va(ya(l(t, n, r), 1), 0); const c = va(ya(l(e, i, o), 1), 0); const p = u(t, n, r, h); const d = u(e, i, o, c); a[0] = ya(t, r, p), a[1] = ya(e, o, d), s[0] = va(t, r, p), s[1] = va(e, o, d) } function ka(t, e, n, i, r, o, a, s, l) { + const u = Gt; const h = Wt; const c = Math.abs(r - o); if (c % _a < 1e-4 && c > 1e-4) + return s[0] = t - n, s[1] = e - i, l[0] = t + n, void (l[1] = e + i); if (ba[0] = xa(r) * n + t, ba[1] = ma(r) * i + e, wa[0] = xa(o) * n + t, wa[1] = ma(o) * i + e, u(s, ba, wa), h(l, ba, wa), (r %= _a) < 0 && (r += _a), (o %= _a) < 0 && (o += _a), r > o && !a ? o += _a : r < o && a && (r += _a), a) { const p = o; o = r, r = p } for (let d = 0; d < o; d += Math.PI / 2)d > r && (Sa[0] = xa(d) * n + t, Sa[1] = ma(d) * i + e, u(s, Sa, s), h(l, Sa, l)) + } const La = { M: 1, L: 2, C: 3, Q: 4, A: 5, Z: 6, R: 7 }; const Pa = []; const Oa = []; const Ra = []; const Na = []; const Ea = []; const za = []; const Va = Math.min; const Ba = Math.max; const Fa = Math.cos; const Ga = Math.sin; const Wa = Math.abs; const Ha = Math.PI; const Ya = 2 * Ha; const Ua = typeof Float32Array != 'undefined'; const Xa = []; function Za(t) { return Math.round(t / Ha * 1e8) / 1e8 % 2 * Ha } function ja(t, e) { let n = Za(t[0]); n < 0 && (n += Ya); const i = n - t[0]; let r = t[1]; r += i, !e && r - n >= Ya ? r = n + Ya : e && n - r >= Ya ? r = n - Ya : !e && n > r ? r = n + (Ya - Za(n - r)) : e && n < r && (r = n - (Ya - Za(r - n))), t[0] = n, t[1] = r } const qa = (function () { + function t(t) { this.dpr = 1, this._xi = 0, this._yi = 0, this._x0 = 0, this._y0 = 0, this._len = 0, t && (this._saveData = !1), this._saveData && (this.data = []) } return t.prototype.increaseVersion = function () { this._version++ }, t.prototype.getVersion = function () { return this._version }, t.prototype.setScale = function (t, e, n) { (n = n || 0) > 0 && (this._ux = Wa(n / Ai / t) || 0, this._uy = Wa(n / Ai / e) || 0) }, t.prototype.setDPR = function (t) { this.dpr = t }, t.prototype.setContext = function (t) { this._ctx = t }, t.prototype.getContext = function () { return this._ctx }, t.prototype.beginPath = function () { return this._ctx && this._ctx.beginPath(), this.reset(), this }, t.prototype.reset = function () { this._saveData && (this._len = 0), this._pathSegLen && (this._pathSegLen = null, this._pathLen = 0), this._version++ }, t.prototype.moveTo = function (t, e) { return this._drawPendingPt(), this.addData(La.M, t, e), this._ctx && this._ctx.moveTo(t, e), this._x0 = t, this._y0 = e, this._xi = t, this._yi = e, this }, t.prototype.lineTo = function (t, e) { + const n = Wa(t - this._xi); const i = Wa(e - this._yi); const r = n > this._ux || i > this._uy; if (this.addData(La.L, t, e), this._ctx && r && this._ctx.lineTo(t, e), r) { + this._xi = t, this._yi = e, this._pendingPtDist = 0 + } + else { const o = n * n + i * i; o > this._pendingPtDist && (this._pendingPtX = t, this._pendingPtY = e, this._pendingPtDist = o) } return this + }, t.prototype.bezierCurveTo = function (t, e, n, i, r, o) { return this._drawPendingPt(), this.addData(La.C, t, e, n, i, r, o), this._ctx && this._ctx.bezierCurveTo(t, e, n, i, r, o), this._xi = r, this._yi = o, this }, t.prototype.quadraticCurveTo = function (t, e, n, i) { return this._drawPendingPt(), this.addData(La.Q, t, e, n, i), this._ctx && this._ctx.quadraticCurveTo(t, e, n, i), this._xi = n, this._yi = i, this }, t.prototype.arc = function (t, e, n, i, r, o) { this._drawPendingPt(), Xa[0] = i, Xa[1] = r, ja(Xa, o), i = Xa[0]; const a = (r = Xa[1]) - i; return this.addData(La.A, t, e, n, n, i, a, 0, o ? 0 : 1), this._ctx && this._ctx.arc(t, e, n, i, r, o), this._xi = Fa(r) * n + t, this._yi = Ga(r) * n + e, this }, t.prototype.arcTo = function (t, e, n, i, r) { return this._drawPendingPt(), this._ctx && this._ctx.arcTo(t, e, n, i, r), this }, t.prototype.rect = function (t, e, n, i) { return this._drawPendingPt(), this._ctx && this._ctx.rect(t, e, n, i), this.addData(La.R, t, e, n, i), this }, t.prototype.closePath = function () { this._drawPendingPt(), this.addData(La.Z); const t = this._ctx; const e = this._x0; const n = this._y0; return t && t.closePath(), this._xi = e, this._yi = n, this }, t.prototype.fill = function (t) { t && t.fill(), this.toStatic() }, t.prototype.stroke = function (t) { t && t.stroke(), this.toStatic() }, t.prototype.len = function () { return this._len }, t.prototype.setData = function (t) { const e = t.length; this.data && this.data.length === e || !Ua || (this.data = new Float32Array(e)); for (let n = 0; n < e; n++) this.data[n] = t[n]; this._len = e }, t.prototype.appendPath = function (t) { + Array.isArray(t) || (t = [t]); for (var e = t.length, n = 0, i = this._len, r = 0; r < e; r++)n += t[r].len(); for (Ua && this.data instanceof Float32Array && (this.data = new Float32Array(i + n)), r = 0; r < e; r++) { + for (let o = t[r].data, a = 0; a < o.length; a++) this.data[i++] = o[a] + } this._len = i + }, t.prototype.addData = function (t, e, n, i, r, o, a, s, l) { if (this._saveData) { let u = this.data; this._len + arguments.length > u.length && (this._expandData(), u = this.data); for (let h = 0; h < arguments.length; h++)u[this._len++] = arguments[h] } }, t.prototype._drawPendingPt = function () { this._pendingPtDist > 0 && (this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY), this._pendingPtDist = 0) }, t.prototype._expandData = function () { if (!(Array.isArray(this.data))) { for (var t = [], e = 0; e < this._len; e++)t[e] = this.data[e]; this.data = t } }, t.prototype.toStatic = function () { if (this._saveData) { this._drawPendingPt(); const t = this.data; Array.isArray(t) && (t.length = this._len, Ua && this._len > 11 && (this.data = new Float32Array(t))) } }, t.prototype.getBoundingRect = function () { Ra[0] = Ra[1] = Ea[0] = Ea[1] = Number.MAX_VALUE, Na[0] = Na[1] = za[0] = za[1] = -Number.MAX_VALUE; let t; const e = this.data; let n = 0; let i = 0; let r = 0; let o = 0; for (t = 0; t < this._len;) { const a = e[t++]; const s = t === 1; switch (s && (r = n = e[t], o = i = e[t + 1]), a) { case La.M:n = r = e[t++], i = o = e[t++], Ea[0] = r, Ea[1] = o, za[0] = r, za[1] = o; break; case La.L:Ia(n, i, e[t], e[t + 1], Ea, za), n = e[t++], i = e[t++]; break; case La.C:Da(n, i, e[t++], e[t++], e[t++], e[t++], e[t], e[t + 1], Ea, za), n = e[t++], i = e[t++]; break; case La.Q:Aa(n, i, e[t++], e[t++], e[t], e[t + 1], Ea, za), n = e[t++], i = e[t++]; break; case La.A:var l = e[t++]; var u = e[t++]; var h = e[t++]; var c = e[t++]; var p = e[t++]; var d = e[t++] + p; t += 1; var f = !e[t++]; s && (r = Fa(p) * h + l, o = Ga(p) * c + u), ka(l, u, h, c, p, d, f, Ea, za), n = Fa(d) * h + l, i = Ga(d) * c + u; break; case La.R:Ia(r = n = e[t++], o = i = e[t++], r + e[t++], o + e[t++], Ea, za); break; case La.Z:n = r, i = o }Gt(Ra, Ra, Ea), Wt(Na, Na, za) } return t === 0 && (Ra[0] = Ra[1] = Na[0] = Na[1] = 0), new sr(Ra[0], Ra[1], Na[0] - Ra[0], Na[1] - Ra[1]) }, t.prototype._calculateLength = function () { const t = this.data; const e = this._len; const n = this._ux; const i = this._uy; let r = 0; let o = 0; let a = 0; let s = 0; this._pathSegLen || (this._pathSegLen = []); for (var l = this._pathSegLen, u = 0, h = 0, c = 0; c < e;) { const p = t[c++]; const d = c === 1; d && (a = r = t[c], s = o = t[c + 1]); let f = -1; switch (p) { case La.M:r = a = t[c++], o = s = t[c++]; break; case La.L:var g = t[c++]; var y = (x = t[c++]) - o; (Wa(A = g - r) > n || Wa(y) > i || c === e - 1) && (f = Math.sqrt(A * A + y * y), r = g, o = x); break; case La.C:var v = t[c++]; var m = t[c++]; var x = (g = t[c++], t[c++]); var _ = t[c++]; var b = t[c++]; f = qe(r, o, v, m, g, x, _, b, 10), r = _, o = b; break; case La.Q:f = en(r, o, v = t[c++], m = t[c++], g = t[c++], x = t[c++], 10), r = g, o = x; break; case La.A:var w = t[c++]; var S = t[c++]; var M = t[c++]; var I = t[c++]; var T = t[c++]; var C = t[c++]; var D = C + T; c += 1, t[c++], d && (a = Fa(T) * M + w, s = Ga(T) * I + S), f = Ba(M, I) * Va(Ya, Math.abs(C)), r = Fa(D) * M + w, o = Ga(D) * I + S; break; case La.R:a = r = t[c++], s = o = t[c++], f = 2 * t[c++] + 2 * t[c++]; break; case La.Z:var A = a - r; y = s - o, f = Math.sqrt(A * A + y * y), r = a, o = s }f >= 0 && (l[h++] = f, u += f) } return this._pathLen = u, u }, t.prototype.rebuildPath = function (t, e) { + let n; let i; let r; let o; let a; let s; let l; let u; let h; let c; const p = this.data; const d = this._ux; const f = this._uy; const g = this._len; const y = e < 1; let v = 0; let m = 0; let x = 0; if (!y || (this._pathSegLen || this._calculateLength(), l = this._pathSegLen, u = e * this._pathLen)) { + t:for (let _ = 0; _ < g;) { + const b = p[_++]; const w = _ === 1; switch (w && (n = r = p[_], i = o = p[_ + 1]), b !== La.L && x > 0 && (t.lineTo(h, c), x = 0), b) { + case La.M:n = r = p[_++], i = o = p[_++], t.moveTo(r, o); break; case La.L:a = p[_++], s = p[_++]; var S = Wa(a - r); var M = Wa(s - o); if (S > d || M > f) { if (y) { if (v + (j = l[m++]) > u) { var I = (u - v) / j; t.lineTo(r * (1 - I) + a * I, o * (1 - I) + s * I); break t }v += j }t.lineTo(a, s), r = a, o = s, x = 0 } + else { const T = S * S + M * M; T > x && (h = a, c = s, x = T) } break; case La.C:var C = p[_++]; var D = p[_++]; var A = p[_++]; var k = p[_++]; var L = p[_++]; var P = p[_++]; if (y) { if (v + (j = l[m++]) > u) { Ze(r, C, A, L, I = (u - v) / j, Pa), Ze(o, D, k, P, I, Oa), t.bezierCurveTo(Pa[1], Oa[1], Pa[2], Oa[2], Pa[3], Oa[3]); break t }v += j }t.bezierCurveTo(C, D, A, k, L, P), r = L, o = P; break; case La.Q:if (C = p[_++], D = p[_++], A = p[_++], k = p[_++], y) { if (v + (j = l[m++]) > u) { Qe(r, C, A, I = (u - v) / j, Pa), Qe(o, D, k, I, Oa), t.quadraticCurveTo(Pa[1], Oa[1], Pa[2], Oa[2]); break t }v += j }t.quadraticCurveTo(C, D, A, k), r = A, o = k; break; case La.A:var O = p[_++]; var R = p[_++]; var N = p[_++]; var E = p[_++]; var z = p[_++]; var V = p[_++]; var B = p[_++]; var F = !p[_++]; var G = N > E ? N : E; var W = Wa(N - E) > 0.001; var H = z + V; var Y = !1; if (y && (v + (j = l[m++]) > u && (H = z + V * (u - v) / j, Y = !0), v += j), W && t.ellipse ? t.ellipse(O, R, N, E, B, z, H, F) : t.arc(O, R, G, z, H, F), Y) + break t; w && (n = Fa(z) * N + O, i = Ga(z) * E + R), r = Fa(H) * N + O, o = Ga(H) * E + R; break; case La.R:n = r = p[_], i = o = p[_ + 1], a = p[_++], s = p[_++]; var U = p[_++]; var X = p[_++]; if (y) { if (v + (j = l[m++]) > u) { let Z = u - v; t.moveTo(a, s), t.lineTo(a + Va(Z, U), s), (Z -= U) > 0 && t.lineTo(a + U, s + Va(Z, X)), (Z -= X) > 0 && t.lineTo(a + Ba(U - Z, 0), s + X), (Z -= U) > 0 && t.lineTo(a, s + Ba(X - Z, 0)); break t }v += j }t.rect(a, s, U, X); break; case La.Z:if (y) { var j; if (v + (j = l[m++]) > u) { I = (u - v) / j, t.lineTo(r * (1 - I) + n * I, o * (1 - I) + i * I); break t }v += j }t.closePath(), r = n, o = i + } + } + } + }, t.prototype.clone = function () { const e = new t(); const n = this.data; return e.data = n.slice ? n.slice() : Array.prototype.slice.call(n), e._len = this._len, e }, t.CMD = La, t.initDefaultProps = (function () { const e = t.prototype; e._saveData = !0, e._ux = 0, e._uy = 0, e._pendingPtDist = 0, e._version = 0 }()), t + }()); function Ka(t, e, n, i, r, o, a) { + if (r === 0) + return !1; let l; const s = r; if (a > e + s && a > i + s || a < e - s && a < i - s || o > t + s && o > n + s || o < t - s && o < n - s) + return !1; if (t === n) + return Math.abs(o - t) <= s / 2; const u = (l = (e - i) / (t - n)) * o - a + (t * i - n * e) / (t - n); return u * u / (l * l + 1) <= s / 2 * s / 2 + } function $a(t, e, n, i, r, o, a, s, l, u, h) { + if (l === 0) + return !1; const c = l; return !(h > e + c && h > i + c && h > o + c && h > s + c || h < e - c && h < i - c && h < o - c && h < s - c || u > t + c && u > n + c && u > r + c && u > a + c || u < t - c && u < n - c && u < r - c && u < a - c) && je(t, e, n, i, r, o, a, s, u, h, null) <= c / 2 + } function Ja(t, e, n, i, r, o, a, s, l) { + if (a === 0) + return !1; const u = a; return !(l > e + u && l > i + u && l > o + u || l < e - u && l < i - u && l < o - u || s > t + u && s > n + u && s > r + u || s < t - u && s < n - u && s < r - u) && tn(t, e, n, i, r, o, s, l, null) <= u / 2 + } const Qa = 2 * Math.PI; function ts(t) { return (t %= Qa) < 0 && (t += Qa), t } const es = 2 * Math.PI; function ns(t, e, n, i, r, o, a, s, l) { + if (a === 0) + return !1; const u = a; s -= t, l -= e; const h = Math.sqrt(s * s + l * l); if (h - u > n || h + u < n) + return !1; if (Math.abs(i - r) % es < 1e-4) + return !0; if (o) { const c = i; i = ts(r), r = ts(c) } + else { + i = ts(i), r = ts(r) + }i > r && (r += es); let p = Math.atan2(l, s); return p < 0 && (p += es), p >= i && p <= r || p + es >= i && p + es <= r + } function is(t, e, n, i, r, o) { + if (o > e && o > i || o < e && o < i) + return 0; if (i === e) + return 0; const a = (o - e) / (i - e); let s = i < e ? 1 : -1; a !== 1 && a !== 0 || (s = i < e ? 0.5 : -0.5); const l = a * (n - t) + t; return l === r ? 1 / 0 : l > r ? s : 0 + } const rs = qa.CMD; const os = 2 * Math.PI; const as = [-1, -1, -1]; const ss = [-1, -1]; function ls(t, e, n, i, r, o, a, s, l, u) { + if (u > e && u > i && u > o && u > s || u < e && u < i && u < o && u < s) + return 0; let h; const c = Ue(e, i, o, s, u, as); if (c === 0) + return 0; for (var p = 0, d = -1, f = void 0, g = void 0, y = 0; y < c; y++) { const v = as[y]; const m = v === 0 || v === 1 ? 0.5 : 1; He(t, n, r, a, v) < l || (d < 0 && (d = Xe(e, i, o, s, ss), ss[1] < ss[0] && d > 1 && (void 0, h = ss[0], ss[0] = ss[1], ss[1] = h), f = He(e, i, o, s, ss[0]), d > 1 && (g = He(e, i, o, s, ss[1]))), d === 2 ? v < ss[0] ? p += f < e ? m : -m : v < ss[1] ? p += g < f ? m : -m : p += s < g ? m : -m : v < ss[0] ? p += f < e ? m : -m : p += s < f ? m : -m) } return p + } function us(t, e, n, i, r, o, a, s) { + if (s > e && s > i && s > o || s < e && s < i && s < o) + return 0; const l = (function (t, e, n, i, r) { + const o = t - 2 * e + n; const a = 2 * (e - t); const s = t - i; let l = 0; if (Ge(o)) { + We(a) && (h = -s / a) >= 0 && h <= 1 && (r[l++] = h) + } + else { + const u = a * a - 4 * o * s; if (Ge(u)) { + (h = -a / (2 * o)) >= 0 && h <= 1 && (r[l++] = h) + } + else if (u > 0) { var h; const c = Oe(u); const p = (-a - c) / (2 * o); (h = (-a + c) / (2 * o)) >= 0 && h <= 1 && (r[l++] = h), p >= 0 && p <= 1 && (r[l++] = p) } + } return l + }(e, i, o, s, as)); if (l === 0) + return 0; const u = Je(e, i, o); if (u >= 0 && u <= 1) { for (var h = 0, c = Ke(e, i, o, u), p = 0; p < l; p++) { var d = as[p] === 0 || as[p] === 1 ? 0.5 : 1; Ke(t, n, r, as[p]) < a || (as[p] < u ? h += c < e ? d : -d : h += o < c ? d : -d) } return h } return d = as[0] === 0 || as[0] === 1 ? 0.5 : 1, Ke(t, n, r, as[0]) < a ? 0 : o < e ? d : -d + } function hs(t, e, n, i, r, o, a, s) { + if ((s -= e) > n || s < -n) + return 0; const l = Math.sqrt(n * n - s * s); as[0] = -l, as[1] = l; const u = Math.abs(i - r); if (u < 1e-4) + return 0; if (u >= os - 1e-4) { i = 0, r = os; var h = o ? 1 : -1; return a >= as[0] + t && a <= as[1] + t ? h : 0 } if (i > r) { const c = i; i = r, r = c }i < 0 && (i += os, r += os); for (var p = 0, d = 0; d < 2; d++) { const f = as[d]; if (f + t > a) { let g = Math.atan2(s, f); h = o ? 1 : -1, g < 0 && (g = os + g), (g >= i && g <= r || g + os >= i && g + os <= r) && (g > Math.PI / 2 && g < 1.5 * Math.PI && (h = -h), p += h) } } return p + } function cs(t, e, n, i, r) { + for (var o, a, s, l, u = t.data, h = t.len(), c = 0, p = 0, d = 0, f = 0, g = 0, y = 0; y < h;) { + const v = u[y++]; const m = y === 1; switch (v === rs.M && y > 1 && (n || (c += is(p, d, f, g, i, r))), m && (f = p = u[y], g = d = u[y + 1]), v) { + case rs.M:p = f = u[y++], d = g = u[y++]; break; case rs.L:if (n) { + if (Ka(p, d, u[y], u[y + 1], e, i, r)) + return !0 + } + else { + c += is(p, d, u[y], u[y + 1], i, r) || 0 + }p = u[y++], d = u[y++]; break; case rs.C:if (n) { + if ($a(p, d, u[y++], u[y++], u[y++], u[y++], u[y], u[y + 1], e, i, r)) + return !0 + } + else { + c += ls(p, d, u[y++], u[y++], u[y++], u[y++], u[y], u[y + 1], i, r) || 0 + }p = u[y++], d = u[y++]; break; case rs.Q:if (n) { + if (Ja(p, d, u[y++], u[y++], u[y], u[y + 1], e, i, r)) + return !0 + } + else { + c += us(p, d, u[y++], u[y++], u[y], u[y + 1], i, r) || 0 + }p = u[y++], d = u[y++]; break; case rs.A:var x = u[y++]; var _ = u[y++]; var b = u[y++]; var w = u[y++]; var S = u[y++]; var M = u[y++]; y += 1; var I = !!(1 - u[y++]); o = Math.cos(S) * b + x, a = Math.sin(S) * w + _, m ? (f = o, g = a) : c += is(p, d, o, a, i, r); var T = (i - x) * w / b + x; if (n) { + if (ns(x, _, w, S, S + M, I, e, T, r)) + return !0 + } + else { + c += hs(x, _, w, S, S + M, I, T, r) + }p = Math.cos(S + M) * b + x, d = Math.sin(S + M) * w + _; break; case rs.R:if (f = p = u[y++], g = d = u[y++], o = f + u[y++], a = g + u[y++], n) { + if (Ka(f, g, o, g, e, i, r) || Ka(o, g, o, a, e, i, r) || Ka(o, a, f, a, e, i, r) || Ka(f, a, f, g, e, i, r)) + return !0 + } + else { + c += is(o, g, o, a, i, r), c += is(f, a, f, g, i, r) + } break; case rs.Z:if (n) { + if (Ka(p, d, f, g, e, i, r)) + return !0 + } + else { + c += is(p, d, f, g, i, r) + }p = f, d = g + } + } return n || (s = d, l = g, Math.abs(s - l) < 1e-4) || (c += is(p, d, f, g, i, r) || 0), c !== 0 + } const ps = k({ fill: '#000', stroke: null, strokePercent: 1, fillOpacity: 1, strokeOpacity: 1, lineDashOffset: 0, lineWidth: 1, lineCap: 'butt', miterLimit: 10, strokeNoScale: !1, strokeFirst: !1 }, ua); const ds = { style: k({ fill: !0, stroke: !0, strokePercent: !0, fillOpacity: !0, strokeOpacity: !0, lineDashOffset: !0, lineWidth: !0, miterLimit: !0 }, ha.style) }; const fs = Ki.concat(['invisible', 'culling', 'z', 'z2', 'zlevel', 'parent']); const gs = (function (t) { + function e(e) { return t.call(this, e) || this } let i; return n(e, t), e.prototype.update = function () { + const n = this; t.prototype.update.call(this); const i = this.style; if (i.decal) { const r = this._decalEl = this._decalEl || new e(); r.buildPath === e.prototype.buildPath && (r.buildPath = function (t) { n.buildPath(t, n.shape) }), r.silent = !0; const o = r.style; for (const a in i)o[a] !== i[a] && (o[a] = i[a]); o.fill = i.fill ? i.decal : null, o.decal = null, o.shadowColor = null, i.strokeFirst && (o.stroke = null); for (let s = 0; s < fs.length; ++s)r[fs[s]] = this[fs[s]]; r.__dirty |= 1 } + else { + this._decalEl && (this._decalEl = null) + } + }, e.prototype.getDecalElement = function () { return this._decalEl }, e.prototype._init = function (e) { const n = G(e); this.shape = this.getDefaultShape(); const i = this.getDefaultStyle(); i && this.useStyle(i); for (let r = 0; r < n.length; r++) { const o = n[r]; const a = e[o]; o === 'style' ? this.style ? A(this.style, a) : this.useStyle(a) : o === 'shape' ? A(this.shape, a) : t.prototype.attrKV.call(this, o, a) } this.style || this.useStyle({}) }, e.prototype.getDefaultStyle = function () { return null }, e.prototype.getDefaultShape = function () { return {} }, e.prototype.canBeInsideText = function () { return this.hasFill() }, e.prototype.getInsideTextFill = function () { + const t = this.style.fill; if (t !== 'none') { + if (X(t)) { const e = Ln(t, 0); return e > 0.5 ? ki : e > 0.2 ? '#eee' : Li } if (t) + return Li + } return ki + }, e.prototype.getInsideTextStroke = function (t) { + const e = this.style.fill; if (X(e)) { + const n = this.__zr; if (!(!n || !n.isDarkMode()) == Ln(t, 0) < 0.4) + return e + } + }, e.prototype.buildPath = function (t, e, n) {}, e.prototype.pathUpdated = function () { this.__dirty &= -5 }, e.prototype.getUpdatedPathProxy = function (t) { return !this.path && this.createPathProxy(), this.path.beginPath(), this.buildPath(this.path, this.shape, t), this.path }, e.prototype.createPathProxy = function () { this.path = new qa(!1) }, e.prototype.hasStroke = function () { const t = this.style; const e = t.stroke; return !(e == null || e === 'none' || !(t.lineWidth > 0)) }, e.prototype.hasFill = function () { const t = this.style.fill; return t != null && t !== 'none' }, e.prototype.getBoundingRect = function () { let t = this._rect; const e = this.style; const n = !t; if (n) { let i = !1; this.path || (i = !0, this.createPathProxy()); const r = this.path; (i || 4 & this.__dirty) && (r.beginPath(), this.buildPath(r, this.shape, !1), this.pathUpdated()), t = r.getBoundingRect() } if (this._rect = t, this.hasStroke() && this.path && this.path.len() > 0) { const o = this._rectStroke || (this._rectStroke = t.clone()); if (this.__dirty || n) { o.copy(t); const a = e.strokeNoScale ? this.getLineScale() : 1; let s = e.lineWidth; if (!this.hasFill()) { const l = this.strokeContainThreshold; s = Math.max(s, l == null ? 4 : l) }a > 1e-10 && (o.width += s / a, o.height += s / a, o.x -= s / a / 2, o.y -= s / a / 2) } return o } return t }, e.prototype.contain = function (t, e) { + const n = this.transformCoordToLocal(t, e); const i = this.getBoundingRect(); const r = this.style; if (t = n[0], e = n[1], i.contain(t, e)) { + const o = this.path; if (this.hasStroke()) { + let a = r.lineWidth; const s = r.strokeNoScale ? this.getLineScale() : 1; if (s > 1e-10 && (this.hasFill() || (a = Math.max(a, this.strokeContainThreshold)), (function (t, e, n, i) { return cs(t, e, !0, n, i) }(o, a / s, t, e)))) + return !0 + } if (this.hasFill()) + return (function (t, e, n) { return cs(t, 0, !1, e, n) }(o, t, e)) + } return !1 + }, e.prototype.dirtyShape = function () { this.__dirty |= 4, this._rect && (this._rect = null), this._decalEl && this._decalEl.dirtyShape(), this.markRedraw() }, e.prototype.dirty = function () { this.dirtyStyle(), this.dirtyShape() }, e.prototype.animateShape = function (t) { return this.animate('shape', t) }, e.prototype.updateDuringAnimation = function (t) { t === 'style' ? this.dirtyStyle() : t === 'shape' ? this.dirtyShape() : this.markRedraw() }, e.prototype.attrKV = function (e, n) { e === 'shape' ? this.setShape(n) : t.prototype.attrKV.call(this, e, n) }, e.prototype.setShape = function (t, e) { let n = this.shape; return n || (n = this.shape = {}), typeof t == 'string' ? n[t] = e : A(n, t), this.dirtyShape(), this }, e.prototype.shapeChanged = function () { return !!(4 & this.__dirty) }, e.prototype.createStyle = function (t) { return yt(ps, t) }, e.prototype._innerSaveToNormal = function (e) { t.prototype._innerSaveToNormal.call(this, e); const n = this._normalState; e.shape && !n.shape && (n.shape = A({}, this.shape)) }, e.prototype._applyStateObj = function (e, n, i, r, o, a) { + t.prototype._applyStateObj.call(this, e, n, i, r, o, a); let s; const l = !(n && r); if (n && n.shape ? o ? r ? s = n.shape : (s = A({}, i.shape), A(s, n.shape)) : (s = A({}, r ? this.shape : i.shape), A(s, n.shape)) : l && (s = i.shape), s) { + if (o) { this.shape = A({}, this.shape); for (var u = {}, h = G(s), c = 0; c < h.length; c++) { const p = h[c]; typeof s[p] == 'object' ? this.shape[p] = s[p] : u[p] = s[p] } this._transitionState(e, { shape: u }, a) } + else { + this.shape = s, this.dirtyShape() + } + } + }, e.prototype._mergeStates = function (e) { for (var n, i = t.prototype._mergeStates.call(this, e), r = 0; r < e.length; r++) { const o = e[r]; o.shape && (n = n || {}, this._mergeStyle(n, o.shape)) } return n && (i.shape = n), i }, e.prototype.getAnimationStyleProps = function () { return ds }, e.prototype.isZeroArea = function () { return !1 }, e.extend = function (t) { const i = (function (e) { function i(n) { const i = e.call(this, n) || this; return t.init && t.init.call(i, n), i } return n(i, e), i.prototype.getDefaultStyle = function () { return T(t.style) }, i.prototype.getDefaultShape = function () { return T(t.shape) }, i }(e)); for (const r in t) typeof t[r] == 'function' && (i.prototype[r] = t[r]); return i }, e.initDefaultProps = ((i = e.prototype).type = 'path', i.strokeContainThreshold = 5, i.segmentIgnoreThreshold = 0, i.subPixelOptimize = !1, i.autoBatch = !1, void (i.__dirty = 7)), e + }(da)); const ys = k({ strokeFirst: !0, font: a, x: 0, y: 0, textAlign: 'left', textBaseline: 'top', miterLimit: 2 }, ps); const vs = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.hasStroke = function () { const t = this.style; const e = t.stroke; return e != null && e !== 'none' && t.lineWidth > 0 }, e.prototype.hasFill = function () { const t = this.style.fill; return t != null && t !== 'none' }, e.prototype.createStyle = function (t) { return yt(ys, t) }, e.prototype.setBoundingRect = function (t) { this._rect = t }, e.prototype.getBoundingRect = function () { const t = this.style; if (!this._rect) { let e = t.text; e != null ? e += '' : e = ''; const n = cr(e, t.font, t.textAlign, t.textBaseline); if (n.x += t.x || 0, n.y += t.y || 0, this.hasStroke()) { const i = t.lineWidth; n.x -= i / 2, n.y -= i / 2, n.width += i, n.height += i } this._rect = n } return this._rect }, e.initDefaultProps = void (e.prototype.dirtyRectTolerance = 10), e }(da)); vs.prototype.type = 'tspan'; const ms = k({ x: 0, y: 0 }, ua); const xs = { style: k({ x: !0, y: !0, width: !0, height: !0, sx: !0, sy: !0, sWidth: !0, sHeight: !0 }, ha.style) }; const _s = (function (t) { + function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.createStyle = function (t) { return yt(ms, t) }, e.prototype._getSize = function (t) { + const e = this.style; const n = e[t]; if (n != null) + return n; let i; const r = (i = e.image) && typeof i != 'string' && i.width && i.height ? e.image : this.__image; if (!r) + return 0; const o = t === 'width' ? 'height' : 'width'; const a = e[o]; return a == null ? r[t] : r[t] / r[o] * a + }, e.prototype.getWidth = function () { return this._getSize('width') }, e.prototype.getHeight = function () { return this._getSize('height') }, e.prototype.getAnimationStyleProps = function () { return xs }, e.prototype.getBoundingRect = function () { const t = this.style; return this._rect || (this._rect = new sr(t.x || 0, t.y || 0, this.getWidth(), this.getHeight())), this._rect }, e + }(da)); _s.prototype.type = 'image'; const bs = Math.round; function ws(t, e, n) { if (e) { const i = e.x1; const r = e.x2; const o = e.y1; const a = e.y2; t.x1 = i, t.x2 = r, t.y1 = o, t.y2 = a; const s = n && n.lineWidth; return s ? (bs(2 * i) === bs(2 * r) && (t.x1 = t.x2 = Ms(i, s, !0)), bs(2 * o) === bs(2 * a) && (t.y1 = t.y2 = Ms(o, s, !0)), t) : t } } function Ss(t, e, n) { if (e) { const i = e.x; const r = e.y; const o = e.width; const a = e.height; t.x = i, t.y = r, t.width = o, t.height = a; const s = n && n.lineWidth; return s ? (t.x = Ms(i, s, !0), t.y = Ms(r, s, !0), t.width = Math.max(Ms(i + o, s, !1) - t.x, o === 0 ? 0 : 1), t.height = Math.max(Ms(r + a, s, !1) - t.y, a === 0 ? 0 : 1), t) : t } } function Ms(t, e, n) { + if (!e) + return t; const i = bs(2 * t); return (i + bs(e)) % 2 == 0 ? i / 2 : (i + (n ? 1 : -1)) / 2 + } const Is = function () { this.x = 0, this.y = 0, this.width = 0, this.height = 0 }; const Ts = {}; const Cs = (function (t) { + function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultShape = function () { return new Is() }, e.prototype.buildPath = function (t, e) { + let n, i, r, o; if (this.subPixelOptimize) { const a = Ss(Ts, e, this.style); n = a.x, i = a.y, r = a.width, o = a.height, a.r = e.r, e = a } + else { + n = e.x, i = e.y, r = e.width, o = e.height + }e.r ? (function (t, e) { let n; let i; let r; let o; let a; let s = e.x; let l = e.y; let u = e.width; let h = e.height; const c = e.r; u < 0 && (s += u, u = -u), h < 0 && (l += h, h = -h), typeof c == 'number' ? n = i = r = o = c : Array.isArray(c) ? c.length === 1 ? n = i = r = o = c[0] : c.length === 2 ? (n = r = c[0], i = o = c[1]) : c.length === 3 ? (n = c[0], i = o = c[1], r = c[2]) : (n = c[0], i = c[1], r = c[2], o = c[3]) : n = i = r = o = 0, n + i > u && (n *= u / (a = n + i), i *= u / a), r + o > u && (r *= u / (a = r + o), o *= u / a), i + r > h && (i *= h / (a = i + r), r *= h / a), n + o > h && (n *= h / (a = n + o), o *= h / a), t.moveTo(s + n, l), t.lineTo(s + u - i, l), i !== 0 && t.arc(s + u - i, l + i, i, -Math.PI / 2, 0), t.lineTo(s + u, l + h - r), r !== 0 && t.arc(s + u - r, l + h - r, r, 0, Math.PI / 2), t.lineTo(s + o, l + h), o !== 0 && t.arc(s + o, l + h - o, o, Math.PI / 2, Math.PI), t.lineTo(s, l + n), n !== 0 && t.arc(s + n, l + n, n, Math.PI, 1.5 * Math.PI) }(t, e)) : t.rect(n, i, r, o) + }, e.prototype.isZeroArea = function () { return !this.shape.width || !this.shape.height }, e + }(gs)); Cs.prototype.type = 'rect'; const Ds = { fill: '#000' }; const As = { style: k({ fill: !0, stroke: !0, fillOpacity: !0, strokeOpacity: !0, lineWidth: !0, fontSize: !0, lineHeight: !0, width: !0, height: !0, textShadowColor: !0, textShadowBlur: !0, textShadowOffsetX: !0, textShadowOffsetY: !0, backgroundColor: !0, padding: !0, borderColor: !0, borderWidth: !0, borderRadius: !0 }, ha.style) }; const ks = (function (t) { + function e(e) { const n = t.call(this) || this; return n.type = 'text', n._children = [], n._defaultStyle = Ds, n.attr(e), n } return n(e, t), e.prototype.childrenRef = function () { return this._children }, e.prototype.update = function () { t.prototype.update.call(this), this.styleChanged() && this._updateSubTexts(); for (let e = 0; e < this._children.length; e++) { const n = this._children[e]; n.zlevel = this.zlevel, n.z = this.z, n.z2 = this.z2, n.culling = this.culling, n.cursor = this.cursor, n.invisible = this.invisible } }, e.prototype.updateTransform = function () { const e = this.innerTransformable; e ? (e.updateTransform(), e.transform && (this.transform = e.transform)) : t.prototype.updateTransform.call(this) }, e.prototype.getLocalTransform = function (e) { const n = this.innerTransformable; return n ? n.getLocalTransform(e) : t.prototype.getLocalTransform.call(this, e) }, e.prototype.getComputedTransform = function () { return this.__hostTarget && (this.__hostTarget.getComputedTransform(), this.__hostTarget.updateInnerText(!0)), t.prototype.getComputedTransform.call(this) }, e.prototype._updateSubTexts = function () { let t; this._childCursor = 0, zs(t = this.style), E(t.rich, zs), this.style.rich ? this._updateRichTexts() : this._updatePlainTexts(), this._children.length = this._childCursor, this.styleUpdated() }, e.prototype.addSelfToZr = function (e) { t.prototype.addSelfToZr.call(this, e); for (let n = 0; n < this._children.length; n++) this._children[n].__zr = e }, e.prototype.removeSelfFromZr = function (e) { t.prototype.removeSelfFromZr.call(this, e); for (let n = 0; n < this._children.length; n++) this._children[n].__zr = null }, e.prototype.getBoundingRect = function () { if (this.styleChanged() && this._updateSubTexts(), !this._rect) { for (var t = new sr(0, 0, 0, 0), e = this._children, n = [], i = null, r = 0; r < e.length; r++) { const o = e[r]; const a = o.getBoundingRect(); const s = o.getLocalTransform(n); s ? (t.copy(a), t.applyTransform(s), (i = i || t.clone()).union(t)) : (i = i || a.clone()).union(a) } this._rect = i || t } return this._rect }, e.prototype.setDefaultTextStyle = function (t) { this._defaultStyle = t || Ds }, e.prototype.setTextContent = function (t) {}, e.prototype._mergeStyle = function (t, e) { + if (!e) + return t; const n = e.rich; const i = t.rich || n && {}; return A(t, e), n && i ? (this._mergeRich(i, n), t.rich = i) : i && (t.rich = i), t + }, e.prototype._mergeRich = function (t, e) { for (let n = G(e), i = 0; i < n.length; i++) { const r = n[i]; t[r] = t[r] || {}, A(t[r], e[r]) } }, e.prototype.getAnimationStyleProps = function () { return As }, e.prototype._getOrCreateChild = function (t) { let e = this._children[this._childCursor]; return e && e instanceof t || (e = new t()), this._children[this._childCursor++] = e, e.__zr = this.__zr, e.parent = this, e }, e.prototype._updatePlainTexts = function () { + const t = this.style; const e = t.font || a; const n = t.padding; const i = (function (t, e) { + t != null && (t += ''); let n; let i = e.overflow; let r = e.padding; let o = e.font; let a = "truncate" === i; let s = fr(o); let l = rt(e.lineHeight, s); let u = !!e.backgroundColor; let h = "truncate" === e.lineOverflow; let c = e.width; let p = (n = null == c || "break" !== i && "breakAll" !== i ? t ? t.split('\n') : [] : t ? sa(t, e.font, c, "breakAll" === i, 0).lines : []).length * l; let d = rt(e.height, p); if (p > d && h) { let f = Math.floor(d / l); n = n.slice(0, f) } if (t && a && c != null) { +for (var g = Jo(c, o, e.ellipsis, { minChar: e.truncateMinChar, placeholder: e.placeholder }), y = 0; y < n.length; y++)n[y] = Qo(n[y], g); +} let v = d; let m = 0; for (y = 0; y < n.length; y++)m = Math.max(ur(n[y], o), m); c == null && (c = m); let x = m; return r && (v += r[0] + r[2], x += r[1] + r[3], c += r[1] + r[3]), u && (x = c), { lines: n, height: d, outerWidth: x, outerHeight: v, lineHeight: l, calculatedLineHeight: s, contentWidth: m, contentHeight: p, width: c } +}(Gs(t), t)); const r = Ws(t); const o = !!t.backgroundColor; const s = i.outerHeight; const l = i.outerWidth; const u = i.contentWidth; const h = i.lines; const c = i.lineHeight; const p = this._defaultStyle; const d = t.x || 0; const f = t.y || 0; const g = t.align || p.align || 'left'; const y = t.verticalAlign || p.verticalAlign || 'top'; let v = d; let m = dr(f, i.contentHeight, y); if (r || n) { const x = pr(d, l, g); const _ = dr(f, s, y); r && this._renderBackground(t, t, x, _, l, s) }m += c / 2, n && (v = Fs(d, g, n), y === 'top' ? m += n[0] : y === 'bottom' && (m -= n[2])); for (let b = 0, w = !1, S = (Bs('fill' in t ? t.fill : (w = !0, p.fill))), M = (Vs('stroke' in t ? t.stroke : o || p.autoStroke && !w ? null : (b = 2, p.stroke))), I = t.textShadowBlur > 0, T = t.width != null && (t.overflow === 'truncate' || t.overflow === 'break' || t.overflow === 'breakAll'), C = i.calculatedLineHeight, D = 0; D < h.length; D++) { const A = this._getOrCreateChild(vs); const k = A.createStyle(); A.useStyle(k), k.text = h[D], k.x = v, k.y = m, g && (k.textAlign = g), k.textBaseline = 'middle', k.opacity = t.opacity, k.strokeFirst = !0, I && (k.shadowBlur = t.textShadowBlur || 0, k.shadowColor = t.textShadowColor || 'transparent', k.shadowOffsetX = t.textShadowOffsetX || 0, k.shadowOffsetY = t.textShadowOffsetY || 0), k.stroke = M, k.fill = S, M && (k.lineWidth = t.lineWidth || b, k.lineDash = t.lineDash, k.lineDashOffset = t.lineDashOffset || 0), k.font = e, Ns(k, t), m += c, T && A.setBoundingRect(new sr(pr(k.x, t.width, k.textAlign), dr(k.y, C, k.textBaseline), u, C)) } + }, e.prototype._updateRichTexts = function () { + const t = this.style; const e = (function (t, e) { + let n = new ia(); if (t != null && (t += ''), !t) + return n; for (var i, r = e.width, o = e.height, a = e.overflow, s = 'break' !== a && 'breakAll' !== a || r == null ? null : { width: r, accumWidth: 0, breakAll: 'breakAll' === a }, l = Ko.lastIndex = 0; (i = Ko.exec(t)) != null;) { let u = i.index; u > l && ra(n, t.substring(l, u), e, s), ra(n, i[2], e, s, i[1]), l = Ko.lastIndex }l < t.length && ra(n, t.substring(l, t.length), e, s); let h = []; let c = 0; let p = 0; let d = e.padding; let f = "truncate" === a; let g = 'truncate' === e.lineOverflow; function y(t, e, n) { t.width = e, t.lineHeight = n, c += n, p = Math.max(p, e) }t:for (var v = 0; v < n.lines.length; v++) { + for (var m = n.lines[v], x = 0, _ = 0, b = 0; b < m.tokens.length; b++) { + let w = (P = m.tokens[b]).styleName && e.rich[P.styleName] || {}; let S = P.textPadding = w.padding; let M = S ? S[1] + S[3] : 0; let I = P.font = w.font || e.font; P.contentHeight = fr(I); let T = rt(w.height, P.contentHeight); if (P.innerHeight = T, S && (T += S[0] + S[2]), P.height = T, P.lineHeight = ot(w.lineHeight, e.lineHeight, T), P.align = w && w.align || e.align, P.verticalAlign = w && w.verticalAlign || 'middle', g && o != null && c + P.lineHeight > o) { b > 0 ? (m.tokens = m.tokens.slice(0, b), y(m, _, x), n.lines = n.lines.slice(0, v + 1)) : n.lines = n.lines.slice(0, v); break t } let C = w.width; let D = C == null || 'auto' === C; if (typeof C=='string' && '%' === C.charAt(C.length - 1)) { +P.percentWidth = C, h.push(P), P.contentWidth = ur(P.text, I); +} else { if (D) { let A = w.backgroundColor; let k = A && A.image; k && qo(k = Xo(k)) && (P.width = Math.max(P.width, k.width * T / k.height)) } let L = f && r != null ? r - _ : null; L != null && L < P.width ? !D || L < M ? (P.text = '', P.width = P.contentWidth = 0) : (P.text = $o(P.text, L - M, I, e.ellipsis, { minChar: e.truncateMinChar }), P.width = P.contentWidth = ur(P.text, I)) : P.contentWidth = ur(P.text, I) }P.width += M, _ += P.width, w && (x = Math.max(x, P.lineHeight)) +}y(m, _, x) +} for (n.outerWidth = n.width = rt(r, p), n.outerHeight = n.height = rt(o, c), n.contentHeight = c, n.contentWidth = p, d && (n.outerWidth += d[1] + d[3], n.outerHeight += d[0] + d[2]), v = 0; v < h.length; v++) { var P; let O = (P = h[v]).percentWidth; P.width = Number.parseInt(O, 10) / 100 * n.width } return n +}(Gs(t), t)); const n = e.width; const i = e.outerWidth; const r = e.outerHeight; const o = t.padding; const a = t.x || 0; const s = t.y || 0; const l = this._defaultStyle; const u = t.align || l.align; const h = t.verticalAlign || l.verticalAlign; const c = pr(a, i, u); const p = dr(s, r, h); let d = c; let f = p; o && (d += o[3], f += o[0]); const g = d + n; Ws(t) && this._renderBackground(t, t, c, p, i, r); for (let y = !!t.backgroundColor, v = 0; v < e.lines.length; v++) { for (var m = e.lines[v], x = m.tokens, _ = x.length, b = m.lineHeight, w = m.width, S = 0, M = d, I = g, T = _ - 1, C = void 0; S < _ && (!(C = x[S]).align || C.align === 'left');) this._placeToken(C, t, b, f, M, 'left', y), w -= C.width, M += C.width, S++; for (;T >= 0 && (C = x[T]).align === 'right';) this._placeToken(C, t, b, f, I, 'right', y), w -= C.width, I -= C.width, T--; for (M += (n - (M - d) - (g - I) - w) / 2; S <= T;)C = x[S], this._placeToken(C, t, b, f, M + C.width / 2, 'center', y), M += C.width, S++; f += b } + }, e.prototype._placeToken = function (t, e, n, i, r, o, s) { const l = e.rich[t.styleName] || {}; l.text = t.text; const u = t.verticalAlign; let h = i + n / 2; u === 'top' ? h = i + t.height / 2 : u === 'bottom' && (h = i + n - t.height / 2), !t.isLineHolder && Ws(l) && this._renderBackground(l, e, o === 'right' ? r - t.width : o === 'center' ? r - t.width / 2 : r, h - t.height / 2, t.width, t.height); const c = !!l.backgroundColor; const p = t.textPadding; p && (r = Fs(r, o, p), h -= t.height / 2 - p[0] - t.innerHeight / 2); const d = this._getOrCreateChild(vs); const f = d.createStyle(); d.useStyle(f); const g = this._defaultStyle; let y = !1; let v = 0; const m = Bs('fill' in l ? l.fill : 'fill' in e ? e.fill : (y = !0, g.fill)); const x = Vs('stroke' in l ? l.stroke : 'stroke' in e ? e.stroke : c || s || g.autoStroke && !y ? null : (v = 2, g.stroke)); const _ = l.textShadowBlur > 0 || e.textShadowBlur > 0; f.text = t.text, f.x = r, f.y = h, _ && (f.shadowBlur = l.textShadowBlur || e.textShadowBlur || 0, f.shadowColor = l.textShadowColor || e.textShadowColor || 'transparent', f.shadowOffsetX = l.textShadowOffsetX || e.textShadowOffsetX || 0, f.shadowOffsetY = l.textShadowOffsetY || e.textShadowOffsetY || 0), f.textAlign = o, f.textBaseline = 'middle', f.font = t.font || a, f.opacity = ot(l.opacity, e.opacity, 1), Ns(f, l), x && (f.lineWidth = ot(l.lineWidth, e.lineWidth, v), f.lineDash = rt(l.lineDash, e.lineDash), f.lineDashOffset = e.lineDashOffset || 0, f.stroke = x), m && (f.fill = m); const b = t.contentWidth; const w = t.contentHeight; d.setBoundingRect(new sr(pr(f.x, b, f.textAlign), dr(f.y, w, f.textBaseline), b, w)) }, e.prototype._renderBackground = function (t, e, n, i, r, o) { + let a; let s; let l; const u = t.backgroundColor; const h = t.borderWidth; const c = t.borderColor; const p = u && u.image; const d = u && !p; const f = t.borderRadius; const g = this; if (d || t.lineHeight || h && c) { (a = this._getOrCreateChild(Cs)).useStyle(a.createStyle()), a.style.fill = null; const y = a.shape; y.x = n, y.y = i, y.width = r, y.height = o, y.r = f, a.dirtyShape() } if (d) { + (l = a.style).fill = u || null, l.fillOpacity = rt(t.fillOpacity, 1) + } + else if (p) { (s = this._getOrCreateChild(_s)).onload = function () { g.dirtyStyle() }; const v = s.style; v.image = u.image, v.x = n, v.y = i, v.width = r, v.height = o }h && c && ((l = a.style).lineWidth = h, l.stroke = c, l.strokeOpacity = rt(t.strokeOpacity, 1), l.lineDash = t.borderDash, l.lineDashOffset = t.borderDashOffset || 0, a.strokeContainThreshold = 0, a.hasFill() && a.hasStroke() && (l.strokeFirst = !0, l.lineWidth *= 2)); const m = (a || s).style; m.shadowBlur = t.shadowBlur || 0, m.shadowColor = t.shadowColor || 'transparent', m.shadowOffsetX = t.shadowOffsetX || 0, m.shadowOffsetY = t.shadowOffsetY || 0, m.opacity = ot(t.opacity, e.opacity, 1) + }, e.makeFont = function (t) { let e = ''; return Es(t) && (e = [t.fontStyle, t.fontWeight, Rs(t.fontSize), t.fontFamily || 'sans-serif'].join(' ')), e && ut(e) || t.textFont || t.font }, e + }(da)); const Ls = { left: !0, right: 1, center: 1 }; const Ps = { top: 1, bottom: 1, middle: 1 }; const Os = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily']; function Rs(t) { return typeof t != 'string' || !t.includes('px') && !t.includes('rem') && !t.includes('em') ? isNaN(+t) ? '12px' : `${t}px` : t } function Ns(t, e) { for (let n = 0; n < Os.length; n++) { const i = Os[n]; const r = e[i]; r != null && (t[i] = r) } } function Es(t) { return t.fontSize != null || t.fontFamily || t.fontWeight } function zs(t) { if (t) { t.font = ks.makeFont(t); let e = t.align; e === 'middle' && (e = 'center'), t.align = e == null || Ls[e] ? e : 'left'; let n = t.verticalAlign; n === 'center' && (n = 'middle'), t.verticalAlign = n == null || Ps[n] ? n : 'top', t.padding && (t.padding = st(t.padding)) } } function Vs(t, e) { return t == null || e <= 0 || t === 'transparent' || t === 'none' ? null : t.image || t.colorStops ? '#000' : t } function Bs(t) { return t == null || t === 'none' ? null : t.image || t.colorStops ? '#000' : t } function Fs(t, e, n) { return e === 'right' ? t - n[1] : e === 'center' ? t + n[3] / 2 - n[1] / 2 : t + n[3] } function Gs(t) { let e = t.text; return e != null && (e += ''), e } function Ws(t) { return !!(t.backgroundColor || t.lineHeight || t.borderWidth && t.borderColor) } const Hs = So(); const Ys = function (t, e, n, i) { if (i) { const r = Hs(i); r.dataIndex = n, r.dataType = e, r.seriesIndex = t, i.type === 'group' && i.traverse((i) => { const r = Hs(i); r.seriesIndex = t, r.dataIndex = n, r.dataType = e }) } }; let Us = 1; const Xs = {}; const Zs = So(); const js = So(); const qs = ['emphasis', 'blur', 'select']; const Ks = ['normal', 'emphasis', 'blur', 'select']; const $s = 10; const Js = 'highlight'; const Qs = 'downplay'; const tl = 'select'; const el = 'unselect'; const nl = 'toggleSelect'; function il(t) { return t != null && t !== 'none' } const rl = new ln(100); function ol(t) { if (X(t)) { let e = rl.get(t); return e || (e = Sn(t, -0.1), rl.put(t, e)), e } if (Q(t)) { const n = A({}, t); return n.colorStops = z(t.colorStops, (t) => { return { offset: t.offset, color: Sn(t.color, -0.1) } }), n } return t } function al(t, e, n) { t.onHoverStateChange && (t.hoverState || 0) !== n && t.onHoverStateChange(e), t.hoverState = n } function sl(t) { al(t, 'emphasis', 2) } function ll(t) { t.hoverState === 2 && al(t, 'normal', 0) } function ul(t) { al(t, 'blur', 1) } function hl(t) { t.hoverState === 1 && al(t, 'normal', 0) } function cl(t) { t.selected = !0 } function pl(t) { t.selected = !1 } function dl(t, e, n) { e(t, n) } function fl(t, e, n) { dl(t, e, n), t.isGroup && t.traverse((t) => { dl(t, e, n) }) } function gl(t, e) { switch (e) { case 'emphasis':t.hoverState = 2; break; case 'normal':t.hoverState = 0; break; case 'blur':t.hoverState = 1; break; case 'select':t.selected = !0 } } function yl(t, e) { + const n = this.states[t]; if (this.style) { + if (t === 'emphasis') + return (function (t, e, n, i) { const r = n && P(n, 'select') >= 0; let o = !1; if (t instanceof gs) { const a = Zs(t); const s = r && a.selectFill || a.normalFill; const l = r && a.selectStroke || a.normalStroke; if (il(s) || il(l)) { let u = (i = i || {}).style || {}; u.fill === 'inherit' ? (o = !0, i = A({}, i), (u = A({}, u)).fill = s) : !il(u.fill) && il(s) ? (o = !0, i = A({}, i), (u = A({}, u)).fill = ol(s)) : !il(u.stroke) && il(l) && (o || (i = A({}, i), u = A({}, u)), u.stroke = ol(l)), i.style = u } } if (i && i.z2 == null) { o || (i = A({}, i)); const h = t.z2EmphasisLift; i.z2 = t.z2 + (h != null ? h : $s) } return i }(this, 0, e, n)); if (t === 'blur') + return (function (t, e, n) { const i = P(t.currentStates, e) >= 0; const r = t.style.opacity; const o = i ? null : (function (t, e, n, i) { for (var r = t.style, o = {}, a = 0; a < e.length; a++) { const s = e[a]; const l = r[s]; o[s] = l == null ? i && i[s] : l } for (a = 0; a < t.animators.length; a++) { const u = t.animators[a]; u.__fromStateTransition && !u.__fromStateTransition.includes(n) && u.targetName === 'style' && u.saveTo(o, e) } return o }(t, ['opacity'], e, { opacity: 1 })); let a = (n = n || {}).style || {}; return a.opacity == null && (n = A({}, n), a = A({ opacity: i ? r : 0.1 * o.opacity }, a), n.style = a), n }(this, t, n)); if (t === 'select') + return (function (t, e, n) { if (n && n.z2 == null) { n = A({}, n); const i = t.z2SelectLift; n.z2 = t.z2 + (i != null ? i : 9) } return n }(this, 0, n)) + } return n + } function vl(t) { t.stateProxy = yl; const e = t.getTextContent(); const n = t.getTextGuideLine(); e && (e.stateProxy = yl), n && (n.stateProxy = yl) } function ml(t, e) { !Tl(t, e) && !t.__highByOuter && fl(t, sl) } function xl(t, e) { !Tl(t, e) && !t.__highByOuter && fl(t, ll) } function _l(t, e) { t.__highByOuter |= 1 << (e || 0), fl(t, sl) } function bl(t, e) { !(t.__highByOuter &= ~(1 << (e || 0))) && fl(t, ll) } function wl(t) { fl(t, ul) } function Sl(t) { fl(t, hl) } function Ml(t) { fl(t, cl) } function Il(t) { fl(t, pl) } function Tl(t, e) { return t.__highDownSilentOnTouch && e.zrByTouch } function Cl(t) { const e = t.getModel(); const n = []; const i = []; e.eachComponent((e, r) => { const o = js(r); const a = e === 'series'; const s = a ? t.getViewOfSeriesModel(r) : t.getViewOfComponentModel(r); !a && i.push(s), o.isBlured && (s.group.traverse((t) => { hl(t) }), a && n.push(r)), o.isBlured = !1 }), E(i, (t) => { t && t.toggleBlurSeries && t.toggleBlurSeries(n, !1, e) }) } function Dl(t, e, n, i) { + const r = i.getModel(); function o(t, e) { for (let n = 0; n < e.length; n++) { const i = t.getItemGraphicEl(e[n]); i && Sl(i) } } if (n = n || 'coordinateSystem', t != null && e && e !== 'none') { + const a = r.getSeriesByIndex(t); let s = a.coordinateSystem; s && s.master && (s = s.master); const l = []; r.eachSeries((t) => { + const r = a === t; let u = t.coordinateSystem; if (u && u.master && (u = u.master), !(n === 'series' && !r || n === 'coordinateSystem' && !(u && s ? u === s : r) || e === 'series' && r)) { + if (i.getViewOfSeriesModel(t).group.traverse((t) => { ul(t) }), N(e)) { + o(t.getData(), e) + } + else if (q(e)) { + for (let h = G(e), c = 0; c < h.length; c++)o(t.getData(h[c]), e[h[c]]) + } l.push(t), js(t).isBlured = !0 + } + }), r.eachComponent((t, e) => { if (t !== 'series') { const n = i.getViewOfComponentModel(e); n && n.toggleBlurSeries && n.toggleBlurSeries(l, !0, r) } }) + } + } function Al(t, e, n) { if (t != null && e != null) { const i = n.getModel().getComponent(t, e); if (i) { js(i).isBlured = !0; const r = n.getViewOfComponentModel(i); r && r.focusBlurEnabled && r.group.traverse((t) => { ul(t) }) } } } function kl(t, e, n, i) { + const r = { focusSelf: !1, dispatchers: null }; if (t == null || t === 'series' || e == null || n == null) + return r; const o = i.getModel().getComponent(t, e); if (!o) + return r; const a = i.getViewOfComponentModel(o); if (!a || !a.findHighDownDispatchers) + return r; for (var s, l = a.findHighDownDispatchers(n), u = 0; u < l.length; u++) { + if (Hs(l[u]).focus === 'self') { s = !0; break } + } return { focusSelf: s, dispatchers: l } + } function Ll(t) { E(t.getAllData(), (e) => { const n = e.data; const i = e.type; n.eachItemGraphicEl((e, n) => { t.isSelected(n, i) ? Ml(e) : Il(e) }) }) } function Pl(t) { const e = []; return t.eachSeries((t) => { E(t.getAllData(), (n) => { n.data; const i = n.type; const r = t.getSelectedDataIndices(); if (r.length > 0) { const o = { dataIndex: r, seriesIndex: t.seriesIndex }; i != null && (o.dataType = i), e.push(o) } }) }), e } function Ol(t, e, n) { Bl(t, !0), fl(t, vl), Nl(t, e, n) } function Rl(t, e, n, i) { i ? (function (t) { Bl(t, !1) }(t)) : Ol(t, e, n) } function Nl(t, e, n) { const i = Hs(t); e != null ? (i.focus = e, i.blurScope = n) : i.focus && (i.focus = null) } const El = ['emphasis', 'blur', 'select']; const zl = { itemStyle: 'getItemStyle', lineStyle: 'getLineStyle', areaStyle: 'getAreaStyle' }; function Vl(t, e, n, i) { n = n || 'itemStyle'; for (let r = 0; r < El.length; r++) { const o = El[r]; const a = e.getModel([o, n]); t.ensureState(o).style = i ? i(a) : a[zl[n]]() } } function Bl(t, e) { const n = !1 === e; const i = t; t.highDownSilentOnTouch && (i.__highDownSilentOnTouch = t.highDownSilentOnTouch), n && !i.__highDownDispatcher || (i.__highByOuter = i.__highByOuter || 0, i.__highDownDispatcher = !n) } function Fl(t) { return !(!t || !t.__highDownDispatcher) } function Gl(t) { const e = t.type; return e === tl || e === el || e === nl } function Wl(t) { const e = t.type; return e === Js || e === Qs } const Hl = qa.CMD; const Yl = [[], [], []]; const Ul = Math.sqrt; const Xl = Math.atan2; function Zl(t, e) { if (e) { let n; let i; let r; let o; let a; let s; const l = t.data; const u = t.len(); const h = Hl.M; const c = Hl.C; const p = Hl.L; const d = Hl.R; const f = Hl.A; const g = Hl.Q; for (r = 0, o = 0; r < u;) { switch (n = l[r++], o = r, i = 0, n) { case h:case p:i = 1; break; case c:i = 3; break; case g:i = 2; break; case f:var y = e[4]; var v = e[5]; var m = Ul(e[0] * e[0] + e[1] * e[1]); var x = Ul(e[2] * e[2] + e[3] * e[3]); var _ = Xl(-e[1] / x, e[0] / m); l[r] *= m, l[r++] += y, l[r] *= x, l[r++] += v, l[r++] *= m, l[r++] *= x, l[r++] += _, l[r++] += _, o = r += 2; break; case d:s[0] = l[r++], s[1] = l[r++], Ft(s, s, e), l[o++] = s[0], l[o++] = s[1], s[0] += l[r++], s[1] += l[r++], Ft(s, s, e), l[o++] = s[0], l[o++] = s[1] } for (a = 0; a < i; a++) { const b = Yl[a]; b[0] = l[r++], b[1] = l[r++], Ft(b, b, e), l[o++] = b[0], l[o++] = b[1] } }t.increaseVersion() } } const jl = Math.sqrt; const ql = Math.sin; const Kl = Math.cos; const $l = Math.PI; function Jl(t) { return Math.sqrt(t[0] * t[0] + t[1] * t[1]) } function Ql(t, e) { return (t[0] * e[0] + t[1] * e[1]) / (Jl(t) * Jl(e)) } function tu(t, e) { return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(Ql(t, e)) } function eu(t, e, n, i, r, o, a, s, l, u, h) { const c = l * ($l / 180); const p = Kl(c) * (t - n) / 2 + ql(c) * (e - i) / 2; const d = -1 * ql(c) * (t - n) / 2 + Kl(c) * (e - i) / 2; const f = p * p / (a * a) + d * d / (s * s); f > 1 && (a *= jl(f), s *= jl(f)); const g = (r === o ? -1 : 1) * jl((a * a * (s * s) - a * a * (d * d) - s * s * (p * p)) / (a * a * (d * d) + s * s * (p * p))) || 0; const y = g * a * d / s; const v = g * -s * p / a; const m = (t + n) / 2 + Kl(c) * y - ql(c) * v; const x = (e + i) / 2 + ql(c) * y + Kl(c) * v; const _ = tu([1, 0], [(p - y) / a, (d - v) / s]); const b = [(p - y) / a, (d - v) / s]; const w = [(-1 * p - y) / a, (-1 * d - v) / s]; let S = tu(b, w); if (Ql(b, w) <= -1 && (S = $l), Ql(b, w) >= 1 && (S = 0), S < 0) { const M = Math.round(S / $l * 1e6) / 1e6; S = 2 * $l + M % 2 * $l }h.addData(u, m, x, a, s, _, S, c, o) } const nu = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi; const iu = /-?(\d*\.)?\d+(e-?\d+)?/gi; const ru = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.applyTransform = function (t) {}, e }(gs)); function ou(t) { return t.setData != null } function au(t, e) { + const n = (function (t) { + const e = new qa(); if (!t) + return e; let n; let i = 0; let r = 0; let o = i; let a = r; const s = qa.CMD; const l = t.match(nu); if (!l) + return e; for (let u = 0; u < l.length; u++) { for (var h = l[u], c = h.charAt(0), p = void 0, d = h.match(iu) || [], f = d.length, g = 0; g < f; g++)d[g] = Number.parseFloat(d[g]); for (let y = 0; y < f;) { let v = void 0; let m = void 0; let x = void 0; let _ = void 0; let b = void 0; let w = void 0; let S = void 0; let M = i; let I = r; let T = void 0; let C = void 0; switch (c) { case 'l':i += d[y++], r += d[y++], p = s.L, e.addData(p, i, r); break; case 'L':i = d[y++], r = d[y++], p = s.L, e.addData(p, i, r); break; case 'm':i += d[y++], r += d[y++], p = s.M, e.addData(p, i, r), o = i, a = r, c = 'l'; break; case 'M':i = d[y++], r = d[y++], p = s.M, e.addData(p, i, r), o = i, a = r, c = 'L'; break; case 'h':i += d[y++], p = s.L, e.addData(p, i, r); break; case 'H':i = d[y++], p = s.L, e.addData(p, i, r); break; case 'v':r += d[y++], p = s.L, e.addData(p, i, r); break; case 'V':r = d[y++], p = s.L, e.addData(p, i, r); break; case 'C':p = s.C, e.addData(p, d[y++], d[y++], d[y++], d[y++], d[y++], d[y++]), i = d[y - 2], r = d[y - 1]; break; case 'c':p = s.C, e.addData(p, d[y++] + i, d[y++] + r, d[y++] + i, d[y++] + r, d[y++] + i, d[y++] + r), i += d[y - 2], r += d[y - 1]; break; case 'S':v = i, m = r, T = e.len(), C = e.data, n === s.C && (v += i - C[T - 4], m += r - C[T - 3]), p = s.C, M = d[y++], I = d[y++], i = d[y++], r = d[y++], e.addData(p, v, m, M, I, i, r); break; case 's':v = i, m = r, T = e.len(), C = e.data, n === s.C && (v += i - C[T - 4], m += r - C[T - 3]), p = s.C, M = i + d[y++], I = r + d[y++], i += d[y++], r += d[y++], e.addData(p, v, m, M, I, i, r); break; case 'Q':M = d[y++], I = d[y++], i = d[y++], r = d[y++], p = s.Q, e.addData(p, M, I, i, r); break; case 'q':M = d[y++] + i, I = d[y++] + r, i += d[y++], r += d[y++], p = s.Q, e.addData(p, M, I, i, r); break; case 'T':v = i, m = r, T = e.len(), C = e.data, n === s.Q && (v += i - C[T - 4], m += r - C[T - 3]), i = d[y++], r = d[y++], p = s.Q, e.addData(p, v, m, i, r); break; case 't':v = i, m = r, T = e.len(), C = e.data, n === s.Q && (v += i - C[T - 4], m += r - C[T - 3]), i += d[y++], r += d[y++], p = s.Q, e.addData(p, v, m, i, r); break; case 'A':x = d[y++], _ = d[y++], b = d[y++], w = d[y++], S = d[y++], eu(M = i, I = r, i = d[y++], r = d[y++], w, S, x, _, b, p = s.A, e); break; case 'a':x = d[y++], _ = d[y++], b = d[y++], w = d[y++], S = d[y++], eu(M = i, I = r, i += d[y++], r += d[y++], w, S, x, _, b, p = s.A, e) } }c !== 'z' && c !== 'Z' || (p = s.Z, e.addData(p), i = o, r = a), n = p } return e.toStatic(), e + }(t)); const i = A({}, e); return i.buildPath = function (t) { + if (ou(t)) { + t.setData(n.data), (e = t.getContext()) && t.rebuildPath(e, 1) + } + else { var e = t; n.rebuildPath(e, 1) } + }, i.applyTransform = function (t) { Zl(n, t), this.dirtyShape() }, i + } function su(t, e) { return new ru(au(t, e)) } function lu(t, e) { e = e || {}; const n = new gs(); return t.shape && n.setShape(t.shape), n.setStyle(t.style), e.bakeTransform ? Zl(n.path, t.getComputedTransform()) : e.toLocal ? n.setLocalTransform(t.getComputedTransform()) : n.copyTransform(t), n.buildPath = t.buildPath, n.applyTransform = n.applyTransform, n.z = t.z, n.z2 = t.z2, n.zlevel = t.zlevel, n } const uu = function () { this.cx = 0, this.cy = 0, this.r = 0 }; const hu = (function (t) { function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultShape = function () { return new uu() }, e.prototype.buildPath = function (t, e) { t.moveTo(e.cx + e.r, e.cy), t.arc(e.cx, e.cy, e.r, 0, 2 * Math.PI) }, e }(gs)); hu.prototype.type = 'circle'; const cu = function () { this.cx = 0, this.cy = 0, this.rx = 0, this.ry = 0 }; const pu = (function (t) { function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultShape = function () { return new cu() }, e.prototype.buildPath = function (t, e) { const n = 0.5522848; const i = e.cx; const r = e.cy; const o = e.rx; const a = e.ry; const s = o * n; const l = a * n; t.moveTo(i - o, r), t.bezierCurveTo(i - o, r - l, i - s, r - a, i, r - a), t.bezierCurveTo(i + s, r - a, i + o, r - l, i + o, r), t.bezierCurveTo(i + o, r + l, i + s, r + a, i, r + a), t.bezierCurveTo(i - s, r + a, i - o, r + l, i - o, r), t.closePath() }, e }(gs)); pu.prototype.type = 'ellipse'; const du = Math.PI; const fu = 2 * du; const gu = Math.sin; const yu = Math.cos; const vu = Math.acos; const mu = Math.atan2; const xu = Math.abs; const _u = Math.sqrt; const bu = Math.max; const wu = Math.min; const Su = 1e-4; function Mu(t, e, n, i, r, o, a) { const s = t - n; const l = e - i; const u = (a ? o : -o) / _u(s * s + l * l); const h = u * l; const c = -u * s; const p = t + h; const d = e + c; const f = n + h; const g = i + c; const y = (p + f) / 2; const v = (d + g) / 2; const m = f - p; const x = g - d; const _ = m * m + x * x; const b = r - o; const w = p * g - f * d; const S = (x < 0 ? -1 : 1) * _u(bu(0, b * b * _ - w * w)); let M = (w * x - m * S) / _; let I = (-w * m - x * S) / _; const T = (w * x + m * S) / _; const C = (-w * m + x * S) / _; const D = M - y; const A = I - v; const k = T - y; const L = C - v; return D * D + A * A > k * k + L * L && (M = T, I = C), { cx: M, cy: I, x0: -h, y0: -c, x1: M * (r / b - 1), y1: I * (r / b - 1) } } const Tu = function () { this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = 2 * Math.PI, this.clockwise = !0, this.cornerRadius = 0 }; const Cu = (function (t) { + function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultShape = function () { return new Tu() }, e.prototype.buildPath = function (t, e) { + !(function (t, e) { + let n; let i = bu(e.r, 0); let r = bu(e.r0 || 0, 0); const o = i > 0; if (o || r > 0) { + if (o || (i = r, r = 0), r > i) { const a = i; i = r, r = a } const s = e.startAngle; const l = e.endAngle; if (!isNaN(s) && !isNaN(l)) { + const u = e.cx; const h = e.cy; const c = !!e.clockwise; let p = xu(l - s); const d = p > fu && p % fu; if (d > Su && (p = d), i > Su) { + if (p > fu - Su) { + t.moveTo(u + i * yu(s), h + i * gu(s)), t.arc(u, h, i, s, l, !c), r > Su && (t.moveTo(u + r * yu(l), h + r * gu(l)), t.arc(u, h, r, l, s, c)) + } + else { + let f = void 0; let g = void 0; let y = void 0; let v = void 0; let m = void 0; let x = void 0; let _ = void 0; let b = void 0; let w = void 0; let S = void 0; let M = void 0; let I = void 0; let T = void 0; let C = void 0; let D = void 0; let A = void 0; const k = i * yu(s); const L = i * gu(s); const P = r * yu(l); const O = r * gu(l); const R = p > Su; if (R) { + const N = e.cornerRadius; N && (f = (n = (function (t) { + let e; if (Y(t)) { + let n = t.length; if (!n) + return t; e = n === 1 ? [t[0], t[0], 0, 0] : n === 2 ? [t[0], t[0], t[1], t[1]] : n === 3 ? t.concat(t[2]) : t + } + else { + e = [t, t, t, t] + } return e + }(N)))[0], g = n[1], y = n[2], v = n[3]); const E = xu(i - r) / 2; if (m = wu(E, y), x = wu(E, v), _ = wu(E, f), b = wu(E, g), M = w = bu(m, x), I = S = bu(_, b), (w > Su || S > Su) && (T = i * yu(l), C = i * gu(l), D = r * yu(s), A = r * gu(s), p < du)) { + const z = (function (t, e, n, i, r, o, a, s) { + let l = n - t; let u = i - e; let h = a - r; let c = s - o; let p = c * l - h * u; if (!(p * p < Su)) + return [t + (p = (h * (e - o) - c * (t - r)) / p) * l, e + p * u] +}(k, L, D, A, T, C, P, O)); if (z) { const V = k - z[0]; const B = L - z[1]; const F = T - z[0]; const G = C - z[1]; const W = 1 / gu(vu((V * F + B * G) / (_u(V * V + B * B) * _u(F * F + G * G))) / 2); const H = _u(z[0] * z[0] + z[1] * z[1]); M = wu(w, (i - H) / (W + 1)), I = wu(S, (r - H) / (W - 1)) } + } + } if (R) { + if (M > Su) { var U = wu(y, M); var X = wu(v, M); var Z = Mu(D, A, k, L, i, U, c); var j = Mu(T, C, P, O, i, X, c); t.moveTo(u + Z.cx + Z.x0, h + Z.cy + Z.y0), M < w && U === X ? t.arc(u + Z.cx, h + Z.cy, M, mu(Z.y0, Z.x0), mu(j.y0, j.x0), !c) : (U > 0 && t.arc(u + Z.cx, h + Z.cy, U, mu(Z.y0, Z.x0), mu(Z.y1, Z.x1), !c), t.arc(u, h, i, mu(Z.cy + Z.y1, Z.cx + Z.x1), mu(j.cy + j.y1, j.cx + j.x1), !c), X > 0 && t.arc(u + j.cx, h + j.cy, X, mu(j.y1, j.x1), mu(j.y0, j.x0), !c)) } + else { + t.moveTo(u + k, h + L), t.arc(u, h, i, s, l, !c) + } + } + else { + t.moveTo(u + k, h + L) + }r > Su && R ? I > Su ? (U = wu(f, I), Z = Mu(P, O, T, C, r, -(X = wu(g, I)), c), j = Mu(k, L, D, A, r, -U, c), t.lineTo(u + Z.cx + Z.x0, h + Z.cy + Z.y0), I < S && U === X ? t.arc(u + Z.cx, h + Z.cy, I, mu(Z.y0, Z.x0), mu(j.y0, j.x0), !c) : (X > 0 && t.arc(u + Z.cx, h + Z.cy, X, mu(Z.y0, Z.x0), mu(Z.y1, Z.x1), !c), t.arc(u, h, r, mu(Z.cy + Z.y1, Z.cx + Z.x1), mu(j.cy + j.y1, j.cx + j.x1), c), U > 0 && t.arc(u + j.cx, h + j.cy, U, mu(j.y1, j.x1), mu(j.y0, j.x0), !c))) : (t.lineTo(u + P, h + O), t.arc(u, h, r, l, s, c)) : t.lineTo(u + P, h + O) + } + } + else { + t.moveTo(u, h) + }t.closePath() + } + } + }(t, e)) + }, e.prototype.isZeroArea = function () { return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0 }, e + }(gs)); Cu.prototype.type = 'sector'; const Du = function () { this.cx = 0, this.cy = 0, this.r = 0, this.r0 = 0 }; const Au = (function (t) { function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultShape = function () { return new Du() }, e.prototype.buildPath = function (t, e) { const n = e.cx; const i = e.cy; const r = 2 * Math.PI; t.moveTo(n + e.r, i), t.arc(n, i, e.r, 0, r, !1), t.moveTo(n + e.r0, i), t.arc(n, i, e.r0, 0, r, !0) }, e }(gs)); function ku(t, e, n) { + const i = e.smooth; const r = e.points; if (r && r.length >= 2) { + if (i) { + const o = (function (t, e, n, i) { + let r; let o; let a; let s; const l = []; const u = []; const h = []; const c = []; if (i) { a = [1 / 0, 1 / 0], s = [-1 / 0, -1 / 0]; for (var p = 0, d = t.length; p < d; p++)Gt(a, a, t[p]), Wt(s, s, t[p]); Gt(a, a, i[0]), Wt(s, s, i[1]) } for (p = 0, d = t.length; p < d; p++) { + const f = t[p]; if (n) { + r = t[p ? p - 1 : d - 1], o = t[(p + 1) % d] + } + else { if (p === 0 || p === d - 1) { l.push(Mt(t[p])); continue }r = t[p - 1], o = t[p + 1] }Dt(u, o, r), Ot(u, u, e); let g = Nt(f, r); let y = Nt(f, o); const v = g + y; v !== 0 && (g /= v, y /= v), Ot(h, u, -g), Ot(c, u, y); const m = Tt([], f, h); const x = Tt([], f, c); i && (Wt(m, m, a), Gt(m, m, s), Wt(x, x, a), Gt(x, x, s)), l.push(m), l.push(x) + } return n && l.push(l.shift()), l + }(r, i, n, e.smoothConstraint)); t.moveTo(r[0][0], r[0][1]); for (var a = r.length, s = 0; s < (n ? a : a - 1); s++) { const l = o[2 * s]; const u = o[2 * s + 1]; const h = r[(s + 1) % a]; t.bezierCurveTo(l[0], l[1], u[0], u[1], h[0], h[1]) } + } + else { t.moveTo(r[0][0], r[0][1]), s = 1; for (let c = r.length; s < c; s++)t.lineTo(r[s][0], r[s][1]) }n && t.closePath() + } + }Au.prototype.type = 'ring'; const Lu = function () { this.points = null, this.smooth = 0, this.smoothConstraint = null }; const Pu = (function (t) { function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultShape = function () { return new Lu() }, e.prototype.buildPath = function (t, e) { ku(t, e, !0) }, e }(gs)); Pu.prototype.type = 'polygon'; const Ou = function () { this.points = null, this.percent = 1, this.smooth = 0, this.smoothConstraint = null }; const Ru = (function (t) { function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultStyle = function () { return { stroke: '#000', fill: null } }, e.prototype.getDefaultShape = function () { return new Ou() }, e.prototype.buildPath = function (t, e) { ku(t, e, !1) }, e }(gs)); Ru.prototype.type = 'polyline'; const Nu = {}; const Eu = function () { this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1 }; const zu = (function (t) { + function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultStyle = function () { return { stroke: '#000', fill: null } }, e.prototype.getDefaultShape = function () { return new Eu() }, e.prototype.buildPath = function (t, e) { + let n, i, r, o; if (this.subPixelOptimize) { const a = ws(Nu, e, this.style); n = a.x1, i = a.y1, r = a.x2, o = a.y2 } + else { + n = e.x1, i = e.y1, r = e.x2, o = e.y2 + } const s = e.percent; s !== 0 && (t.moveTo(n, i), s < 1 && (r = n * (1 - s) + r * s, o = i * (1 - s) + o * s), t.lineTo(r, o)) + }, e.prototype.pointAt = function (t) { const e = this.shape; return [e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t] }, e + }(gs)); zu.prototype.type = 'line'; const Vu = []; const Bu = function () { this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.cpx1 = 0, this.cpy1 = 0, this.percent = 1 }; function Fu(t, e, n) { const i = t.cpx2; const r = t.cpy2; return i != null || r != null ? [(n ? Ye : He)(t.x1, t.cpx1, t.cpx2, t.x2, e), (n ? Ye : He)(t.y1, t.cpy1, t.cpy2, t.y2, e)] : [(n ? $e : Ke)(t.x1, t.cpx1, t.x2, e), (n ? $e : Ke)(t.y1, t.cpy1, t.y2, e)] } const Gu = (function (t) { function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultStyle = function () { return { stroke: '#000', fill: null } }, e.prototype.getDefaultShape = function () { return new Bu() }, e.prototype.buildPath = function (t, e) { const n = e.x1; const i = e.y1; let r = e.x2; let o = e.y2; let a = e.cpx1; let s = e.cpy1; let l = e.cpx2; let u = e.cpy2; const h = e.percent; h !== 0 && (t.moveTo(n, i), l == null || u == null ? (h < 1 && (Qe(n, a, r, h, Vu), a = Vu[1], r = Vu[2], Qe(i, s, o, h, Vu), s = Vu[1], o = Vu[2]), t.quadraticCurveTo(a, s, r, o)) : (h < 1 && (Ze(n, a, l, r, h, Vu), a = Vu[1], l = Vu[2], r = Vu[3], Ze(i, s, u, o, h, Vu), s = Vu[1], u = Vu[2], o = Vu[3]), t.bezierCurveTo(a, s, l, u, r, o))) }, e.prototype.pointAt = function (t) { return Fu(this.shape, t, !1) }, e.prototype.tangentAt = function (t) { const e = Fu(this.shape, t, !0); return Rt(e, e) }, e }(gs)); Gu.prototype.type = 'bezier-curve'; const Wu = function () { this.cx = 0, this.cy = 0, this.r = 0, this.startAngle = 0, this.endAngle = 2 * Math.PI, this.clockwise = !0 }; const Hu = (function (t) { function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultStyle = function () { return { stroke: '#000', fill: null } }, e.prototype.getDefaultShape = function () { return new Wu() }, e.prototype.buildPath = function (t, e) { const n = e.cx; const i = e.cy; const r = Math.max(e.r, 0); const o = e.startAngle; const a = e.endAngle; const s = e.clockwise; const l = Math.cos(o); const u = Math.sin(o); t.moveTo(l * r + n, u * r + i), t.arc(n, i, r, o, a, !s) }, e }(gs)); Hu.prototype.type = 'arc'; const Yu = (function (t) { function e() { const e = t !== null && t.apply(this, arguments) || this; return e.type = 'compound', e } return n(e, t), e.prototype._updatePathDirty = function () { for (var t = this.shape.paths, e = this.shapeChanged(), n = 0; n < t.length; n++)e = e || t[n].shapeChanged(); e && this.dirtyShape() }, e.prototype.beforeBrush = function () { this._updatePathDirty(); for (let t = this.shape.paths || [], e = this.getGlobalScale(), n = 0; n < t.length; n++)t[n].path || t[n].createPathProxy(), t[n].path.setScale(e[0], e[1], t[n].segmentIgnoreThreshold) }, e.prototype.buildPath = function (t, e) { for (let n = e.paths || [], i = 0; i < n.length; i++)n[i].buildPath(t, n[i].shape, !0) }, e.prototype.afterBrush = function () { for (let t = this.shape.paths || [], e = 0; e < t.length; e++)t[e].pathUpdated() }, e.prototype.getBoundingRect = function () { return this._updatePathDirty.call(this), gs.prototype.getBoundingRect.call(this) }, e }(gs)); const Uu = (function () { function t(t) { this.colorStops = t || [] } return t.prototype.addColorStop = function (t, e) { this.colorStops.push({ offset: t, color: e }) }, t }()); const Xu = (function (t) { function e(e, n, i, r, o, a) { const s = t.call(this, o) || this; return s.x = e == null ? 0 : e, s.y = n == null ? 0 : n, s.x2 = i == null ? 1 : i, s.y2 = r == null ? 0 : r, s.type = 'linear', s.global = a || !1, s } return n(e, t), e }(Uu)); const Zu = (function (t) { function e(e, n, i, r, o) { const a = t.call(this, r) || this; return a.x = e == null ? 0.5 : e, a.y = n == null ? 0.5 : n, a.r = i == null ? 0.5 : i, a.type = 'radial', a.global = o || !1, a } return n(e, t), e }(Uu)); const ju = [0, 0]; const qu = [0, 0]; const Ku = new Ji(); const $u = new Ji(); const Ju = (function () { + function t(t, e) { this._corners = [], this._axes = [], this._origin = [0, 0]; for (var n = 0; n < 4; n++) this._corners[n] = new Ji(); for (n = 0; n < 2; n++) this._axes[n] = new Ji(); t && this.fromBoundingRect(t, e) } return t.prototype.fromBoundingRect = function (t, e) { + const n = this._corners; const i = this._axes; const r = t.x; const o = t.y; const a = r + t.width; const s = o + t.height; if (n[0].set(r, o), n[1].set(a, o), n[2].set(a, s), n[3].set(r, s), e) { + for (var l = 0; l < 4; l++)n[l].transform(e) + } for (Ji.sub(i[0], n[1], n[0]), Ji.sub(i[1], n[3], n[0]), i[0].normalize(), i[1].normalize(), l = 0; l < 2; l++) this._origin[l] = i[l].dot(n[0]) + }, t.prototype.intersect = function (t, e) { let n = !0; const i = !e; return Ku.set(1 / 0, 1 / 0), $u.set(0, 0), !this._intersectCheckOneSide(this, t, Ku, $u, i, 1) && (n = !1, i) || !this._intersectCheckOneSide(t, this, Ku, $u, i, -1) && (n = !1, i) || i || Ji.copy(e, n ? Ku : $u), n }, t.prototype._intersectCheckOneSide = function (t, e, n, i, r, o) { + for (var a = !0, s = 0; s < 2; s++) { + const l = this._axes[s]; if (this._getProjMinMaxOnAxis(s, t._corners, ju), this._getProjMinMaxOnAxis(s, e._corners, qu), ju[1] < qu[0] || ju[0] > qu[1]) { + if (a = !1, r) + return a; var u = Math.abs(qu[0] - ju[1]); var h = Math.abs(ju[0] - qu[1]); Math.min(u, h) > i.len() && (u < h ? Ji.scale(i, l, -u * o) : Ji.scale(i, l, h * o)) + } + else { + n && (u = Math.abs(qu[0] - ju[1]), h = Math.abs(ju[0] - qu[1]), Math.min(u, h) < n.len() && (u < h ? Ji.scale(n, l, u * o) : Ji.scale(n, l, -h * o))) + } + } return a + }, t.prototype._getProjMinMaxOnAxis = function (t, e, n) { for (var i = this._axes[t], r = this._origin, o = e[0].dot(i) + r[t], a = o, s = o, l = 1; l < e.length; l++) { const u = e[l].dot(i) + r[t]; a = Math.min(u, a), s = Math.max(u, s) }n[0] = a, n[1] = s }, t + }()); const Qu = []; const th = (function (t) { + function e() { const e = t !== null && t.apply(this, arguments) || this; return e.notClear = !0, e.incremental = !0, e._displayables = [], e._temporaryDisplayables = [], e._cursor = 0, e } return n(e, t), e.prototype.traverse = function (t, e) { t.call(e, this) }, e.prototype.useStyle = function () { this.style = {} }, e.prototype.getCursor = function () { return this._cursor }, e.prototype.innerAfterBrush = function () { this._cursor = this._displayables.length }, e.prototype.clearDisplaybles = function () { this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.markRedraw(), this.notClear = !1 }, e.prototype.clearTemporalDisplayables = function () { this._temporaryDisplayables = [] }, e.prototype.addDisplayable = function (t, e) { e ? this._temporaryDisplayables.push(t) : this._displayables.push(t), this.markRedraw() }, e.prototype.addDisplayables = function (t, e) { e = e || !1; for (let n = 0; n < t.length; n++) this.addDisplayable(t[n], e) }, e.prototype.getDisplayables = function () { return this._displayables }, e.prototype.getTemporalDisplayables = function () { return this._temporaryDisplayables }, e.prototype.eachPendingDisplayable = function (t) { for (var e = this._cursor; e < this._displayables.length; e++)t && t(this._displayables[e]); for (e = 0; e < this._temporaryDisplayables.length; e++)t && t(this._temporaryDisplayables[e]) }, e.prototype.update = function () { this.updateTransform(); for (var t = this._cursor; t < this._displayables.length; t++)(e = this._displayables[t]).parent = this, e.update(), e.parent = null; for (t = 0; t < this._temporaryDisplayables.length; t++) { var e; (e = this._temporaryDisplayables[t]).parent = this, e.update(), e.parent = null } }, e.prototype.getBoundingRect = function () { if (!this._rect) { for (var t = new sr(1 / 0, 1 / 0, -1 / 0, -1 / 0), e = 0; e < this._displayables.length; e++) { const n = this._displayables[e]; const i = n.getBoundingRect().clone(); n.needLocalTransform() && i.applyTransform(n.getLocalTransform(Qu)), t.union(i) } this._rect = t } return this._rect }, e.prototype.contain = function (t, e) { + const n = this.transformCoordToLocal(t, e); if (this.getBoundingRect().contain(n[0], n[1])) { + for (let i = 0; i < this._displayables.length; i++) { + if (this._displayables[i].contain(t, e)) + return !0 + } + } return !1 + }, e + }(da)); const eh = So(); function nh(t, e, n, i, r) { let o; if (e && e.ecModel) { const a = e.ecModel.getUpdatePayload(); o = a && a.animation } const s = t === 'update'; if (e && e.isAnimationEnabled()) { let l = void 0; let u = void 0; let h = void 0; return i ? (l = rt(i.duration, 200), u = rt(i.easing, 'cubicOut'), h = 0) : (l = e.getShallow(s ? 'animationDurationUpdate' : 'animationDuration'), u = e.getShallow(s ? 'animationEasingUpdate' : 'animationEasing'), h = e.getShallow(s ? 'animationDelayUpdate' : 'animationDelay')), o && (o.duration != null && (l = o.duration), o.easing != null && (u = o.easing), o.delay != null && (h = o.delay)), U(h) && (h = h(n, r)), U(l) && (l = l(n)), { duration: l || 0, delay: h, easing: u } } return null } function ih(t, e, n, i, r, o, a) { + let s; let l = !1; U(r) ? (a = o, o = r, r = null) : q(r) && (o = r.cb, a = r.during, l = r.isFrom, s = r.removeOpt, r = r.dataIndex); const u = t === 'leave'; u || e.stopAnimation('leave'); const h = nh(t, i, r, u ? s || {} : null, i && i.getAnimationDelayParams ? i.getAnimationDelayParams(e, r) : null); if (h && h.duration > 0) { const c = { duration: h.duration, delay: h.delay || 0, easing: h.easing, done: o, force: !!o || !!a, setToFinal: !u, scope: t, during: a }; l ? e.animateFrom(n, c) : e.animateTo(n, c) } + else { + e.stopAnimation(), !l && e.attr(n), a && a(1), o && o() + } + } function rh(t, e, n, i, r, o) { ih('update', t, e, n, i, r, o) } function oh(t, e, n, i, r, o) { ih('enter', t, e, n, i, r, o) } function ah(t) { + if (!t.__zr) + return !0; for (let e = 0; e < t.animators.length; e++) { + if (t.animators[e].scope === 'leave') + return !0 + } return !1 + } function sh(t, e, n, i, r, o) { ah(t) || ih('leave', t, e, n, i, r, o) } function lh(t, e, n, i) { t.removeTextContent(), t.removeTextGuideLine(), sh(t, { style: { opacity: 0 } }, e, n, i) } function uh(t, e, n) { function i() { t.parent && t.parent.remove(t) }t.isGroup ? t.traverse((t) => { t.isGroup || lh(t, e, n, i) }) : lh(t, e, n, i) } function hh(t) { eh(t).oldStyle = t.style } const ch = Math.max; const ph = Math.min; const dh = {}; function fh(t) { return gs.extend(t) } function yh(t, e) { return (function (t, e) { const i = au(t, e); return (function (t) { function e(e) { const n = t.call(this, e) || this; return n.applyTransform = i.applyTransform, n.buildPath = i.buildPath, n } return n(e, t), e }(ru)) }(t, e)) } function vh(t, e) { dh[t] = e } function mh(t) { + if (dh.hasOwnProperty(t)) + return dh[t] + } function xh(t, e, n, i) { const r = su(t, e); return n && (i === 'center' && (n = bh(n, r.getBoundingRect())), Sh(r, n)), r } function _h(t, e, n) { var i = new _s({ style: { image: t, x: e.x, y: e.y, width: e.width, height: e.height }, onload(t) { if (n === 'center') { const r = { width: t.width, height: t.height }; i.setStyle(bh(e, r)) } } }); return i } function bh(t, e) { let n; const i = e.width / e.height; let r = t.height * i; return n = r <= t.width ? t.height : (r = t.width) / i, { x: t.x + t.width / 2 - r / 2, y: t.y + t.height / 2 - n / 2, width: r, height: n } } const wh = function (t, e) { for (var n = [], i = t.length, r = 0; r < i; r++) { const o = t[r]; n.push(o.getUpdatedPathProxy(!0)) } const a = new gs(e); return a.createPathProxy(), a.buildPath = function (t) { if (ou(t)) { t.appendPath(n); const e = t.getContext(); e && t.rebuildPath(e, 1) } }, a }; function Sh(t, e) { if (t.applyTransform) { const n = t.getBoundingRect().calculateTransform(e); t.applyTransform(n) } } const Mh = Ms; function Ih(t, e) { for (var n = Oi([]); t && t !== e;)Ni(n, t.getLocalTransform(), n), t = t.parent; return n } function Th(t, e, n) { return e && !N(e) && (e = qi.getLocalTransform(e)), n && (e = Bi([], e)), Ft([], t, e) } function Ch(t, e, n) { const i = e[4] === 0 || e[5] === 0 || e[0] === 0 ? 1 : Math.abs(2 * e[4] / e[0]); const r = e[4] === 0 || e[5] === 0 || e[2] === 0 ? 1 : Math.abs(2 * e[4] / e[2]); let o = [t === 'left' ? -i : t === 'right' ? i : 0, t === 'top' ? -r : t === 'bottom' ? r : 0]; return o = Th(o, e, n), Math.abs(o[0]) > Math.abs(o[1]) ? o[0] > 0 ? 'right' : 'left' : o[1] > 0 ? 'bottom' : 'top' } function Dh(t) { return !t.isGroup } function Ah(t, e, n) { if (t && e) { let i; const r = (i = {}, t.traverse((t) => { Dh(t) && t.anid && (i[t.anid] = t) }), i); e.traverse((t) => { if (Dh(t) && t.anid) { const e = r[t.anid]; if (e) { const i = o(t); t.attr(o(e)), rh(t, i, n, Hs(t).dataIndex) } } }) } function o(t) { const e = { x: t.x, y: t.y, rotation: t.rotation }; return (function (t) { return t.shape != null }(t)) && (e.shape = A({}, t.shape)), e } } function kh(t, e) { return z(t, (t) => { let n = t[0]; n = ch(n, e.x), n = ph(n, e.x + e.width); let i = t[1]; return i = ch(i, e.y), [n, i = ph(i, e.y + e.height)] }) } function Lh(t, e) { + const n = ch(t.x, e.x); const i = ph(t.x + t.width, e.x + e.width); const r = ch(t.y, e.y); const o = ph(t.y + t.height, e.y + e.height); if (i >= n && o >= r) + return { x: n, y: r, width: i - n, height: o - r } + } function Ph(t, e, n) { + const i = A({ rectHover: !0 }, e); const r = i.style = { strokeNoScale: !0 }; if (n = n || { x: -1, y: -1, width: 2, height: 2 }, t) + return t.indexOf('image://') === 0 ? (r.image = t.slice(8), k(r, n), new _s(i)) : xh(t.replace('path://', ''), i, n, 'center') + } function Oh(t, e, n, i, r) { + for (let o = 0, a = r[r.length - 1]; o < r.length; o++) { + const s = r[o]; if (Rh(t, e, n, i, s[0], s[1], a[0], a[1])) + return !0; a = s + } + } function Rh(t, e, n, i, r, o, a, s) { + let l; const u = n - t; const h = i - e; const c = a - r; const p = s - o; const d = Nh(c, p, u, h); if ((l = d) <= 1e-6 && l >= -1e-6) + return !1; const f = t - r; const g = e - o; const y = Nh(f, g, u, h) / d; if (y < 0 || y > 1) + return !1; const v = Nh(f, g, c, p) / d; return !(v < 0 || v > 1) + } function Nh(t, e, n, i) { return t * i - n * e } function Eh(t) { const e = t.itemTooltipOption; const n = t.componentModel; const i = t.itemName; const r = X(e) ? { formatter: e } : e; const o = n.mainType; const a = n.componentIndex; const s = { componentType: o, name: i, $vars: ['name'] }; s[`${o}Index`] = a; const l = t.formatterParamsExtra; l && E(G(l), (t) => { mt(s, t) || (s[t] = l[t], s.$vars.push(t)) }); const u = Hs(t.el); u.componentMainType = o, u.componentIndex = a, u.tooltipConfig = { name: i, option: k({ content: i, formatterParams: s }, r) } } function zh(t, e) { let n; t.isGroup && (n = e(t)), n || t.traverse(e) } function Vh(t, e) { + if (t) { + if (Y(t)) { + for (let n = 0; n < t.length; n++)zh(t[n], e) + } + else { + zh(t, e) + } + } + }vh('circle', hu), vh('ellipse', pu), vh('sector', Cu), vh('ring', Au), vh('polygon', Pu), vh('polyline', Ru), vh('rect', Cs), vh('line', zu), vh('bezierCurve', Gu), vh('arc', Hu); const Bh = Object.freeze({ __proto__: null, updateProps: rh, initProps: oh, removeElement: sh, removeElementWithFadeOut: uh, isElementRemoved: ah, extendShape: fh, extendPath: yh, registerShape: vh, getShapeClass: mh, makePath: xh, makeImage: _h, mergePath: wh, resizePath: Sh, subPixelOptimizeLine(t) { return ws(t.shape, t.shape, t.style), t }, subPixelOptimizeRect(t) { return Ss(t.shape, t.shape, t.style), t }, subPixelOptimize: Mh, getTransform: Ih, applyTransform: Th, transformDirection: Ch, groupTransition: Ah, clipPointsByRect: kh, clipRectByRect: Lh, createIcon: Ph, linePolygonIntersect: Oh, lineLineIntersect: Rh, setTooltipConfig: Eh, traverseElements: Vh, Group: Cr, Image: _s, Text: ks, Circle: hu, Ellipse: pu, Sector: Cu, Ring: Au, Polygon: Pu, Polyline: Ru, Rect: Cs, Line: zu, BezierCurve: Gu, Arc: Hu, IncrementalDisplayable: th, CompoundPath: Yu, LinearGradient: Xu, RadialGradient: Zu, BoundingRect: sr, OrientedBoundingRect: Ju, Point: Ji, Path: gs }); const Fh = {}; function Gh(t, e) { for (let n = 0; n < qs.length; n++) { const i = qs[n]; const r = e[i]; const o = t.ensureState(i); o.style = o.style || {}, o.style.text = r } const a = t.currentStates.slice(); t.clearStates(!0), t.setStyle({ text: e.normal }), t.useStates(a, !0) } function Wh(t, e, n) { let i; const r = t.labelFetcher; const o = t.labelDataIndex; const a = t.labelDimIndex; const s = e.normal; r && (i = r.getFormattedLabel(o, 'normal', null, a, s && s.get('formatter'), n != null ? { interpolatedValue: n } : null)), i == null && (i = U(t.defaultText) ? t.defaultText(o, t, n) : t.defaultText); for (var l = { normal: i }, u = 0; u < qs.length; u++) { const h = qs[u]; const c = e[h]; l[h] = rt(r ? r.getFormattedLabel(o, h, null, a, c && c.get('formatter')) : null, i) } return l } function Hh(t, e, n, i) { + n = n || Fh; for (var r = t instanceof ks, o = !1, a = 0; a < Ks.length; a++) { + if ((p = e[Ks[a]]) && p.getShallow('show')) { o = !0; break } + } let s = r ? t : t.getTextContent(); if (o) { r || (s || (s = new ks(), t.setTextContent(s)), t.stateProxy && (s.stateProxy = t.stateProxy)); const l = Wh(n, e); const u = e.normal; const h = !!u.getShallow('show'); const c = Uh(u, i && i.normal, n, !1, !r); for (c.text = l.normal, r || t.setTextConfig(Xh(u, n, !1)), a = 0; a < qs.length; a++) { var p; const d = qs[a]; if (p = e[d]) { const f = s.ensureState(d); const g = !!rt(p.getShallow('show'), h); g !== h && (f.ignore = !g), f.style = Uh(p, i && i[d], n, !0, !r), f.style.text = l[d], r || (t.ensureState(d).textConfig = Xh(p, n, !0)) } }s.silent = !!u.getShallow('silent'), s.style.x != null && (c.x = s.style.x), s.style.y != null && (c.y = s.style.y), s.ignore = !h, s.useStyle(c), s.dirty(), n.enableTextSetter && (Jh(s).setLabelText = function (t) { const i = Wh(n, e, t); Gh(s, i) }) } + else { + s && (s.ignore = !0) + }t.dirty() + } function Yh(t, e) { e = e || 'label'; for (var n = { normal: t.getModel(e) }, i = 0; i < qs.length; i++) { const r = qs[i]; n[r] = t.getModel([r, e]) } return n } function Uh(t, e, n, i, r) { + const o = {}; return (function (t, e, n, i, r) { + n = n || Fh; let o; const a = e.ecModel; const s = a && a.option.textStyle; const l = (function (t) { for (var e; t && t !== t.ecModel;) { const n = (t.option || Fh).rich; if (n) { e = e || {}; for (let i = G(n), r = 0; r < i.length; r++)e[i[r]] = 1 }t = t.parentModel } return e }(e)); if (l) { + for (const u in o = {}, l) { + if (l.hasOwnProperty(u)) { const h = e.getModel(['rich', u]); Kh(o[u] = {}, h, s, n, i, r, !1, !0) } + } + }o && (t.rich = o); const c = e.get('overflow'); c && (t.overflow = c); const p = e.get('minMargin'); p != null && (t.margin = p), Kh(t, e, s, n, i, r, !0, !1) + }(o, t, n, i, r)), e && A(o, e), o + } function Xh(t, e, n) { e = e || {}; let i; const r = {}; let o = t.getShallow('rotate'); const a = rt(t.getShallow('distance'), n ? null : 5); const s = t.getShallow('offset'); return (i = t.getShallow('position') || (n ? null : 'inside')) === 'outside' && (i = e.defaultOutsidePosition || 'top'), i != null && (r.position = i), s != null && (r.offset = s), o != null && (o *= Math.PI / 180, r.rotation = o), a != null && (r.distance = a), r.outsideFill = t.get('color') === 'inherit' ? e.inheritColor || null : 'auto', r } const Zh = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY']; const jh = ['align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign']; const qh = ['padding', 'borderWidth', 'borderRadius', 'borderDashOffset', 'backgroundColor', 'borderColor', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY']; function Kh(t, e, n, i, r, o, a, s) { n = !r && n || Fh; const l = i && i.inheritColor; let u = e.getShallow('color'); let h = e.getShallow('textBorderColor'); let c = rt(e.getShallow('opacity'), n.opacity); u !== 'inherit' && u !== 'auto' || (u = l || null), h !== 'inherit' && h !== 'auto' || (h = l || null), o || (u = u || n.color, h = h || n.textBorderColor), u != null && (t.fill = u), h != null && (t.stroke = h); const p = rt(e.getShallow('textBorderWidth'), n.textBorderWidth); p != null && (t.lineWidth = p); const d = rt(e.getShallow('textBorderType'), n.textBorderType); d != null && (t.lineDash = d); const f = rt(e.getShallow('textBorderDashOffset'), n.textBorderDashOffset); f != null && (t.lineDashOffset = f), r || c != null || s || (c = i && i.defaultOpacity), c != null && (t.opacity = c), r || o || t.fill == null && i.inheritColor && (t.fill = i.inheritColor); for (var g = 0; g < Zh.length; g++) { var y = Zh[g]; (m = rt(e.getShallow(y), n[y])) != null && (t[y] = m) } for (g = 0; g < jh.length; g++)y = jh[g], (m = e.getShallow(y)) != null && (t[y] = m); if (t.verticalAlign == null) { const v = e.getShallow('baseline'); v != null && (t.verticalAlign = v) } if (!a || !i.disableBox) { for (g = 0; g < qh.length; g++) { var m; y = qh[g], (m = e.getShallow(y)) != null && (t[y] = m) } const x = e.getShallow('borderType'); x != null && (t.borderDash = x), t.backgroundColor !== 'auto' && t.backgroundColor !== 'inherit' || !l || (t.backgroundColor = l), t.borderColor !== 'auto' && t.borderColor !== 'inherit' || !l || (t.borderColor = l) } } function $h(t, e) { const n = e && e.getModel('textStyle'); return ut([t.fontStyle || n && n.getShallow('fontStyle') || '', t.fontWeight || n && n.getShallow('fontWeight') || '', `${t.fontSize || n && n.getShallow('fontSize') || 12}px`, t.fontFamily || n && n.getShallow('fontFamily') || 'sans-serif'].join(' ')) } var Jh = So(); function Qh(t, e, n, i) { if (t) { const r = Jh(t); r.prevValue = r.value, r.value = n; const o = e.normal; r.valueAnimation = o.get('valueAnimation'), r.valueAnimation && (r.precision = o.get('precision'), r.defaultInterpolatedText = i, r.statesModels = e) } } function tc(t, e, n, i, r) { const o = Jh(t); if (o.valueAnimation && o.prevValue !== o.value) { const a = o.defaultInterpolatedText; const s = rt(o.interpolatedValue, o.prevValue); const l = o.value; t.percent = 0, (o.prevValue == null ? oh : rh)(t, { percent: 1 }, i, e, null, (i) => { const u = Po(n, o.precision, s, l, i); o.interpolatedValue = i === 1 ? null : u; const h = Wh({ labelDataIndex: e, labelFetcher: r, defaultText: a ? a(u) : `${u}` }, o.statesModels, u); Gh(t, h) }) } } let ec; let nc; const ic = ['textStyle', 'color']; const rc = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'padding', 'lineHeight', 'rich', 'width', 'height', 'overflow']; const oc = new ks(); const ac = (function () { function t() {} return t.prototype.getTextColor = function (t) { const e = this.ecModel; return this.getShallow('color') || (!t && e ? e.get(ic) : null) }, t.prototype.getFont = function () { return $h({ fontStyle: this.getShallow('fontStyle'), fontWeight: this.getShallow('fontWeight'), fontSize: this.getShallow('fontSize'), fontFamily: this.getShallow('fontFamily') }, this.ecModel) }, t.prototype.getTextRect = function (t) { for (var e = { text: t, verticalAlign: this.getShallow('verticalAlign') || this.getShallow('baseline') }, n = 0; n < rc.length; n++)e[rc[n]] = this.getShallow(rc[n]); return oc.useStyle(e), oc.update(), oc.getBoundingRect() }, t }()); const sc = [['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['lineDash', 'type'], ['lineDashOffset', 'dashOffset'], ['lineCap', 'cap'], ['lineJoin', 'join'], ['miterLimit']]; const lc = Wo(sc); const uc = (function () { function t() {} return t.prototype.getLineStyle = function (t) { return lc(this, t) }, t }()); const hc = [['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['lineDash', 'borderType'], ['lineDashOffset', 'borderDashOffset'], ['lineCap', 'borderCap'], ['lineJoin', 'borderJoin'], ['miterLimit', 'borderMiterLimit']]; const cc = Wo(hc); const pc = (function () { function t() {} return t.prototype.getItemStyle = function (t, e) { return cc(this, t, e) }, t }()); const dc = (function () { + function t(t, e, n) { this.parentModel = e, this.ecModel = n, this.option = t } return t.prototype.init = function (t, e, n) { for (let i = [], r = 3; r < arguments.length; r++)i[r - 3] = arguments[r] }, t.prototype.mergeOption = function (t, e) { C(this.option, t, !0) }, t.prototype.get = function (t, e) { return t == null ? this.option : this._doGet(this.parsePath(t), !e && this.parentModel) }, t.prototype.getShallow = function (t, e) { const n = this.option; let i = n == null ? n : n[t]; if (i == null && !e) { const r = this.parentModel; r && (i = r.getShallow(t)) } return i }, t.prototype.getModel = function (e, n) { const i = e != null; const r = i ? this.parsePath(e) : null; return new t(i ? this._doGet(r) : this.option, n = n || this.parentModel && this.parentModel.getModel(this.resolveParentPath(r)), this.ecModel) }, t.prototype.isEmpty = function () { return this.option == null }, t.prototype.restoreData = function () {}, t.prototype.clone = function () { return new (0, this.constructor)(T(this.option)) }, t.prototype.parsePath = function (t) { return typeof t == 'string' ? t.split('.') : t }, t.prototype.resolveParentPath = function (t) { return t }, t.prototype.isAnimationEnabled = function () { + if (!r.node && this.option) { + if (this.option.animation != null) + return !!this.option.animation; if (this.parentModel) + return this.parentModel.isAnimationEnabled() + } + }, t.prototype._doGet = function (t, e) { + let n = this.option; if (!t) + return n; for (let i = 0; i < t.length && (!t[i] || (n = n && typeof n == 'object' ? n[t[i]] : null) != null); i++);return n == null && e && (n = e._doGet(this.resolveParentPath(t), e.parentModel)), n + }, t + }()); Eo(dc), ec = dc, nc = ['__\0is_clz', Vo++].join('_'), ec.prototype[nc] = !0, ec.isInstance = function (t) { return !(!t || !t[nc]) }, R(dc, uc), R(dc, pc), R(dc, Yo), R(dc, ac); let fc = Math.round(10 * Math.random()); function gc(t) { return [t || '', fc++].join('_') } function yc(t, e) { return C(C({}, t, !0), e, !0) } const _c = {}; const bc = {}; const wc = r.domSupported && (document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase().includes('ZH') ? 'ZH' : 'EN'; function Sc(t, e) { t = t.toUpperCase(), bc[t] = new dc(e), _c[t] = e } function Mc(t) { return bc[t] }Sc('EN', { time: { month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], monthAbbr: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayOfWeekAbbr: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] }, legend: { selector: { all: 'All', inverse: 'Inv' } }, toolbox: { brush: { title: { rect: 'Box Select', polygon: 'Lasso Select', lineX: 'Horizontally Select', lineY: 'Vertically Select', keep: 'Keep Selections', clear: 'Clear Selections' } }, dataView: { title: 'Data View', lang: ['Data View', 'Close', 'Refresh'] }, dataZoom: { title: { zoom: 'Zoom', back: 'Zoom Reset' } }, magicType: { title: { line: 'Switch to Line Chart', bar: 'Switch to Bar Chart', stack: 'Stack', tiled: 'Tile' } }, restore: { title: 'Restore' }, saveAsImage: { title: 'Save as Image', lang: ['Right Click to Save Image'] } }, series: { typeNames: { pie: 'Pie chart', bar: 'Bar chart', line: 'Line chart', scatter: 'Scatter plot', effectScatter: 'Ripple scatter plot', radar: 'Radar chart', tree: 'Tree', treemap: 'Treemap', boxplot: 'Boxplot', candlestick: 'Candlestick', k: 'K line chart', heatmap: 'Heat map', map: 'Map', parallel: 'Parallel coordinate map', lines: 'Line graph', graph: 'Relationship graph', sankey: 'Sankey diagram', funnel: 'Funnel chart', gauge: 'Gauge', pictorialBar: 'Pictorial bar', themeRiver: 'Theme River Map', sunburst: 'Sunburst' } }, aria: { general: { withTitle: 'This is a chart about "{title}"', withoutTitle: 'This is a chart' }, series: { single: { prefix: '', withName: ' with type {seriesType} named {seriesName}.', withoutName: ' with type {seriesType}.' }, multiple: { prefix: '. It consists of {seriesCount} series count.', withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.', withoutName: ' The {seriesId} series is a {seriesType}.', separator: { middle: '', end: '' } } }, data: { allData: 'The data is as follows: ', partialData: 'The first {displayCnt} items are: ', withName: 'the data for {name} is {value}', withoutName: '{value}', separator: { middle: ', ', end: '. ' } } } }), Sc('ZH', { time: { month: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], monthAbbr: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], dayOfWeek: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], dayOfWeekAbbr: ['日', '一', '二', '三', '四', '五', '六'] }, legend: { selector: { all: '全选', inverse: '反选' } }, toolbox: { brush: { title: { rect: '矩形选择', polygon: '圈选', lineX: '横向选择', lineY: '纵向选择', keep: '保持选择', clear: '清除选择' } }, dataView: { title: '数据视图', lang: ['数据视图', '关闭', '刷新'] }, dataZoom: { title: { zoom: '区域缩放', back: '区域缩放还原' } }, magicType: { title: { line: '切换为折线图', bar: '切换为柱状图', stack: '切换为堆叠', tiled: '切换为平铺' } }, restore: { title: '还原' }, saveAsImage: { title: '保存为图片', lang: ['右键另存为图片'] } }, series: { typeNames: { pie: '饼图', bar: '柱状图', line: '折线图', scatter: '散点图', effectScatter: '涟漪散点图', radar: '雷达图', tree: '树图', treemap: '矩形树图', boxplot: '箱型图', candlestick: 'K线图', k: 'K线图', heatmap: '热力图', map: '地图', parallel: '平行坐标图', lines: '线图', graph: '关系图', sankey: '桑基图', funnel: '漏斗图', gauge: '仪表盘图', pictorialBar: '象形柱图', themeRiver: '主题河流图', sunburst: '旭日图' } }, aria: { general: { withTitle: '这是一个关于“{title}”的图表。', withoutTitle: '这是一个图表,' }, series: { single: { prefix: '', withName: '图表类型是{seriesType},表示{seriesName}。', withoutName: '图表类型是{seriesType}。' }, multiple: { prefix: '它由{seriesCount}个图表系列组成。', withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},', withoutName: '第{seriesId}个系列是一个{seriesType},', separator: { middle: ';', end: '。' } } }, data: { allData: '其数据是——', partialData: '其中,前{displayCnt}项是——', withName: '{name}的数据是{value}', withoutName: '{value}', separator: { middle: ',', end: '' } } } }); const Dc = 864e5; const Ac = 31536e6; const kc = { year: '{yyyy}', month: '{MMM}', day: '{d}', hour: '{HH}:{mm}', minute: '{HH}:{mm}', second: '{HH}:{mm}:{ss}', millisecond: '{HH}:{mm}:{ss} {SSS}', none: '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}' }; const Pc = { year: '{yyyy}', month: '{yyyy}-{MM}', day: '{yyyy}-{MM}-{dd}', hour: `{yyyy}-{MM}-{dd} ${kc.hour}`, minute: `{yyyy}-{MM}-{dd} ${kc.minute}`, second: `{yyyy}-{MM}-{dd} ${kc.second}`, millisecond: kc.none }; const Oc = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond']; const Rc = ['year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day', 'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond']; function Nc(t, e) { return '0000'.substr(0, e - (t += '').length) + t } function Ec(t) { switch (t) { case 'half-year':case 'quarter':return 'month'; case 'week':case 'half-week':return 'day'; case 'half-day':case 'quarter-day':return 'hour'; default:return t } } function zc(t) { return t === Ec(t) } function Vc(t, e, n, i) { const r = jr(t); const o = r[Gc(n)](); const a = r[Wc(n)]() + 1; const s = Math.floor((a - 1) / 3) + 1; const l = r[Hc(n)](); const u = r[`get${n ? 'UTC' : ''}Day`](); const h = r[Yc(n)](); const c = (h - 1) % 12 + 1; const p = r[Uc(n)](); const d = r[Xc(n)](); const f = r[Zc(n)](); const g = (i instanceof dc ? i : Mc(i || wc) || bc.EN).getModel('time'); const y = g.get('month'); const v = g.get('monthAbbr'); const m = g.get('dayOfWeek'); const x = g.get('dayOfWeekAbbr'); return (e || '').replace(/\{yyyy\}/g, `${o}`).replace(/\{yy\}/g, `${o % 100}`).replace(/\{Q\}/g, `${s}`).replace(/\{MMMM\}/g, y[a - 1]).replace(/\{MMM\}/g, v[a - 1]).replace(/\{MM\}/g, Nc(a, 2)).replace(/\{M\}/g, `${a}`).replace(/\{dd\}/g, Nc(l, 2)).replace(/\{d\}/g, `${l}`).replace(/\{eeee\}/g, m[u]).replace(/\{ee\}/g, x[u]).replace(/\{e\}/g, `${u}`).replace(/\{HH\}/g, Nc(h, 2)).replace(/\{H\}/g, `${h}`).replace(/\{hh\}/g, Nc(`${c}`, 2)).replace(/\{h\}/g, `${c}`).replace(/\{mm\}/g, Nc(p, 2)).replace(/\{m\}/g, `${p}`).replace(/\{ss\}/g, Nc(d, 2)).replace(/\{s\}/g, `${d}`).replace(/\{SSS\}/g, Nc(f, 3)).replace(/\{S\}/g, `${f}`) } function Bc(t, e) { const n = jr(t); const i = n[Wc(e)]() + 1; const r = n[Hc(e)](); const o = n[Yc(e)](); const a = n[Uc(e)](); const s = n[Xc(e)](); const l = n[Zc(e)]() === 0; const u = l && s === 0; const h = u && a === 0; const c = h && o === 0; const p = c && r === 1; return p && i === 1 ? 'year' : p ? 'month' : c ? 'day' : h ? 'hour' : u ? 'minute' : l ? 'second' : 'millisecond' } function Fc(t, e, n) { const i = j(t) ? jr(t) : t; switch (e = e || Bc(t, n)) { case 'year':return i[Gc(n)](); case 'half-year':return i[Wc(n)]() >= 6 ? 1 : 0; case 'quarter':return Math.floor((i[Wc(n)]() + 1) / 4); case 'month':return i[Wc(n)](); case 'day':return i[Hc(n)](); case 'half-day':return i[Yc(n)]() / 24; case 'hour':return i[Yc(n)](); case 'minute':return i[Uc(n)](); case 'second':return i[Xc(n)](); case 'millisecond':return i[Zc(n)]() } } function Gc(t) { return t ? 'getUTCFullYear' : 'getFullYear' } function Wc(t) { return t ? 'getUTCMonth' : 'getMonth' } function Hc(t) { return t ? 'getUTCDate' : 'getDate' } function Yc(t) { return t ? 'getUTCHours' : 'getHours' } function Uc(t) { return t ? 'getUTCMinutes' : 'getMinutes' } function Xc(t) { return t ? 'getUTCSeconds' : 'getSeconds' } function Zc(t) { return t ? 'getUTCMilliseconds' : 'getMilliseconds' } function jc(t) { return t ? 'setUTCFullYear' : 'setFullYear' } function qc(t) { return t ? 'setUTCMonth' : 'setMonth' } function Kc(t) { return t ? 'setUTCDate' : 'setDate' } function $c(t) { return t ? 'setUTCHours' : 'setHours' } function Jc(t) { return t ? 'setUTCMinutes' : 'setMinutes' } function Qc(t) { return t ? 'setUTCSeconds' : 'setSeconds' } function tp(t) { return t ? 'setUTCMilliseconds' : 'setMilliseconds' } function ep(t) { + if (!eo(t)) + return X(t) ? t : '-'; const e = (`${t}`).split('.'); return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') + (e.length > 1 ? `.${e[1]}` : '') + } function np(t, e) { return t = (t || '').toLowerCase().replace(/-(.)/g, (t, e) => { return e.toUpperCase() }), e && t && (t = t.charAt(0).toUpperCase() + t.slice(1)), t } const ip = st; const rp = /([&<>"'])/g; const op = { '&': '&', '<': '<', '>': '>', '"': '"', '\'': ''' }; function ap(t) { return t == null ? '' : (`${t}`).replace(rp, (t, e) => { return op[e] }) } function sp(t, e, n) { + function i(t) { return t && ut(t) ? t : '-' } function r(t) { return !(t == null || isNaN(t) || !isFinite(t)) } const o = e === 'time'; const a = t instanceof Date; if (o || a) { + const s = o ? jr(t) : t; if (!isNaN(+s)) + return Vc(s, '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}', n); if (a) + return '-' + } if (e === 'ordinal') + return Z(t) ? i(t) : j(t) && r(t) ? `${t}` : '-'; const l = to(t); return r(l) ? ep(l) : Z(t) ? i(t) : typeof t == 'boolean' ? `${t}` : '-' + } const lp = ['a', 'b', 'c', 'd', 'e', 'f', 'g']; const up = function (t, e) { return `{${t}${e == null ? '' : e}}` }; function hp(t, e, n) { + Y(e) || (e = [e]); const i = e.length; if (!i) + return ''; for (var r = e[0].$vars || [], o = 0; o < r.length; o++) { const a = lp[o]; t = t.replace(up(a), up(a, 0)) } for (let s = 0; s < i; s++) { + for (let l = 0; l < r.length; l++) { const u = e[s][r[l]]; t = t.replace(up(lp[l], s), n ? ap(u) : u) } + } return t + } function cp(t, e) { const n = X(t) ? { color: t, extraCssText: e } : t || {}; const i = n.color; const r = n.type; e = n.extraCssText; const o = n.renderMode || 'html'; return i ? o === 'html' ? r === 'subItem' ? `` : `` : { renderMode: o, content: `{${n.markerId || 'markerX'}|} `, style: r === 'subItem' ? { width: 4, height: 4, borderRadius: 2, backgroundColor: i } : { width: 10, height: 10, borderRadius: 5, backgroundColor: i } } : '' } function pp(t, e) { return e = e || 'transparent', X(t) ? t : q(t) && t.colorStops && (t.colorStops[0] || {}).color || e } function dp(t, e) { + if (e === '_blank' || e === 'blank') { const n = window.open(); n.opener = null, n.location.href = t } + else { + window.open(t, e) + } + } const fp = E; const gp = ['left', 'right', 'top', 'bottom', 'width', 'height']; const yp = [['width', 'left', 'right'], ['height', 'top', 'bottom']]; function vp(t, e, n, i, r) { + let o = 0; let a = 0; i == null && (i = 1 / 0), r == null && (r = 1 / 0); let s = 0; e.eachChild((l, u) => { + let h; let c; const p = l.getBoundingRect(); const d = e.childAt(u + 1); const f = d && d.getBoundingRect(); if (t === 'horizontal') { const g = p.width + (f ? -f.x + p.x : 0); (h = o + g) > i || l.newline ? (o = 0, h = g, a += s + n, s = p.height) : s = Math.max(s, p.height) } + else { const y = p.height + (f ? -f.y + p.y : 0); (c = a + y) > r || l.newline ? (o += s + n, a = 0, c = y, s = p.width) : s = Math.max(s, p.width) }l.newline || (l.x = o, l.y = a, l.markRedraw(), t === 'horizontal' ? o = h + n : a = c + n) + }) + } const mp = vp; function xp(t, e, n) { n = ip(n || 0); const i = e.width; const r = e.height; let o = Er(t.left, i); let a = Er(t.top, r); const s = Er(t.right, i); const l = Er(t.bottom, r); let u = Er(t.width, i); let h = Er(t.height, r); const c = n[2] + n[0]; const p = n[1] + n[3]; const d = t.aspect; switch (isNaN(u) && (u = i - s - p - o), isNaN(h) && (h = r - l - c - a), d != null && (isNaN(u) && isNaN(h) && (d > i / r ? u = 0.8 * i : h = 0.8 * r), isNaN(u) && (u = d * h), isNaN(h) && (h = u / d)), isNaN(o) && (o = i - s - u - p), isNaN(a) && (a = r - l - h - c), t.left || t.right) { case 'center':o = i / 2 - u / 2 - n[3]; break; case 'right':o = i - u - p } switch (t.top || t.bottom) { case 'middle':case 'center':a = r / 2 - h / 2 - n[0]; break; case 'bottom':a = r - h - c }o = o || 0, a = a || 0, isNaN(u) && (u = i - p - o - (s || 0)), isNaN(h) && (h = r - c - a - (l || 0)); const f = new sr(o + n[3], a + n[0], u, h); return f.margin = n, f } function _p(t, e, n, i, r, o) { + let a; const s = !r || !r.hv || r.hv[0]; const l = !r || !r.hv || r.hv[1]; const u = r && r.boundingMode || 'all'; if ((o = o || t).x = t.x, o.y = t.y, !s && !l) + return !1; if (u === 'raw') { + a = t.type === 'group' ? new sr(0, 0, +e.width || 0, +e.height || 0) : t.getBoundingRect() + } + else if (a = t.getBoundingRect(), t.needLocalTransform()) { const h = t.getLocalTransform(); (a = a.clone()).applyTransform(h) } const c = xp(k({ width: a.width, height: a.height }, e), n, i); const p = s ? c.x - a.x : 0; const d = l ? c.y - a.y : 0; return u === 'raw' ? (o.x = p, o.y = d) : (o.x += p, o.y += d), o === t && t.markRedraw(), !0 + } function bp(t) { const e = t.layoutMode || t.constructor.layoutMode; return q(e) ? e : e ? { type: e } : null } function wp(t, e, n) { + let i = n && n.ignoreSize; !Y(i) && (i = [i, i]); const r = a(yp[0], 0); const o = a(yp[1], 1); function a(n, r) { + const o = {}; let a = 0; const u = {}; let h = 0; if (fp(n, (e) => { u[e] = t[e] }), fp(n, (t) => { s(e, t) && (o[t] = u[t] = e[t]), l(o, t) && a++, l(u, t) && h++ }), i[r]) + return l(e, n[1]) ? u[n[2]] = null : l(e, n[2]) && (u[n[1]] = null), u; if (h !== 2 && a) { + if (a >= 2) + return o; for (let c = 0; c < n.length; c++) { const p = n[c]; if (!s(o, p) && s(t, p)) { o[p] = t[p]; break } } return o + } return u + } function s(t, e) { return t.hasOwnProperty(e) } function l(t, e) { return t[e] != null && t[e] !== 'auto' } function u(t, e, n) { fp(t, (t) => { e[t] = n[t] }) }u(yp[0], t, r), u(yp[1], t, o) + } function Sp(t) { return Mp({}, t) } function Mp(t, e) { return e && t && fp(gp, (n) => { e.hasOwnProperty(n) && (t[n] = e[n]) }), t }H(vp, 'vertical'), H(vp, 'horizontal'); const Ip = So(); const Tp = (function (t) { + function e(e, n, i) { const r = t.call(this, e, n, i) || this; return r.uid = gc('ec_cpt_model'), r } return n(e, t), e.prototype.init = function (t, e, n) { this.mergeDefaultAndTheme(t, n) }, e.prototype.mergeDefaultAndTheme = function (t, e) { const n = bp(this); const i = n ? Sp(t) : {}; C(t, e.getTheme().get(this.mainType)), C(t, this.getDefaultOption()), n && wp(t, i, n) }, e.prototype.mergeOption = function (t, e) { C(this.option, t, !0); const n = bp(this); n && wp(this.option, t, n) }, e.prototype.optionUpdated = function (t, e) {}, e.prototype.getDefaultOption = function () { + const t = this.constructor; if (!(function (t) { return !(!t || !t[Ro]) }(t))) + return t.defaultOption; const e = Ip(this); if (!e.defaultOption) { for (var n = [], i = t; i;) { const r = i.prototype.defaultOption; r && n.push(r), i = i.superClass } for (var o = {}, a = n.length - 1; a >= 0; a--)o = C(o, n[a], !0); e.defaultOption = o } return e.defaultOption + }, e.prototype.getReferringComponents = function (t, e) { const n = `${t}Index`; const i = `${t}Id`; return Ao(this.ecModel, t, { index: this.get(n, !0), id: this.get(i, !0) }, e) }, e.prototype.getBoxLayoutParams = function () { const t = this; return { left: t.get('left'), top: t.get('top'), right: t.get('right'), bottom: t.get('bottom'), width: t.get('width'), height: t.get('height') } }, e.prototype.getZLevelKey = function () { return '' }, e.prototype.setZLevel = function (t) { this.option.zlevel = t }, e.protoInitialize = (function () { const t = e.prototype; t.type = 'component', t.id = '', t.name = '', t.mainType = '', t.subType = '', t.componentIndex = 0 }()), e + }(dc)); zo(Tp, dc), Go(Tp), (function (t) { const e = {}; t.registerSubTypeDefaulter = function (t, n) { const i = No(t); e[i.main] = n }, t.determineSubType = function (n, i) { let r = i.type; if (!r) { const o = No(n).main; t.hasSubTypes(n) && e[o] && (r = e[o](i)) } return r } }(Tp)), (function (t, e) { function n(t, e) { return t[e] || (t[e] = { predecessor: [], successor: [] }), t[e] }t.topologicalTravel = function (t, i, r, o) { if (t.length) { const a = (function (t) { const i = {}; const r = []; return E(t, (o) => { const a = n(i, o); const s = (function (t, e) { let n = []; return E(t, (t) =>{ P(e, t) >= 0 && n.push(t) }), n }(a.originalDeps = (function (t) { var e = []; return E(Tp.getClassesByMainType(t), ((t) =>{ e = e.concat(t.dependencies || t.prototype.dependencies || []) })), e = z(e, ((t) =>{ return No(t).main })), "dataset" !== t && P(e, "dataset") <= 0 && e.unshift('dataset'), e }(o)), t)); a.entryCount = s.length, a.entryCount === 0 && r.push(o), E(s, (t) => { P(a.predecessor, t) < 0 && a.predecessor.push(t); const e = n(i, t); P(e.successor, t) < 0 && e.successor.push(o) }) }), { graph: i, noEntryList: r } }(i)); var s = a.graph; var l = a.noEntryList; var u = {}; for (E(t, (t) => { u[t] = !0 }); l.length;) { const h = l.pop(); const c = s[h]; const p = !!u[h]; p && (r.call(o, h, c.originalDeps.slice()), delete u[h]), E(c.successor, p ? f : d) }E(u, () => { throw new Error('') }) } function d(t) { s[t].entryCount--, s[t].entryCount === 0 && l.push(t) } function f(t) { u[t] = !0, d(t) } } }(Tp)); let Cp = ''; typeof navigator != 'undefined' && (Cp = navigator.platform || ''); const Dp = 'rgba(0, 0, 0, 0.2)'; const Ap = { darkMode: 'auto', colorBy: 'series', color: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'], gradientColor: ['#f6efa6', '#d88273', '#bf444c'], aria: { decal: { decals: [{ color: Dp, dashArrayX: [1, 0], dashArrayY: [2, 5], symbolSize: 1, rotation: Math.PI / 6 }, { color: Dp, symbol: 'circle', dashArrayX: [[8, 8], [0, 8, 8, 0]], dashArrayY: [6, 0], symbolSize: 0.8 }, { color: Dp, dashArrayX: [1, 0], dashArrayY: [4, 3], rotation: -Math.PI / 4 }, { color: Dp, dashArrayX: [[6, 6], [0, 6, 6, 0]], dashArrayY: [6, 0] }, { color: Dp, dashArrayX: [[1, 0], [1, 6]], dashArrayY: [1, 0, 6, 0], rotation: Math.PI / 4 }, { color: Dp, symbol: 'triangle', dashArrayX: [[9, 9], [0, 9, 9, 0]], dashArrayY: [7, 2], symbolSize: 0.75 }] } }, textStyle: { fontFamily: Cp.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif', fontSize: 12, fontStyle: 'normal', fontWeight: 'normal' }, blendMode: null, stateAnimation: { duration: 300, easing: 'cubicOut' }, animation: 'auto', animationDuration: 1e3, animationDurationUpdate: 500, animationEasing: 'cubicInOut', animationEasingUpdate: 'cubicInOut', animationThreshold: 2e3, progressiveThreshold: 3e3, progressive: 400, hoverLayerThreshold: 3e3, useUTC: !1 }; const kp = ft(['tooltip', 'label', 'itemName', 'itemId', 'itemGroupId', 'seriesName']); const Lp = 'original'; const Pp = 'arrayRows'; const Op = 'objectRows'; const Rp = 'keyedColumns'; const Np = 'typedArray'; const Ep = 'unknown'; const zp = 'column'; const Vp = 'row'; const Bp = 1; const Fp = 2; const Gp = 3; const Wp = So(); function Hp(t, e, n) { + const i = {}; const r = Up(e); if (!r || !t) + return i; let o; let a; const s = []; const l = []; const u = e.ecModel; const h = Wp(u).datasetMap; const c = `${r.uid}_${n.seriesLayoutBy}`; E(t = t.slice(), (e, n) => { const r = q(e) ? e : t[n] = { name: e }; r.type === 'ordinal' && o == null && (o = n, a = f(r)), i[r.name] = [] }); const p = h.get(c) || h.set(c, { categoryWayDim: a, valueWayDim: 0 }); function d(t, e, n) { for (let i = 0; i < n; i++)t.push(e + i) } function f(t) { const e = t.dimsDef; return e ? e.length : 1 } return E(t, (t, e) => { + const n = t.name; const r = f(t); if (o == null) { var a = p.valueWayDim; d(i[n], a, r), d(l, a, r), p.valueWayDim += r } + else { + o === e ? (d(i[n], 0, r), d(s, 0, r)) : (a = p.categoryWayDim, d(i[n], a, r), d(l, a, r), p.categoryWayDim += r) + } + }), s.length && (i.itemName = s), l.length && (i.seriesName = l), i + } function Yp(t, e, n) { + const i = {}; if (!Up(t)) + return i; let r; const o = e.sourceFormat; const a = e.dimensionsDefine; o !== Op && o !== Rp || E(a, (t, e) => { (q(t) ? t.name : t) === 'name' && (r = e) }); const s = (function () { + for (var t = {}, i = {}, s = [], l = 0, u = Math.min(5, n); l < u; l++) { + const h = Zp(e.data, o, e.seriesLayoutBy, a, e.startIndex, l); s.push(h); const c = h === Gp; if (c && t.v == null && l !== r && (t.v = l), (t.n == null || t.n === t.v || !c && s[t.n] === Gp) && (t.n = l), p(t) && s[t.n] !== Gp) + return t; c || (h === Fp && i.v == null && l !== r && (i.v = l), i.n != null && i.n !== i.v || (i.n = l)) + } function p(t) { return t.v != null && t.n != null } return p(t) ? t : p(i) ? i : null + }()); if (s) { i.value = [s.v]; const l = r != null ? r : s.n; i.itemName = [l], i.seriesName = [l] } return i + } function Up(t) { + if (!t.get('data', !0)) + return Ao(t.ecModel, 'dataset', { index: t.get('datasetIndex', !0), id: t.get('datasetId', !0) }, Co).models[0] + } function Xp(t, e) { return Zp(t.data, t.sourceFormat, t.seriesLayoutBy, t.dimensionsDefine, t.startIndex, e) } function Zp(t, e, n, i, r, o) { + let a, s, l; if ($(t)) + return Gp; if (i) { const u = i[o]; q(u) ? (s = u.name, l = u.type) : X(u) && (s = u) } if (l != null) + return l === 'ordinal' ? Bp : Gp; if (e === Pp) { + const h = t; if (n === Vp) { + for (var c = h[o], p = 0; p < (c || []).length && p < 5; p++) { + if ((a = m(c[r + p])) != null) + return a + } + } + else { + for (p = 0; p < h.length && p < 5; p++) { + const d = h[r + p]; if (d && (a = m(d[o])) != null) + return a + } + } + } + else if (e === Op) { + const f = t; if (!s) + return Gp; for (p = 0; p < f.length && p < 5; p++) { + if ((y = f[p]) && (a = m(y[s])) != null) + return a + } + } + else if (e === Rp) { + if (!s) + return Gp; if (!(c = t[s]) || $(c)) + return Gp; for (p = 0; p < c.length && p < 5; p++) { + if ((a = m(c[p])) != null) + return a + } + } + else if (e === Lp) { + const g = t; for (p = 0; p < g.length && p < 5; p++) { + var y; const v = fo(y = g[p]); if (!Y(v)) + return Gp; if ((a = m(v[o])) != null) + return a + } + } function m(t) { const e = X(t); return t != null && isFinite(t) && t !== '' ? e ? Fp : Gp : e && t !== '-' ? Bp : void 0 } return Gp + } let qp; let Kp; let $p; const jp = ft(); const Jp = So(); const Qp = So(); const td = (function () { function t() {} return t.prototype.getColorFromPalette = function (t, e, n) { const i = ho(this.get('color', !0)); const r = this.get('colorLayer', !0); return nd(this, Jp, i, r, t, e, n) }, t.prototype.clearColorPalette = function () { !(function (t, e) { e(t).paletteIdx = 0, e(t).paletteNameMap = {} }(this, Jp)) }, t }()); function ed(t, e, n, i) { const r = ho(t.get(['aria', 'decal', 'decals'])); return nd(t, Qp, r, null, e, n, i) } function nd(t, e, n, i, r, o, a) { + const s = e(o = o || t); const l = s.paletteIdx || 0; const u = s.paletteNameMap = s.paletteNameMap || {}; if (u.hasOwnProperty(r)) + return u[r]; let h = a != null && i + ? (function (t, e) { + for (var n = t.length, i = 0; i < n; i++) { + if (t[i].length > e) + return t[i] + } return t[n - 1] + }(i, a)) + : n; if ((h = h || n) && h.length) { const c = h[l]; return r && (u[r] = c), s.paletteIdx = (l + 1) % h.length, c } + } const id = (function (t) { + function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.init = function (t, e, n, i, r, o) { i = i || {}, this.option = null, this._theme = new dc(i), this._locale = new dc(r), this._optionManager = o }, e.prototype.setOption = function (t, e, n) { const i = ad(e); this._optionManager.setOption(t, n, i), this._resetOption(null, i) }, e.prototype.resetOption = function (t, e) { return this._resetOption(t, ad(e)) }, e.prototype._resetOption = function (t, e) { let n = !1; const i = this._optionManager; if (!t || t === 'recreate') { const r = i.mountOption(t === 'recreate'); this.option && t !== 'recreate' ? (this.restoreData(), this._mergeOption(r, e)) : $p(this, r), n = !0 } if (t !== 'timeline' && t !== 'media' || this.restoreData(), !t || t === 'recreate' || t === 'timeline') { const o = i.getTimelineOption(this); o && (n = !0, this._mergeOption(o, e)) } if (!t || t === 'recreate' || t === 'media') { const a = i.getMediaOption(this); a.length && E(a, function (t) { n = !0, this._mergeOption(t, e) }, this) } return n }, e.prototype.mergeOption = function (t) { this._mergeOption(t, null) }, e.prototype._mergeOption = function (t, e) { + const n = this.option; const i = this._componentsMap; const r = this._componentsCount; const o = []; const a = ft(); const s = e && e.replaceMergeMainTypeMap; Wp(this).datasetMap = ft(), E(t, (t, e) => { t != null && (Tp.hasClass(e) ? e && (o.push(e), a.set(e, !0)) : n[e] = n[e] == null ? T(t) : C(n[e], t, !0)) }), s && s.each((t, e) => { Tp.hasClass(e) && !a.get(e) && (o.push(e), a.set(e, !0)) }), Tp.topologicalTravel(o, Tp.getAllClassMainTypes(), function (e) { + const o = (function (t, e, n) { + let i = jp.get(e); if (!i) + return n; const r = i(t); return r ? n.concat(r) : n + }(this, e, ho(t[e]))); const a = i.get(e); const u = yo(a, o, a ? s && s.get(e) ? 'replaceMerge' : 'normalMerge' : 'replaceAll'); (function (t, e, n) { E(t, (t) => { const i = t.newOption; q(i) && (t.keyInfo.mainType = e, t.keyInfo.subType = (function (t, e, n, i) { return e.type ? e.type : n ? n.subType : i.determineSubType(t, e) }(e, i, t.existing, n))) }) })(u, e, Tp), n[e] = null, i.set(e, null), r.set(e, 0); let h; const c = []; const p = []; let d = 0; E(u, function (t, n) { + let i = t.existing; const r = t.newOption; if (r) { + const o = e === 'series'; const a = Tp.getClass(e, t.keyInfo.subType, !o); if (!a) + return; if (e === 'tooltip') { + if (h) + return; h = !0 + } if (i && i.constructor === a) { + i.name = t.keyInfo.name, i.mergeOption(r, this), i.optionUpdated(r, !1) + } + else { const s = A({ componentIndex: n }, t.keyInfo); A(i = new a(r, this, this, s), s), t.brandNew && (i.__requireNewView = !0), i.init(r, this, this), i.optionUpdated(null, !0) } + } + else { + i && (i.mergeOption({}, this), i.optionUpdated({}, !1)) + }i ? (c.push(i.option), p.push(i), d++) : (c.push(void 0), p.push(void 0)) + }, this), n[e] = c, i.set(e, p), r.set(e, d), e === 'series' && qp(this) + }, this), this._seriesIndices || qp(this) + }, e.prototype.getOption = function () { const t = T(this.option); return E(t, (e, n) => { if (Tp.hasClass(n)) { for (var i = ho(e), r = i.length, o = !1, a = r - 1; a >= 0; a--)i[a] && !bo(i[a]) ? o = !0 : (i[a] = null, !o && r--); i.length = r, t[n] = i } }), delete t['\0_ec_inner'], t }, e.prototype.getTheme = function () { return this._theme }, e.prototype.getLocaleModel = function () { return this._locale }, e.prototype.setUpdatePayload = function (t) { this._payload = t }, e.prototype.getUpdatePayload = function () { return this._payload }, e.prototype.getComponent = function (t, e) { + const n = this._componentsMap.get(t); if (n) { + const i = n[e || 0]; if (i) + return i; if (e == null) { + for (let r = 0; r < n.length; r++) { + if (n[r]) + return n[r] + } + } + } + }, e.prototype.queryComponents = function (t) { + const e = t.mainType; if (!e) + return []; let n; const i = t.index; const r = t.id; const o = t.name; const a = this._componentsMap.get(e); return a && a.length ? (i != null ? (n = [], E(ho(i), (t) => { a[t] && n.push(a[t]) })) : n = r != null ? rd('id', r, a) : o != null ? rd('name', o, a) : B(a, (t) => { return !!t }), od(n, t)) : [] + }, e.prototype.findComponents = function (t) { let e; let n; let i; let r; let o; const a = t.query; const s = t.mainType; const l = (n = `${s}Index`, i = `${s}Id`, r = `${s}Name`, !(e = a) || e[n] == null && e[i] == null && e[r] == null ? null : { mainType: s, index: e[n], id: e[i], name: e[r] }); const u = l ? this.queryComponents(l) : B(this._componentsMap.get(s), (t) => { return !!t }); return o = od(u, t), t.filter ? B(o, t.filter) : o }, e.prototype.eachComponent = function (t, e, n) { + const i = this._componentsMap; if (U(t)) { const r = e; const o = t; i.each((t, e) => { for (let n = 0; t && n < t.length; n++) { const i = t[n]; i && o.call(r, e, i, i.componentIndex) } }) } + else { + for (let a = X(t) ? i.get(t) : q(t) ? this.findComponents(t) : null, s = 0; a && s < a.length; s++) { const l = a[s]; l && e.call(n, l, l.componentIndex) } + } + }, e.prototype.getSeriesByName = function (t) { const e = xo(t, null); return B(this._componentsMap.get('series'), (t) => { return !!t && e != null && t.name === e }) }, e.prototype.getSeriesByIndex = function (t) { return this._componentsMap.get('series')[t] }, e.prototype.getSeriesByType = function (t) { return B(this._componentsMap.get('series'), (e) => { return !!e && e.subType === t }) }, e.prototype.getSeries = function () { return B(this._componentsMap.get('series'), (t) => { return !!t }) }, e.prototype.getSeriesCount = function () { return this._componentsCount.get('series') }, e.prototype.eachSeries = function (t, e) { Kp(this), E(this._seriesIndices, function (n) { const i = this._componentsMap.get('series')[n]; t.call(e, i, n) }, this) }, e.prototype.eachRawSeries = function (t, e) { E(this._componentsMap.get('series'), (n) => { n && t.call(e, n, n.componentIndex) }) }, e.prototype.eachSeriesByType = function (t, e, n) { Kp(this), E(this._seriesIndices, function (i) { const r = this._componentsMap.get('series')[i]; r.subType === t && e.call(n, r, i) }, this) }, e.prototype.eachRawSeriesByType = function (t, e, n) { return E(this.getSeriesByType(t), e, n) }, e.prototype.isSeriesFiltered = function (t) { return Kp(this), this._seriesIndicesMap.get(t.componentIndex) == null }, e.prototype.getCurrentSeriesIndices = function () { return (this._seriesIndices || []).slice() }, e.prototype.filterSeries = function (t, e) { Kp(this); const n = []; E(this._seriesIndices, function (i) { const r = this._componentsMap.get('series')[i]; t.call(e, r, i) && n.push(i) }, this), this._seriesIndices = n, this._seriesIndicesMap = ft(n) }, e.prototype.restoreData = function (t) { qp(this); const e = this._componentsMap; const n = []; e.each((t, e) => { Tp.hasClass(e) && n.push(e) }), Tp.topologicalTravel(n, Tp.getAllClassMainTypes(), (n) => { E(e.get(n), (e) => { !e || n === 'series' && (function (t, e) { if (e) { const n = e.seriesIndex; const i = e.seriesId; const r = e.seriesName; return n != null && t.componentIndex !== n || i != null && t.id !== i || r != null && t.name !== r } }(e, t)) || e.restoreData() }) }) }, e.internalField = (qp = function (t) { const e = t._seriesIndices = []; E(t._componentsMap.get('series'), (t) => { t && e.push(t.componentIndex) }), t._seriesIndicesMap = ft(e) }, Kp = function (t) {}, void ($p = function (t, e) { t.option = {}, t.option['\0_ec_inner'] = 1, t._componentsMap = ft({ series: [] }), t._componentsCount = ft(); const n = e.aria; q(n) && n.enabled == null && (n.enabled = !0), (function (t, e) { const n = t.color && !t.colorLayer; E(e, (e, i) => { i === 'colorLayer' && n || Tp.hasClass(i) || (typeof e == 'object' ? t[i] = t[i] ? C(t[i], e, !1) : T(e) : t[i] == null && (t[i] = e)) }) }(e, t._theme.option)), C(e, Ap, !1), t._mergeOption(e, null) })), e + }(dc)); function rd(t, e, n) { if (Y(e)) { const i = ft(); return E(e, (t) => { t != null && xo(t, null) != null && i.set(t, !0) }), B(n, (e) => { return e && i.get(e[t]) }) } const r = xo(e, null); return B(n, (e) => { return e && r != null && e[t] === r }) } function od(t, e) { return e.hasOwnProperty('subType') ? B(t, (t) => { return t && t.subType === e.subType }) : t } function ad(t) { const e = ft(); return t && E(ho(t.replaceMerge), (t) => { e.set(t, !0) }), { replaceMergeMainTypeMap: e } }R(id, td); const sd = ['getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isSSR', 'isDisposed', 'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getOption', 'getId', 'updateLabelLayout']; const ld = function (t) { E(sd, function (e) { this[e] = W(t[e], t) }, this) }; const ud = {}; const hd = (function () { function t() { this._coordinateSystems = [] } return t.prototype.create = function (t, e) { let n = []; E(ud, (i, r) => { const o = i.create(t, e); n = n.concat(o || []) }), this._coordinateSystems = n }, t.prototype.update = function (t, e) { E(this._coordinateSystems, (n) => { n.update && n.update(t, e) }) }, t.prototype.getCoordinateSystems = function () { return this._coordinateSystems.slice() }, t.register = function (t, e) { ud[t] = e }, t.get = function (t) { return ud[t] }, t }()); const cd = /^(min|max)?(.+)$/; const pd = (function () { + function t(t) { this._timelineOptions = [], this._mediaList = [], this._currentMediaIndices = [], this._api = t } return t.prototype.setOption = function (t, e, n) { t && (E(ho(t.series), (t) => { t && t.data && $(t.data) && ct(t.data) }), E(ho(t.dataset), (t) => { t && t.source && $(t.source) && ct(t.source) })), t = T(t); const i = this._optionBackup; const r = (function (t, e, n) { let i; let r; const o = []; const a = t.baseOption; const s = t.timeline; const l = t.options; const u = t.media; const h = !!t.media; const c = !!(l || s || a && a.timeline); function p(t) { E(e, (e) => { e(t, n) }) } return a ? (r = a).timeline || (r.timeline = s) : ((c || h) && (t.options = t.media = null), r = t), h && Y(u) && E(u, (t) => { t && t.option && (t.query ? o.push(t) : i || (i = t)) }), p(r), E(l, (t) => { return p(t) }), E(o, (t) => { return p(t.option) }), { baseOption: r, timelineOptions: l || [], mediaDefault: i, mediaList: o } }(t, e, !i)); this._newBaseOption = r.baseOption, i ? (r.timelineOptions.length && (i.timelineOptions = r.timelineOptions), r.mediaList.length && (i.mediaList = r.mediaList), r.mediaDefault && (i.mediaDefault = r.mediaDefault)) : this._optionBackup = r }, t.prototype.mountOption = function (t) { const e = this._optionBackup; return this._timelineOptions = e.timelineOptions, this._mediaList = e.mediaList, this._mediaDefault = e.mediaDefault, this._currentMediaIndices = [], T(t ? e.baseOption : this._newBaseOption) }, t.prototype.getTimelineOption = function (t) { let e; const n = this._timelineOptions; if (n.length) { const i = t.getComponent('timeline'); i && (e = T(n[i.getCurrentIndex()])) } return e }, t.prototype.getMediaOption = function (t) { + let e; let n; const i = this._api.getWidth(); const r = this._api.getHeight(); const o = this._mediaList; const a = this._mediaDefault; let s = []; let l = []; if (!o.length && !a) + return l; for (let u = 0, h = o.length; u < h; u++)dd(o[u].query, i, r) && s.push(u); return !s.length && a && (s = [-1]), s.length && (e = s, n = this._currentMediaIndices, e.join(',') !== n.join(',')) && (l = z(s, (t) => { return T(t === -1 ? a.option : o[t].option) })), this._currentMediaIndices = s, l + }, t + }()); function dd(t, e, n) { const i = { width: e, height: n, aspectratio: e / n }; let r = !0; return E(t, (t, e) => { const n = e.match(cd); if (n && n[1] && n[2]) { const o = n[1]; const a = n[2].toLowerCase(); (function (t, e, n) { return n === 'min' ? t >= e : n === 'max' ? t <= e : t === e })(i[a], t, o) || (r = !1) } }), r } const fd = E; const gd = q; const yd = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine']; function vd(t) { + const e = t && t.itemStyle; if (e) { + for (let n = 0, i = yd.length; n < i; n++) { const r = yd[n]; const o = e.normal; const a = e.emphasis; o && o[r] && (t[r] = t[r] || {}, t[r].normal ? C(t[r].normal, o[r]) : t[r].normal = o[r], o[r] = null), a && a[r] && (t[r] = t[r] || {}, t[r].emphasis ? C(t[r].emphasis, a[r]) : t[r].emphasis = a[r], a[r] = null) } + } + } function md(t, e, n) { if (t && t[e] && (t[e].normal || t[e].emphasis)) { const i = t[e].normal; const r = t[e].emphasis; i && (n ? (t[e].normal = t[e].emphasis = null, k(t[e], i)) : t[e] = i), r && (t.emphasis = t.emphasis || {}, t.emphasis[e] = r, r.focus && (t.emphasis.focus = r.focus), r.blurScope && (t.emphasis.blurScope = r.blurScope)) } } function xd(t) { md(t, 'itemStyle'), md(t, 'lineStyle'), md(t, 'areaStyle'), md(t, 'label'), md(t, 'labelLine'), md(t, 'upperLabel'), md(t, 'edgeLabel') } function _d(t, e) { + const n = gd(t) && t[e]; const i = gd(n) && n.textStyle; if (i) { + for (let r = 0, o = po.length; r < o; r++) { const a = po[r]; i.hasOwnProperty(a) && (n[a] = i[a]) } + } + } function bd(t) { t && (xd(t), _d(t, 'label'), t.emphasis && _d(t.emphasis, 'label')) } function wd(t) { return Y(t) ? t : t ? [t] : [] } function Sd(t) { return (Y(t) ? t[0] : t) || {} } function Id(t) { t && E(Td, (e) => { e[0] in t && !(e[1] in t) && (t[e[1]] = t[e[0]]) }) } var Td = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']]; const Cd = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline']; const Dd = [['borderRadius', 'barBorderRadius'], ['borderColor', 'barBorderColor'], ['borderWidth', 'barBorderWidth']]; function Ad(t) { + const e = t && t.itemStyle; if (e) { + for (let n = 0; n < Dd.length; n++) { const i = Dd[n][1]; const r = Dd[n][0]; e[i] != null && (e[r] = e[i]) } + } + } function kd(t) { t && t.alignTo === 'edge' && t.margin != null && t.edgeDistance == null && (t.edgeDistance = t.margin) } function Ld(t) { t && t.downplay && !t.blur && (t.blur = t.downplay) } function Pd(t, e) { + if (t) { + for (let n = 0; n < t.length; n++)e(t[n]), t[n] && Pd(t[n].children, e) + } + } function Od(t, e) { + (function (t, e) { + fd(wd(t.series), (t) => { + gd(t) && (function (t) { + if (gd(t)) { + vd(t), xd(t), _d(t, 'label'), _d(t, 'upperLabel'), _d(t, 'edgeLabel'), t.emphasis && (_d(t.emphasis, 'label'), _d(t.emphasis, 'upperLabel'), _d(t.emphasis, 'edgeLabel')); let e = t.markPoint; e && (vd(e), bd(e)); let n = t.markLine; n && (vd(n), bd(n)); const i = t.markArea; i && bd(i); let r = t.data; if (t.type === 'graph') { + r = r || t.nodes; const o = t.links || t.edges; if (o && !$(o)) { + for (var a = 0; a < o.length; a++)bd(o[a]) + } E(t.categories, (t) => { xd(t) }) + } if (r && !$(r)) { + for (a = 0; a < r.length; a++)bd(r[a]) + } if ((e = t.markPoint) && e.data) { const s = e.data; for (a = 0; a < s.length; a++)bd(s[a]) } if ((n = t.markLine) && n.data) { const l = n.data; for (a = 0; a < l.length; a++)Y(l[a]) ? (bd(l[a][0]), bd(l[a][1])) : bd(l[a]) }t.type === 'gauge' ? (_d(t, 'axisLabel'), _d(t, 'title'), _d(t, 'detail')) : t.type === 'treemap' ? (md(t.breadcrumb, 'itemStyle'), E(t.levels, (t) => { xd(t) })) : t.type === 'tree' && xd(t.leaves) + } + }(t)) + }); const n = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar']; e && n.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis'), fd(n, (e) => { fd(wd(t[e]), (t) => { t && (_d(t, 'axisLabel'), _d(t.axisPointer, 'label')) }) }), fd(wd(t.parallel), (t) => { const e = t && t.parallelAxisDefault; _d(e, 'axisLabel'), _d(e && e.axisPointer, 'label') }), fd(wd(t.calendar), (t) => { md(t, 'itemStyle'), _d(t, 'dayLabel'), _d(t, 'monthLabel'), _d(t, 'yearLabel') }), fd(wd(t.radar), (t) => { _d(t, 'name'), t.name && t.axisName == null && (t.axisName = t.name, delete t.name), t.nameGap != null && t.axisNameGap == null && (t.axisNameGap = t.nameGap, delete t.nameGap) }), fd(wd(t.geo), (t) => { gd(t) && (bd(t), fd(wd(t.regions), (t) => { bd(t) })) }), fd(wd(t.timeline), (t) => { bd(t), md(t, 'label'), md(t, 'itemStyle'), md(t, 'controlStyle', !0); const e = t.data; Y(e) && E(e, (t) => { q(t) && (md(t, 'label'), md(t, 'itemStyle')) }) }), fd(wd(t.toolbox), (t) => { md(t, 'iconStyle'), fd(t.feature, (t) => { md(t, 'iconStyle') }) }), _d(Sd(t.axisPointer), 'label'), _d(Sd(t.tooltip).axisPointer, 'label') + })(t, e), t.series = ho(t.series), E(t.series, (t) => { + if (q(t)) { + const e = t.type; if (e === 'line') { + t.clipOverflow != null && (t.clip = t.clipOverflow) + } + else if (e === 'pie' || e === 'gauge') { + if (t.clockWise != null && (t.clockwise = t.clockWise), kd(t.label), (r = t.data) && !$(r)) { + for (var n = 0; n < r.length; n++)kd(r[n]) + } t.hoverOffset != null && (t.emphasis = t.emphasis || {}, (t.emphasis.scaleSize = null) && (t.emphasis.scaleSize = t.hoverOffset)) + } + else if (e === 'gauge') { const i = (function (t, e) { for (var n = 'pointer.color'.split(','), i = t, r = 0; r < n.length && (i = i && i[n[r]]) != null; r++);return i }(t)); i != null && (function (t, e, n, i) { for (var r, o = 'itemStyle.color'.split(','), a = t, s = 0; s < o.length - 1; s++)a[r = o[s]] == null && (a[r] = {}), a = a[r]; a[o[s]] == null && (a[o[s]] = n) }(t, 0, i)) } + else if (e === 'bar') { + var r; if (Ad(t), Ad(t.backgroundStyle), Ad(t.emphasis), (r = t.data) && !$(r)) { + for (n = 0; n < r.length; n++) typeof r[n] == 'object' && (Ad(r[n]), Ad(r[n] && r[n].emphasis)) + } + } + else if (e === 'sunburst') { const o = t.highlightPolicy; o && (t.emphasis = t.emphasis || {}, t.emphasis.focus || (t.emphasis.focus = o)), Ld(t), Pd(t.data, Ld) } + else { + e === 'graph' || e === 'sankey' ? (function (t) { t && t.focusNodeAdjacency != null && (t.emphasis = t.emphasis || {}, t.emphasis.focus == null && (t.emphasis.focus = 'adjacency')) }(t)) : e === 'map' && (t.mapType && !t.map && (t.map = t.mapType), t.mapLocation && k(t, t.mapLocation)) + } t.hoverAnimation != null && (t.emphasis = t.emphasis || {}, t.emphasis && t.emphasis.scale == null && (t.emphasis.scale = t.hoverAnimation)), Id(t) + } + }), t.dataRange && (t.visualMap = t.dataRange), E(Cd, (e) => { let n = t[e]; n && (Y(n) || (n = [n]), E(n, (t) => { Id(t) })) }) + } function Rd(t) { + E(t, (e, n) => { + const i = []; const r = [Number.NaN, Number.NaN]; const o = [e.stackResultDimension, e.stackedOverDimension]; const a = e.data; const s = e.isStackedByIndex; const l = e.seriesModel.get('stackStrategy') || 'samesign'; a.modify(o, (o, u, h) => { + let c; let p; let d = a.get(e.stackedDimension, h); if (isNaN(d)) + return r; s ? p = a.getRawIndex(h) : c = a.get(e.stackedByDimension, h); for (var f = Number.NaN, g = n - 1; g >= 0; g--) { const y = t[g]; if (s || (p = y.data.rawIndexOf(y.stackedByDimension, c)), p >= 0) { const v = y.data.getByRawIndex(y.stackResultDimension, p); if (l === 'all' || l === 'positive' && v > 0 || l === 'negative' && v < 0 || l === 'samesign' && d >= 0 && v > 0 || l === 'samesign' && d <= 0 && v < 0) { d = Hr(d, v), f = v; break } } } return i[0] = d, i[1] = f, i + }) + }) + } let Nd; let Ed; let zd; let Vd; let Bd; const Fd = function (t) { + this.data = t.data || (t.sourceFormat === Rp ? {} : []), this.sourceFormat = t.sourceFormat || Ep, this.seriesLayoutBy = t.seriesLayoutBy || zp, this.startIndex = t.startIndex || 0, this.dimensionsDetectedCount = t.dimensionsDetectedCount, this.metaRawOption = t.metaRawOption; const e = this.dimensionsDefine = t.dimensionsDefine; if (e) { + for (let n = 0; n < e.length; n++) { const i = e[n]; i.type == null && Xp(this, n) === Bp && (i.type = 'ordinal') } + } + }; function Gd(t) { return t instanceof Fd } function Wd(t, e, n) { + n = n || Yd(t); const i = e.seriesLayoutBy; const r = (function (t, e, n, i, r) { + let o, a; if (!t) + return { dimensionsDefine: Ud(r), startIndex: a, dimensionsDetectedCount: o }; if (e === Pp) { const s = t; i === 'auto' || i == null ? Xd((t) => { t != null && t !== '-' && (X(t) ? a == null && (a = 1) : a = 0) }, n, s, 10) : a = j(i) ? i : i ? 1 : 0, r || a !== 1 || (r = [], Xd((t, e) => { r[e] = t != null ? `${t}` : '' }, n, s, 1 / 0)), o = r ? r.length : n === Vp ? s.length : s[0] ? s[0].length : null } + else if (e === Op) { + r || (r = (function (t) { for (var e, n = 0; n < t.length && !(e = t[n++]););if (e) { const i = []; return E(e, (t, e) => { i.push(e) }), i } }(t))) + } + else if (e === Rp) { + r || (r = [], E(t, (t, e) => { r.push(e) })) + } + else if (e === Lp) { const l = fo(t[0]); o = Y(l) && l.length || 1 } return { startIndex: a, dimensionsDefine: Ud(r), dimensionsDetectedCount: o } + }(t, n, i, e.sourceHeader, e.dimensions)); return new Fd({ data: t, sourceFormat: n, seriesLayoutBy: i, dimensionsDefine: r.dimensionsDefine, startIndex: r.startIndex, dimensionsDetectedCount: r.dimensionsDetectedCount, metaRawOption: T(e) }) + } function Hd(t) { return new Fd({ data: t, sourceFormat: $(t) ? Np : Lp }) } function Yd(t) { + let e = Ep; if ($(t)) { + e = Np + } + else if (Y(t)) { t.length === 0 && (e = Pp); for (let n = 0, i = t.length; n < i; n++) { const r = t[n]; if (r != null) { if (Y(r)) { e = Pp; break } if (q(r)) { e = Op; break } } } } + else if (q(t)) { + for (const o in t) { + if (mt(t, o) && N(t[o])) { e = Rp; break } + } + } return e + } function Ud(t) { + if (t) { + const e = ft(); return z(t, (t, n) => { + const i = { name: (t = q(t) ? t : { name: t }).name, displayName: t.displayName, type: t.type }; if (i.name == null) + return i; i.name += '', i.displayName == null && (i.displayName = i.name); const r = e.get(i.name); return r ? i.name += `-${r.count++}` : e.set(i.name, { count: 1 }), i + }) + } + } function Xd(t, e, n, i) { + if (e === Vp) { + for (var r = 0; r < n.length && r < i; r++)t(n[r] ? n[r][0] : null, r) + } + else { const o = n[0] || []; for (r = 0; r < o.length && r < i; r++)t(o[r], r) } + } function Zd(t) { const e = t.sourceFormat; return e === Op || e === Rp } const jd = (function () { + function t(t, e) { const n = Gd(t) ? t : Hd(t); this._source = n; const i = this._data = n.data; n.sourceFormat === Np && (this._offset = 0, this._dimSize = e, this._data = i), Bd(this, i, n) } return t.prototype.getSource = function () { return this._source }, t.prototype.count = function () { return 0 }, t.prototype.getItem = function (t, e) {}, t.prototype.appendData = function (t) {}, t.prototype.clean = function () {}, t.protoInitialize = (function () { const e = t.prototype; e.pure = !1, e.persistent = !0 }()), t.internalField = (function () { + let t; Bd = function (t, r, o) { + const a = o.sourceFormat; const s = o.seriesLayoutBy; const l = o.startIndex; const u = o.dimensionsDefine; if (A(t, Vd[of(a, s)]), a === Np) { + t.getItem = e, t.count = i, t.fillStorage = n + } + else { const c = $d(a, s); t.getItem = W(c, null, r, l, u); const p = tf(a, s); t.count = W(p, null, r, l, u) } + }; var e = function (t, e) { t -= this._offset, e = e || []; for (let n = this._data, i = this._dimSize, r = i * t, o = 0; o < i; o++)e[o] = n[r + o]; return e }; var n = function (t, e, n, i) { for (let r = this._data, o = this._dimSize, a = 0; a < o; a++) { for (var s = i[a], l = s[0] == null ? 1 / 0 : s[0], u = s[1] == null ? -1 / 0 : s[1], h = e - t, c = n[a], p = 0; p < h; p++) { const d = r[p * o + a]; c[t + p] = d, d < l && (l = d), d > u && (u = d) }s[0] = l, s[1] = u } }; var i = function () { return this._data ? this._data.length / this._dimSize : 0 }; function r(t) { for (let e = 0; e < t.length; e++) this._data.push(t[e]) }(t = {}).arrayRows_column = { pure: !0, appendData: r }, t.arrayRows_row = { pure: !0, appendData() { throw new Error('Do not support appendData when set seriesLayoutBy: "row".') } }, t.objectRows = { pure: !0, appendData: r }, t.keyedColumns = { pure: !0, appendData(t) { const e = this._data; E(t, (t, n) => { for (let i = e[n] || (e[n] = []), r = 0; r < (t || []).length; r++)i.push(t[r]) }) } }, t.original = { appendData: r }, t.typedArray = { persistent: !1, pure: !0, appendData(t) { this._data = t }, clean() { this._offset += this.count(), this._data = null } }, Vd = t + }()), t + }()); const qd = function (t, e, n, i) { return t[i] }; const Kd = ((Nd = {}).arrayRows_column = function (t, e, n, i) { return t[i + e] }, Nd.arrayRows_row = function (t, e, n, i, r) { i += e; for (var o = r || [], a = t, s = 0; s < a.length; s++) { const l = a[s]; o[s] = l ? l[i] : null } return o }, Nd.objectRows = qd, Nd.keyedColumns = function (t, e, n, i, r) { for (var o = r || [], a = 0; a < n.length; a++) { const l = t[n[a].name]; o[a] = l ? l[i] : null } return o }, Nd.original = qd, Nd); function $d(t, e) { return Kd[of(t, e)] } const Jd = function (t, e, n) { return t.length }; const Qd = ((Ed = {}).arrayRows_column = function (t, e, n) { return Math.max(0, t.length - e) }, Ed.arrayRows_row = function (t, e, n) { const i = t[0]; return i ? Math.max(0, i.length - e) : 0 }, Ed.objectRows = Jd, Ed.keyedColumns = function (t, e, n) { const r = t[n[0].name]; return r ? r.length : 0 }, Ed.original = Jd, Ed); function tf(t, e) { return Qd[of(t, e)] } const ef = function (t, e, n) { return t[e] }; const nf = ((zd = {}).arrayRows = ef, zd.objectRows = function (t, e, n) { return t[n] }, zd.keyedColumns = ef, zd.original = function (t, e, n) { const i = fo(t); return Array.isArray(i) ? i[e] : i }, zd.typedArray = ef, zd); function rf(t) { return nf[t] } function of(t, e) { return t === Pp ? `${t}_${e}` : t } function af(t, e, n) { if (t) { const i = t.getRawDataItem(e); if (i != null) { const r = t.getStore(); const o = r.getSource().sourceFormat; if (n != null) { const a = t.getDimensionIndex(n); const s = r.getDimensionProperty(a); return rf(o)(i, a, s) } let l = i; return o === Lp && (l = fo(i)), l } } } const sf = /\{@(.+?)\}/g; const lf = (function () { function t() {} return t.prototype.getDataParams = function (t, e) { const n = this.getData(e); const i = this.getRawValue(t, e); const r = n.getRawIndex(t); const o = n.getName(t); const a = n.getRawDataItem(t); const s = n.getItemVisual(t, 'style'); const l = s && s[n.getItemVisual(t, 'drawType') || 'fill']; const u = s && s.stroke; const h = this.mainType; const c = h === 'series'; const p = n.userOutput && n.userOutput.get(); return { componentType: h, componentSubType: this.subType, componentIndex: this.componentIndex, seriesType: c ? this.subType : null, seriesIndex: this.seriesIndex, seriesId: c ? this.id : null, seriesName: c ? this.name : null, name: o, dataIndex: r, data: a, dataType: e, value: i, color: l, borderColor: u, dimensionNames: p ? p.fullDimensions : null, encode: p ? p.encode : null, $vars: ['seriesName', 'name', 'value'] } }, t.prototype.getFormattedLabel = function (t, e, n, i, r, o) { e = e || 'normal'; const a = this.getData(n); const s = this.getDataParams(t, n); return o && (s.value = o.interpolatedValue), i != null && Y(s.value) && (s.value = s.value[i]), r || (r = a.getItemModel(t).get(e === 'normal' ? ['label', 'formatter'] : [e, 'label', 'formatter'])), U(r) ? (s.status = e, s.dimensionIndex = i, r(s)) : X(r) ? hp(r, s).replace(sf, (e, n) => { const i = n.length; let r = n; r.charAt(0) === '[' && r.charAt(i - 1) === ']' && (r = +r.slice(1, i - 1)); let s = af(a, t, r); if (o && Y(o.interpolatedValue)) { const l = a.getDimensionIndex(r); l >= 0 && (s = o.interpolatedValue[l]) } return s != null ? `${s}` : '' }) : void 0 }, t.prototype.getRawValue = function (t, e) { return af(this.getData(e), t) }, t.prototype.formatTooltip = function (t, e, n) {}, t }()); function uf(t) { let e, n; return q(t) ? t.type && (n = t) : e = t, { text: e, frag: n } } function hf(t) { return new cf(t) } var cf = (function () { + function t(t) { t = t || {}, this._reset = t.reset, this._plan = t.plan, this._count = t.count, this._onDirty = t.onDirty, this._dirty = !0 } return t.prototype.perform = function (t) { + let e; const n = this._upstream; const i = t && t.skip; if (this._dirty && n) { const r = this.context; r.data = r.outputData = n.context.outputData } this.__pipeline && (this.__pipeline.currentTask = this), this._plan && !i && (e = this._plan(this.context)); let o; const a = h(this._modBy); const s = this._modDataCount || 0; const l = h(t && t.modBy); const u = t && t.modDataCount || 0; function h(t) { return !(t >= 1) && (t = 1), t }a === l && s === u || (e = 'reset'), (this._dirty || e === 'reset') && (this._dirty = !1, o = this._doReset(i)), this._modBy = l, this._modDataCount = u; const c = t && t.step; if (this._dueEnd = n ? n._outputDueEnd : this._count ? this._count(this.context) : 1 / 0, this._progress) { + const p = this._dueIndex; const d = Math.min(c != null ? this._dueIndex + c : 1 / 0, this._dueEnd); if (!i && (o || p < d)) { + const f = this._progress; if (Y(f)) { + for (let g = 0; g < f.length; g++) this._doProgress(f[g], p, d, l, u) + } + else { + this._doProgress(f, p, d, l, u) + } + } this._dueIndex = d; const y = this._settedOutputEnd != null ? this._settedOutputEnd : d; this._outputDueEnd = y + } + else { + this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd + } return this.unfinished() + }, t.prototype.dirty = function () { this._dirty = !0, this._onDirty && this._onDirty(this.context) }, t.prototype._doProgress = function (t, e, n, i, r) { pf.reset(e, n, i, r), this._callingProgress = t, this._callingProgress({ start: e, end: n, count: n - e, next: pf.next }, this.context) }, t.prototype._doReset = function (t) { let e, n; this._dueIndex = this._outputDueEnd = this._dueEnd = 0, this._settedOutputEnd = null, !t && this._reset && ((e = this._reset(this.context)) && e.progress && (n = e.forceFirstProgress, e = e.progress), Y(e) && !e.length && (e = null)), this._progress = e, this._modBy = this._modDataCount = null; const i = this._downstream; return i && i.dirty(), n }, t.prototype.unfinished = function () { return this._progress && this._dueIndex < this._dueEnd }, t.prototype.pipe = function (t) { (this._downstream !== t || this._dirty) && (this._downstream = t, t._upstream = this, t.dirty()) }, t.prototype.dispose = function () { this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), this._dirty = !1, this._disposed = !0) }, t.prototype.getUpstream = function () { return this._upstream }, t.prototype.getDownstream = function () { return this._downstream }, t.prototype.setOutputEnd = function (t) { this._outputDueEnd = this._settedOutputEnd = t }, t + }()); var pf = (function () { let t; let e; let n; let i; let r; var o = { reset(l, u, h, c) { e = l, t = u, n = h, i = c, r = Math.ceil(i / n), o.next = n > 1 && i > 0 ? s : a } }; return o; function a() { return e < t ? e++ : null } function s() { const o = e % r * n + Math.ceil(e / r); const a = e >= t ? null : o < i ? o : e; return e++, a } }()); function df(t, e) { const n = e && e.type; return n === 'ordinal' ? t : (n !== 'time' || j(t) || t == null || t === '-' || (t = +jr(t)), t == null || t === '' ? Number.NaN : +t) } const ff = ft({ number(t) { return Number.parseFloat(t) }, time(t) { return +jr(t) }, trim(t) { return X(t) ? ut(t) : t } }); function gf(t) { return ff.get(t) } const yf = { lt(t, e) { return t < e }, lte(t, e) { return t <= e }, gt(t, e) { return t > e }, gte(t, e) { return t >= e } }; const vf = (function () { function t(t, e) { if (!j(e)) { ao('') } this._opFn = yf[t], this._rvalFloat = to(e) } return t.prototype.evaluate = function (t) { return j(t) ? this._opFn(t, this._rvalFloat) : this._opFn(to(t), this._rvalFloat) }, t }()); const mf = (function () { function t(t, e) { const n = t === 'desc'; this._resultLT = n ? 1 : -1, e == null && (e = n ? 'min' : 'max'), this._incomparable = e === 'min' ? -1 / 0 : 1 / 0 } return t.prototype.evaluate = function (t, e) { let n = j(t) ? t : to(t); let i = j(e) ? e : to(e); const r = isNaN(n); const o = isNaN(i); if (r && (n = this._incomparable), o && (i = this._incomparable), r && o) { const a = X(t); const s = X(e); a && (n = s ? t : 0), s && (i = a ? e : 0) } return n < i ? this._resultLT : n > i ? -this._resultLT : 0 }, t }()); const xf = (function () { function t(t, e) { this._rval = e, this._isEQ = t, this._rvalTypeof = typeof e, this._rvalFloat = to(e) } return t.prototype.evaluate = function (t) { let e = t === this._rval; if (!e) { const n = typeof t; n === this._rvalTypeof || n !== 'number' && this._rvalTypeof !== 'number' || (e = to(t) === this._rvalFloat) } return this._isEQ ? e : !e }, t }()); function _f(t, e) { return t === 'eq' || t === 'ne' ? new xf(t === 'eq', e) : mt(yf, t) ? new vf(t, e) : null } const bf = (function () { function t() {} return t.prototype.getRawData = function () { throw new Error('not supported') }, t.prototype.getRawDataItem = function (t) { throw new Error('not supported') }, t.prototype.cloneRawData = function () {}, t.prototype.getDimensionInfo = function (t) {}, t.prototype.cloneAllDimensionInfo = function () {}, t.prototype.count = function () {}, t.prototype.retrieveValue = function (t, e) {}, t.prototype.retrieveValueFromItem = function (t, e) {}, t.prototype.convertValue = function (t, e) { return df(t, e) }, t }()); function wf(t) { if (!Df(t.sourceFormat)) { ao('') } return t.data } function Sf(t) { const e = t.sourceFormat; const n = t.data; if (!Df(e)) { ao('') } if (e === Pp) { for (var r = [], o = 0, a = n.length; o < a; o++)r.push(n[o].slice()); return r } if (e === Op) { for (r = [], o = 0, a = n.length; o < a; o++)r.push(A({}, n[o])); return r } } function Mf(t, e, n) { + if (n != null) + return j(n) || !isNaN(n) && !mt(e, n) ? t[n] : mt(e, n) ? e[n] : void 0 + } function If(t) { return T(t) } const Tf = ft(); function Cf(t, e, n, i) { + e.length || ao(''), q(t) || ao(''); const o = t.type; const a = Tf.get(o); a || ao(''); const s = z(e, (t) => { + return (function (t, e) { + const n = new bf(); const i = t.data; const r = n.sourceFormat = t.sourceFormat; const o = t.startIndex; t.seriesLayoutBy !== zp && ao(''); const s = []; const l = {}; const u = t.dimensionsDefine; if (u) { + E(u, (t, e) => { const n = t.name; const i = { index: e, name: n, displayName: t.displayName }; if (s.push(i), n != null) { mt(l, n) && ao(''), l[n] = i } }) + } + else { + for (let h = 0; h < t.dimensionsDetectedCount; h++)s.push({ index: h }) + } const c = $d(r, zp); e.__isBuiltIn && (n.getRawDataItem = function (t) { return c(i, o, s, t) }, n.getRawData = W(wf, null, t)), n.cloneRawData = W(Sf, null, t); const p = tf(r, zp); n.count = W(p, null, i, o, s); const d = rf(r); n.retrieveValue = function (t, e) { const n = c(i, o, s, t); return f(n, e) }; var f = n.retrieveValueFromItem = function (t, e) { if (t != null) { const n = s[e]; return n ? d(t, e, n.name) : void 0 } }; return n.getDimensionInfo = W(Mf, null, s, l), n.cloneAllDimensionInfo = W(If, null, s), n + }(t, a)) + }); return z(ho(a.transform({ upstream: s[0], upstreamList: s, config: T(t.config) })), (t, n) => { + let i; q(t) || ao(''), t.data || ao(''), Df(Yd(t.data)) || ao(''); const o = e[0]; if (o && n === 0 && !t.dimensions) { const a = o.startIndex; a && (t.data = o.data.slice(0, a).concat(t.data)), i = { seriesLayoutBy: zp, sourceHeader: a, dimensions: o.metaRawOption.dimensions } } + else { + i = { seriesLayoutBy: zp, sourceHeader: 0, dimensions: t.dimensions } + } return Wd(t.data, i, null) + }) + } function Df(t) { return t === Pp || t === Op } let Af; const kf = 'undefined'; const Lf = typeof Uint32Array === kf ? Array : Uint32Array; const Pf = typeof Uint16Array === kf ? Array : Uint16Array; const Of = typeof Int32Array === kf ? Array : Int32Array; const Rf = typeof Float64Array === kf ? Array : Float64Array; const Nf = { float: Rf, int: Of, ordinal: Array, number: Array, time: Rf }; function Ef(t) { return t > 65535 ? Lf : Pf } function zf(t, e, n, i, r) { + const o = Nf[n || 'float']; if (r) { const a = t[e]; const s = a && a.length; if (s !== i) { for (var l = new o(i), u = 0; u < s; u++)l[u] = a[u]; t[e] = l } } + else { + t[e] = new o(i) + } + } const Vf = (function () { + function t() { this._chunks = [], this._rawExtent = [], this._extent = [], this._count = 0, this._rawCount = 0, this._calcDimNameToIdx = ft() } return t.prototype.initData = function (t, e, n) { this._provider = t, this._chunks = [], this._indices = null, this.getRawIndex = this._getRawIdxIdentity; const i = t.getSource(); const r = this.defaultDimValueGetter = Af[i.sourceFormat]; this._dimValueGetter = n || r, this._rawExtent = [], Zd(i), this._dimensions = z(e, (t) => { return { type: t.type, property: t.property } }), this._initDataFromProvider(0, t.count()) }, t.prototype.getProvider = function () { return this._provider }, t.prototype.getSource = function () { return this._provider.getSource() }, t.prototype.ensureCalculationDimension = function (t, e) { + const n = this._calcDimNameToIdx; const i = this._dimensions; let r = n.get(t); if (r != null) { + if (i[r].type === e) + return r + } + else { + r = i.length + } return i[r] = { type: e }, n.set(t, r), this._chunks[r] = new Nf[e || 'float'](this._rawCount), this._rawExtent[r] = [1 / 0, -1 / 0], r + }, t.prototype.collectOrdinalMeta = function (t, e) { const n = this._chunks[t]; const i = this._dimensions[t]; const r = this._rawExtent; const o = i.ordinalOffset || 0; const a = n.length; o === 0 && (r[t] = [1 / 0, -1 / 0]); for (let s = r[t], l = o; l < a; l++) { const u = n[l] = e.parseAndCollect(n[l]); isNaN(u) || (s[0] = Math.min(u, s[0]), s[1] = Math.max(u, s[1])) }i.ordinalMeta = e, i.ordinalOffset = a, i.type = 'ordinal' }, t.prototype.getOrdinalMeta = function (t) { return this._dimensions[t].ordinalMeta }, t.prototype.getDimensionProperty = function (t) { const e = this._dimensions[t]; return e && e.property }, t.prototype.appendData = function (t) { const e = this._provider; const n = this.count(); e.appendData(t); let i = e.count(); return e.persistent || (i += n), n < i && this._initDataFromProvider(n, i, !0), [n, i] }, t.prototype.appendValues = function (t, e) { + for (var n = this._chunks, i = this._dimensions, r = i.length, o = this._rawExtent, a = this.count(), s = a + Math.max(t.length, e || 0), l = 0; l < r; l++)zf(n, l, (d = i[l]).type, s, !0); for (let u = [], h = a; h < s; h++) { + for (let c = h - a, p = 0; p < r; p++) { var d = i[p]; const f = Af.arrayRows.call(this, t[c] || u, d.property, c, p); n[p][h] = f; const g = o[p]; f < g[0] && (g[0] = f), f > g[1] && (g[1] = f) } + } return this._rawCount = this._count = s, { start: a, end: s } + }, t.prototype._initDataFromProvider = function (t, e, n) { + for (var i = this._provider, r = this._chunks, o = this._dimensions, a = o.length, s = this._rawExtent, l = z(o, (t) => { return t.property }), u = 0; u < a; u++) { const h = o[u]; s[u] || (s[u] = [1 / 0, -1 / 0]), zf(r, u, h.type, e, n) } if (i.fillStorage) { + i.fillStorage(t, e, r, s) + } + else { + for (let c = [], p = t; p < e; p++) { c = i.getItem(p, c); for (let d = 0; d < a; d++) { const f = r[d]; const g = this._dimValueGetter(c, l[d], p, d); f[p] = g; const y = s[d]; g < y[0] && (y[0] = g), g > y[1] && (y[1] = g) } } + }!i.persistent && i.clean && i.clean(), this._rawCount = this._count = e, this._extent = [] + }, t.prototype.count = function () { return this._count }, t.prototype.get = function (t, e) { + if (!(e >= 0 && e < this._count)) + return Number.NaN; const n = this._chunks[t]; return n ? n[this.getRawIndex(e)] : Number.NaN + }, t.prototype.getValues = function (t, e) { + const n = []; let i = []; if (e == null) { e = t, t = []; for (var r = 0; r < this._dimensions.length; r++)i.push(r) } + else { + i = t + }r = 0; for (let o = i.length; r < o; r++)n.push(this.get(i[r], e)); return n + }, t.prototype.getByRawIndex = function (t, e) { + if (!(e >= 0 && e < this._rawCount)) + return Number.NaN; const n = this._chunks[t]; return n ? n[e] : Number.NaN + }, t.prototype.getSum = function (t) { + let e = 0; if (this._chunks[t]) { + for (let n = 0, i = this.count(); n < i; n++) { const r = this.get(t, n); isNaN(r) || (e += r) } + } return e + }, t.prototype.getMedian = function (t) { const e = []; this.each([t], (t) => { isNaN(t) || e.push(t) }); const n = e.sort((t, e) => { return t - e }); const i = this.count(); return i === 0 ? 0 : i % 2 == 1 ? n[(i - 1) / 2] : (n[i / 2] + n[i / 2 - 1]) / 2 }, t.prototype.indexOfRawIndex = function (t) { + if (t >= this._rawCount || t < 0) + return -1; if (!this._indices) + return t; const e = this._indices; const n = e[t]; if (n != null && n < this._count && n === t) + return t; for (let i = 0, r = this._count - 1; i <= r;) { + const o = (i + r) / 2 | 0; if (e[o] < t) { + i = o + 1 + } + else { + if (!(e[o] > t)) + return o; r = o - 1 + } + } return -1 + }, t.prototype.indicesOfNearest = function (t, e, n) { + const i = this._chunks[t]; const r = []; if (!i) + return r; n == null && (n = 1 / 0); for (var o = 1 / 0, a = -1, s = 0, l = 0, u = this.count(); l < u; l++) { const h = e - i[this.getRawIndex(l)]; const c = Math.abs(h); c <= n && ((c < o || c === o && h >= 0 && a < 0) && (o = c, a = h, s = 0), h === a && (r[s++] = l)) } return r.length = s, r + }, t.prototype.getIndices = function () { + let t; const e = this._indices; if (e) { + var n = e.constructor; const i = this._count; if (n === Array) { t = new n(i); for (var r = 0; r < i; r++)t[r] = e[r] } + else { + t = new n(e.buffer, 0, i) + } + } + else { + for (t = new (n = Ef(this._rawCount))(this.count()), r = 0; r < t.length; r++)t[r] = r + } return t + }, t.prototype.filter = function (t, e) { + if (!this._count) + return this; for (var n = this.clone(), i = n.count(), r = new (Ef(n._rawCount))(i), o = [], a = t.length, s = 0, l = t[0], u = n._chunks, h = 0; h < i; h++) { + let c = void 0; const p = n.getRawIndex(h); if (a === 0) { + c = e(h) + } + else if (a === 1) { + c = e(u[l][p], h) + } + else { for (var d = 0; d < a; d++)o[d] = u[t[d]][p]; o[d] = h, c = e.apply(null, o) }c && (r[s++] = p) + } return s < i && (n._indices = r), n._count = s, n._extent = [], n._updateGetRawIdx(), n + }, t.prototype.selectRange = function (t) { + const e = this.clone(); const n = e._count; if (!n) + return this; const i = G(t); const r = i.length; if (!r) + return this; const o = e.count(); const a = new (Ef(e._rawCount))(o); let s = 0; const l = i[0]; const u = t[l][0]; const h = t[l][1]; const c = e._chunks; let p = !1; if (!e._indices) { + let d = 0; if (r === 1) { for (var f = c[i[0]], g = 0; g < n; g++)((x = f[g]) >= u && x <= h || isNaN(x)) && (a[s++] = d), d++; p = !0 } + else if (r === 2) { f = c[i[0]]; const y = c[i[1]]; const v = t[i[1]][0]; const m = t[i[1]][1]; for (g = 0; g < n; g++) { var x = f[g]; const _ = y[g]; (x >= u && x <= h || isNaN(x)) && (_ >= v && _ <= m || isNaN(_)) && (a[s++] = d), d++ }p = !0 } + } if (!p) { + if (r === 1) { + for (g = 0; g < o; g++) { var b = e.getRawIndex(g); ((x = c[i[0]][b]) >= u && x <= h || isNaN(x)) && (a[s++] = b) } + } + else { + for (g = 0; g < o; g++) { for (var w = !0, S = (b = e.getRawIndex(g), 0); S < r; S++) { const M = i[S]; ((x = c[M][b]) < t[M][0] || x > t[M][1]) && (w = !1) }w && (a[s++] = e.getRawIndex(g)) } + } + } return s < o && (e._indices = a), e._count = s, e._extent = [], e._updateGetRawIdx(), e + }, t.prototype.map = function (t, e) { const n = this.clone(t); return this._updateDims(n, t, e), n }, t.prototype.modify = function (t, e) { this._updateDims(this, t, e) }, t.prototype._updateDims = function (t, e, n) { + for (var i = t._chunks, r = [], o = e.length, a = t.count(), s = [], l = t._rawExtent, u = 0; u < e.length; u++)l[e[u]] = [1 / 0, -1 / 0]; for (let h = 0; h < a; h++) { + for (var c = t.getRawIndex(h), p = 0; p < o; p++)s[p] = i[e[p]][c]; s[o] = h; let d = n && n.apply(null, s); if (d != null) { + for (typeof d != 'object' && (r[0] = d, d = r), u = 0; u < d.length; u++) { const f = e[u]; const g = d[u]; const y = l[f]; const v = i[f]; v && (v[c] = g), g < y[0] && (y[0] = g), g > y[1] && (y[1] = g) } + } + } + }, t.prototype.lttbDownSample = function (t, e) { let n; let i; let r; const o = this.clone([t], !0); const a = o._chunks[t]; const s = this.count(); let l = 0; const u = Math.floor(1 / e); let h = this.getRawIndex(0); const c = new (Ef(this._rawCount))(Math.min(2 * (Math.ceil(s / u) + 2), s)); c[l++] = h; for (let p = 1; p < s - 1; p += u) { for (var d = Math.min(p + u, s - 1), f = Math.min(p + 2 * u, s), g = (f + d) / 2, y = 0, v = d; v < f; v++) { var m = a[I = this.getRawIndex(v)]; isNaN(m) || (y += m) }y /= f - d; const x = p; const _ = Math.min(p + u, s); const b = p - 1; const w = a[h]; n = -1, r = x; let S = -1; let M = 0; for (v = x; v < _; v++) { var I; m = a[I = this.getRawIndex(v)], isNaN(m) ? (M++, S < 0 && (S = I)) : (i = Math.abs((b - g) * (m - w) - (b - v) * (y - w))) > n && (n = i, r = I) }M > 0 && M < _ - x && (c[l++] = Math.min(S, r), r = Math.max(S, r)), c[l++] = r, h = r } return c[l++] = this.getRawIndex(s - 1), o._count = l, o._indices = c, o.getRawIndex = this._getRawIdx, o }, t.prototype.downSample = function (t, e, n, i) { for (var r = this.clone([t], !0), o = r._chunks, a = [], s = Math.floor(1 / e), l = o[t], u = this.count(), h = r._rawExtent[t] = [1 / 0, -1 / 0], c = new (Ef(this._rawCount))(Math.ceil(u / s)), p = 0, d = 0; d < u; d += s) { s > u - d && (s = u - d, a.length = s); for (let f = 0; f < s; f++) { const g = this.getRawIndex(d + f); a[f] = l[g] } const y = n(a); const v = this.getRawIndex(Math.min(d + i(a, y) || 0, u - 1)); l[v] = y, y < h[0] && (h[0] = y), y > h[1] && (h[1] = y), c[p++] = v } return r._count = p, r._indices = c, r._updateGetRawIdx(), r }, t.prototype.each = function (t, e) { + if (this._count) { + for (let n = t.length, i = this._chunks, r = 0, o = this.count(); r < o; r++) { const a = this.getRawIndex(r); switch (n) { case 0:e(r); break; case 1:e(i[t[0]][a], r); break; case 2:e(i[t[0]][a], i[t[1]][a], r); break; default:for (var s = 0, l = []; s < n; s++)l[s] = i[t[s]][a]; l[s] = r, e.apply(null, l) } } + } + }, t.prototype.getDataExtent = function (t) { + const e = this._chunks[t]; const n = [1 / 0, -1 / 0]; if (!e) + return n; let i; const r = this.count(); if (!this._indices) + return this._rawExtent[t].slice(); if (i = this._extent[t]) + return i.slice(); for (var o = (i = n)[0], a = i[1], s = 0; s < r; s++) { const l = e[this.getRawIndex(s)]; l < o && (o = l), l > a && (a = l) } return i = [o, a], this._extent[t] = i, i + }, t.prototype.getRawDataItem = function (t) { + const e = this.getRawIndex(t); if (this._provider.persistent) + return this._provider.getItem(e); for (var n = [], i = this._chunks, r = 0; r < i.length; r++)n.push(i[r][e]); return n + }, t.prototype.clone = function (e, n) { + let i; let r; const o = new t(); const a = this._chunks; const s = e && V(e, (t, e) => { return t[e] = !0, t }, {}); if (s) { + for (let l = 0; l < a.length; l++)o._chunks[l] = s[l] ? (r = void 0, (r = (i = a[l]).constructor) === Array ? i.slice() : new r(i)) : a[l] + } + else { + o._chunks = a + } return this._copyCommonProps(o), n || (o._indices = this._cloneIndices()), o._updateGetRawIdx(), o + }, t.prototype._copyCommonProps = function (t) { t._count = this._count, t._rawCount = this._rawCount, t._provider = this._provider, t._dimensions = this._dimensions, t._extent = T(this._extent), t._rawExtent = T(this._rawExtent) }, t.prototype._cloneIndices = function () { + if (this._indices) { + const t = this._indices.constructor; let e = void 0; if (t === Array) { const n = this._indices.length; e = new t(n); for (let i = 0; i < n; i++)e[i] = this._indices[i] } + else { + e = new t(this._indices) + } return e + } return null + }, t.prototype._getRawIdxIdentity = function (t) { return t }, t.prototype._getRawIdx = function (t) { return t < this._count && t >= 0 ? this._indices[t] : -1 }, t.prototype._updateGetRawIdx = function () { this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity }, t.internalField = (function () { function t(t, e, n, i) { return df(t[i], this._dimensions[i]) }Af = { arrayRows: t, objectRows(t, e, n, i) { return df(t[e], this._dimensions[i]) }, keyedColumns: t, original(t, e, n, i) { const r = t && (t.value == null ? t : t.value); return df(Array.isArray(r) ? r[i] : r, this._dimensions[i]) }, typedArray(t, e, n, i) { return t[i] } } }()), t + }()); const Bf = (function () { + function t(t) { this._sourceList = [], this._storeList = [], this._upstreamSignList = [], this._versionSignBase = 0, this._dirty = !0, this._sourceHost = t } return t.prototype.dirty = function () { this._setLocalSource([], []), this._storeList = [], this._dirty = !0 }, t.prototype._setLocalSource = function (t, e) { this._sourceList = t, this._upstreamSignList = e, this._versionSignBase++, this._versionSignBase > 9e10 && (this._versionSignBase = 0) }, t.prototype._getVersionSign = function () { return `${this._sourceHost.uid}_${this._versionSignBase}` }, t.prototype.prepareSource = function () { this._isDirty() && (this._createSource(), this._dirty = !1) }, t.prototype._createSource = function () { + this._setLocalSource([], []); let t; let e; const n = this._sourceHost; const i = this._getUpstreamSourceManagers(); const r = !!i.length; if (Gf(n)) { + const o = n; let a = void 0; let s = void 0; let l = void 0; if (r) { const u = i[0]; u.prepareSource(), a = (l = u.getSource()).data, s = l.sourceFormat, e = [u._getVersionSign()] } + else { + s = $(a = o.get('data', !0)) ? Np : Lp, e = [] + } const h = this._getSourceMetaRawOption() || {}; const c = l && l.metaRawOption || {}; const p = rt(h.seriesLayoutBy, c.seriesLayoutBy) || null; const d = rt(h.sourceHeader, c.sourceHeader); const f = rt(h.dimensions, c.dimensions); t = p !== c.seriesLayoutBy || !!d != !!c.sourceHeader || f ? [Wd(a, { seriesLayoutBy: p, sourceHeader: d, dimensions: f }, s)] : [] + } + else { + const g = n; if (r) { const y = this._applyTransform(i); t = y.sourceList, e = y.upstreamSignList } + else { + t = [Wd(g.get('source', !0), this._getSourceMetaRawOption(), null)], e = [] + } + } this._setLocalSource(t, e) + }, t.prototype._applyTransform = function (t) { let e; const n = this._sourceHost; const i = n.get('transform', !0); const r = n.get('fromTransformResult', !0); if (r != null) { t.length !== 1 && Wf('') } let a; const s = []; const l = []; return E(t, (t) => { t.prepareSource(); const e = t.getSource(r || 0); r == null || e || Wf(''), s.push(e), l.push(t._getVersionSign()) }), i ? e = (function (t, e, n) { const i = ho(t); const r = i.length; r || ao(''); for (let a = 0, s = r; a < s; a++)e = Cf(i[a], e), a !== s - 1 && (e.length = Math.max(e.length, 1)); return e }(i, s, n.componentIndex)) : r != null && (e = [(a = s[0], new Fd({ data: a.data, sourceFormat: a.sourceFormat, seriesLayoutBy: a.seriesLayoutBy, dimensionsDefine: T(a.dimensionsDefine), startIndex: a.startIndex, dimensionsDetectedCount: a.dimensionsDetectedCount }))]), { sourceList: e, upstreamSignList: l } }, t.prototype._isDirty = function () { + if (this._dirty) + return !0; for (let t = this._getUpstreamSourceManagers(), e = 0; e < t.length; e++) { + const n = t[e]; if (n._isDirty() || this._upstreamSignList[e] !== n._getVersionSign()) + return !0 + } + }, t.prototype.getSource = function (t) { t = t || 0; const e = this._sourceList[t]; if (!e) { const n = this._getUpstreamSourceManagers(); return n[0] && n[0].getSource(t) } return e }, t.prototype.getSharedDataStore = function (t) { const e = t.makeStoreSchema(); return this._innerGetDataStore(e.dimensions, t.source, e.hash) }, t.prototype._innerGetDataStore = function (t, e, n) { const i = this._storeList; let r = i[0]; r || (r = i[0] = {}); let o = r[n]; if (!o) { const a = this._getUpstreamSourceManagers()[0]; Gf(this._sourceHost) && a ? o = a._innerGetDataStore(t, e, n) : (o = new Vf()).initData(new jd(e, t.length), t), r[n] = o } return o }, t.prototype._getUpstreamSourceManagers = function () { const t = this._sourceHost; if (Gf(t)) { const e = Up(t); return e ? [e.getSourceManager()] : [] } return z((function (t) { return t.get('transform', !0) || t.get('fromTransformResult', !0) ? Ao(t.ecModel, 'dataset', { index: t.get('fromDatasetIndex', !0), id: t.get('fromDatasetId', !0) }, Co).models : [] }(t)), (t) => { return t.getSourceManager() }) }, t.prototype._getSourceMetaRawOption = function () { + let t; let e; let n; const i = this._sourceHost; if (Gf(i)) { + t = i.get('seriesLayoutBy', !0), e = i.get('sourceHeader', !0), n = i.get('dimensions', !0) + } + else if (!this._getUpstreamSourceManagers().length) { const r = i; t = r.get('seriesLayoutBy', !0), e = r.get('sourceHeader', !0), n = r.get('dimensions', !0) } return { seriesLayoutBy: t, sourceHeader: e, dimensions: n } + }, t + }()); function Ff(t) { t.option.transform && ct(t.option.transform) } function Gf(t) { return t.mainType === 'series' } function Wf(t) { throw new Error(t) } function Hf(t, e) { const n = t.color || '#6e7079'; const i = t.fontSize || 12; const r = t.fontWeight || '400'; const o = t.color || '#464646'; const a = t.fontSize || 14; const s = t.fontWeight || '900'; return e === 'html' ? { nameStyle: `font-size:${ap(`${i}`)}px;color:${ap(n)};font-weight:${ap(`${r}`)}`, valueStyle: `font-size:${ap(`${a}`)}px;color:${ap(o)};font-weight:${ap(`${s}`)}` } : { nameStyle: { fontSize: i, fill: n, fontWeight: r }, valueStyle: { fontSize: a, fill: o, fontWeight: s } } } const Yf = [0, 10, 20, 30]; const Uf = ['', '\n', '\n\n', '\n\n\n']; function Xf(t, e) { return e.type = t, e } function Zf(t) { return t.type === 'section' } function jf(t) { return Zf(t) ? Kf : $f } function qf(t) { if (Zf(t)) { let e = 0; const n = t.blocks.length; const i = n > 1 || n > 0 && !t.noHeader; return E(t.blocks, (t) => { const n = qf(t); n >= e && (e = n + +(i && (!n || Zf(t) && !t.noHeader))) }), e } return 0 } function Kf(t, e, n, i) { + let r; const o = e.noHeader; const a = (r = qf(e), { html: Yf[r], richText: Uf[r] }); const s = []; let l = e.blocks || []; lt(!l || Y(l)), l = l || []; const u = t.orderMode; if (e.sortBlocks && u) { + l = l.slice(); const h = { valueAsc: 'asc', valueDesc: 'desc' }; if (mt(h, u)) { const c = new mf(h[u], null); l.sort((t, e) => { return c.evaluate(t.sortParam, e.sortParam) }) } + else { + u === 'seriesDesc' && l.reverse() + } + }E(l, (n, r) => { const o = e.valueFormatter; const l = jf(n)(o ? A(A({}, t), { valueFormatter: o }) : t, n, r > 0 ? a.html : 0, i); l != null && s.push(l) }); const p = t.renderMode === 'richText' ? s.join(a.richText) : Qf(s.join(''), o ? n : a.html); if (o) + return p; const d = sp(e.header, 'ordinal', t.useUTC); const f = Hf(i, t.renderMode).nameStyle; return t.renderMode === 'richText' ? tg(t, d, f) + a.richText + p : Qf(`
${ap(d)}
${p}`, n) + } function $f(t, e, n, i) { const r = t.renderMode; const o = e.noName; const a = e.noValue; const s = !e.markerType; const l = e.name; const u = t.useUTC; const h = e.valueFormatter || t.valueFormatter || function (t) { return z(t = Y(t) ? t : [t], (t, e) => { return sp(t, Y(d) ? d[e] : d, u) }) }; if (!o || !a) { const c = s ? '' : t.markupStyleCreator.makeTooltipMarker(e.markerType, e.markerColor || '#333', r); const p = o ? '' : sp(l, 'ordinal', u); var d = e.valueType; const f = a ? [] : h(e.value); const g = !s || !o; const y = !s && o; const v = Hf(i, r); const m = v.nameStyle; const x = v.valueStyle; return r === 'richText' ? (s ? '' : c) + (o ? '' : tg(t, p, m)) + (a ? '' : (function (t, e, n, i, r) { const o = [r]; const a = i ? 10 : 20; return n && o.push({ padding: [0, 0, 0, a], align: 'right' }), t.markupStyleCreator.wrapRichTextStyle(Y(e) ? e.join(' ') : e, o) }(t, f, g, y, x))) : Qf((s ? '' : c) + (o ? '' : (function (t, e, n) { return `${ap(t)}` }(p, !s, m))) + (a ? '' : (function (t, e, n, i) { return `${z(t = Y(t) ? t : [t], (t) => { return ap(t) }).join('  ')}` }(f, g, y, x))), n) } } function Jf(t, e, n, i, r, o) { + if (t) + return jf(t)({ useUTC: r, renderMode: n, orderMode: i, markupStyleCreator: e, valueFormatter: t.valueFormatter }, t, 0, o) + } function Qf(t, e) { return `
${t}
` } function tg(t, e, n) { return t.markupStyleCreator.wrapRichTextStyle(e, n) } function eg(t, e) { return pp(t.getData().getItemVisual(e, 'style')[t.visualDrawType]) } function ng(t, e) { const n = t.get('padding'); return n != null ? n : e === 'richText' ? [8, 10] : 10 } const ig = (function () { function t() { this.richTextStyles = {}, this._nextStyleNameId = no() } return t.prototype._generateStyleName = function () { return `__EC_aUTo_${this._nextStyleNameId++}` }, t.prototype.makeTooltipMarker = function (t, e, n) { const i = n === 'richText' ? this._generateStyleName() : null; const r = cp({ color: e, type: t, renderMode: n, markerId: i }); return X(r) ? r : (this.richTextStyles[i] = r.style, r.content) }, t.prototype.wrapRichTextStyle = function (t, e) { const n = {}; Y(e) ? E(e, (t) => { return A(n, t) }) : A(n, e); const i = this._generateStyleName(); return this.richTextStyles[i] = n, `{${i}|${t}}` }, t }()); function rg(t) { + let e; let n; let i; let r; const o = t.series; const a = t.dataIndex; const s = t.multipleSeries; const l = o.getData(); const u = l.mapDimensionsAll('defaultedTooltip'); const h = u.length; const c = o.getRawValue(a); const p = Y(c); const d = eg(o, a); if (h > 1 || p && !h) { const f = (function (t, e, n, i, r) { const o = e.getData(); const a = V(t, (t, e, n) => { const i = o.getDimensionInfo(n); return t || i && !1 !== i.tooltip && i.displayName != null }, !1); const s = []; const l = []; const u = []; function h(t, e) { const n = o.getDimensionInfo(e); n && !1 !== n.otherDims.tooltip && (a ? u.push(Xf('nameValue', { markerType: 'subItem', markerColor: r, name: n.displayName, value: t, valueType: n.type })) : (s.push(t), l.push(n.type))) } return i.length ? E(i, (t) => { h(af(o, n, t), t) }) : E(t, h), { inlineValues: s, inlineValueTypes: l, blocks: u } }(c, o, a, u, d)); e = f.inlineValues, n = f.inlineValueTypes, i = f.blocks, r = f.inlineValues[0] } + else if (h) { const g = l.getDimensionInfo(u[0]); r = e = af(l, a, u[0]), n = g.type } + else { + r = e = p ? c[0] : c + } const y = _o(o); const v = y && o.name || ''; const m = l.getName(a); const x = s ? v : m; return Xf('section', { header: v, noHeader: s || !y, sortParam: r, blocks: [Xf('nameValue', { markerType: 'item', markerColor: d, name: x, noName: !ut(x), value: e, valueType: n })].concat(i || []) }) + } const og = So(); function ag(t, e) { return t.getName(e) || t.getId(e) } const sg = (function (t) { + function e() { const e = t !== null && t.apply(this, arguments) || this; return e._selectedDataIndicesMap = {}, e } return n(e, t), e.prototype.init = function (t, e, n) { this.seriesIndex = this.componentIndex, this.dataTask = hf({ count: ug, reset: hg }), this.dataTask.context = { model: this }, this.mergeDefaultAndTheme(t, n), (og(this).sourceManager = new Bf(this)).prepareSource(); const i = this.getInitialData(t, n); pg(i, this), this.dataTask.context.data = i, og(this).dataBeforeProcessed = i, lg(this), this._initSelectedMapFromData(i) }, e.prototype.mergeDefaultAndTheme = function (t, e) { const n = bp(this); const i = n ? Sp(t) : {}; let r = this.subType; Tp.hasClass(r) && (r += 'Series'), C(t, e.getTheme().get(this.subType)), C(t, this.getDefaultOption()), co(t, 'label', ['show']), this.fillDataTextStyle(t.data), n && wp(t, i, n) }, e.prototype.mergeOption = function (t, e) { t = C(this.option, t, !0), this.fillDataTextStyle(t.data); const n = bp(this); n && wp(this.option, t, n); const i = og(this).sourceManager; i.dirty(), i.prepareSource(); const r = this.getInitialData(t, e); pg(r, this), this.dataTask.dirty(), this.dataTask.context.data = r, og(this).dataBeforeProcessed = r, lg(this), this._initSelectedMapFromData(r) }, e.prototype.fillDataTextStyle = function (t) { + if (t && !$(t)) { + for (let e = ['show'], n = 0; n < t.length; n++)t[n] && t[n].label && co(t[n], 'label', e) + } + }, e.prototype.getInitialData = function (t, e) {}, e.prototype.appendData = function (t) { this.getRawData().appendData(t.data) }, e.prototype.getData = function (t) { const e = fg(this); if (e) { const n = e.context.data; return t == null ? n : n.getLinkedData(t) } return og(this).data }, e.prototype.getAllData = function () { const t = this.getData(); return t && t.getLinkedDataAll ? t.getLinkedDataAll() : [{ data: t }] }, e.prototype.setData = function (t) { const e = fg(this); if (e) { const n = e.context; n.outputData = t, e !== this.dataTask && (n.data = t) }og(this).data = t }, e.prototype.getEncode = function () { + const t = this.get('encode', !0); if (t) + return ft(t) + }, e.prototype.getSourceManager = function () { return og(this).sourceManager }, e.prototype.getSource = function () { return this.getSourceManager().getSource() }, e.prototype.getRawData = function () { return og(this).dataBeforeProcessed }, e.prototype.getColorBy = function () { return this.get('colorBy') || 'series' }, e.prototype.isColorBySeries = function () { return this.getColorBy() === 'series' }, e.prototype.getBaseAxis = function () { const t = this.coordinateSystem; return t && t.getBaseAxis && t.getBaseAxis() }, e.prototype.formatTooltip = function (t, e, n) { return rg({ series: this, dataIndex: t, multipleSeries: e }) }, e.prototype.isAnimationEnabled = function () { + const t = this.ecModel; if (r.node && (!t || !t.ssr)) + return !1; let e = this.getShallow('animation'); return e && this.getData().count() > this.getShallow('animationThreshold') && (e = !1), !!e + }, e.prototype.restoreData = function () { this.dataTask.dirty() }, e.prototype.getColorFromPalette = function (t, e, n) { const i = this.ecModel; let r = td.prototype.getColorFromPalette.call(this, t, e, n); return r || (r = i.getColorFromPalette(t, e, n)), r }, e.prototype.coordDimToDataDim = function (t) { return this.getRawData().mapDimensionsAll(t) }, e.prototype.getProgressive = function () { return this.get('progressive') }, e.prototype.getProgressiveThreshold = function () { return this.get('progressiveThreshold') }, e.prototype.select = function (t, e) { this._innerSelect(this.getData(e), t) }, e.prototype.unselect = function (t, e) { + const n = this.option.selectedMap; if (n) { + const i = this.option.selectedMode; const r = this.getData(e); if (i === 'series' || n === 'all') + return this.option.selectedMap = {}, void (this._selectedDataIndicesMap = {}); for (let o = 0; o < t.length; o++) { const a = ag(r, t[o]); n[a] = !1, this._selectedDataIndicesMap[a] = -1 } + } + }, e.prototype.toggleSelect = function (t, e) { for (let n = [], i = 0; i < t.length; i++)n[0] = t[i], this.isSelected(t[i], e) ? this.unselect(n, e) : this.select(n, e) }, e.prototype.getSelectedDataIndices = function () { + if (this.option.selectedMap === 'all') + return [].slice.call(this.getData().getIndices()); for (var t = this._selectedDataIndicesMap, e = G(t), n = [], i = 0; i < e.length; i++) { const r = t[e[i]]; r >= 0 && n.push(r) } return n + }, e.prototype.isSelected = function (t, e) { + const n = this.option.selectedMap; if (!n) + return !1; const i = this.getData(e); return (n === 'all' || n[ag(i, t)]) && !i.getItemModel(t).get(['select', 'disabled']) + }, e.prototype.isUniversalTransitionEnabled = function () { + if (this.__universalTransitionEnabled) + return !0; const t = this.option.universalTransition; return !!t && (!0 === t || t && t.enabled) + }, e.prototype._innerSelect = function (t, e) { + let n; let i; const r = this.option; const o = r.selectedMode; const a = e.length; if (o && a) { + if (o === 'series') { + r.selectedMap = 'all' + } + else if (o === 'multiple') { q(r.selectedMap) || (r.selectedMap = {}); for (let s = r.selectedMap, l = 0; l < a; l++) { const u = e[l]; s[c = ag(t, u)] = !0, this._selectedDataIndicesMap[c] = t.getRawIndex(u) } } + else if (o === 'single' || !0 === o) { const h = e[a - 1]; var c = ag(t, h); r.selectedMap = ((n = {})[c] = !0, n), this._selectedDataIndicesMap = ((i = {})[c] = t.getRawIndex(h), i) } + } + }, e.prototype._initSelectedMapFromData = function (t) { if (!this.option.selectedMap) { const e = []; t.hasItemOption && t.each((n) => { const i = t.getRawDataItem(n); i && i.selected && e.push(n) }), e.length > 0 && this._innerSelect(t, e) } }, e.registerClass = function (t) { return Tp.registerClass(t) }, e.protoInitialize = (function () { const t = e.prototype; t.type = 'series.__base__', t.seriesIndex = 0, t.ignoreStyleOnData = !1, t.hasSymbolVisual = !1, t.defaultSymbol = 'circle', t.visualStyleAccessPath = 'itemStyle', t.visualDrawType = 'fill' }()), e + }(Tp)); function lg(t) { const e = t.name; _o(t) || (t.name = (function (t) { const e = t.getRawData(); const n = e.mapDimensionsAll('seriesName'); const i = []; return E(n, (t) => { const n = e.getDimensionInfo(t); n.displayName && i.push(n.displayName) }), i.join(' ') }(t)) || e) } function ug(t) { return t.model.getRawData().count() } function hg(t) { const e = t.model; return e.setData(e.getRawData().cloneShallow()), cg } function cg(t, e) { e.outputData && t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData) } function pg(t, e) { E(gt(t.CHANGABLE_METHODS, t.DOWNSAMPLE_METHODS), (n) => { t.wrapMethod(n, H(dg, e)) }) } function dg(t, e) { const n = fg(t); return n && n.setOutputEnd((e || this).count()), e } function fg(t) { const e = (t.ecModel || {}).scheduler; const n = e && e.getPipeline(t.uid); if (n) { let i = n.currentTask; if (i) { const r = i.agentStubMap; r && (i = r.get(t.uid)) } return i } }R(sg, lf), R(sg, td), zo(sg, Tp); const gg = (function () { function t() { this.group = new Cr(), this.uid = gc('viewComponent') } return t.prototype.init = function (t, e) {}, t.prototype.render = function (t, e, n, i) {}, t.prototype.dispose = function (t, e) {}, t.prototype.updateView = function (t, e, n, i) {}, t.prototype.updateLayout = function (t, e, n, i) {}, t.prototype.updateVisual = function (t, e, n, i) {}, t.prototype.toggleBlurSeries = function (t, e, n) {}, t.prototype.eachRendered = function (t) { const e = this.group; e && e.traverse(t) }, t }()); function yg() { const t = So(); return function (e) { const n = t(e); const i = e.pipelineContext; const r = !!n.large; const o = !!n.progressiveRender; const a = n.large = !(!i || !i.large); const s = n.progressiveRender = !(!i || !i.progressiveRender); return !(r === a && o === s) && 'reset' } }Eo(gg), Go(gg); const vg = So(); const mg = yg(); const xg = (function () { function t() { this.group = new Cr(), this.uid = gc('viewChart'), this.renderTask = hf({ plan: wg, reset: Sg }), this.renderTask.context = { view: this } } return t.prototype.init = function (t, e) {}, t.prototype.render = function (t, e, n, i) {}, t.prototype.highlight = function (t, e, n, i) { const r = t.getData(i && i.dataType); r && bg(r, i, 'emphasis') }, t.prototype.downplay = function (t, e, n, i) { const r = t.getData(i && i.dataType); r && bg(r, i, 'normal') }, t.prototype.remove = function (t, e) { this.group.removeAll() }, t.prototype.dispose = function (t, e) {}, t.prototype.updateView = function (t, e, n, i) { this.render(t, e, n, i) }, t.prototype.updateLayout = function (t, e, n, i) { this.render(t, e, n, i) }, t.prototype.updateVisual = function (t, e, n, i) { this.render(t, e, n, i) }, t.prototype.eachRendered = function (t) { Vh(this.group, t) }, t.markUpdateMethod = function (t, e) { vg(t).updateMethod = e }, t.protoInitialize = void (t.prototype.type = 'chart'), t }()); function _g(t, e, n) { t && Fl(t) && (e === 'emphasis' ? _l : bl)(t, n) } function bg(t, e, n) { const i = wo(t, e); const r = e && e.highlightKey != null ? (function (t) { let e = Xs[t]; return e == null && Us <= 32 && (e = Xs[t] = Us++), e }(e.highlightKey)) : null; i != null ? E(ho(i), (e) => { _g(t.getItemGraphicEl(e), n, r) }) : t.eachItemGraphicEl((t) => { _g(t, n, r) }) } function wg(t) { return mg(t.model) } function Sg(t) { const e = t.model; const n = t.ecModel; const i = t.api; const r = t.payload; const o = e.pipelineContext.progressiveRender; const a = t.view; const s = r && vg(r).updateMethod; const l = o ? 'incrementalPrepareRender' : s && a[s] ? s : 'render'; return l !== 'render' && a[l](e, n, i, r), Mg[l] }Eo(xg), Go(xg); var Mg = { incrementalPrepareRender: { progress(t, e) { e.view.incrementalRender(t, e.model, e.ecModel, e.api, e.payload) } }, render: { forceFirstProgress: !0, progress(t, e) { e.view.render(e.model, e.ecModel, e.api, e.payload) } } }; const Ig = '\0__throttleOriginMethod'; const Tg = '\0__throttleRate'; const Cg = '\0__throttleType'; function Dg(t, e, n) { let i; let r; let o; let a; let s; let l = 0; let u = 0; let h = null; function c() { u = (new Date()).getTime(), h = null, t.apply(o, a || []) }e = e || 0; const p = function () { for (var t = [], p = 0; p < arguments.length; p++)t[p] = arguments[p]; i = (new Date()).getTime(), o = this, a = t; const d = s || e; const f = s || n; s = null, r = i - (f ? l : u) - d, clearTimeout(h), f ? h = setTimeout(c, d) : r >= 0 ? c() : h = setTimeout(c, -r), l = i }; return p.clear = function () { h && (clearTimeout(h), h = null) }, p.debounceNextCall = function (t) { s = t }, p } function Ag(t, e, n, i) { + let r = t[e]; if (r) { + const o = r[Ig] || r; const a = r[Cg]; if (r[Tg] !== n || a !== i) { + if (n == null || !i) + return t[e] = o; (r = t[e] = Dg(o, n, i === 'debounce'))[Ig] = o, r[Cg] = i, r[Tg] = n + } return r + } + } function kg(t, e) { const n = t[e]; n && n[Ig] && (n.clear && n.clear(), t[e] = n[Ig]) } const Lg = So(); const Pg = { itemStyle: Wo(hc, !0), lineStyle: Wo(sc, !0) }; const Og = { lineStyle: 'stroke', itemStyle: 'fill' }; function Rg(t, e) { return t.visualStyleMapper || Pg[e] || (console.warn(`Unkown style type '${e}'.`), Pg.itemStyle) } function Ng(t, e) { return t.visualDrawType || Og[e] || (console.warn(`Unkown style type '${e}'.`), 'fill') } const Eg = { createOnAllSeries: !0, performRawSeries: !0, reset(t, e) { + const n = t.getData(); const i = t.visualStyleAccessPath || 'itemStyle'; const r = t.getModel(i); const o = Rg(t, i)(r); const a = r.getShallow('decal'); a && (n.setVisual('decal', a), a.dirty = !0); const s = Ng(t, i); const l = o[s]; const u = U(l) ? l : null; const h = o.fill === 'auto' || o.stroke === 'auto'; if (!o[s] || u || h) { const c = t.getColorFromPalette(t.name, null, e.getSeriesCount()); o[s] || (o[s] = c, n.setVisual('colorFromPalette', !0)), o.fill = o.fill === 'auto' || U(o.fill) ? c : o.fill, o.stroke = o.stroke === 'auto' || U(o.stroke) ? c : o.stroke } if (n.setVisual('style', o), n.setVisual('drawType', s), !e.isSeriesFiltered(t) && u) + return n.setVisual('colorFromPalette', !1), { dataEach(e, n) { const i = t.getDataParams(n); const r = A({}, o); r[s] = u(i), e.setItemVisual(n, 'style', r) } } + } }; const zg = new dc(); const Vg = { createOnAllSeries: !0, performRawSeries: !0, reset(t, e) { if (!t.ignoreStyleOnData && !e.isSeriesFiltered(t)) { const n = t.getData(); const i = t.visualStyleAccessPath || 'itemStyle'; const r = Rg(t, i); const o = n.getVisual('drawType'); return { dataEach: n.hasItemOption ? function (t, e) { const n = t.getRawDataItem(e); if (n && n[i]) { zg.option = n[i]; const a = r(zg); A(t.ensureUniqueItemVisual(e, 'style'), a), zg.option.decal && (t.setItemVisual(e, 'decal', zg.option.decal), zg.option.decal.dirty = !0), o in a && t.setItemVisual(e, 'colorFromPalette', !1) } } : null } } } }; const Bg = { performRawSeries: !0, overallReset(t) { const e = ft(); t.eachSeries((t) => { const n = t.getColorBy(); if (!t.isColorBySeries()) { const i = `${t.type }-${ n}`; let r = e.get(i); r || (r = {}, e.set(i, r)), Lg(t).scope = r } }), t.eachSeries((e) => { if (!e.isColorBySeries() && !t.isSeriesFiltered(e)) { const n = e.getRawData(); const i = {}; const r = e.getData(); const o = Lg(e).scope; const a = e.visualStyleAccessPath || 'itemStyle'; const s = Ng(e, a); r.each((t) => { const e = r.getRawIndex(t); i[e] = t }), n.each((t) => { const a = i[t]; if (r.getItemVisual(a, 'colorFromPalette')) { const l = r.ensureUniqueItemVisual(a, 'style'); const u = n.getName(t) || t + ""; const h = n.count(); l[s] = e.getColorFromPalette(u, o, h) } }) } }) } }; const Fg = Math.PI; const Gg = (function () { + function t(t, e, n, i) { this._stageTaskMap = ft(), this.ecInstance = t, this.api = e, n = this._dataProcessorHandlers = n.slice(), i = this._visualHandlers = i.slice(), this._allHandlers = n.concat(i) } return t.prototype.restoreData = function (t, e) { t.restoreData(e), this._stageTaskMap.each((t) => { const e = t.overallTask; e && e.dirty() }) }, t.prototype.getPerformArgs = function (t, e) { if (t.__pipeline) { const n = this._pipelineMap.get(t.__pipeline.id); const i = n.context; const r = !e && n.progressiveEnabled && (!i || i.progressiveRender) && t.__idxInPipeline > n.blockIndex ? n.step : null; const o = i && i.modDataCount; return { step: r, modBy: o != null ? Math.ceil(o / r) : null, modDataCount: o } } }, t.prototype.getPipeline = function (t) { return this._pipelineMap.get(t) }, t.prototype.updateStreamModes = function (t, e) { const n = this._pipelineMap.get(t.uid); const i = t.getData().count(); const r = n.progressiveEnabled && e.incrementalPrepareRender && i >= n.threshold; const o = t.get('large') && i >= t.get('largeThreshold'); const a = t.get('progressiveChunkMode') === 'mod' ? i : null; t.pipelineContext = n.context = { progressiveRender: r, modDataCount: a, large: o } }, t.prototype.restorePipelines = function (t) { const e = this; const n = e._pipelineMap = ft(); t.eachSeries((t) => { const i = t.getProgressive(); const r = t.uid; n.set(r, { id: r, head: null, tail: null, threshold: t.getProgressiveThreshold(), progressiveEnabled: i && !(t.preventIncremental && t.preventIncremental()), blockIndex: -1, step: Math.round(i || 700), count: 0 }), e._pipe(t, t.dataTask) }) }, t.prototype.prepareStageTasks = function () { const t = this._stageTaskMap; const e = this.api.getModel(); const n = this.api; E(this._allHandlers, function (i) { const r = t.get(i.uid) || t.set(i.uid, {}); lt(!(i.reset && i.overallReset), ''), i.reset && this._createSeriesStageTask(i, r, e, n), i.overallReset && this._createOverallStageTask(i, r, e, n) }, this) }, t.prototype.prepareView = function (t, e, n, i) { const r = t.renderTask; const o = r.context; o.model = e, o.ecModel = n, o.api = i, r.__block = !t.incrementalPrepareRender, this._pipe(e, r) }, t.prototype.performDataProcessorTasks = function (t, e) { this._performStageTasks(this._dataProcessorHandlers, t, e, { block: !0 }) }, t.prototype.performVisualTasks = function (t, e, n) { this._performStageTasks(this._visualHandlers, t, e, n) }, t.prototype._performStageTasks = function (t, e, n, i) { + i = i || {}; let r = !1; const o = this; function a(t, e) { return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id)) }E(t, (t, s) => { + if (!i.visualType || i.visualType === t.visualType) { + const l = o._stageTaskMap.get(t.uid); const u = l.seriesTaskMap; const h = l.overallTask; if (h) { let c; const p = h.agentStubMap; p.each((t) => { a(i, t) && (t.dirty(), c = !0) }), c && h.dirty(), o.updatePayload(h, n); const d = o.getPerformArgs(h, i.block); p.each((t) => { t.perform(d) }), h.perform(d) && (r = !0) } + else { + u && u.each((s, l) => { a(i, s) && s.dirty(); const u = o.getPerformArgs(s, i.block); u.skip = !t.performRawSeries && e.isSeriesFiltered(s.context.model), o.updatePayload(s, n), s.perform(u) && (r = !0) }) + } + } + }), this.unfinished = r || this.unfinished + }, t.prototype.performSeriesTasks = function (t) { let e; t.eachSeries((t) => { e = t.dataTask.perform() || e }), this.unfinished = e || this.unfinished }, t.prototype.plan = function () { this._pipelineMap.each((t) => { let e = t.tail; do { if (e.__block) { t.blockIndex = e.__idxInPipeline; break }e = e.getUpstream() } while (e) }) }, t.prototype.updatePayload = function (t, e) { e !== 'remain' && (t.context.payload = e) }, t.prototype._createSeriesStageTask = function (t, e, n, i) { const r = this; const o = e.seriesTaskMap; const a = e.seriesTaskMap = ft(); const s = t.seriesType; const l = t.getTargetSeries; function u(e) { const s = e.uid; const l = a.set(s, o && o.get(s) || hf({ plan: Xg, reset: Zg, count: Kg })); l.context = { model: e, ecModel: n, api: i, useClearVisual: t.isVisual && !t.isLayout, plan: t.plan, reset: t.reset, scheduler: r }, r._pipe(e, l) }t.createOnAllSeries ? n.eachRawSeries(u) : s ? n.eachRawSeriesByType(s, u) : l && l(n, i).each(u) }, t.prototype._createOverallStageTask = function (t, e, n, i) { const r = this; const o = e.overallTask = e.overallTask || hf({ reset: Wg }); o.context = { ecModel: n, api: i, overallReset: t.overallReset, scheduler: r }; const a = o.agentStubMap; const s = o.agentStubMap = ft(); const l = t.seriesType; const u = t.getTargetSeries; let h = !0; let c = !1; function d(t) { const e = t.uid; const n = s.set(e, a && a.get(e) || (c = !0, hf({ reset: Hg, onDirty: Ug }))); n.context = { model: t, overallProgress: h }, n.agent = o, n.__block = h, r._pipe(t, n) }lt(!t.createOnAllSeries, ''), l ? n.eachRawSeriesByType(l, d) : u ? u(n, i).each(d) : (h = !1, E(n.getSeries(), d)), c && o.dirty() }, t.prototype._pipe = function (t, e) { const n = t.uid; const i = this._pipelineMap.get(n); !i.head && (i.head = e), i.tail && i.tail.pipe(e), i.tail = e, e.__idxInPipeline = i.count++, e.__pipeline = i }, t.wrapStageHandler = function (t, e) { return U(t) && (t = { overallReset: t, seriesType: $g(t) }), t.uid = gc('stageHandler'), e && (t.visualType = e), t }, t + }()); function Wg(t) { t.overallReset(t.ecModel, t.api, t.payload) } function Hg(t) { return t.overallProgress && Yg } function Yg() { this.agent.dirty(), this.getDownstream().dirty() } function Ug() { this.agent && this.agent.dirty() } function Xg(t) { return t.plan ? t.plan(t.model, t.ecModel, t.api, t.payload) : null } function Zg(t) { t.useClearVisual && t.data.clearAllVisual(); const e = t.resetDefines = ho(t.reset(t.model, t.ecModel, t.api, t.payload)); return e.length > 1 ? z(e, (t, e) => { return qg(e) }) : jg } var jg = qg(0); function qg(t) { + return function (e, n) { + const i = n.data; const r = n.resetDefines[t]; if (r && r.dataEach) { + for (let o = e.start; o < e.end; o++)r.dataEach(i, o) + } + else { + r && r.progress && r.progress(e, i) + } + } + } function Kg(t) { return t.data.count() } function $g(t) { + Jg = null; try { t(Qg, ty) } + catch (t) {} return Jg + } let Jg; var Qg = {}; var ty = {}; function ey(t, e) { for (const n in e.prototype)t[n] = xt }ey(Qg, id), ey(ty, ld), Qg.eachSeriesByType = Qg.eachRawSeriesByType = function (t) { Jg = t }, Qg.eachComponent = function (t) { t.mainType === 'series' && t.subType && (Jg = t.subType) }; const ny = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF']; const iy = { color: ny, colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], ny] }; const ry = '#B9B8CE'; const oy = '#100C2A'; const ay = function () { return { axisLine: { lineStyle: { color: ry } }, splitLine: { lineStyle: { color: '#484753' } }, splitArea: { areaStyle: { color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)'] } }, minorSplitLine: { lineStyle: { color: '#20203B' } } } }; const sy = ['#4992ff', '#7cffb2', '#fddd60', '#ff6e76', '#58d9f9', '#05c091', '#ff8a45', '#8d48e3', '#dd79ff']; const ly = { darkMode: !0, color: sy, backgroundColor: oy, axisPointer: { lineStyle: { color: '#817f91' }, crossStyle: { color: '#817f91' }, label: { color: '#fff' } }, legend: { textStyle: { color: ry } }, textStyle: { color: ry }, title: { textStyle: { color: '#EEF1FA' }, subtextStyle: { color: '#B9B8CE' } }, toolbox: { iconStyle: { borderColor: ry } }, dataZoom: { borderColor: '#71708A', textStyle: { color: ry }, brushStyle: { color: 'rgba(135,163,206,0.3)' }, handleStyle: { color: '#353450', borderColor: '#C5CBE3' }, moveHandleStyle: { color: '#B0B6C3', opacity: 0.3 }, fillerColor: 'rgba(135,163,206,0.2)', emphasis: { handleStyle: { borderColor: '#91B7F2', color: '#4D587D' }, moveHandleStyle: { color: '#636D9A', opacity: 0.7 } }, dataBackground: { lineStyle: { color: '#71708A', width: 1 }, areaStyle: { color: '#71708A' } }, selectedDataBackground: { lineStyle: { color: '#87A3CE' }, areaStyle: { color: '#87A3CE' } } }, visualMap: { textStyle: { color: ry } }, timeline: { lineStyle: { color: ry }, label: { color: ry }, controlStyle: { color: ry, borderColor: ry } }, calendar: { itemStyle: { color: oy }, dayLabel: { color: ry }, monthLabel: { color: ry }, yearLabel: { color: ry } }, timeAxis: ay(), logAxis: ay(), valueAxis: ay(), categoryAxis: ay(), line: { symbol: 'circle' }, graph: { color: sy }, gauge: { title: { color: ry }, axisLine: { lineStyle: { color: [[1, 'rgba(207,212,219,0.2)']] } }, axisLabel: { color: ry }, detail: { color: '#EEF1FA' } }, candlestick: { itemStyle: { color: '#f64e56', color0: '#54ea92', borderColor: '#f64e56', borderColor0: '#54ea92' } } }; ly.categoryAxis.splitLine.show = !1; const uy = (function () { + function t() {} return t.prototype.normalizeQuery = function (t) { + const e = {}; const n = {}; const i = {}; if (X(t)) { const r = No(t); e.mainType = r.main || null, e.subType = r.sub || null } + else { const o = ['Index', 'Name', 'Id']; const a = { name: 1, dataIndex: 1, dataType: 1 }; E(t, (t, r) => { for (var s = !1, l = 0; l < o.length; l++) { const u = o[l]; const h = r.lastIndexOf(u); if (h > 0 && h === r.length - u.length) { const c = r.slice(0, h); c !== 'data' && (e.mainType = c, e[u.toLowerCase()] = t, s = !0) } }a.hasOwnProperty(r) && (n[r] = t, s = !0), s || (i[r] = t) }) } return { cptQuery: e, dataQuery: n, otherQuery: i } + }, t.prototype.filter = function (t, e) { + const n = this.eventInfo; if (!n) + return !0; const i = n.targetEl; const r = n.packedEvent; const o = n.model; const a = n.view; if (!o || !a) + return !0; const s = e.cptQuery; const l = e.dataQuery; return u(s, o, 'mainType') && u(s, o, 'subType') && u(s, o, 'index', 'componentIndex') && u(s, o, 'name') && u(s, o, 'id') && u(l, r, 'name') && u(l, r, 'dataIndex') && u(l, r, 'dataType') && (!a.filterForExposedEvent || a.filterForExposedEvent(t, e.otherQuery, i, r)); function u(t, e, n, i) { return t[n] == null || e[i || n] === t[n] } + }, t.prototype.afterTrigger = function () { this.eventInfo = null }, t + }()); const hy = ['symbol', 'symbolSize', 'symbolRotate', 'symbolOffset']; const cy = hy.concat(['symbolKeepAspect']); const py = { createOnAllSeries: !0, performRawSeries: !0, reset(t, e) { const n = t.getData(); if (t.legendIcon && n.setVisual('legendIcon', t.legendIcon), t.hasSymbolVisual) { for (var i = {}, r = {}, o = !1, a = 0; a < hy.length; a++) { const s = hy[a]; const l = t.get(s); U(l) ? (o = !0, r[s] = l) : i[s] = l } if (i.symbol = i.symbol || t.defaultSymbol, n.setVisual(A({ legendIcon: t.legendIcon || i.symbol, symbolKeepAspect: t.get('symbolKeepAspect') }, i)), !e.isSeriesFiltered(t)) { const u = G(r); return { dataEach: o ? function (e, n) { for (let i = t.getRawValue(n), o = t.getDataParams(n), a = 0; a < u.length; a++) { const s = u[a]; e.setItemVisual(n, s, r[s](i, o)) } } : null } } } } }; const dy = { createOnAllSeries: !0, performRawSeries: !0, reset(t, e) { + if (t.hasSymbolVisual && !e.isSeriesFiltered(t)) + return { dataEach: t.getData().hasItemOption ? function (t, e) { for (let n = t.getItemModel(e), i = 0; i < cy.length; i++) { const r = cy[i]; const o = n.getShallow(r, !0); o != null && t.setItemVisual(e, r, o) } } : null } + } }; function fy(t, e, n) { switch (n) { case 'color':return t.getItemVisual(e, 'style')[t.getVisual('drawType')]; case 'opacity':return t.getItemVisual(e, 'style').opacity; case 'symbol':case 'symbolSize':case 'liftZ':return t.getItemVisual(e, n) } } function gy(t, e) { switch (e) { case 'color':return t.getVisual('style')[t.getVisual('drawType')]; case 'opacity':return t.getVisual('style').opacity; case 'symbol':case 'symbolSize':case 'liftZ':return t.getVisual(e) } } function yy(t, e, n, i) { switch (n) { case 'color':t.ensureUniqueItemVisual(e, 'style')[t.getVisual('drawType')] = i, t.setItemVisual(e, 'colorFromPalette', !1); break; case 'opacity':t.ensureUniqueItemVisual(e, 'style').opacity = i; break; case 'symbol':case 'symbolSize':case 'liftZ':t.setItemVisual(e, n, i) } } function vy(t, e) { function n(e, n) { const i = []; return e.eachComponent({ mainType: 'series', subType: t, query: n }, (t) => { i.push(t.seriesIndex) }), i }E([[`${t}ToggleSelect`, 'toggleSelect'], [`${t}Select`, 'select'], [`${t}UnSelect`, 'unselect']], (t) => { e(t[0], (e, i, r) => { e = A({}, e), r.dispatchAction(A(e, { type: t[1], seriesIndex: n(i, e) })) }) }) } function my(t, e, n, i, r) { + const o = t + e; n.isSilent(o) || i.eachComponent({ mainType: 'series', subType: 'pie' }, (t) => { + for (let e = t.seriesIndex, i = t.option.selectedMap, a = r.selected, s = 0; s < a.length; s++) { + if (a[s].seriesIndex === e) { const l = t.getData(); const u = wo(l, r.fromActionPayload); n.trigger(o, { type: o, seriesId: t.id, name: Y(u) ? l.getName(u[0]) : l.getName(u), selected: X(i) ? i : A({}, i) }) } + } + }) + } function xy(t, e, n) { for (var i; t && (!e(t) || (i = t, !n));)t = t.__hostTarget || t.parent; return i } let _y = Math.round(9 * Math.random()); const by = typeof Object.defineProperty == 'function'; const wy = (function () { + function t() { this._id = `__ec_inner_${_y++}` } return t.prototype.get = function (t) { return this._guard(t)[this._id] }, t.prototype.set = function (t, e) { const n = this._guard(t); return by ? Object.defineProperty(n, this._id, { value: e, enumerable: !1, configurable: !0 }) : n[this._id] = e, this }, t.prototype.delete = function (t) { return !!this.has(t) && (delete this._guard(t)[this._id], !0) }, t.prototype.has = function (t) { return !!this._guard(t)[this._id] }, t.prototype._guard = function (t) { + if (t !== Object(t)) + throw new TypeError('Value of WeakMap is not a non-null object.'); return t + }, t + }()); const Sy = gs.extend({ type: 'triangle', shape: { cx: 0, cy: 0, width: 0, height: 0 }, buildPath(t, e) { const n = e.cx; const i = e.cy; const r = e.width / 2; const o = e.height / 2; t.moveTo(n, i - o), t.lineTo(n + r, i + o), t.lineTo(n - r, i + o), t.closePath() } }); const My = gs.extend({ type: 'diamond', shape: { cx: 0, cy: 0, width: 0, height: 0 }, buildPath(t, e) { const n = e.cx; const i = e.cy; const r = e.width / 2; const o = e.height / 2; t.moveTo(n, i - o), t.lineTo(n + r, i), t.lineTo(n, i + o), t.lineTo(n - r, i), t.closePath() } }); const Iy = gs.extend({ type: 'pin', shape: { x: 0, y: 0, width: 0, height: 0 }, buildPath(t, e) { const n = e.x; const i = e.y; const r = e.width / 5 * 3; const o = Math.max(r, e.height); const a = r / 2; const s = a * a / (o - a); const l = i - o + a + s; const u = Math.asin(s / a); const h = Math.cos(u) * a; const c = Math.sin(u); const p = Math.cos(u); const d = 0.6 * a; const f = 0.7 * a; t.moveTo(n - h, l + s), t.arc(n, l, a, Math.PI - u, 2 * Math.PI + u), t.bezierCurveTo(n + h - c * d, l + s + p * d, n, i - f, n, i), t.bezierCurveTo(n, i - f, n - h + c * d, l + s + p * d, n - h, l + s), t.closePath() } }); const Ty = gs.extend({ type: 'arrow', shape: { x: 0, y: 0, width: 0, height: 0 }, buildPath(t, e) { const n = e.height; const i = e.width; const r = e.x; const o = e.y; const a = i / 3 * 2; t.moveTo(r, o), t.lineTo(r + a, o + n), t.lineTo(r, o + n / 4 * 3), t.lineTo(r - a, o + n), t.lineTo(r, o), t.closePath() } }); const Cy = { line(t, e, n, i, r) { r.x1 = t, r.y1 = e + i / 2, r.x2 = t + n, r.y2 = e + i / 2 }, rect(t, e, n, i, r) { r.x = t, r.y = e, r.width = n, r.height = i }, roundRect(t, e, n, i, r) { r.x = t, r.y = e, r.width = n, r.height = i, r.r = Math.min(n, i) / 4 }, square(t, e, n, i, r) { const o = Math.min(n, i); r.x = t, r.y = e, r.width = o, r.height = o }, circle(t, e, n, i, r) { r.cx = t + n / 2, r.cy = e + i / 2, r.r = Math.min(n, i) / 2 }, diamond(t, e, n, i, r) { r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i }, pin(t, e, n, i, r) { r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i }, arrow(t, e, n, i, r) { r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i }, triangle(t, e, n, i, r) { r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i } }; const Dy = {}; E({ line: zu, rect: Cs, roundRect: Cs, square: Cs, circle: hu, diamond: My, pin: Iy, arrow: Ty, triangle: Sy }, (t, e) => { Dy[e] = new t() }); const Ay = gs.extend({ type: 'symbol', shape: { symbolType: '', x: 0, y: 0, width: 0, height: 0 }, calculateTextPosition(t, e, n) { const i = yr(t, e, n); const r = this.shape; return r && r.symbolType === 'pin' && e.position === 'inside' && (i.y = n.y + 0.4 * n.height), i }, buildPath(t, e, n) { let i = e.symbolType; if (i !== 'none') { let r = Dy[i]; r || (r = Dy[i = 'rect']), Cy[i](e.x, e.y, e.width, e.height, r.shape), r.buildPath(t, r.shape, n) } } }); function ky(t, e) { if (this.type !== 'image') { const n = this.style; this.__isEmptyBrush ? (n.stroke = t, n.fill = e || '#fff', n.lineWidth = 2) : this.shape.symbolType === 'line' ? n.stroke = t : n.fill = t, this.markRedraw() } } function Ly(t, e, n, i, r, o, a) { let s; const l = t.indexOf('empty') === 0; return l && (t = t.substr(5, 1).toLowerCase() + t.substr(6)), (s = t.indexOf('image://') === 0 ? _h(t.slice(8), new sr(e, n, i, r), a ? 'center' : 'cover') : t.indexOf('path://') === 0 ? xh(t.slice(7), {}, new sr(e, n, i, r), a ? 'center' : 'cover') : new Ay({ shape: { symbolType: t, x: e, y: n, width: i, height: r } })).__isEmptyBrush = l, s.setColor = ky, o && s.setColor(o), s } function Py(t) { return Y(t) || (t = [+t, +t]), [t[0] || 0, t[1] || 0] } function Oy(t, e) { + if (t != null) + return Y(t) || (t = [t, t]), [Er(t[0], e[0]) || 0, Er(rt(t[1], t[0]), e[1]) || 0] + } function Ry(t) { return isFinite(t) } function Ny(t, e, n) { for (var i = e.type === 'radial' ? (function (t, e, n) { const i = n.width; const r = n.height; const o = Math.min(i, r); let a = e.x == null ? 0.5 : e.x; let s = e.y == null ? 0.5 : e.y; let l = e.r == null ? 0.5 : e.r; return e.global || (a = a * i + n.x, s = s * r + n.y, l *= o), a = Ry(a) ? a : 0.5, s = Ry(s) ? s : 0.5, l = l >= 0 && Ry(l) ? l : 0.5, t.createRadialGradient(a, s, 0, a, s, l) }(t, e, n)) : (function (t, e, n) { let i = e.x == null ? 0 : e.x; let r = e.x2 == null ? 1 : e.x2; let o = e.y == null ? 0 : e.y; let a = e.y2 == null ? 0 : e.y2; return e.global || (i = i * n.width + n.x, r = r * n.width + n.x, o = o * n.height + n.y, a = a * n.height + n.y), i = Ry(i) ? i : 0, r = Ry(r) ? r : 1, o = Ry(o) ? o : 0, a = Ry(a) ? a : 0, t.createLinearGradient(i, o, r, a) }(t, e, n)), r = e.colorStops, o = 0; o < r.length; o++)i.addColorStop(r[o].offset, r[o].color); return i } function Ey(t) { return Number.parseInt(t, 10) } function zy(t, e, n) { + const i = ['width', 'height'][e]; const r = ['clientWidth', 'clientHeight'][e]; const o = ['paddingLeft', 'paddingTop'][e]; const a = ['paddingRight', 'paddingBottom'][e]; if (n[i] != null && n[i] !== 'auto') + return Number.parseFloat(n[i]); const s = document.defaultView.getComputedStyle(t); return (t[r] || Ey(s[i]) || Ey(t.style[i])) - (Ey(s[o]) || 0) - (Ey(s[a]) || 0) | 0 + } function Vy(t) { let e; let n; const i = t.style; let r = i.lineDash && i.lineWidth > 0 && (e = i.lineDash, n = i.lineWidth, e && e !== 'solid' && n > 0 ? e === 'dashed' ? [4 * n, 2 * n] : e === 'dotted' ? [n] : j(e) ? [e] : Y(e) ? e : null : null); let o = i.lineDashOffset; if (r) { const a = i.strokeNoScale && t.getLineScale ? t.getLineScale() : 1; a && a !== 1 && (r = z(r, (t) => { return t / a }), o /= a) } return [r, o] } const By = new qa(!0); function Fy(t) { const e = t.stroke; return !(e == null || e === 'none' || !(t.lineWidth > 0)) } function Gy(t) { return typeof t == 'string' && t !== 'none' } function Wy(t) { const e = t.fill; return e != null && e !== 'none' } function Hy(t, e) { + if (e.fillOpacity != null && e.fillOpacity !== 1) { const n = t.globalAlpha; t.globalAlpha = e.fillOpacity * e.opacity, t.fill(), t.globalAlpha = n } + else { + t.fill() + } + } function Yy(t, e) { + if (e.strokeOpacity != null && e.strokeOpacity !== 1) { const n = t.globalAlpha; t.globalAlpha = e.strokeOpacity * e.opacity, t.stroke(), t.globalAlpha = n } + else { + t.stroke() + } + } function Uy(t, e, n) { const i = Zo(e.image, e.__image, n); if (qo(i)) { const r = t.createPattern(i, e.repeat || 'repeat'); if (typeof DOMMatrix == 'function' && r && r.setTransform) { const o = new DOMMatrix(); o.translateSelf(e.x || 0, e.y || 0), o.rotateSelf(0, 0, (e.rotation || 0) * _t), o.scaleSelf(e.scaleX || 1, e.scaleY || 1), r.setTransform(o) } return r } } const Xy = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY']; const Zy = [['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; function jy(t, e, n, i, r) { + let o = !1; if (!i && e === (n = n || {})) + return !1; if (i || e.opacity !== n.opacity) { $y(t, r), o = !0; const a = Math.max(Math.min(e.opacity, 1), 0); t.globalAlpha = isNaN(a) ? ua.opacity : a }(i || e.blend !== n.blend) && (o || ($y(t, r), o = !0), t.globalCompositeOperation = e.blend || ua.blend); for (let s = 0; s < Xy.length; s++) { const l = Xy[s]; (i || e[l] !== n[l]) && (o || ($y(t, r), o = !0), t[l] = t.dpr * (e[l] || 0)) } return (i || e.shadowColor !== n.shadowColor) && (o || ($y(t, r), o = !0), t.shadowColor = e.shadowColor || ua.shadowColor), o + } function qy(t, e, n, i, r) { + const o = Jy(e, r.inHover); const a = i ? null : n && Jy(n, r.inHover) || {}; if (o === a) + return !1; let s = jy(t, o, a, i, r); if ((i || o.fill !== a.fill) && (s || ($y(t, r), s = !0), Gy(o.fill) && (t.fillStyle = o.fill)), (i || o.stroke !== a.stroke) && (s || ($y(t, r), s = !0), Gy(o.stroke) && (t.strokeStyle = o.stroke)), (i || o.opacity !== a.opacity) && (s || ($y(t, r), s = !0), t.globalAlpha = o.opacity == null ? 1 : o.opacity), e.hasStroke()) { const l = o.lineWidth / (o.strokeNoScale && e.getLineScale ? e.getLineScale() : 1); t.lineWidth !== l && (s || ($y(t, r), s = !0), t.lineWidth = l) } for (let u = 0; u < Zy.length; u++) { const h = Zy[u]; const c = h[0]; (i || o[c] !== a[c]) && (s || ($y(t, r), s = !0), t[c] = o[c] || h[1]) } return s + } function Ky(t, e) { const n = e.transform; const i = t.dpr || 1; n ? t.setTransform(i * n[0], i * n[1], i * n[2], i * n[3], i * n[4], i * n[5]) : t.setTransform(i, 0, 0, i, 0, 0) } function $y(t, e) { e.batchFill && t.fill(), e.batchStroke && t.stroke(), e.batchFill = '', e.batchStroke = '' } function Jy(t, e) { return e && t.__hoverStyle || t.style } function Qy(t, e) { tv(t, e, { inHover: !1, viewWidth: 0, viewHeight: 0 }, !0) } function tv(t, e, n, i) { + const r = e.transform; if (!e.shouldBePainted(n.viewWidth, n.viewHeight, !1, !1)) + return e.__dirty &= -2, void (e.__isRendered = !1); const o = e.__clipPaths; const s = n.prevElClipPaths; let l = !1; let u = !1; if (s && !(function (t, e) { + if (t === e || !t && !e) + return !1; if (!t || !e || t.length !== e.length) + return !0; for (let n = 0; n < t.length; n++) { + if (t[n] !== e[n]) + return !0 + } return !1 + }(o, s)) || (s && s.length && ($y(t, n), t.restore(), u = l = !0, n.prevElClipPaths = null, n.allClipped = !1, n.prevEl = null), o && o.length && ($y(t, n), t.save(), (function (t, e, n) { for (var i = !1, r = 0; r < t.length; r++) { const o = t[r]; i = i || o.isZeroArea(), Ky(e, o), e.beginPath(), o.buildPath(e, o.shape), e.clip() }n.allClipped = i }(o, t, n)), l = !0), n.prevElClipPaths = o), n.allClipped) { + e.__isRendered = !1 + } + else { + e.beforeBrush && e.beforeBrush(), e.innerBeforeBrush(); const h = n.prevEl; h || (u = l = !0); let c; let p; const d = e instanceof gs && e.autoBatch && (function (t) { const e = Wy(t); const n = Fy(t); return !(t.lineDash || !(+e ^ +n) || e && typeof t.fill != 'string' || n && typeof t.stroke != 'string' || t.strokePercent < 1 || t.strokeOpacity < 1 || t.fillOpacity < 1) }(e.style)); l || (c = r, p = h.transform, c && p ? c[0] !== p[0] || c[1] !== p[1] || c[2] !== p[2] || c[3] !== p[3] || c[4] !== p[4] || c[5] !== p[5] : c || p) ? ($y(t, n), Ky(t, e)) : d || $y(t, n); const f = Jy(e, n.inHover); e instanceof gs + ? (n.lastDrawType !== 1 && (u = !0, n.lastDrawType = 1), qy(t, e, h, u, n), d && (n.batchFill || n.batchStroke) || t.beginPath(), (function (t, e, n, i) { let r; let o = Fy(n); let a = Wy(n); const s = n.strokePercent; const l = s < 1; const u = !e.path; e.silent && !l || !u || e.createPathProxy(); const h = e.path || By; const c = e.__dirty; if (!i) { const p = n.fill; const d = n.stroke; const f = a && !!p.colorStops; const g = o && !!d.colorStops; const y = a && !!p.image; const v = o && !!d.image; let m = void 0; let x = void 0; let _ = void 0; let b = void 0; let w = void 0; (f || g) && (w = e.getBoundingRect()), f && (m = c ? Ny(t, p, w) : e.__canvasFillGradient, e.__canvasFillGradient = m), g && (x = c ? Ny(t, d, w) : e.__canvasStrokeGradient, e.__canvasStrokeGradient = x), y && (_ = c || !e.__canvasFillPattern ? Uy(t, p, e) : e.__canvasFillPattern, e.__canvasFillPattern = _), v && (b = c || !e.__canvasStrokePattern ? Uy(t, d, e) : e.__canvasStrokePattern, e.__canvasStrokePattern = _), f ? t.fillStyle = m : y && (_ ? t.fillStyle = _ : a = !1), g ? t.strokeStyle = x : v && (b ? t.strokeStyle = b : o = !1) } let S; let M; const I = e.getGlobalScale(); h.setScale(I[0], I[1], e.segmentIgnoreThreshold), t.setLineDash && n.lineDash && (S = (r = Vy(e))[0], M = r[1]); let T = !0; (u || 4 & c) && (h.setDPR(t.dpr), l ? h.setContext(null) : (h.setContext(t), T = !1), h.reset(), e.buildPath(h, e.shape, i), h.toStatic(), e.pathUpdated()), T && h.rebuildPath(t, l ? s : 1), S && (t.setLineDash(S), t.lineDashOffset = M), i || (n.strokeFirst ? (o && Yy(t, n), a && Hy(t, n)) : (a && Hy(t, n), o && Yy(t, n))), S && t.setLineDash([]) }(t, e, f, d)), d && (n.batchFill = f.fill || '', n.batchStroke = f.stroke || '')) + : e instanceof vs + ? (n.lastDrawType !== 3 && (u = !0, n.lastDrawType = 3), qy(t, e, h, u, n), (function (t, e, n) { let i; let r = n.text; if (r != null && (r += ''), r) { t.font = n.font || a, t.textAlign = n.textAlign, t.textBaseline = n.textBaseline; let o = void 0; let s = void 0; t.setLineDash && n.lineDash && (o = (i = Vy(e))[0], s = i[1]), o && (t.setLineDash(o), t.lineDashOffset = s), n.strokeFirst ? (Fy(n) && t.strokeText(r, n.x, n.y), Wy(n) && t.fillText(r, n.x, n.y)) : (Wy(n) && t.fillText(r, n.x, n.y), Fy(n) && t.strokeText(r, n.x, n.y)), o && t.setLineDash([]) } }(t, e, f))) + : e instanceof _s + ? (n.lastDrawType !== 2 && (u = !0, n.lastDrawType = 2), (function (t, e, n, i, r) { jy(t, Jy(e, r.inHover), n && Jy(n, r.inHover), i, r) }(t, e, h, u, n)), (function (t, e, n) { + const i = e.__image = Zo(n.image, e.__image, e, e.onload); if (i && qo(i)) { + const r = n.x || 0; const o = n.y || 0; let a = e.getWidth(); let s = e.getHeight(); const l = i.width / i.height; if (a == null && s != null ? a = s * l : s == null && a != null ? s = a / l : a == null && s == null && (a = i.width, s = i.height), n.sWidth && n.sHeight) { var u = n.sx || 0; var h = n.sy || 0; t.drawImage(i, u, h, n.sWidth, n.sHeight, r, o, a, s) } + else if (n.sx && n.sy) { const c = a - (u = n.sx); const p = s - (h = n.sy); t.drawImage(i, u, h, c, p, r, o, a, s) } + else { + t.drawImage(i, r, o, a, s) + } + } + }(t, e, f))) + : e.getTemporalDisplayables && (n.lastDrawType !== 4 && (u = !0, n.lastDrawType = 4), (function (t, e, n) { const i = e.getDisplayables(); const r = e.getTemporalDisplayables(); t.save(); let o; let a; const s = { prevElClipPaths: null, prevEl: null, allClipped: !1, viewWidth: n.viewWidth, viewHeight: n.viewHeight, inHover: n.inHover }; for (o = e.getCursor(), a = i.length; o < a; o++)(h = i[o]).beforeBrush && h.beforeBrush(), h.innerBeforeBrush(), tv(t, h, s, o === a - 1), h.innerAfterBrush(), h.afterBrush && h.afterBrush(), s.prevEl = h; for (let l = 0, u = r.length; l < u; l++) { var h; (h = r[l]).beforeBrush && h.beforeBrush(), h.innerBeforeBrush(), tv(t, h, s, l === u - 1), h.innerAfterBrush(), h.afterBrush && h.afterBrush(), s.prevEl = h }e.clearTemporalDisplayables(), e.notClear = !0, t.restore() }(t, e, n))), d && i && $y(t, n), e.innerAfterBrush(), e.afterBrush && e.afterBrush(), n.prevEl = e, e.__dirty = 0, e.__isRendered = !0 + } + } const ev = new wy(); const nv = new ln(100); const iv = ['symbol', 'symbolSize', 'symbolKeepAspect', 'color', 'backgroundColor', 'dashArrayX', 'dashArrayY', 'maxTileWidth', 'maxTileHeight']; function rv(t, e) { + if (t === 'none') + return null; const n = e.getDevicePixelRatio(); const i = e.getZr(); const r = i.painter.type === 'svg'; t.dirty && ev.delete(t); const o = ev.get(t); if (o) + return o; const a = k(t, { symbol: 'rect', symbolSize: 1, symbolKeepAspect: !0, color: 'rgba(0, 0, 0, 0.2)', backgroundColor: null, dashArrayX: 5, dashArrayY: 5, rotation: 0, maxTileWidth: 512, maxTileHeight: 512 }); a.backgroundColor === 'none' && (a.backgroundColor = null); const s = { repeat: 'repeat' }; return (function (t) { + for (var e, o = [n], s = !0, l = 0; l < iv.length; ++l) { const u = a[iv[l]]; if (u != null && !Y(u) && !X(u) && !j(u) && typeof u != 'boolean') { s = !1; break }o.push(u) } if (s) { e = o.join(',') + (r ? '-svg' : ''); const c = nv.get(e); c && (r ? t.svgElement = c : t.image = c) } let p; const d = av(a.dashArrayX); const f = (function (t) { + if (!t || typeof t == 'object' && t.length === 0) + return [0, 0]; if (j(t)) { const e = Math.ceil(t); return [e, e] } const n = z(t, (t) => { return Math.ceil(t) }); return t.length % 2 ? n.concat(n) : n + }(a.dashArrayY)); const g = ov(a.symbol); const y = z(d, (t) => { return sv(t) }); const v = sv(f); const m = !r && h.createCanvas(); const x = r && { tag: 'g', attrs: {}, key: 'dcl', children: [] }; const _ = (function () { for (var t = 1, e = 0, n = y.length; e < n; ++e)t = ro(t, y[e]); let i = 1; for (e = 0, n = g.length; e < n; ++e)i = ro(i, g[e].length); t *= i; const r = v * y.length * g.length; return { width: Math.max(1, Math.min(t, a.maxTileWidth)), height: Math.max(1, Math.min(r, a.maxTileHeight)) } }()); m && (m.width = _.width * n, m.height = _.height * n, p = m.getContext('2d')), (function () { + p && (p.clearRect(0, 0, m.width, m.height), a.backgroundColor && (p.fillStyle = a.backgroundColor, p.fillRect(0, 0, m.width, m.height))); for (var t = 0, e = 0; e < f.length; ++e)t += f[e]; if (!(t <= 0)) { + for (let o = -v, s = 0, l = 0, u = 0; o < _.height;) { + if (s % 2 == 0) { + for (let h = l / 2 % g.length, c = 0, y = 0, b = 0; c < 2 * _.width;) { + let w = 0; for (e = 0; e < d[u].length; ++e)w += d[u][e]; if (w <= 0) + break; if (y % 2 == 0) { const S = 0.5 * (1 - a.symbolSize); const M = c + d[u][y] * S; const I = o + f[s] * S; const T = d[u][y] * a.symbolSize; const C = f[s] * a.symbolSize; const D = b / 2 % g[h].length; A(M, I, T, C, g[h][D]) }c += d[u][y], ++b, ++y === d[u].length && (y = 0) + }++u === d.length && (u = 0) + }o += f[s], ++l, ++s === f.length && (s = 0) + } + } function A(t, e, o, s, l) { + const u = r ? 1 : n; const h = Ly(l, t * u, e * u, o * u, s * u, a.color, a.symbolKeepAspect); if (r) { const c = i.painter.renderOneToVNode(h); c && x.children.push(c) } + else { + Qy(p, h) + } + } + }()), s && nv.put(e, m || x), t.image = m, t.svgElement = x, t.svgWidth = _.width, t.svgHeight = _.height + }(s)), s.rotation = a.rotation, s.scaleX = s.scaleY = r ? 1 : 1 / n, ev.set(t, s), t.dirty = !1, s + } function ov(t) { + if (!t || t.length === 0) + return [['rect']]; if (X(t)) + return [[t]]; for (var e = !0, n = 0; n < t.length; ++n) { + if (!X(t[n])) { e = !1; break } + } if (e) + return ov([t]); const i = []; for (n = 0; n < t.length; ++n)X(t[n]) ? i.push([t[n]]) : i.push(t[n]); return i + } function av(t) { + if (!t || t.length === 0) + return [[0, 0]]; if (j(t)) + return [[r = Math.ceil(t), r]]; for (var e = !0, n = 0; n < t.length; ++n) { + if (!j(t[n])) { e = !1; break } + } if (e) + return av([t]); const i = []; for (n = 0; n < t.length; ++n) { + if (j(t[n])) { var r = Math.ceil(t[n]); i.push([r, r]) } + else { + (r = z(t[n], (t) => { return Math.ceil(t) })).length % 2 == 1 ? i.push(r.concat(r)) : i.push(r) + } + } return i + } function sv(t) { for (var e = 0, n = 0; n < t.length; ++n)e += t[n]; return t.length % 2 == 1 ? 2 * e : e } const lv = new Xt(); const uv = {}; function hv(t) { return uv[t] } const cv = typeof window != 'undefined'; const fv = { PROCESSOR: { FILTER: 1e3, SERIES_FILTER: 800, STATISTIC: 5e3 }, VISUAL: { LAYOUT: 1e3, PROGRESSIVE_LAYOUT: 1100, GLOBAL: 2e3, CHART: 3e3, POST_CHART_LAYOUT: 4600, COMPONENT: 4e3, BRUSH: 5e3, CHART_ITEM: 4500, ARIA: 6e3, DECAL: 7e3 } }; const gv = /^\w+$/; const yv = '__connectUpdateStatus'; function vv(t) { + return function () { + for (var e = [], n = 0; n < arguments.length; n++)e[n] = arguments[n]; if (!this.isDisposed()) + return xv(this, t, e); Hv(this.id) + } + } function mv(t) { return function () { for (var e = [], n = 0; n < arguments.length; n++)e[n] = arguments[n]; return xv(this, t, e) } } function xv(t, e, n) { return n[0] = n[0] && n[0].toLowerCase(), Xt.prototype[e].apply(t, n) } let _v; let bv; let wv; let Sv; let Mv; let Iv; let Tv; let Cv; let Dv; let Av; let kv; let Lv; let Pv; let Ov; let Rv; let Nv; let Ev; let zv; const Vv = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e }(Xt)); const Bv = Vv.prototype; Bv.on = mv('on'), Bv.off = mv('off'); const Fv = (function (t) { + function e(e, n, i) { const r = t.call(this, new uy()) || this; r._chartsViews = [], r._chartsMap = {}, r._componentsViews = [], r._componentsMap = {}, r._pendingActions = [], i = i || {}, X(n) && (n = qv[n]), r._dom = e; const s = r._zr = Lr(e, { renderer: i.renderer || 'canvas', devicePixelRatio: i.devicePixelRatio, width: i.width, height: i.height, ssr: i.ssr, useDirtyRect: i.useDirtyRect != null && i.useDirtyRect }); r._ssr = i.ssr, r._throttledZrFlush = Dg(W(s.flush, s), 17), (n = T(n)) && Od(n, !0), r._theme = n, r._locale = (function (t) { if (X(t)) { const e = _c[t.toUpperCase()] || {}; return t === 'ZH' || t === 'EN' ? T(e) : C(T(e), T(_c.EN), !1) } return C(T(t), T(_c.EN), !1) }(i.locale || wc)), r._coordSysMgr = new hd(); const l = r._api = Rv(r); function u(t, e) { return t.__prio - e.__prio } return Ie(jv, u), Ie(Xv, u), r._scheduler = new Gg(r, l, Xv, jv), r._messageCenter = new Vv(), r._initEvents(), r.resize = W(r.resize, r), s.animation.on('frame', r._onframe, r), Av(s, r), kv(s, r), ct(r), r } return n(e, t), e.prototype._onframe = function () { + if (!this._disposed) { + zv(this); const t = this._scheduler; if (this.__pendingUpdate) { + const e = this.__pendingUpdate.silent; this.__flagInMainProcess = !0; try { _v(this), Sv.update.call(this, null, this.__pendingUpdate.updateParams) } + catch (t) { throw this.__flagInMainProcess = !1, this.__pendingUpdate = null, t } this._zr.flush(), this.__flagInMainProcess = !1, this.__pendingUpdate = null, Cv.call(this, e), Dv.call(this, e) + } + else if (t.unfinished) { let n = 1; const i = this._model; const r = this._api; t.unfinished = !1; do { const o = +new Date(); t.performSeriesTasks(i), t.performDataProcessorTasks(i), Iv(this, i), t.performVisualTasks(i), Ov(this, this._model, r, 'remain', {}), n -= +new Date() - o } while (n > 0 && t.unfinished); t.unfinished || this._zr.flush() } + } + }, e.prototype.getDom = function () { return this._dom }, e.prototype.getId = function () { return this.id }, e.prototype.getZr = function () { return this._zr }, e.prototype.isSSR = function () { return this._ssr }, e.prototype.setOption = function (t, e, n) { + if (!this.__flagInMainProcess) { + if (this._disposed) { + Hv(this.id) + } + else { + let i, r, o; if (q(e) && (n = e.lazyUpdate, i = e.silent, r = e.replaceMerge, o = e.transition, e = e.notMerge), this.__flagInMainProcess = !0, !this._model || e) { const a = new pd(this._api); const s = this._theme; const l = this._model = new id(); l.scheduler = this._scheduler, l.ssr = this._ssr, l.init(null, null, null, s, this._locale, a) } this._model.setOption(t, { replaceMerge: r }, Zv); const u = { seriesTransition: o, optionChanged: !0 }; if (n) { + this.__pendingUpdate = { silent: i, updateParams: u }, this.__flagInMainProcess = !1, this.getZr().wakeUp() + } + else { + try { _v(this), Sv.update.call(this, null, u) } + catch (t) { throw this.__pendingUpdate = null, this.__flagInMainProcess = !1, t } this._ssr || this._zr.flush(), this.__pendingUpdate = null, this.__flagInMainProcess = !1, Cv.call(this, i), Dv.call(this, i) + } + } + } + }, e.prototype.setTheme = function () {}, e.prototype.getModel = function () { return this._model }, e.prototype.getOption = function () { return this._model && this._model.getOption() }, e.prototype.getWidth = function () { return this._zr.getWidth() }, e.prototype.getHeight = function () { return this._zr.getHeight() }, e.prototype.getDevicePixelRatio = function () { return this._zr.painter.dpr || cv && window.devicePixelRatio || 1 }, e.prototype.getRenderedCanvas = function (t) { return this.renderToCanvas(t) }, e.prototype.renderToCanvas = function (t) { return t = t || {}, this._zr.painter.getRenderedCanvas({ backgroundColor: t.backgroundColor || this._model.get('backgroundColor'), pixelRatio: t.pixelRatio || this.getDevicePixelRatio() }) }, e.prototype.renderToSVGString = function (t) { return t = t || {}, this._zr.painter.renderToString({ useViewBox: t.useViewBox }) }, e.prototype.getSvgDataURL = function () { if (r.svgSupported) { const t = this._zr; return E(t.storage.getDisplayList(), (t) => { t.stopAnimation(null, !0) }), t.painter.toDataURL() } }, e.prototype.getDataURL = function (t) { if (!this._disposed) { const e = (t = t || {}).excludeComponents; const n = this._model; const i = []; const r = this; E(e, (t) => { n.eachComponent({ mainType: t }, (t) => { const e = r._componentsMap[t.__viewId]; e.group.ignore || (i.push(e), e.group.ignore = !0) }) }); const o = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.renderToCanvas(t).toDataURL(`image/${t && t.type || 'png'}`); return E(i, (t) => { t.group.ignore = !1 }), o }Hv(this.id) }, e.prototype.getConnectedDataURL = function (t) { if (!this._disposed) { const e = t.type === 'svg'; const n = this.group; const i = Math.min; const r = Math.max; const o = 1 / 0; if (Jv[n]) { let a = o; let s = o; let l = -1 / 0; let u = -1 / 0; const c = []; const p = t && t.pixelRatio || this.getDevicePixelRatio(); E($v, (o, h) => { if (o.group === n) { const p = e ? o.getZr().painter.getSvgDom().innerHTML : o.renderToCanvas(T(t)); const d = o.getDom().getBoundingClientRect(); a = i(d.left, a), s = i(d.top, s), l = r(d.right, l), u = r(d.bottom, u), c.push({ dom: p, left: d.left, top: d.top }) } }); const d = (l *= p) - (a *= p); const f = (u *= p) - (s *= p); const g = h.createCanvas(); const y = Lr(g, { renderer: e ? 'svg' : 'canvas' }); if (y.resize({ width: d, height: f }), e) { let v = ''; return E(c, (t) => { const e = t.left - a; const n = t.top - s; v += `${t.dom}` }), y.painter.getSvgRoot().innerHTML = v, t.connectedBackgroundColor && y.painter.setBackgroundColor(t.connectedBackgroundColor), y.refreshImmediately(), y.painter.toDataURL() } return t.connectedBackgroundColor && y.add(new Cs({ shape: { x: 0, y: 0, width: d, height: f }, style: { fill: t.connectedBackgroundColor } })), E(c, (t) => { const e = new _s({ style: { x: t.left * p - a, y: t.top * p - s, image: t.dom } }); y.add(e) }), y.refreshImmediately(), g.toDataURL(`image/${t && t.type || 'png'}`) } return this.getDataURL(t) }Hv(this.id) }, e.prototype.convertToPixel = function (t, e) { return Mv(this, 'convertToPixel', t, e) }, e.prototype.convertFromPixel = function (t, e) { return Mv(this, 'convertFromPixel', t, e) }, e.prototype.containPixel = function (t, e) { + let n; if (!this._disposed) { + return E(Io(this._model, t), function (t, i) { + i.includes('Models') && E(t, function (t) { + let r = t.coordinateSystem; if (r && r.containPoint) { + n = n || !!r.containPoint(e) +} else if (i === 'seriesModels') { const o = this._chartsMap[t.__viewId]; o && o.containPoint && (n = n || o.containPoint(e, t)) } + }, this) + }, this), !!n + } Hv(this.id) + }, e.prototype.getVisual = function (t, e) { const n = Io(this._model, t, { defaultMainType: 'series' }); const r = n.seriesModel.getData(); const o = n.hasOwnProperty('dataIndexInside') ? n.dataIndexInside : n.hasOwnProperty('dataIndex') ? r.indexOfRawIndex(n.dataIndex) : null; return o != null ? fy(r, o, e) : gy(r, e) }, e.prototype.getViewOfComponentModel = function (t) { return this._componentsMap[t.__viewId] }, e.prototype.getViewOfSeriesModel = function (t) { return this._chartsMap[t.__viewId] }, e.prototype._initEvents = function () { + let t; let e; let n; const i = this; E(Wv, (t) => { + const e = function (e) { + let n; const r = i.getModel(); const o = e.target; if (t === 'globalout' + ? n = {} + : o && xy(o, (t) => { + let e = Hs(t); if (e && e.dataIndex != null) { const i = e.dataModel || r.getSeriesByIndex(e.seriesIndex); return n = i && i.getDataParams(e.dataIndex, e.dataType) || {}, !0 } if (e.eventData) + return n = A({}, e.eventData), !0 + }, !0), n) { let s = n.componentType; let l = n.componentIndex; s !== 'markLine' && s !== 'markPoint' && s !== 'markArea' || (s = 'series', l = n.seriesIndex); const u = s && l != null && r.getComponent(s, l); const h = u && i[u.mainType === 'series' ? '_chartsMap' : '_componentsMap'][u.__viewId]; n.event = e, n.type = t, i._$eventProcessor.eventInfo = { targetEl: o, packedEvent: n, model: u, view: h }, i.trigger(t, n) } + }; e.zrEventfulCallAtLast = !0, i._zr.on(t, e, i) + }), E(Uv, (t, e) => { i._messageCenter.on(e, function (t) { this.trigger(e, t) }, i) }), E(['selectchanged'], (t) => { i._messageCenter.on(t, function (e) { this.trigger(t, e) }, i) }), t = this._messageCenter, e = this, n = this._api, t.on('selectchanged', (t) => { const i = n.getModel(); t.isFromClick ? (my('map', 'selectchanged', e, i, t), my('pie', 'selectchanged', e, i, t)) : t.fromAction === 'select' ? (my('map', 'selected', e, i, t), my('pie', 'selected', e, i, t)) : t.fromAction === 'unselect' && (my('map', 'unselected', e, i, t), my('pie', 'unselected', e, i, t)) }) + }, e.prototype.isDisposed = function () { return this._disposed }, e.prototype.clear = function () { this._disposed ? Hv(this.id) : this.setOption({ series: [] }, !0) }, e.prototype.dispose = function () { + if (this._disposed) { + Hv(this.id) + } + else { this._disposed = !0, this.getDom() && ko(this.getDom(), em, ''); const t = this; const e = t._api; const n = t._model; E(t._componentsViews, (t) => { t.dispose(n, e) }), E(t._chartsViews, (t) => { t.dispose(n, e) }), t._zr.dispose(), t._dom = t._model = t._chartsMap = t._componentsMap = t._chartsViews = t._componentsViews = t._scheduler = t._api = t._zr = t._throttledZrFlush = t._theme = t._coordSysMgr = t._messageCenter = null, delete $v[t.id] } + }, e.prototype.resize = function (t) { + if (!this.__flagInMainProcess) { + if (this._disposed) { + Hv(this.id) + } + else { + this._zr.resize(t); const e = this._model; if (this._loadingFX && this._loadingFX.resize(), e) { + let n = e.resetOption('media'); let i = t && t.silent; this.__pendingUpdate && (i == null && (i = this.__pendingUpdate.silent), n = !0, this.__pendingUpdate = null), this.__flagInMainProcess = !0; try { n && _v(this), Sv.update.call(this, { type: 'resize', animation: A({ duration: 0 }, t && t.animation) }) } + catch (t) { throw this.__flagInMainProcess = !1, t } this.__flagInMainProcess = !1, Cv.call(this, i), Dv.call(this, i) + } + } + } + }, e.prototype.showLoading = function (t, e) { + if (this._disposed) { + Hv(this.id) + } + else if (q(t) && (e = t, t = ''), t = t || 'default', this.hideLoading(), Kv[t]) { const n = Kv[t](this._api, e); const i = this._zr; this._loadingFX = n, i.add(n) } + }, e.prototype.hideLoading = function () { this._disposed ? Hv(this.id) : (this._loadingFX && this._zr.remove(this._loadingFX), this._loadingFX = null) }, e.prototype.makeActionFromEvent = function (t) { const e = A({}, t); return e.type = Uv[t.type], e }, e.prototype.dispatchAction = function (t, e) { + if (this._disposed) { + Hv(this.id) + } + else if (q(e) || (e = { silent: !!e }), Yv[t.type] && this._model) { + if (this.__flagInMainProcess) { + this._pendingActions.push(t) + } + else { const n = e.silent; Tv.call(this, t, n); const i = e.flush; i ? this._zr.flush() : !1 !== i && r.browser.weChat && this._throttledZrFlush(), Cv.call(this, n), Dv.call(this, n) } + } + }, e.prototype.updateLabelLayout = function () { lv.trigger('series:layoutlabels', this._model, this._api, { updatedSeries: [] }) }, e.prototype.appendData = function (t) { + if (this._disposed) { + Hv(this.id) + } + else { const e = t.seriesIndex; this.getModel().getSeriesByIndex(e).appendData(t), this._scheduler.unfinished = !0, this.getZr().wakeUp() } + }, e.internalField = (function () { + function t(t) { t.clearColorPalette(), t.eachSeries((t) => { t.clearColorPalette() }) } function e(t) { for (var e = [], n = t.currentStates, i = 0; i < n.length; i++) { const r = n[i]; r !== 'emphasis' && r !== 'blur' && r !== 'select' && e.push(r) }t.selected && t.states.select && e.push('select'), t.hoverState === 2 && t.states.emphasis ? e.push('emphasis') : t.hoverState === 1 && t.states.blur && e.push('blur'), t.useStates(e) } function i(t, e) { if (!t.preventAutoZ) { const n = t.get('z') || 0; const i = t.get('zlevel') || 0; e.eachRendered((t) => { return o(t, n, i, -1 / 0), !0 }) } } function o(t, e, n, i) { + const r = t.getTextContent(); const a = t.getTextGuideLine(); if (t.isGroup) { + for (let s = t.childrenRef(), l = 0; l < s.length; l++)i = Math.max(o(s[l], e, n, i), i) + } + else { + t.z = e, t.zlevel = n, i = Math.max(t.z2, i) + } if (r && (r.z = e, r.zlevel = n, isFinite(i) && (r.z2 = i + 2)), a) { const u = t.textGuideLineConfig; a.z = e, a.zlevel = n, isFinite(i) && (a.z2 = i + (u && u.showAbove ? 1 : -1)) } return i + } function a(t, e) { e.eachRendered((t) => { if (!ah(t)) { const e = t.getTextContent(); const n = t.getTextGuideLine(); t.stateTransition && (t.stateTransition = null), e && e.stateTransition && (e.stateTransition = null), n && n.stateTransition && (n.stateTransition = null), t.hasState() ? (t.prevStates = t.currentStates, t.clearStates()) : t.prevStates && (t.prevStates = null) } }) } function s(t, n) { + const i = t.getModel('stateAnimation'); const r = t.isAnimationEnabled(); const o = i.get('duration'); const a = o > 0 ? { duration: o, delay: i.get('delay'), easing: i.get('easing') } : null; n.eachRendered((t) => { + if (t.states && t.states.emphasis) { + if (ah(t)) + return; if (t instanceof gs && (function (t) { const e = Zs(t); e.normalFill = t.style.fill, e.normalStroke = t.style.stroke; const n = t.states.select || {}; e.selectFill = n.style && n.style.fill || null, e.selectStroke = n.style && n.style.stroke || null }(t)), t.__dirty) { const n = t.prevStates; n && t.useStates(n) } if (r) { t.stateTransition = a; const i = t.getTextContent(); const o = t.getTextGuideLine(); i && (i.stateTransition = a), o && (o.stateTransition = a) }t.__dirty && e(t) + } + }) + }_v = function (t) { const e = t._scheduler; e.restorePipelines(t._model), e.prepareStageTasks(), bv(t, !0), bv(t, !1), e.plan() }, bv = function (t, e) { for (var n = t._model, i = t._scheduler, r = e ? t._componentsViews : t._chartsViews, o = e ? t._componentsMap : t._chartsMap, a = t._zr, s = t._api, l = 0; l < r.length; l++)r[l].__alive = !1; function u(t) { const l = t.__requireNewView; t.__requireNewView = !1; const u = `_ec_${ t.id }_${ t.type}`; let h = !l && o[u]; if (!h) { const c = No(t.type); (h = new (e ? gg.getClass(c.main, c.sub) : xg.getClass(c.sub))()).init(n, s), o[u] = h, r.push(h), a.add(h.group) }t.__viewId = h.__id = u, h.__alive = !0, h.__model = t, h.group.__ecComponentInfo = { mainType: t.mainType, index: t.componentIndex }, !e && i.prepareView(h, t, n, s) } for (e ? n.eachComponent((t, e) => { t !== 'series' && u(e) }) : n.eachSeries(u), l = 0; l < r.length;) { const h = r[l]; h.__alive ? l++ : (!e && h.renderTask.dispose(), a.remove(h.group), h.dispose(n, s), r.splice(l, 1), o[h.__id] === h && delete o[h.__id], h.__id = h.group.__ecComponentInfo = null) } }, wv = function (t, e, n, i, r) { + const o = t._model; if (o.setUpdatePayload(n), i) { + const a = {}; a[`${i}Id`] = n[`${i}Id`], a[`${i}Index`] = n[`${i}Index`], a[`${i}Name`] = n[`${i}Name`]; const s = { mainType: i, query: a }; r && (s.subType = r); let l; const u = n.excludeSeriesId; u != null && (l = ft(), E(ho(u), (t) => { const e = xo(t, null); e != null && l.set(e, !0) })), o && o.eachComponent(s, (e) => { + if (!l || l.get(e.id) === null) { + if (Wl(n)) { + if (e instanceof sg) { +n.type !== Js || n.notBlur || e.get(['emphasis', "disabled"]) || function (t, e, n) { var i = t.seriesIndex; var r = t.getData(e.dataType); if (r) { var o = wo(r, e); o = (Y(o) ? o[0] : o) || 0; var a = r.getItemGraphicEl(o); if (!a) +for (let s = r.count(), l = 0; !a && l < s;)a = r.getItemGraphicEl(l++); if (a) { var u = Hs(a); Dl(i, u.focus, u.blurScope, n) } +else { var h = t.get(['emphasis', "focus"]); var c = t.get(['emphasis', "blurScope"]); null != h && Dl(i, h, c, n) } } }(e, n, t._api); +} else { let i = kl(e.mainType, e.componentIndex, n.name, t._api); let r = i.focusSelf; let o = i.dispatchers; n.type === Js && r && !n.notBlur && Al(e.mainType, e.componentIndex, t._api), o && E(o, (t) =>{ n.type === Js ? _l(t) : bl(t) }) } + } + else { + Gl(n) && e instanceof sg && ((function (t, e, n) { if (Gl(e)) { var i = e.dataType; var r = wo(t.getData(i), e); Y(r) || (r = [r]), t[e.type === nl ? "toggleSelect" : e.type === tl ? "select" : "unselect"](r, i) } }(e, n, t._api)), Ll(e), Ev(t)) + } + } +}, t), o && o.eachComponent(s, (e) => { l && l.get(e.id) !== null || h(t[i === 'series' ? '_chartsMap' : '_componentsMap'][e.__viewId]) }, t) + } + else { + E([].concat(t._componentsViews).concat(t._chartsViews), h) + } function h(i) { i && i.__alive && i[e] && i[e](i.__model, o, t._api, n) } + }, Sv = { prepareAndUpdate(t) { _v(this), Sv.update.call(this, t, { optionChanged: t.newOption != null }) }, update(e, n) { const i = this._model; const r = this._api; const o = this._zr; const a = this._coordSysMgr; const s = this._scheduler; if (i) { i.setUpdatePayload(e), s.restoreData(i, e), s.performSeriesTasks(i), a.create(i, r), s.performDataProcessorTasks(i, e), Iv(this, i), a.update(i, r), t(i), s.performVisualTasks(i, e), Lv(this, i, r, e, n); const l = i.get('backgroundColor') || 'transparent'; const u = i.get('darkMode'); o.setBackgroundColor(l), u != null && u !== 'auto' && o.setDarkMode(u), lv.trigger('afterupdate', i, r) } }, updateTransform(e) { + const n = this; const i = this._model; const r = this._api; if (i) { + i.setUpdatePayload(e); const o = []; i.eachComponent((t, a) => { + if (t !== 'series') { + let s = n.getViewOfComponentModel(a); if (s && s.__alive) { + if (s.updateTransform) { let l = s.updateTransform(a, i, r, e); l && l.update && o.push(s) } + else { + o.push(s) + } + } } + }); const a = ft(); i.eachSeries((t) => { + let o = n._chartsMap[t.__viewId]; if (o.updateTransform) { const s = o.updateTransform(t, i, r, e); s && s.update && a.set(t.uid, 1) } + else { + a.set(t.uid, 1) + } +}), t(i), this._scheduler.performVisualTasks(i, e, { setDirty: !0, dirtyMap: a }), Ov(this, i, r, e, {}, a), lv.trigger('afterupdate', i, r) + } + }, updateView(e) { const n = this._model; n && (n.setUpdatePayload(e), xg.markUpdateMethod(e, 'updateView'), t(n), this._scheduler.performVisualTasks(n, e, { setDirty: !0 }), Lv(this, n, this._api, e, {}), lv.trigger('afterupdate', n, this._api)) }, updateVisual(e) { const n = this; const i = this._model; i && (i.setUpdatePayload(e), i.eachSeries((t) => { t.getData().clearAllVisual() }), xg.markUpdateMethod(e, 'updateVisual'), t(i), this._scheduler.performVisualTasks(i, e, { visualType: 'visual', setDirty: !0 }), i.eachComponent((t, r) => { if (t !== 'series') { const o = n.getViewOfComponentModel(r); o && o.__alive && o.updateVisual(r, i, n._api, e) } }), i.eachSeries((t) => { n._chartsMap[t.__viewId].updateVisual(t, i, n._api, e) }), lv.trigger('afterupdate', i, this._api)) }, updateLayout(t) { Sv.update.call(this, t) } }, Mv = function (t, e, n, i) { + if (t._disposed) { + Hv(t.id) + } + else { + for (var r, o = t._model, a = t._coordSysMgr.getCoordinateSystems(), s = Io(o, n), l = 0; l < a.length; l++) { + const u = a[l]; if (u[e] && (r = u[e](o, s, i)) != null) + return r + } + } + }, Iv = function (t, e) { const n = t._chartsMap; const i = t._scheduler; e.eachSeries((t) => { i.updateStreamModes(t, n[t.__viewId]) }) }, Tv = function (t, e) { + const n = this; const i = this.getModel(); const r = t.type; const o = t.escapeConnect; const a = Yv[r]; const s = a.actionInfo; const l = (s.update || 'update').split(':'); const u = l.pop(); const h = l[0] != null && No(l[0]); this.__flagInMainProcess = !0; let c = [t]; let p = !1; t.batch && (p = !0, c = z(t.batch, (e) => { return (e = k(A({}, e), t)).batch = null, e })); let d; const f = []; const g = Gl(t); const y = Wl(t); if (y && Cl(this._api), E(c, (e) => { + if ((d = (d = a.action(e, n._model, n._api)) || A({}, e)).type = s.event || d.type, f.push(d), y) { const i = To(t); const r = i.queryOptionMap; const o = i.mainTypeSpecified ? r.keys()[0] : 'series'; wv(n, u, e, o), Ev(n) } + else { + g ? (wv(n, u, e, 'series'), Ev(n)) : h && wv(n, u, e, h.main, h.sub) + } + }), u !== 'none' && !y && !g && !h) { + try { this.__pendingUpdate ? (_v(this), Sv.update.call(this, t), this.__pendingUpdate = null) : Sv[u].call(this, t) } + catch (t) { throw this.__flagInMainProcess = !1, t } + } if (d = p ? { type: s.event || r, escapeConnect: o, batch: f } : f[0], this.__flagInMainProcess = !1, !e) { const v = this._messageCenter; if (v.trigger(d.type, d), g) { const m = { type: 'selectchanged', escapeConnect: o, selected: Pl(i), isFromClick: t.isFromClick || !1, fromAction: t.type, fromActionPayload: t }; v.trigger(m.type, m) } } + }, Cv = function (t) { for (let e = this._pendingActions; e.length;) { const n = e.shift(); Tv.call(this, n, t) } }, Dv = function (t) { !t && this.trigger('updated') }, Av = function (t, e) { t.on('rendered', (n) => { e.trigger('rendered', n), !t.animation.isFinished() || e.__pendingUpdate || e._scheduler.unfinished || e._pendingActions.length || e.trigger('finished') }) }, kv = function (t, e) { t.on('mouseover', (t) => { const n = xy(t.target, Fl); n && ((function (t, e, n) { const i = Hs(t); const r = kl(i.componentMainType, i.componentIndex, i.componentHighDownName, n); const o = r.dispatchers; const a = r.focusSelf; o ? (a && Al(i.componentMainType, i.componentIndex, n), E(o, (t) => { return ml(t, e) })) : (Dl(i.seriesIndex, i.focus, i.blurScope, n), i.focus === 'self' && Al(i.componentMainType, i.componentIndex, n), ml(t, e)) }(n, t, e._api)), Ev(e)) }).on('mouseout', (t) => { const n = xy(t.target, Fl); n && ((function (t, e, n) { Cl(n); const i = Hs(t); const r = kl(i.componentMainType, i.componentIndex, i.componentHighDownName, n).dispatchers; r ? E(r, (t) => { return xl(t, e) }) : xl(t, e) }(n, t, e._api)), Ev(e)) }).on('click', (t) => { const n = xy(t.target, (t) => { return Hs(t).dataIndex != null }, !0); if (n) { const i = n.selected ? 'unselect' : 'select'; const r = Hs(n); e._api.dispatchAction({ type: i, dataType: r.dataType, dataIndexInside: r.dataIndex, seriesIndex: r.seriesIndex, isFromClick: !0 }) } }) }, Lv = function (t, e, n, i, r) { !(function (t) { const e = []; const n = []; let i = !1; if (t.eachComponent((t, r) => { const o = r.get('zlevel') || 0; const a = r.get('z') || 0; const s = r.getZLevelKey(); i = i || !!s, (t === 'series' ? n : e).push({ zlevel: o, z: a, idx: r.componentIndex, type: t, key: s }) }), i) { let r; let o; const a = e.concat(n); Ie(a, (t, e) => { return t.zlevel === e.zlevel ? t.z - e.z : t.zlevel - e.zlevel }), E(a, (e) => { const n = t.getComponent(e.type, e.idx); let i = e.zlevel; const a = e.key; r != null && (i = Math.max(r, i)), a ? (i === r && a !== o && i++, o = a) : o && (i === r && i++, o = ''), r = i, n.setZLevel(i) }) } }(e)), Pv(t, e, n, i, r), E(t._chartsViews, (t) => { t.__alive = !1 }), Ov(t, e, n, i, r), E(t._chartsViews, (t) => { t.__alive || t.remove(e, n) }) }, Pv = function (t, e, n, r, o, l) { E(l || t._componentsViews, (t) => { const o = t.__model; a(0, t), t.render(o, e, n, r), i(o, t), s(o, t) }) }, Ov = function (t, e, n, o, l, u) { const h = t._scheduler; l = A(l || {}, { updatedSeries: e.getSeries() }), lv.trigger('series:beforeupdate', e, n, l); let c = !1; e.eachSeries((e) => { const n = t._chartsMap[e.__viewId]; n.__alive = !0; const i = n.renderTask; h.updatePayload(i, o), a(0, n), u && u.get(e.uid) && i.dirty(), i.perform(h.getPerformArgs(i)) && (c = !0), n.group.silent = !!e.get('silent'), (function (t, e) { const n = t.get('blendMode') || null; e.eachRendered((t) => { t.isGroup || (t.style.blend = n) }) }(e, n)), Ll(e) }), h.unfinished = c || h.unfinished, lv.trigger('series:layoutlabels', e, n, l), lv.trigger('series:transition', e, n, l), e.eachSeries((e) => { const n = t._chartsMap[e.__viewId]; i(e, n), s(e, n) }), (function (t, e) { const n = t._zr.storage; let i = 0; n.traverse((t) => { t.isGroup || i++ }), i > e.get('hoverLayerThreshold') && !r.node && !r.worker && e.eachSeries((e) => { if (!e.preventUsingHoverLayer) { const n = t._chartsMap[e.__viewId]; n.__alive && n.eachRendered((t) => { t.states.emphasis && (t.states.emphasis.hoverLayer = !0) }) } }) }(t, e)), lv.trigger('series:afterupdate', e, n, l) }, Ev = function (t) { t.__needsUpdateStatus = !0, t.getZr().wakeUp() }, zv = function (t) { t.__needsUpdateStatus && (t.getZr().storage.traverse((t) => { ah(t) || e(t) }), t.__needsUpdateStatus = !1) }, Rv = function (t) { + return new (function (e) { + function i() { return e !== null && e.apply(this, arguments) || this } return n(i, e), i.prototype.getCoordinateSystems = function () { return t._coordSysMgr.getCoordinateSystems() }, i.prototype.getComponentByElement = function (e) { + for (;e;) { + const n = e.__ecComponentInfo; if (n != null) + return t._model.getComponent(n.mainType, n.index); e = e.parent + } + }, i.prototype.enterEmphasis = function (e, n) { _l(e, n), Ev(t) }, i.prototype.leaveEmphasis = function (e, n) { bl(e, n), Ev(t) }, i.prototype.enterBlur = function (e) { wl(e), Ev(t) }, i.prototype.leaveBlur = function (e) { Sl(e), Ev(t) }, i.prototype.enterSelect = function (e) { Ml(e), Ev(t) }, i.prototype.leaveSelect = function (e) { Il(e), Ev(t) }, i.prototype.getModel = function () { return t.getModel() }, i.prototype.getViewOfComponentModel = function (e) { return t.getViewOfComponentModel(e) }, i.prototype.getViewOfSeriesModel = function (e) { return t.getViewOfSeriesModel(e) }, i + }(ld))(t) + }, Nv = function (t) { + function e(t, e) { for (let n = 0; n < t.length; n++)t[n][yv] = e }E(Uv, (n, i) => { + t._messageCenter.on(i, (n) => { + if (Jv[t.group] && t[yv] !== 0) { + if (n && n.escapeConnect) + return; const i = t.makeActionFromEvent(n); const r = []; E($v, (e) => { e !== t && e.group === t.group && r.push(e) }), e(r, 0), E(r, (t) => { t[yv] !== 1 && t.dispatchAction(i) }), e(r, 2) + } + }) + }) + } + }()), e + }(Xt)); const Gv = Fv.prototype; Gv.on = vv('on'), Gv.off = vv('off'), Gv.one = function (t, e, n) { const i = this; this.on.call(this, t, function n() { for (var r = [], o = 0; o < arguments.length; o++)r[o] = arguments[o]; e && e.apply && e.apply(this, r), i.off(t, n) }, n) }; var Wv = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu']; function Hv(t) {} var Yv = {}; var Uv = {}; var Xv = []; var Zv = []; var jv = []; var qv = {}; var Kv = {}; var $v = {}; var Jv = {}; let Qv = +new Date() - 0; let tm = +new Date() - 0; var em = '_echarts_instance_'; function nm(t) { Jv[t] = !1 } const im = nm; function rm(t) { return $v[(function (t, e) { return t.getAttribute ? t.getAttribute(e) : t[e] }(t, em))] } function om(t, e) { qv[t] = e } function am(t) { P(Zv, t) < 0 && Zv.push(t) } function sm(t, e) { ym(Xv, t, e, 2e3) } function lm(t) { hm('afterinit', t) } function um(t) { hm('afterupdate', t) } function hm(t, e) { lv.on(t, e) } function cm(t, e, n) { U(e) && (n = e, e = ''); const i = q(t) ? t.type : [t, t = { event: e }][0]; t.event = (t.event || i).toLowerCase(), e = t.event, Uv[e] || (lt(gv.test(i) && gv.test(e)), Yv[i] || (Yv[i] = { action: n, actionInfo: t }), Uv[e] = i) } function pm(t, e) { hd.register(t, e) } function dm(t, e) { ym(jv, t, e, 1e3, 'layout') } function fm(t, e) { ym(jv, t, e, 3e3, 'visual') } const gm = []; function ym(t, e, n, i, r) { if ((U(e) || q(e)) && (n = e, e = i), !(P(gm, n) >= 0)) { gm.push(n); const o = Gg.wrapStageHandler(n, r); o.__prio = e, o.__raw = n, t.push(o) } } function vm(t, e) { Kv[t] = e } function mm(t, e, n) { const i = hv('registerMap'); i && i(t, e, n) } const xm = function (t) { let e = (t = T(t)).type; e || ao(''); const i = e.split(':'); i.length !== 2 && ao(''); let r = !1; i[0] === 'echarts' && (e = i[1], r = !0), t.__isBuiltIn = r, Tf.set(e, t) }; fm(2e3, Eg), fm(4500, Vg), fm(4500, Bg), fm(2e3, py), fm(4500, dy), fm(7e3, (t, e) => { t.eachRawSeries((n) => { if (!t.isSeriesFiltered(n)) { const i = n.getData(); i.hasItemVisual() && i.each((t) => { const n = i.getItemVisual(t, 'decal'); n && (i.ensureUniqueItemVisual(t, 'style').decal = rv(n, e)) }); const r = i.getVisual('decal'); r && (i.getVisual('style').decal = rv(r, e)) } }) }), am(Od), sm(900, (t) => { + const e = ft(); t.eachSeries((t) => { + const n = t.get('stack'); if (n) { + const i = e.get(n) || e.set(n, []); const r = t.getData(); const o = { stackResultDimension: r.getCalculationInfo('stackResultDimension'), stackedOverDimension: r.getCalculationInfo('stackedOverDimension'), stackedDimension: r.getCalculationInfo('stackedDimension'), stackedByDimension: r.getCalculationInfo('stackedByDimension'), isStackedByIndex: r.getCalculationInfo('isStackedByIndex'), data: r, seriesModel: t }; if (!o.stackedDimension || !o.isStackedByIndex && !o.stackedByDimension) + return; i.length && r.setCalculationInfo('stackedOnSeries', i[i.length - 1].seriesModel), i.push(o) + } + }), e.each(Rd) + }), vm('default', (t, e) => { k(e = e || {}, { text: 'loading', textColor: '#000', fontSize: 12, fontWeight: 'normal', fontStyle: 'normal', fontFamily: 'sans-serif', maskColor: 'rgba(255, 255, 255, 0.8)', showSpinner: !0, color: '#5470c6', spinnerRadius: 10, lineWidth: 5, zlevel: 0 }); const n = new Cr(); const i = new Cs({ style: { fill: e.maskColor }, zlevel: e.zlevel, z: 1e4 }); n.add(i); let r; const o = new ks({ style: { text: e.text, fill: e.textColor, fontSize: e.fontSize, fontWeight: e.fontWeight, fontStyle: e.fontStyle, fontFamily: e.fontFamily }, zlevel: e.zlevel, z: 10001 }); const a = new Cs({ style: { fill: 'none' }, textContent: o, textConfig: { position: 'right', distance: 10 }, zlevel: e.zlevel, z: 10001 }); return n.add(a), e.showSpinner && ((r = new Hu({ shape: { startAngle: -Fg / 2, endAngle: -Fg / 2 + 0.1, r: e.spinnerRadius }, style: { stroke: e.color, lineCap: 'round', lineWidth: e.lineWidth }, zlevel: e.zlevel, z: 10001 })).animateShape(!0).when(1e3, { endAngle: 3 * Fg / 2 }).start('circularInOut'), r.animateShape(!0).when(1e3, { startAngle: 3 * Fg / 2 }).delay(300).start('circularInOut'), n.add(r)), n.resize = function () { const n = o.getBoundingRect().width; const s = e.showSpinner ? e.spinnerRadius : 0; const l = (t.getWidth() - 2 * s - (e.showSpinner && n ? 10 : 0) - n) / 2 - (e.showSpinner && n ? 0 : 5 + n / 2) + (e.showSpinner ? 0 : n / 2) + (n ? 0 : s); const u = t.getHeight() / 2; e.showSpinner && r.setShape({ cx: l, cy: u }), a.setShape({ x: l - s, y: u - s, width: 2 * s, height: 2 * s }), i.setShape({ x: 0, y: 0, width: t.getWidth(), height: t.getHeight() }) }, n.resize(), n }), cm({ type: Js, event: Js, update: Js }, xt), cm({ type: Qs, event: Qs, update: Qs }, xt), cm({ type: tl, event: tl, update: tl }, xt), cm({ type: el, event: el, update: el }, xt), cm({ type: nl, event: nl, update: nl }, xt), om('light', iy), om('dark', ly); const _m = []; const bm = { registerPreprocessor: am, registerProcessor: sm, registerPostInit: lm, registerPostUpdate: um, registerUpdateLifecycle: hm, registerAction: cm, registerCoordinateSystem: pm, registerLayout: dm, registerVisual: fm, registerTransform: xm, registerLoading: vm, registerMap: mm, registerImpl(t, e) { uv[t] = e }, PRIORITY: fv, ComponentModel: Tp, ComponentView: gg, SeriesModel: sg, ChartView: xg, registerComponentModel(t) { Tp.registerClass(t) }, registerComponentView(t) { gg.registerClass(t) }, registerSeriesModel(t) { sg.registerClass(t) }, registerChartView(t) { xg.registerClass(t) }, registerSubTypeDefaulter(t, e) { Tp.registerSubTypeDefaulter(t, e) }, registerPainter(t, e) { Pr(t, e) } }; function wm(t) { Y(t) ? E(t, (t) => { wm(t) }) : P(_m, t) >= 0 || (_m.push(t), U(t) && (t = { install: t }), t.install(bm)) } function Sm(t) { return t == null ? 0 : t.length || 1 } function Mm(t) { return t } const Im = (function () { + function t(t, e, n, i, r, o) { this._old = t, this._new = e, this._oldKeyGetter = n || Mm, this._newKeyGetter = i || Mm, this.context = r, this._diffModeMultiple = o === 'multiple' } return t.prototype.add = function (t) { return this._add = t, this }, t.prototype.update = function (t) { return this._update = t, this }, t.prototype.updateManyToOne = function (t) { return this._updateManyToOne = t, this }, t.prototype.updateOneToMany = function (t) { return this._updateOneToMany = t, this }, t.prototype.updateManyToMany = function (t) { return this._updateManyToMany = t, this }, t.prototype.remove = function (t) { return this._remove = t, this }, t.prototype.execute = function () { this[this._diffModeMultiple ? '_executeMultiple' : '_executeOneToOne']() }, t.prototype._executeOneToOne = function () { + const t = this._old; const e = this._new; const n = {}; const i = Array.from({ length: t.length }); const r = Array.from({ length: e.length }); this._initIndexMap(t, null, i, '_oldKeyGetter'), this._initIndexMap(e, n, r, '_newKeyGetter'); for (let o = 0; o < t.length; o++) { + const a = i[o]; const s = n[a]; const l = Sm(s); if (l > 1) { const u = s.shift(); s.length === 1 && (n[a] = s[0]), this._update && this._update(u, o) } + else { + l === 1 ? (n[a] = null, this._update && this._update(s, o)) : this._remove && this._remove(o) + } + } this._performRestAdd(r, n) + }, t.prototype._executeMultiple = function () { + const t = this._old; const e = this._new; const n = {}; const i = {}; const r = []; const o = []; this._initIndexMap(t, n, r, '_oldKeyGetter'), this._initIndexMap(e, i, o, '_newKeyGetter'); for (let a = 0; a < r.length; a++) { + const s = r[a]; const l = n[s]; const u = i[s]; const h = Sm(l); const c = Sm(u); if (h > 1 && c === 1) { + this._updateManyToOne && this._updateManyToOne(u, l), i[s] = null + } + else if (h === 1 && c > 1) { + this._updateOneToMany && this._updateOneToMany(u, l), i[s] = null + } + else if (h === 1 && c === 1) { + this._update && this._update(u, l), i[s] = null + } + else if (h > 1 && c > 1) { + this._updateManyToMany && this._updateManyToMany(u, l), i[s] = null + } + else if (h > 1) { + for (let p = 0; p < h; p++) this._remove && this._remove(l[p]) + } + else { + this._remove && this._remove(l) + } + } this._performRestAdd(o, i) + }, t.prototype._performRestAdd = function (t, e) { + for (let n = 0; n < t.length; n++) { + const i = t[n]; const r = e[i]; const o = Sm(r); if (o > 1) { + for (let a = 0; a < o; a++) this._add && this._add(r[a]) + } + else { + o === 1 && this._add && this._add(r) + }e[i] = null + } + }, t.prototype._initIndexMap = function (t, e, n, i) { for (let r = this._diffModeMultiple, o = 0; o < t.length; o++) { const a = `_ec_${this[i](t[o], o)}`; if (r || (n[o] = a), e) { const s = e[a]; const l = Sm(s); l === 0 ? (e[a] = o, r && n.push(a)) : l === 1 ? e[a] = [s, o] : s.push(o) } } }, t + }()); const Tm = (function () { function t(t, e) { this._encode = t, this._schema = e } return t.prototype.get = function () { return { fullDimensions: this._getFullDimensionNames(), encode: this._encode } }, t.prototype._getFullDimensionNames = function () { return this._cachedDimNames || (this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : []), this._cachedDimNames }, t }()); function Cm(t, e) { return t.hasOwnProperty(e) || (t[e] = []), t[e] } function Dm(t) { return t === 'category' ? 'ordinal' : t === 'time' ? 'time' : 'float' } const Am = function (t) { this.otherDims = {}, t != null && A(this, t) }; const km = So(); const Lm = { float: 'f', int: 'i', ordinal: 'o', number: 'n', time: 't' }; const Pm = (function () { + function t(t) { this.dimensions = t.dimensions, this._dimOmitted = t.dimensionOmitted, this.source = t.source, this._fullDimCount = t.fullDimensionCount, this._updateDimOmitted(t.dimensionOmitted) } return t.prototype.isDimensionOmitted = function () { return this._dimOmitted }, t.prototype._updateDimOmitted = function (t) { this._dimOmitted = t, t && (this._dimNameMap || (this._dimNameMap = Nm(this.source))) }, t.prototype.getSourceDimensionIndex = function (t) { return rt(this._dimNameMap.get(t), -1) }, t.prototype.getSourceDimension = function (t) { + const e = this.source.dimensionsDefine; if (e) + return e[t] + }, t.prototype.makeStoreSchema = function () { + for (var t = this._fullDimCount, e = Zd(this.source), n = !Em(t), i = '', r = [], o = 0, a = 0; o < t; o++) { + let s = void 0; let l = void 0; let u = void 0; const h = this.dimensions[a]; if (h && h.storeDimIndex === o) { + s = e ? h.name : null, l = h.type, u = h.ordinalMeta, a++ + } + else { const c = this.getSourceDimension(o); c && (s = e ? c.name : null, l = c.type) }r.push({ property: s, type: l, ordinalMeta: u }), !e || s == null || h && h.isCalculationCoord || (i += n ? s.replace(/`/g, '`1').replace(/\$/g, '`2') : s), i += '$', i += Lm[l] || 'f', u && (i += u.uid), i += '$' + } const p = this.source; return { dimensions: r, hash: [p.seriesLayoutBy, p.startIndex, i].join('$$') } + }, t.prototype.makeOutputDimensionNames = function () { + for (var t = [], e = 0, n = 0; e < this._fullDimCount; e++) { + let i = void 0; const r = this.dimensions[n]; if (r && r.storeDimIndex === e) { + r.isCalculationCoord || (i = r.name), n++ + } + else { const o = this.getSourceDimension(e); o && (i = o.name) }t.push(i) + } return t + }, t.prototype.appendCalculationDimension = function (t) { this.dimensions.push(t), t.isCalculationCoord = !0, this._fullDimCount++, this._updateDimOmitted(!0) }, t + }()); function Om(t) { return t instanceof Pm } function Rm(t) { for (var e = ft(), n = 0; n < (t || []).length; n++) { const i = t[n]; const r = q(i) ? i.name : i; r != null && e.get(r) == null && e.set(r, n) } return e } function Nm(t) { const e = km(t); return e.dimNameMap || (e.dimNameMap = Rm(t.dimensionsDefine)) } function Em(t) { return t > 30 } let zm; let Vm; let Bm; let Fm; let Gm; let Wm; let Hm; const Ym = q; const Um = z; const Xm = typeof Int32Array == 'undefined' ? Array : Int32Array; const Zm = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_dimSummary', 'userOutput', '_rawData', '_dimValueGetter', '_nameDimIdx', '_idDimIdx', '_nameRepeatCount']; const jm = ['_approximateExtent']; const qm = (function () { + function t(t, e) { let n; this.type = 'list', this._dimOmitted = !1, this._nameList = [], this._idList = [], this._visual = {}, this._layout = {}, this._itemVisuals = [], this._itemLayouts = [], this._graphicEls = [], this._approximateExtent = {}, this._calculationInfo = {}, this.hasItemOption = !1, this.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'lttbDownSample', 'map'], this.CHANGABLE_METHODS = ['filterSelf', 'selectRange'], this.DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample']; let i = !1; Om(t) ? (n = t.dimensions, this._dimOmitted = t.isDimensionOmitted(), this._schema = t) : (i = !0, n = t), n = n || ['x', 'y']; for (var r = {}, o = [], a = {}, s = !1, l = {}, u = 0; u < n.length; u++) { const h = n[u]; const c = X(h) ? new Am({ name: h }) : h instanceof Am ? h : new Am(h); const p = c.name; c.type = c.type || 'float', c.coordDim || (c.coordDim = p, c.coordDimIndex = 0); const d = c.otherDims = c.otherDims || {}; o.push(p), r[p] = c, l[p] != null && (s = !0), c.createInvertedIndices && (a[p] = []), d.itemName === 0 && (this._nameDimIdx = u), d.itemId === 0 && (this._idDimIdx = u), i && (c.storeDimIndex = u) } if (this.dimensions = o, this._dimInfos = r, this._initGetDimensionInfo(s), this.hostModel = e, this._invertedIndicesMap = a, this._dimOmitted) { const f = this._dimIdxToName = ft(); E(o, (t) => { f.set(r[t].storeDimIndex, t) }) } } return t.prototype.getDimension = function (t) { + let e = this._recognizeDimIndex(t); if (e == null) + return t; if (e = t, !this._dimOmitted) + return this.dimensions[e]; const n = this._dimIdxToName.get(e); if (n != null) + return n; const i = this._schema.getSourceDimension(e); return i ? i.name : void 0 + }, t.prototype.getDimensionIndex = function (t) { + const e = this._recognizeDimIndex(t); if (e != null) + return e; if (t == null) + return -1; const n = this._getDimInfo(t); return n ? n.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(t) : -1 + }, t.prototype._recognizeDimIndex = function (t) { + if (j(t) || t != null && !isNaN(t) && !this._getDimInfo(t) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(t) < 0)) + return +t + }, t.prototype._getStoreDimIndex = function (t) { return this.getDimensionIndex(t) }, t.prototype.getDimensionInfo = function (t) { return this._getDimInfo(this.getDimension(t)) }, t.prototype._initGetDimensionInfo = function (t) { const e = this._dimInfos; this._getDimInfo = t ? function (t) { return e.hasOwnProperty(t) ? e[t] : void 0 } : function (t) { return e[t] } }, t.prototype.getDimensionsOnCoord = function () { return this._dimSummary.dataDimsOnCoord.slice() }, t.prototype.mapDimension = function (t, e) { + const n = this._dimSummary; if (e == null) + return n.encodeFirstDimNotExtra[t]; const i = n.encode[t]; return i ? i[e] : null + }, t.prototype.mapDimensionsAll = function (t) { return (this._dimSummary.encode[t] || []).slice() }, t.prototype.getStore = function () { return this._store }, t.prototype.initData = function (t, e, n) { let i; const r = this; if (t instanceof Vf && (i = t), !i) { const o = this.dimensions; const a = Gd(t) || N(t) ? new jd(t, o.length) : t; i = new Vf(); const s = Um(o, (t) => { return { type: r._dimInfos[t].type, property: t } }); i.initData(a, s, n) } this._store = i, this._nameList = (e || []).slice(), this._idList = [], this._nameRepeatCount = {}, this._doInit(0, i.count()), this._dimSummary = (function (t, e) { const n = {}; const i = n.encode = {}; const r = ft(); let o = []; let a = []; const s = {}; E(t.dimensions, (e) => { let n; const l = t.getDimensionInfo(e); const u = l.coordDim; if (u) { const h = l.coordDimIndex; Cm(i, u)[h] = e, l.isExtraCoord || (r.set(u, 1), (n = l.type) !== 'ordinal' && n !== 'time' && (o[0] = e), Cm(s, u)[h] = t.getDimensionIndex(l.name)), l.defaultTooltip && a.push(e) }kp.each((t, e) => { const n = Cm(i, e); const r = l.otherDims[e]; r != null && !1 !== r && (n[r] = l.name) }) }); let l = []; const u = {}; r.each((t, e) => { const n = i[e]; u[e] = n[0], l = l.concat(n) }), n.dataDimsOnCoord = l, n.dataDimIndicesOnCoord = z(l, (e) => { return t.getDimensionInfo(e).storeDimIndex }), n.encodeFirstDimNotExtra = u; const h = i.label; h && h.length && (o = h.slice()); const c = i.tooltip; return c && c.length ? a = c.slice() : a.length || (a = o.slice()), i.defaultedLabel = o, i.defaultedTooltip = a, n.userOutput = new Tm(s, e), n }(this, this._schema)), this.userOutput = this._dimSummary.userOutput }, t.prototype.appendData = function (t) { const e = this._store.appendData(t); this._doInit(e[0], e[1]) }, t.prototype.appendValues = function (t, e) { + const n = this._store.appendValues(t, e.length); const i = n.start; const r = n.end; const o = this._shouldMakeIdFromName(); if (this._updateOrdinalMeta(), e) { + for (let a = i; a < r; a++) { const s = a - i; this._nameList[a] = e[s], o && Hm(this, a) } + } + }, t.prototype._updateOrdinalMeta = function () { for (let t = this._store, e = this.dimensions, n = 0; n < e.length; n++) { const i = this._dimInfos[e[n]]; i.ordinalMeta && t.collectOrdinalMeta(i.storeDimIndex, i.ordinalMeta) } }, t.prototype._shouldMakeIdFromName = function () { const t = this._store.getProvider(); return this._idDimIdx == null && t.getSource().sourceFormat !== Np && !t.fillStorage }, t.prototype._doInit = function (t, e) { + if (!(t >= e)) { + const n = this._store.getProvider(); this._updateOrdinalMeta(); const i = this._nameList; const r = this._idList; if (n.getSource().sourceFormat === Lp && !n.pure) { + for (var o = [], a = t; a < e; a++) { const s = n.getItem(a, o); if (!this.hasItemOption && go(s) && (this.hasItemOption = !0), s) { const l = s.name; i[a] == null && l != null && (i[a] = xo(l, null)); const u = s.id; r[a] == null && u != null && (r[a] = xo(u, null)) } } + } if (this._shouldMakeIdFromName()) { + for (a = t; a < e; a++)Hm(this, a) + } zm(this) + } + }, t.prototype.getApproximateExtent = function (t) { return this._approximateExtent[t] || this._store.getDataExtent(this._getStoreDimIndex(t)) }, t.prototype.setApproximateExtent = function (t, e) { e = this.getDimension(e), this._approximateExtent[e] = t.slice() }, t.prototype.getCalculationInfo = function (t) { return this._calculationInfo[t] }, t.prototype.setCalculationInfo = function (t, e) { Ym(t) ? A(this._calculationInfo, t) : this._calculationInfo[t] = e }, t.prototype.getName = function (t) { const e = this.getRawIndex(t); let n = this._nameList[e]; return n == null && this._nameDimIdx != null && (n = Bm(this, this._nameDimIdx, e)), n == null && (n = ''), n }, t.prototype._getCategory = function (t, e) { const n = this._store.get(t, e); const i = this._store.getOrdinalMeta(t); return i ? i.categories[n] : n }, t.prototype.getId = function (t) { return Vm(this, this.getRawIndex(t)) }, t.prototype.count = function () { return this._store.count() }, t.prototype.get = function (t, e) { + const n = this._store; const i = this._dimInfos[t]; if (i) + return n.get(i.storeDimIndex, e) + }, t.prototype.getByRawIndex = function (t, e) { + const n = this._store; const i = this._dimInfos[t]; if (i) + return n.getByRawIndex(i.storeDimIndex, e) + }, t.prototype.getIndices = function () { return this._store.getIndices() }, t.prototype.getDataExtent = function (t) { return this._store.getDataExtent(this._getStoreDimIndex(t)) }, t.prototype.getSum = function (t) { return this._store.getSum(this._getStoreDimIndex(t)) }, t.prototype.getMedian = function (t) { return this._store.getMedian(this._getStoreDimIndex(t)) }, t.prototype.getValues = function (t, e) { const n = this; const i = this._store; return Y(t) ? i.getValues(Um(t, (t) => { return n._getStoreDimIndex(t) }), e) : i.getValues(t) }, t.prototype.hasValue = function (t) { + for (let e = this._dimSummary.dataDimIndicesOnCoord, n = 0, i = e.length; n < i; n++) { + if (isNaN(this._store.get(e[n], t))) + return !1 + } return !0 + }, t.prototype.indexOfName = function (t) { + for (let e = 0, n = this._store.count(); e < n; e++) { + if (this.getName(e) === t) + return e + } return -1 + }, t.prototype.getRawIndex = function (t) { return this._store.getRawIndex(t) }, t.prototype.indexOfRawIndex = function (t) { return this._store.indexOfRawIndex(t) }, t.prototype.rawIndexOf = function (t, e) { const i = (t && this._invertedIndicesMap[t])[e]; return i == null || isNaN(i) ? -1 : i }, t.prototype.indicesOfNearest = function (t, e, n) { return this._store.indicesOfNearest(this._getStoreDimIndex(t), e, n) }, t.prototype.each = function (t, e, n) { U(t) && (n = e, e = t, t = []); const i = n || this; const r = Um(Fm(t), this._getStoreDimIndex, this); this._store.each(r, i ? W(e, i) : e) }, t.prototype.filterSelf = function (t, e, n) { U(t) && (n = e, e = t, t = []); const i = n || this; const r = Um(Fm(t), this._getStoreDimIndex, this); return this._store = this._store.filter(r, i ? W(e, i) : e), this }, t.prototype.selectRange = function (t) { const e = this; const n = {}; return E(G(t), (i) => { const r = e._getStoreDimIndex(i); n[r] = t[i] }), this._store = this._store.selectRange(n), this }, t.prototype.mapArray = function (t, e, n) { U(t) && (n = e, e = t, t = []), n = n || this; const i = []; return this.each(t, function () { i.push(e && e.apply(this, arguments)) }, n), i }, t.prototype.map = function (t, e, n, i) { const r = n || i || this; const o = Um(Fm(t), this._getStoreDimIndex, this); const a = Wm(this); return a._store = this._store.map(o, r ? W(e, r) : e), a }, t.prototype.modify = function (t, e, n, i) { const r = n || i || this; const o = Um(Fm(t), this._getStoreDimIndex, this); this._store.modify(o, r ? W(e, r) : e) }, t.prototype.downSample = function (t, e, n, i) { const r = Wm(this); return r._store = this._store.downSample(this._getStoreDimIndex(t), e, n, i), r }, t.prototype.lttbDownSample = function (t, e) { const n = Wm(this); return n._store = this._store.lttbDownSample(this._getStoreDimIndex(t), e), n }, t.prototype.getRawDataItem = function (t) { return this._store.getRawDataItem(t) }, t.prototype.getItemModel = function (t) { const e = this.hostModel; const n = this.getRawDataItem(t); return new dc(n, e, e && e.ecModel) }, t.prototype.diff = function (t) { const e = this; return new Im(t ? t.getStore().getIndices() : [], this.getStore().getIndices(), (e) => { return Vm(t, e) }, (t) => { return Vm(e, t) }) }, t.prototype.getVisual = function (t) { const e = this._visual; return e && e[t] }, t.prototype.setVisual = function (t, e) { this._visual = this._visual || {}, Ym(t) ? A(this._visual, t) : this._visual[t] = e }, t.prototype.getItemVisual = function (t, e) { const n = this._itemVisuals[t]; const i = n && n[e]; return i == null ? this.getVisual(e) : i }, t.prototype.hasItemVisual = function () { return this._itemVisuals.length > 0 }, t.prototype.ensureUniqueItemVisual = function (t, e) { const n = this._itemVisuals; let i = n[t]; i || (i = n[t] = {}); let r = i[e]; return r == null && (Y(r = this.getVisual(e)) ? r = r.slice() : Ym(r) && (r = A({}, r)), i[e] = r), r }, t.prototype.setItemVisual = function (t, e, n) { const i = this._itemVisuals[t] || {}; this._itemVisuals[t] = i, Ym(e) ? A(i, e) : i[e] = n }, t.prototype.clearAllVisual = function () { this._visual = {}, this._itemVisuals = [] }, t.prototype.setLayout = function (t, e) { Ym(t) ? A(this._layout, t) : this._layout[t] = e }, t.prototype.getLayout = function (t) { return this._layout[t] }, t.prototype.getItemLayout = function (t) { return this._itemLayouts[t] }, t.prototype.setItemLayout = function (t, e, n) { this._itemLayouts[t] = n ? A(this._itemLayouts[t] || {}, e) : e }, t.prototype.clearItemLayouts = function () { this._itemLayouts.length = 0 }, t.prototype.setItemGraphicEl = function (t, e) { const n = this.hostModel && this.hostModel.seriesIndex; Ys(n, this.dataType, t, e), this._graphicEls[t] = e }, t.prototype.getItemGraphicEl = function (t) { return this._graphicEls[t] }, t.prototype.eachItemGraphicEl = function (t, e) { E(this._graphicEls, (n, i) => { n && t && t.call(e, n, i) }) }, t.prototype.cloneShallow = function (e) { return e || (e = new t(this._schema ? this._schema : Um(this.dimensions, this._getDimInfo, this), this.hostModel)), Gm(e, this), e._store = this._store, e }, t.prototype.wrapMethod = function (t, e) { const n = this[t]; U(n) && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods.push(t), this[t] = function () { const t = n.apply(this, arguments); return e.apply(this, [t].concat(at(arguments))) }) }, t.internalField = (zm = function (t) { const e = t._invertedIndicesMap; E(e, (n, i) => { const r = t._dimInfos[i]; const o = r.ordinalMeta; const a = t._store; if (o) { n = e[i] = new Xm(o.categories.length); for (var s = 0; s < n.length; s++)n[s] = -1; for (s = 0; s < a.count(); s++)n[a.get(r.storeDimIndex, s)] = s } }) }, Bm = function (t, e, n) { return xo(t._getCategory(e, n), null) }, Vm = function (t, e) { let n = t._idList[e]; return n == null && t._idDimIdx != null && (n = Bm(t, t._idDimIdx, e)), n == null && (n = `e\0\0${e}`), n }, Fm = function (t) { return Y(t) || (t = t != null ? [t] : []), t }, Wm = function (e) { const n = new t(e._schema ? e._schema : Um(e.dimensions, e._getDimInfo, e), e.hostModel); return Gm(n, e), n }, Gm = function (t, e) { E(Zm.concat(e.__wrappedMethods || []), (n) => { e.hasOwnProperty(n) && (t[n] = e[n]) }), t.__wrappedMethods = e.__wrappedMethods, E(jm, (n) => { t[n] = T(e[n]) }), t._calculationInfo = A({}, e._calculationInfo) }, void (Hm = function (t, e) { const n = t._nameList; const i = t._idList; const r = t._nameDimIdx; const o = t._idDimIdx; let a = n[e]; let s = i[e]; if (a == null && r != null && (n[e] = a = Bm(t, r, e)), s == null && o != null && (i[e] = s = Bm(t, o, e)), s == null && a != null) { const l = t._nameRepeatCount; const u = l[a] = (l[a] || 0) + 1; s = a, u > 1 && (s += `__ec__${u}`), i[e] = s } })), t + }()); function Km(t, e) { + Gd(t) || (t = Hd(t)); const n = (e = e || {}).coordDimensions || []; const i = e.dimensionsDefine || t.dimensionsDefine || []; const r = ft(); const o = []; const a = (function (t, e, n, i) { let r = Math.max(t.dimensionsDetectedCount || 1, e.length, n.length, i || 0); return E(e, (t) => { let e; q(t) && (e = t.dimsDef) && (r = Math.max(r, e.length)) }), r }(t, n, i, e.dimensionsCount)); const s = e.canOmitUnusedDimensions && Em(a); const l = i === t.dimensionsDefine; const u = l ? Nm(t) : Rm(i); let h = e.encodeDefine; !h && e.encodeDefaulter && (h = e.encodeDefaulter(t, a)); for (var c = ft(h), p = new Of(a), d = 0; d < p.length; d++)p[d] = -1; function f(t) { const e = p[t]; if (e < 0) { const n = i[t]; const r = q(n) ? n : { name: n }; const a = new Am(); const s = r.name; s != null && u.get(s) != null && (a.name = a.displayName = s), r.type != null && (a.type = r.type), r.displayName != null && (a.displayName = r.displayName); const l = o.length; return p[t] = l, a.storeDimIndex = t, o.push(a), a } return o[e] } if (!s) { + for (d = 0; d < a; d++)f(d) + } c.each((t, e) => { + const n = ho(t).slice(); if (n.length === 1 && !X(n[0]) && n[0] < 0) { + c.set(e, !1) + } + else { const i = c.set(e, []); E(n, (t, n) => { const r = X(t) ? u.get(t) : t; r != null && r < a && (i[n] = r, y(f(r), e, n)) }) } + }); let g = 0; function y(t, e, n) { kp.get(e) != null ? t.otherDims[e] = n : (t.coordDim = e, t.coordDimIndex = n, r.set(e, !0)) }E(n, (t) => { + let e, n, i, r; if (X(t)) { + e = t, r = {} + } + else { e = (r = t).name; const o = r.ordinalMeta; r.ordinalMeta = null, (r = A({}, r)).ordinalMeta = o, n = r.dimsDef, i = r.otherDims, r.name = r.coordDim = r.coordDimIndex = r.dimsDef = r.otherDims = null } let s = c.get(e); if (!1 !== s) { + if (!(s = ho(s)).length) { + for (let u = 0; u < (n && n.length || 1); u++) { for (;g < a && f(g).coordDim != null;)g++; g < a && s.push(g++) } + }E(s, (t, o) => { const a = f(t); if (l && r.type != null && (a.type = r.type), y(k(a, r), e, o), a.name == null && n) { let s = n[o]; !q(s) && (s = { name: s }), a.name = a.displayName = s.name, a.defaultTooltip = s.defaultTooltip }i && k(a.otherDims, i) }) + } + }); const v = e.generateCoord; let m = e.generateCoordCount; const x = m != null; m = v ? m || 1 : 0; const _ = v || 'value'; function b(t) { t.name == null && (t.name = t.coordDim) } if (s) { + E(o, (t) => { b(t) }), o.sort((t, e) => { return t.storeDimIndex - e.storeDimIndex }) + } + else { + for (let w = 0; w < a; w++) { const S = f(w); S.coordDim == null && (S.coordDim = $m(_, r, x), S.coordDimIndex = 0, (!v || m <= 0) && (S.isExtraCoord = !0), m--), b(S), S.type != null || Xp(t, w) !== Bp && (!S.isExtraCoord || S.otherDims.itemName == null && S.otherDims.seriesName == null) || (S.type = 'ordinal') } + } return (function (t) { for (let e = ft(), n = 0; n < t.length; n++) { const i = t[n]; const r = i.name; let o = e.get(r) || 0; o > 0 && (i.name = r + (o - 1)), o++, e.set(r, o) } }(o)), new Pm({ source: t, dimensions: o, fullDimensionCount: a, dimensionOmitted: s }) + } function $m(t, e, n) { const i = e.data; if (n || i.hasOwnProperty(t)) { for (var r = 0; i.hasOwnProperty(t + r);)r++; t += r } return e.set(t, !0), t } const Jm = function (t) { this.coordSysDims = [], this.axisMap = ft(), this.categoryAxisMap = ft(), this.coordSysName = t }; const Qm = { cartesian2d(t, e, n, i) { const r = t.getReferringComponents('xAxis', Co).models[0]; const o = t.getReferringComponents('yAxis', Co).models[0]; e.coordSysDims = ['x', 'y'], n.set('x', r), n.set('y', o), tx(r) && (i.set('x', r), e.firstCategoryDimIndex = 0), tx(o) && (i.set('y', o), e.firstCategoryDimIndex == null && (e.firstCategoryDimIndex = 1)) }, singleAxis(t, e, n, i) { const r = t.getReferringComponents('singleAxis', Co).models[0]; e.coordSysDims = ['single'], n.set('single', r), tx(r) && (i.set('single', r), e.firstCategoryDimIndex = 0) }, polar(t, e, n, i) { const r = t.getReferringComponents('polar', Co).models[0]; const o = r.findAxisModel('radiusAxis'); const a = r.findAxisModel('angleAxis'); e.coordSysDims = ['radius', 'angle'], n.set('radius', o), n.set('angle', a), tx(o) && (i.set('radius', o), e.firstCategoryDimIndex = 0), tx(a) && (i.set('angle', a), e.firstCategoryDimIndex == null && (e.firstCategoryDimIndex = 1)) }, geo(t, e, n, i) { e.coordSysDims = ['lng', 'lat'] }, parallel(t, e, n, i) { const r = t.ecModel; const o = r.getComponent('parallel', t.get('parallelIndex')); const a = e.coordSysDims = o.dimensions.slice(); E(o.parallelAxisIndex, (t, o) => { const s = r.getComponent('parallelAxis', t); const l = a[o]; n.set(l, s), tx(s) && (i.set(l, s), e.firstCategoryDimIndex == null && (e.firstCategoryDimIndex = o)) }) } }; function tx(t) { return t.get('type') === 'category' } function ex(t, e, n) { let i; let r; let o; let a = (n = n || {}).byIndex; const s = n.stackedCoordDimension; !(function (t) { return !Om(t.schema) }(e)) ? (r = e.schema, i = r.dimensions, o = e.store) : i = e; let l; let u; let h; let c; const p = !(!t || !t.get('stack')); if (E(i, (t, e) => { X(t) && (i[e] = t = { name: t }), p && !t.isExtraCoord && (a || l || !t.ordinalMeta || (l = t), u || t.type === 'ordinal' || t.type === 'time' || s && s !== t.coordDim || (u = t)) }), !u || a || l || (a = !0), u) { h = `__\0ecstackresult_${t.id}`, c = `__\0ecstackedover_${t.id}`, l && (l.createInvertedIndices = !0); const d = u.coordDim; const f = u.type; let g = 0; E(i, (t) => { t.coordDim === d && g++ }); const y = { name: h, coordDim: d, coordDimIndex: g, type: f, isExtraCoord: !0, isCalculationCoord: !0, storeDimIndex: i.length }; const v = { name: c, coordDim: c, coordDimIndex: g + 1, type: f, isExtraCoord: !0, isCalculationCoord: !0, storeDimIndex: i.length + 1 }; r ? (o && (y.storeDimIndex = o.ensureCalculationDimension(c, f), v.storeDimIndex = o.ensureCalculationDimension(h, f)), r.appendCalculationDimension(y), r.appendCalculationDimension(v)) : (i.push(y), i.push(v)) } return { stackedDimension: u && u.name, stackedByDimension: l && l.name, isStackedByIndex: a, stackedOverDimension: c, stackResultDimension: h } } function nx(t, e) { return !!e && e === t.getCalculationInfo('stackedDimension') } function ix(t, e) { return nx(t, e) ? t.getCalculationInfo('stackResultDimension') : e } function rx(t, e, n) { + n = n || {}; let i; const r = e.getSourceManager(); let o = !1; t ? (o = !0, i = Hd(t)) : o = (i = r.getSource()).sourceFormat === Lp; const a = (function (t) { + const e = t.get('coordinateSystem'); const n = new Jm(e); const i = Qm[e]; if (i) + return i(t, n, n.axisMap, n.categoryAxisMap), n + }(e)); const s = (function (t, e) { let n; const i = t.get('coordinateSystem'); const r = hd.get(i); return e && e.coordSysDims && (n = z(e.coordSysDims, (t) => { const n = { name: t }; const i = e.axisMap.get(t); if (i) { const r = i.get('type'); n.type = Dm(r) } return n })), n || (n = r && (r.getDimensionsInfo ? r.getDimensionsInfo() : r.dimensions.slice()) || ['x', 'y']), n }(e, a)); const l = n.useEncodeDefaulter; const u = U(l) ? l : l ? H(Hp, s, e) : null; const h = Km(i, { coordDimensions: s, generateCoord: n.generateCoord, encodeDefine: e.getEncode(), encodeDefaulter: u, canOmitUnusedDimensions: !o }); const c = (function (t, e, n) { let i, r; return n && E(t, (t, o) => { const a = t.coordDim; const s = n.categoryAxisMap.get(a); s && (i == null && (i = o), t.ordinalMeta = s.getOrdinalMeta(), e && (t.createInvertedIndices = !0)), t.otherDims.itemName != null && (r = !0) }), r || i == null || (t[i].otherDims.itemName = 0), i }(h.dimensions, n.createInvertedIndices, a)); const p = o ? null : r.getSharedDataStore(h); const d = ex(e, { schema: h, store: p }); const f = new qm(h, e); f.setCalculationInfo(d); const g = c != null && (function (t) { + if (t.sourceFormat === Lp) + return !Y(fo(function (t) { for (var e = 0; e < t.length && t[e] == null;)e++; return t[e] }(t.data || []))) + }(i)) + ? function (t, e, n, i) { return i === c ? n : this.defaultDimValueGetter(t, e, n, i) } + : null; return f.hasItemOption = !1, f.initData(o ? i : p, null, g), f + } const ox = (function () { function t(t) { this._setting = t || {}, this._extent = [1 / 0, -1 / 0] } return t.prototype.getSetting = function (t) { return this._setting[t] }, t.prototype.unionExtent = function (t) { const e = this._extent; t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]) }, t.prototype.unionExtentFromData = function (t, e) { this.unionExtent(t.getApproximateExtent(e)) }, t.prototype.getExtent = function () { return this._extent.slice() }, t.prototype.setExtent = function (t, e) { const n = this._extent; isNaN(t) || (n[0] = t), isNaN(e) || (n[1] = e) }, t.prototype.isInExtentRange = function (t) { return this._extent[0] <= t && this._extent[1] >= t }, t.prototype.isBlank = function () { return this._isBlank }, t.prototype.setBlank = function (t) { this._isBlank = t }, t }()); Go(ox); let ax = 0; const sx = (function () { + function t(t) { this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t.deduplication, this.uid = ++ax } return t.createByAxisModel = function (e) { const n = e.option; const i = n.data; const r = i && z(i, lx); return new t({ categories: r, needCollect: !r, deduplication: !1 !== n.dedplication }) }, t.prototype.getOrdinal = function (t) { return this._getOrCreateMap().get(t) }, t.prototype.parseAndCollect = function (t) { + let e; const n = this._needCollect; if (!X(t) && !n) + return t; if (n && !this._deduplication) + return e = this.categories.length, this.categories[e] = t, e; const i = this._getOrCreateMap(); return (e = i.get(t)) == null && (n ? (e = this.categories.length, this.categories[e] = t, i.set(t, e)) : e = Number.NaN), e + }, t.prototype._getOrCreateMap = function () { return this._map || (this._map = ft(this.categories)) }, t + }()); function lx(t) { return q(t) && t.value != null ? t.value : `${t}` } function ux(t) { return t.type === 'interval' || t.type === 'log' } function cx(t) { const e = 10 ** Kr(t); let n = t / e; return n ? n === 2 ? n = 3 : n === 3 ? n = 5 : n *= 2 : n = 1, zr(n * e) } function px(t) { return Br(t) + 2 } function dx(t, e, n) { t[e] = Math.max(Math.min(t[e], n[1]), n[0]) } function fx(t, e) { return t >= e[0] && t <= e[1] } function gx(t, e) { return e[1] === e[0] ? 0.5 : (t - e[0]) / (e[1] - e[0]) } function yx(t, e) { return t * (e[1] - e[0]) + e[0] } const vx = (function (t) { + function e(e) { const n = t.call(this, e) || this; n.type = 'ordinal'; let i = n.getSetting('ordinalMeta'); return i || (i = new sx({})), Y(i) && (i = new sx({ categories: z(i, (t) => { return q(t) ? t.value : t }) })), n._ordinalMeta = i, n._extent = n.getSetting('extent') || [0, i.categories.length - 1], n } return n(e, t), e.prototype.parse = function (t) { return t == null ? Number.NaN : X(t) ? this._ordinalMeta.getOrdinal(t) : Math.round(t) }, e.prototype.contain = function (t) { return fx(t = this.parse(t), this._extent) && this._ordinalMeta.categories[t] != null }, e.prototype.normalize = function (t) { return gx(t = this._getTickNumber(this.parse(t)), this._extent) }, e.prototype.scale = function (t) { return t = Math.round(yx(t, this._extent)), this.getRawOrdinalNumber(t) }, e.prototype.getTicks = function () { for (var t = [], e = this._extent, n = e[0]; n <= e[1];)t.push({ value: n }), n++; return t }, e.prototype.getMinorTicks = function (t) {}, e.prototype.setSortInfo = function (t) { + if (t != null) { for (var e = t.ordinalNumbers, n = this._ordinalNumbersByTick = [], i = this._ticksByOrdinalNumber = [], r = 0, o = this._ordinalMeta.categories.length, a = Math.min(o, e.length); r < a; ++r) { const s = e[r]; n[r] = s, i[s] = r } for (let l = 0; r < o; ++r) { for (;i[l] != null;)l++; n.push(l), i[l] = r } } + else { + this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null + } + }, e.prototype._getTickNumber = function (t) { const e = this._ticksByOrdinalNumber; return e && t >= 0 && t < e.length ? e[t] : t }, e.prototype.getRawOrdinalNumber = function (t) { const e = this._ordinalNumbersByTick; return e && t >= 0 && t < e.length ? e[t] : t }, e.prototype.getLabel = function (t) { if (!this.isBlank()) { const e = this.getRawOrdinalNumber(t.value); const n = this._ordinalMeta.categories[e]; return n == null ? '' : `${n}` } }, e.prototype.count = function () { return this._extent[1] - this._extent[0] + 1 }, e.prototype.unionExtentFromData = function (t, e) { this.unionExtent(t.getApproximateExtent(e)) }, e.prototype.isInExtentRange = function (t) { return t = this._getTickNumber(t), this._extent[0] <= t && this._extent[1] >= t }, e.prototype.getOrdinalMeta = function () { return this._ordinalMeta }, e.prototype.calcNiceTicks = function () {}, e.prototype.calcNiceExtent = function () {}, e.type = 'ordinal', e + }(ox)); ox.registerClass(vx); const mx = zr; const xx = (function (t) { + function e() { const e = t !== null && t.apply(this, arguments) || this; return e.type = 'interval', e._interval = 0, e._intervalPrecision = 2, e } return n(e, t), e.prototype.parse = function (t) { return t }, e.prototype.contain = function (t) { return fx(t, this._extent) }, e.prototype.normalize = function (t) { return gx(t, this._extent) }, e.prototype.scale = function (t) { return yx(t, this._extent) }, e.prototype.setExtent = function (t, e) { const n = this._extent; isNaN(t) || (n[0] = Number.parseFloat(t)), isNaN(e) || (n[1] = Number.parseFloat(e)) }, e.prototype.unionExtent = function (t) { const e = this._extent; t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]), this.setExtent(e[0], e[1]) }, e.prototype.getInterval = function () { return this._interval }, e.prototype.setInterval = function (t) { this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = px(t) }, e.prototype.getTicks = function (t) { + const e = this._interval; const n = this._extent; const i = this._niceExtent; const r = this._intervalPrecision; const o = []; if (!e) + return o; n[0] < i[0] && (t ? o.push({ value: mx(i[0] - e, r) }) : o.push({ value: n[0] })); for (let a = i[0]; a <= i[1] && (o.push({ value: a }), (a = mx(a + e, r)) !== o[o.length - 1].value);) { + if (o.length > 1e4) + return [] + } const s = o.length ? o[o.length - 1].value : i[1]; return n[1] > s && (t ? o.push({ value: mx(s + e, r) }) : o.push({ value: n[1] })), o + }, e.prototype.getMinorTicks = function (t) { for (var e = this.getTicks(!0), n = [], i = this.getExtent(), r = 1; r < e.length; r++) { for (var o = e[r], a = e[r - 1], s = 0, l = [], u = (o.value - a.value) / t; s < t - 1;) { const h = mx(a.value + (s + 1) * u); h > i[0] && h < i[1] && l.push(h), s++ }n.push(l) } return n }, e.prototype.getLabel = function (t, e) { + if (t == null) + return ''; let n = e && e.precision; return n == null ? n = Br(t.value) || 0 : n === 'auto' && (n = this._intervalPrecision), ep(mx(t.value, n, !0)) + }, e.prototype.calcNiceTicks = function (t, e, n) { t = t || 5; const i = this._extent; let r = i[1] - i[0]; if (isFinite(r)) { r < 0 && (r = -r, i.reverse()); const o = (function (t, e, n, i) { const r = {}; const o = t[1] - t[0]; let a = r.interval = $r(o / e, !0); n != null && a < n && (a = r.interval = n), i != null && a > i && (a = r.interval = i); const s = r.intervalPrecision = px(a); return (function (t, e) { !isFinite(t[0]) && (t[0] = e[0]), !isFinite(t[1]) && (t[1] = e[1]), dx(t, 0, e), dx(t, 1, e), t[0] > t[1] && (t[0] = t[1]) }(r.niceTickExtent = [zr(Math.ceil(t[0] / a) * a, s), zr(Math.floor(t[1] / a) * a, s)], t)), r }(i, t, e, n)); this._intervalPrecision = o.intervalPrecision, this._interval = o.interval, this._niceExtent = o.niceTickExtent } }, e.prototype.calcNiceExtent = function (t) { + const e = this._extent; if (e[0] === e[1]) { + if (e[0] !== 0) { const n = e[0]; t.fixMax || (e[1] += n / 2), e[0] -= n / 2 } + else { + e[1] = 1 + } + } const i = e[1] - e[0]; isFinite(i) || (e[0] = 0, e[1] = 1), this.calcNiceTicks(t.splitNumber, t.minInterval, t.maxInterval); const r = this._interval; t.fixMin || (e[0] = mx(Math.floor(e[0] / r) * r)), t.fixMax || (e[1] = mx(Math.ceil(e[1] / r) * r)) + }, e.prototype.setNiceExtent = function (t, e) { this._niceExtent = [t, e] }, e.type = 'interval', e + }(ox)); ox.registerClass(xx); const _x = typeof Float32Array != 'undefined'; const bx = _x ? Float32Array : Array; function Sx(t) { return Y(t) ? _x ? new Float32Array(t) : t : new bx(t) } const Mx = '__ec_stack_'; function Ix(t) { return t.get('stack') || Mx + t.seriesIndex } function Tx(t) { return t.dim + t.index } function Cx(t, e) { const n = []; return e.eachSeriesByType(t, (t) => { Px(t) && n.push(t) }), n } function Dx(t) { + const e = (function (t) { + const e = {}; E(t, (t) => { + const n = t.coordinateSystem.getBaseAxis(); if (n.type === 'time' || n.type === 'value') { + for (let i = t.getData(), r = `${n.dim}_${n.index}`, o = i.getDimensionIndex(i.mapDimension(n.dim)), a = i.getStore(), s = 0, l = a.count(); s < l; ++s) { const u = a.get(o, s); e[r] ? e[r].push(u) : e[r] = [u] } + } + }); const n = {}; for (const i in e) { + if (e.hasOwnProperty(i)) { const r = e[i]; if (r) { r.sort((t, e) => { return t - e }); for (var o = null, a = 1; a < r.length; ++a) { const s = r[a] - r[a - 1]; s > 0 && (o = o === null ? s : Math.min(o, s)) }n[i] = o } } + } return n + }(t)); const n = []; return E(t, (t) => { + let i; const r = t.coordinateSystem.getBaseAxis(); const o = r.getExtent(); if (r.type === 'category') { + i = r.getBandWidth() + } + else if (r.type === 'value' || r.type === 'time') { const a = `${r.dim}_${r.index}`; const s = e[a]; const l = Math.abs(o[1] - o[0]); const u = r.scale.getExtent(); const h = Math.abs(u[1] - u[0]); i = s ? l / h * s : l } + else { const c = t.getData(); i = Math.abs(o[1] - o[0]) / c.count() } const p = Er(t.get('barWidth'), i); const d = Er(t.get('barMaxWidth'), i); const f = Er(t.get('barMinWidth') || (Ox(t) ? 0.5 : 1), i); const g = t.get('barGap'); const y = t.get('barCategoryGap'); n.push({ bandWidth: i, barWidth: p, barMaxWidth: d, barMinWidth: f, barGap: g, barCategoryGap: y, axisKey: Tx(r), stackId: Ix(t) }) + }), Ax(n) + } function Ax(t) { + const e = {}; E(t, (t, n) => { const i = t.axisKey; const r = t.bandWidth; const o = e[i] || { bandWidth: r, remainedWidth: r, autoWidthCount: 0, categoryGap: null, gap: '20%', stacks: {} }; const a = o.stacks; e[i] = o; const s = t.stackId; a[s] || o.autoWidthCount++, a[s] = a[s] || { width: 0, maxWidth: 0 }; let l = t.barWidth; l && !a[s].width && (a[s].width = l, l = Math.min(o.remainedWidth, l), o.remainedWidth -= l); const u = t.barMaxWidth; u && (a[s].maxWidth = u); const h = t.barMinWidth; h && (a[s].minWidth = h); const c = t.barGap; c != null && (o.gap = c); const p = t.barCategoryGap; p != null && (o.categoryGap = p) }); const n = {}; return E(e, (t, e) => { + n[e] = {}; const i = t.stacks; const r = t.bandWidth; let o = t.categoryGap; if (o == null) { const a = G(i).length; o = `${Math.max(35 - 4 * a, 15)}%` } const s = Er(o, r); const l = Er(t.gap, 1); let u = t.remainedWidth; let h = t.autoWidthCount; let c = (u - s) / (h + (h - 1) * l); c = Math.max(c, 0), E(i, (t) => { + const e = t.maxWidth; const n = t.minWidth; if (t.width) { + i = t.width, e && (i = Math.min(i, e)), n && (i = Math.max(i, n)), t.width = i, u -= i + l * i, h-- + } + else { var i = c; e && e < i && (i = Math.min(e, u)), n && n > i && (i = n), i !== c && (t.width = i, u -= i + l * i, h--) } + }), c = (u - s) / (h + (h - 1) * l), c = Math.max(c, 0); let p; let d = 0; E(i, (t, e) => { t.width || (t.width = c), p = t, d += t.width * (1 + l) }), p && (d -= p.width * l); let f = -d / 2; E(i, (t, i) => { n[e][i] = n[e][i] || { bandWidth: r, offset: f, width: t.width }, f += t.width * (1 + l) }) + }), n + } function kx(t, e) { const n = Cx(t, e); const i = Dx(n); E(n, (t) => { const e = t.getData(); const n = t.coordinateSystem.getBaseAxis(); const r = Ix(t); const o = i[Tx(n)][r]; const a = o.offset; const s = o.width; e.setLayout({ bandWidth: o.bandWidth, offset: a, size: s }) }) } function Lx(t) { + return { seriesType: t, plan: yg(), reset(t) { + if (Px(t)) { + const e = t.getData(); const n = t.coordinateSystem; const i = n.getBaseAxis(); const r = n.getOtherAxis(i); const o = e.getDimensionIndex(e.mapDimension(r.dim)); const a = e.getDimensionIndex(e.mapDimension(i.dim)); const s = t.get('showBackground', !0); const l = e.mapDimension(r.dim); const u = e.getCalculationInfo('stackResultDimension'); const h = nx(e, l) && !!e.getCalculationInfo('stackedOnSeries'); const c = r.isHorizontal(); const p = (function (t, e) { return e.toGlobalCoord(e.dataToCoord(e.type === 'log' ? 1 : 0)) }(0, r)); const d = Ox(t); const f = t.get('barMinHeight') || 0; const g = u && e.getDimensionIndex(u); const y = e.getLayout('size'); const v = e.getLayout('offset'); return { progress(t, e) { + for (var i, r = t.count, l = d && Sx(3 * r), u = d && s && Sx(3 * r), m = d && Sx(r), x = n.master.getRect(), _ = c ? x.width : x.height, b = e.getStore(), w = 0; (i = t.next()) != null;) { + const S = b.get(h ? g : o, i); const M = b.get(a, i); let I = p; let T = void 0; h && (T = +S - b.get(o, i)); let C = void 0; let D = void 0; let A = void 0; let k = void 0; if (c) { var L = n.dataToPoint([S, M]); h && (I = n.dataToPoint([T, M])[0]), C = I, D = L[1] + v, A = L[0] - I, k = y, Math.abs(A) < f && (A = (A < 0 ? -1 : 1) * f) } + else { + L = n.dataToPoint([M, S]), h && (I = n.dataToPoint([M, T])[1]), C = L[0] + v, D = I, A = y, k = L[1] - I, Math.abs(k) < f && (k = (k <= 0 ? -1 : 1) * f) + }d ? (l[w] = C, l[w + 1] = D, l[w + 2] = c ? A : k, u && (u[w] = c ? x.x : C, u[w + 1] = c ? D : x.y, u[w + 2] = _), m[i] = i) : e.setItemLayout(i, { x: C, y: D, width: A, height: k }), w += 3 + }d && e.setLayout({ largePoints: l, largeDataIndices: m, largeBackgroundPoints: u, valueAxisHorizontal: c }) + } } + } + } } + } function Px(t) { return t.coordinateSystem && t.coordinateSystem.type === 'cartesian2d' } function Ox(t) { return t.pipelineContext && t.pipelineContext.large } const Rx = (function (t) { + function e(e) { const n = t.call(this, e) || this; return n.type = 'time', n } return n(e, t), e.prototype.getLabel = function (t) { const e = this.getSetting('useUTC'); return Vc(t.value, Pc[(function (t) { switch (t) { case 'year':case 'month':return 'day'; case 'millisecond':return 'millisecond'; default:return 'second' } }(Ec(this._minLevelUnit)))] || Pc.second, e, this.getSetting('locale')) }, e.prototype.getFormattedLabel = function (t, e, n) { + const i = this.getSetting('useUTC'); return (function (t, e, n, i, r) { + let o = null; if (X(n)) { + o = n + } + else if (U(n)) { + o = n(t.value, e, { level: t.level }) + } + else { + const a = A({}, kc); if (t.level > 0) { + for (var s = 0; s < Oc.length; ++s)a[Oc[s]] = `{primary|${ a[Oc[s]] }}`; + } const l = n ? !1 === n.inherit ? n : k(n, a) : a; const u = Bc(t.value, r); if (l[u]) { + o = l[u] + } + else if (l.inherit) { + for (s = Rc.indexOf(u) - 1; s >= 0; --s) { + if (l[u]) { o = l[u]; break } + }o = o || a.none + } if (Y(o)) { let h = t.level == null ? 0 : t.level >= 0 ? t.level : o.length + t.level; o = o[h = Math.min(h, o.length - 1)] } + } return Vc(new Date(t.value), o, r, i) + }(t, e, n, this.getSetting('locale'), i)) + }, e.prototype.getTicks = function () { + const t = this._interval; const e = this._extent; let n = []; if (!t) + return n; n.push({ value: e[0], level: 0 }); const i = this.getSetting('useUTC'); const r = (function (t, e, n, i) { + const o = Rc; let a = 0; function s(t, e, n, r, o, a, s) { for (var l = new Date(e), u = e, h = l[r](); u < n && u <= i[1];)s.push({ value: u }), h += t, l[o](h), u = l.getTime(); s.push({ value: u, notAdd: !0 }) } function l(t, r, o) { const a = []; const l = !r.length; if (!(function (t, e, n, i) { const r = jr(e); const o = jr(n); const a = function (t) { return Fc(r, t, i) === Fc(o, t, i) }; const s = function () { return a('year') }; const l = function () { return s() && a('month') }; const u = function () { return l() && a('day') }; const h = function () { return u() && a('hour') }; const c = function () { return h() && a('minute') }; const p = function () { return c() && a('second') }; switch (t) { case 'year':return s(); case 'month':return l(); case 'day':return u(); case 'hour':return h(); case 'minute':return c(); case 'second':return p(); case 'millisecond':return p() && a('millisecond') } }(Ec(t), i[0], i[1], n))) { l && (r = [{ value: Gx(new Date(i[0]), t, n) }, { value: i[1] }]); for (var u = 0; u < r.length - 1; u++) { const h = r[u].value; const c = r[u + 1].value; if (h !== c) { let p = void 0; let d = void 0; let f = void 0; switch (t) { case 'year':p = Math.max(1, Math.round(e / Dc / 365)), d = Gc(n), f = jc(n); break; case 'half-year':case 'quarter':case 'month':p = zx(e), d = Wc(n), f = qc(n); break; case 'week':case 'half-week':case 'day':p = Ex(e), d = Hc(n), f = Kc(n), !0; break; case 'half-day':case 'quarter-day':case 'hour':p = Vx(e), d = Yc(n), f = $c(n); break; case 'minute':p = Bx(e, !0), d = Uc(n), f = Jc(n); break; case 'second':p = Bx(e, !1), d = Xc(n), f = Qc(n); break; case 'millisecond':p = Fx(e), d = Zc(n), f = tp(n) }s(p, h, c, d, f, 0, a), t === 'year' && o.length > 1 && u === 0 && o.unshift({ value: o[0].value - p }) } } for (u = 0; u < a.length; u++)o.push(a[u]); return a } } for (var u = [], h = [], c = 0, p = 0, d = 0; d < o.length && a++ < 1e4; ++d) { + const f = Ec(o[d]); if (zc(o[d]) && (l(o[d], u[u.length - 1] || [], h), f !== (o[d + 1] ? Ec(o[d + 1]) : null))) { + if (h.length) { + p = c, h.sort((t, e) => { return t.value - e.value }); for (var g = [], y = 0; y < h.length; ++y) { const v = h[y].value; y !== 0 && h[y - 1].value === v || (g.push(h[y]), v >= i[0] && v <= i[1] && c++) } const m = (i[1] - i[0]) / e; if (c > 1.5 * m && p > m / 1.5) + break; if (u.push(g), c > m || t === o[d]) + break + }h = [] + } + } const x = B(z(u, (t) => { return B(t, (t) =>{ return t.value >= i[0] && t.value <= i[1] && !t.notAdd }) }), (t) => { return t.length > 0 }); const _ = []; const b = x.length - 1; for (d = 0; d < x.length; ++d) { + for (let w = x[d], S = 0; S < w.length; ++S)_.push({ value: w[S].value, level: b - d }) + } _.sort((t, e) => { return t.value - e.value }); const M = []; for (d = 0; d < _.length; ++d)d !== 0 && _[d].value === _[d - 1].value || M.push(_[d]); return M + }(this._minLevelUnit, this._approxInterval, i, e)); return (n = n.concat(r)).push({ value: e[1], level: 0 }), n + }, e.prototype.calcNiceExtent = function (t) { const e = this._extent; if (e[0] === e[1] && (e[0] -= Dc, e[1] += Dc), e[1] === -1 / 0 && e[0] === 1 / 0) { const n = new Date(); e[1] = +new Date(n.getFullYear(), n.getMonth(), n.getDate()), e[0] = e[1] - Dc } this.calcNiceTicks(t.splitNumber, t.minInterval, t.maxInterval) }, e.prototype.calcNiceTicks = function (t, e, n) { t = t || 10; const i = this._extent; const r = i[1] - i[0]; this._approxInterval = r / t, e != null && this._approxInterval < e && (this._approxInterval = e), n != null && this._approxInterval > n && (this._approxInterval = n); const o = Nx.length; const a = Math.min((function (t, e, n, i) { for (;n < i;) { const r = n + i >>> 1; t[r][1] < e ? n = r + 1 : i = r } return n }(Nx, this._approxInterval, 0, o)), o - 1); this._interval = Nx[a][1], this._minLevelUnit = Nx[Math.max(a - 1, 0)][0] }, e.prototype.parse = function (t) { return j(t) ? t : +jr(t) }, e.prototype.contain = function (t) { return fx(this.parse(t), this._extent) }, e.prototype.normalize = function (t) { return gx(this.parse(t), this._extent) }, e.prototype.scale = function (t) { return yx(t, this._extent) }, e.type = 'time', e + }(xx)); var Nx = [['second', 1e3], ['minute', 6e4], ['hour', 36e5], ['quarter-day', 216e5], ['half-day', 432e5], ['day', 10368e4], ['half-week', 3024e5], ['week', 6048e5], ['month', 26784e5], ['quarter', 8208e6], ['half-year', Ac / 2], ['year', Ac]]; function Ex(t, e) { return (t /= Dc) > 16 ? 16 : t > 7.5 ? 7 : t > 3.5 ? 4 : t > 1.5 ? 2 : 1 } function zx(t) { return (t /= 2592e6) > 6 ? 6 : t > 3 ? 3 : t > 2 ? 2 : 1 } function Vx(t) { return (t /= 36e5) > 12 ? 12 : t > 6 ? 6 : t > 3.5 ? 4 : t > 2 ? 2 : 1 } function Bx(t, e) { return (t /= e ? 6e4 : 1e3) > 30 ? 30 : t > 20 ? 20 : t > 15 ? 15 : t > 10 ? 10 : t > 5 ? 5 : t > 2 ? 2 : 1 } function Fx(t) { return $r(t, !0) } function Gx(t, e, n) { const i = new Date(t); switch (Ec(e)) { case 'year':case 'month':i[qc(n)](0); case 'day':i[Kc(n)](1); case 'hour':i[$c(n)](0); case 'minute':i[Jc(n)](0); case 'second':i[Qc(n)](0), i[tp(n)](0) } return i.getTime() }ox.registerClass(Rx); const Wx = ox.prototype; const Hx = xx.prototype; const Yx = zr; const Ux = Math.floor; const Xx = Math.ceil; const Zx = Math.pow; const jx = Math.log; const qx = (function (t) { function e() { const e = t !== null && t.apply(this, arguments) || this; return e.type = 'log', e.base = 10, e._originalScale = new xx(), e._interval = 0, e } return n(e, t), e.prototype.getTicks = function (t) { const e = this._originalScale; const n = this._extent; const i = e.getExtent(); return z(Hx.getTicks.call(this, t), function (t) { const e = t.value; let r = zr(this.base ** e); return r = e === n[0] && this._fixMin ? $x(r, i[0]) : r, { value: r = e === n[1] && this._fixMax ? $x(r, i[1]) : r } }, this) }, e.prototype.setExtent = function (t, e) { const n = this.base; t = jx(t) / jx(n), e = jx(e) / jx(n), Hx.setExtent.call(this, t, e) }, e.prototype.getExtent = function () { const t = this.base; const e = Wx.getExtent.call(this); e[0] = t ** e[0], e[1] = t ** e[1]; const n = this._originalScale.getExtent(); return this._fixMin && (e[0] = $x(e[0], n[0])), this._fixMax && (e[1] = $x(e[1], n[1])), e }, e.prototype.unionExtent = function (t) { this._originalScale.unionExtent(t); const e = this.base; t[0] = jx(t[0]) / jx(e), t[1] = jx(t[1]) / jx(e), Wx.unionExtent.call(this, t) }, e.prototype.unionExtentFromData = function (t, e) { this.unionExtent(t.getApproximateExtent(e)) }, e.prototype.calcNiceTicks = function (t) { t = t || 10; const e = this._extent; const n = e[1] - e[0]; if (!(n === 1 / 0 || n <= 0)) { let i = qr(n); for (t / n * i <= 0.5 && (i *= 10); !isNaN(i) && Math.abs(i) < 1 && Math.abs(i) > 0;)i *= 10; const r = [zr(Xx(e[0] / i) * i), zr(Ux(e[1] / i) * i)]; this._interval = i, this._niceExtent = r } }, e.prototype.calcNiceExtent = function (t) { Hx.calcNiceExtent.call(this, t), this._fixMin = t.fixMin, this._fixMax = t.fixMax }, e.prototype.parse = function (t) { return t }, e.prototype.contain = function (t) { return fx(t = jx(t) / jx(this.base), this._extent) }, e.prototype.normalize = function (t) { return gx(t = jx(t) / jx(this.base), this._extent) }, e.prototype.scale = function (t) { return t = yx(t, this._extent), this.base ** t }, e.type = 'log', e }(ox)); const Kx = qx.prototype; function $x(t, e) { return Yx(t, Br(e)) }Kx.getMinorTicks = Hx.getMinorTicks, Kx.getLabel = Hx.getLabel, ox.registerClass(qx); const Jx = (function () { + function t(t, e, n) { this._prepareParams(t, e, n) } return t.prototype._prepareParams = function (t, e, n) { + n[1] < n[0] && (n = [Number.NaN, Number.NaN]), this._dataMin = n[0], this._dataMax = n[1]; const i = this._isOrdinal = t.type === 'ordinal'; this._needCrossZero = t.type === 'interval' && e.getNeedCrossZero && e.getNeedCrossZero(); const r = this._modelMinRaw = e.get('min', !0); U(r) ? this._modelMinNum = n_(t, r({ min: n[0], max: n[1] })) : r !== 'dataMin' && (this._modelMinNum = n_(t, r)); const o = this._modelMaxRaw = e.get('max', !0); if (U(o) ? this._modelMaxNum = n_(t, o({ min: n[0], max: n[1] })) : o !== 'dataMax' && (this._modelMaxNum = n_(t, o)), i) { + this._axisDataLen = e.getCategories().length + } + else { const a = e.get('boundaryGap'); const s = Y(a) ? a : [a || 0, a || 0]; typeof s[0] == 'boolean' || typeof s[1] == 'boolean' ? this._boundaryGapInner = [0, 0] : this._boundaryGapInner = [gr(s[0], 1), gr(s[1], 1)] } + }, t.prototype.calculate = function () { const t = this._isOrdinal; const e = this._dataMin; const n = this._dataMax; const i = this._axisDataLen; const r = this._boundaryGapInner; const o = t ? null : n - e || Math.abs(e); let a = this._modelMinRaw === 'dataMin' ? e : this._modelMinNum; let s = this._modelMaxRaw === 'dataMax' ? n : this._modelMaxNum; let l = a != null; let u = s != null; a == null && (a = t ? i ? 0 : Number.NaN : e - r[0] * o), s == null && (s = t ? i ? i - 1 : Number.NaN : n + r[1] * o), (a == null || !isFinite(a)) && (a = Number.NaN), (s == null || !isFinite(s)) && (s = Number.NaN); const h = nt(a) || nt(s) || t && !i; this._needCrossZero && (a > 0 && s > 0 && !l && (a = 0), a < 0 && s < 0 && !u && (s = 0)); const c = this._determinedMin; const p = this._determinedMax; return c != null && (a = c, l = !0), p != null && (s = p, u = !0), { min: a, max: s, minFixed: l, maxFixed: u, isBlank: h } }, t.prototype.modifyDataMinMax = function (t, e) { this[t_[t]] = e }, t.prototype.setDeterminedMinMax = function (t, e) { this[Qx[t]] = e }, t.prototype.freeze = function () { this.frozen = !0 }, t + }()); var Qx = { min: '_determinedMin', max: '_determinedMax' }; var t_ = { min: '_dataMin', max: '_dataMax' }; function e_(t, e, n) { let i = t.rawExtentInfo; return i || (i = new Jx(t, e, n), t.rawExtentInfo = i, i) } function n_(t, e) { return e == null ? null : nt(e) ? Number.NaN : t.parse(e) } function i_(t, e) { + const n = t.type; const i = e_(t, e, t.getExtent()).calculate(); t.setBlank(i.isBlank); let r = i.min; let o = i.max; const a = e.ecModel; if (a && n === 'time') { + const s = Cx('bar', a); let l = !1; if (E(s, (t) => { l = l || t.getBaseAxis() === e.axis }), l) { + const u = Dx(s); const h = (function (t, e, n, i) { + const r = n.axis.getExtent(); const o = r[1] - r[0]; const a = (function (t, e, n) { if (t && e) { const i = t[Tx(e)]; return i } }(i, n.axis)); if (void 0 === a) + return { min: t, max: e }; let s = 1 / 0; E(a, (t) => { s = Math.min(t.offset, s) }); let l = -1 / 0; E(a, (t) => { l = Math.max(t.offset + t.width, l) }), s = Math.abs(s), l = Math.abs(l); const u = s + l; const h = e - t; const c = h / (1 - (s + l) / o) - h; return { min: t -= c * (s / u), max: e += c * (l / u) } + }(r, o, e, u)); r = h.min, o = h.max + } + } return { extent: [r, o], fixMin: i.minFixed, fixMax: i.maxFixed } + } function r_(t, e) { const n = e; const i = i_(t, n); const r = i.extent; const o = n.get('splitNumber'); t instanceof qx && (t.base = n.get('logBase')); const a = t.type; const s = n.get('interval'); const l = a === 'interval' || a === 'time'; t.setExtent(r[0], r[1]), t.calcNiceExtent({ splitNumber: o, fixMin: i.fixMin, fixMax: i.fixMax, minInterval: l ? n.get('minInterval') : null, maxInterval: l ? n.get('maxInterval') : null }), s != null && t.setInterval && t.setInterval(s) } function o_(t, e) { + if (e = e || t.get('type')) + switch (e) { case 'category':return new vx({ ordinalMeta: t.getOrdinalMeta ? t.getOrdinalMeta() : t.getCategories(), extent: [1 / 0, -1 / 0] }); case 'time':return new Rx({ locale: t.ecModel.getLocaleModel(), useUTC: t.ecModel.get('useUTC') }); default:return new (ox.getClass(e) || xx)() } + } function a_(t) { let e; let n; const i = t.getLabelModel().get('formatter'); const r = t.type === 'category' ? t.scale.getExtent()[0] : null; return t.scale.type === 'time' ? (n = i, function (e, i) { return t.scale.getFormattedLabel(e, i, n) }) : X(i) ? (function (e) { return function (n) { const i = t.scale.getLabel(n); return e.replace('{value}', i != null ? i : '') } }(i)) : U(i) ? (e = i, function (n, i) { return r != null && (i = n.value - r), e(s_(t, n), i, n.level != null ? { level: n.level } : null) }) : function (e) { return t.scale.getLabel(e) } } function s_(t, e) { return t.type === 'category' ? t.scale.getLabel(e) : e.value } function l_(t, e) { const n = e * Math.PI / 180; const i = t.width; const r = t.height; const o = i * Math.abs(Math.cos(n)) + Math.abs(r * Math.sin(n)); const a = i * Math.abs(Math.sin(n)) + Math.abs(r * Math.cos(n)); return new sr(t.x, t.y, o, a) } function u_(t) { const e = t.get('interval'); return e == null ? 'auto' : e } function h_(t) { return t.type === 'category' && u_(t.getLabelModel()) === 0 } function c_(t, e) { const n = {}; return E(t.mapDimensionsAll(e), (e) => { n[ix(t, e)] = !0 }), G(n) } const p_ = (function () { function t() {} return t.prototype.getNeedCrossZero = function () { return !this.option.scale }, t.prototype.getCoordSysModel = function () {}, t }()); const d_ = { isDimensionStacked: nx, enableDataStack: ex, getStackedDimension: ix }; const f_ = Object.freeze({ __proto__: null, createList(t) { return rx(null, t) }, getLayoutRect: xp, dataStack: d_, createScale(t, e) { let n = e; e instanceof dc || (n = new dc(e)); const i = o_(n); return i.setExtent(t[0], t[1]), r_(i, n), i }, mixinAxisModelCommonMethods(t) { R(t, p_) }, getECData: Hs, createTextStyle(t, e) { return Uh(t, null, null, (e = e || {}).state !== 'normal') }, createDimensions(t, e) { return Km(t, e).dimensions }, createSymbol: Ly, enableHoverEmphasis: Ol }); function g_(t, e) { return Math.abs(t - e) < 1e-8 } function y_(t, e, n) { + let i = 0; let r = t[0]; if (!r) + return !1; for (let o = 1; o < t.length; o++) { const a = t[o]; i += is(r[0], r[1], a[0], a[1], e, n), r = a } const s = t[0]; return g_(r[0], s[0]) && g_(r[1], s[1]) || (i += is(r[0], r[1], s[0], s[1], e, n)), i !== 0 + } const v_ = []; function m_(t, e) { for (let n = 0; n < t.length; n++)Ft(t[n], t[n], e) } function x_(t, e, n, i) { for (let r = 0; r < t.length; r++) { let o = t[r]; i && (o = i.project(o)), o && isFinite(o[0]) && isFinite(o[1]) && (Gt(e, e, o), Wt(n, n, o)) } } const __ = (function () { function t(t) { this.name = t } return t.prototype.setCenter = function (t) { this._center = t }, t.prototype.getCenter = function () { let t = this._center; return t || (t = this._center = this.calcCenter()), t }, t }()); const b_ = function (t, e) { this.type = 'polygon', this.exterior = t, this.interiors = e }; const w_ = function (t) { this.type = 'linestring', this.points = t }; const S_ = (function (t) { + function e(e, n, i) { const r = t.call(this, e) || this; return r.type = 'geoJSON', r.geometries = n, r._center = i && [i[0], i[1]], r } return n(e, t), e.prototype.calcCenter = function () { + for (var t, e = this.geometries, n = 0, i = 0; i < e.length; i++) { const r = e[i]; const o = r.exterior; const a = o && o.length; a > n && (t = r, n = a) } if (t) + return (function (t) { for (var e = 0, n = 0, i = 0, r = t.length, o = t[r - 1][0], a = t[r - 1][1], s = 0; s < r; s++) { const l = t[s][0]; const u = t[s][1]; const h = o * u - l * a; e += h, n += (o + l) * h, i += (a + u) * h, o = l, a = u } return e ? [n / e / 3, i / e / 3, e] : [t[0][0] || 0, t[0][1] || 0] }(t.exterior)); const s = this.getBoundingRect(); return [s.x + s.width / 2, s.y + s.height / 2] + }, e.prototype.getBoundingRect = function (t) { + let e = this._rect; if (e && !t) + return e; const n = [1 / 0, 1 / 0]; const i = [-1 / 0, -1 / 0]; return E(this.geometries, (e) => { e.type === 'polygon' ? x_(e.exterior, n, i, t) : E(e.points, (e) => { x_(e, n, i, t) }) }), isFinite(n[0]) && isFinite(n[1]) && isFinite(i[0]) && isFinite(i[1]) || (n[0] = n[1] = i[0] = i[1] = 0), e = new sr(n[0], n[1], i[0] - n[0], i[1] - n[1]), t || (this._rect = e), e + }, e.prototype.contain = function (t) { + const e = this.getBoundingRect(); const n = this.geometries; if (!e.contain(t[0], t[1])) + return !1; t:for (let i = 0, r = n.length; i < r; i++) { + const o = n[i]; if (o.type === 'polygon') { + const a = o.exterior; const s = o.interiors; if (y_(a, t[0], t[1])) { + for (let l = 0; l < (s ? s.length : 0); l++) { + if (y_(s[l], t[0], t[1])) + continue t + } return !0 + } + } + } return !1 + }, e.prototype.transformTo = function (t, e, n, i) { let r = this.getBoundingRect(); const o = r.width / r.height; n ? i || (i = n / o) : n = o * i; for (var a = new sr(t, e, n, i), s = r.calculateTransform(a), l = this.geometries, u = 0; u < l.length; u++) { const h = l[u]; h.type === 'polygon' ? (m_(h.exterior, s), E(h.interiors, (t) => { m_(t, s) })) : E(h.points, (t) => { m_(t, s) }) }(r = this._rect).copy(a), this._center = [r.x + r.width / 2, r.y + r.height / 2] }, e.prototype.cloneShallow = function (t) { t == null && (t = this.name); const n = new e(t, this.geometries, this._center); return n._rect = this._rect, n.transformTo = null, n }, e + }(__)); const M_ = (function (t) { function e(e, n) { const i = t.call(this, e) || this; return i.type = 'geoSVG', i._elOnlyForCalculate = n, i } return n(e, t), e.prototype.calcCenter = function () { for (var t = this._elOnlyForCalculate, e = t.getBoundingRect(), n = [e.x + e.width / 2, e.y + e.height / 2], i = Oi(v_), r = t; r && !r.isGeoSVGGraphicRoot;)Ni(i, r.getLocalTransform(), i), r = r.parent; return Bi(i, i), Ft(n, n, i), n }, e }(__)); function I_(t, e, n) { for (let i = 0; i < t.length; i++)t[i] = T_(t[i], e[i], n) } function T_(t, e, n) { for (var i = [], r = e[0], o = e[1], a = 0; a < t.length; a += 2) { let s = t.charCodeAt(a) - 64; let l = t.charCodeAt(a + 1) - 64; s = s >> 1 ^ -(1 & s), l = l >> 1 ^ -(1 & l), r = s += r, o = l += o, i.push([s / n, l / n]) } return i } function C_(t, e) { + return z(B((t = (function (t) { + if (!t.UTF8Encoding) + return t; const e = t; let n = e.UTF8Scale; return n == null && (n = 1024), E(e.features, (t) => { + const e = t.geometry; const i = e.encodeOffsets; const r = e.coordinates; if (i) + switch (e.type) { case 'LineString':e.coordinates = T_(r, i, n); break; case 'Polygon':case 'MultiLineString':I_(r, i, n); break; case 'MultiPolygon':E(r, (t, e) => { return I_(t, i[e], n) }) } + }), e.UTF8Encoding = !1, e + }(t))).features, (t) => { return t.geometry && t.properties && t.geometry.coordinates.length > 0 }), (t) => { const n = t.properties; const i = t.geometry; const r = []; switch (i.type) { case 'Polygon':var o = i.coordinates; r.push(new b_(o[0], o.slice(1))); break; case 'MultiPolygon':E(i.coordinates, (t) => { t[0] && r.push(new b_(t[0], t.slice(1))) }); break; case 'LineString':r.push(new w_([i.coordinates])); break; case 'MultiLineString':r.push(new w_(i.coordinates)) } const a = new S_(n[e || 'name'], r, n.cp); return a.properties = n, a }) + } const D_ = Object.freeze({ __proto__: null, linearMap: Nr, round: zr, asc: Vr, getPrecision: Br, getPrecisionSafe: Fr, getPixelPrecision: Gr, getPercentWithPrecision: Wr, MAX_SAFE_INTEGER: Yr, remRadian: Ur, isRadianAroundZero: Xr, parseDate: jr, quantity: qr, quantityExponent: Kr, nice: $r, quantile: Jr, reformIntervals: Qr, isNumeric: eo, numericToNumber: to }); const A_ = Object.freeze({ __proto__: null, parse: jr, format: Vc }); const k_ = Object.freeze({ __proto__: null, extendShape: fh, extendPath: yh, makePath: xh, makeImage: _h, mergePath: wh, resizePath: Sh, createIcon: Ph, updateProps: rh, initProps: oh, getTransform: Ih, clipPointsByRect: kh, clipRectByRect: Lh, registerShape: vh, getShapeClass: mh, Group: Cr, Image: _s, Text: ks, Circle: hu, Ellipse: pu, Sector: Cu, Ring: Au, Polygon: Pu, Polyline: Ru, Rect: Cs, Line: zu, BezierCurve: Gu, Arc: Hu, IncrementalDisplayable: th, CompoundPath: Yu, LinearGradient: Xu, RadialGradient: Zu, BoundingRect: sr }); const L_ = Object.freeze({ __proto__: null, addCommas: ep, toCamelCase: np, normalizeCssArray: ip, encodeHTML: ap, formatTpl: hp, getTooltipMarker: cp, formatTime(t, e, n) { t !== 'week' && t !== 'month' && t !== 'quarter' && t !== 'half-year' && t !== 'year' || (t = 'MM-dd\nyyyy'); const i = jr(e); const r = n ? 'getUTC' : 'get'; const o = i[`${r}FullYear`](); const a = i[`${r}Month`]() + 1; const s = i[`${r}Date`](); const l = i[`${r}Hours`](); const u = i[`${r}Minutes`](); const h = i[`${r}Seconds`](); const c = i[`${r}Milliseconds`](); return t.replace('MM', Nc(a, 2)).replace('M', a).replace('yyyy', o).replace('yy', Nc(`${o % 100}`, 2)).replace('dd', Nc(s, 2)).replace('d', s).replace('hh', Nc(l, 2)).replace('h', l).replace('mm', Nc(u, 2)).replace('m', u).replace('ss', Nc(h, 2)).replace('s', h).replace('SSS', Nc(c, 3)) }, capitalFirst(t) { return t ? t.charAt(0).toUpperCase() + t.substr(1) : t }, truncateText: $o, getTextRect(t, e, n, i, r, o, a, s) { return new ks({ style: { text: t, font: e, align: n, verticalAlign: i, padding: r, rich: o, overflow: a ? 'truncate' : null, lineHeight: s } }).getBoundingRect() } }); const P_ = Object.freeze({ __proto__: null, map: z, each: E, indexOf: P, inherits: O, reduce: V, filter: B, bind: W, curry: H, isArray: Y, isString: X, isObject: q, isFunction: U, extend: A, defaults: k, clone: T, merge: C }); const O_ = So(); function E_(t, e) { let n; let i; const r = z_(t, 'labels'); const o = u_(e); return V_(r, o) || (U(o) ? n = G_(t, o) : (i = o === 'auto' ? (function (t) { const e = O_(t).autoInterval; return e != null ? e : O_(t).autoInterval = t.calculateCategoryInterval() }(t)) : o, n = F_(t, i)), B_(r, o, { labels: n, labelCategoryInterval: i })) } function z_(t, e) { return O_(t)[e] || (O_(t)[e] = []) } function V_(t, e) { + for (let n = 0; n < t.length; n++) { + if (t[n].key === e) + return t[n].value + } + } function B_(t, e, n) { return t.push({ key: e, value: n }), n } function F_(t, e, n) { const i = a_(t); const r = t.scale; const o = r.getExtent(); const a = t.getLabelModel(); const s = []; const l = Math.max((e || 0) + 1, 1); let u = o[0]; const h = r.count(); u !== 0 && l > 1 && h / l > 2 && (u = Math.round(Math.ceil(u / l) * l)); const c = h_(t); const p = a.get('showMinLabel') || c; const d = a.get('showMaxLabel') || c; p && u !== o[0] && g(o[0]); for (var f = u; f <= o[1]; f += l)g(f); function g(t) { const e = { value: t }; s.push(n ? t : { formattedLabel: i(e), rawLabel: r.getLabel(e), tickValue: t }) } return d && f - l !== o[1] && g(o[1]), s } function G_(t, e, n) { const i = t.scale; const r = a_(t); const o = []; return E(i.getTicks(), (t) => { const a = i.getLabel(t); const s = t.value; e(t.value, a) && o.push(n ? s : { formattedLabel: r(t), rawLabel: a, tickValue: s }) }), o } const W_ = [0, 1]; const H_ = (function () { + function t(t, e, n) { this.onBand = !1, this.inverse = !1, this.dim = t, this.scale = e, this._extent = n || [0, 0] } return t.prototype.contain = function (t) { const e = this._extent; const n = Math.min(e[0], e[1]); const i = Math.max(e[0], e[1]); return t >= n && t <= i }, t.prototype.containData = function (t) { return this.scale.contain(t) }, t.prototype.getExtent = function () { return this._extent.slice() }, t.prototype.getPixelPrecision = function (t) { return Gr(t || this.scale.getExtent(), this._extent) }, t.prototype.setExtent = function (t, e) { const n = this._extent; n[0] = t, n[1] = e }, t.prototype.dataToCoord = function (t, e) { let n = this._extent; const i = this.scale; return t = i.normalize(t), this.onBand && i.type === 'ordinal' && Y_(n = n.slice(), i.count()), Nr(t, W_, n, e) }, t.prototype.coordToData = function (t, e) { let n = this._extent; const i = this.scale; this.onBand && i.type === 'ordinal' && Y_(n = n.slice(), i.count()); const r = Nr(t, n, W_, e); return this.scale.scale(r) }, t.prototype.pointToData = function (t, e) {}, t.prototype.getTicksCoords = function (t) { + const e = (t = t || {}).tickModel || this.getTickModel(); const n = z((function (t, e) { + return t.type === 'category' + ? (function (t, e) { + let n; let i; const r = z_(t, "ticks"); const o = u_(e); const a = V_(r, o); if (a) + return a; if (e.get('show') && !t.scale.isBlank() || (n = []), U(o)) { + n = G_(t, o, !0) +} else if (o === 'auto') { const s = E_(t, t.getLabelModel()); i = s.labelCategoryInterval, n = z(s.labels, (t) => { return t.tickValue }) } + else { + n = F_(t, i = o, !0) + } return B_(r, o, { ticks: n, tickCategoryInterval: i }) + }(t, e)) + : { ticks: z(t.scale.getTicks(), (t) => { return t.value }) } + }(this, e)).ticks, function (t) { return { coord: this.dataToCoord(this.scale.type === 'ordinal' ? this.scale.getRawOrdinalNumber(t) : t), tickValue: t } }, this); return (function (t, e, n, i) { + const r = e.length; if (t.onBand && !n && r) { + let o; let a; const s = t.getExtent(); if (r === 1) { + e[0].coord = s[0], o = e[1] = { coord: s[0] } + } + else { const l = e[r - 1].tickValue - e[0].tickValue; const u = (e[r - 1].coord - e[0].coord) / l; E(e, (t) => { t.coord -= u / 2 }), a = 1 + t.scale.getExtent()[1] - e[r - 1].tickValue, o = { coord: e[r - 1].coord + u * a }, e.push(o) } var h = s[0] > s[1]; c(e[0].coord, s[0]) && (i ? e[0].coord = s[0] : e.shift()), i && c(s[0], e[0].coord) && e.unshift({ coord: s[0] }), c(s[1], o.coord) && (i ? o.coord = s[1] : e.pop()), i && c(o.coord, s[1]) && e.push({ coord: s[1] }) + } function c(t, e) { return t = zr(t), e = zr(e), h ? t > e : t < e } + }(this, n, e.get('alignWithLabel'), t.clamp)), n + }, t.prototype.getMinorTicksCoords = function () { + if (this.scale.type === 'ordinal') + return []; let t = this.model.getModel('minorTick').get('splitNumber'); return t > 0 && t < 100 || (t = 5), z(this.scale.getMinorTicks(t), function (t) { return z(t, function (t) { return { coord: this.dataToCoord(t), tickValue: t } }, this) }, this) + }, t.prototype.getViewLabels = function () { return (function (t) { return t.type === 'category' ? (function (t) { const e = t.getLabelModel(); const n = E_(t, e); return !e.get('show') || t.scale.isBlank() ? { labels: [], labelCategoryInterval: n.labelCategoryInterval } : n }(t)) : (function (t) { const e = t.scale.getTicks(); const n = a_(t); return { labels: z(e, (e, i) => { return { level: e.level, formattedLabel: n(e, i), rawLabel: t.scale.getLabel(e), tickValue: e.value } }) } }(t)) }(this)).labels }, t.prototype.getLabelModel = function () { return this.model.getModel('axisLabel') }, t.prototype.getTickModel = function () { return this.model.getModel('axisTick') }, t.prototype.getBandWidth = function () { const t = this._extent; const e = this.scale.getExtent(); let n = e[1] - e[0] + (this.onBand ? 1 : 0); n === 0 && (n = 1); const i = Math.abs(t[1] - t[0]); return Math.abs(i) / n }, t.prototype.calculateCategoryInterval = function () { + return (function (t) { + const e = (function (t) { const e = t.getLabelModel(); return { axisRotate: t.getRotate ? t.getRotate() : t.isHorizontal && !t.isHorizontal() ? 90 : 0, labelRotate: e.get('rotate') || 0, font: e.getFont() } }(t)); const n = a_(t); const i = (e.axisRotate - e.labelRotate) / 180 * Math.PI; const r = t.scale; const o = r.getExtent(); const a = r.count(); if (o[1] - o[0] < 1) + return 0; let s = 1; a > 40 && (s = Math.max(1, Math.floor(a / 40))); for (var l = o[0], u = t.dataToCoord(l + 1) - t.dataToCoord(l), h = Math.abs(u * Math.cos(i)), c = Math.abs(u * Math.sin(i)), p = 0, d = 0; l <= o[1]; l += s) { var f; var g; const y = cr(n({ value: l }), e.font, 'center', 'top'); f = 1.3 * y.width, g = 1.3 * y.height, p = Math.max(p, f, 7), d = Math.max(d, g, 7) } let v = p / h; let m = d / c; isNaN(v) && (v = 1 / 0), isNaN(m) && (m = 1 / 0); let x = Math.max(0, Math.floor(Math.min(v, m))); const _ = O_(t.model); const b = t.getExtent(); const w = _.lastAutoInterval; const S = _.lastTickCount; return w != null && S != null && Math.abs(w - x) <= 1 && Math.abs(S - a) <= 1 && w > x && _.axisExtent0 === b[0] && _.axisExtent1 === b[1] ? x = w : (_.lastTickCount = a, _.lastAutoInterval = x, _.axisExtent0 = b[0], _.axisExtent1 = b[1]), x + }(this)) + }, t + }()); function Y_(t, e) { const n = (t[1] - t[0]) / e / 2; t[0] += n, t[1] -= n } const U_ = 2 * Math.PI; const X_ = qa.CMD; const Z_ = ['top', 'right', 'bottom', 'left']; function j_(t, e, n, i, r) { const o = n.width; const a = n.height; switch (t) { case 'top':i.set(n.x + o / 2, n.y - e), r.set(0, -1); break; case 'bottom':i.set(n.x + o / 2, n.y + a + e), r.set(0, 1); break; case 'left':i.set(n.x - e, n.y + a / 2), r.set(-1, 0); break; case 'right':i.set(n.x + o + e, n.y + a / 2), r.set(1, 0) } } function q_(t, e, n, i, r, o, a, s, l) { + a -= t, s -= e; const u = Math.sqrt(a * a + s * s); const h = (a /= u) * n + t; const c = (s /= u) * n + e; if (Math.abs(i - r) % U_ < 1e-4) + return l[0] = h, l[1] = c, u - n; if (o) { const p = i; i = ts(r), r = ts(p) } + else { + i = ts(i), r = ts(r) + }i > r && (r += U_); let d = Math.atan2(s, a); if (d < 0 && (d += U_), d >= i && d <= r || d + U_ >= i && d + U_ <= r) + return l[0] = h, l[1] = c, u - n; const f = n * Math.cos(i) + t; const g = n * Math.sin(i) + e; const y = n * Math.cos(r) + t; const v = n * Math.sin(r) + e; const m = (f - a) * (f - a) + (g - s) * (g - s); const x = (y - a) * (y - a) + (v - s) * (v - s); return m < x ? (l[0] = f, l[1] = g, Math.sqrt(m)) : (l[0] = y, l[1] = v, Math.sqrt(x)) + } function K_(t, e, n, i, r, o, a, s) { const l = r - t; const u = o - e; let h = n - t; let c = i - e; const p = Math.sqrt(h * h + c * c); let d = (l * (h /= p) + u * (c /= p)) / p; s && (d = Math.min(Math.max(d, 0), 1)), d *= p; const f = a[0] = t + d * h; const g = a[1] = e + d * c; return Math.sqrt((f - r) * (f - r) + (g - o) * (g - o)) } function $_(t, e, n, i, r, o, a) { n < 0 && (t += n, n = -n), i < 0 && (e += i, i = -i); const s = t + n; const l = e + i; const u = a[0] = Math.min(Math.max(r, t), s); const h = a[1] = Math.min(Math.max(o, e), l); return Math.sqrt((u - r) * (u - r) + (h - o) * (h - o)) } const J_ = []; function Q_(t, e, n) { const i = $_(e.x, e.y, e.width, e.height, t.x, t.y, J_); return n.set(J_[0], J_[1]), i } function tb(t, e, n) { for (var i, r, o = 0, a = 0, s = 0, l = 0, u = 1 / 0, h = e.data, c = t.x, p = t.y, d = 0; d < h.length;) { const f = h[d++]; d === 1 && (s = o = h[d], l = a = h[d + 1]); let g = u; switch (f) { case X_.M:o = s = h[d++], a = l = h[d++]; break; case X_.L:g = K_(o, a, h[d], h[d + 1], c, p, J_, !0), o = h[d++], a = h[d++]; break; case X_.C:g = je(o, a, h[d++], h[d++], h[d++], h[d++], h[d], h[d + 1], c, p, J_), o = h[d++], a = h[d++]; break; case X_.Q:g = tn(o, a, h[d++], h[d++], h[d], h[d + 1], c, p, J_), o = h[d++], a = h[d++]; break; case X_.A:var y = h[d++]; var v = h[d++]; var m = h[d++]; var x = h[d++]; var _ = h[d++]; var b = h[d++]; d += 1; var w = !!(1 - h[d++]); i = Math.cos(_) * m + y, r = Math.sin(_) * x + v, d <= 1 && (s = i, l = r), g = q_(y, v, x, _, _ + b, w, (c - y) * x / m + y, p, J_), o = Math.cos(_ + b) * m + y, a = Math.sin(_ + b) * x + v; break; case X_.R:g = $_(s = o = h[d++], l = a = h[d++], h[d++], h[d++], c, p, J_); break; case X_.Z:g = K_(o, a, s, l, c, p, J_, !0), o = s, a = l }g < u && (u = g, n.set(J_[0], J_[1])) } return u } const eb = new Ji(); const nb = new Ji(); const ib = new Ji(); const rb = new Ji(); const ob = new Ji(); function ab(t, e) { if (t) { const n = t.getTextGuideLine(); const i = t.getTextContent(); if (i && n) { const r = t.textGuideLineConfig || {}; const o = [[0, 0], [0, 0], [0, 0]]; const a = r.candidates || Z_; const s = i.getBoundingRect().clone(); s.applyTransform(i.getComputedTransform()); let l = 1 / 0; const u = r.anchor; const h = t.getComputedTransform(); const c = h && Bi([], h); const p = e.get('length2') || 0; u && ib.copy(u); for (let d = 0; d < a.length; d++) { j_(a[d], 0, s, eb, rb), Ji.scaleAndAdd(nb, eb, rb, p), nb.transform(c); const f = t.getBoundingRect(); const g = u ? u.distance(nb) : t instanceof gs ? tb(nb, t.path, ib) : Q_(nb, f, ib); g < l && (l = g, nb.transform(h), ib.transform(h), ib.toArray(o[0]), nb.toArray(o[1]), eb.toArray(o[2])) }ub(o, e.get('minTurnAngle')), n.setShape({ points: o }) } } } const sb = []; const lb = new Ji(); function ub(t, e) { + if (e <= 180 && e > 0) { + e = e / 180 * Math.PI, eb.fromArray(t[0]), nb.fromArray(t[1]), ib.fromArray(t[2]), Ji.sub(rb, eb, nb), Ji.sub(ob, ib, nb); const n = rb.len(); const i = ob.len(); if (!(n < 0.001 || i < 0.001)) { + rb.scale(1 / n), ob.scale(1 / i); const r = rb.dot(ob); if (Math.cos(e) < r) { + const o = K_(nb.x, nb.y, ib.x, ib.y, eb.x, eb.y, sb, !1); lb.fromArray(sb), lb.scaleAndAdd(ob, o / Math.tan(Math.PI - e)); const a = ib.x !== nb.x ? (lb.x - nb.x) / (ib.x - nb.x) : (lb.y - nb.y) / (ib.y - nb.y); if (isNaN(a)) + return; a < 0 ? Ji.copy(lb, nb) : a > 1 && Ji.copy(lb, ib), lb.toArray(t[1]) + } + } + } + } function hb(t, e, n) { + if (n <= 180 && n > 0) { + n = n / 180 * Math.PI, eb.fromArray(t[0]), nb.fromArray(t[1]), ib.fromArray(t[2]), Ji.sub(rb, nb, eb), Ji.sub(ob, ib, nb); const i = rb.len(); const r = ob.len(); if (!(i < 0.001 || r < 0.001) && (rb.scale(1 / i), ob.scale(1 / r), rb.dot(e) < Math.cos(n))) { + const o = K_(nb.x, nb.y, ib.x, ib.y, eb.x, eb.y, sb, !1); lb.fromArray(sb); const a = Math.PI / 2; const s = a + Math.acos(ob.dot(e)) - n; if (s >= a) { + Ji.copy(lb, ib) + } + else { + lb.scaleAndAdd(ob, o / Math.tan(Math.PI / 2 - s)); const l = ib.x !== nb.x ? (lb.x - nb.x) / (ib.x - nb.x) : (lb.y - nb.y) / (ib.y - nb.y); if (isNaN(l)) + return; l < 0 ? Ji.copy(lb, nb) : l > 1 && Ji.copy(lb, ib) + }lb.toArray(t[1]) + } + } + } function cb(t, e, n, i) { const r = n === 'normal'; const o = r ? t : t.ensureState(n); o.ignore = e; let a = i.get('smooth'); a && !0 === a && (a = 0.3), o.shape = o.shape || {}, a > 0 && (o.shape.smooth = a); const s = i.getModel('lineStyle').getLineStyle(); r ? t.useStyle(s) : o.style = s } function pb(t, e) { + const n = e.smooth; const i = e.points; if (i) { + if (t.moveTo(i[0][0], i[0][1]), n > 0 && i.length >= 3) { + const r = Et(i[0], i[1]); const o = Et(i[1], i[2]); if (!r || !o) + return t.lineTo(i[1][0], i[1][1]), void t.lineTo(i[2][0], i[2][1]); const a = Math.min(r, o) * n; const s = Bt([], i[1], i[0], a / r); const l = Bt([], i[1], i[2], a / o); const u = Bt([], s, l, 0.5); t.bezierCurveTo(s[0], s[1], s[0], s[1], u[0], u[1]), t.bezierCurveTo(l[0], l[1], l[0], l[1], i[2][0], i[2][1]) + } + else { + for (let h = 1; h < i.length; h++)t.lineTo(i[h][0], i[h][1]) + } + } + } function db(t, e, n) { + let i = t.getTextGuideLine(); const r = t.getTextContent(); if (r) { for (var o = e.normal, a = o.get('show'), s = r.ignore, l = 0; l < Ks.length; l++) { const u = Ks[l]; const h = e[u]; const c = u === 'normal'; if (h) { const p = h.get('show'); if ((c ? s : rt(r.states[u] && r.states[u].ignore, s)) || !rt(p, a)) { const d = c ? i : i && i.states[u]; d && (d.ignore = !0); continue }i || (i = new Ru(), t.setTextGuideLine(i), c || !s && a || cb(i, !0, 'normal', e.normal), t.stateProxy && (i.stateProxy = t.stateProxy)), cb(i, !1, u, h) } } if (i) { k(i.style, n), i.style.fill = null; const f = o.get('showAbove'); (t.textGuideLineConfig = t.textGuideLineConfig || {}).showAbove = f || !1, i.buildPath = pb } } + else { + i && t.removeTextGuideLine() + } + } function fb(t, e) { e = e || 'labelLine'; for (var n = { normal: t.getModel(e) }, i = 0; i < qs.length; i++) { const r = qs[i]; n[r] = t.getModel([r, e]) } return n } function gb(t) { for (var e = [], n = 0; n < t.length; n++) { const i = t[n]; if (!i.defaultAttr.ignore) { const r = i.label; const o = r.getComputedTransform(); const a = r.getBoundingRect(); const s = !o || o[1] < 1e-5 && o[2] < 1e-5; const l = r.style.margin || 0; const u = a.clone(); u.applyTransform(o), u.x -= l / 2, u.y -= l / 2, u.width += l, u.height += l; const h = s ? new Ju(a, o) : null; e.push({ label: r, labelLine: i.labelLine, rect: u, localRect: a, obb: h, priority: i.priority, defaultAttr: i.defaultAttr, layoutOption: i.computedLayoutOption, axisAligned: s, transform: o }) } } return e } function yb(t, e, n, i, r, o) { + const a = t.length; if (!(a < 2)) { t.sort((t, n) => { return t.rect[e] - n.rect[e] }); for (var s, l = 0, u = !1, h = 0, c = 0; c < a; c++) { const p = t[c]; const d = p.rect; (s = d[e] - l) < 0 && (d[e] -= s, p.label[e] -= s, u = !0), h += Math.max(-s, 0), l = d[e] + d[n] }h > 0 && o && _(-h / a, 0, a); var f; var g; var y = t[0]; var v = t[a - 1]; return m(), f < 0 && b(-f, 0.8), g < 0 && b(g, 0.8), m(), x(f, g, 1), x(g, f, -1), m(), f < 0 && w(-f), g < 0 && w(g), u } function m() { f = y.rect[e] - i, g = r - v.rect[e] - v.rect[n] } function x(t, e, n) { + if (t < 0) { + const i = Math.min(e, -t); if (i > 0) { _(i * n, 0, a); const r = i + t; r < 0 && b(-r * n, 1) } + else { + b(-t * n, 1) + } + } + } function _(n, i, r) { n !== 0 && (u = !0); for (let o = i; o < r; o++) { const a = t[o]; a.rect[e] += n, a.label[e] += n } } function b(i, r) { + for (var o = [], s = 0, l = 1; l < a; l++) { const u = t[l - 1].rect; const h = Math.max(t[l].rect[e] - u[e] - u[n], 0); o.push(h), s += h } if (s) { + const c = Math.min(Math.abs(i) / s, r); if (i > 0) { + for (l = 0; l < a - 1; l++)_(o[l] * c, 0, l + 1) + } + else { + for (l = a - 1; l > 0; l--)_(-o[l - 1] * c, l, a) + } + } + } function w(t) { + const e = t < 0 ? -1 : 1; t = Math.abs(t); for (let n = Math.ceil(t / (a - 1)), i = 0; i < a - 1; i++) { + if (e > 0 ? _(n, 0, i + 1) : _(-n, a - i - 1, a), (t -= n) <= 0) + return + } + } + } function vb(t, e, n, i) { return yb(t, 'y', 'height', e, n, i) } function mb(t) { const e = []; t.sort((t, e) => { return e.priority - t.priority }); const n = new sr(0, 0, 0, 0); function i(t) { if (!t.ignore) { const e = t.ensureState('emphasis'); e.ignore == null && (e.ignore = !1) }t.ignore = !0 } for (let r = 0; r < t.length; r++) { const o = t[r]; const a = o.axisAligned; const s = o.localRect; const l = o.transform; const u = o.label; const h = o.labelLine; n.copy(o.rect), n.width -= 0.1, n.height -= 0.1, n.x += 0.05, n.y += 0.05; for (var c = o.obb, p = !1, d = 0; d < e.length; d++) { const f = e[d]; if (n.intersect(f.rect)) { if (a && f.axisAligned) { p = !0; break } if (f.obb || (f.obb = new Ju(f.localRect, f.transform)), c || (c = new Ju(s, l)), c.intersect(f.obb)) { p = !0; break } } }p ? (i(u), h && i(h)) : (u.attr('ignore', o.defaultAttr.ignore), h && h.attr('ignore', o.defaultAttr.labelGuideIgnore), e.push(o)) } } function xb(t) { if (t) { for (var e = [], n = 0; n < t.length; n++)e.push(t[n].slice()); return e } } function _b(t, e) { const n = t.label; const i = e && e.getTextGuideLine(); return { dataIndex: t.dataIndex, dataType: t.dataType, seriesIndex: t.seriesModel.seriesIndex, text: t.label.style.text, rect: t.hostRect, labelRect: t.rect, align: n.style.align, verticalAlign: n.style.verticalAlign, labelLinePoints: xb(i && i.shape.points) } } const bb = ['align', 'verticalAlign', 'width', 'height', 'fontSize']; const wb = new qi(); const Sb = So(); const Mb = So(); function Ib(t, e, n) { for (let i = 0; i < n.length; i++) { const r = n[i]; e[r] != null && (t[r] = e[r]) } } const Tb = ['x', 'y', 'rotation']; const Cb = (function () { + function t() { this._labelList = [], this._chartViewList = [] } return t.prototype.clearLabels = function () { this._labelList = [], this._chartViewList = [] }, t.prototype._addLabel = function (t, e, n, i, r) { const o = i.style; const a = i.__hostTarget.textConfig || {}; const s = i.getComputedTransform(); const l = i.getBoundingRect().plain(); sr.applyTransform(l, l, s), s ? wb.setLocalTransform(s) : (wb.x = wb.y = wb.rotation = wb.originX = wb.originY = 0, wb.scaleX = wb.scaleY = 1); let u; const h = i.__hostTarget; if (h) { u = h.getBoundingRect().plain(); const c = h.getComputedTransform(); sr.applyTransform(u, u, c) } const p = u && h.getTextGuideLine(); this._labelList.push({ label: i, labelLine: p, seriesModel: n, dataIndex: t, dataType: e, layoutOption: r, computedLayoutOption: null, rect: l, hostRect: u, priority: u ? u.width * u.height : 0, defaultAttr: { ignore: i.ignore, labelGuideIgnore: p && p.ignore, x: wb.x, y: wb.y, scaleX: wb.scaleX, scaleY: wb.scaleY, rotation: wb.rotation, style: { x: o.x, y: o.y, align: o.align, verticalAlign: o.verticalAlign, width: o.width, height: o.height, fontSize: o.fontSize }, cursor: i.cursor, attachedPos: a.position, attachedRot: a.rotation } }) }, t.prototype.addLabelsOfSeries = function (t) { + const e = this; this._chartViewList.push(t); const n = t.__model; const i = n.get('labelLayout'); (U(i) || G(i).length) && t.group.traverse((t) => { + if (t.ignore) + return !0; const r = t.getTextContent(); const o = Hs(t); r && !r.disableLabelLayout && e._addLabel(o.dataIndex, o.dataType, n, r, i) + }) + }, t.prototype.updateLayoutConfig = function (t) { + const e = t.getWidth(); const n = t.getHeight(); function i(t, e) { return function () { ab(t, e) } } for (let r = 0; r < this._labelList.length; r++) { + const o = this._labelList[r]; const a = o.label; const s = a.__hostTarget; const l = o.defaultAttr; let u = void 0; u = (u = U(o.layoutOption) ? o.layoutOption(_b(o, s)) : o.layoutOption) || {}, o.computedLayoutOption = u; const h = Math.PI / 180; s && s.setTextConfig({ local: !1, position: u.x != null || u.y != null ? null : l.attachedPos, rotation: u.rotate != null ? u.rotate * h : l.attachedRot, offset: [u.dx || 0, u.dy || 0] }); let c = !1; if (u.x != null ? (a.x = Er(u.x, e), a.setStyle('x', 0), c = !0) : (a.x = l.x, a.setStyle('x', l.style.x)), u.y != null ? (a.y = Er(u.y, n), a.setStyle('y', 0), c = !0) : (a.y = l.y, a.setStyle('y', l.style.y)), u.labelLinePoints) { const p = s.getTextGuideLine(); p && (p.setShape({ points: u.labelLinePoints }), c = !1) }Sb(a).needsUpdateLabelLine = c, a.rotation = u.rotate != null ? u.rotate * h : l.rotation, a.scaleX = l.scaleX, a.scaleY = l.scaleY; for (let d = 0; d < bb.length; d++) { const f = bb[d]; a.setStyle(f, u[f] != null ? u[f] : l.style[f]) } if (u.draggable) { if (a.draggable = !0, a.cursor = 'move', s) { let g = o.seriesModel; o.dataIndex != null && (g = o.seriesModel.getData(o.dataType).getItemModel(o.dataIndex)), a.on('drag', i(s, g.getModel('labelLine'))) } } + else { + a.off('drag'), a.cursor = l.cursor + } + } + }, t.prototype.layout = function (t) { const n = t.getWidth(); const i = t.getHeight(); const r = gb(this._labelList); const o = B(r, (t) => { return 'shiftX' === t.layoutOption.moveOverlap }); const a = B(r, (t) => { return t.layoutOption.moveOverlap === 'shiftY' }); yb(o, 'x', 'width', 0, n, undefined), vb(a, 0, i), mb(B(r, (t) => { return t.layoutOption.hideOverlap })) }, t.prototype.processLabelsOverall = function () { + const t = this; E(this._chartViewList, (e) => { + const n = e.__model; const i = e.ignoreLabelLineUpdate; const r = n.isAnimationEnabled(); e.group.traverse((e) => { + if (e.ignore && !e.forceLabelAnimation) + return !0; let o = !i; const a = e.getTextContent(); !o && a && (o = Sb(a).needsUpdateLabelLine), o && t._updateLabelLine(e, n), r && t._animateLabels(e, n) + }) + }) + }, t.prototype._updateLabelLine = function (t, e) { const n = t.getTextContent(); const i = Hs(t); const r = i.dataIndex; if (n && r != null) { const o = e.getData(i.dataType); const a = o.getItemModel(r); const s = {}; const l = o.getItemVisual(r, 'style'); const u = o.getVisual('drawType'); s.stroke = l[u]; const h = a.getModel('labelLine'); db(t, fb(a), s), ab(t, h) } }, t.prototype._animateLabels = function (t, e) { + const n = t.getTextContent(); const i = t.getTextGuideLine(); if (n && (t.forceLabelAnimation || !n.ignore && !n.invisible && !t.disableLabelAnimation && !ah(t))) { + var r = (d = Sb(n)).oldLayout; const o = Hs(t); const a = o.dataIndex; const s = { x: n.x, y: n.y, rotation: n.rotation }; const l = e.getData(o.dataType); if (r) { n.attr(r); const u = t.prevStates; u && (P(u, 'select') >= 0 && n.attr(d.oldLayoutSelect), P(u, 'emphasis') >= 0 && n.attr(d.oldLayoutEmphasis)), rh(n, s, e, a) } + else if (n.attr(s), !Jh(n).valueAnimation) { const h = rt(n.style.opacity, 1); n.style.opacity = 0, oh(n, { style: { opacity: h } }, e, a) } if (d.oldLayout = s, n.states.select) { const c = d.oldLayoutSelect = {}; Ib(c, s, Tb), Ib(c, n.states.select, Tb) } if (n.states.emphasis) { const p = d.oldLayoutEmphasis = {}; Ib(p, s, Tb), Ib(p, n.states.emphasis, Tb) }tc(n, a, l, e, e) + } if (i && !i.ignore && !i.invisible) { r = (d = Mb(i)).oldLayout; var d; const f = { points: i.shape.points }; r ? (i.attr({ shape: r }), rh(i, { shape: f }, e)) : (i.setShape(f), i.style.strokePercent = 0, oh(i, { style: { strokePercent: 1 } }, e)), d.oldLayout = f } + }, t + }()); const Db = So(); const Ab = Math.sin; const kb = Math.cos; const Lb = Math.PI; const Pb = 2 * Math.PI; const Ob = 180 / Lb; const Rb = (function () { + function t() {} return t.prototype.reset = function (t) { this._start = !0, this._d = [], this._str = '', this._p = 10 ** (t || 4) }, t.prototype.moveTo = function (t, e) { this._add('M', t, e) }, t.prototype.lineTo = function (t, e) { this._add('L', t, e) }, t.prototype.bezierCurveTo = function (t, e, n, i, r, o) { this._add('C', t, e, n, i, r, o) }, t.prototype.quadraticCurveTo = function (t, e, n, i) { this._add('Q', t, e, n, i) }, t.prototype.arc = function (t, e, n, i, r, o) { this.ellipse(t, e, n, n, 0, i, r, o) }, t.prototype.ellipse = function (t, e, n, i, r, o, a, s) { + let d; const l = a - o; const u = !s; const h = Math.abs(l); const c = En(h - Pb) || (u ? l >= Pb : -l >= Pb); const p = l > 0 ? l % Pb : l % Pb + Pb; d = !!c || !En(h) && p >= Lb == !!u; const f = t + n * kb(o); const g = e + i * Ab(o); this._start && this._add('M', f, g); const y = Math.round(r * Ob); if (c) { const v = 1 / this._p; const m = (u ? 1 : -1) * (Pb - v); this._add('A', n, i, y, 1, +u, t + n * kb(o + m), e + i * Ab(o + m)), v > 0.01 && this._add('A', n, i, y, 0, +u, f, g) } + else { const x = t + n * kb(a); const _ = e + i * Ab(a); this._add('A', n, i, y, +d, +u, x, _) } + }, t.prototype.rect = function (t, e, n, i) { this._add('M', t, e), this._add('l', n, 0), this._add('l', 0, i), this._add('l', -n, 0), this._add('Z') }, t.prototype.closePath = function () { this._d.length > 0 && this._add('Z') }, t.prototype._add = function (t, e, n, i, r, o, a, s, l) { + for (var u = [], h = this._p, c = 1; c < arguments.length; c++) { + const p = arguments[c]; if (isNaN(p)) + return void (this._invalid = !0); u.push(Math.round(p * h) / h) + } this._d.push(t + u.join(' ')), this._start = t === 'Z' + }, t.prototype.generateStr = function () { this._str = this._invalid ? '' : this._d.join(''), this._d = [] }, t.prototype.getStr = function () { return this._str }, t + }()); const Nb = 'none'; const Eb = Math.round; const zb = ['lineCap', 'miterLimit', 'lineJoin']; const Vb = z(zb, (t) => { return `stroke-${t.toLowerCase()}` }); const Fb = 'http://www.w3.org/2000/svg'; const Gb = 'http://www.w3.org/1999/xlink'; function Wb(t) { return document.createElementNS(Fb, t) } function Hb(t, e, n, i, r) { return { tag: t, attrs: n || {}, children: i, text: r, key: e } } function Yb(t, e) { + const n = (e = e || {}).newline ? '\n' : ''; return (function t(e) { + const i = e.children; const r = e.tag; return `${(function (t, e) { + const n = []; if (e) { + for (const i in e) { const r = e[i]; let o = i; !1 !== r && (!0 !== r && r != null && (o += `="${r}"`), n.push(o)) } + } return `<${t} ${n.join(' ')}>` + }(r, e.attrs)) + (e.text || '') + (i ? `${n}${z(i, (e) => { return t(e) }).join(n)}${n}` : '')}` + }(t)) + } function Ub(t) { return { zrId: t, shadowCache: {}, patternCache: {}, gradientCache: {}, clipPathCache: {}, defs: {}, cssNodes: {}, cssAnims: {}, cssClassIdx: 0, cssAnimIdx: 0, shadowIdx: 0, gradientIdx: 0, patternIdx: 0, clipPathIdx: 0 } } function Xb(t, e, n, i) { return Hb('svg', 'root', { 'width': t, 'height': e, 'xmlns': Fb, 'xmlns:xlink': Gb, 'version': '1.1', 'baseProfile': 'full', 'viewBox': !!i && `0 0 ${t} ${e}` }, n) } const Zb = { cubicIn: '0.32,0,0.67,0', cubicOut: '0.33,1,0.68,1', cubicInOut: '0.65,0,0.35,1', quadraticIn: '0.11,0,0.5,0', quadraticOut: '0.5,1,0.89,1', quadraticInOut: '0.45,0,0.55,1', quarticIn: '0.5,0,0.75,0', quarticOut: '0.25,1,0.5,1', quarticInOut: '0.76,0,0.24,1', quinticIn: '0.64,0,0.78,0', quinticOut: '0.22,1,0.36,1', quinticInOut: '0.83,0,0.17,1', sinusoidalIn: '0.12,0,0.39,0', sinusoidalOut: '0.61,1,0.88,1', sinusoidalInOut: '0.37,0,0.63,1', exponentialIn: '0.7,0,0.84,0', exponentialOut: '0.16,1,0.3,1', exponentialInOut: '0.87,0,0.13,1', circularIn: '0.55,0,1,0.45', circularOut: '0,0.55,0.45,1', circularInOut: '0.85,0,0.15,1' }; const jb = 'transform-origin'; function qb(t, e, n) { const i = A({}, t.shape); A(i, e), t.buildPath(n, i); const r = new Rb(); return r.reset(Yn(t)), n.rebuildPath(r, 1), r.generateStr(), r.getStr() } function Kb(t, e) { const n = e.originX; const i = e.originY; (n || i) && (t[jb] = `${n}px ${i}px`) } const $b = { fill: 'fill', opacity: 'opacity', lineWidth: 'stroke-width', lineDashOffset: 'stroke-dashoffset' }; function Jb(t, e) { const n = `${e.zrId}-ani-${e.cssAnimIdx++}`; return e.cssAnims[n] = t, n } function Qb(t) { return X(t) ? Zb[t] ? `cubic-bezier(${Zb[t]})` : rn(t) ? t : '' : '' } function tw(t, e, n, i) { + const r = t.animators; const o = r.length; const a = []; if (t instanceof Yu) { + if (y = (function (t, e, n) { let i; let r; const o = t.shape.paths; const a = {}; if (E(o, (t) => { const e = Ub(n.zrId); e.animation = !0, tw(t, {}, e, !0); const o = e.cssAnims; const s = e.cssNodes; const l = G(o); const u = l.length; if (u) { const h = o[r = l[u - 1]]; for (const c in h) { const p = h[c]; a[c] = a[c] || { d: '' }, a[c].d += p.d || '' } for (const d in s) { const f = s[d].animation; f.includes(r) && (i = f) } } }), i) { e.d = !1; const s = Jb(a, n); return i.replace(r, s) } }(t, e, n))) + a.push(y); else if (!o) + return + } + else if (!o) { + return + } for (var s = {}, l = 0; l < o; l++) { const u = r[l]; const h = [`${u.getMaxTime() / 1e3}s`]; const c = Qb(u.getClip().easing); const p = u.getDelay(); c ? h.push(c) : h.push('linear'), p && h.push(`${p / 1e3}s`), u.getLoop() && h.push('infinite'); const d = h.join(' '); s[d] = s[d] || [d, []], s[d][1].push(u) } function f(r) { + let o; const a = r[1]; const s = a.length; const l = {}; const u = {}; const h = {}; function c(t, e, n) { + for (let i = t.getTracks(), r = t.getMaxTime(), o = 0; o < i.length; o++) { + const a = i[o]; if (a.needsAnimate()) { + const s = a.keyframes; let l = a.propName; if (n && (l = n(l)), l) { + for (let u = 0; u < s.length; u++) { const h = s[u]; const c = `${Math.round(h.time / r * 100)}%`; const p = Qb(h.easing); const d = h.rawValue; (X(d) || j(d)) && (e[c] = e[c] || {}, e[c][l] = h.rawValue, p && (e[c]['animation-timing-function'] = p)) } + } + } + } + } for (var p = 0; p < s; p++)(w = (b = a[p]).targetName) ? w === 'shape' && c(b, u) : !i && c(b, l); for (var d in l) { const f = {}; $i(f, t), A(f, l[d]); const g = Un(f); var y = l[d]['animation-timing-function']; h[d] = g ? { transform: g } : {}, Kb(h[d], f), y && (h[d]['animation-timing-function'] = y) } let v = !0; for (var d in u) { h[d] = h[d] || {}; const m = !o; y = u[d]['animation-timing-function'], m && (o = new qa()); const x = o.len(); o.reset(), h[d].d = qb(t, u[d], o); const _ = o.len(); if (!m && x !== _) { v = !1; break }y && (h[d]['animation-timing-function'] = y) } if (!v) { + for (var d in h) delete h[d].d + } if (!i) { + for (p = 0; p < s; p++) { var b, w; (w = (b = a[p]).targetName) === 'style' && c(b, h, (t) => { return $b[t] }) } + } let S; const M = G(h); let I = !0; for (p = 1; p < M.length; p++) { const T = M[p - 1]; const C = M[p]; if (h[T][jb] !== h[C][jb]) { I = !1; break }S = h[T][jb] } if (I && S) { for (var d in h)h[d][jb] && delete h[d][jb]; e[jb] = S } if (B(M, (t) => { return G(h[t]).length > 0 }).length) + return `${Jb(h, n)} ${r[0]} both` + } for (const g in s) { var y; (y = f(s[g])) && a.push(y) } if (a.length) { const v = `${n.zrId}-cls-${n.cssClassIdx++}`; n.cssNodes[`.${v}`] = { animation: a.join(',') }, e.class = v } + } const ew = Math.round; function nw(t) { return t && X(t.src) } function iw(t) { return t && U(t.toDataURL) } function rw(t, e, n, i) { + (function (t, e, n, i) { + const r = e.opacity == null ? 1 : e.opacity; if (n instanceof _s) { + t('opacity', r) + } + else { + if (function (t) { const e = t.fill; return e != null && e !== Nb }(e)) { const o = Rn(e.fill); t('fill', o.color); const a = e.fillOpacity != null ? e.fillOpacity * o.opacity * r : o.opacity * r; (i || a < 1) && t('fill-opacity', a) } + else { + t('fill', Nb) + } if (function (t) { const e = t.stroke; return e != null && e !== Nb }(e)) { + const s = Rn(e.stroke); t('stroke', s.color); const l = e.strokeNoScale ? n.getLineScale() : 1; const u = l ? (e.lineWidth || 0) / l : 0; const h = e.strokeOpacity != null ? e.strokeOpacity * s.opacity * r : s.opacity * r; const c = e.strokeFirst; if ((i || u !== 1) && t('stroke-width', u), (i || c) && t('paint-order', c ? 'stroke' : 'fill'), (i || h < 1) && t('stroke-opacity', h), e.lineDash) { const p = Vy(n); const d = p[0]; let f = p[1]; d && (f = Eb(f || 0), t('stroke-dasharray', d.join(',')), (f || i) && t('stroke-dashoffset', f)) } + else { + i && t('stroke-dasharray', Nb) + } for (let g = 0; g < zb.length; g++) { const y = zb[g]; if (i || e[y] !== ps[y]) { const v = e[y] || ps[y]; v && t(Vb[g], v) } } + } + else { + i && t('stroke', Nb) + } + } + })((r, o) => { + const a = r === 'fill' || r === 'stroke'; a && (function (t) { return t && (t.type === 'linear' || t.type === 'radial') }(o)) + ? (function (t, e, n, i) { + let r; const o = t[n]; const a = { gradientUnits: o.global ? 'userSpaceOnUse' : 'objectBoundingBox' }; if (Gn(o)) { + r = 'linearGradient', a.x1 = o.x, a.y1 = o.y, a.x2 = o.x2, a.y2 = o.y2 + } + else { + if (!Wn(o)) + return; r = 'radialGradient', a.cx = rt(o.x, 0.5), a.cy = rt(o.y, 0.5), a.r = rt(o.r, 0.5) + } for (var s = o.colorStops, l = [], u = 0, h = s.length; u < h; ++u) { const c = `${100 * Vn(s[u].offset)}%`; const p = Rn(s[u].color); const d = p.color; const f = p.opacity; const g = { offset: c }; g['stop-color'] = d, f < 1 && (g['stop-opacity'] = f), l.push(Hb('stop', `${u}`, g)) } const y = Yb(Hb(r, '', a, l)); const v = i.gradientCache; let m = v[y]; m || (m = `${i.zrId}-g${i.gradientIdx++}`, v[y] = m, a.id = m, i.defs[m] = Hb(r, m, a, l)), e[n] = Hn(m) + }(e, t, r, i)) + : a && (function (t) { return Fn(t) || (function (t) { return t && !!t.svgElement }(t)) }(o)) + ? (function (t, e, n, i) { + let r; const o = t.style[n]; const a = { patternUnits: 'userSpaceOnUse' }; if (Fn(o)) { + let s = o.imageWidth; let l = o.imageHeight; let u = void 0; const h = o.image; if (X(h) ? u = h : nw(h) ? u = h.src : iw(h) && (u = h.toDataURL()), typeof Image == 'undefined') { const c = 'Image width/height must been given explictly in svg-ssr renderer.'; lt(s, c), lt(l, c) } + else if (s == null || l == null) { const p = function (t, e) { if (t) { const n = t.elm; const i = t.attrs.width = s || e.width; const r = t.attrs.height = l || e.height; n && (n.setAttribute('width', i), n.setAttribute('height', r)) } }; const d = Zo(u, null, t, (t) => { p(f, t), p(r, t) }); d && d.width && d.height && (s = s || d.width, l = l || d.height) }r = Hb('image', 'img', { href: u, width: s, height: l }), a.width = s, a.height = l + } + else { + o.svgElement && (r = T(o.svgElement), a.width = o.svgWidth, a.height = o.svgHeight) + } if (r) { a.patternTransform = Un(o); var f = Hb('pattern', '', a, [r]); const g = Yb(f); const y = i.patternCache; let v = y[g]; v || (v = `${i.zrId}-p${i.patternIdx++}`, y[g] = v, a.id = v, f = i.defs[v] = Hb('pattern', v, a, [r])), e[n] = Hn(v) } + }(n, t, r, i)) + : t[r] = o + }, e, n, !1), (function (t, e, n) { + const i = t.style; if (function (t) { return t && (t.shadowBlur || t.shadowOffsetX || t.shadowOffsetY) }(i)) { + const r = (function (t) { const e = t.style; const n = t.getGlobalScale(); return [e.shadowColor, (e.shadowBlur || 0).toFixed(2), (e.shadowOffsetX || 0).toFixed(2), (e.shadowOffsetY || 0).toFixed(2), n[0], n[1]].join(',') }(t)); const o = n.shadowCache; let a = o[r]; if (!a) { + const s = t.getGlobalScale(); const l = s[0]; const u = s[1]; if (!l || !u) + return; const h = i.shadowOffsetX || 0; const c = i.shadowOffsetY || 0; const p = i.shadowBlur; const d = Rn(i.shadowColor); const f = d.opacity; const g = d.color; const y = `${p / 2 / l} ${p / 2 / u}`; a = `${n.zrId}-s${n.shadowIdx++}`, n.defs[a] = Hb('filter', a, { id: a, x: '-100%', y: '-100%', width: '300%', height: '300%' }, [Hb('feDropShadow', '', { 'dx': h / l, 'dy': c / u, 'stdDeviation': y, 'flood-color': g, 'flood-opacity': f })]), o[r] = a + }e.filter = Hn(a) + } + }(n, t, i)) + } function ow(t) { return En(t[0] - 1) && En(t[1]) && En(t[2]) && En(t[3] - 1) } function aw(t, e, n) { if (e && (!(function (t) { return En(t[4]) && En(t[5]) }(e)) || !ow(e))) { const i = n ? 10 : 1e4; t.transform = ow(e) ? `translate(${ew(e[4] * i) / i} ${ew(e[5] * i) / i})` : (function (t) { return `matrix(${zn(t[0])},${zn(t[1])},${zn(t[2])},${zn(t[3])},${Vn(t[4])},${Vn(t[5])})` }(e)) } } function sw(t, e, n) { for (var i = t.points, r = [], o = 0; o < i.length; o++)r.push(ew(i[o][0] * n) / n), r.push(ew(i[o][1] * n) / n); e.points = r.join(' ') } function lw(t) { return !t.smooth } let uw; let hw; const cw = { circle: [(uw = ['cx', 'cy', 'r'], hw = z(uw, (t) => { return typeof t == 'string' ? [t, t] : t }), function (t, e, n) { for (let i = 0; i < hw.length; i++) { const r = hw[i]; const o = t[r[0]]; o != null && (e[r[1]] = ew(o * n) / n) } })], polyline: [sw, lw], polygon: [sw, lw] }; function pw(t, e) { + const n = t.style; const i = t.shape; const r = cw[t.type]; const o = {}; const a = e.animation; let s = 'path'; const l = t.style.strokePercent; const u = e.compress && Yn(t) || 4; if (!r || e.willUpdate || r[1] && !r[1](i) || a && (function (t) { + for (let e = t.animators, n = 0; n < e.length; n++) { + if (e[n].targetName === 'shape') + return !0 + } return !1 + }(t)) || l < 1) { t.path || t.createPathProxy(); const h = t.path; t.shapeChanged() && (h.beginPath(), t.buildPath(h, t.shape), t.pathUpdated()); const c = h.getVersion(); const p = t; let d = p.__svgPathBuilder; p.__svgPathVersion === c && d && l === p.__svgPathStrokePercent || (d || (d = p.__svgPathBuilder = new Rb()), d.reset(u), h.rebuildPath(d, l), d.generateStr(), p.__svgPathVersion = c, p.__svgPathStrokePercent = l), o.d = d.getStr() } + else { s = t.type; const f = 10 ** u; r[0](i, o, f) } return aw(o, t.transform), rw(o, n, t, e), e.animation && tw(t, o, e), Hb(s, `${t.id}`, o) + } function dw(t, e) { + return t instanceof gs + ? pw(t, e) + : t instanceof _s + ? (function (t, e) { const n = t.style; let i = n.image; if (i && !X(i) && (nw(i) ? i = i.src : iw(i) && (i = i.toDataURL())), i) { const r = n.x || 0; const o = n.y || 0; const a = { href: i, width: n.width, height: n.height }; return r && (a.x = r), o && (a.y = o), aw(a, t.transform), rw(a, n, t, e), e.animation && tw(t, a, e), Hb('image', `${t.id}`, a) } }(t, e)) + : t instanceof vs + ? (function (t, e) { + const n = t.style; let i = n.text; if (i != null && (i += ''), i && !isNaN(n.x) && !isNaN(n.y)) { + const r = n.font || a; const s = n.x || 0; const l = (function (t, e, n) { return n === 'top' ? t += e / 2 : n === 'bottom' && (t -= e / 2), t }(n.y || 0, fr(r), n.textBaseline)); const u = { 'dominant-baseline': 'central', 'text-anchor': Bn[n.textAlign] || n.textAlign }; if (Es(n)) { + let h = ''; const c = n.fontStyle; const p = Rs(n.fontSize); if (!Number.parseFloat(p)) + return; const d = n.fontFamily || 'sans-serif'; const f = n.fontWeight; h += `font-size:${p};font-family:${d};`, c && c !== 'normal' && (h += `font-style:${c};`), f && f !== 'normal' && (h += `font-weight:${f};`), u.style = h + } + else { + u.style = `font: ${r}` + } return i.match(/\s/) && (u['xml:space'] = 'preserve'), s && (u.x = s), l && (u.y = l), aw(u, t.transform), rw(u, n, t, e), e.animation && tw(t, u, e), Hb('text', `${t.id}`, u, void 0, i) + } + }(t, e)) + : void 0 + } function fw(t, e, n) { const i = n.clipPathCache; const r = n.defs; let o = i[t.id]; if (!o) { const a = { id: o = `${n.zrId}-c${n.clipPathIdx++}` }; i[t.id] = o, r[o] = Hb('clipPath', o, a, [pw(t, n)]) }e['clip-path'] = Hn(o) } function gw(t) { return document.createTextNode(t) } function yw(t, e, n) { t.insertBefore(e, n) } function vw(t, e) { t.removeChild(e) } function mw(t, e) { t.appendChild(e) } function xw(t) { return t.parentNode } function _w(t) { return t.nextSibling } function bw(t, e) { t.textContent = e } const ww = Hb('', ''); function Sw(t) { return void 0 === t } function Mw(t) { return void 0 !== t } function Iw(t, e, n) { for (var i = {}, r = e; r <= n; ++r) { const o = t[r].key; void 0 !== o && (i[o] = r) } return i } function Tw(t, e) { const n = t.key === e.key; return t.tag === e.tag && n } function Cw(t) { + let e; const n = t.children; const i = t.tag; if (Mw(i)) { + const r = t.elm = Wb(i); if (kw(ww, t), Y(n)) { + for (e = 0; e < n.length; ++e) { const o = n[e]; o != null && mw(r, Cw(o)) } + } + else { + Mw(t.text) && !q(t.text) && mw(r, gw(t.text)) + } + } + else { + t.elm = gw(t.text) + } return t.elm + } function Dw(t, e, n, i, r) { for (;i <= r; ++i) { const o = n[i]; o != null && yw(t, Cw(o), e) } } function Aw(t, e, n, i) { for (;n <= i; ++n) { const r = e[n]; r != null && (Mw(r.tag) ? vw(xw(r.elm), r.elm) : vw(t, r.elm)) } } function kw(t, e) { let n; const i = e.elm; const r = t && t.attrs || {}; const o = e.attrs || {}; if (r !== o) { for (n in o) { const a = o[n]; r[n] !== a && (!0 === a ? i.setAttribute(n, '') : !1 === a ? i.removeAttribute(n) : n.charCodeAt(0) !== 120 ? i.setAttribute(n, a) : n === 'xmlns:xlink' || n === 'xmlns' ? i.setAttributeNS('http://www.w3.org/2000/xmlns/', n, a) : n.charCodeAt(3) === 58 ? i.setAttributeNS('http://www.w3.org/XML/1998/namespace', n, a) : n.charCodeAt(5) === 58 ? i.setAttributeNS(Gb, n, a) : i.setAttribute(n, a)) } for (n in r)n in o || i.removeAttribute(n) } } function Lw(t, e) { const n = e.elm = t.elm; const i = t.children; const r = e.children; t !== e && (kw(t, e), Sw(e.text) ? Mw(i) && Mw(r) ? i !== r && (function (t, e, n) { for (var i, r, o, a = 0, s = 0, l = e.length - 1, u = e[0], h = e[l], c = n.length - 1, p = n[0], d = n[c]; a <= l && s <= c;)u == null ? u = e[++a] : h == null ? h = e[--l] : p == null ? p = n[++s] : d == null ? d = n[--c] : Tw(u, p) ? (Lw(u, p), u = e[++a], p = n[++s]) : Tw(h, d) ? (Lw(h, d), h = e[--l], d = n[--c]) : Tw(u, d) ? (Lw(u, d), yw(t, u.elm, _w(h.elm)), u = e[++a], d = n[--c]) : Tw(h, p) ? (Lw(h, p), yw(t, h.elm, u.elm), h = e[--l], p = n[++s]) : (Sw(i) && (i = Iw(e, a, l)), Sw(r = i[p.key]) || (o = e[r]).tag !== p.tag ? yw(t, Cw(p), u.elm) : (Lw(o, p), e[r] = void 0, yw(t, o.elm, u.elm)), p = n[++s]); (a <= l || s <= c) && (a > l ? Dw(t, n[c + 1] == null ? null : n[c + 1].elm, n, s, c) : Aw(t, e, a, l)) }(n, i, r)) : Mw(r) ? (Mw(t.text) && bw(n, ''), Dw(n, null, r, 0, r.length - 1)) : Mw(i) ? Aw(n, i, 0, i.length - 1) : Mw(t.text) && bw(n, '') : t.text !== e.text && (Mw(i) && Aw(n, i, 0, i.length - 1), bw(n, e.text))) } let Pw = 0; const Ow = (function () { + function t(t, e, n) { if (this.type = 'svg', this.refreshHover = function () {}, this.configLayer = function () {}, this.storage = e, this._opts = n = A({}, n), this.root = t, this._id = `zr${Pw++}`, this._oldVNode = Xb(n.width, n.height), t && !n.ssr) { const i = this._viewport = document.createElement('div'); i.style.cssText = 'position:relative;overflow:hidden'; const r = this._svgDom = this._oldVNode.elm = Wb('svg'); kw(null, this._oldVNode), i.appendChild(r), t.appendChild(i) } this.resize(n.width, n.height) } return t.prototype.getType = function () { return this.type }, t.prototype.getViewportRoot = function () { return this._viewport }, t.prototype.getViewportRootOffset = function () { + const t = this.getViewportRoot(); if (t) + return { offsetLeft: t.offsetLeft || 0, offsetTop: t.offsetTop || 0 } + }, t.prototype.getSvgDom = function () { return this._svgDom }, t.prototype.refresh = function () { + if (this.root) { + const t = this.renderToVNode({ willUpdate: !0 }); t.attrs.style = 'position:absolute;left:0;top:0;user-select:none', (function (t, e) { + if (Tw(t, e)) { + Lw(t, e) + } + else { const n = t.elm; const i = xw(n); Cw(e), i !== null && (yw(i, e.elm, _w(n)), Aw(i, [t], 0, 0)) } + }(this._oldVNode, t)), this._oldVNode = t + } + }, t.prototype.renderOneToVNode = function (t) { return dw(t, Ub(this._id)) }, t.prototype.renderToVNode = function (t) { + t = t || {}; const e = this.storage.getDisplayList(!0); const n = this._backgroundColor; const i = this._width; const r = this._height; const o = Ub(this._id); o.animation = t.animation, o.willUpdate = t.willUpdate, o.compress = t.compress; const a = []; if (n && n !== 'none') { const s = Rn(n); const l = s.color; const u = s.opacity; this._bgVNode = Hb('rect', 'bg', { 'width': i, 'height': r, 'x': '0', 'y': '0', 'id': '0', 'fill': l, 'fill-opacity': u }), a.push(this._bgVNode) } + else { + this._bgVNode = null + } const h = t.compress ? null : this._mainVNode = Hb('g', 'main', {}, []); this._paintList(e, o, h ? h.children : a), h && a.push(h); const c = z(G(o.defs), (t) => { return o.defs[t] }); if (c.length && a.push(Hb('defs', 'defs', {}, c)), t.animation) { const p = (function (t, e, n) { const i = (n = n || {}).newline ? '\n' : ''; const r = ' {' + i; const o = `${i }}`; const a = z(G(t), (e) =>{ return e + r + z(G(t[e]), ((n) =>{ return `${n}:${t[e][n]};`})).join(i) + o }).join(i); const s = z(G(e), (t) => { return '@keyframes ' + t + r + z(G(e[t]), (n) =>{ return n + r + z(G(e[t][n]), ((i) =>{ var r = e[t][n][i]; return "d" === i && (r = 'path("' + r + '")'), i + ":" + r + ";" })).join(i) + o }).join(i) + o }).join(i); return a || s ? [''].join(i) : '' }(o.cssNodes, o.cssAnims, { newline: !0 })); if (p) { const d = Hb('style', 'stl', {}, [], p); a.push(d) } } return Xb(i, r, a, t.useViewBox) + }, t.prototype.renderToString = function (t) { return t = t || {}, Yb(this.renderToVNode({ animation: rt(t.cssAnimation, !0), willUpdate: !1, compress: !0, useViewBox: rt(t.useViewBox, !0) }), { newline: !0 }) }, t.prototype.setBackgroundColor = function (t) { this._backgroundColor = t; const e = this._bgVNode; if (e && e.elm) { const n = Rn(t); const i = n.color; const r = n.opacity; e.elm.setAttribute('fill', i), r < 1 && e.elm.setAttribute('fill-opacity', r) } }, t.prototype.getSvgRoot = function () { return this._mainVNode && this._mainVNode.elm }, t.prototype._paintList = function (t, e, n) { for (var i, r, o = t.length, a = [], s = 0, l = 0, u = 0; u < o; u++) { const h = t[u]; if (!h.invisible) { const c = h.__clipPaths; const p = c && c.length || 0; const d = r && r.length || 0; let f = void 0; for (f = Math.max(p - 1, d - 1); f >= 0 && (!c || !r || c[f] !== r[f]); f--);for (let g = d - 1; g > f; g--)i = a[--s - 1]; for (let y = f + 1; y < p; y++) { const v = {}; fw(c[y], v, e); const m = Hb('g', `clip-g-${l++}`, v, []); (i ? i.children : n).push(m), a[s++] = m, i = m }r = c; const x = dw(h, e); x && (i ? i.children : n).push(x) } } }, t.prototype.resize = function (t, e) { const n = this._opts; const i = this.root; const r = this._viewport; if (t != null && (n.width = t), e != null && (n.height = e), i && r && (r.style.display = 'none', t = zy(i, 0, n), e = zy(i, 1, n), r.style.display = ''), this._width !== t || this._height !== e) { if (this._width = t, this._height = e, r) { const o = r.style; o.width = `${t}px`, o.height = `${e}px` } const a = this._svgDom; a && (a.setAttribute('width', t), a.setAttribute('height', e)) } }, t.prototype.getWidth = function () { return this._width }, t.prototype.getHeight = function () { return this._height }, t.prototype.dispose = function () { this.root && (this.root.innerHTML = ''), this._svgDom = this._viewport = this.storage = this._oldVNode = this._bgVNode = this._mainVNode = null }, t.prototype.clear = function () { this._svgDom && (this._svgDom.innerHTML = null), this._oldVNode = null }, t.prototype.toDataURL = function (t) { let e = encodeURIComponent(this.renderToString()); const n = 'data:image/svg+xml;'; return t ? (e = Xn(e)) && `${n}base64,${e}` : `${n}charset=UTF-8,${e}` }, t + }()); function Nw(t, e, n) { const i = h.createCanvas(); const r = e.getWidth(); const o = e.getHeight(); const a = i.style; return a && (a.position = 'absolute', a.left = '0', a.top = '0', a.width = `${r}px`, a.height = `${o}px`, i.setAttribute('data-zr-dom-id', t)), i.width = r * n, i.height = o * n, i } const Ew = (function (t) { + function e(e, n, i) { let r; const o = t.call(this) || this; o.motionBlur = !1, o.lastFrameAlpha = 0.7, o.dpr = 1, o.virtual = !1, o.config = {}, o.incremental = !1, o.zlevel = 0, o.maxRepaintRectCount = 5, o.__dirty = !0, o.__firstTimePaint = !0, o.__used = !1, o.__drawIndex = 0, o.__startIndex = 0, o.__endIndex = 0, o.__prevStartIndex = null, o.__prevEndIndex = null, i = i || Ai, typeof e == 'string' ? r = Nw(e, n, i) : q(e) && (e = (r = e).id), o.id = e, o.dom = r; const a = r.style; return a && (vt(r), r.onselectstart = function () { return !1 }, a.padding = '0', a.margin = '0', a.borderWidth = '0'), o.painter = n, o.dpr = i, o } return n(e, t), e.prototype.getElementCount = function () { return this.__endIndex - this.__startIndex }, e.prototype.afterBrush = function () { this.__prevStartIndex = this.__startIndex, this.__prevEndIndex = this.__endIndex }, e.prototype.initContext = function () { this.ctx = this.dom.getContext('2d'), this.ctx.dpr = this.dpr }, e.prototype.setUnpainted = function () { this.__firstTimePaint = !0 }, e.prototype.createBackBuffer = function () { const t = this.dpr; this.domBack = Nw(`back-${this.id}`, this.painter, t), this.ctxBack = this.domBack.getContext('2d'), t !== 1 && this.ctxBack.scale(t, t) }, e.prototype.createRepaintRects = function (t, e, n, i) { + if (this.__firstTimePaint) + return this.__firstTimePaint = !1, null; let r; const o = []; const a = this.maxRepaintRectCount; let s = !1; const l = new sr(0, 0, 0, 0); function u(t) { + if (t.isFinite() && !t.isZero()) { + if (o.length === 0) { + (e = new sr(0, 0, 0, 0)).copy(t), o.push(e) + } + else { for (var e, n = !1, i = 1 / 0, r = 0, u = 0; u < o.length; ++u) { const h = o[u]; if (h.intersect(t)) { const c = new sr(0, 0, 0, 0); c.copy(h), c.union(t), o[u] = c, n = !0; break } if (s) { l.copy(t), l.union(h); const p = t.width * t.height; const d = h.width * h.height; const f = l.width * l.height - p - d; f < i && (i = f, r = u) } }s && (o[r].union(t), n = !0), n || ((e = new sr(0, 0, 0, 0)).copy(t), o.push(e)), s || (s = o.length >= a) } + } + } for (var h = this.__startIndex; h < this.__endIndex; ++h) { + if (d = t[h]) { var c = d.shouldBePainted(n, i, !0, !0); (f = d.__isRendered && (1 & d.__dirty || !c) ? d.getPrevPaintRect() : null) && u(f); const p = c && (1 & d.__dirty || !d.__isRendered) ? d.getPaintRect() : null; p && u(p) } + } for (h = this.__prevStartIndex; h < this.__prevEndIndex; ++h) { var d, f; c = (d = e[h]).shouldBePainted(n, i, !0, !0), !d || c && d.__zr || !d.__isRendered || (f = d.getPrevPaintRect()) && u(f) } do { + for (r = !1, h = 0; h < o.length;) { + if (o[h].isZero()) { + o.splice(h, 1) + } + else { for (let g = h + 1; g < o.length;)o[h].intersect(o[g]) ? (r = !0, o[h].union(o[g]), o.splice(g, 1)) : g++; h++ } + } + } while (r); return this._paintRects = o, o + }, e.prototype.debugGetPaintRects = function () { return (this._paintRects || []).slice() }, e.prototype.resize = function (t, e) { const n = this.dpr; const i = this.dom; const r = i.style; const o = this.domBack; r && (r.width = `${t}px`, r.height = `${e}px`), i.width = t * n, i.height = e * n, o && (o.width = t * n, o.height = e * n, n !== 1 && this.ctxBack.scale(n, n)) }, e.prototype.clear = function (t, e, n) { const i = this.dom; const r = this.ctx; const o = i.width; const a = i.height; e = e || this.clearColor; const s = this.motionBlur && !t; const l = this.lastFrameAlpha; const u = this.dpr; const h = this; s && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = 'copy', this.ctxBack.drawImage(i, 0, 0, o / u, a / u)); const c = this.domBack; function p(t, n, i, o) { if (r.clearRect(t, n, i, o), e && e !== 'transparent') { let a = void 0; Q(e) ? (a = e.__canvasGradient || Ny(r, e, { x: 0, y: 0, width: i, height: o }), e.__canvasGradient = a) : tt(e) && (a = Uy(r, e, { dirty() { h.setUnpainted(), h.__painter.refresh() } })), r.save(), r.fillStyle = a || e, r.fillRect(t, n, i, o), r.restore() }s && (r.save(), r.globalAlpha = l, r.drawImage(c, t, n, i, o), r.restore()) }!n || s ? p(0, 0, o, a) : n.length && E(n, (t) => { p(t.x * u, t.y * u, t.width * u, t.height * u) }) }, e + }(Xt)); const Vw = 314159; const Fw = (function () { + function t(t, e, n, i) { + this.type = 'canvas', this._zlevelList = [], this._prevDisplayList = [], this._layers = {}, this._layerConfig = {}, this._needsManuallyCompositing = !1, this.type = 'canvas'; const r = !t.nodeName || t.nodeName.toUpperCase() === 'CANVAS'; this._opts = n = A({}, n || {}), this.dpr = n.devicePixelRatio || Ai, this._singleCanvas = r, this.root = t, t.style && (vt(t), t.innerHTML = ''), this.storage = e; const o = this._zlevelList; this._prevDisplayList = []; const a = this._layers; if (r) { const s = t; let l = s.width; let u = s.height; n.width != null && (l = n.width), n.height != null && (u = n.height), this.dpr = n.devicePixelRatio || 1, s.width = l * this.dpr, s.height = u * this.dpr, this._width = l, this._height = u; const h = new Ew(s, this, this.dpr); h.__builtin__ = !0, h.initContext(), a[314159] = h, h.zlevel = Vw, o.push(Vw), this._domRoot = t } + else { this._width = zy(t, 0, n), this._height = zy(t, 1, n); const c = this._domRoot = (function (t, e) { const n = document.createElement('div'); return n.style.cssText = `${['position:relative', 'width:' + t + 'px', 'height:' + e + 'px', 'padding:0', 'margin:0', 'border-width:0'].join(';') };`, n }(this._width, this._height)); t.appendChild(c) } + } return t.prototype.getType = function () { return 'canvas' }, t.prototype.isSingleCanvas = function () { return this._singleCanvas }, t.prototype.getViewportRoot = function () { return this._domRoot }, t.prototype.getViewportRootOffset = function () { + const t = this.getViewportRoot(); if (t) + return { offsetLeft: t.offsetLeft || 0, offsetTop: t.offsetTop || 0 } + }, t.prototype.refresh = function (t) { const e = this.storage.getDisplayList(!0); const n = this._prevDisplayList; const i = this._zlevelList; this._redrawId = Math.random(), this._paintList(e, n, t, this._redrawId); for (let r = 0; r < i.length; r++) { const o = i[r]; const a = this._layers[o]; if (!a.__builtin__ && a.refresh) { const s = r === 0 ? this._backgroundColor : null; a.refresh(s) } } return this._opts.useDirtyRect && (this._prevDisplayList = e.slice()), this }, t.prototype.refreshHover = function () { this._paintHoverList(this.storage.getDisplayList(!1)) }, t.prototype._paintHoverList = function (t) { const e = t.length; let n = this._hoverlayer; if (n && n.clear(), e) { for (var i, r = { inHover: !0, viewWidth: this._width, viewHeight: this._height }, o = 0; o < e; o++) { const a = t[o]; a.__inHover && (n || (n = this._hoverlayer = this.getLayer(1e5)), i || (i = n.ctx).save(), tv(i, a, r, o === e - 1)) }i && i.restore() } }, t.prototype.getHoverLayer = function () { return this.getLayer(1e5) }, t.prototype.paintOne = function (t, e) { Qy(t, e) }, t.prototype._paintList = function (t, e, n, i) { + if (this._redrawId === i) { + n = n || !1, this._updateLayerStatus(t); const r = this._doPaintList(t, e, n); const o = r.finished; const a = r.needsRefreshHover; if (this._needsManuallyCompositing && this._compositeManually(), a && this._paintHoverList(t), o) { + this.eachLayer((t) => { t.afterBrush && t.afterBrush() }) + } + else { const s = this; ke(() => { s._paintList(t, e, n, i) }) } + } + }, t.prototype._compositeManually = function () { const t = this.getLayer(Vw).ctx; const e = this._domRoot.width; const n = this._domRoot.height; t.clearRect(0, 0, e, n), this.eachBuiltinLayer((i) => { i.virtual && t.drawImage(i.dom, 0, 0, e, n) }) }, t.prototype._doPaintList = function (t, e, n) { + for (var i = this, o = [], a = this._opts.useDirtyRect, s = 0; s < this._zlevelList.length; s++) { const l = this._zlevelList[s]; const u = this._layers[l]; u.__builtin__ && u !== this._hoverlayer && (u.__dirty || n) && o.push(u) } for (var h = !0, c = !1, p = function (r) { + let s; const l = o[r]; const u = l.ctx; const p = a && l.createRepaintRects(t, e, d._width, d._height); let f = n ? l.__startIndex : l.__drawIndex; const g = !n && l.incremental && Date.now; const y = g && Date.now(); const v = l.zlevel === d._zlevelList[0] ? d._backgroundColor : null; if (l.__startIndex === l.__endIndex) { + l.clear(!1, v, p) + } + else if (f === l.__startIndex) { const m = t[f]; m.incremental && m.notClear && !n || l.clear(!1, v, p) }f === -1 && (console.error('For some unknown reason. drawIndex is -1'), f = l.__startIndex); const x = function (e) { + const n = { inHover: !1, allClipped: !1, prevEl: null, viewWidth: i._width, viewHeight: i._height }; for (s = f; s < l.__endIndex; s++) { + const r = t[s]; if (r.__inHover && (c = !0), i._doPaintEl(r, l, a, e, n, s === l.__endIndex - 1), g && Date.now() - y > 15) + break + }n.prevElClipPaths && u.restore() + }; if (p) { + if (p.length === 0) { + s = l.__endIndex + } + else { + for (let _ = d.dpr, b = 0; b < p.length; ++b) { const w = p[b]; u.save(), u.beginPath(), u.rect(w.x * _, w.y * _, w.width * _, w.height * _), u.clip(), x(w), u.restore() } + } + } + else { + u.save(), x(), u.restore() + }l.__drawIndex = s, l.__drawIndex < l.__endIndex && (h = !1) + }, d = this, f = 0; f < o.length; f++)p(f); return r.wxa && E(this._layers, (t) => { t && t.ctx && t.ctx.draw && t.ctx.draw() }), { finished: h, needsRefreshHover: c } + }, t.prototype._doPaintEl = function (t, e, n, i, r, o) { + const a = e.ctx; if (n) { const s = t.getPaintRect(); (!i || s && s.intersect(i)) && (tv(a, t, r, o), t.setPrevPaintRect(s)) } + else { + tv(a, t, r, o) + } + }, t.prototype.getLayer = function (t, e) { this._singleCanvas && !this._needsManuallyCompositing && (t = Vw); let n = this._layers[t]; return n || ((n = new Ew(`zr_${t}`, this, this.dpr)).zlevel = t, n.__builtin__ = !0, this._layerConfig[t] ? C(n, this._layerConfig[t], !0) : this._layerConfig[t - 0.01] && C(n, this._layerConfig[t - 0.01], !0), e && (n.virtual = e), this.insertLayer(t, n), n.initContext()), n }, t.prototype.insertLayer = function (t, e) { + const n = this._layers; const i = this._zlevelList; const r = i.length; const o = this._domRoot; let a = null; let s = -1; if (!n[t] && (function (t) { return !!t && (!!t.__builtin__ || typeof t.resize == 'function' && typeof t.refresh == 'function') }(e))) { + if (r > 0 && t > i[0]) { for (s = 0; s < r - 1 && !(i[s] < t && i[s + 1] > t); s++);a = n[i[s]] } if (i.splice(s + 1, 0, t), n[t] = e, !e.virtual) { + if (a) { const l = a.dom; l.nextSibling ? o.insertBefore(e.dom, l.nextSibling) : o.appendChild(e.dom) } + else { + o.firstChild ? o.insertBefore(e.dom, o.firstChild) : o.appendChild(e.dom) + } + }e.__painter = this + } + }, t.prototype.eachLayer = function (t, e) { for (let n = this._zlevelList, i = 0; i < n.length; i++) { const r = n[i]; t.call(e, this._layers[r], r) } }, t.prototype.eachBuiltinLayer = function (t, e) { for (let n = this._zlevelList, i = 0; i < n.length; i++) { const r = n[i]; const o = this._layers[r]; o.__builtin__ && t.call(e, o, r) } }, t.prototype.eachOtherLayer = function (t, e) { for (let n = this._zlevelList, i = 0; i < n.length; i++) { const r = n[i]; const o = this._layers[r]; o.__builtin__ || t.call(e, o, r) } }, t.prototype.getLayers = function () { return this._layers }, t.prototype._updateLayerStatus = function (t) { + function e(t) { o && (o.__endIndex !== t && (o.__dirty = !0), o.__endIndex = t) } if (this.eachBuiltinLayer((t, e) => { t.__dirty = t.__used = !1 }), this._singleCanvas) { + for (let n = 1; n < t.length; n++) { + if ((s = t[n]).zlevel !== t[n - 1].zlevel || s.incremental) { this._needsManuallyCompositing = !0; break } + } + } let i; let r; var o = null; let a = 0; for (r = 0; r < t.length; r++) { var s; const l = (s = t[r]).zlevel; let u = void 0; i !== l && (i = l, a = 0), s.incremental ? ((u = this.getLayer(l + 0.001, this._needsManuallyCompositing)).incremental = !0, a = 1) : u = this.getLayer(l + (a > 0 ? 0.01 : 0), this._needsManuallyCompositing), u.__builtin__ || I(`ZLevel ${l} has been used by unkown layer ${u.id}`), u !== o && (u.__used = !0, u.__startIndex !== r && (u.__dirty = !0), u.__startIndex = r, u.incremental ? u.__drawIndex = -1 : u.__drawIndex = r, e(r), o = u), 1 & s.__dirty && !s.__inHover && (u.__dirty = !0, u.incremental && u.__drawIndex < 0 && (u.__drawIndex = r)) }e(r), this.eachBuiltinLayer((t, e) => { !t.__used && t.getElementCount() > 0 && (t.__dirty = !0, t.__startIndex = t.__endIndex = t.__drawIndex = 0), t.__dirty && t.__drawIndex < 0 && (t.__drawIndex = t.__startIndex) }) + }, t.prototype.clear = function () { return this.eachBuiltinLayer(this._clearLayer), this }, t.prototype._clearLayer = function (t) { t.clear() }, t.prototype.setBackgroundColor = function (t) { this._backgroundColor = t, E(this._layers, (t) => { t.setUnpainted() }) }, t.prototype.configLayer = function (t, e) { if (e) { const n = this._layerConfig; n[t] ? C(n[t], e, !0) : n[t] = e; for (let i = 0; i < this._zlevelList.length; i++) { const r = this._zlevelList[i]; r !== t && r !== t + 0.01 || C(this._layers[r], n[t], !0) } } }, t.prototype.delLayer = function (t) { const e = this._layers; const n = this._zlevelList; const i = e[t]; i && (i.dom.parentNode.removeChild(i.dom), delete e[t], n.splice(P(n, t), 1)) }, t.prototype.resize = function (t, e) { + if (this._domRoot.style) { const n = this._domRoot; n.style.display = 'none'; const i = this._opts; const r = this.root; if (t != null && (i.width = t), e != null && (i.height = e), t = zy(r, 0, i), e = zy(r, 1, i), n.style.display = '', this._width !== t || e !== this._height) { for (const o in n.style.width = `${t}px`, n.style.height = `${e}px`, this._layers) this._layers.hasOwnProperty(o) && this._layers[o].resize(t, e); this.refresh(!0) } this._width = t, this._height = e } + else { + if (t == null || e == null) + return; this._width = t, this._height = e, this.getLayer(Vw).resize(t, e) + } return this + }, t.prototype.clearLayer = function (t) { const e = this._layers[t]; e && e.clear() }, t.prototype.dispose = function () { this.root.innerHTML = '', this.root = this.storage = this._domRoot = this._layers = null }, t.prototype.getRenderedCanvas = function (t) { + if (t = t || {}, this._singleCanvas && !this._compositeManually) + return this._layers[314159].dom; const e = new Ew('image', this, t.pixelRatio || this.dpr); e.initContext(), e.clear(!1, t.backgroundColor || this._backgroundColor); const n = e.ctx; if (t.pixelRatio <= this.dpr) { this.refresh(); const i = e.dom.width; const r = e.dom.height; this.eachLayer((t) => { t.__builtin__ ? n.drawImage(t.dom, 0, 0, i, r) : t.renderToCanvas && (n.save(), t.renderToCanvas(n), n.restore()) }) } + else { + for (let o = { inHover: !1, viewWidth: this._width, viewHeight: this._height }, a = this.storage.getDisplayList(!0), s = 0, l = a.length; s < l; s++) { const u = a[s]; tv(n, u, o, s === l - 1) } + } return e.dom + }, t.prototype.getWidth = function () { return this._width }, t.prototype.getHeight = function () { return this._height }, t + }()); const Gw = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.hasSymbolVisual = !0, n } return n(e, t), e.prototype.getInitialData = function (t) { return rx(null, this, { useEncodeDefaulter: !0 }) }, e.prototype.getLegendIcon = function (t) { const e = new Cr(); const n = Ly('line', 0, t.itemHeight / 2, t.itemWidth, 0, t.lineStyle.stroke, !1); e.add(n), n.setStyle(t.lineStyle); const i = this.getData().getVisual('symbol'); const r = this.getData().getVisual('symbolRotate'); const o = i === 'none' ? 'circle' : i; const a = 0.8 * t.itemHeight; const s = Ly(o, (t.itemWidth - a) / 2, (t.itemHeight - a) / 2, a, a, t.itemStyle.fill); e.add(s), s.setStyle(t.itemStyle); const l = t.iconRotate === 'inherit' ? r : t.iconRotate || 0; return s.rotation = l * Math.PI / 180, s.setOrigin([t.itemWidth / 2, t.itemHeight / 2]), o.includes('empty') && (s.style.stroke = s.style.fill, s.style.fill = '#fff', s.style.lineWidth = 2), e }, e.type = 'series.line', e.dependencies = ['grid', 'polar'], e.defaultOption = { z: 3, coordinateSystem: 'cartesian2d', legendHoverLink: !0, clip: !0, label: { position: 'top' }, endLabel: { show: !1, valueAnimation: !0, distance: 8 }, lineStyle: { width: 2, type: 'solid' }, emphasis: { scale: !0 }, step: !1, smooth: !1, smoothMonotone: null, symbol: 'emptyCircle', symbolSize: 4, symbolRotate: null, showSymbol: !0, showAllSymbol: 'auto', connectNulls: !1, sampling: 'none', animationEasing: 'linear', progressive: 0, hoverLayerThreshold: 1 / 0, universalTransition: { divideShape: 'clone' }, triggerLineEvent: !1 }, e }(sg)); function Ww(t, e) { const n = t.mapDimensionsAll('defaultedLabel'); const i = n.length; if (i === 1) { const r = af(t, e, n[0]); return r != null ? `${r}` : null } if (i) { for (var o = [], a = 0; a < n.length; a++)o.push(af(t, e, n[a])); return o.join(' ') } } function Hw(t, e) { + const n = t.mapDimensionsAll('defaultedLabel'); if (!Y(e)) + return `${e}`; for (var i = [], r = 0; r < n.length; r++) { const o = t.getDimensionIndex(n[r]); o >= 0 && i.push(e[o]) } return i.join(' ') + } const Yw = (function (t) { + function e(e, n, i, r) { const o = t.call(this) || this; return o.updateData(e, n, i, r), o } return n(e, t), e.prototype._createSymbol = function (t, e, n, i, r) { this.removeAll(); const o = Ly(t, -1, -1, 2, 2, null, r); o.attr({ z2: 100, culling: !0, scaleX: i[0] / 2, scaleY: i[1] / 2 }), o.drift = Uw, this._symbolType = t, this.add(o) }, e.prototype.stopSymbolAnimation = function (t) { this.childAt(0).stopAnimation(null, t) }, e.prototype.getSymbolType = function () { return this._symbolType }, e.prototype.getSymbolPath = function () { return this.childAt(0) }, e.prototype.highlight = function () { _l(this.childAt(0)) }, e.prototype.downplay = function () { bl(this.childAt(0)) }, e.prototype.setZ = function (t, e) { const n = this.childAt(0); n.zlevel = t, n.z = e }, e.prototype.setDraggable = function (t, e) { const n = this.childAt(0); n.draggable = t, n.cursor = !e && t ? 'move' : n.cursor }, e.prototype.updateData = function (t, n, i, r) { + this.silent = !1; const o = t.getItemVisual(n, 'symbol') || 'circle'; const a = t.hostModel; const s = e.getSymbolSize(t, n); const l = o !== this._symbolType; const u = r && r.disableAnimation; if (l) { const h = t.getItemVisual(n, 'symbolKeepAspect'); this._createSymbol(o, t, n, s, h) } + else { (p = this.childAt(0)).silent = !1; var c = { scaleX: s[0] / 2, scaleY: s[1] / 2 }; u ? p.attr(c) : rh(p, c, a, n), hh(p) } if (this._updateCommon(t, n, s, i, r), l) { var p = this.childAt(0); u || (c = { scaleX: this._sizeX, scaleY: this._sizeY, style: { opacity: p.style.opacity } }, p.scaleX = p.scaleY = 0, p.style.opacity = 0, oh(p, c, a, n)) }u && this.childAt(0).stopAnimation('leave') + }, e.prototype._updateCommon = function (t, e, n, i, r) { + let o; let a; let s; let l; let u; let h; let c; let p; let d; const f = this.childAt(0); const g = t.hostModel; if (i && (o = i.emphasisItemStyle, a = i.blurItemStyle, s = i.selectItemStyle, l = i.focus, u = i.blurScope, c = i.labelStatesModels, p = i.hoverScale, d = i.cursorStyle, h = i.emphasisDisabled), !i || t.hasItemOption) { const y = i && i.itemModel ? i.itemModel : t.getItemModel(e); const v = y.getModel('emphasis'); o = v.getModel('itemStyle').getItemStyle(), s = y.getModel(['select', 'itemStyle']).getItemStyle(), a = y.getModel(['blur', 'itemStyle']).getItemStyle(), l = v.get('focus'), u = v.get('blurScope'), h = v.get('disabled'), c = Yh(y), p = v.getShallow('scale'), d = y.getShallow('cursor') } const m = t.getItemVisual(e, 'symbolRotate'); f.attr('rotation', (m || 0) * Math.PI / 180 || 0); const x = Oy(t.getItemVisual(e, 'symbolOffset'), n); x && (f.x = x[0], f.y = x[1]), d && f.attr('cursor', d); const _ = t.getItemVisual(e, 'style'); const b = _.fill; if (f instanceof _s) { const w = f.style; f.useStyle(A({ image: w.image, x: w.x, y: w.y, width: w.width, height: w.height }, _)) } + else { + f.__isEmptyBrush ? f.useStyle(A({}, _)) : f.useStyle(_), f.style.decal = null, f.setColor(b, r && r.symbolInnerColor), f.style.strokeNoScale = !0 + } const S = t.getItemVisual(e, 'liftZ'); const M = this._z2; S != null ? M == null && (this._z2 = f.z2, f.z2 += S) : M != null && (f.z2 = M, this._z2 = null); const I = r && r.useNameLabel; Hh(f, c, { labelFetcher: g, labelDataIndex: e, defaultText(e) { return I ? t.getName(e) : Ww(t, e) }, inheritColor: b, defaultOpacity: _.opacity }), this._sizeX = n[0] / 2, this._sizeY = n[1] / 2; const T = f.ensureState('emphasis'); if (T.style = o, f.ensureState('select').style = s, f.ensureState('blur').style = a, p) { const C = Math.max(j(p) ? p : 1.1, 3 / this._sizeY); T.scaleX = this._sizeX * C, T.scaleY = this._sizeY * C } this.setSymbolScale(1), Rl(this, l, u, h) + }, e.prototype.setSymbolScale = function (t) { this.scaleX = this.scaleY = t }, e.prototype.fadeOut = function (t, e, n) { + const i = this.childAt(0); const r = Hs(this).dataIndex; const o = n && n.animation; if (this.silent = i.silent = !0, n && n.fadeLabel) { const a = i.getTextContent(); a && sh(a, { style: { opacity: 0 } }, e, { dataIndex: r, removeOpt: o, cb() { i.removeTextContent() } }) } + else { + i.removeTextContent() + }sh(i, { style: { opacity: 0 }, scaleX: 0, scaleY: 0 }, e, { dataIndex: r, cb: t, removeOpt: o }) + }, e.getSymbolSize = function (t, e) { return Py(t.getItemVisual(e, 'symbolSize')) }, e + }(Cr)); function Uw(t, e) { this.parent.drift(t, e) } function Xw(t, e, n, i) { return e && !isNaN(e[0]) && !isNaN(e[1]) && !(i.isIgnore && i.isIgnore(n)) && !(i.clipShape && !i.clipShape.contain(e[0], e[1])) && t.getItemVisual(n, 'symbol') !== 'none' } function Zw(t) { return t == null || q(t) || (t = { isIgnore: t }), t || {} } function jw(t) { const e = t.hostModel; const n = e.getModel('emphasis'); return { emphasisItemStyle: n.getModel('itemStyle').getItemStyle(), blurItemStyle: e.getModel(['blur', 'itemStyle']).getItemStyle(), selectItemStyle: e.getModel(['select', 'itemStyle']).getItemStyle(), focus: n.get('focus'), blurScope: n.get('blurScope'), emphasisDisabled: n.get('disabled'), hoverScale: n.get('scale'), labelStatesModels: Yh(e), cursorStyle: e.get('cursor') } } const qw = (function () { + function t(t) { this.group = new Cr(), this._SymbolCtor = t || Yw } return t.prototype.updateData = function (t, e) { + this._progressiveEls = null, e = Zw(e); const n = this.group; const i = t.hostModel; const r = this._data; const o = this._SymbolCtor; const a = e.disableAnimation; const s = jw(t); const l = { disableAnimation: a }; const u = e.getSymbolPoint || function (e) { return t.getItemLayout(e) }; r || n.removeAll(), t.diff(r).add((i) => { const r = u(i); if (Xw(t, r, i, e)) { const a = new o(t, i, s, l); a.setPosition(r), t.setItemGraphicEl(i, a), n.add(a) } }).update((h, c) => { + let p = r.getItemGraphicEl(c); const d = u(h); if (Xw(t, d, h, e)) { + const f = t.getItemVisual(h, 'symbol') || 'circle'; const g = p && p.getSymbolType && p.getSymbolType(); if (!p || g && g !== f) { + n.remove(p), (p = new o(t, h, s, l)).setPosition(d) + } + else { p.updateData(t, h, s, l); const y = { x: d[0], y: d[1] }; a ? p.attr(y) : rh(p, y, i) }n.add(p), t.setItemGraphicEl(h, p) + } + else { + n.remove(p) + } + }).remove((t) => { const e = r.getItemGraphicEl(t); e && e.fadeOut(() => { n.remove(e) }, i) }).execute(), this._getSymbolPoint = u, this._data = t + }, t.prototype.updateLayout = function () { const t = this; const e = this._data; e && e.eachItemGraphicEl((e, n) => { const i = t._getSymbolPoint(n); e.setPosition(i), e.markRedraw() }) }, t.prototype.incrementalPrepareUpdate = function (t) { this._seriesScope = jw(t), this._data = null, this.group.removeAll() }, t.prototype.incrementalUpdate = function (t, e, n) { function i(t) { t.isGroup || (t.incremental = !0, t.ensureState('emphasis').hoverLayer = !0) } this._progressiveEls = [], n = Zw(n); for (let r = t.start; r < t.end; r++) { const o = e.getItemLayout(r); if (Xw(e, o, r, n)) { const a = new this._SymbolCtor(e, r, this._seriesScope); a.traverse(i), a.setPosition(o), this.group.add(a), e.setItemGraphicEl(r, a), this._progressiveEls.push(a) } } }, t.prototype.eachRendered = function (t) { Vh(this._progressiveEls || this.group, t) }, t.prototype.remove = function (t) { const e = this.group; const n = this._data; n && t ? n.eachItemGraphicEl((t) => { t.fadeOut(() => { e.remove(t) }, n.hostModel) }) : e.removeAll() }, t + }()); function Kw(t, e, n) { const i = t.getBaseAxis(); const r = t.getOtherAxis(i); const o = (function (t, e) { let n = 0; const i = t.scale.getExtent(); return e === 'start' ? n = i[0] : e === 'end' ? n = i[1] : j(e) && !isNaN(e) ? n = e : i[0] > 0 ? n = i[0] : i[1] < 0 && (n = i[1]), n }(r, n)); const a = i.dim; const s = r.dim; const l = e.mapDimension(s); const u = e.mapDimension(a); const h = s === 'x' || s === 'radius' ? 1 : 0; const c = z(t.dimensions, (t) => { return e.mapDimension(t) }); let p = !1; const d = e.getCalculationInfo('stackResultDimension'); return nx(e, c[0]) && (p = !0, c[0] = d), nx(e, c[1]) && (p = !0, c[1] = d), { dataDimsForPoint: c, valueStart: o, valueAxisDim: s, baseAxisDim: a, stacked: !!p, valueDim: l, baseDim: u, baseDataOffset: h, stackedOverDimension: e.getCalculationInfo('stackedOverDimension') } } function $w(t, e, n, i) { let r = Number.NaN; t.stacked && (r = n.get(n.getCalculationInfo('stackedOverDimension'), i)), isNaN(r) && (r = t.valueStart); const o = t.baseDataOffset; const a = []; return a[o] = n.get(t.baseDim, i), a[1 - o] = r, e.dataToPoint(a) } const Jw = Math.min; const Qw = Math.max; function tS(t, e) { return isNaN(t) || isNaN(e) } function eS(t, e, n, i, r, o, a, s, l) { + for (var u, h, c, p, d, f, g = n, y = 0; y < i; y++) { + let v = e[2 * g]; let m = e[2 * g + 1]; if (g >= r || g < 0) + break; if (tS(v, m)) { if (l) { g += o; continue } break } if (g === n) { + t[o > 0 ? 'moveTo' : 'lineTo'](v, m), c = v, p = m + } + else { + let x = v - u; let _ = m - h; if (x * x + _ * _ < 0.5) { g += o; continue } if (a > 0) { + for (var b = g + o, w = e[2 * b], S = e[2 * b + 1]; w === v && S === m && y < i;)y++, g += o, w = e[2 * (b += o)], S = e[2 * b + 1], x = (v = e[2 * g]) - u, _ = (m = e[2 * g + 1]) - h; let M = y + 1; if (l) { + for (;tS(w, S) && M < i;)M++, w = e[2 * (b += o)], S = e[2 * b + 1] + } let I = 0.5; let T = 0; let C = 0; let D = void 0; let A = void 0; if (M >= i || tS(w, S)) { + d = v, f = m + } + else { + T = w - u, C = S - h; const k = v - u; const L = w - v; const P = m - h; const O = S - m; let R = void 0; let N = void 0; if (s === 'x') { const E = T > 0 ? 1 : -1; d = v - E * (R = Math.abs(k)) * a, f = m, D = v + E * (N = Math.abs(L)) * a, A = m } + else if (s === 'y') { const z = C > 0 ? 1 : -1; d = v, f = m - z * (R = Math.abs(P)) * a, D = v, A = m + z * (N = Math.abs(O)) * a } + else { + R = Math.sqrt(k * k + P * P), d = v - T * a * (1 - (I = (N = Math.sqrt(L * L + O * O)) / (N + R))), f = m - C * a * (1 - I), A = m + C * a * I, D = Jw(D = v + T * a * I, Qw(w, v)), A = Jw(A, Qw(S, m)), D = Qw(D, Jw(w, v)), f = m - (C = (A = Qw(A, Jw(S, m))) - m) * R / N, d = Jw(d = v - (T = D - v) * R / N, Qw(u, v)), f = Jw(f, Qw(h, m)), D = v + (T = v - (d = Qw(d, Jw(u, v)))) * N / R, A = m + (C = m - (f = Qw(f, Jw(h, m)))) * N / R + } + }t.bezierCurveTo(c, p, d, f, v, m), c = D, p = A + } + else { + t.lineTo(v, m) + } + }u = v, h = m, g += o + } return y + } const nS = function () { this.smooth = 0, this.smoothConstraint = !0 }; const iS = (function (t) { + function e(e) { const n = t.call(this, e) || this; return n.type = 'ec-polyline', n } return n(e, t), e.prototype.getDefaultStyle = function () { return { stroke: '#000', fill: null } }, e.prototype.getDefaultShape = function () { return new nS() }, e.prototype.buildPath = function (t, e) { const n = e.points; let i = 0; let r = n.length / 2; if (e.connectNulls) { for (;r > 0 && tS(n[2 * r - 2], n[2 * r - 1]); r--);for (;i < r && tS(n[2 * i], n[2 * i + 1]); i++); } for (;i < r;)i += eS(t, n, i, r, r, 1, e.smooth, e.smoothMonotone, e.connectNulls) + 1 }, e.prototype.getPointOn = function (t, e) { + this.path || (this.createPathProxy(), this.buildPath(this.path, this.shape)); for (var n, i, r = this.path.data, o = qa.CMD, a = e === 'x', s = [], l = 0; l < r.length;) { + let u = void 0; let h = void 0; let c = void 0; let p = void 0; let d = void 0; let f = void 0; let g = void 0; switch (r[l++]) { + case o.M:n = r[l++], i = r[l++]; break; case o.L:if (u = r[l++], h = r[l++], (g = a ? (t - n) / (u - n) : (t - i) / (h - i)) <= 1 && g >= 0) { var y = a ? (h - i) * g + i : (u - n) * g + n; return a ? [t, y] : [y, t] }n = u, i = h; break; case o.C:u = r[l++], h = r[l++], c = r[l++], p = r[l++], d = r[l++], f = r[l++]; var v = a ? Ue(n, u, c, d, t, s) : Ue(i, h, p, f, t, s); if (v > 0) { + for (let m = 0; m < v; m++) { + const x = s[m]; if (x <= 1 && x >= 0) + return y = a ? He(i, h, p, f, x) : He(n, u, c, d, x), a ? [t, y] : [y, t] + } + }n = d, i = f + } + } + }, e + }(gs)); const rS = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e }(nS)); const oS = (function (t) { function e(e) { const n = t.call(this, e) || this; return n.type = 'ec-polygon', n } return n(e, t), e.prototype.getDefaultShape = function () { return new rS() }, e.prototype.buildPath = function (t, e) { const n = e.points; const i = e.stackedOnPoints; let r = 0; let o = n.length / 2; const a = e.smoothMonotone; if (e.connectNulls) { for (;o > 0 && tS(n[2 * o - 2], n[2 * o - 1]); o--);for (;r < o && tS(n[2 * r], n[2 * r + 1]); r++); } for (;r < o;) { const s = eS(t, n, r, o, o, 1, e.smooth, a, e.connectNulls); eS(t, i, r + s - 1, s, o, -1, e.stackedOnSmooth, a, e.connectNulls), r += s + 1, t.closePath() } }, e }(gs)); function aS(t, e, n, i, r) { const o = t.getArea(); let a = o.x; let s = o.y; let l = o.width; let u = o.height; const h = n.get(['lineStyle', 'width']) || 2; a -= h / 2, s -= h / 2, l += h, u += h, a = Math.floor(a), l = Math.round(l); const c = new Cs({ shape: { x: a, y: s, width: l, height: u } }); if (e) { const p = t.getBaseAxis(); const d = p.isHorizontal(); const f = p.inverse; d ? (f && (c.shape.x += l), c.shape.width = 0) : (f || (c.shape.y += u), c.shape.height = 0); const g = U(r) ? function (t) { r(t, c) } : null; oh(c, { shape: { width: l, height: u, x: a, y: s } }, n, null, i, g) } return c } function sS(t, e, n) { const i = t.getArea(); const r = zr(i.r0, 1); const o = zr(i.r, 1); const a = new Cu({ shape: { cx: zr(t.cx, 1), cy: zr(t.cy, 1), r0: r, r: o, startAngle: i.startAngle, endAngle: i.endAngle, clockwise: i.clockwise } }); return e && (t.getBaseAxis().dim === 'angle' ? a.shape.endAngle = i.startAngle : a.shape.r = r, oh(a, { shape: { endAngle: i.endAngle, r: o } }, n)), a } function lS(t, e, n, i, r) { return t ? t.type === 'polar' ? sS(t, e, n) : t.type === 'cartesian2d' ? aS(t, e, n, i, r) : null : null } function uS(t, e) { return t.type === e } function hS(t, e) { + if (t.length === e.length) { + for (let n = 0; n < t.length; n++) { + if (t[n] !== e[n]) + return + } return !0 + } + } function cS(t) { for (var e = 1 / 0, n = 1 / 0, i = -1 / 0, r = -1 / 0, o = 0; o < t.length;) { const a = t[o++]; const s = t[o++]; isNaN(a) || (e = Math.min(a, e), i = Math.max(a, i)), isNaN(s) || (n = Math.min(s, n), r = Math.max(s, r)) } return [[e, n], [i, r]] } function pS(t, e) { const n = cS(t); const i = n[0]; const r = n[1]; const o = cS(e); const a = o[0]; const s = o[1]; return Math.max(Math.abs(i[0] - a[0]), Math.abs(i[1] - a[1]), Math.abs(r[0] - s[0]), Math.abs(r[1] - s[1])) } function dS(t) { return j(t) ? t : t ? 0.5 : 0 } function fS(t, e, n, i) { const r = e.getBaseAxis(); const o = r.dim === 'x' || r.dim === 'radius' ? 0 : 1; const a = []; let s = 0; const l = []; const u = []; const h = []; const c = []; if (i) { for (s = 0; s < t.length; s += 2)isNaN(t[s]) || isNaN(t[s + 1]) || c.push(t[s], t[s + 1]); t = c } for (s = 0; s < t.length - 2; s += 2) switch (h[0] = t[s + 2], h[1] = t[s + 3], u[0] = t[s], u[1] = t[s + 1], a.push(u[0], u[1]), n) { case 'end':l[o] = h[o], l[1 - o] = u[1 - o], a.push(l[0], l[1]); break; case 'middle':var p = (u[o] + h[o]) / 2; var d = []; l[o] = d[o] = p, l[1 - o] = u[1 - o], d[1 - o] = h[1 - o], a.push(l[0], l[1]), a.push(d[0], d[1]); break; default:l[o] = u[o], l[1 - o] = h[1 - o], a.push(l[0], l[1]) } return a.push(t[s++], t[s++]), a } function gS(t, e, n) { + const i = t.getVisual('visualMeta'); if (i && i.length && t.count() && e.type === 'cartesian2d') { + for (var r, o, a = i.length - 1; a >= 0; a--) { const s = t.getDimensionInfo(i[a].dimension); if ((r = s && s.coordDim) === 'x' || r === 'y') { o = i[a]; break } } if (o) { + const l = e.getAxis(r); const u = z(o.stops, (t) => { return { coord: l.toGlobalCoord(l.dataToCoord(t.value)), color: t.color } }); const h = u.length; const c = o.outerColors.slice(); h && u[0].coord > u[h - 1].coord && (u.reverse(), c.reverse()); const p = (function (t, e) { + let n; let i; const r = []; const o = t.length; function a(t, e, n) { const i = t.coord; return { coord: n, color: Tn((n - i) / (e.coord - i), [t.color, e.color]) } } for (let s = 0; s < o; s++) { + const l = t[s]; const u = l.coord; if (u < 0) { + n = l + } + else { if (u > e) { i ? r.push(a(i, l, e)) : n && r.push(a(n, l, 0), a(n, l, e)); break }n && (r.push(a(n, l, 0)), n = null), r.push(l), i = l } + } return r + }(u, r === 'x' ? n.getWidth() : n.getHeight())); const d = p.length; if (!d && h) + return u[0].coord < 0 ? c[1] ? c[1] : u[h - 1].color : c[0] ? c[0] : u[0].color; const f = p[0].coord - 10; const g = p[d - 1].coord + 10; const y = g - f; if (y < 0.001) + return 'transparent'; E(p, (t) => { t.offset = (t.coord - f) / y }), p.push({ offset: d ? p[d - 1].offset : 0.5, color: c[1] || 'transparent' }), p.unshift({ offset: d ? p[0].offset : 0.5, color: c[0] || 'transparent' }); const v = new Xu(0, 0, 0, 0, p, !0); return v[r] = f, v[`${r}2`] = g, v + } + } + } function yS(t, e, n) { + const i = t.get('showAllSymbol'); const r = i === 'auto'; if (!i || r) { + const o = n.getAxesByScale('ordinal')[0]; if (o && (!r || !(function (t, e) { + const n = t.getExtent(); let i = Math.abs(n[1] - n[0]) / t.scale.count(); isNaN(i) && (i = 0); for (let r = e.count(), o = Math.max(1, Math.round(r / 5)), a = 0; a < r; a += o) { + if (1.5 * Yw.getSymbolSize(e, a)[t.isHorizontal() ? 1 : 0] > i) + return !1 + } return !0 + }(o, e)))) { const a = e.mapDimension(o.dim); const s = {}; return E(o.getViewLabels(), (t) => { const e = o.scale.getRawOrdinalNumber(t.tickValue); s[e] = 1 }), function (t) { return !s.hasOwnProperty(e.get(a, t)) } } + } + } function vS(t, e) { return [t[2 * e], t[2 * e + 1]] } function mS(t) { + if (t.get(['endLabel', 'show'])) + return !0; for (let e = 0; e < qs.length; e++) { + if (t.get([qs[e], 'endLabel', 'show'])) + return !0 + } return !1 + } function xS(t, e, n, i) { if (uS(e, 'cartesian2d')) { const r = i.getModel('endLabel'); const o = r.get('valueAnimation'); const a = i.getData(); const s = { lastFrameIndex: 0 }; const l = mS(i) ? function (n, i) { t._endLabelOnDuring(n, i, a, s, o, r, e) } : null; const u = e.getBaseAxis().isHorizontal(); const h = aS(e, n, i, () => { const e = t._endLabel; e && n && s.originalX != null && e.attr({ x: s.originalX, y: s.originalY }) }, l); if (!i.get('clip', !0)) { const c = h.shape; const p = Math.max(c.width, c.height); u ? (c.y -= p, c.height += 2 * p) : (c.x -= p, c.width += 2 * p) } return l && l(1, h), h } return sS(e, n, i) } const _S = (function (t) { + function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.init = function () { const t = new Cr(); const e = new qw(); this.group.add(e.group), this._symbolDraw = e, this._lineGroup = t }, e.prototype.render = function (t, e, n) { + const i = this; const r = t.coordinateSystem; const o = this.group; const a = t.getData(); const s = t.getModel('lineStyle'); const l = t.getModel('areaStyle'); let u = a.getLayout('points') || []; const h = r.type === 'polar'; const c = this._coordSys; const p = this._symbolDraw; let d = this._polyline; let f = this._polygon; const g = this._lineGroup; const y = t.get('animation'); const v = !l.isEmpty(); const m = l.get('origin'); const x = Kw(r, a, m); let _ = v && (function (t, e, n) { + if (!n.valueDim) + return []; for (var i = e.count(), r = Sx(2 * i), o = 0; o < i; o++) { const a = $w(n, t, e, o); r[2 * o] = a[0], r[2 * o + 1] = a[1] } return r + }(r, a, x)); const b = t.get('showSymbol'); const w = t.get('connectNulls'); const S = b && !h && yS(t, a, r); const M = this._data; M && M.eachItemGraphicEl((t, e) => { t.__temp && (o.remove(t), M.setItemGraphicEl(e, null)) }), b || p.remove(), o.add(g); let I; const T = !h && t.get('step'); r && r.getArea && t.get('clip', !0) && ((I = r.getArea()).width != null ? (I.x -= 0.1, I.y -= 0.1, I.width += 0.2, I.height += 0.2) : I.r0 && (I.r0 -= 0.5, I.r += 0.5)), this._clipShapeForSymbol = I; const C = gS(a, r, n) || a.getVisual('style')[a.getVisual('drawType')]; if (d && c.type === r.type && T === this._step) { v && !f ? f = this._newPolygon(u, _) : f && !v && (g.remove(f), f = this._polygon = null), h || this._initOrUpdateEndLabel(t, r, pp(C)); const D = g.getClipPath(); D ? oh(D, { shape: xS(this, r, !1, t).shape }, t) : g.setClipPath(xS(this, r, !0, t)), b && p.updateData(a, { isIgnore: S, clipShape: I, disableAnimation: !0, getSymbolPoint(t) { return [u[2 * t], u[2 * t + 1]] } }), hS(this._stackedOnPoints, _) && hS(this._points, u) || (y ? this._doUpdateAnimation(a, _, r, n, T, m, w) : (T && (u = fS(u, r, T, w), _ && (_ = fS(_, r, T, w))), d.setShape({ points: u }), f && f.setShape({ points: u, stackedOnPoints: _ }))) } + else { + b && p.updateData(a, { isIgnore: S, clipShape: I, disableAnimation: !0, getSymbolPoint(t) { return [u[2 * t], u[2 * t + 1]] } }), y && this._initSymbolLabelAnimation(a, r, I), T && (u = fS(u, r, T, w), _ && (_ = fS(_, r, T, w))), d = this._newPolyline(u), v ? f = this._newPolygon(u, _) : f && (g.remove(f), f = this._polygon = null), h || this._initOrUpdateEndLabel(t, r, pp(C)), g.setClipPath(xS(this, r, !0, t)) + } const A = t.getModel('emphasis'); const L = A.get('focus'); const P = A.get('blurScope'); const O = A.get('disabled'); d.useStyle(k(s.getLineStyle(), { fill: 'none', stroke: C, lineJoin: 'bevel' })), Vl(d, t, 'lineStyle'), d.style.lineWidth > 0 && t.get(['emphasis', 'lineStyle', 'width']) === 'bolder' && (d.getState('emphasis').style.lineWidth = +d.style.lineWidth + 1), Hs(d).seriesIndex = t.seriesIndex, Rl(d, L, P, O); const R = dS(t.get('smooth')); const N = t.get('smoothMonotone'); if (d.setShape({ smooth: R, smoothMonotone: N, connectNulls: w }), f) { const E = a.getCalculationInfo('stackedOnSeries'); let z = 0; f.useStyle(k(l.getAreaStyle(), { fill: C, opacity: 0.7, lineJoin: 'bevel', decal: a.getVisual('style').decal })), E && (z = dS(E.get('smooth'))), f.setShape({ smooth: R, stackedOnSmooth: z, smoothMonotone: N, connectNulls: w }), Vl(f, t, 'areaStyle'), Hs(f).seriesIndex = t.seriesIndex, Rl(f, L, P, O) } const V = function (t) { i._changePolyState(t) }; a.eachItemGraphicEl((t) => { t && (t.onHoverStateChange = V) }), this._polyline.onHoverStateChange = V, this._data = a, this._coordSys = r, this._stackedOnPoints = _, this._points = u, this._step = T, this._valueOrigin = m, t.get('triggerLineEvent') && (this.packEventData(t, d), f && this.packEventData(t, f)) + }, e.prototype.packEventData = function (t, e) { Hs(e).eventData = { componentType: 'series', componentSubType: 'line', componentIndex: t.componentIndex, seriesIndex: t.seriesIndex, seriesName: t.name, seriesType: 'line' } }, e.prototype.highlight = function (t, e, n, i) { + const r = t.getData(); const o = wo(r, i); if (this._changePolyState('emphasis'), !(Array.isArray(o)) && o != null && o >= 0) { + const a = r.getLayout('points'); let s = r.getItemGraphicEl(o); if (!s) { + const l = a[2 * o]; const u = a[2 * o + 1]; if (isNaN(l) || isNaN(u)) + return; if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(l, u)) + return; const h = t.get('zlevel'); const c = t.get('z'); (s = new Yw(r, o)).x = l, s.y = u, s.setZ(h, c); const p = s.getSymbolPath().getTextContent(); p && (p.zlevel = h, p.z = c, p.z2 = this._polyline.z2 + 1), s.__temp = !0, r.setItemGraphicEl(o, s), s.stopSymbolAnimation(!0), this.group.add(s) + }s.highlight() + } + else { + xg.prototype.highlight.call(this, t, e, n, i) + } + }, e.prototype.downplay = function (t, e, n, i) { + const r = t.getData(); const o = wo(r, i); if (this._changePolyState('normal'), o != null && o >= 0) { const a = r.getItemGraphicEl(o); a && (a.__temp ? (r.setItemGraphicEl(o, null), this.group.remove(a)) : a.downplay()) } + else { + xg.prototype.downplay.call(this, t, e, n, i) + } + }, e.prototype._changePolyState = function (t) { const e = this._polygon; gl(this._polyline, t), e && gl(e, t) }, e.prototype._newPolyline = function (t) { let e = this._polyline; return e && this._lineGroup.remove(e), e = new iS({ shape: { points: t }, segmentIgnoreThreshold: 2, z2: 10 }), this._lineGroup.add(e), this._polyline = e, e }, e.prototype._newPolygon = function (t, e) { let n = this._polygon; return n && this._lineGroup.remove(n), n = new oS({ shape: { points: t, stackedOnPoints: e }, segmentIgnoreThreshold: 2 }), this._lineGroup.add(n), this._polygon = n, n }, e.prototype._initSymbolLabelAnimation = function (t, e, n) { + let i; let r; const o = e.getBaseAxis(); const a = o.inverse; e.type === 'cartesian2d' ? (i = o.isHorizontal(), r = !1) : e.type === 'polar' && (i = o.dim === 'angle', r = !0); const s = t.hostModel; let l = s.get('animationDuration'); U(l) && (l = l(null)); const u = s.get('animationDelay') || 0; const h = U(u) ? u(null) : u; t.eachItemGraphicEl((t, o) => { + const s = t; if (s) { + const c = [t.x, t.y]; let p = void 0; let d = void 0; let f = void 0; if (n) { + if (r) { const g = n; const y = e.pointToCoord(c); i ? (p = g.startAngle, d = g.endAngle, f = -y[1] / 180 * Math.PI) : (p = g.r0, d = g.r, f = y[0]) } + else { const v = n; i ? (p = v.x, d = v.x + v.width, f = t.x) : (p = v.y + v.height, d = v.y, f = t.y) } + } let m = d === p ? 0 : (f - p) / (d - p); a && (m = 1 - m); const x = U(u) ? u(o) : l * m + h; const _ = s.getSymbolPath(); const b = _.getTextContent(); s.attr({ scaleX: 0, scaleY: 0 }), s.animateTo({ scaleX: 1, scaleY: 1 }, { duration: 200, setToFinal: !0, delay: x }), b && b.animateFrom({ style: { opacity: 0 } }, { duration: 300, delay: x }), _.disableLabelAnimation = !0 + } + }) + }, e.prototype._initOrUpdateEndLabel = function (t, e, n) { + const i = t.getModel('endLabel'); if (mS(t)) { + const r = t.getData(); const o = this._polyline; const a = r.getLayout('points'); if (!a) + return o.removeTextContent(), void (this._endLabel = null); let s = this._endLabel; s || ((s = this._endLabel = new ks({ z2: 200 })).ignoreClip = !0, o.setTextContent(this._endLabel), o.disableLabelAnimation = !0); const l = (function (t) { for (var e, n, i = t.length / 2; i > 0 && (e = t[2 * i - 2], n = t[2 * i - 1], isNaN(e) || isNaN(n)); i--);return i - 1 }(a)); l >= 0 && (Hh(o, Yh(t, 'endLabel'), { inheritColor: n, labelFetcher: t, labelDataIndex: l, defaultText(t, e, n) { return n != null ? Hw(r, n) : Ww(r, t) }, enableTextSetter: !0 }, (function (t, e) { const n = e.getBaseAxis(); const i = n.isHorizontal(); const r = n.inverse; const o = i ? r ? 'right' : 'left' : 'center'; const a = i ? 'middle' : r ? 'top' : 'bottom'; return { normal: { align: t.get('align') || o, verticalAlign: t.get('verticalAlign') || a } } }(i, e))), o.textConfig.position = null) + } + else { + this._endLabel && (this._polyline.removeTextContent(), this._endLabel = null) + } + }, e.prototype._endLabelOnDuring = function (t, e, n, i, r, o, a) { + const s = this._endLabel; const l = this._polyline; if (s) { + t < 1 && i.originalX == null && (i.originalX = s.x, i.originalY = s.y); const u = n.getLayout('points'); const h = n.hostModel; const c = h.get('connectNulls'); const p = o.get('precision'); const d = o.get('distance') || 0; const f = a.getBaseAxis(); const g = f.isHorizontal(); const y = f.inverse; const v = e.shape; const m = y ? g ? v.x : v.y + v.height : g ? v.x + v.width : v.y; const x = (g ? d : 0) * (y ? -1 : 1); const _ = (g ? 0 : -d) * (y ? -1 : 1); const b = g ? 'x' : 'y'; const w = (function (t, e, n) { + for (var i, r, o = t.length / 2, a = n === 'x' ? 0 : 1, s = 0, l = -1, u = 0; u < o; u++) { + if (r = t[2 * u + a], !isNaN(r) && !isNaN(t[2 * u + 1 - a])) { +if (u!==0) { if (i <= e && r >= e || i >= e && r <= e) { l = u; break }s = u, i = r } +else { i=r; +} +} + } return { range: [s, l], t: (e - i) / (r - i) } + }(u, m, b)); const S = w.range; const M = S[1] - S[0]; let I = void 0; if (M >= 1) { + if (M > 1 && !c) { var T = vS(u, S[0]); s.attr({ x: T[0] + x, y: T[1] + _ }), r && (I = h.getRawValue(S[0])) } + else { (T = l.getPointOn(m, b)) && s.attr({ x: T[0] + x, y: T[1] + _ }); const C = h.getRawValue(S[0]); const D = h.getRawValue(S[1]); r && (I = Po(n, p, C, D, w.t)) }i.lastFrameIndex = S[0] + } + else { const A = t === 1 || i.lastFrameIndex > 0 ? S[0] : 0; T = vS(u, A), r && (I = h.getRawValue(A)), s.attr({ x: T[0] + x, y: T[1] + _ }) }r && Jh(s).setLabelText(I) + } + }, e.prototype._doUpdateAnimation = function (t, e, n, i, r, o, a) { + const s = this._polyline; const l = this._polygon; const u = t.hostModel; const h = (function (t, e, n, i, r, o, a, s) { for (var l = (function (t, e) { let n = []; return e.diff(t).add((t) =>{ n.push({ cmd: "+", idx: t }) }).update((t,e) =>{ n.push({ cmd: "=", idx: e, idx1: t }) }).remove((t) =>{ n.push({ cmd: "-", idx: t }) }).execute(), n }(t, e)), u = [], h = [], c = [], p = [], d = [], f = [], g = [], y = Kw(r, e, a), v = t.getLayout('points') || [], m = e.getLayout('points') || [], x = 0; x < l.length; x++) { const _ = l[x]; let b = !0; let w = void 0; let S = void 0; switch (_.cmd) { case '=':w = 2 * _.idx, S = 2 * _.idx1; var M = v[w]; var I = v[w + 1]; var T = m[S]; var C = m[S + 1]; (isNaN(M) || isNaN(I)) && (M = T, I = C), u.push(M, I), h.push(T, C), c.push(n[w], n[w + 1]), p.push(i[S], i[S + 1]), g.push(e.getRawIndex(_.idx1)); break; case '+':var D = _.idx; var A = y.dataDimsForPoint; var k = r.dataToPoint([e.get(A[0], D), e.get(A[1], D)]); S = 2 * D, u.push(k[0], k[1]), h.push(m[S], m[S + 1]); var L = $w(y, r, e, D); c.push(L[0], L[1]), p.push(i[S], i[S + 1]), g.push(e.getRawIndex(D)); break; case '-':b = !1 }b && (d.push(_), f.push(f.length)) }f.sort((t, e) => { return g[t] - g[e] }); const P = u.length; const O = Sx(P); const R = Sx(P); const N = Sx(P); const E = Sx(P); const z = []; for (x = 0; x < f.length; x++) { const V = f[x]; const B = 2 * x; const F = 2 * V; O[B] = u[F], O[B + 1] = u[F + 1], R[B] = h[F], R[B + 1] = h[F + 1], N[B] = c[F], N[B + 1] = c[F + 1], E[B] = p[F], E[B + 1] = p[F + 1], z[x] = d[V] } return { current: O, next: R, stackedOnCurrent: N, stackedOnNext: E, status: z } }(this._data, t, this._stackedOnPoints, e, this._coordSys, 0, this._valueOrigin)); let c = h.current; let p = h.stackedOnCurrent; let d = h.next; let f = h.stackedOnNext; if (r && (c = fS(h.current, n, r, a), p = fS(h.stackedOnCurrent, n, r, a), d = fS(h.next, n, r, a), f = fS(h.stackedOnNext, n, r, a)), pS(c, d) > 3e3 || l && pS(p, f) > 3e3) + return s.stopAnimation(), s.setShape({ points: d }), void (l && (l.stopAnimation(), l.setShape({ points: d, stackedOnPoints: f }))); s.shape.__points = h.current, s.shape.points = c; const g = { shape: { points: d } }; h.current !== c && (g.shape.__points = h.next), s.stopAnimation(), rh(s, g, u), l && (l.setShape({ points: c, stackedOnPoints: p }), l.stopAnimation(), rh(l, { shape: { stackedOnPoints: f } }, u), s.shape.points !== l.shape.points && (l.shape.points = s.shape.points)); for (var y = [], v = h.status, m = 0; m < v.length; m++) { + if (v[m].cmd === '=') { const x = t.getItemGraphicEl(v[m].idx1); x && y.push({ el: x, ptIdx: m }) } + }s.animators && s.animators.length && s.animators[0].during(() => { l && l.dirtyShape(); for (let t = s.shape.__points, e = 0; e < y.length; e++) { const n = y[e].el; const i = 2 * y[e].ptIdx; n.x = t[i], n.y = t[i + 1], n.markRedraw() } }) + }, e.prototype.remove = function (t) { const e = this.group; const n = this._data; this._lineGroup.removeAll(), this._symbolDraw.remove(!0), n && n.eachItemGraphicEl((t, i) => { t.__temp && (e.remove(t), n.setItemGraphicEl(i, null)) }), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null }, e.type = 'line', e + }(xg)); function bS(t, e) { + return { seriesType: t, plan: yg(), reset(t) { + const n = t.getData(); const i = t.coordinateSystem; const r = t.pipelineContext; const o = e || r.large; if (i) { + const a = z(i.dimensions, (t) => { return n.mapDimension(t) }).slice(0, 2); const s = a.length; const l = n.getCalculationInfo('stackResultDimension'); nx(n, a[0]) && (a[0] = l), nx(n, a[1]) && (a[1] = l); const u = n.getStore(); const h = n.getDimensionIndex(a[0]); const c = n.getDimensionIndex(a[1]); return s && { progress(t, e) { + for (var n = t.end - t.start, r = o && Sx(n * s), a = [], l = [], p = t.start, d = 0; p < t.end; p++) { + let f = void 0; if (s === 1) { const g = u.get(h, p); f = i.dataToPoint(g, null, l) } + else { + a[0] = u.get(h, p), a[1] = u.get(c, p), f = i.dataToPoint(a, null, l) + }o ? (r[d++] = f[0], r[d++] = f[1]) : e.setItemLayout(p, f.slice()) + }o && e.setLayout('points', r) + } } + } + } } + } const wS = { average(t) { for (var e = 0, n = 0, i = 0; i < t.length; i++)isNaN(t[i]) || (e += t[i], n++); return n === 0 ? Number.NaN : e / n }, sum(t) { for (var e = 0, n = 0; n < t.length; n++)e += t[n] || 0; return e }, max(t) { for (var e = -1 / 0, n = 0; n < t.length; n++)t[n] > e && (e = t[n]); return isFinite(e) ? e : Number.NaN }, min(t) { for (var e = 1 / 0, n = 0; n < t.length; n++)t[n] < e && (e = t[n]); return isFinite(e) ? e : Number.NaN }, nearest(t) { return t[0] } }; const SS = function (t) { return Math.round(t.length / 2) }; function MS(t) { return { seriesType: t, reset(t, e, n) { const i = t.getData(); const r = t.get('sampling'); const o = t.coordinateSystem; const a = i.count(); if (a > 10 && o.type === 'cartesian2d' && r) { const s = o.getBaseAxis(); const l = o.getOtherAxis(s); const u = s.getExtent(); const h = n.getDevicePixelRatio(); const c = Math.abs(u[1] - u[0]) * (h || 1); const p = Math.round(a / c); if (isFinite(p) && p > 1) { r === 'lttb' && t.setData(i.lttbDownSample(i.mapDimension(l.dim), 1 / p)); let d = void 0; X(r) ? d = wS[r] : U(r) && (d = r), d && t.setData(i.downSample(i.mapDimension(l.dim), 1 / p, d, SS)) } } } } } const IS = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.getInitialData = function (t, e) { return rx(null, this, { useEncodeDefaulter: !0 }) }, e.prototype.getMarkerPosition = function (t) { const e = this.coordinateSystem; if (e && e.clampData) { const n = e.dataToPoint(e.clampData(t)); const i = this.getData(); const r = i.getLayout('offset'); const o = i.getLayout('size'); return n[e.getBaseAxis().isHorizontal() ? 0 : 1] += r + o / 2, n } return [Number.NaN, Number.NaN] }, e.type = 'series.__base_bar__', e.defaultOption = { z: 2, coordinateSystem: 'cartesian2d', legendHoverLink: !0, barMinHeight: 0, barMinAngle: 0, large: !1, largeThreshold: 400, progressive: 3e3, progressiveChunkMode: 'mod' }, e }(sg)); sg.registerClass(IS); const TS = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.getInitialData = function () { return rx(null, this, { useEncodeDefaulter: !0, createInvertedIndices: !!this.get('realtimeSort', !0) || null }) }, e.prototype.getProgressive = function () { return !!this.get('large') && this.get('progressive') }, e.prototype.getProgressiveThreshold = function () { let t = this.get('progressiveThreshold'); const e = this.get('largeThreshold'); return e > t && (t = e), t }, e.prototype.brushSelector = function (t, e, n) { return n.rect(e.getItemLayout(t)) }, e.type = 'series.bar', e.dependencies = ['grid', 'polar'], e.defaultOption = yc(IS.defaultOption, { clip: !0, roundCap: !1, showBackground: !1, backgroundStyle: { color: 'rgba(180, 180, 180, 0.2)', borderColor: null, borderWidth: 0, borderType: 'solid', borderRadius: 0, shadowBlur: 0, shadowColor: null, shadowOffsetX: 0, shadowOffsetY: 0, opacity: 1 }, select: { itemStyle: { borderColor: '#212121' } }, realtimeSort: !1 }), e }(IS)); const CS = function () { this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = 2 * Math.PI, this.clockwise = !0 }; const DS = (function (t) { function e(e) { const n = t.call(this, e) || this; return n.type = 'sausage', n } return n(e, t), e.prototype.getDefaultShape = function () { return new CS() }, e.prototype.buildPath = function (t, e) { const n = e.cx; const i = e.cy; const r = Math.max(e.r0 || 0, 0); const o = Math.max(e.r, 0); const a = 0.5 * (o - r); const s = r + a; let l = e.startAngle; const u = e.endAngle; const h = e.clockwise; const c = 2 * Math.PI; const p = h ? u - l < c : l - u < c; p || (l = u - (h ? c : -c)); const d = Math.cos(l); const f = Math.sin(l); const g = Math.cos(u); const y = Math.sin(u); p ? (t.moveTo(d * r + n, f * r + i), t.arc(d * s + n, f * s + i, a, -Math.PI + l, l, !h)) : t.moveTo(d * o + n, f * o + i), t.arc(n, i, o, l, u, !h), t.arc(g * s + n, y * s + i, a, u - 2 * Math.PI, u - Math.PI, !h), r !== 0 && t.arc(n, i, r, u, l, h) }, e }(gs)); function AS(t, e, n) { return e * Math.sin(t) * (n ? -1 : 1) } function kS(t, e, n) { return e * Math.cos(t) * (n ? 1 : -1) } const LS = Math.max; const PS = Math.min; const OS = (function (t) { + function e() { const n = t.call(this) || this; return n.type = e.type, n._isFirstFrame = !0, n } return n(e, t), e.prototype.render = function (t, e, n, i) { this._model = t, this._removeOnRenderedListener(n), this._updateDrawMode(t); const r = t.get('coordinateSystem'); (r === 'cartesian2d' || r === 'polar') && (this._progressiveEls = null, this._isLargeDraw ? this._renderLarge(t, e, n) : this._renderNormal(t, e, n, i)) }, e.prototype.incrementalPrepareRender = function (t) { this._clear(), this._updateDrawMode(t), this._updateLargeClip(t) }, e.prototype.incrementalRender = function (t, e) { this._progressiveEls = [], this._incrementalRenderLarge(t, e) }, e.prototype.eachRendered = function (t) { Vh(this._progressiveEls || this.group, t) }, e.prototype._updateDrawMode = function (t) { const e = t.pipelineContext.large; this._isLargeDraw != null && e === this._isLargeDraw || (this._isLargeDraw = e, this._clear()) }, e.prototype._renderNormal = function (t, e, n, i) { + let r; const o = this.group; const a = t.getData(); const s = this._data; const l = t.coordinateSystem; const u = l.getBaseAxis(); l.type === 'cartesian2d' ? r = u.isHorizontal() : l.type === 'polar' && (r = u.dim === 'angle'); const h = t.isAnimationEnabled() ? t : null; const c = (function (t, e) { + let n = t.get('realtimeSort', !0); const i = e.getBaseAxis(); if (n && i.type === 'category' && e.type === 'cartesian2d') + return { baseAxis: i, otherAxis: e.getOtherAxis(i) } + }(t, l)); c && this._enableRealtimeSort(c, a, n); const p = t.get('clip', !0) || c; const d = (function (t, e) { const n = t.getArea && t.getArea(); if (uS(t, 'cartesian2d')) { const i = t.getBaseAxis(); if (i.type !== 'category' || !i.onBand) { const r = e.getLayout('bandWidth'); i.isHorizontal() ? (n.x -= r, n.width += 2 * r) : (n.y -= r, n.height += 2 * r) } } return n }(l, a)); o.removeClipPath(); const f = t.get('roundCap', !0); const g = t.get('showBackground', !0); const y = t.getModel('backgroundStyle'); const v = y.get('borderRadius') || 0; const m = []; const x = this._backgroundEls; const _ = i && i.isInitSort; const b = i && i.type === 'changeAxisOrder'; function w(t) { const e = GS[l.type](a, t); const n = (function (t, e, n) { return new (t.type === 'polar' ? Cu : Cs)({ shape: jS(e, n, t), silent: !0, z2: 0 }) }(l, r, e)); return n.useStyle(y.getItemStyle()), l.type === 'cartesian2d' && n.setShape('r', v), m[t] = n, n }a.diff(s).add((e) => { const n = a.getItemModel(e); const i = GS[l.type](a, e, n); if (g && w(e), a.hasValue(e) && FS[l.type](i)) { let s = !1; p && (s = RS[l.type](d, i)); const y = NS[l.type](t, a, e, i, r, h, u.model, !1, f); c && (y.forceLabelAnimation = !0), HS(y, a, e, n, i, t, r, l.type === 'polar'), _ ? y.attr({ shape: i }) : c ? ES(c, h, y, i, e, r, !1, !1) : oh(y, { shape: i }, t, e), a.setItemGraphicEl(e, y), o.add(y), y.ignore = s } }).update((e, n) => { + const i = a.getItemModel(e); const S = GS[l.type](a, e, i); if (g) { let M = void 0; x.length === 0 ? M = w(n) : ((M = x[n]).useStyle(y.getItemStyle()), l.type === 'cartesian2d' && M.setShape('r', v), m[e] = M); const I = GS[l.type](a, e); rh(M, { shape: jS(r, I, l) }, h, e) } let T = s.getItemGraphicEl(n); if (a.hasValue(e) && FS[l.type](S)) { + let C = !1; if (p && (C = RS[l.type](d, S)) && o.remove(T), T ? hh(T) : T = NS[l.type](t, a, e, S, r, h, u.model, !!T, f), c && (T.forceLabelAnimation = !0), b) { const D = T.getTextContent(); if (D) { const A = Jh(D); A.prevValue != null && (A.prevValue = A.value) } } + else { + HS(T, a, e, i, S, t, r, l.type === 'polar') + }_ ? T.attr({ shape: S }) : c ? ES(c, h, T, S, e, r, !0, b) : rh(T, { shape: S }, t, e, null), a.setItemGraphicEl(e, T), T.ignore = C, o.add(T) + } + else { + o.remove(T) + } + }).remove((e) => { const n = s.getItemGraphicEl(e); n && uh(n, t, e) }).execute(); const S = this._backgroundGroup || (this._backgroundGroup = new Cr()); S.removeAll(); for (let M = 0; M < m.length; ++M)S.add(m[M]); o.add(S), this._backgroundEls = m, this._data = a + }, e.prototype._renderLarge = function (t, e, n) { this._clear(), XS(t, this.group), this._updateLargeClip(t) }, e.prototype._incrementalRenderLarge = function (t, e) { this._removeBackground(), XS(e, this.group, this._progressiveEls, !0) }, e.prototype._updateLargeClip = function (t) { const e = t.get('clip', !0) && lS(t.coordinateSystem, !1, t); const n = this.group; e ? n.setClipPath(e) : n.removeClipPath() }, e.prototype._enableRealtimeSort = function (t, e, n) { + const i = this; if (e.count()) { + const r = t.baseAxis; if (this._isFirstFrame) { + this._dispatchInitSort(e, t, n), this._isFirstFrame = !1 + } + else { const o = function (t) { const n = e.getItemGraphicEl(t); const i = n && n.shape; return i && Math.abs(r.isHorizontal() ? i.height : i.width) || 0 }; this._onRendered = function () { i._updateSortWithinSameData(e, o, r, n) }, n.getZr().on('rendered', this._onRendered) } + } + }, e.prototype._dataSort = function (t, e, n) { const i = []; return t.each(t.mapDimension(e.dim), (t, e) => { let r = n(e); r = r == null ? Number.NaN : r, i.push({ dataIndex: e, mappedValue: r, ordinalNumber: t }) }), i.sort((t, e) => { return e.mappedValue - t.mappedValue }), { ordinalNumbers: z(i, (t) => { return t.ordinalNumber }) } }, e.prototype._isOrderChangedWithinSameData = function (t, e, n) { + for (let i = n.scale, r = t.mapDimension(n.dim), o = Number.MAX_VALUE, a = 0, s = i.getOrdinalMeta().categories.length; a < s; ++a) { + const l = t.rawIndexOf(r, i.getRawOrdinalNumber(a)); const u = l < 0 ? Number.MIN_VALUE : e(t.indexOfRawIndex(l)); if (u > o) + return !0; o = u + } return !1 + }, e.prototype._isOrderDifferentInView = function (t, e) { + for (let n = e.scale, i = n.getExtent(), r = Math.max(0, i[0]), o = Math.min(i[1], n.getOrdinalMeta().categories.length - 1); r <= o; ++r) { + if (t.ordinalNumbers[r] !== n.getRawOrdinalNumber(r)) + return !0 + } + }, e.prototype._updateSortWithinSameData = function (t, e, n, i) { if (this._isOrderChangedWithinSameData(t, e, n)) { const r = this._dataSort(t, n, e); this._isOrderDifferentInView(r, n) && (this._removeOnRenderedListener(i), i.dispatchAction({ type: 'changeAxisOrder', componentType: `${n.dim}Axis`, axisId: n.index, sortInfo: r })) } }, e.prototype._dispatchInitSort = function (t, e, n) { const i = e.baseAxis; const r = this._dataSort(t, i, (n) => { return t.get(t.mapDimension(e.otherAxis.dim), n) }); n.dispatchAction({ type: 'changeAxisOrder', componentType: `${i.dim}Axis`, isInitSort: !0, axisId: i.index, sortInfo: r }) }, e.prototype.remove = function (t, e) { this._clear(this._model), this._removeOnRenderedListener(e) }, e.prototype.dispose = function (t, e) { this._removeOnRenderedListener(e) }, e.prototype._removeOnRenderedListener = function (t) { this._onRendered && (t.getZr().off('rendered', this._onRendered), this._onRendered = null) }, e.prototype._clear = function (t) { const e = this.group; const n = this._data; t && t.isAnimationEnabled() && n && !this._isLargeDraw ? (this._removeBackground(), this._backgroundEls = [], n.eachItemGraphicEl((e) => { uh(e, t, Hs(e).dataIndex) })) : e.removeAll(), this._data = null, this._isFirstFrame = !0 }, e.prototype._removeBackground = function () { this.group.remove(this._backgroundGroup), this._backgroundGroup = null }, e.type = 'bar', e + }(xg)); var RS = { cartesian2d(t, e) { const n = e.width < 0 ? -1 : 1; const i = e.height < 0 ? -1 : 1; n < 0 && (e.x += e.width, e.width = -e.width), i < 0 && (e.y += e.height, e.height = -e.height); const r = t.x + t.width; const o = t.y + t.height; const a = LS(e.x, t.x); const s = PS(e.x + e.width, r); const l = LS(e.y, t.y); const u = PS(e.y + e.height, o); const h = s < a; const c = u < l; return e.x = h && a > r ? s : a, e.y = c && l > o ? u : l, e.width = h ? 0 : s - a, e.height = c ? 0 : u - l, n < 0 && (e.x += e.width, e.width = -e.width), i < 0 && (e.y += e.height, e.height = -e.height), h || c }, polar(t, e) { const n = e.r0 <= e.r ? 1 : -1; if (n < 0) { var i = e.r; e.r = e.r0, e.r0 = i } const r = PS(e.r, t.r); const o = LS(e.r0, t.r0); e.r = r, e.r0 = o; const a = r - o < 0; return n < 0 && (i = e.r, e.r = e.r0, e.r0 = i), a } }; var NS = { cartesian2d(t, e, n, i, r, o, a, s, l) { const u = new Cs({ shape: A({}, i), z2: 1 }); return u.__dataIndex = n, u.name = 'item', o && (u.shape[r ? 'height' : 'width'] = 0), u }, polar(t, e, n, i, r, o, a, s, l) { + const u = !r && l ? DS : Cu; const h = new u({ shape: i, z2: 1 }); h.name = 'item'; let c; let p; const d = WS(r); if (h.calculateTextPosition = (c = d, p = ({ isRoundCap: u === DS } || {}).isRoundCap, function (t, e, n) { + const i = e.position; if (!i || Array.isArray(i)) + return yr(t, e, n); const r = c(i); const o = e.distance != null ? e.distance : 5; const a = this.shape; const s = a.cx; const l = a.cy; const u = a.r; const h = a.r0; const d = (u + h) / 2; const f = a.startAngle; const g = a.endAngle; const y = (f + g) / 2; const v = p ? Math.abs(u - h) / 2 : 0; const m = Math.cos; const x = Math.sin; let _ = s + u * m(f); let b = l + u * x(f); let w = 'left'; let S = 'top'; switch (r) { case 'startArc':_ = s + (h - o) * m(y), b = l + (h - o) * x(y), w = 'center', S = 'top'; break; case 'insideStartArc':_ = s + (h + o) * m(y), b = l + (h + o) * x(y), w = 'center', S = 'bottom'; break; case 'startAngle':_ = s + d * m(f) + AS(f, o + v, !1), b = l + d * x(f) + kS(f, o + v, !1), w = 'right', S = 'middle'; break; case 'insideStartAngle':_ = s + d * m(f) + AS(f, -o + v, !1), b = l + d * x(f) + kS(f, -o + v, !1), w = 'left', S = 'middle'; break; case 'middle':_ = s + d * m(y), b = l + d * x(y), w = 'center', S = 'middle'; break; case 'endArc':_ = s + (u + o) * m(y), b = l + (u + o) * x(y), w = 'center', S = 'bottom'; break; case 'insideEndArc':_ = s + (u - o) * m(y), b = l + (u - o) * x(y), w = 'center', S = 'top'; break; case 'endAngle':_ = s + d * m(g) + AS(g, o + v, !0), b = l + d * x(g) + kS(g, o + v, !0), w = 'left', S = 'middle'; break; case 'insideEndAngle':_ = s + d * m(g) + AS(g, -o + v, !0), b = l + d * x(g) + kS(g, -o + v, !0), w = 'right', S = 'middle'; break; default:return yr(t, e, n) } return (t = t || {}).x = _, t.y = b, t.align = w, t.verticalAlign = S, t + }), o) { const f = r ? 'r' : 'endAngle'; const g = {}; h.shape[f] = r ? 0 : i.startAngle, g[f] = i[f], (s ? rh : oh)(h, { shape: g }, o) } return h + } }; function ES(t, e, n, i, r, o, a, s) { let l, u; o ? (u = { x: i.x, width: i.width }, l = { y: i.y, height: i.height }) : (u = { y: i.y, height: i.height }, l = { x: i.x, width: i.width }), s || (a ? rh : oh)(n, { shape: l }, e, r, null), (a ? rh : oh)(n, { shape: u }, e ? t.baseAxis.model : null, r) } function zS(t, e) { + for (let n = 0; n < e.length; n++) { + if (!isFinite(t[e[n]])) + return !0 + } return !1 + } const VS = ['x', 'y', 'width', 'height']; const BS = ['cx', 'cy', 'r', 'startAngle', 'endAngle']; var FS = { cartesian2d(t) { return !zS(t, VS) }, polar(t) { return !zS(t, BS) } }; var GS = { cartesian2d(t, e, n) { + const i = t.getItemLayout(e); const r = n + ? (function (t, e) { + const n = t.get(['itemStyle', 'borderColor']); if (!n || n === 'none') + return 0; const i = t.get(['itemStyle', 'borderWidth']) || 0; const r = isNaN(e.width) ? Number.MAX_VALUE : Math.abs(e.width); const o = isNaN(e.height) ? Number.MAX_VALUE : Math.abs(e.height); return Math.min(i, r, o) + }(n, i)) + : 0; const o = i.width > 0 ? 1 : -1; const a = i.height > 0 ? 1 : -1; return { x: i.x + o * r / 2, y: i.y + a * r / 2, width: i.width - o * r, height: i.height - a * r } + }, polar(t, e, n) { const i = t.getItemLayout(e); return { cx: i.cx, cy: i.cy, r0: i.r0, r: i.r, startAngle: i.startAngle, endAngle: i.endAngle, clockwise: i.clockwise } } }; function WS(t) { return (function (t) { const e = t ? 'Arc' : 'Angle'; return function (t) { switch (t) { case 'start':case 'insideStart':case 'end':case 'insideEnd':return t + e; default:return t } } }(t)) } function HS(t, e, n, i, r, o, a, s) { + const l = e.getItemVisual(n, 'style'); s || t.setShape('r', i.get(['itemStyle', 'borderRadius']) || 0), t.useStyle(l); const u = i.getShallow('cursor'); u && t.attr('cursor', u); const h = s ? a ? r.r >= r.r0 ? 'endArc' : 'startArc' : r.endAngle >= r.startAngle ? 'endAngle' : 'startAngle' : a ? r.height >= 0 ? 'bottom' : 'top' : r.width >= 0 ? 'right' : 'left'; const c = Yh(i); Hh(t, c, { labelFetcher: o, labelDataIndex: n, defaultText: Ww(o.getData(), n), inheritColor: l.fill, defaultOpacity: l.opacity, defaultOutsidePosition: h }); const p = t.getTextContent(); if (s && p) { + const d = i.get(['label', 'position']); t.textConfig.inside = d === 'middle' || null, (function (t, e, n, i) { + if (j(i)) { + t.setTextConfig({ rotation: i }) + } + else if (Y(e)) { + t.setTextConfig({ rotation: 0 }) + } + else { let r; const o = t.shape; const a = o.clockwise ? o.startAngle : o.endAngle; const s = o.clockwise ? o.endAngle : o.startAngle; const l = (a + s) / 2; const u = n(e); switch (u) { case 'startArc':case 'insideStartArc':case 'middle':case 'insideEndArc':case 'endArc':r = l; break; case 'startAngle':case 'insideStartAngle':r = a; break; case 'endAngle':case 'insideEndAngle':r = s; break; default:return void t.setTextConfig({ rotation: 0 }) } let h = 1.5 * Math.PI - r; u === 'middle' && h > Math.PI / 2 && h < 1.5 * Math.PI && (h -= Math.PI), t.setTextConfig({ rotation: h }) } + }(t, d === 'outside' ? h : d, WS(a), i.get(['label', 'rotate']))) + }Qh(p, c, o.getRawValue(n), (t) => { return Hw(e, t) }); const f = i.getModel(['emphasis']); Rl(t, f.get('focus'), f.get('blurScope'), f.get('disabled')), Vl(t, i), (function (t) { return t.startAngle != null && t.endAngle != null && t.startAngle === t.endAngle }(r)) && (t.style.fill = 'none', t.style.stroke = 'none', E(t.states, (t) => { t.style && (t.style.fill = t.style.stroke = 'none') })) + } const YS = function () {}; const US = (function (t) { function e(e) { const n = t.call(this, e) || this; return n.type = 'largeBar', n } return n(e, t), e.prototype.getDefaultShape = function () { return new YS() }, e.prototype.buildPath = function (t, e) { for (let n = e.points, i = this.baseDimIdx, r = 1 - this.baseDimIdx, o = [], a = [], s = this.barWidth, l = 0; l < n.length; l += 3)a[i] = s, a[r] = n[l + 2], o[i] = n[l + i], o[r] = n[l + r], t.rect(o[0], o[1], a[0], a[1]) }, e }(gs)); function XS(t, e, n, i) { const r = t.getData(); const o = r.getLayout('valueAxisHorizontal') ? 1 : 0; const a = r.getLayout('largeDataIndices'); const s = r.getLayout('size'); const l = t.getModel('backgroundStyle'); const u = r.getLayout('largeBackgroundPoints'); if (u) { const h = new US({ shape: { points: u }, incremental: !!i, silent: !0, z2: 0 }); h.baseDimIdx = o, h.largeDataIndices = a, h.barWidth = s, h.useStyle(l.getItemStyle()), e.add(h), n && n.push(h) } const c = new US({ shape: { points: r.getLayout('largePoints') }, incremental: !!i, z2: 1 }); c.baseDimIdx = o, c.largeDataIndices = a, c.barWidth = s, e.add(c), c.useStyle(r.getVisual('style')), Hs(c).seriesIndex = t.seriesIndex, t.get('silent') || (c.on('mousedown', ZS), c.on('mousemove', ZS)), n && n.push(c) } var ZS = Dg(function (t) { + const e = (function (t, e, n) { + for (let i = t.baseDimIdx, r = 1 - i, o = t.shape.points, a = t.largeDataIndices, s = [], l = [], u = t.barWidth, h = 0, c = o.length / 3; h < c; h++) { + const p = 3 * h; if (l[i] = u, l[r] = o[p + 2], s[i] = o[p + i], s[r] = o[p + r], l[r] < 0 && (s[r] += l[r], l[r] = -l[r]), e >= s[0] && e <= s[0] + l[0] && n >= s[1] && n <= s[1] + l[1]) + return a[h] + } return -1 + }(this, t.offsetX, t.offsetY)); Hs(this).dataIndex = e >= 0 ? e : null + }, 30, !1); function jS(t, e, n) { if (uS(n, 'cartesian2d')) { const i = e; var r = n.getArea(); return { x: t ? i.x : r.x, y: t ? r.y : i.y, width: t ? i.width : r.width, height: t ? r.height : i.height } } const o = e; return { cx: (r = n.getArea()).cx, cy: r.cy, r0: t ? r.r0 : o.r0, r: t ? r.r : o.r, startAngle: t ? o.startAngle : 0, endAngle: t ? o.endAngle : 2 * Math.PI } } const qS = 2 * Math.PI; const KS = Math.PI / 180; function $S(t, e) { return xp(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }) } function JS(t, e) { const n = $S(t, e); let i = t.get('center'); let r = t.get('radius'); Y(r) || (r = [0, r]), Y(i) || (i = [i, i]); const o = Er(n.width, e.getWidth()); const a = Er(n.height, e.getHeight()); const s = Math.min(o, a); return { cx: Er(i[0], o) + n.x, cy: Er(i[1], a) + n.y, r0: Er(r[0], s / 2), r: Er(r[1], s / 2) } } function QS(t, e, n) { + e.eachSeriesByType(t, (t) => { + const e = t.getData(); const i = e.mapDimension('value'); const r = $S(t, n); const o = JS(t, n); const a = o.cx; const s = o.cy; const l = o.r; const u = o.r0; const h = -t.get('startAngle') * KS; const c = t.get('minAngle') * KS; let p = 0; e.each(i, (t) => { !isNaN(t) && p++ }); const d = e.getSum(i); let f = Math.PI / (d || p) * 2; const g = t.get('clockwise'); const y = t.get('roseType'); const v = t.get('stillShowZeroSum'); const m = e.getDataExtent(i); m[0] = 0; let x = qS; let _ = 0; let b = h; const w = g ? 1 : -1; if (e.setLayout({ viewRect: r, r: l }), e.each(i, (t, n) => { + let i; if (isNaN(t)) { + e.setItemLayout(n, { angle: Number.NaN, startAngle: Number.NaN, endAngle: Number.NaN, clockwise: g, cx: a, cy: s, r0: u, r: y ? Number.NaN : l }) + } + else { (i = y !== 'area' ? d === 0 && v ? f : t * f : qS / p) < c ? (i = c, x -= c) : _ += t; const r = b + w * i; e.setItemLayout(n, { angle: i, startAngle: b, endAngle: r, clockwise: g, cx: a, cy: s, r0: u, r: y ? Nr(t, m, [u, l]) : l }), b = r } + }), x < qS && p) { + if (x <= 0.001) { const S = qS / p; e.each(i, (t, n) => { if (!isNaN(t)) { const i = e.getItemLayout(n); i.angle = S, i.startAngle = h + w * n * S, i.endAngle = h + w * (n + 1) * S } }) } + else { + f = x / _, b = h, e.each(i, (t, n) => { if (!isNaN(t)) { const i = e.getItemLayout(n); const r = i.angle === c ? c : t * f; i.startAngle = b, i.endAngle = b + w * r, b += w * r } }) + } + } + }) + } function tM(t) { + return { seriesType: t, reset(t, e) { + const n = e.findComponents({ mainType: 'legend' }); if (n && n.length) { + const i = t.getData(); i.filterSelf((t) => { + for (let e = i.getName(t), r = 0; r < n.length; r++) { + if (!n[r].isSelected(e)) + return !1 + } return !0 + }) + } + } } + } const eM = Math.PI / 180; function nM(t, e, n, i, r, o, a, s, l, u) { + if (!(t.length < 2)) { + for (let h = t.length, c = 0; c < h; c++) { + if (t[c].position === 'outer' && t[c].labelAlignTo === 'labelLine') { const p = t[c].label.x - u; t[c].linePoints[1][0] += p, t[c].label.x = u } + }vb(t, l, l + a) && (function (t) { + for (var o = { list: [], maxY: 0 }, a = { list: [], maxY: 0 }, s = 0; s < t.length; s++) { + if (t[s].labelAlignTo === 'none') { const l = t[s]; const u = l.label.y > n ? a : o; const h = Math.abs(l.label.y - n); if (h >= u.maxY) { const c = l.label.x - e - l.len2 * r; const p = i + l.len; const f = Math.abs(c) < p ? Math.sqrt(h * h / (1 - c * c / p / p)) : p; u.rB = f, u.maxY = h }u.list.push(l) } + }d(o), d(a) + }(t)) + } function d(t) { for (let o = t.rB, a = o * o, s = 0; s < t.list.length; s++) { const l = t.list[s]; const u = Math.abs(l.label.y - n); const h = i + l.len; const c = h * h; const p = Math.sqrt((1 - Math.abs(u * u / a)) * c); const d = e + (p + l.len2) * r; const f = d - l.label.x; iM(l, l.targetTextWidth - f * r, !0), l.label.x = d } } + } function iM(t, e, n) { + if (void 0 === n && (n = !1), t.labelStyleWidth == null) { + const i = t.label; const r = i.style; const o = t.rect; const a = r.backgroundColor; const s = r.padding; const l = s ? s[1] + s[3] : 0; const u = r.overflow; const h = o.width + (a ? 0 : l); if (e < h || n) { + const c = o.height; if (u && u.match('break')) { i.setStyle('backgroundColor', null), i.setStyle('width', e - l); const p = i.getBoundingRect(); i.setStyle('width', Math.ceil(p.width)), i.setStyle('backgroundColor', a) } + else { const d = e - l; const f = e < h ? d : n ? d > t.unconstrainedWidth ? null : d : null; i.setStyle('width', f) } const g = i.getBoundingRect(); o.width = g.width; const y = (i.style.margin || 0) + 2.1; o.height = g.height + y, o.y -= (o.height - c) / 2 + } + } + } function rM(t) { return t.position === 'center' } function aM(t, e, n) { + let i = t.get('borderRadius'); if (i == null) + return n ? { cornerRadius: 0 } : null; Y(i) || (i = [i, i, i, i]); const r = Math.abs(e.r || 0 - e.r0 || 0); return { cornerRadius: z(i, (t) => { return gr(t, r) }) } + } const sM = (function (t) { + function e(e, n, i) { const r = t.call(this) || this; r.z2 = 2; const o = new ks(); return r.setTextContent(o), r.updateData(e, n, i, !0), r } return n(e, t), e.prototype.updateData = function (t, e, n, i) { + const r = this; const o = t.hostModel; const a = t.getItemModel(e); const s = a.getModel('emphasis'); const l = t.getItemLayout(e); const u = A(aM(a.getModel('itemStyle'), l, !0), l); if (isNaN(u.startAngle)) { + r.setShape(u) + } + else { + if (i) { r.setShape(u); const h = o.getShallow('animationType'); o.ecModel.ssr ? (oh(r, { scaleX: 0, scaleY: 0 }, o, { dataIndex: e, isFrom: !0 }), r.originX = u.cx, r.originY = u.cy) : h === 'scale' ? (r.shape.r = l.r0, oh(r, { shape: { r: l.r } }, o, e)) : n != null ? (r.setShape({ startAngle: n, endAngle: n }), oh(r, { shape: { startAngle: l.startAngle, endAngle: l.endAngle } }, o, e)) : (r.shape.endAngle = l.startAngle, rh(r, { shape: { endAngle: l.endAngle } }, o, e)) } + else { + hh(r), rh(r, { shape: u }, o, e) + }r.useStyle(t.getItemVisual(e, 'style')), Vl(r, a); const c = (l.startAngle + l.endAngle) / 2; const p = o.get('selectedOffset'); const d = Math.cos(c) * p; const f = Math.sin(c) * p; const g = a.getShallow('cursor'); g && r.attr('cursor', g), this._updateLabel(o, t, e), r.ensureState('emphasis').shape = A({ r: l.r + (s.get('scale') && s.get('scaleSize') || 0) }, aM(s.getModel('itemStyle'), l)), A(r.ensureState('select'), { x: d, y: f, shape: aM(a.getModel(['select', 'itemStyle']), l) }), A(r.ensureState('blur'), { shape: aM(a.getModel(['blur', 'itemStyle']), l) }); const y = r.getTextGuideLine(); const v = r.getTextContent(); y && A(y.ensureState('select'), { x: d, y: f }), A(v.ensureState('select'), { x: d, y: f }), Rl(this, s.get('focus'), s.get('blurScope'), s.get('disabled')) + } + }, e.prototype._updateLabel = function (t, e, n) { + const i = this; const r = e.getItemModel(n); const o = r.getModel('labelLine'); const a = e.getItemVisual(n, 'style'); const s = a && a.fill; const l = a && a.opacity; Hh(i, Yh(r), { labelFetcher: e.hostModel, labelDataIndex: n, inheritColor: s, defaultOpacity: l, defaultText: t.getFormattedLabel(n, 'normal') || e.getName(n) }); const u = i.getTextContent(); i.setTextConfig({ position: null, rotation: null }), u.attr({ z2: 10 }); const h = t.get(['label', 'position']); if (h !== 'outside' && h !== 'outer') { + i.removeTextGuideLine() + } + else { let c = this.getTextGuideLine(); c || (c = new Ru(), this.setTextGuideLine(c)), db(this, fb(r), { stroke: s, opacity: ot(o.get(['lineStyle', 'opacity']), l, 1) }) } + }, e + }(Cu)); const lM = (function (t) { + function e() { const e = t !== null && t.apply(this, arguments) || this; return e.ignoreLabelLineUpdate = !0, e } return n(e, t), e.prototype.render = function (t, e, n, i) { + let r; const o = t.getData(); const a = this._data; const s = this.group; if (!a && o.count() > 0) { for (var l = o.getItemLayout(0), u = 1; isNaN(l && l.startAngle) && u < o.count(); ++u)l = o.getItemLayout(u); l && (r = l.startAngle) } if (this._emptyCircleSector && s.remove(this._emptyCircleSector), o.count() === 0 && t.get('showEmptyCircle')) { const h = new Cu({ shape: JS(t, n) }); h.useStyle(t.getModel('emptyCircleStyle').getItemStyle()), this._emptyCircleSector = h, s.add(h) }o.diff(a).add((t) => { const e = new sM(o, t, r); o.setItemGraphicEl(t, e), s.add(e) }).update((t, e) => { const n = a.getItemGraphicEl(e); n.updateData(o, t, r), n.off('click'), s.add(n), o.setItemGraphicEl(t, n) }).remove((e) => { uh(a.getItemGraphicEl(e), t, e) }).execute(), (function (t) { + let e; let n; const i = t.getData(); const r = []; let o = !1; const a = (t.get('minShowLabelAngle') || 0) * eM; const s = i.getLayout('viewRect'); const l = i.getLayout('r'); const u = s.width; const h = s.x; const c = s.y; const p = s.height; function d(t) { t.ignore = !0 }i.each((t) => { + const s = i.getItemGraphicEl(t); const c = s.shape; const p = s.getTextContent(); const f = s.getTextGuideLine(); const g = i.getItemModel(t); const y = g.getModel('label'); const v = y.get('position') || g.get(['emphasis', 'label', 'position']); const m = y.get('distanceToLabelLine'); const x = y.get('alignTo'); const _ = Er(y.get('edgeDistance'), u); const b = y.get('bleedMargin'); const w = g.getModel('labelLine'); let S = w.get('length'); S = Er(S, u); let M = w.get('length2'); if (M = Er(M, u), Math.abs(c.endAngle - c.startAngle) < a) + return E(p.states, d), void (p.ignore = !0); if (function (t) { + if (!t.ignore) + return !0; for (const e in t.states) { + if (!1 === t.states[e].ignore) + return !0 + } return !1 + }(p)) { + let I; let T; let C; let D; const A = (c.startAngle + c.endAngle) / 2; const k = Math.cos(A); const L = Math.sin(A); e = c.cx, n = c.cy; const P = v === 'inside' || v === 'inner'; if (v === 'center') { + I = c.cx, T = c.cy, D = 'center' + } + else { const O = (P ? (c.r + c.r0) / 2 * k : c.r * k) + e; const R = (P ? (c.r + c.r0) / 2 * L : c.r * L) + n; if (I = O + 3 * k, T = R + 3 * L, !P) { const N = O + k * (S + l - c.r); const z = R + L * (S + l - c.r); const V = N + (k < 0 ? -1 : 1) * M; I = x === 'edge' ? k < 0 ? h + _ : h + u - _ : V + (k < 0 ? -m : m), T = z, C = [[O, R], [N, z], [V, z]] }D = P ? 'center' : x === 'edge' ? k > 0 ? 'right' : 'left' : k > 0 ? 'left' : 'right' } const B = Math.PI; let F = 0; const G = y.get('rotate'); if (j(G)) { + F = G * (B / 180) + } + else if (v === 'center') { + F = 0 + } + else if (G === 'radial' || !0 === G) { + F = k < 0 ? -A + B : -A + } + else if (G === 'tangential' && v !== 'outside' && v !== 'outer') { let W = Math.atan2(k, L); W < 0 && (W = 2 * B + W), L > 0 && (W = B + W), F = W - B } if (o = !!F, p.x = I, p.y = T, p.rotation = F, p.setStyle({ verticalAlign: 'middle' }), P) { p.setStyle({ align: D }); const H = p.states.select; H && (H.x += p.x, H.y += p.y) } + else { const Y = p.getBoundingRect().clone(); Y.applyTransform(p.getComputedTransform()); const U = (p.style.margin || 0) + 2.1; Y.y -= U / 2, Y.height += U, r.push({ label: p, labelLine: f, position: v, len: S, len2: M, minTurnAngle: w.get('minTurnAngle'), maxSurfaceAngle: w.get('maxSurfaceAngle'), surfaceNormal: new Ji(k, L), linePoints: C, textAlign: D, labelDistance: m, labelAlignTo: x, edgeDistance: _, bleedMargin: b, rect: Y, unconstrainedWidth: Y.width, labelStyleWidth: p.style.width }) }s.setTextConfig({ inside: P }) + } + }), !o && t.get('avoidLabelOverlap') && (function (t, e, n, i, r, o, a, s) { + for (var l = [], u = [], h = Number.MAX_VALUE, c = -Number.MAX_VALUE, p = 0; p < t.length; p++) { var d = t[p].label; rM(t[p]) || (d.x < e ? (h = Math.min(h, d.x), l.push(t[p])) : (c = Math.max(c, d.x), u.push(t[p]))) } for (p = 0; p < t.length; p++) { + if (!rM(y = t[p]) && y.linePoints) { + if (y.labelStyleWidth != null) + continue; d = y.label; var g; var f = y.linePoints; g = y.labelAlignTo === 'edge' ? d.x < e ? f[2][0] - y.labelDistance - a - y.edgeDistance : a + r - y.edgeDistance - f[2][0] - y.labelDistance : y.labelAlignTo === 'labelLine' ? d.x < e ? h - a - y.bleedMargin : a + r - c - y.bleedMargin : d.x < e ? d.x - a - y.bleedMargin : a + r - d.x - y.bleedMargin, y.targetTextWidth = g, iM(y, g) + } + } for (nM(u, e, n, i, 1, 0, o, 0, s, c), nM(l, e, n, i, -1, 0, o, 0, s, h), p = 0; p < t.length; p++) { var y; if (!rM(y = t[p]) && y.linePoints) { d = y.label, f = y.linePoints; const v = y.labelAlignTo === 'edge'; const m = d.style.padding; const x = m ? m[1] + m[3] : 0; const _ = d.style.backgroundColor ? 0 : x; const b = y.rect.width + _; const w = f[1][0] - f[2][0]; v ? d.x < e ? f[2][0] = a + y.edgeDistance + b + y.labelDistance : f[2][0] = a + r - y.edgeDistance - b - y.labelDistance : (d.x < e ? f[2][0] = d.x + y.labelDistance : f[2][0] = d.x - y.labelDistance, f[1][0] = f[2][0] + w), f[1][1] = f[2][1] = d.y } } + }(r, e, n, l, u, p, h, c)); for (let f = 0; f < r.length; f++) { const g = r[f]; const y = g.label; const v = g.labelLine; const m = isNaN(y.x) || isNaN(y.y); if (y) { y.setStyle({ align: g.textAlign }), m && (E(y.states, d), y.ignore = !0); const x = y.states.select; x && (x.x += y.x, x.y += y.y) } if (v) { const _ = g.linePoints; m || !_ ? (E(v.states, d), v.ignore = !0) : (ub(_, g.minTurnAngle), hb(_, g.surfaceNormal, g.maxSurfaceAngle), v.setShape({ points: _ }), y.__hostTarget.textGuideLineConfig = { anchor: new Ji(_[0][0], _[0][1]) }) } } + }(t)), t.get('animationTypeUpdate') !== 'expansion' && (this._data = o) + }, e.prototype.dispose = function () {}, e.prototype.containPoint = function (t, e) { const n = e.getData().getItemLayout(0); if (n) { const i = t[0] - n.cx; const r = t[1] - n.cy; const o = Math.sqrt(i * i + r * r); return o <= n.r && o >= n.r0 } }, e.type = 'pie', e + }(xg)); function uM(t, e, n) { e = Y(e) && { coordDimensions: e } || A({ encodeDefine: t.getEncode() }, e); const i = t.getSource(); const r = Km(i, e).dimensions; const o = new qm(r, t); return o.initData(i, n), o } const hM = (function () { function t(t, e) { this._getDataWithEncodedVisual = t, this._getRawData = e } return t.prototype.getAllNames = function () { const t = this._getRawData(); return t.mapArray(t.getName) }, t.prototype.containName = function (t) { return this._getRawData().indexOfName(t) >= 0 }, t.prototype.indexOfName = function (t) { return this._getDataWithEncodedVisual().indexOfName(t) }, t.prototype.getItemVisual = function (t, e) { return this._getDataWithEncodedVisual().getItemVisual(t, e) }, t }()); const cM = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.init = function (e) { t.prototype.init.apply(this, arguments), this.legendVisualProvider = new hM(W(this.getData, this), W(this.getRawData, this)), this._defaultLabelLine(e) }, e.prototype.mergeOption = function () { t.prototype.mergeOption.apply(this, arguments) }, e.prototype.getInitialData = function () { return uM(this, { coordDimensions: ['value'], encodeDefaulter: H(Yp, this) }) }, e.prototype.getDataParams = function (e) { const n = this.getData(); const i = t.prototype.getDataParams.call(this, e); const r = []; return n.each(n.mapDimension('value'), (t) => { r.push(t) }), i.percent = Wr(r, e, n.hostModel.get('percentPrecision')), i.$vars.push('percent'), i }, e.prototype._defaultLabelLine = function (t) { co(t, 'labelLine', ['show']); const e = t.labelLine; const n = t.emphasis.labelLine; e.show = e.show && t.label.show, n.show = n.show && t.emphasis.label.show }, e.type = 'series.pie', e.defaultOption = { z: 2, legendHoverLink: !0, colorBy: 'data', center: ['50%', '50%'], radius: [0, '75%'], clockwise: !0, startAngle: 90, minAngle: 0, minShowLabelAngle: 0, selectedOffset: 10, percentPrecision: 2, stillShowZeroSum: !0, left: 0, top: 0, right: 0, bottom: 0, width: null, height: null, label: { rotate: 0, show: !0, overflow: 'truncate', position: 'outer', alignTo: 'none', edgeDistance: '25%', bleedMargin: 10, distanceToLabelLine: 5 }, labelLine: { show: !0, length: 15, length2: 15, smooth: !1, minTurnAngle: 90, maxSurfaceAngle: 90, lineStyle: { width: 1, type: 'solid' } }, itemStyle: { borderWidth: 1, borderJoin: 'round' }, showEmptyCircle: !0, emptyCircleStyle: { color: 'lightgray', opacity: 1 }, labelLayout: { hideOverlap: !0 }, emphasis: { scale: !0, scaleSize: 5 }, avoidLabelOverlap: !0, animationType: 'expansion', animationDuration: 1e3, animationTypeUpdate: 'transition', animationEasingUpdate: 'cubicInOut', animationDurationUpdate: 500, animationEasing: 'cubicInOut' }, e }(sg)); const pM = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.hasSymbolVisual = !0, n } return n(e, t), e.prototype.getInitialData = function (t, e) { return rx(null, this, { useEncodeDefaulter: !0 }) }, e.prototype.getProgressive = function () { const t = this.option.progressive; return t == null ? this.option.large ? 5e3 : this.get('progressive') : t }, e.prototype.getProgressiveThreshold = function () { const t = this.option.progressiveThreshold; return t == null ? this.option.large ? 1e4 : this.get('progressiveThreshold') : t }, e.prototype.brushSelector = function (t, e, n) { return n.point(e.getItemLayout(t)) }, e.prototype.getZLevelKey = function () { return this.getData().count() > this.getProgressiveThreshold() ? this.id : '' }, e.type = 'series.scatter', e.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'], e.defaultOption = { coordinateSystem: 'cartesian2d', z: 2, legendHoverLink: !0, symbolSize: 10, large: !1, largeThreshold: 2e3, itemStyle: { opacity: 0.8 }, emphasis: { scale: !0 }, clip: !0, select: { itemStyle: { borderColor: '#212121' } }, universalTransition: { divideShape: 'clone' } }, e }(sg)); const dM = function () {}; const fM = (function (t) { + function e(e) { const n = t.call(this, e) || this; return n._off = 0, n.hoverDataIdx = -1, n } return n(e, t), e.prototype.getDefaultShape = function () { return new dM() }, e.prototype.reset = function () { this.notClear = !1, this._off = 0 }, e.prototype.buildPath = function (t, e) { + let n; const i = e.points; const r = e.size; const o = this.symbolProxy; const a = o.shape; const s = t.getContext ? t.getContext() : t; const l = s && r[0] < 4; const u = this.softClipShape; if (l) { + this._ctx = s + } + else { for (this._ctx = null, n = this._off; n < i.length;) { const h = i[n++]; const c = i[n++]; isNaN(h) || isNaN(c) || u && !u.contain(h, c) || (a.x = h - r[0] / 2, a.y = c - r[1] / 2, a.width = r[0], a.height = r[1], o.buildPath(t, a, !0)) } this.incremental && (this._off = n, this.notClear = !0) } + }, e.prototype.afterBrush = function () { let t; const e = this.shape; const n = e.points; const i = e.size; const r = this._ctx; const o = this.softClipShape; if (r) { for (t = this._off; t < n.length;) { const a = n[t++]; const s = n[t++]; isNaN(a) || isNaN(s) || o && !o.contain(a, s) || r.fillRect(a - i[0] / 2, s - i[1] / 2, i[0], i[1]) } this.incremental && (this._off = t, this.notClear = !0) } }, e.prototype.findDataIndex = function (t, e) { + for (let n = this.shape, i = n.points, r = n.size, o = Math.max(r[0], 4), a = Math.max(r[1], 4), s = i.length / 2 - 1; s >= 0; s--) { + const l = 2 * s; const u = i[l] - o / 2; const h = i[l + 1] - a / 2; if (t >= u && e >= h && t <= u + o && e <= h + a) + return s + } return -1 + }, e.prototype.contain = function (t, e) { const n = this.transformCoordToLocal(t, e); const i = this.getBoundingRect(); return t = n[0], e = n[1], i.contain(t, e) ? (this.hoverDataIdx = this.findDataIndex(t, e)) >= 0 : (this.hoverDataIdx = -1, !1) }, e.prototype.getBoundingRect = function () { let t = this._rect; if (!t) { for (var e = this.shape, n = e.points, i = e.size, r = i[0], o = i[1], a = 1 / 0, s = 1 / 0, l = -1 / 0, u = -1 / 0, h = 0; h < n.length;) { const c = n[h++]; const p = n[h++]; a = Math.min(c, a), l = Math.max(c, l), s = Math.min(p, s), u = Math.max(p, u) }t = this._rect = new sr(a - r / 2, s - o / 2, l - a + r, u - s + o) } return t }, e + }(gs)); const gM = (function () { + function t() { this.group = new Cr() } return t.prototype.updateData = function (t, e) { this._clear(); const n = this._create(); n.setShape({ points: t.getLayout('points') }), this._setCommon(n, t, e) }, t.prototype.updateLayout = function (t) { let e = t.getLayout('points'); this.group.eachChild((t) => { if (t.startIndex != null) { const n = 2 * (t.endIndex - t.startIndex); const i = 4 * t.startIndex * 2; e = new Float32Array(e.buffer, i, n) }t.setShape('points', e), t.reset() }) }, t.prototype.incrementalPrepareUpdate = function (t) { this._clear() }, t.prototype.incrementalUpdate = function (t, e, n) { + const i = this._newAdded[0]; const r = e.getLayout('points'); const o = i && i.shape.points; if (o && o.length < 2e4) { const a = o.length; const s = new Float32Array(a + r.length); s.set(o), s.set(r, a), i.endIndex = t.end, i.setShape({ points: s }) } + else { this._newAdded = []; const l = this._create(); l.startIndex = t.start, l.endIndex = t.end, l.incremental = !0, l.setShape({ points: r }), this._setCommon(l, e, n) } + }, t.prototype.eachRendered = function (t) { this._newAdded[0] && t(this._newAdded[0]) }, t.prototype._create = function () { const t = new fM({ cursor: 'default' }); return this.group.add(t), this._newAdded.push(t), t }, t.prototype._setCommon = function (t, e, n) { const i = e.hostModel; n = n || {}; const r = e.getVisual('symbolSize'); t.setShape('size', Array.isArray(r) ? r : [r, r]), t.softClipShape = n.clipShape || null, t.symbolProxy = Ly(e.getVisual('symbol'), 0, 0, 0, 0), t.setColor = t.symbolProxy.setColor; const o = t.shape.size[0] < 4; t.useStyle(i.getModel('itemStyle').getItemStyle(o ? ['color', 'shadowBlur', 'shadowColor'] : ['color'])); const a = e.getVisual('style'); const s = a && a.fill; s && t.setColor(s); const l = Hs(t); l.seriesIndex = i.seriesIndex, t.on('mousemove', (e) => { l.dataIndex = null; const n = t.hoverDataIdx; n >= 0 && (l.dataIndex = n + (t.startIndex || 0)) }) }, t.prototype.remove = function () { this._clear() }, t.prototype._clear = function () { this._newAdded = [], this.group.removeAll() }, t + }()); const yM = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { const i = t.getData(); this._updateSymbolDraw(i, t).updateData(i, { clipShape: this._getClipShape(t) }), this._finished = !0 }, e.prototype.incrementalPrepareRender = function (t, e, n) { const i = t.getData(); this._updateSymbolDraw(i, t).incrementalPrepareUpdate(i), this._finished = !1 }, e.prototype.incrementalRender = function (t, e, n) { this._symbolDraw.incrementalUpdate(t, e.getData(), { clipShape: this._getClipShape(e) }), this._finished = t.end === e.getData().count() }, e.prototype.updateTransform = function (t, e, n) { + const i = t.getData(); if (this.group.dirty(), !this._finished || i.count() > 1e4) + return { update: !0 }; const r = bS('').reset(t, e, n); r.progress && r.progress({ start: 0, end: i.count(), count: i.count() }, i), this._symbolDraw.updateLayout(i) + }, e.prototype.eachRendered = function (t) { this._symbolDraw && this._symbolDraw.eachRendered(t) }, e.prototype._getClipShape = function (t) { const e = t.coordinateSystem; const n = e && e.getArea && e.getArea(); return t.get('clip', !0) ? n : null }, e.prototype._updateSymbolDraw = function (t, e) { let n = this._symbolDraw; const i = e.pipelineContext.large; return n && i === this._isLargeDraw || (n && n.remove(), n = this._symbolDraw = i ? new gM() : new qw(), this._isLargeDraw = i, this.group.removeAll()), this.group.add(n.group), n }, e.prototype.remove = function (t, e) { this._symbolDraw && this._symbolDraw.remove(!0), this._symbolDraw = null }, e.prototype.dispose = function () {}, e.type = 'scatter', e + }(xg)); const vM = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.type = 'grid', e.dependencies = ['xAxis', 'yAxis'], e.layoutMode = 'box', e.defaultOption = { show: !1, z: 0, left: '10%', top: 60, right: '10%', bottom: 70, containLabel: !1, backgroundColor: 'rgba(0,0,0,0)', borderWidth: 1, borderColor: '#ccc' }, e }(Tp)); const mM = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.getCoordSysModel = function () { return this.getReferringComponents('grid', Co).models[0] }, e.type = 'cartesian2dAxis', e }(Tp)); R(mM, p_); const xM = { show: !0, z: 0, inverse: !1, name: '', nameLocation: 'end', nameRotate: null, nameTruncate: { maxWidth: null, ellipsis: '...', placeholder: '.' }, nameTextStyle: {}, nameGap: 15, silent: !1, triggerEvent: !1, tooltip: { show: !1 }, axisPointer: {}, axisLine: { show: !0, onZero: !0, onZeroAxisIndex: null, lineStyle: { color: '#6E7079', width: 1, type: 'solid' }, symbol: ['none', 'none'], symbolSize: [10, 15] }, axisTick: { show: !0, inside: !1, length: 5, lineStyle: { width: 1 } }, axisLabel: { show: !0, inside: !1, rotate: 0, showMinLabel: null, showMaxLabel: null, margin: 8, fontSize: 12 }, splitLine: { show: !0, lineStyle: { color: ['#E0E6F1'], width: 1, type: 'solid' } }, splitArea: { show: !1, areaStyle: { color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'] } } }; const _M = C({ boundaryGap: !0, deduplication: null, splitLine: { show: !1 }, axisTick: { alignWithLabel: !1, interval: 'auto' }, axisLabel: { interval: 'auto' } }, xM); const bM = C({ boundaryGap: [0, 0], axisLine: { show: 'auto' }, axisTick: { show: 'auto' }, splitNumber: 5, minorTick: { show: !1, splitNumber: 5, length: 3, lineStyle: {} }, minorSplitLine: { show: !1, lineStyle: { color: '#F4F7FD', width: 1 } } }, xM); const wM = { category: _M, value: bM, time: C({ splitNumber: 6, axisLabel: { showMinLabel: !1, showMaxLabel: !1, rich: { primary: { fontWeight: 'bold' } } }, splitLine: { show: !1 } }, bM), log: k({ logBase: 10 }, bM) }; const SM = { value: 1, category: 1, time: 1, log: 1 }; function MM(t, e, i, r) { + E(SM, (o, a) => { + const s = C(C({}, wM[a], !0), r, !0); const l = (function (t) { + function i() { const n = t !== null && t.apply(this, arguments) || this; return n.type = `${e}Axis.${a}`, n } return n(i, t), i.prototype.mergeDefaultAndTheme = function (t, e) { const n = bp(this); const i = n ? Sp(t) : {}; C(t, e.getTheme().get(`${a}Axis`)), C(t, this.getDefaultOption()), t.type = IM(t), n && wp(t, i, n) }, i.prototype.optionUpdated = function () { this.option.type === 'category' && (this.__ordinalMeta = sx.createByAxisModel(this)) }, i.prototype.getCategories = function (t) { + const e = this.option; if (e.type === 'category') + return t ? e.data : this.__ordinalMeta.categories + }, i.prototype.getOrdinalMeta = function () { return this.__ordinalMeta }, i.type = `${e}Axis.${a}`, i.defaultOption = s, i + }(i)); t.registerComponentModel(l) + }), t.registerSubTypeDefaulter(`${e}Axis`, IM) + } function IM(t) { return t.type || (t.data ? 'category' : 'value') } const TM = (function () { function t(t) { this.type = 'cartesian', this._dimList = [], this._axes = {}, this.name = t || '' } return t.prototype.getAxis = function (t) { return this._axes[t] }, t.prototype.getAxes = function () { return z(this._dimList, function (t) { return this._axes[t] }, this) }, t.prototype.getAxesByScale = function (t) { return t = t.toLowerCase(), B(this.getAxes(), (e) => { return e.scale.type === t }) }, t.prototype.addAxis = function (t) { const e = t.dim; this._axes[e] = t, this._dimList.push(e) }, t }()); const CM = ['x', 'y']; function DM(t) { return t.type === 'interval' || t.type === 'time' } const AM = (function (t) { + function e() { const e = t !== null && t.apply(this, arguments) || this; return e.type = 'cartesian2d', e.dimensions = CM, e } return n(e, t), e.prototype.calcAffineTransform = function () { this._transform = this._invTransform = null; const t = this.getAxis('x').scale; const e = this.getAxis('y').scale; if (DM(t) && DM(e)) { const n = t.getExtent(); const i = e.getExtent(); const r = this.dataToPoint([n[0], i[0]]); const o = this.dataToPoint([n[1], i[1]]); const a = n[1] - n[0]; const s = i[1] - i[0]; if (a && s) { const l = (o[0] - r[0]) / a; const u = (o[1] - r[1]) / s; const h = r[0] - n[0] * l; const c = r[1] - i[0] * u; const p = this._transform = [l, 0, 0, u, h, c]; this._invTransform = Bi([], p) } } }, e.prototype.getBaseAxis = function () { return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAxis('x') }, e.prototype.containPoint = function (t) { const e = this.getAxis('x'); const n = this.getAxis('y'); return e.contain(e.toLocalCoord(t[0])) && n.contain(n.toLocalCoord(t[1])) }, e.prototype.containData = function (t) { return this.getAxis('x').containData(t[0]) && this.getAxis('y').containData(t[1]) }, e.prototype.containZone = function (t, e) { const n = this.dataToPoint(t); const i = this.dataToPoint(e); const r = this.getArea(); const o = new sr(n[0], n[1], i[0] - n[0], i[1] - n[1]); return r.intersect(o) }, e.prototype.dataToPoint = function (t, e, n) { + n = n || []; const i = t[0]; const r = t[1]; if (this._transform && i != null && isFinite(i) && r != null && isFinite(r)) + return Ft(n, t, this._transform); const o = this.getAxis('x'); const a = this.getAxis('y'); return n[0] = o.toGlobalCoord(o.dataToCoord(i, e)), n[1] = a.toGlobalCoord(a.dataToCoord(r, e)), n + }, e.prototype.clampData = function (t, e) { const n = this.getAxis('x').scale; const i = this.getAxis('y').scale; const r = n.getExtent(); const o = i.getExtent(); const a = n.parse(t[0]); const s = i.parse(t[1]); return (e = e || [])[0] = Math.min(Math.max(Math.min(r[0], r[1]), a), Math.max(r[0], r[1])), e[1] = Math.min(Math.max(Math.min(o[0], o[1]), s), Math.max(o[0], o[1])), e }, e.prototype.pointToData = function (t, e) { + const n = []; if (this._invTransform) + return Ft(n, t, this._invTransform); const i = this.getAxis('x'); const r = this.getAxis('y'); return n[0] = i.coordToData(i.toLocalCoord(t[0]), e), n[1] = r.coordToData(r.toLocalCoord(t[1]), e), n + }, e.prototype.getOtherAxis = function (t) { return this.getAxis(t.dim === 'x' ? 'y' : 'x') }, e.prototype.getArea = function () { const t = this.getAxis('x').getGlobalExtent(); const e = this.getAxis('y').getGlobalExtent(); const n = Math.min(t[0], t[1]); const i = Math.min(e[0], e[1]); const r = Math.max(t[0], t[1]) - n; const o = Math.max(e[0], e[1]) - i; return new sr(n, i, r, o) }, e + }(TM)); const kM = (function (t) { + function e(e, n, i, r, o) { const a = t.call(this, e, n, i) || this; return a.index = 0, a.type = r || 'value', a.position = o || 'bottom', a } return n(e, t), e.prototype.isHorizontal = function () { const t = this.position; return t === 'top' || t === 'bottom' }, e.prototype.getGlobalExtent = function (t) { const e = this.getExtent(); return e[0] = this.toGlobalCoord(e[0]), e[1] = this.toGlobalCoord(e[1]), t && e[0] > e[1] && e.reverse(), e }, e.prototype.pointToData = function (t, e) { return this.coordToData(this.toLocalCoord(t[this.dim === 'x' ? 0 : 1]), e) }, e.prototype.setCategorySortInfo = function (t) { + if (this.type !== 'category') + return !1; this.model.option.categorySortInfo = t, this.scale.setSortInfo(t) + }, e + }(H_)); function LM(t, e, n) { n = n || {}; const i = t.coordinateSystem; const r = e.axis; const o = {}; const a = r.getAxesOnZeroOf()[0]; const s = r.position; const l = a ? 'onZero' : s; const u = r.dim; const h = i.getRect(); const c = [h.x, h.x + h.width, h.y, h.y + h.height]; const p = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 }; const d = e.get('offset') || 0; const f = u === 'x' ? [c[2] - d, c[3] + d] : [c[0] - d, c[1] + d]; if (a) { const g = a.toGlobalCoord(a.dataToCoord(0)); f[p.onZero] = Math.max(Math.min(g, f[1]), f[0]) }o.position = [u === 'y' ? f[p[l]] : c[0], u === 'x' ? f[p[l]] : c[3]], o.rotation = Math.PI / 2 * (u === 'x' ? 0 : 1), o.labelDirection = o.tickDirection = o.nameDirection = { top: -1, bottom: 1, left: -1, right: 1 }[s], o.labelOffset = a ? f[p[s]] - f[p.onZero] : 0, e.get(['axisTick', 'inside']) && (o.tickDirection = -o.tickDirection), it(n.labelInside, e.get(['axisLabel', 'inside'])) && (o.labelDirection = -o.labelDirection); const y = e.get(['axisLabel', 'rotate']); return o.labelRotate = l === 'top' ? -y : y, o.z2 = 1, o } function PM(t) { return t.get('coordinateSystem') === 'cartesian2d' } function OM(t) { const e = { xAxisModel: null, yAxisModel: null }; return E(e, (n, i) => { const r = i.replace(/Model$/, ''); const o = t.getReferringComponents(r, Co).models[0]; e[i] = o }), e } const RM = Math.log; function NM(t, e, n) { + const i = xx.prototype; const r = i.getTicks.call(n); const o = i.getTicks.call(n, !0); const a = r.length - 1; const s = i.getInterval.call(n); const l = i_(t, e); let u = l.extent; const h = l.fixMin; const c = l.fixMax; if (t.type === 'log') { const p = RM(t.base); u = [RM(u[0]) / p, RM(u[1]) / p] }t.setExtent(u[0], u[1]), t.calcNiceExtent({ splitNumber: a, fixMin: h, fixMax: c }); const d = i.getExtent.call(t); h && (u[0] = d[0]), c && (u[1] = d[1]); let f = i.getInterval.call(t); let g = u[0]; let y = u[1]; if (h && c) { + f = (y - g) / a + } + else if (h) { + for (y = u[0] + f * a; y < u[1] && isFinite(y) && isFinite(u[1]);)f = cx(f), y = u[0] + f * a + } + else if (c) { + for (g = u[1] - f * a; g > u[0] && isFinite(g) && isFinite(u[0]);)f = cx(f), g = u[1] - f * a + } + else { t.getTicks().length - 1 > a && (f = cx(f)); const v = f * a; (g = zr((y = Math.ceil(u[1] / f) * f) - v)) < 0 && u[0] >= 0 ? (g = 0, y = zr(v)) : y > 0 && u[1] <= 0 && (y = 0, g = -zr(v)) } const m = (r[0].value - o[0].value) / s; const x = (r[a].value - o[a].value) / s; i.setExtent.call(t, g + f * m, y + f * x), i.setInterval.call(t, f), (m || x) && i.setNiceExtent.call(t, g + f, y - f) + } const EM = (function () { + function t(t, e, n) { this.type = 'grid', this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], this.axisPointerEnabled = !0, this.dimensions = CM, this._initCartesian(t, e, n), this.model = t } return t.prototype.getRect = function () { return this._rect }, t.prototype.update = function (t, e) { const n = this._axesMap; function i(t) { let e; const n = G(t); const i = n.length; if (i) { for (var r = [], o = i - 1; o >= 0; o--) { const a = t[+n[o]]; const s = a.model; const l = a.scale; ux(l) && s.get('alignTicks') && s.get('interval') == null ? r.push(a) : (r_(l, s), ux(l) && (e = a)) }r.length && (e || r_((e = r.pop()).scale, e.model), E(r, (t) => { NM(t.scale, t.model, e.scale) })) } } this._updateScale(t, this.model), i(n.x), i(n.y); const r = {}; E(n.x, (t) => { VM(n, 'y', t, r) }), E(n.y, (t) => { VM(n, 'x', t, r) }), this.resize(this.model, e) }, t.prototype.resize = function (t, e, n) { const i = t.getBoxLayoutParams(); const r = !n && t.get('containLabel'); const o = xp(i, { width: e.getWidth(), height: e.getHeight() }); this._rect = o; const a = this._axesList; function s() { E(a, (t) => { const e = t.isHorizontal(); const n = e ? [0, o.width] : [0, o.height]; const i = t.inverse ? 1 : 0; t.setExtent(n[i], n[1 - i]), (function (t, e) { const n = t.getExtent(); const i = n[0] + n[1]; t.toGlobalCoord = t.dim === 'x' ? function (t) { return t + e } : function (t) { return i - t + e }, t.toLocalCoord = t.dim === 'x' ? function (t) { return t - e } : function (t) { return i - t + e } }(t, e ? o.x : o.y)) }) }s(), r && (E(a, (t) => { if (!t.model.get(['axisLabel', 'inside'])) { const e = (function (t) { const e = t.model; const n = t.scale; if (e.get(['axisLabel', 'show']) && !n.isBlank()) { let i; let r; const o = n.getExtent(); r = n instanceof vx ? n.count() : (i = n.getTicks()).length; let a; const s = t.getLabelModel(); const l = a_(t); let u = 1; r > 40 && (u = Math.ceil(r / 40)); for (let h = 0; h < r; h += u) { const c = l(i ? i[h] : { value: o[0] + h }, h); const p = l_(s.getTextRect(c), s.get('rotate') || 0); a ? a.union(p) : a = p } return a } }(t)); if (e) { const n = t.isHorizontal() ? 'height' : 'width'; const i = t.model.get(['axisLabel', 'margin']); o[n] -= e[n] + i, t.position === 'top' ? o.y += e.height + i : t.position === 'left' && (o.x += e.width + i) } } }), s()), E(this._coordsList, (t) => { t.calcAffineTransform() }) }, t.prototype.getAxis = function (t, e) { + const n = this._axesMap[t]; if (n != null) + return n[e || 0] + }, t.prototype.getAxes = function () { return this._axesList.slice() }, t.prototype.getCartesian = function (t, e) { + if (t != null && e != null) { const n = `x${t}y${e}`; return this._coordsMap[n] }q(t) && (e = t.yAxisIndex, t = t.xAxisIndex); for (let i = 0, r = this._coordsList; i < r.length; i++) { + if (r[i].getAxis('x').index === t || r[i].getAxis('y').index === e) + return r[i] + } + }, t.prototype.getCartesians = function () { return this._coordsList.slice() }, t.prototype.convertToPixel = function (t, e, n) { const i = this._findConvertTarget(e); return i.cartesian ? i.cartesian.dataToPoint(n) : i.axis ? i.axis.toGlobalCoord(i.axis.dataToCoord(n)) : null }, t.prototype.convertFromPixel = function (t, e, n) { const i = this._findConvertTarget(e); return i.cartesian ? i.cartesian.pointToData(n) : i.axis ? i.axis.coordToData(i.axis.toLocalCoord(n)) : null }, t.prototype._findConvertTarget = function (t) { let e; let n; const i = t.seriesModel; const r = t.xAxisModel || i && i.getReferringComponents('xAxis', Co).models[0]; const o = t.yAxisModel || i && i.getReferringComponents('yAxis', Co).models[0]; const a = t.gridModel; const s = this._coordsList; return i ? P(s, e = i.coordinateSystem) < 0 && (e = null) : r && o ? e = this.getCartesian(r.componentIndex, o.componentIndex) : r ? n = this.getAxis('x', r.componentIndex) : o ? n = this.getAxis('y', o.componentIndex) : a && a.coordinateSystem === this && (e = this._coordsList[0]), { cartesian: e, axis: n } }, t.prototype.containPoint = function (t) { + const e = this._coordsList[0]; if (e) + return e.containPoint(t) + }, t.prototype._initCartesian = function (t, e, n) { + const i = this; const r = this; const o = { left: !1, right: !1, top: !1, bottom: !1 }; const a = { x: {}, y: {} }; const s = { x: 0, y: 0 }; if (e.eachComponent('xAxis', l('x'), this), e.eachComponent('yAxis', l('y'), this), !s.x || !s.y) + return this._axesMap = {}, void (this._axesList = []); function l(e) { return function (n, i) { if (zM(n, t)) { let l = n.get('position'); e === 'x' ? l !== 'top' && l !== 'bottom' && (l = o.bottom ? 'top' : 'bottom') : l !== 'left' && l !== 'right' && (l = o.left ? 'right' : 'left'), o[l] = !0; const u = new kM(e, o_(n), [0, 0], n.get('type'), l); const h = u.type === 'category'; u.onBand = h && n.get('boundaryGap'), u.inverse = n.get('inverse'), n.axis = u, u.model = n, u.grid = r, u.index = i, r._axesList.push(u), a[e][i] = u, s[e]++ } } } this._axesMap = a, E(a.x, (e, n) => { E(a.y, (r, o) => { const a = `x${ n }y${ o}`; const s = new AM(a); s.master = i, s.model = t, i._coordsMap[a] = s, i._coordsList.push(s), s.addAxis(e), s.addAxis(r) }) }) + }, t.prototype._updateScale = function (t, e) { + function n(t, e) { E(c_(t, e.dim), (n) => { e.scale.unionExtentFromData(t, n) }) }E(this._axesList, (t) => { if (t.scale.setExtent(1 / 0, -1 / 0), t.type === 'category') { const e = t.model.get('categorySortInfo'); t.scale.setSortInfo(e) } }), t.eachSeries(function (t) { + if (PM(t)) { + const i = OM(t); const r = i.xAxisModel; const o = i.yAxisModel; if (!zM(r, e) || !zM(o, e)) + return; const a = this.getCartesian(r.componentIndex, o.componentIndex); const s = t.getData(); const l = a.getAxis('x'); const u = a.getAxis('y'); n(s, l), n(s, u) + } + }, this) + }, t.prototype.getTooltipAxes = function (t) { const e = []; const n = []; return E(this.getCartesians(), (i) => { const r = t != null && t !== 'auto' ? i.getAxis(t) : i.getBaseAxis(); const o = i.getOtherAxis(r); P(e, r) < 0 && e.push(r), P(n, o) < 0 && n.push(o) }), { baseAxes: e, otherAxes: n } }, t.create = function (e, n) { const i = []; return e.eachComponent('grid', (r, o) => { const a = new t(r, e, n); a.name = `grid_${o}`, a.resize(r, n, !0), r.coordinateSystem = a, i.push(a) }), e.eachSeries((t) => { if (PM(t)) { const e = OM(t); const n = e.xAxisModel; const i = e.yAxisModel; const o = n.getCoordSysModel().coordinateSystem; t.coordinateSystem = o.getCartesian(n.componentIndex, i.componentIndex) } }), i }, t.dimensions = CM, t + }()); function zM(t, e) { return t.getCoordSysModel() === e } function VM(t, e, n, i) { + n.getAxesOnZeroOf = function () { return r ? [r] : [] }; let r; const o = t[e]; const a = n.model; const s = a.get(['axisLine', 'onZero']); const l = a.get(['axisLine', 'onZeroAxisIndex']); if (s) { + if (l != null) { + BM(o[l]) && (r = o[l]) + } + else { + for (const u in o) { + if (o.hasOwnProperty(u) && BM(o[u]) && !i[h(o[u])]) { r = o[u]; break } + } + }r && (i[h(r)] = !0) + } function h(t) { return `${t.dim}_${t.index}` } + } function BM(t) { return t && t.type !== 'category' && t.type !== 'time' && (function (t) { const e = t.scale.getExtent(); const n = e[0]; const i = e[1]; return !(n > 0 && i > 0 || n < 0 && i < 0) }(t)) } const FM = Math.PI; const GM = (function () { function t(t, e) { this.group = new Cr(), this.opt = e, this.axisModel = t, k(e, { labelOffset: 0, nameDirection: 1, tickDirection: 1, labelDirection: 1, silent: !0, handleAutoShown() { return !0 } }); const n = new Cr({ x: e.position[0], y: e.position[1], rotation: e.rotation }); n.updateTransform(), this._transformGroup = n } return t.prototype.hasBuilder = function (t) { return !!WM[t] }, t.prototype.add = function (t) { WM[t](this.opt, this.axisModel, this.group, this._transformGroup) }, t.prototype.getGroup = function () { return this.group }, t.innerTextLayout = function (t, e, n) { let i; let r; const o = Ur(e - t); return Xr(o) ? (r = n > 0 ? 'top' : 'bottom', i = 'center') : Xr(o - FM) ? (r = n > 0 ? 'bottom' : 'top', i = 'center') : (r = 'middle', i = o > 0 && o < FM ? n > 0 ? 'right' : 'left' : n > 0 ? 'left' : 'right'), { rotation: o, textAlign: i, textVerticalAlign: r } }, t.makeAxisEventDataBase = function (t) { const e = { componentType: t.mainType, componentIndex: t.componentIndex }; return e[`${t.mainType}Index`] = t.componentIndex, e }, t.isLabelSilent = function (t) { const e = t.get('tooltip'); return t.get('silent') || !(t.get('triggerEvent') || e && e.show) }, t }()); var WM = { axisLine(t, e, n, i) { let r = e.get(['axisLine', 'show']); if (r === 'auto' && t.handleAutoShown && (r = t.handleAutoShown('axisLine')), r) { const o = e.axis.getExtent(); const a = i.transform; const s = [o[0], 0]; const l = [o[1], 0]; a && (Ft(s, s, a), Ft(l, l, a)); const u = A({ lineCap: 'round' }, e.getModel(['axisLine', 'lineStyle']).getLineStyle()); const h = new zu({ subPixelOptimize: !0, shape: { x1: s[0], y1: s[1], x2: l[0], y2: l[1] }, style: u, strokeContainThreshold: t.strokeContainThreshold || 5, silent: !0, z2: 1 }); h.anid = 'line', n.add(h); let c = e.get(['axisLine', 'symbol']); if (c != null) { let p = e.get(['axisLine', 'symbolSize']); X(c) && (c = [c, c]), (X(p) || j(p)) && (p = [p, p]); const d = Oy(e.get(['axisLine', 'symbolOffset']) || 0, p); const f = p[0]; const g = p[1]; E([{ rotate: t.rotation + Math.PI / 2, offset: d[0], r: 0 }, { rotate: t.rotation - Math.PI / 2, offset: d[1], r: Math.sqrt((s[0] - l[0]) * (s[0] - l[0]) + (s[1] - l[1]) * (s[1] - l[1])) }], (e, i) => { if (c[i] !== 'none' && c[i] != null) { const r = Ly(c[i], -f / 2, -g / 2, f, g, u.stroke, !0); const o = e.r + e.offset; r.attr({ rotation: e.rotate, x: s[0] + o * Math.cos(t.rotation), y: s[1] - o * Math.sin(t.rotation), silent: !0, z2: 11 }), n.add(r) } }) } } }, axisTickLabel(t, e, n, i) { + const r = (function (t, e, n, i) { const r = n.axis; const o = n.getModel('axisTick'); let a = o.get('show'); if (a === 'auto' && i.handleAutoShown && (a = i.handleAutoShown('axisTick')), a && !r.scale.isBlank()) { for (var s = o.getModel('lineStyle'), l = i.tickDirection * o.get('length'), u = XM(r.getTicksCoords(), e.transform, l, k(s.getLineStyle(), { stroke: n.get(['axisLine', 'lineStyle', 'color']) }), 'ticks'), h = 0; h < u.length; h++)t.add(u[h]); return u } }(n, i, e, t)); const o = (function (t, e, n, i) { const r = n.axis; if (it(i.axisLabelShow, n.get(['axisLabel', 'show'])) && !r.scale.isBlank()) { const o = n.getModel('axisLabel'); const a = o.get('margin'); const s = r.getViewLabels(); const l = (it(i.labelRotate, o.get('rotate')) || 0) * FM / 180; const u = GM.innerTextLayout(i.rotation, l, i.labelDirection); const h = n.getCategories && n.getCategories(!0); const c = []; const p = GM.isLabelSilent(n); const d = n.get('triggerEvent'); return E(s, (s, l) => { const f = r.scale.type === 'ordinal' ? r.scale.getRawOrdinalNumber(s.tickValue) : s.tickValue; const g = s.formattedLabel; const y = s.rawLabel; let v = o; if (h && h[f]) { const m = h[f]; q(m) && m.textStyle && (v = new dc(m.textStyle, o, n.ecModel)) } const x = v.getTextColor() || n.get(['axisLine', 'lineStyle', 'color']); const _ = r.dataToCoord(f); const b = new ks({ x: _, y: i.labelOffset + i.labelDirection * a, rotation: u.rotation, silent: p, z2: 10 + (s.level || 0), style: Uh(v, { text: g, align: v.getShallow('align', !0) || u.textAlign, verticalAlign: v.getShallow('verticalAlign', !0) || v.getShallow('baseline', !0) || u.textVerticalAlign, fill: U(x) ? x(r.type === 'category' ? y : r.type === 'value' ? `${f }` : f, l) : x }) }); if (b.anid = `label_${ f}`, d) { const w = GM.makeAxisEventDataBase(n); w.targetType = 'axisLabel', w.value = y, w.tickIndex = l, r.type === 'category' && (w.dataIndex = f), Hs(b).eventData = w }e.add(b), b.updateTransform(), c.push(b), t.add(b), b.decomposeTransform() }), c } }(n, i, e, t)); (function (t, e, n) { if (!h_(t.axis)) { const i = t.get(['axisLabel', 'showMinLabel']); const r = t.get(['axisLabel', 'showMaxLabel']); n = n || []; const o = (e = e || [])[0]; const a = e[1]; const s = e[e.length - 1]; const l = e[e.length - 2]; const u = n[0]; const h = n[1]; const c = n[n.length - 1]; const p = n[n.length - 2]; !1 === i ? (HM(o), HM(u)) : YM(o, a) && (i ? (HM(a), HM(h)) : (HM(o), HM(u))), !1 === r ? (HM(s), HM(c)) : YM(l, s) && (r ? (HM(l), HM(p)) : (HM(s), HM(c))) } })(e, o, r), (function (t, e, n, i) { + const r = n.axis; const o = n.getModel('minorTick'); if (o.get('show') && !r.scale.isBlank()) { + const a = r.getMinorTicksCoords(); if (a.length) { + for (let s = o.getModel('lineStyle'), l = i * o.get('length'), u = k(s.getLineStyle(), k(n.getModel('axisTick').getLineStyle(), { stroke: n.get(['axisLine', 'lineStyle', 'color']) })), h = 0; h < a.length; h++) { + for (let c = XM(a[h], e.transform, l, u, `minorticks_${ h}`), p = 0; p < c.length; p++)t.add(c[p]) + } + } + } + }(n, i, e, t.tickDirection)), e.get(['axisLabel', 'hideOverlap']) && mb(gb(z(o, (t) => { return { label: t, priority: t.z2, defaultAttr: { ignore: t.ignore } } }))) + }, axisName(t, e, n, i) { const r = it(t.axisName, e.get('name')); if (r) { let o; let a; const s = e.get('nameLocation'); const l = t.nameDirection; const u = e.getModel('nameTextStyle'); const h = e.get('nameGap') || 0; const c = e.axis.getExtent(); const p = c[0] > c[1] ? -1 : 1; const d = [s === 'start' ? c[0] - p * h : s === 'end' ? c[1] + p * h : (c[0] + c[1]) / 2, UM(s) ? t.labelOffset + l * h : 0]; let f = e.get('nameRotate'); f != null && (f = f * FM / 180), UM(s) ? o = GM.innerTextLayout(t.rotation, f != null ? f : t.rotation, l) : (o = (function (t, e, n, i) { let r; let o; const a = Ur(n - t); const s = i[0] > i[1]; const l = e === 'start' && !s || e !== 'start' && s; return Xr(a - FM / 2) ? (o = l ? 'bottom' : 'top', r = 'center') : Xr(a - 1.5 * FM) ? (o = l ? 'top' : 'bottom', r = 'center') : (o = 'middle', r = a < 1.5 * FM && a > FM / 2 ? l ? 'left' : 'right' : l ? 'right' : 'left'), { rotation: a, textAlign: r, textVerticalAlign: o } }(t.rotation, s, f || 0, c)), (a = t.axisNameAvailableWidth) != null && (a = Math.abs(a / Math.sin(o.rotation)), !isFinite(a) && (a = null))); const g = u.getFont(); const y = e.get('nameTruncate', !0) || {}; const v = y.ellipsis; const m = it(t.nameTruncateMaxWidth, y.maxWidth, a); const x = new ks({ x: d[0], y: d[1], rotation: o.rotation, silent: GM.isLabelSilent(e), style: Uh(u, { text: r, font: g, overflow: 'truncate', width: m, ellipsis: v, fill: u.getTextColor() || e.get(['axisLine', 'lineStyle', 'color']), align: u.get('align') || o.textAlign, verticalAlign: u.get('verticalAlign') || o.textVerticalAlign }), z2: 1 }); if (Eh({ el: x, componentModel: e, itemName: r }), x.__fullText = r, x.anid = 'name', e.get('triggerEvent')) { const _ = GM.makeAxisEventDataBase(e); _.targetType = 'axisName', _.name = r, Hs(x).eventData = _ }i.add(x), x.updateTransform(), n.add(x), x.decomposeTransform() } } }; function HM(t) { t && (t.ignore = !0) } function YM(t, e) { const n = t && t.getBoundingRect().clone(); const i = e && e.getBoundingRect().clone(); if (n && i) { const r = Oi([]); return zi(r, r, -t.rotation), n.applyTransform(Ni([], r, t.getLocalTransform())), i.applyTransform(Ni([], r, e.getLocalTransform())), n.intersect(i) } } function UM(t) { return t === 'middle' || t === 'center' } function XM(t, e, n, i, r) { for (var o = [], a = [], s = [], l = 0; l < t.length; l++) { const u = t[l].coord; a[0] = u, a[1] = 0, s[0] = u, s[1] = n, e && (Ft(a, a, e), Ft(s, s, e)); const h = new zu({ subPixelOptimize: !0, shape: { x1: a[0], y1: a[1], x2: s[0], y2: s[1] }, style: i, z2: 2, autoBatch: !0, silent: !0 }); h.anid = `${r}_${t[l].tickValue}`, o.push(h) } return o } function jM(t, e) { return t === 'all' || Y(t) && P(t, e) >= 0 || t === e } function KM(t) { const e = (t.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo; return e && e.axesInfo[JM(t)] } function $M(t) { return !!t.get(['handle', 'show']) } function JM(t) { return `${t.type}||${t.id}` } const QM = {}; const tI = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (e, n, i, r) { this.axisPointerClass && (function (t) { const e = KM(t); if (e) { const n = e.axisPointerModel; const i = e.axis.scale; const r = n.option; const o = n.get('status'); let a = n.get('value'); a != null && (a = i.parse(a)); const s = $M(n); o == null && (r.status = s ? 'show' : 'hide'); const l = i.getExtent().slice(); l[0] > l[1] && l.reverse(), (a == null || a > l[1]) && (a = l[1]), a < l[0] && (a = l[0]), r.value = a, s && (r.status = e.axis.scale.isBlank() ? 'hide' : 'show') } }(e)), t.prototype.render.apply(this, arguments), this._doUpdateAxisPointerClass(e, i, !0) }, e.prototype.updateAxisPointer = function (t, e, n, i) { this._doUpdateAxisPointerClass(t, n, !1) }, e.prototype.remove = function (t, e) { const n = this._axisPointer; n && n.remove(e) }, e.prototype.dispose = function (e, n) { this._disposeAxisPointer(n), t.prototype.dispose.apply(this, arguments) }, e.prototype._doUpdateAxisPointerClass = function (t, n, i) { const r = e.getAxisPointerClass(this.axisPointerClass); if (r) { const o = (function (t) { const e = KM(t); return e && e.axisPointerModel }(t)); o ? (this._axisPointer || (this._axisPointer = new r())).render(t, o, n, i) : this._disposeAxisPointer(n) } }, e.prototype._disposeAxisPointer = function (t) { this._axisPointer && this._axisPointer.dispose(t), this._axisPointer = null }, e.registerAxisPointerClass = function (t, e) { QM[t] = e }, e.getAxisPointerClass = function (t) { return t && QM[t] }, e.type = 'axis', e }(gg)); const eI = So(); function nI(t, e, n, i) { + const r = n.axis; if (!r.scale.isBlank()) { + const o = n.getModel('splitArea'); const a = o.getModel('areaStyle'); let s = a.get('color'); const l = i.coordinateSystem.getRect(); const u = r.getTicksCoords({ tickModel: o, clamp: !0 }); if (u.length) { + const h = s.length; const c = eI(t).splitAreaColors; const p = ft(); let d = 0; if (c) { + for (var f = 0; f < u.length; f++) { const g = c.get(u[f].tickValue); if (g != null) { d = (g + (h - 1) * f) % h; break } } + } let y = r.toGlobalCoord(u[0].coord); const v = a.getAreaStyle(); for (s = Y(s) ? s : [s], f = 1; f < u.length; f++) { const m = r.toGlobalCoord(u[f].coord); let x = void 0; let _ = void 0; let b = void 0; let w = void 0; r.isHorizontal() ? (x = y, _ = l.y, b = m - x, w = l.height, y = x + b) : (x = l.x, _ = y, b = l.width, y = _ + (w = m - _)); const S = u[f - 1].tickValue; S != null && p.set(S, d), e.add(new Cs({ anid: S != null ? `area_${S}` : null, shape: { x, y: _, width: b, height: w }, style: k({ fill: s[d] }, v), autoBatch: !0, silent: !0 })), d = (d + 1) % h }eI(t).splitAreaColors = p + } + } + } function iI(t) { eI(t).splitAreaColors = null } const rI = ['axisLine', 'axisTickLabel', 'axisName']; const oI = ['splitArea', 'splitLine', 'minorSplitLine']; const aI = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.axisPointerClass = 'CartesianAxisPointer', n } return n(e, t), e.prototype.render = function (e, n, i, r) { + this.group.removeAll(); const o = this._axisGroup; if (this._axisGroup = new Cr(), this.group.add(this._axisGroup), e.get('show')) { + const a = e.getCoordSysModel(); const s = LM(a, e); const l = new GM(e, A({ handleAutoShown(t) { + for (let n = a.coordinateSystem.getCartesians(), i = 0; i < n.length; i++) { + if (ux(n[i].getOtherAxis(e.axis).scale)) + return !0 +} return !1 + } }, s)); E(rI, l.add, l), this._axisGroup.add(l.getGroup()), E(oI, function (t) { e.get([t, 'show']) && sI[t](this, this._axisGroup, e, a) }, this), r && r.type === 'changeAxisOrder' && r.isInitSort || Ah(o, this._axisGroup, e), t.prototype.render.call(this, e, n, i, r) + } + }, e.prototype.remove = function () { iI(this) }, e.type = 'cartesianAxis', e + }(tI)); var sI = { splitLine(t, e, n, i) { const r = n.axis; if (!r.scale.isBlank()) { const o = n.getModel('splitLine'); const a = o.getModel('lineStyle'); let s = a.get('color'); s = Y(s) ? s : [s]; for (let l = i.coordinateSystem.getRect(), u = r.isHorizontal(), h = 0, c = r.getTicksCoords({ tickModel: o }), p = [], d = [], f = a.getLineStyle(), g = 0; g < c.length; g++) { const y = r.toGlobalCoord(c[g].coord); u ? (p[0] = y, p[1] = l.y, d[0] = y, d[1] = l.y + l.height) : (p[0] = l.x, p[1] = y, d[0] = l.x + l.width, d[1] = y); const v = h++ % s.length; const m = c[g].tickValue; e.add(new zu({ anid: m != null ? `line_${c[g].tickValue}` : null, subPixelOptimize: !0, autoBatch: !0, shape: { x1: p[0], y1: p[1], x2: d[0], y2: d[1] }, style: k({ stroke: s[v] }, f), silent: !0 })) } } }, minorSplitLine(t, e, n, i) { + const r = n.axis; const o = n.getModel('minorSplitLine').getModel('lineStyle'); const a = i.coordinateSystem.getRect(); const s = r.isHorizontal(); const l = r.getMinorTicksCoords(); if (l.length) { + for (let u = [], h = [], c = o.getLineStyle(), p = 0; p < l.length; p++) { + for (let d = 0; d < l[p].length; d++) { const f = r.toGlobalCoord(l[p][d].coord); s ? (u[0] = f, u[1] = a.y, h[0] = f, h[1] = a.y + a.height) : (u[0] = a.x, u[1] = f, h[0] = a.x + a.width, h[1] = f), e.add(new zu({ anid: `minor_line_${ l[p][d].tickValue}`, subPixelOptimize: !0, autoBatch: !0, shape: { x1: u[0], y1: u[1], x2: h[0], y2: h[1] }, style: c, silent: !0 })) } + } + } + }, splitArea(t, e, n, i) { nI(t, e, n, i) } }; const lI = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'xAxis', e }(aI)); const uI = (function (t) { function e() { const e = t !== null && t.apply(this, arguments) || this; return e.type = lI.type, e } return n(e, t), e.type = 'yAxis', e }(aI)); const hI = (function (t) { function e() { const e = t !== null && t.apply(this, arguments) || this; return e.type = 'grid', e } return n(e, t), e.prototype.render = function (t, e) { this.group.removeAll(), t.get('show') && this.group.add(new Cs({ shape: t.coordinateSystem.getRect(), style: k({ fill: t.get('backgroundColor') }, t.getItemStyle()), silent: !0, z2: -1 })) }, e.type = 'grid', e }(gg)); const cI = { offset: 0 }; function pI(t) { t.registerComponentView(hI), t.registerComponentModel(vM), t.registerCoordinateSystem('cartesian2d', EM), MM(t, 'x', mM, cI), MM(t, 'y', mM, cI), t.registerComponentView(lI), t.registerComponentView(uI), t.registerPreprocessor((t) => { t.xAxis && t.yAxis && !t.grid && (t.grid = {}) }) } function dI(t) { t.eachSeriesByType('radar', (t) => { const e = t.getData(); const n = []; const i = t.coordinateSystem; if (i) { const r = i.getIndicatorAxes(); E(r, (t, o) => { e.each(e.mapDimension(r[o].dim), (t, e) => { n[e] = n[e] || []; const r = i.dataToPoint(t, o); n[e][o] = fI(r) ? r : gI(i) }) }), e.each((t) => { const r = F(n[t], (t) => { return fI(t) }) || gI(i); n[t].push(r.slice()), e.setItemLayout(t, n[t]) }) } }) } function fI(t) { return !isNaN(t[0]) && !isNaN(t[1]) } function gI(t) { return [t.cx, t.cy] } function yI(t) { let e = t.polar; if (e) { Y(e) || (e = [e]); const n = []; E(e, (e, i) => { e.indicator ? (e.type && !e.shape && (e.shape = e.type), t.radar = t.radar || [], Y(t.radar) || (t.radar = [t.radar]), t.radar.push(e)) : n.push(e) }), t.polar = n }E(t.series, (t) => { t && t.type === 'radar' && t.polarIndex && (t.radarIndex = t.polarIndex) }) } const vI = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { + const i = t.coordinateSystem; const r = this.group; const o = t.getData(); const a = this._data; function s(t, e) { const n = t.getItemVisual(e, 'symbol') || 'circle'; if (n !== 'none') { const i = Py(t.getItemVisual(e, 'symbolSize')); const r = Ly(n, -1, -1, 2, 2); const o = t.getItemVisual(e, 'symbolRotate') || 0; return r.attr({ style: { strokeNoScale: !0 }, z2: 100, scaleX: i[0] / 2, scaleY: i[1] / 2, rotation: o * Math.PI / 180 || 0 }), r } } function l(e, n, i, r, o, a) { i.removeAll(); for (let l = 0; l < n.length - 1; l++) { const u = s(r, o); u && (u.__dimIdx = l, e[l] ? (u.setPosition(e[l]), Bh[a ? 'initProps' : 'updateProps'](u, { x: n[l][0], y: n[l][1] }, t, o)) : u.setPosition(n[l]), i.add(u)) } } function u(t) { return z(t, (t) => { return [i.cx, i.cy] }) }o.diff(a).add((e) => { const n = o.getItemLayout(e); if (n) { const i = new Pu(); const r = new Ru(); const a = { shape: { points: n } }; i.shape.points = u(n), r.shape.points = u(n), oh(i, a, t, e), oh(r, a, t, e); const s = new Cr(); const h = new Cr(); s.add(r), s.add(i), s.add(h), l(r.shape.points, n, h, o, e, !0), o.setItemGraphicEl(e, s) } }).update((e, n) => { const i = a.getItemGraphicEl(n); const r = i.childAt(0); const s = i.childAt(1); const u = i.childAt(2); const h = { shape: { points: o.getItemLayout(e) } }; h.shape.points && (l(r.shape.points, h.shape.points, u, o, e, !1), hh(s), hh(r), rh(r, h, t), rh(s, h, t), o.setItemGraphicEl(e, i)) }).remove((t) => { r.remove(a.getItemGraphicEl(t)) }).execute(), o.eachItemGraphicEl((t, e) => { + const n = o.getItemModel(e); const i = t.childAt(0); const a = t.childAt(1); const s = t.childAt(2); const l = o.getItemVisual(e, 'style'); const u = l.fill; r.add(t), i.useStyle(k(n.getModel('lineStyle').getLineStyle(), { fill: 'none', stroke: u })), Vl(i, n, 'lineStyle'), Vl(a, n, 'areaStyle'); const h = n.getModel('areaStyle'); const c = h.isEmpty() && h.parentModel.isEmpty(); a.ignore = c, E(['emphasis', 'select', 'blur'], (t) => { const e = n.getModel([t, 'areaStyle']); const i = e.isEmpty() && e.parentModel.isEmpty(); a.ensureState(t).ignore = i && c }), a.useStyle(k(h.getAreaStyle(), { fill: u, opacity: 0.7, decal: l.decal })); const p = n.getModel('emphasis'); const d = p.getModel('itemStyle').getItemStyle(); s.eachChild((t) => { + if (t instanceof _s) { const i = t.style; t.useStyle(A({ image: i.image, x: i.x, y: i.y, width: i.width, height: i.height }, l)) } + else { + t.useStyle(l), t.setColor(u), t.style.strokeNoScale = !0 + }t.ensureState('emphasis').style = T(d); let r = o.getStore().get(o.getDimensionIndex(t.__dimIdx), e); (r == null || isNaN(r)) && (r = ''), Hh(t, Yh(n), { labelFetcher: o.hostModel, labelDataIndex: e, labelDimIndex: t.__dimIdx, defaultText: r, inheritColor: u, defaultOpacity: l.opacity }) + }), Rl(t, p.get('focus'), p.get('blurScope'), p.get('disabled')) + }), this._data = o + }, e.prototype.remove = function () { this.group.removeAll(), this._data = null }, e.type = 'radar', e + }(xg)); const mI = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.hasSymbolVisual = !0, n } return n(e, t), e.prototype.init = function (e) { t.prototype.init.apply(this, arguments), this.legendVisualProvider = new hM(W(this.getData, this), W(this.getRawData, this)) }, e.prototype.getInitialData = function (t, e) { return uM(this, { generateCoord: 'indicator_', generateCoordCount: 1 / 0 }) }, e.prototype.formatTooltip = function (t, e, n) { const i = this.getData(); const r = this.coordinateSystem.getIndicatorAxes(); const o = this.getData().getName(t); const a = o === '' ? this.name : o; const s = eg(this, t); return Xf('section', { header: a, sortBlocks: !0, blocks: z(r, (e) => { const n = i.get(i.mapDimension(e.dim), t); return Xf('nameValue', { markerType: 'subItem', markerColor: s, name: e.name, value: n, sortParam: n }) }) }) }, e.prototype.getTooltipPosition = function (t) { + if (t != null) { + for (var e = this.getData(), n = this.coordinateSystem, i = e.getValues(z(n.dimensions, (t) => { return e.mapDimension(t) }), t), r = 0, o = i.length; r < o; r++) { + if (!isNaN(i[r])) { const a = n.getIndicatorAxes(); return n.coordToPoint(a[r].dataToCoord(i[r]), r) } + } + } + }, e.type = 'series.radar', e.dependencies = ['radar'], e.defaultOption = { z: 2, colorBy: 'data', coordinateSystem: 'radar', legendHoverLink: !0, radarIndex: 0, lineStyle: { width: 2, type: 'solid', join: 'round' }, label: { position: 'top' }, symbolSize: 8 }, e + }(sg)); const xI = wM.value; function _I(t, e) { return k({ show: e }, t) } const bI = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.optionUpdated = function () { + const t = this.get('boundaryGap'); const e = this.get('splitNumber'); const n = this.get('scale'); const i = this.get('axisLine'); const r = this.get('axisTick'); const o = this.get('axisLabel'); const a = this.get('axisName'); const s = this.get(['axisName', 'show']); const l = this.get(['axisName', 'formatter']); const u = this.get('axisNameGap'); const h = this.get('triggerEvent'); const c = z(this.get('indicator') || [], function (c) { + c.max != null && c.max > 0 && !c.min ? c.min = 0 : c.min != null && c.min < 0 && !c.max && (c.max = 0); let p = a; c.color != null && (p = k({ color: c.color }, a)); const d = C(T(c), { boundaryGap: t, splitNumber: e, scale: n, axisLine: i, axisTick: r, axisLabel: o, name: c.text, showName: s, nameLocation: 'end', nameGap: u, nameTextStyle: p, triggerEvent: h }, !1); if (X(l)) { const f = d.name; d.name = l.replace('{value}', f != null ? f : '') } + else { + U(l) && (d.name = l(d.name, d)) + } let g = new dc(d, null, this.ecModel); return R(g, p_.prototype), g.mainType = 'radar', g.componentIndex = this.componentIndex, g + }, this); this._indicatorModels = c + }, e.prototype.getIndicatorModels = function () { return this._indicatorModels }, e.type = 'radar', e.defaultOption = { z: 0, center: ['50%', '50%'], radius: '75%', startAngle: 90, axisName: { show: !0 }, boundaryGap: [0, 0], splitNumber: 5, axisNameGap: 15, scale: !1, shape: 'polygon', axisLine: C({ lineStyle: { color: '#bbb' } }, xI.axisLine), axisLabel: _I(xI.axisLabel, !1), axisTick: _I(xI.axisTick, !1), splitLine: _I(xI.splitLine, !0), splitArea: _I(xI.splitArea, !0), indicator: [] }, e + }(Tp)); const wI = ['axisLine', 'axisTickLabel', 'axisName']; const SI = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { this.group.removeAll(), this._buildAxes(t), this._buildSplitLineAndArea(t) }, e.prototype._buildAxes = function (t) { const e = t.coordinateSystem; E(z(e.getIndicatorAxes(), (t) => { const n = t.model.get('showName') ? t.name : ''; return new GM(t.model, { axisName: n, position: [e.cx, e.cy], rotation: t.angle, labelDirection: -1, tickDirection: -1, nameDirection: 1 }) }), function (t) { E(wI, t.add, t), this.group.add(t.getGroup()) }, this) }, e.prototype._buildSplitLineAndArea = function (t) { + const e = t.coordinateSystem; const n = e.getIndicatorAxes(); if (n.length) { + const i = t.get('shape'); const r = t.getModel('splitLine'); const o = t.getModel('splitArea'); const a = r.getModel('lineStyle'); const s = o.getModel('areaStyle'); const l = r.get('show'); const u = o.get('show'); const h = a.get('color'); const c = s.get('color'); const p = Y(h) ? h : [h]; const d = Y(c) ? c : [c]; const f = []; const g = []; if (i === 'circle') { + for (var y = n[0].getTicksCoords(), v = e.cx, m = e.cy, x = 0; x < y.length; x++)l && f[C(f, p, x)].push(new hu({ shape: { cx: v, cy: m, r: y[x].coord } })), u && x < y.length - 1 && g[C(g, d, x)].push(new Au({ shape: { cx: v, cy: m, r0: y[x].coord, r: y[x + 1].coord } })) + } + else { let _; const b = z(n, (t, n) => { let i = t.getTicksCoords(); return _ = _ == null ? i.length - 1 : Math.min(i.length - 1, _), z(i, (t) =>{ return e.coordToPoint(t.coord, n) }) }); let w = []; for (x = 0; x <= _; x++) { for (var S = [], M = 0; M < n.length; M++)S.push(b[M][x]); S[0] && S.push(S[0].slice()), l && f[C(f, p, x)].push(new Ru({ shape: { points: S } })), u && w && g[C(g, d, x - 1)].push(new Pu({ shape: { points: S.concat(w) } })), w = S.slice().reverse() } } const I = a.getLineStyle(); const T = s.getAreaStyle(); E(g, function (t, e) { this.group.add(wh(t, { style: k({ stroke: 'none', fill: d[e % d.length] }, T), silent: !0 })) }, this), E(f, function (t, e) { this.group.add(wh(t, { style: k({ fill: 'none', stroke: p[e % p.length] }, I), silent: !0 })) }, this) + } function C(t, e, n) { const i = n % e.length; return t[i] = t[i] || [], i } + }, e.type = 'radar', e + }(gg)); const MI = (function (t) { function e(e, n, i) { const r = t.call(this, e, n, i) || this; return r.type = 'value', r.angle = 0, r.name = '', r } return n(e, t), e }(H_)); const II = (function () { function t(t, e, n) { this.dimensions = [], this._model = t, this._indicatorAxes = z(t.getIndicatorModels(), function (t, e) { const n = `indicator_${ e}`; const i = new MI(n, new xx()); return i.name = t.get('name'), i.model = t, t.axis = i, this.dimensions.push(n), i }, this), this.resize(t, n) } return t.prototype.getIndicatorAxes = function () { return this._indicatorAxes }, t.prototype.dataToPoint = function (t, e) { const n = this._indicatorAxes[e]; return this.coordToPoint(n.dataToCoord(t), e) }, t.prototype.coordToPoint = function (t, e) { const n = this._indicatorAxes[e].angle; return [this.cx + t * Math.cos(n), this.cy - t * Math.sin(n)] }, t.prototype.pointToData = function (t) { let e = t[0] - this.cx; let n = t[1] - this.cy; const i = Math.sqrt(e * e + n * n); e /= i, n /= i; for (var r, o = Math.atan2(-n, e), a = 1 / 0, s = -1, l = 0; l < this._indicatorAxes.length; l++) { const u = this._indicatorAxes[l]; const h = Math.abs(o - u.angle); h < a && (r = u, s = l, a = h) } return [s, +(r && r.coordToData(i))] }, t.prototype.resize = function (t, e) { const n = t.get('center'); const i = e.getWidth(); const r = e.getHeight(); const o = Math.min(i, r) / 2; this.cx = Er(n[0], i), this.cy = Er(n[1], r), this.startAngle = t.get('startAngle') * Math.PI / 180; let a = t.get('radius'); (X(a) || j(a)) && (a = [0, a]), this.r0 = Er(a[0], o), this.r = Er(a[1], o), E(this._indicatorAxes, function (t, e) { t.setExtent(this.r0, this.r); let n = this.startAngle + e * Math.PI * 2 / this._indicatorAxes.length; n = Math.atan2(Math.sin(n), Math.cos(n)), t.angle = n }, this) }, t.prototype.update = function (t, e) { const n = this._indicatorAxes; const i = this._model; E(n, (t) => { t.scale.setExtent(1 / 0, -1 / 0) }), t.eachSeriesByType('radar', (e, r) => { if (e.get('coordinateSystem') === 'radar' && t.getComponent('radar', e.get('radarIndex')) === i) { const o = e.getData(); E(n, (t) => { t.scale.unionExtentFromData(o, o.mapDimension(t.dim)) }) } }, this); const r = i.get('splitNumber'); const o = new xx(); o.setExtent(0, r), o.setInterval(1), E(n, (t, e) => { NM(t.scale, t.model, o) }) }, t.prototype.convertToPixel = function (t, e, n) { return console.warn('Not implemented.'), null }, t.prototype.convertFromPixel = function (t, e, n) { return console.warn('Not implemented.'), null }, t.prototype.containPoint = function (t) { return console.warn('Not implemented.'), !1 }, t.create = function (e, n) { const i = []; return e.eachComponent('radar', (r) => { const o = new t(r, e, n); i.push(o), r.coordinateSystem = o }), e.eachSeriesByType('radar', (t) => { t.get('coordinateSystem') === 'radar' && (t.coordinateSystem = i[t.get('radarIndex') || 0]) }), i }, t.dimensions = [], t }()); function TI(t) { t.registerCoordinateSystem('radar', II), t.registerComponentModel(bI), t.registerComponentView(SI), t.registerVisual({ seriesType: 'radar', reset(t) { const e = t.getData(); e.each((t) => { e.setItemVisual(t, 'legendIcon', 'roundRect') }), e.setVisual('legendIcon', 'roundRect') } }) } const CI = '\0_ec_interaction_mutex'; function DI(t, e) { return !!AI(t)[e] } function AI(t) { return t[CI] || (t[CI] = {}) }cm({ type: 'takeGlobalCursor', event: 'globalCursorTaken', update: 'update' }, xt); const kI = (function (t) { function e(e) { const n = t.call(this) || this; n._zr = e; const i = W(n._mousedownHandler, n); const r = W(n._mousemoveHandler, n); const o = W(n._mouseupHandler, n); const a = W(n._mousewheelHandler, n); const s = W(n._pinchHandler, n); return n.enable = function (t, n) { this.disable(), this._opt = k(T(n) || {}, { zoomOnMouseWheel: !0, moveOnMouseMove: !0, moveOnMouseWheel: !1, preventDefaultMouseMove: !0 }), t == null && (t = !0), !0 !== t && t !== 'move' && t !== 'pan' || (e.on('mousedown', i), e.on('mousemove', r), e.on('mouseup', o)), !0 !== t && t !== 'scale' && t !== 'zoom' || (e.on('mousewheel', a), e.on('pinch', s)) }, n.disable = function () { e.off('mousedown', i), e.off('mousemove', r), e.off('mouseup', o), e.off('mousewheel', a), e.off('pinch', s) }, n } return n(e, t), e.prototype.isDragging = function () { return this._dragging }, e.prototype.isPinching = function () { return this._pinching }, e.prototype.setPointerChecker = function (t) { this.pointerChecker = t }, e.prototype.dispose = function () { this.disable() }, e.prototype._mousedownHandler = function (t) { if (!(le(t) || t.target && t.target.draggable)) { const e = t.offsetX; const n = t.offsetY; this.pointerChecker && this.pointerChecker(t, e, n) && (this._x = e, this._y = n, this._dragging = !0) } }, e.prototype._mousemoveHandler = function (t) { if (this._dragging && OI('moveOnMouseMove', t, this._opt) && t.gestureEvent !== 'pinch' && !DI(this._zr, 'globalPan')) { const e = t.offsetX; const n = t.offsetY; const i = this._x; const r = this._y; const o = e - i; const a = n - r; this._x = e, this._y = n, this._opt.preventDefaultMouseMove && se(t.event), PI(this, 'pan', 'moveOnMouseMove', t, { dx: o, dy: a, oldX: i, oldY: r, newX: e, newY: n, isAvailableBehavior: null }) } }, e.prototype._mouseupHandler = function (t) { le(t) || (this._dragging = !1) }, e.prototype._mousewheelHandler = function (t) { const e = OI('zoomOnMouseWheel', t, this._opt); const n = OI('moveOnMouseWheel', t, this._opt); const i = t.wheelDelta; const r = Math.abs(i); const o = t.offsetX; const a = t.offsetY; if (i !== 0 && (e || n)) { if (e) { const s = r > 3 ? 1.4 : r > 1 ? 1.2 : 1.1; LI(this, 'zoom', 'zoomOnMouseWheel', t, { scale: i > 0 ? s : 1 / s, originX: o, originY: a, isAvailableBehavior: null }) } if (n) { const l = Math.abs(i); LI(this, 'scrollMove', 'moveOnMouseWheel', t, { scrollDelta: (i > 0 ? 1 : -1) * (l > 3 ? 0.4 : l > 1 ? 0.15 : 0.05), originX: o, originY: a, isAvailableBehavior: null }) } } }, e.prototype._pinchHandler = function (t) { DI(this._zr, 'globalPan') || LI(this, 'zoom', null, t, { scale: t.pinchScale > 1 ? 1.1 : 1 / 1.1, originX: t.pinchX, originY: t.pinchY, isAvailableBehavior: null }) }, e }(Xt)); function LI(t, e, n, i, r) { t.pointerChecker && t.pointerChecker(i, r.originX, r.originY) && (se(i.event), PI(t, e, n, i, r)) } function PI(t, e, n, i, r) { r.isAvailableBehavior = W(OI, null, n, i), t.trigger(e, r) } function OI(t, e, n) { const i = n[t]; return !t || i && (!X(i) || e.event[`${i}Key`]) } function RI(t, e, n) { const i = t.target; i.x += e, i.y += n, i.dirty() } function NI(t, e, n, i) { const r = t.target; const o = t.zoomLimit; let a = t.zoom = t.zoom || 1; if (a *= e, o) { const s = o.min || 0; const l = o.max || 1 / 0; a = Math.max(Math.min(l, a), s) } const u = a / t.zoom; t.zoom = a, r.x -= (n - r.x) * (u - 1), r.y -= (i - r.y) * (u - 1), r.scaleX *= u, r.scaleY *= u, r.dirty() } let EI; const zI = { axisPointer: 1, tooltip: 1, brush: 1 }; function VI(t, e, n) { const i = e.getComponentByElement(t.topTarget); const r = i && i.coordinateSystem; return i && i !== n && !zI.hasOwnProperty(i.mainType) && r && r.model !== n } function BI(t) { X(t) && (t = (new DOMParser()).parseFromString(t, 'text/xml')); let e = t; for (e.nodeType === 9 && (e = e.firstChild); e.nodeName.toLowerCase() !== 'svg' || e.nodeType !== 1;)e = e.nextSibling; return e } const FI = { 'fill': 'fill', 'stroke': 'stroke', 'stroke-width': 'lineWidth', 'opacity': 'opacity', 'fill-opacity': 'fillOpacity', 'stroke-opacity': 'strokeOpacity', 'stroke-dasharray': 'lineDash', 'stroke-dashoffset': 'lineDashOffset', 'stroke-linecap': 'lineCap', 'stroke-linejoin': 'lineJoin', 'stroke-miterlimit': 'miterLimit', 'font-family': 'fontFamily', 'font-size': 'fontSize', 'font-style': 'fontStyle', 'font-weight': 'fontWeight', 'text-anchor': 'textAlign', 'visibility': 'visibility', 'display': 'display' }; const GI = G(FI); const WI = { 'alignment-baseline': 'textBaseline', 'stop-color': 'stopColor' }; const HI = G(WI); const YI = (function () { + function t() { this._defs = {}, this._root = null } return t.prototype.parse = function (t, e) { e = e || {}; const n = BI(t); this._defsUsePending = []; let i = new Cr(); this._root = i; const r = []; const o = n.getAttribute('viewBox') || ''; let a = Number.parseFloat(n.getAttribute('width') || e.width); let s = Number.parseFloat(n.getAttribute('height') || e.height); isNaN(a) && (a = null), isNaN(s) && (s = null), KI(n, i, null, !0, !1); for (var l, u, h = n.firstChild; h;) this._parseNode(h, i, r, null, !1, !1), h = h.nextSibling; if ((function (t, e) { for (let n = 0; n < e.length; n++) { const i = e[n]; i[0].style[i[1]] = t[i[2]] } }(this._defs, this._defsUsePending)), this._defsUsePending = [], o) { const c = tT(o); c.length >= 4 && (l = { x: Number.parseFloat(c[0] || 0), y: Number.parseFloat(c[1] || 0), width: Number.parseFloat(c[2]), height: Number.parseFloat(c[3]) }) } if (l && a != null && s != null && (u = oT(l, { x: 0, y: 0, width: a, height: s }), !e.ignoreViewBox)) { const p = i; (i = new Cr()).add(p), p.scaleX = p.scaleY = u.scale, p.x = u.x, p.y = u.y } return e.ignoreRootClip || a == null || s == null || i.setClipPath(new Cs({ shape: { x: 0, y: 0, width: a, height: s } })), { root: i, width: a, height: s, viewBoxRect: l, viewBoxTransform: u, named: r } }, t.prototype._parseNode = function (t, e, n, i, r, o) { + let a; const s = t.nodeName.toLowerCase(); let l = i; if (s === 'defs' && (r = !0), s === 'text' && (o = !0), s === 'defs' || s === 'switch') { + a = e + } + else { + if (!r) { + const u = EI[s]; if (u && mt(EI, s)) { + a = u.call(this, t, e); const h = t.getAttribute('name'); if (h) { const c = { name: h, namedFrom: null, svgNodeTagLower: s, el: a }; n.push(c), s === 'g' && (l = c) } + else { + i && n.push({ name: i.name, namedFrom: i, svgNodeTagLower: s, el: a }) + }e.add(a) + } + } const p = UI[s]; if (p && mt(UI, s)) { const d = p.call(this, t); const f = t.getAttribute('id'); f && (this._defs[f] = d) } + } if (a && a.isGroup) { + for (let g = t.firstChild; g;)g.nodeType === 1 ? this._parseNode(g, a, n, l, r, o) : g.nodeType === 3 && o && this._parseText(g, a), g = g.nextSibling + } + }, t.prototype._parseText = function (t, e) { const n = new vs({ style: { text: t.textContent }, silent: !0, x: this._textX || 0, y: this._textY || 0 }); jI(e, n), KI(t, n, this._defsUsePending, !1, !1), (function (t, e) { const n = e.__selfStyle; if (n) { const i = n.textBaseline; let r = i; i && i !== 'auto' ? i === 'baseline' ? r = 'alphabetic' : i === 'before-edge' || i === 'text-before-edge' ? r = 'top' : i === 'after-edge' || i === 'text-after-edge' ? r = 'bottom' : i !== 'central' && i !== 'mathematical' || (r = 'middle') : r = 'alphabetic', t.style.textBaseline = r } const o = e.__inheritedStyle; if (o) { const a = o.textAlign; let s = a; a && (a === 'middle' && (s = 'center'), t.style.textAlign = s) } }(n, e)); const i = n.style; const r = i.fontSize; r && r < 9 && (i.fontSize = 9, n.scaleX *= r / 9, n.scaleY *= r / 9); const o = (i.fontSize || i.fontFamily) && [i.fontStyle, i.fontWeight, `${i.fontSize || 12}px`, i.fontFamily || 'sans-serif'].join(' '); i.font = o; const a = n.getBoundingRect(); return this._textX += a.width, e.add(n), n }, t.internalField = void (EI = { g(t, e) { const n = new Cr(); return jI(e, n), KI(t, n, this._defsUsePending, !1, !1), n }, rect(t, e) { const n = new Cs(); return jI(e, n), KI(t, n, this._defsUsePending, !1, !1), n.setShape({ x: Number.parseFloat(t.getAttribute('x') || '0'), y: Number.parseFloat(t.getAttribute('y') || '0'), width: Number.parseFloat(t.getAttribute('width') || '0'), height: Number.parseFloat(t.getAttribute('height') || '0') }), n.silent = !0, n }, circle(t, e) { const n = new hu(); return jI(e, n), KI(t, n, this._defsUsePending, !1, !1), n.setShape({ cx: Number.parseFloat(t.getAttribute('cx') || '0'), cy: Number.parseFloat(t.getAttribute('cy') || '0'), r: Number.parseFloat(t.getAttribute('r') || '0') }), n.silent = !0, n }, line(t, e) { const n = new zu(); return jI(e, n), KI(t, n, this._defsUsePending, !1, !1), n.setShape({ x1: Number.parseFloat(t.getAttribute('x1') || '0'), y1: Number.parseFloat(t.getAttribute('y1') || '0'), x2: Number.parseFloat(t.getAttribute('x2') || '0'), y2: Number.parseFloat(t.getAttribute('y2') || '0') }), n.silent = !0, n }, ellipse(t, e) { const n = new pu(); return jI(e, n), KI(t, n, this._defsUsePending, !1, !1), n.setShape({ cx: Number.parseFloat(t.getAttribute('cx') || '0'), cy: Number.parseFloat(t.getAttribute('cy') || '0'), rx: Number.parseFloat(t.getAttribute('rx') || '0'), ry: Number.parseFloat(t.getAttribute('ry') || '0') }), n.silent = !0, n }, polygon(t, e) { let n; const i = t.getAttribute('points'); i && (n = qI(i)); const r = new Pu({ shape: { points: n || [] }, silent: !0 }); return jI(e, r), KI(t, r, this._defsUsePending, !1, !1), r }, polyline(t, e) { let n; const i = t.getAttribute('points'); i && (n = qI(i)); const r = new Ru({ shape: { points: n || [] }, silent: !0 }); return jI(e, r), KI(t, r, this._defsUsePending, !1, !1), r }, image(t, e) { const n = new _s(); return jI(e, n), KI(t, n, this._defsUsePending, !1, !1), n.setStyle({ image: t.getAttribute('xlink:href') || t.getAttribute('href'), x: +t.getAttribute('x'), y: +t.getAttribute('y'), width: +t.getAttribute('width'), height: +t.getAttribute('height') }), n.silent = !0, n }, text(t, e) { const n = t.getAttribute('x') || '0'; const i = t.getAttribute('y') || '0'; const r = t.getAttribute('dx') || '0'; const o = t.getAttribute('dy') || '0'; this._textX = Number.parseFloat(n) + Number.parseFloat(r), this._textY = Number.parseFloat(i) + Number.parseFloat(o); const a = new Cr(); return jI(e, a), KI(t, a, this._defsUsePending, !1, !0), a }, tspan(t, e) { const n = t.getAttribute('x'); const i = t.getAttribute('y'); n != null && (this._textX = Number.parseFloat(n)), i != null && (this._textY = Number.parseFloat(i)); const r = t.getAttribute('dx') || '0'; const o = t.getAttribute('dy') || '0'; const a = new Cr(); return jI(e, a), KI(t, a, this._defsUsePending, !1, !0), this._textX += Number.parseFloat(r), this._textY += Number.parseFloat(o), a }, path(t, e) { const n = su(t.getAttribute('d') || ''); return jI(e, n), KI(t, n, this._defsUsePending, !1, !1), n.silent = !0, n } }), t + }()); var UI = { lineargradient(t) { const e = Number.parseInt(t.getAttribute('x1') || '0', 10); const n = Number.parseInt(t.getAttribute('y1') || '0', 10); const i = Number.parseInt(t.getAttribute('x2') || '10', 10); const r = Number.parseInt(t.getAttribute('y2') || '0', 10); const o = new Xu(e, n, i, r); return XI(t, o), ZI(t, o), o }, radialgradient(t) { const e = Number.parseInt(t.getAttribute('cx') || '0', 10); const n = Number.parseInt(t.getAttribute('cy') || '0', 10); const i = Number.parseInt(t.getAttribute('r') || '0', 10); const r = new Zu(e, n, i); return XI(t, r), ZI(t, r), r } }; function XI(t, e) { t.getAttribute('gradientUnits') === 'userSpaceOnUse' && (e.global = !0) } function ZI(t, e) { for (let n = t.firstChild; n;) { if (n.nodeType === 1 && n.nodeName.toLocaleLowerCase() === 'stop') { var r; const i = n.getAttribute('offset'); r = i && i.indexOf('%') > 0 ? Number.parseInt(i, 10) / 100 : i ? Number.parseFloat(i) : 0; const o = {}; rT(n, o, o); const a = o.stopColor || n.getAttribute('stop-color') || '#000000'; e.colorStops.push({ offset: r, color: a }) }n = n.nextSibling } } function jI(t, e) { t && t.__inheritedStyle && (e.__inheritedStyle || (e.__inheritedStyle = {}), k(e.__inheritedStyle, t.__inheritedStyle)) } function qI(t) { for (var e = tT(t), n = [], i = 0; i < e.length; i += 2) { const r = Number.parseFloat(e[i]); const o = Number.parseFloat(e[i + 1]); n.push([r, o]) } return n } function KI(t, e, n, i, r) { const o = e; const a = o.__inheritedStyle = o.__inheritedStyle || {}; const s = {}; t.nodeType === 1 && ((function (t, e) { let n = t.getAttribute('transform'); if (n) { n = n.replace(/,/g, ' '); const i = []; let r = null; n.replace(eT, (t, e, n) => { return i.push(e, n), '' }); for (let o = i.length - 1; o > 0; o -= 2) { const a = i[o]; const s = i[o - 1]; const l = tT(a); switch (r = r || [1, 0, 0, 1, 0, 0], s) { case 'translate':Ei(r, r, [Number.parseFloat(l[0]), Number.parseFloat(l[1] || '0')]); break; case 'scale':Vi(r, r, [Number.parseFloat(l[0]), Number.parseFloat(l[1] || l[0])]); break; case 'rotate':zi(r, r, -Number.parseFloat(l[0]) * nT); break; case 'skewX':Ni(r, [1, 0, Math.tan(Number.parseFloat(l[0]) * nT), 1, 0, 0], r); break; case 'skewY':Ni(r, [1, Math.tan(Number.parseFloat(l[0]) * nT), 0, 1, 0, 0], r); break; case 'matrix':r[0] = Number.parseFloat(l[0]), r[1] = Number.parseFloat(l[1]), r[2] = Number.parseFloat(l[2]), r[3] = Number.parseFloat(l[3]), r[4] = Number.parseFloat(l[4]), r[5] = Number.parseFloat(l[5]) } }e.setLocalTransform(r) } }(t, e)), rT(t, a, s), i || (function (t, e, n) { for (var i = 0; i < GI.length; i++) { var r = GI[i]; (o = t.getAttribute(r)) != null && (e[FI[r]] = o) } for (i = 0; i < HI.length; i++) { var o; r = HI[i], (o = t.getAttribute(r)) != null && (n[WI[r]] = o) } }(t, a, s))), o.style = o.style || {}, a.fill != null && (o.style.fill = JI(o, 'fill', a.fill, n)), a.stroke != null && (o.style.stroke = JI(o, 'stroke', a.stroke, n)), E(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], (t) => { a[t] != null && (o.style[t] = Number.parseFloat(a[t])) }), E(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign'], (t) => { a[t] != null && (o.style[t] = a[t]) }), r && (o.__selfStyle = s), a.lineDash && (o.style.lineDash = z(tT(a.lineDash), (t) => { return Number.parseFloat(t) })), a.visibility !== 'hidden' && a.visibility !== 'collapse' || (o.invisible = !0), a.display === 'none' && (o.ignore = !0) } const $I = /^url\(\s*#(.*?)\)/; function JI(t, e, n, i) { + const r = n && n.match($I); if (!r) + return n === 'none' && (n = null), n; const o = ut(r[1]); i.push([t, e, o]) + } const QI = /-?(\d*\.)?\d+(e-?\d+)?/gi; function tT(t) { return t.match(QI) || [] } var eT = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9.eE,]*)\)/g; var nT = Math.PI / 180; const iT = /([^\s:;]+)\s*:\s*([^:;]+)/g; function rT(t, e, n) { + let i; const r = t.getAttribute('style'); if (r) { + for (iT.lastIndex = 0; (i = iT.exec(r)) != null;) { const o = i[1]; const a = mt(FI, o) ? FI[o] : null; a && (e[a] = i[2]); const s = mt(WI, o) ? WI[o] : null; s && (n[s] = i[2]) } + } + } function oT(t, e) { const n = e.width / t.width; const i = e.height / t.height; const r = Math.min(n, i); return { scale: r, x: -(t.x + t.width / 2) * r + (e.x + e.width / 2), y: -(t.y + t.height / 2) * r + (e.y + e.height / 2) } } for (var aT = ft(['rect', 'circle', 'line', 'ellipse', 'polygon', 'polyline', 'path', 'text', 'tspan', 'g']), sT = (function () { + function t(t, e) { this.type = 'geoSVG', this._usedGraphicMap = ft(), this._freedGraphics = [], this._mapName = t, this._parsedXML = BI(e) } return t.prototype.load = function () { let t = this._firstGraphic; if (!t) { t = this._firstGraphic = this._buildGraphic(this._parsedXML), this._freedGraphics.push(t), this._boundingRect = this._firstGraphic.boundingRect.clone(); const e = (function (t) { const e = []; const n = ft(); return E(t, (t) => { if (t.namedFrom == null) { const i = new M_(t.name, t.el); e.push(i), n.set(t.name, i) } }), { regions: e, regionsMap: n } }(t.named)); const n = e.regions; const i = e.regionsMap; this._regions = n, this._regionsMap = i } return { boundingRect: this._boundingRect, regions: this._regions, regionsMap: this._regionsMap } }, t.prototype._buildGraphic = function (t) { + let e, n, i, r; try { lt((n = (e = t && (i = t, r = { ignoreViewBox: !0, ignoreRootClip: !0 }, (new YI()).parse(i, r)) || {}).root) != null) } + catch (t) { throw new Error(`Invalid svg format\n${t.message}`) } const o = new Cr(); o.add(n), o.isGeoSVGGraphicRoot = !0; const a = e.width; const s = e.height; const l = e.viewBoxRect; let u = this._boundingRect; if (!u) { let h = void 0; let c = void 0; let p = void 0; let d = void 0; if (a != null ? (h = 0, p = a) : l && (h = l.x, p = l.width), s != null ? (c = 0, d = s) : l && (c = l.y, d = l.height), h == null || c == null) { const f = n.getBoundingRect(); h == null && (h = f.x, p = f.width), c == null && (c = f.y, d = f.height) }u = this._boundingRect = new sr(h, c, p, d) } if (l) { const g = oT(l, u); n.scaleX = n.scaleY = g.scale, n.x = g.x, n.y = g.y }o.setClipPath(new Cs({ shape: u.plain() })); const y = []; return E(e.named, (t) => { let e; aT.get(t.svgNodeTagLower) != null && (y.push(t), (e = t.el).silent = !1, e.isGroup && e.traverse((t) => { t.silent = !1 })) }), { root: o, boundingRect: u, named: y } + }, t.prototype.useGraphic = function (t) { const e = this._usedGraphicMap; let n = e.get(t); return n || (n = this._freedGraphics.pop() || this._buildGraphic(this._parsedXML), e.set(t, n), n) }, t.prototype.freeGraphic = function (t) { const e = this._usedGraphicMap; const n = e.get(t); n && (e.removeKey(t), this._freedGraphics.push(n)) }, t + }()), lT = [126, 25], hT = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]], cT = 0; cT < hT.length; cT++) { + for (let pT = 0; pT < hT[cT].length; pT++)hT[cT][pT][0] /= 10.5, hT[cT][pT][1] /= -14, hT[cT][pT][0] += lT[0], hT[cT][pT][1] += lT[1] + } const dT = { 南海诸岛: [32, 80], 广东: [0, -10], 香港: [10, 5], 澳门: [-10, 10], 天津: [5, 5] }; const fT = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]]; const gT = (function () { + function t(t, e, n) { let i; this.type = 'geoJSON', this._parsedMap = ft(), this._mapName = t, this._specialAreas = n, this._geoJSON = X(i = e) ? typeof JSON != 'undefined' && JSON.parse ? JSON.parse(i) : new Function(`return (${i});`)() : i } return t.prototype.load = function (t, e) { e = e || 'name'; let n = this._parsedMap.get(e); if (!n) { const i = this._parseToRegions(e); n = this._parsedMap.set(e, { regions: i, boundingRect: yT(i) }) } const r = ft(); const o = []; return E(n.regions, (e) => { let n = e.name; t && mt(t, n) && (e = e.cloneShallow(n = t[n])), o.push(e), r.set(n, e) }), { regions: o, boundingRect: n.boundingRect || new sr(0, 0, 0, 0), regionsMap: r } }, t.prototype._parseToRegions = function (t) { + let e; const n = this._mapName; const i = this._geoJSON; try { e = i ? C_(i, t) : [] } + catch (t) { throw new Error(`Invalid geoJson format\n${t.message}`) } return (function (t, e) { + if (t === 'china') { + for (let n = 0; n < e.length; n++) { + if (e[n].name === '南海诸岛') + return + } e.push(new S_('南海诸岛', z(hT, (t) => { return { type: 'polygon', exterior: t } }), lT)) + } + }(n, e)), E(e, function (t) { const e = t.name; !(function (t, e) { if (t === 'china') { const n = dT[e.name]; if (n) { const i = e.getCenter(); i[0] += n[0] / 10.5, i[1] += -n[1] / 14, e.setCenter(i) } } }(n, t)), (function (t, e) { t === 'china' && e.name === '台湾' && e.geometries.push({ type: 'polygon', exterior: fT[0] }) }(n, t)); const i = this._specialAreas && this._specialAreas[e]; i && t.transformTo(i.left, i.top, i.width, i.height) }, this), e + }, t.prototype.getMapForUser = function () { return { geoJson: this._geoJSON, geoJSON: this._geoJSON, specialAreas: this._specialAreas } }, t + }()); function yT(t) { for (var e, n = 0; n < t.length; n++) { const i = t[n].getBoundingRect(); (e = e || i.clone()).union(i) } return e } const vT = ft(); const mT = function (t, e, n) { + if (e.svg) { var i = new sT(t, e.svg); vT.set(t, i) } + else { let r = e.geoJson || e.geoJSON; r && !e.features ? n = e.specialAreas : r = e, i = new gT(t, r, n), vT.set(t, i) } + }; const xT = function (t) { return vT.get(t) }; const bT = function (t, e, n) { + const i = vT.get(t); if (i) + return i.load(e, n) + }; const wT = ['rect', 'circle', 'line', 'ellipse', 'polygon', 'polyline', 'path']; const ST = ft(wT); const MT = ft(wT.concat(['g'])); const IT = ft(wT.concat(['g'])); const TT = So(); function CT(t) { const e = t.getItemStyle(); const n = t.get('areaColor'); return n != null && (e.fill = n), e } function DT(t) { const e = t.style; e && (e.stroke = e.stroke || e.fill, e.fill = null) } const AT = (function () { + function t(t) { const e = new Cr(); this.uid = gc('ec_map_draw'), this._controller = new kI(t.getZr()), this._controllerHost = { target: e }, this.group = e, e.add(this._regionsGroup = new Cr()), e.add(this._svgGroup = new Cr()) } return t.prototype.draw = function (t, e, n, i, r) { const o = t.mainType === 'geo'; let a = t.getData && t.getData(); o && e.eachComponent({ mainType: 'series', subType: 'map' }, (e) => { a || e.getHostGeoModel() !== t || (a = e.getData()) }); const s = t.coordinateSystem; const l = this._regionsGroup; const u = this.group; const h = s.getTransformInfo(); const c = h.raw; const p = h.roam; !l.childAt(0) || r ? (u.x = p.x, u.y = p.y, u.scaleX = p.scaleX, u.scaleY = p.scaleY, u.dirty()) : rh(u, p, t); const d = a && a.getVisual('visualMeta') && a.getVisual('visualMeta').length > 0; const f = { api: n, geo: s, mapOrGeoModel: t, data: a, isVisualEncodedByVisualMap: d, isGeo: o, transformInfoRaw: c }; s.resourceType === 'geoJSON' ? this._buildGeoJSON(f) : s.resourceType === 'geoSVG' && this._buildSVG(f), this._updateController(t, e, n), this._updateMapSelectHandler(t, l, n, i) }, t.prototype._buildGeoJSON = function (t) { + const e = this._regionsGroupByName = ft(); const n = ft(); const i = this._regionsGroup; const r = t.transformInfoRaw; const o = t.mapOrGeoModel; const a = t.data; const s = t.geo.projection; const l = s && s.stream; function u(t, e) { return e && (t = e(t)), t && [t[0] * r.scaleX + r.x, t[1] * r.scaleY + r.y] } function h(t) { for (var e = [], n = !l && s && s.project, i = 0; i < t.length; ++i) { const r = u(t[i], n); r && e.push(r) } return e } function c(t) { return { shape: { points: h(t) } } }i.removeAll(), E(t.geo.regions, (r) => { + const h = r.name; let p = e.get(h); const d = n.get(h) || {}; let f = d.dataIdx; let g = d.regionModel; p || (p = e.set(h, new Cr()), i.add(p), f = a ? a.indexOfName(h) : null, g = t.isGeo ? o.getRegionModel(h) : a ? a.getItemModel(f) : null, n.set(h, { dataIdx: f, regionModel: g })); const y = []; const v = []; E(r.geometries, (t) => { + if (t.type === 'polygon') { let e = [t.exterior].concat(t.interiors || []); l && (e = NT(e, l)), E(e, (t) => { y.push(new Pu(c(t))) }) } + else { let n = t.points; l && (n = NT(n, l, !0)), E(n, (t) => { v.push(new Ru(c(t))) }) } + }); const m = u(r.getCenter(), s && s.project); function x(e, n) { if (e.length) { const i = new Yu({ culling: !0, segmentIgnoreThreshold: 1, shape: { paths: e } }); p.add(i), kT(t, i, f, g), LT(t, i, h, g, o, f, m), n && (DT(i), E(i.states, DT)) } }x(y), x(v, !0) + }), e.each((e, i) => { const r = n.get(i); const a = r.dataIdx; const s = r.regionModel; PT(t, e, i, s, o, a), OT(t, e, i, s, o), RT(t, e, i, s, o) }, this) + }, t.prototype._buildSVG = function (t) { const e = t.geo.map; const n = t.transformInfoRaw; this._svgGroup.x = n.x, this._svgGroup.y = n.y, this._svgGroup.scaleX = n.scaleX, this._svgGroup.scaleY = n.scaleY, this._svgResourceChanged(e) && (this._freeSVG(), this._useSVG(e)); const i = this._svgDispatcherMap = ft(); let r = !1; E(this._svgGraphicRecord.named, (e) => { const n = e.name; const o = t.mapOrGeoModel; const a = t.data; const s = e.svgNodeTagLower; const l = e.el; const u = a ? a.indexOfName(n) : null; const h = o.getRegionModel(n); ST.get(s) != null && l instanceof da && kT(t, l, u, h), l instanceof da && (l.culling = !0), l.z2EmphasisLift = 0, e.namedFrom || (IT.get(s) != null && LT(t, l, n, h, o, u, null), PT(t, l, n, h, o, u), OT(t, l, n, h, o), MT.get(s) != null && (RT(t, l, n, h, o) === 'self' && (r = !0), (i.get(n) || i.set(n, [])).push(l))) }, this), this._enableBlurEntireSVG(r, t) }, t.prototype._enableBlurEntireSVG = function (t, e) { if (t && e.isGeo) { const n = e.mapOrGeoModel.getModel(['blur', 'itemStyle']).getItemStyle().opacity; this._svgGraphicRecord.root.traverse((t) => { if (!t.isGroup) { vl(t); const e = t.ensureState('blur').style || {}; e.opacity == null && n != null && (e.opacity = n), t.ensureState('emphasis') } }) } }, t.prototype.remove = function () { this._regionsGroup.removeAll(), this._regionsGroupByName = null, this._svgGroup.removeAll(), this._freeSVG(), this._controller.dispose(), this._controllerHost = null }, t.prototype.findHighDownDispatchers = function (t, e) { + if (t == null) + return []; const n = e.coordinateSystem; if (n.resourceType === 'geoJSON') { const i = this._regionsGroupByName; if (i) { const r = i.get(t); return r ? [r] : [] } } + else if (n.resourceType === 'geoSVG') { + return this._svgDispatcherMap && this._svgDispatcherMap.get(t) || [] + } + }, t.prototype._svgResourceChanged = function (t) { return this._svgMapName !== t }, t.prototype._useSVG = function (t) { const e = xT(t); if (e && e.type === 'geoSVG') { const n = e.useGraphic(this.uid); this._svgGroup.add(n.root), this._svgGraphicRecord = n, this._svgMapName = t } }, t.prototype._freeSVG = function () { const t = this._svgMapName; if (t != null) { const e = xT(t); e && e.type === 'geoSVG' && e.freeGraphic(this.uid), this._svgGraphicRecord = null, this._svgDispatcherMap = null, this._svgGroup.removeAll(), this._svgMapName = null } }, t.prototype._updateController = function (t, e, n) { const i = t.coordinateSystem; const r = this._controller; const o = this._controllerHost; o.zoomLimit = t.get('scaleLimit'), o.zoom = i.getZoom(), r.enable(t.get('roam') || !1); const a = t.mainType; function s() { const e = { type: 'geoRoam', componentType: a }; return e[`${a}Id`] = t.id, e }r.off('pan').on('pan', function (t) { this._mouseDownFlag = !1, RI(o, t.dx, t.dy), n.dispatchAction(A(s(), { dx: t.dx, dy: t.dy, animation: { duration: 0 } })) }, this), r.off('zoom').on('zoom', function (t) { this._mouseDownFlag = !1, NI(o, t.scale, t.originX, t.originY), n.dispatchAction(A(s(), { zoom: t.scale, originX: t.originX, originY: t.originY, animation: { duration: 0 } })) }, this), r.setPointerChecker((e, r, o) => { return i.containPoint([r, o]) && !VI(e, n, t) }) }, t.prototype.resetForLabelLayout = function () { this.group.traverse((t) => { const e = t.getTextContent(); e && (e.ignore = TT(e).ignore) }) }, t.prototype._updateMapSelectHandler = function (t, e, n, i) { const r = this; e.off('mousedown'), e.off('click'), t.get('selectedMode') && (e.on('mousedown', () => { r._mouseDownFlag = !0 }), e.on('click', (t) => { r._mouseDownFlag && (r._mouseDownFlag = !1) })) }, t + }()); function kT(t, e, n, i) { const r = i.getModel('itemStyle'); const o = i.getModel(['emphasis', 'itemStyle']); const a = i.getModel(['blur', 'itemStyle']); const s = i.getModel(['select', 'itemStyle']); const l = CT(r); const u = CT(o); const h = CT(s); const c = CT(a); const p = t.data; if (p) { const d = p.getItemVisual(n, 'style'); const f = p.getItemVisual(n, 'decal'); t.isVisualEncodedByVisualMap && d.fill && (l.fill = d.fill), f && (l.decal = rv(f, t.api)) }e.setStyle(l), e.style.strokeNoScale = !0, e.ensureState('emphasis').style = u, e.ensureState('select').style = h, e.ensureState('blur').style = c, vl(e) } function LT(t, e, n, i, r, o, a) { + const s = t.data; const l = t.isGeo; const u = s && isNaN(s.get(s.mapDimension('value'), o)); const h = s && s.getItemLayout(o); if (l || u || h && h.showLabel) { const c = l ? n : o; let p = void 0; (!s || o >= 0) && (p = r); const d = a ? { normal: { align: 'center', verticalAlign: 'middle' } } : null; Hh(e, Yh(i), { labelFetcher: p, labelDataIndex: c, defaultText: n }, d); const f = e.getTextContent(); if (f && (TT(f).ignore = f.ignore, e.textConfig && a)) { const g = e.getBoundingRect().clone(); e.textConfig.layoutRect = g, e.textConfig.position = [`${(a[0] - g.x) / g.width * 100}%`, `${(a[1] - g.y) / g.height * 100}%`] }e.disableLabelAnimation = !0 } + else { + e.removeTextContent(), e.removeTextConfig(), e.disableLabelAnimation = null + } + } function PT(t, e, n, i, r, o) { t.data ? t.data.setItemGraphicEl(o, e) : Hs(e).eventData = { componentType: 'geo', componentIndex: r.componentIndex, geoIndex: r.componentIndex, name: n, region: i && i.option || {} } } function OT(t, e, n, i, r) { t.data || Eh({ el: e, componentModel: r, itemName: n, itemTooltipOption: i.get('tooltip') }) } function RT(t, e, n, i, r) { e.highDownSilentOnTouch = !!r.get('selectedMode'); const o = i.getModel('emphasis'); const a = o.get('focus'); return Rl(e, a, o.get('blurScope'), o.get('disabled')), t.isGeo && (function (t, e, n) { const i = Hs(t); i.componentMainType = e.mainType, i.componentIndex = e.componentIndex, i.componentHighDownName = n }(e, r, n)), a } function NT(t, e, n) { let i; const r = []; function o() { i = [] } function a() { i.length && (r.push(i), i = []) } const s = e({ polygonStart: o, polygonEnd: a, lineStart: o, lineEnd: a, point(t, e) { isFinite(t) && isFinite(e) && i.push([t, e]) }, sphere() {} }); return !n && s.polygonStart(), E(t, (t) => { s.lineStart(); for (let e = 0; e < t.length; e++)s.point(t[e][0], t[e][1]); s.lineEnd() }), !n && s.polygonEnd(), r } const ET = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n, i) { + if (!i || i.type !== 'mapToggleSelect' || i.from !== this.uid) { + const r = this.group; if (r.removeAll(), !t.getHostGeoModel()) { + if (this._mapDraw && i && i.type === 'geoRoam' && this._mapDraw.resetForLabelLayout(), i && i.type === 'geoRoam' && i.componentType === 'series' && i.seriesId === t.id) { + (o = this._mapDraw) && r.add(o.group) + } + else if (t.needsDrawMap) { var o = this._mapDraw || new AT(n); r.add(o.group), o.draw(t, e, n, this, i), this._mapDraw = o } + else { + this._mapDraw && this._mapDraw.remove(), this._mapDraw = null + }t.get('showLegendSymbol') && e.getComponent('legend') && this._renderSymbols(t, e, n) + } + } + }, e.prototype.remove = function () { this._mapDraw && this._mapDraw.remove(), this._mapDraw = null, this.group.removeAll() }, e.prototype.dispose = function () { this._mapDraw && this._mapDraw.remove(), this._mapDraw = null }, e.prototype._renderSymbols = function (t, e, n) { const i = t.originalData; const r = this.group; i.each(i.mapDimension('value'), (e, n) => { if (!isNaN(e)) { const o = i.getItemLayout(n); if (o && o.point) { const a = o.point; const s = o.offset; const l = new hu({ style: { fill: t.getData().getVisual('style').fill }, shape: { cx: a[0] + 9 * s, cy: a[1], r: 3 }, silent: !0, z2: 8 + (s ? 0 : 11) }); if (!s) { const u = t.mainSeries.getData(); const h = i.getName(n); const c = u.indexOfName(h); const p = i.getItemModel(n); const d = p.getModel('label'); const f = u.getItemGraphicEl(c); Hh(l, Yh(p), { labelFetcher: { getFormattedLabel(e, n) { return t.getFormattedLabel(c, n) } }, defaultText: h }), l.disableLabelAnimation = !0, d.get('position') || l.setTextConfig({ position: 'bottom' }), f.onHoverStateChange = function (t) { gl(l, t) } }r.add(l) } } }) }, e.type = 'map', e + }(xg)); const zT = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.needsDrawMap = !1, n.seriesGroup = [], n.getTooltipPosition = function (t) { if (t != null) { const e = this.getData().getName(t); const n = this.coordinateSystem; const i = n.getRegion(e); return i && n.dataToPoint(i.getCenter()) } }, n } return n(e, t), e.prototype.getInitialData = function (t) { for (var e = uM(this, { coordDimensions: ['value'], encodeDefaulter: H(Yp, this) }), n = ft(), i = [], r = 0, o = e.count(); r < o; r++) { const a = e.getName(r); n.set(a, !0) } return E(bT(this.getMapType(), this.option.nameMap, this.option.nameProperty).regions, (t) => { const e = t.name; n.get(e) || i.push(e) }), e.appendValues([], i), e }, e.prototype.getHostGeoModel = function () { const t = this.option.geoIndex; return t != null ? this.ecModel.getComponent('geo', t) : null }, e.prototype.getMapType = function () { return (this.getHostGeoModel() || this).option.map }, e.prototype.getRawValue = function (t) { const e = this.getData(); return e.get(e.mapDimension('value'), t) }, e.prototype.getRegionModel = function (t) { const e = this.getData(); return e.getItemModel(e.indexOfName(t)) }, e.prototype.formatTooltip = function (t, e, n) { for (var i = this.getData(), r = this.getRawValue(t), o = i.getName(t), a = this.seriesGroup, s = [], l = 0; l < a.length; l++) { const u = a[l].originalData.indexOfName(o); const h = i.mapDimension('value'); isNaN(a[l].originalData.get(h, u)) || s.push(a[l].name) } return Xf('section', { header: s.join(', '), noHeader: !s.length, blocks: [Xf('nameValue', { name: o, value: r })] }) }, e.prototype.setZoom = function (t) { this.option.zoom = t }, e.prototype.setCenter = function (t) { this.option.center = t }, e.prototype.getLegendIcon = function (t) { const e = t.icon || 'roundRect'; const n = Ly(e, 0, 0, t.itemWidth, t.itemHeight, t.itemStyle.fill); return n.setStyle(t.itemStyle), n.style.stroke = 'none', e.includes('empty') && (n.style.stroke = n.style.fill, n.style.fill = '#fff', n.style.lineWidth = 2), n }, e.type = 'series.map', e.dependencies = ['geo'], e.layoutMode = 'box', e.defaultOption = { z: 2, coordinateSystem: 'geo', map: '', left: 'center', top: 'center', aspectScale: null, showLegendSymbol: !0, boundingCoords: null, center: null, zoom: 1, scaleLimit: null, selectedMode: !0, label: { show: !1, color: '#000' }, itemStyle: { borderWidth: 0.5, borderColor: '#444', areaColor: '#eee' }, emphasis: { label: { show: !0, color: 'rgb(100,0,0)' }, itemStyle: { areaColor: 'rgba(255,215,0,0.8)' } }, select: { label: { show: !0, color: 'rgb(100,0,0)' }, itemStyle: { color: 'rgba(255,215,0,0.8)' } }, nameProperty: 'name' }, e }(sg)); function VT(t) { const e = {}; t.eachSeriesByType('map', (t) => { const n = t.getHostGeoModel(); const i = n ? `o${n.id}` : `i${t.getMapType()}`; (e[i] = e[i] || []).push(t) }), E(e, (t, e) => { for (var n, i, r, o = (n = z(t, (t) => { return t.getData() }), i = t[0].get('mapValueCalculation'), r = {}, E(n, (t) => { t.each(t.mapDimension('value'), (e, n) => { const i = `ec-${ t.getName(n)}`; r[i] = r[i] || [], isNaN(e) || r[i].push(e) }) }), n[0].map(n[0].mapDimension('value'), (t, e) => { for (var o = `ec-${n[0].getName(e)}`, a = 0, s = 1 / 0, l = -1 / 0, u = r[o].length, h = 0; h < u; h++)s = Math.min(s, r[o][h]), l = Math.max(l, r[o][h]), a += r[o][h]; return u === 0 ? Number.NaN : i === 'min' ? s : i === 'max' ? l : i === 'average' ? a / u : a })), a = 0; a < t.length; a++)t[a].originalData = t[a].getData(); for (a = 0; a < t.length; a++)t[a].seriesGroup = t, t[a].needsDrawMap = a === 0 && !t[a].getHostGeoModel(), t[a].setData(o.cloneShallow()), t[a].mainSeries = t[0] }) } function BT(t) { const e = {}; t.eachSeriesByType('map', (n) => { const i = n.getMapType(); if (!n.getHostGeoModel() && !e[i]) { const r = {}; E(n.seriesGroup, (e) => { const n = e.coordinateSystem; const i = e.originalData; e.get('showLegendSymbol') && t.getComponent('legend') && i.each(i.mapDimension('value'), (t, e) => { const o = i.getName(e); const a = n.getRegion(o); if (a && !isNaN(t)) { const s = r[o] || 0; const l = n.dataToPoint(a.getCenter()); r[o] = s + 1, i.setItemLayout(e, { point: l, offset: s }) } }) }); const o = n.getData(); o.each((t) => { const e = o.getName(t); const n = o.getItemLayout(t) || {}; n.showLabel = !r[e], o.setItemLayout(t, n) }), e[i] = !0 } }) } const FT = Ft; const GT = (function (t) { function e(e) { const n = t.call(this) || this; return n.type = 'view', n.dimensions = ['x', 'y'], n._roamTransformable = new qi(), n._rawTransformable = new qi(), n.name = e, n } return n(e, t), e.prototype.setBoundingRect = function (t, e, n, i) { return this._rect = new sr(t, e, n, i), this._rect }, e.prototype.getBoundingRect = function () { return this._rect }, e.prototype.setViewRect = function (t, e, n, i) { this._transformTo(t, e, n, i), this._viewRect = new sr(t, e, n, i) }, e.prototype._transformTo = function (t, e, n, i) { const r = this.getBoundingRect(); const o = this._rawTransformable; o.transform = r.calculateTransform(new sr(t, e, n, i)); const a = o.parent; o.parent = null, o.decomposeTransform(), o.parent = a, this._updateTransform() }, e.prototype.setCenter = function (t, e) { t && (this._center = [Er(t[0], e.getWidth()), Er(t[1], e.getHeight())], this._updateCenterAndZoom()) }, e.prototype.setZoom = function (t) { t = t || 1; const e = this.zoomLimit; e && (e.max != null && (t = Math.min(e.max, t)), e.min != null && (t = Math.max(e.min, t))), this._zoom = t, this._updateCenterAndZoom() }, e.prototype.getDefaultCenter = function () { const t = this.getBoundingRect(); return [t.x + t.width / 2, t.y + t.height / 2] }, e.prototype.getCenter = function () { return this._center || this.getDefaultCenter() }, e.prototype.getZoom = function () { return this._zoom || 1 }, e.prototype.getRoamTransform = function () { return this._roamTransformable.getLocalTransform() }, e.prototype._updateCenterAndZoom = function () { const t = this._rawTransformable.getLocalTransform(); const e = this._roamTransformable; let n = this.getDefaultCenter(); let i = this.getCenter(); const r = this.getZoom(); i = Ft([], i, t), n = Ft([], n, t), e.originX = i[0], e.originY = i[1], e.x = n[0] - i[0], e.y = n[1] - i[1], e.scaleX = e.scaleY = r, this._updateTransform() }, e.prototype._updateTransform = function () { const t = this._roamTransformable; const e = this._rawTransformable; e.parent = t, t.updateTransform(), e.updateTransform(), Ri(this.transform || (this.transform = []), e.transform || [1, 0, 0, 1, 0, 0]), this._rawTransform = e.getLocalTransform(), this.invTransform = this.invTransform || [], Bi(this.invTransform, this.transform), this.decomposeTransform() }, e.prototype.getTransformInfo = function () { const t = this._rawTransformable; const e = this._roamTransformable; const n = new qi(); return n.transform = e.transform, n.decomposeTransform(), { roam: { x: n.x, y: n.y, scaleX: n.scaleX, scaleY: n.scaleY }, raw: { x: t.x, y: t.y, scaleX: t.scaleX, scaleY: t.scaleY } } }, e.prototype.getViewRect = function () { return this._viewRect }, e.prototype.getViewRectAfterRoam = function () { const t = this.getBoundingRect().clone(); return t.applyTransform(this.transform), t }, e.prototype.dataToPoint = function (t, e, n) { const i = e ? this._rawTransform : this.transform; return n = n || [], i ? FT(n, t, i) : St(n, t) }, e.prototype.pointToData = function (t) { const e = this.invTransform; return e ? FT([], t, e) : [t[0], t[1]] }, e.prototype.convertToPixel = function (t, e, n) { const i = WT(e); return i === this ? i.dataToPoint(n) : null }, e.prototype.convertFromPixel = function (t, e, n) { const i = WT(e); return i === this ? i.pointToData(n) : null }, e.prototype.containPoint = function (t) { return this.getViewRectAfterRoam().contain(t[0], t[1]) }, e.dimensions = ['x', 'y'], e }(qi)); function WT(t) { const e = t.seriesModel; return e ? e.coordinateSystem : null } const HT = { geoJSON: { aspectScale: 0.75, invertLongitute: !0 }, geoSVG: { aspectScale: 1, invertLongitute: !1 } }; const YT = ['lng', 'lat']; const UT = (function (t) { + function e(e, n, i) { + const r = t.call(this, e) || this; r.dimensions = YT, r.type = 'geo', r._nameCoordMap = ft(), r.map = n; let o; const a = i.projection; const s = bT(n, i.nameMap, i.nameProperty); const l = xT(n); const u = (r.resourceType = l ? l.type : null, r.regions = s.regions); const h = HT[l.type]; if (r._regionsMap = s.regionsMap, r.regions = s.regions, r.projection = a, a) { + for (let c = 0; c < u.length; c++) { const p = u[c].getBoundingRect(a); (o = o || p.clone()).union(p) } + } + else { + o = s.boundingRect + } return r.setBoundingRect(o.x, o.y, o.width, o.height), r.aspectScale = a ? 1 : rt(i.aspectScale, h.aspectScale), r._invertLongitute = !a && h.invertLongitute, r + } return n(e, t), e.prototype._transformTo = function (t, e, n, i) { let r = this.getBoundingRect(); const o = this._invertLongitute; r = r.clone(), o && (r.y = -r.y - r.height); const a = this._rawTransformable; a.transform = r.calculateTransform(new sr(t, e, n, i)); const s = a.parent; a.parent = null, a.decomposeTransform(), a.parent = s, o && (a.scaleY = -a.scaleY), this._updateTransform() }, e.prototype.getRegion = function (t) { return this._regionsMap.get(t) }, e.prototype.getRegionByCoord = function (t) { + for (let e = this.regions, n = 0; n < e.length; n++) { + const i = e[n]; if (i.type === 'geoJSON' && i.contain(t)) + return e[n] + } + }, e.prototype.addGeoCoord = function (t, e) { this._nameCoordMap.set(t, e) }, e.prototype.getGeoCoord = function (t) { const e = this._regionsMap.get(t); return this._nameCoordMap.get(t) || e && e.getCenter() }, e.prototype.dataToPoint = function (t, e, n) { if (X(t) && (t = this.getGeoCoord(t)), t) { const i = this.projection; return i && (t = i.project(t)), t && this.projectedToPoint(t, e, n) } }, e.prototype.pointToData = function (t) { const e = this.projection; return e && (t = e.unproject(t)), t && this.pointToProjected(t) }, e.prototype.pointToProjected = function (e) { return t.prototype.pointToData.call(this, e) }, e.prototype.projectedToPoint = function (e, n, i) { return t.prototype.dataToPoint.call(this, e, n, i) }, e.prototype.convertToPixel = function (t, e, n) { const i = XT(e); return i === this ? i.dataToPoint(n) : null }, e.prototype.convertFromPixel = function (t, e, n) { const i = XT(e); return i === this ? i.pointToData(n) : null }, e + }(GT)); function XT(t) { const e = t.geoModel; const n = t.seriesModel; return e ? e.coordinateSystem : n ? n.coordinateSystem || (n.getReferringComponents('geo', Co).models[0] || {}).coordinateSystem : null } function ZT(t, e) { + const n = t.get('boundingCoords'); if (n != null) { let i = n[0]; let r = n[1]; if (isFinite(i[0]) && isFinite(i[1]) && isFinite(r[0]) && isFinite(r[1])) { const o = this.projection; if (o) { const a = i[0]; const s = i[1]; const l = r[0]; const u = r[1]; i = [1 / 0, 1 / 0], r = [-1 / 0, -1 / 0]; const h = function (t, e, n, a) { for (let s = n - t, l = a - e, u = 0; u <= 100; u++) { const h = u / 100; const c = o.project([t + s * h, e + l * h]); Gt(i, i, c), Wt(r, r, c) } }; h(a, s, l, s), h(l, s, l, u), h(l, u, a, u), h(a, u, l, s) } this.setBoundingRect(i[0], i[1], r[0] - i[0], r[1] - i[1]) } } let c; let p; let d; const f = this.getBoundingRect(); const g = t.get('layoutCenter'); const y = t.get('layoutSize'); const v = e.getWidth(); const m = e.getHeight(); const x = f.width / f.height * this.aspectScale; let _ = !1; if (g && y && (c = [Er(g[0], v), Er(g[1], m)], p = Er(y, Math.min(v, m)), isNaN(c[0]) || isNaN(c[1]) || isNaN(p) || (_ = !0)), _) { + d = {}, x > 1 ? (d.width = p, d.height = p / x) : (d.height = p, d.width = p * x), d.y = c[1] - d.height / 2, d.x = c[0] - d.width / 2 + } + else { const b = t.getBoxLayoutParams(); b.aspect = x, d = xp(b, { width: v, height: m }) } this.setViewRect(d.x, d.y, d.width, d.height), this.setCenter(t.get('center'), e), this.setZoom(t.get('zoom')) + }R(UT, GT); const jT = new (function () { function t() { this.dimensions = YT } return t.prototype.create = function (t, e) { const n = []; function i(t) { return { nameProperty: t.get('nameProperty'), aspectScale: t.get('aspectScale'), projection: t.get('projection') } }t.eachComponent('geo', (t, r) => { const o = t.get('map'); const a = new UT(o + r, o, A({ nameMap: t.get('nameMap') }, i(t))); a.zoomLimit = t.get('scaleLimit'), n.push(a), t.coordinateSystem = a, a.model = t, a.resize = ZT, a.resize(t, e) }), t.eachSeries((t) => { if (t.get('coordinateSystem') === 'geo') { const e = t.get('geoIndex') || 0; t.coordinateSystem = n[e] } }); const r = {}; return t.eachSeriesByType('map', (t) => { if (!t.getHostGeoModel()) { const e = t.getMapType(); r[e] = r[e] || [], r[e].push(t) } }), E(r, (t, r) => { const o = z(t, (t) => { return t.get('nameMap') }); const a = new UT(r, r, A({ nameMap: D(o) }, i(t[0]))); a.zoomLimit = it.apply(null, z(t, (t) => { return t.get('scaleLimit') })), n.push(a), a.resize = ZT, a.resize(t[0], e), E(t, (t) => { t.coordinateSystem = a, (function (t, e) { E(e.get('geoCoord'), (e, n) => { t.addGeoCoord(n, e) }) }(a, t)) }) }), n }, t.prototype.getFilledRegions = function (t, e, n, i) { for (var r = (t || []).slice(), o = ft(), a = 0; a < r.length; a++)o.set(r[a].name, r[a]); return E(bT(e, n, i).regions, (t) => { const e = t.name; !o.get(e) && r.push({ name: e }) }), r }, t }())(); const qT = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function (t, e, n) { const i = xT(t.map); if (i && i.type === 'geoJSON') { const r = t.itemStyle = t.itemStyle || {}; 'color' in r || (r.color = '#eee') } this.mergeDefaultAndTheme(t, n), co(t, 'label', ['show']) }, e.prototype.optionUpdated = function () { const t = this; const e = this.option; e.regions = jT.getFilledRegions(e.regions, e.map, e.nameMap, e.nameProperty); const n = {}; this._optionModelMap = V(e.regions || [], (e, i) => { const r = i.name; return r && (e.set(r, new dc(i, t, t.ecModel)), i.selected && (n[r] = !0)), e }, ft()), e.selectedMap || (e.selectedMap = n) }, e.prototype.getRegionModel = function (t) { return this._optionModelMap.get(t) || new dc(null, this, this.ecModel) }, e.prototype.getFormattedLabel = function (t, e) { const n = this.getRegionModel(t); const i = e === 'normal' ? n.get(['label', 'formatter']) : n.get(['emphasis', 'label', 'formatter']); const r = { name: t }; return U(i) ? (r.status = e, i(r)) : X(i) ? i.replace('{a}', t != null ? t : '') : void 0 }, e.prototype.setZoom = function (t) { this.option.zoom = t }, e.prototype.setCenter = function (t) { this.option.center = t }, e.prototype.select = function (t) { const e = this.option; const n = e.selectedMode; n && (n !== 'multiple' && (e.selectedMap = null), (e.selectedMap || (e.selectedMap = {}))[t] = !0) }, e.prototype.unSelect = function (t) { const e = this.option.selectedMap; e && (e[t] = !1) }, e.prototype.toggleSelected = function (t) { this[this.isSelected(t) ? 'unSelect' : 'select'](t) }, e.prototype.isSelected = function (t) { const e = this.option.selectedMap; return !(!e || !e[t]) }, e.type = 'geo', e.layoutMode = 'box', e.defaultOption = { z: 0, show: !0, left: 'center', top: 'center', aspectScale: null, silent: !1, map: '', boundingCoords: null, center: null, zoom: 1, scaleLimit: null, label: { show: !1, color: '#000' }, itemStyle: { borderWidth: 0.5, borderColor: '#444' }, emphasis: { label: { show: !0, color: 'rgb(100,0,0)' }, itemStyle: { color: 'rgba(255,215,0,0.8)' } }, select: { label: { show: !0, color: 'rgb(100,0,0)' }, itemStyle: { color: 'rgba(255,215,0,0.8)' } }, regions: [] }, e }(Tp)); function KT(t, e) { return t.pointToProjected ? t.pointToProjected(e) : t.pointToData(e) } function $T(t, e, n, i) { const r = t.getZoom(); const o = t.getCenter(); let a = e.zoom; const s = t.projectedToPoint ? t.projectedToPoint(o) : t.dataToPoint(o); if (e.dx != null && e.dy != null && (s[0] -= e.dx, s[1] -= e.dy, t.setCenter(KT(t, s), i)), a != null) { if (n) { const l = n.min || 0; const u = n.max || 1 / 0; a = Math.max(Math.min(r * a, u), l) / r }t.scaleX *= a, t.scaleY *= a; const h = (e.originX - t.x) * (a - 1); const c = (e.originY - t.y) * (a - 1); t.x -= h, t.y -= c, t.updateTransform(), t.setCenter(KT(t, s), i), t.setZoom(a * r) } return { center: t.getCenter(), zoom: t.getZoom() } } const JT = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.focusBlurEnabled = !0, n } return n(e, t), e.prototype.init = function (t, e) { this._api = e }, e.prototype.render = function (t, e, n, i) { + if (this._model = t, !t.get('show')) + return this._mapDraw && this._mapDraw.remove(), void (this._mapDraw = null); this._mapDraw || (this._mapDraw = new AT(n)); const r = this._mapDraw; r.draw(t, e, n, this, i), r.group.on('click', this._handleRegionClick, this), r.group.silent = t.get('silent'), this.group.add(r.group), this.updateSelectStatus(t, e, n) + }, e.prototype._handleRegionClick = function (t) { let e; xy(t.target, (t) => { return (e = Hs(t).eventData) != null }, !0), e && this._api.dispatchAction({ type: 'geoToggleSelect', geoId: this._model.id, name: e.name }) }, e.prototype.updateSelectStatus = function (t, e, n) { + const i = this; this._mapDraw.group.traverse((t) => { + const e = Hs(t).eventData; if (e) + return i._model.isSelected(e.name) ? n.enterSelect(t) : n.leaveSelect(t), !0 + }) + }, e.prototype.findHighDownDispatchers = function (t) { return this._mapDraw && this._mapDraw.findHighDownDispatchers(t, this._model) }, e.prototype.dispose = function () { this._mapDraw && this._mapDraw.remove() }, e.type = 'geo', e + }(gg)); function QT(t, e, n) { mT(t, e, n) } function tC(t) { function e(e, n) { n.update = 'geo:updateSelectStatus', t.registerAction(n, (t, n) => { const i = {}; const r = []; return n.eachComponent({ mainType: 'geo', query: t }, (n) => { n[e](t.name), E(n.coordinateSystem.regions, (t) => { i[t.name] = n.isSelected(t.name) || !1 }); const o = []; E(i, (t, e) => { i[e] && o.push(e) }), r.push({ geoIndex: n.componentIndex, name: o }) }), { selected: i, allSelected: r, name: t.name } }) }t.registerCoordinateSystem('geo', jT), t.registerComponentModel(qT), t.registerComponentView(JT), t.registerImpl('registerMap', QT), t.registerImpl('getMap', (t) => { return (function (t) { const e = vT.get(t); return e && e.type === 'geoJSON' && e.getMapForUser() }(t)) }), e('toggleSelected', { type: 'geoToggleSelect', event: 'geoselectchanged' }), e('select', { type: 'geoSelect', event: 'geoselected' }), e('unSelect', { type: 'geoUnSelect', event: 'geounselected' }), t.registerAction({ type: 'geoRoam', event: 'geoRoam', update: 'updateTransform' }, (t, e, n) => { const i = t.componentType || 'series'; e.eachComponent({ mainType: i, query: t }, (e) => { const r = e.coordinateSystem; if (r.type === 'geo') { const o = $T(r, t, e.get('scaleLimit'), n); e.setCenter && e.setCenter(o.center), e.setZoom && e.setZoom(o.zoom), i === 'series' && E(e.seriesGroup, (t) => { t.setCenter(o.center), t.setZoom(o.zoom) }) } }) }) } function eC(t, e) { + const n = t.isExpand ? t.children : []; const i = t.parentNode.children; const r = t.hierNode.i ? i[t.hierNode.i - 1] : null; if (n.length) { !(function (t) { for (let e = t.children, n = e.length, i = 0, r = 0; --n >= 0;) { const o = e[n]; o.hierNode.prelim += i, o.hierNode.modifier += i, r += o.hierNode.change, i += o.hierNode.shift + r } }(t)); const o = (n[0].hierNode.prelim + n[n.length - 1].hierNode.prelim) / 2; r ? (t.hierNode.prelim = r.hierNode.prelim + e(t, r), t.hierNode.modifier = t.hierNode.prelim - o) : t.hierNode.prelim = o } + else { + r && (t.hierNode.prelim = r.hierNode.prelim + e(t, r)) + }t.parentNode.hierNode.defaultAncestor = (function (t, e, n, i) { if (e) { for (var r = t, o = t, a = o.parentNode.children[0], s = e, l = r.hierNode.modifier, u = o.hierNode.modifier, h = a.hierNode.modifier, c = s.hierNode.modifier; s = oC(s), o = aC(o), s && o;) { r = oC(r), a = aC(a), r.hierNode.ancestor = t; const p = s.hierNode.prelim + c - o.hierNode.prelim - u + i(s, o); p > 0 && (lC(sC(s, t, n), t, p), u += p, l += p), c += s.hierNode.modifier, u += o.hierNode.modifier, l += r.hierNode.modifier, h += a.hierNode.modifier }s && !oC(r) && (r.hierNode.thread = s, r.hierNode.modifier += c - l), o && !aC(a) && (a.hierNode.thread = o, a.hierNode.modifier += u - h, n = t) } return n }(t, r, t.parentNode.hierNode.defaultAncestor || i[0], e)) + } function nC(t) { const e = t.hierNode.prelim + t.parentNode.hierNode.modifier; t.setLayout({ x: e }, !0), t.hierNode.modifier += t.parentNode.hierNode.modifier } function iC(t) { return arguments.length ? t : uC } function rC(t, e) { return t -= Math.PI / 2, { x: e * Math.cos(t), y: e * Math.sin(t) } } function oC(t) { const e = t.children; return e.length && t.isExpand ? e[e.length - 1] : t.hierNode.thread } function aC(t) { const e = t.children; return e.length && t.isExpand ? e[0] : t.hierNode.thread } function sC(t, e, n) { return t.hierNode.ancestor.parentNode === e.parentNode ? t.hierNode.ancestor : n } function lC(t, e, n) { const i = n / (e.hierNode.i - t.hierNode.i); e.hierNode.change -= i, e.hierNode.shift += n, e.hierNode.modifier += n, e.hierNode.prelim += n, t.hierNode.change += i } function uC(t, e) { return t.parentNode === e.parentNode ? 1 : 2 } const hC = function () { this.parentPoint = [], this.childPoints = [] }; const cC = (function (t) { + function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultStyle = function () { return { stroke: '#000', fill: null } }, e.prototype.getDefaultShape = function () { return new hC() }, e.prototype.buildPath = function (t, e) { + const n = e.childPoints; const i = n.length; const r = e.parentPoint; const o = n[0]; const a = n[i - 1]; if (i === 1) + return t.moveTo(r[0], r[1]), void t.lineTo(o[0], o[1]); const s = e.orient; const l = s === 'TB' || s === 'BT' ? 0 : 1; const u = 1 - l; const h = Er(e.forkPosition, 1); const c = []; c[l] = r[l], c[u] = r[u] + (a[u] - r[u]) * h, t.moveTo(r[0], r[1]), t.lineTo(c[0], c[1]), t.moveTo(o[0], o[1]), c[l] = o[l], t.lineTo(c[0], c[1]), c[l] = a[l], t.lineTo(c[0], c[1]), t.lineTo(a[0], a[1]); for (let p = 1; p < i - 1; p++) { const d = n[p]; t.moveTo(d[0], d[1]), c[l] = d[l], t.lineTo(c[0], c[1]) } + }, e + }(gs)); const pC = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n._mainGroup = new Cr(), n } return n(e, t), e.prototype.init = function (t, e) { this._controller = new kI(e.getZr()), this._controllerHost = { target: this.group }, this.group.add(this._mainGroup) }, e.prototype.render = function (t, e, n) { const i = t.getData(); const r = t.layoutInfo; const o = this._mainGroup; t.get('layout') === 'radial' ? (o.x = r.x + r.width / 2, o.y = r.y + r.height / 2) : (o.x = r.x, o.y = r.y), this._updateViewCoordSys(t, n), this._updateController(t, e, n); const a = this._data; i.diff(a).add((e) => { dC(i, e) && fC(i, e, null, o, t) }).update((e, n) => { const r = a.getItemGraphicEl(n); dC(i, e) ? fC(i, e, r, o, t) : r && vC(a, n, r, o, t) }).remove((e) => { const n = a.getItemGraphicEl(e); n && vC(a, e, n, o, t) }).execute(), this._nodeScaleRatio = t.get('nodeScaleRatio'), this._updateNodeAndLinkScale(t), !0 === t.get('expandAndCollapse') && i.eachItemGraphicEl((e, i) => { e.off('click').on('click', () => { n.dispatchAction({ type: 'treeExpandAndCollapse', seriesId: t.id, dataIndex: i }) }) }), this._data = i }, e.prototype._updateViewCoordSys = function (t, e) { const n = t.getData(); const i = []; n.each((t) => { const e = n.getItemLayout(t); !e || isNaN(e.x) || isNaN(e.y) || i.push([+e.x, +e.y]) }); const r = []; const o = []; Ma(i, r, o); const a = this._min; const s = this._max; o[0] - r[0] == 0 && (r[0] = a ? a[0] : r[0] - 1, o[0] = s ? s[0] : o[0] + 1), o[1] - r[1] == 0 && (r[1] = a ? a[1] : r[1] - 1, o[1] = s ? s[1] : o[1] + 1); const l = t.coordinateSystem = new GT(); l.zoomLimit = t.get('scaleLimit'), l.setBoundingRect(r[0], r[1], o[0] - r[0], o[1] - r[1]), l.setCenter(t.get('center'), e), l.setZoom(t.get('zoom')), this.group.attr({ x: l.x, y: l.y, scaleX: l.scaleX, scaleY: l.scaleY }), this._min = r, this._max = o }, e.prototype._updateController = function (t, e, n) { const i = this; const r = this._controller; const o = this._controllerHost; const a = this.group; r.setPointerChecker((e, i, r) => { const o = a.getBoundingRect(); return o.applyTransform(a.transform), o.contain(i, r) && !VI(e, n, t) }), r.enable(t.get('roam')), o.zoomLimit = t.get('scaleLimit'), o.zoom = t.coordinateSystem.getZoom(), r.off('pan').off('zoom').on('pan', (e) => { RI(o, e.dx, e.dy), n.dispatchAction({ seriesId: t.id, type: 'treeRoam', dx: e.dx, dy: e.dy }) }).on('zoom', (e) => { NI(o, e.scale, e.originX, e.originY), n.dispatchAction({ seriesId: t.id, type: 'treeRoam', zoom: e.scale, originX: e.originX, originY: e.originY }), i._updateNodeAndLinkScale(t), n.updateLabelLayout() }) }, e.prototype._updateNodeAndLinkScale = function (t) { const e = t.getData(); const n = this._getNodeGlobalScale(t); e.eachItemGraphicEl((t, e) => { t.setSymbolScale(n) }) }, e.prototype._getNodeGlobalScale = function (t) { + const e = t.coordinateSystem; if (e.type !== 'view') + return 1; const n = this._nodeScaleRatio; const i = e.scaleX || 1; return ((e.getZoom() - 1) * n + 1) / i + }, e.prototype.dispose = function () { this._controller && this._controller.dispose(), this._controllerHost = null }, e.prototype.remove = function () { this._mainGroup.removeAll(), this._data = null }, e.type = 'tree', e + }(xg)); function dC(t, e) { const n = t.getItemLayout(e); return n && !isNaN(n.x) && !isNaN(n.y) } function fC(t, e, n, i, r) { + const o = !n; const a = t.tree.getNodeByDataIndex(e); const s = a.getModel(); const l = a.getVisual('style').fill; const u = !1 === a.isExpand && a.children.length !== 0 ? l : '#fff'; const h = t.tree.root; const c = a.parentNode === h ? a : a.parentNode || a; const p = t.getItemGraphicEl(c.dataIndex); const d = c.getLayout(); const f = p ? { x: p.__oldX, y: p.__oldY, rawX: p.__radialOldRawX, rawY: p.__radialOldRawY } : d; const g = a.getLayout(); o ? ((n = new Yw(t, e, null, { symbolInnerColor: u, useNameLabel: !0 })).x = f.x, n.y = f.y) : n.updateData(t, e, null, { symbolInnerColor: u, useNameLabel: !0 }), n.__radialOldRawX = n.__radialRawX, n.__radialOldRawY = n.__radialRawY, n.__radialRawX = g.rawX, n.__radialRawY = g.rawY, i.add(n), t.setItemGraphicEl(e, n), n.__oldX = n.x, n.__oldY = n.y, rh(n, { x: g.x, y: g.y }, r); const y = n.getSymbolPath(); if (r.get('layout') === 'radial') { + const v = h.children[0]; const m = v.getLayout(); const x = v.children.length; let _ = void 0; let b = void 0; if (g.x === m.x && !0 === a.isExpand && v.children.length) { const w = { x: (v.children[0].getLayout().x + v.children[x - 1].getLayout().x) / 2, y: (v.children[0].getLayout().y + v.children[x - 1].getLayout().y) / 2 }; (_ = Math.atan2(w.y - m.y, w.x - m.x)) < 0 && (_ = 2 * Math.PI + _), (b = w.x < m.x) && (_ -= Math.PI) } + else { + (_ = Math.atan2(g.y - m.y, g.x - m.x)) < 0 && (_ = 2 * Math.PI + _), a.children.length === 0 || a.children.length !== 0 && !1 === a.isExpand ? (b = g.x < m.x) && (_ -= Math.PI) : (b = g.x > m.x) || (_ -= Math.PI) + } const S = b ? 'left' : 'right'; const M = s.getModel('label'); const I = M.get('rotate'); const T = I * (Math.PI / 180); const C = y.getTextContent(); C && (y.setTextConfig({ position: M.get('position') || S, rotation: I == null ? -_ : T, origin: 'center' }), C.setStyle('verticalAlign', 'middle')) + } const D = s.get(['emphasis', 'focus']); const A = D === 'relative' ? gt(a.getAncestorsIndices(), a.getDescendantIndices()) : D === 'ancestor' ? a.getAncestorsIndices() : D === 'descendant' ? a.getDescendantIndices() : null; A && (Hs(n).focus = A), (function (t, e, n, i, r, o, a, s) { + const l = e.getModel(); const u = t.get('edgeShape'); const h = t.get('layout'); const c = t.getOrient(); const p = t.get(['lineStyle', 'curveness']); const d = t.get('edgeForkPosition'); const f = l.getModel('lineStyle').getLineStyle(); let g = i.__edge; if (u === 'curve') { + e.parentNode && e.parentNode !== n && (g || (g = i.__edge = new Gu({ shape: mC(h, c, p, r, r) })), rh(g, { shape: mC(h, c, p, o, a) }, t)) + } + else if (u === 'polyline' && h === 'orthogonal' && e !== n && e.children && e.children.length !== 0 && !0 === e.isExpand) { for (var y = e.children, v = [], m = 0; m < y.length; m++) { const x = y[m].getLayout(); v.push([x.x, x.y]) }g || (g = i.__edge = new cC({ shape: { parentPoint: [a.x, a.y], childPoints: [[a.x, a.y]], orient: c, forkPosition: d } })), rh(g, { shape: { parentPoint: [a.x, a.y], childPoints: v } }, t) }g && (u !== 'polyline' || e.isExpand) && (g.useStyle(k({ strokeNoScale: !0, fill: null }, f)), Vl(g, l, 'lineStyle'), vl(g), s.add(g)) + }(r, a, h, n, f, d, g, i)), n.__edge && (n.onHoverStateChange = function (e) { if (e !== 'blur') { const i = a.parentNode && t.getItemGraphicEl(a.parentNode.dataIndex); i && i.hoverState === 1 || gl(n.__edge, e) } }) + } function gC(t, e, n, i, r) { const o = yC(e.tree.root, t); const a = o.source; const s = o.sourceLayout; const l = e.getItemGraphicEl(t.dataIndex); if (l) { const u = e.getItemGraphicEl(a.dataIndex).__edge; const h = l.__edge || (!1 === a.isExpand || a.children.length === 1 ? u : void 0); const c = i.get('edgeShape'); const p = i.get('layout'); const d = i.get('orient'); const f = i.get(['lineStyle', 'curveness']); h && (c === 'curve' ? sh(h, { shape: mC(p, d, f, s, s), style: { opacity: 0 } }, i, { cb() { n.remove(h) }, removeOpt: r }) : c === 'polyline' && i.get('layout') === 'orthogonal' && sh(h, { shape: { parentPoint: [s.x, s.y], childPoints: [[s.x, s.y]] }, style: { opacity: 0 } }, i, { cb() { n.remove(h) }, removeOpt: r })) } } function yC(t, e) { for (var n, i = e.parentNode === t ? e : e.parentNode || e; (n = i.getLayout()) == null;)i = i.parentNode === t ? i : i.parentNode || i; return { source: i, sourceLayout: n } } function vC(t, e, n, i, r) { const o = t.tree.getNodeByDataIndex(e); const a = yC(t.tree.root, o).sourceLayout; const s = { duration: r.get('animationDurationUpdate'), easing: r.get('animationEasingUpdate') }; sh(n, { x: a.x + 1, y: a.y + 1 }, r, { cb() { i.remove(n), t.setItemGraphicEl(e, null) }, removeOpt: s }), n.fadeOut(null, t.hostModel, { fadeLabel: !0, animation: s }), o.children.forEach((e) => { gC(e, t, i, r, s) }), gC(o, t, i, r, s) } function mC(t, e, n, i, r) { let o, a, s, l, u, h, c, p; if (t === 'radial') { u = i.rawX, c = i.rawY, h = r.rawX, p = r.rawY; const d = rC(u, c); const f = rC(u, c + (p - c) * n); const g = rC(h, p + (c - p) * n); const y = rC(h, p); return { x1: d.x || 0, y1: d.y || 0, x2: y.x || 0, y2: y.y || 0, cpx1: f.x || 0, cpy1: f.y || 0, cpx2: g.x || 0, cpy2: g.y || 0 } } return u = i.x, c = i.y, h = r.x, p = r.y, e !== 'LR' && e !== 'RL' || (o = u + (h - u) * n, a = c, s = h + (u - h) * n, l = p), e !== 'TB' && e !== 'BT' || (o = u, a = c + (p - c) * n, s = h, l = p + (c - p) * n), { x1: u, y1: c, x2: h, y2: p, cpx1: o, cpy1: a, cpx2: s, cpy2: l } } const xC = So(); function _C(t) { const e = t.mainData; let n = t.datas; n || (n = { main: e }, t.datasAttr = { main: 'data' }), t.datas = t.mainData = null, TC(e, n, t), E(n, (n) => { E(e.TRANSFERABLE_METHODS, (e) => { n.wrapMethod(e, H(bC, t)) }) }), e.wrapMethod('cloneShallow', H(SC, t)), E(e.CHANGABLE_METHODS, (n) => { e.wrapMethod(n, H(wC, t)) }), lt(n[e.dataType] === e) } function bC(t, e) { + if (xC(this).mainData === this) { const n = A({}, xC(this).datas); n[this.dataType] = e, TC(e, n, t) } + else { + CC(e, this.dataType, xC(this).mainData, t) + } return e + } function wC(t, e) { return t.struct && t.struct.update(), e } function SC(t, e) { return E(xC(e).datas, (n, i) => { n !== e && CC(n.cloneShallow(), i, e, t) }), e } function MC(t) { const e = xC(this).mainData; return t == null || e == null ? e : xC(e).datas[t] } function IC() { const t = xC(this).mainData; return t == null ? [{ data: t }] : z(G(xC(t).datas), (e) => { return { type: e, data: xC(t).datas[e] } }) } function TC(t, e, n) { xC(t).datas = {}, E(e, (e, i) => { CC(e, i, t, n) }) } function CC(t, e, n, i) { xC(n).datas[e] = t, xC(t).mainData = n, t.dataType = e, i.struct && (t[i.structAttr] = i.struct, i.struct[i.datasAttr[e]] = t), t.getLinkedData = MC, t.getLinkedDataAll = IC } const DC = (function () { + function t(t, e) { this.depth = 0, this.height = 0, this.dataIndex = -1, this.children = [], this.viewChildren = [], this.isExpand = !1, this.name = t || '', this.hostTree = e } return t.prototype.isRemoved = function () { return this.dataIndex < 0 }, t.prototype.eachNode = function (t, e, n) { U(t) && (n = e, e = t, t = null), X(t = t || {}) && (t = { order: t }); let i; const r = t.order || 'preorder'; const o = this[t.attr || 'children']; r === 'preorder' && (i = e.call(n, this)); for (let a = 0; !i && a < o.length; a++)o[a].eachNode(t, e, n); r === 'postorder' && e.call(n, this) }, t.prototype.updateDepthAndHeight = function (t) { let e = 0; this.depth = t; for (let n = 0; n < this.children.length; n++) { const i = this.children[n]; i.updateDepthAndHeight(t + 1), i.height > e && (e = i.height) } this.height = e + 1 }, t.prototype.getNodeById = function (t) { + if (this.getId() === t) + return this; for (let e = 0, n = this.children, i = n.length; e < i; e++) { + const r = n[e].getNodeById(t); if (r) + return r + } + }, t.prototype.contains = function (t) { + if (t === this) + return !0; for (let e = 0, n = this.children, i = n.length; e < i; e++) { + const r = n[e].contains(t); if (r) + return r + } + }, t.prototype.getAncestors = function (t) { for (var e = [], n = t ? this : this.parentNode; n;)e.push(n), n = n.parentNode; return e.reverse(), e }, t.prototype.getAncestorsIndices = function () { for (var t = [], e = this; e;)t.push(e.dataIndex), e = e.parentNode; return t.reverse(), t }, t.prototype.getDescendantIndices = function () { const t = []; return this.eachNode((e) => { t.push(e.dataIndex) }), t }, t.prototype.getValue = function (t) { const e = this.hostTree.data; return e.getStore().get(e.getDimensionIndex(t || 'value'), this.dataIndex) }, t.prototype.setLayout = function (t, e) { this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, t, e) }, t.prototype.getLayout = function () { return this.hostTree.data.getItemLayout(this.dataIndex) }, t.prototype.getModel = function (t) { + if (!(this.dataIndex < 0)) + return this.hostTree.data.getItemModel(this.dataIndex).getModel(t) + }, t.prototype.getLevelModel = function () { return (this.hostTree.levelModels || [])[this.depth] }, t.prototype.setVisual = function (t, e) { this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, t, e) }, t.prototype.getVisual = function (t) { return this.hostTree.data.getItemVisual(this.dataIndex, t) }, t.prototype.getRawIndex = function () { return this.hostTree.data.getRawIndex(this.dataIndex) }, t.prototype.getId = function () { return this.hostTree.data.getId(this.dataIndex) }, t.prototype.getChildIndex = function () { + if (this.parentNode) { + for (let t = this.parentNode.children, e = 0; e < t.length; ++e) { + if (t[e] === this) + return e + } return -1 + } return -1 + }, t.prototype.isAncestorOf = function (t) { + for (let e = t.parentNode; e;) { + if (e === this) + return !0; e = e.parentNode + } return !1 + }, t.prototype.isDescendantOf = function (t) { return t !== this && t.isAncestorOf(this) }, t + }()); const AC = (function () { + function t(t) { this.type = 'tree', this._nodes = [], this.hostModel = t } return t.prototype.eachNode = function (t, e, n) { this.root.eachNode(t, e, n) }, t.prototype.getNodeByDataIndex = function (t) { const e = this.data.getRawIndex(t); return this._nodes[e] }, t.prototype.getNodeById = function (t) { return this.root.getNodeById(t) }, t.prototype.update = function () { for (var t = this.data, e = this._nodes, n = 0, i = e.length; n < i; n++)e[n].dataIndex = -1; for (n = 0, i = t.count(); n < i; n++)e[t.getRawIndex(n)].dataIndex = n }, t.prototype.clearLayouts = function () { this.data.clearItemLayouts() }, t.createTree = function (e, n, i) { + const r = new t(n); const o = []; let a = 1; !(function t(e, n) { + const i = e.value; a = Math.max(a, Y(i) ? i.length : 1), o.push(e); const s = new DC(xo(e.name, ''), r); n ? (function (t, e) { const n = e.children; t.parentNode !== e && (n.push(t), t.parentNode = e) }(s, n)) : r.root = s, r._nodes.push(s); const l = e.children; if (l) { + for (let u = 0; u < l.length; u++)t(l[u], s) + } + }(e)), r.root.updateDepthAndHeight(0); const s = Km(o, { coordDimensions: ['value'], dimensionsCount: a }).dimensions; const l = new qm(s, n); return l.initData(o), i && i(l), _C({ mainData: l, struct: r, structAttr: 'tree' }), r.update(), r + }, t + }()); function kC(t, e, n) { + if (t && P(e, t.type) >= 0) { + const i = n.getData().tree.root; let r = t.targetNode; if (X(r) && (r = i.getNodeById(r)), r && i.contains(r)) + return { node: r }; const o = t.targetNodeId; if (o != null && (r = i.getNodeById(o))) + return { node: r } + } + } function LC(t) { for (var e = []; t;)(t = t.parentNode) && e.push(t); return e.reverse() } function PC(t, e) { return P(LC(t), e) >= 0 } function OC(t, e) { for (var n = []; t;) { const i = t.dataIndex; n.push({ name: t.name, dataIndex: i, value: e.getRawValue(i) }), t = t.parentNode } return n.reverse(), n } const RC = (function (t) { function e() { const e = t !== null && t.apply(this, arguments) || this; return e.hasSymbolVisual = !0, e.ignoreStyleOnData = !0, e } return n(e, t), e.prototype.getInitialData = function (t) { const e = { name: t.name, children: t.data }; const n = t.leaves || {}; const i = new dc(n, this, this.ecModel); var r = AC.createTree(e, this, (t) => { t.wrapMethod('getItemModel', (t, e) => { const n = r.getNodeByDataIndex(e); return n && n.children.length && n.isExpand || (t.parentModel = i), t }) }); let o = 0; r.eachNode('preorder', (t) => { t.depth > o && (o = t.depth) }); const a = t.expandAndCollapse && t.initialTreeDepth >= 0 ? t.initialTreeDepth : o; return r.root.eachNode('preorder', (t) => { const e = t.hostTree.data.getRawDataItem(t.dataIndex); t.isExpand = e && e.collapsed != null ? !e.collapsed : t.depth <= a }), r.data }, e.prototype.getOrient = function () { let t = this.get('orient'); return t === 'horizontal' ? t = 'LR' : t === 'vertical' && (t = 'TB'), t }, e.prototype.setZoom = function (t) { this.option.zoom = t }, e.prototype.setCenter = function (t) { this.option.center = t }, e.prototype.formatTooltip = function (t, e, n) { for (var i = this.getData().tree, r = i.root.children[0], o = i.getNodeByDataIndex(t), a = o.getValue(), s = o.name; o && o !== r;)s = `${o.parentNode.name}.${s}`, o = o.parentNode; return Xf('nameValue', { name: s, value: a, noValue: isNaN(a) || a == null }) }, e.prototype.getDataParams = function (e) { const n = t.prototype.getDataParams.apply(this, arguments); const i = this.getData().tree.getNodeByDataIndex(e); return n.treeAncestors = OC(i, this), n.collapsed = !i.isExpand, n }, e.type = 'series.tree', e.layoutMode = 'box', e.defaultOption = { z: 2, coordinateSystem: 'view', left: '12%', top: '12%', right: '12%', bottom: '12%', layout: 'orthogonal', edgeShape: 'curve', edgeForkPosition: '50%', roam: !1, nodeScaleRatio: 0.4, center: null, zoom: 1, orient: 'LR', symbol: 'emptyCircle', symbolSize: 7, expandAndCollapse: !0, initialTreeDepth: 2, lineStyle: { color: '#ccc', width: 1.5, curveness: 0.5 }, itemStyle: { color: 'lightsteelblue', borderWidth: 1.5 }, label: { show: !0 }, animationEasing: 'linear', animationDuration: 700, animationDurationUpdate: 500 }, e }(sg)); function NC(t, e) { + for (var n, i = [t]; n = i.pop();) { + if (e(n), n.isExpand) { + const r = n.children; if (r.length) { + for (let o = r.length - 1; o >= 0; o--)i.push(r[o]) + } + } + } + } function EC(t, e) { + t.eachSeriesByType('tree', (t) => { + !(function (t, e) { + const n = (function (t, e) { return xp(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }) }(t, e)); t.layoutInfo = n; const i = t.get('layout'); let r = 0; let o = 0; let a = null; i === 'radial' ? (r = 2 * Math.PI, o = Math.min(n.height, n.width) / 2, a = iC((t, e) => { return (t.parentNode === e.parentNode ? 1 : 2) / t.depth })) : (r = n.width, o = n.height, a = iC()); const s = t.getData().tree.root; const l = s.children[0]; if (l) { + !(function (t) { + const e = t; e.hierNode = { defaultAncestor: null, ancestor: e, prelim: 0, modifier: 0, change: 0, shift: 0, i: 0, thread: null }; for (var n, i, r = [e]; n = r.pop();) { + if (i = n.children, n.isExpand && i.length) { + for (let o = i.length - 1; o >= 0; o--) { const a = i[o]; a.hierNode = { defaultAncestor: null, ancestor: a, prelim: 0, modifier: 0, change: 0, shift: 0, i: o, thread: null }, r.push(a) } + } + } + }(s)), (function (t, e, n) { + for (var i, r = [t], o = []; i = r.pop();) { + if (o.push(i), i.isExpand) { + const a = i.children; if (a.length) { + for (let s = 0; s < a.length; s++)r.push(a[s]) + } + } + } for (;i = o.pop();)e(i, n) + }(l, eC, a)), s.hierNode.modifier = -l.hierNode.prelim, NC(l, nC); let u = l; let h = l; let c = l; NC(l, (t) => { const e = t.getLayout().x; e < u.getLayout().x && (u = t), e > h.getLayout().x && (h = t), t.depth > c.depth && (c = t) }); const p = u === h ? 1 : a(u, h) / 2; const d = p - u.getLayout().x; let f = 0; let g = 0; let y = 0; let v = 0; if (i === 'radial') { + f = r / (h.getLayout().x + p + d), g = o / (c.depth - 1 || 1), NC(l, (t) => { y = (t.getLayout().x + d) * f, v = (t.depth - 1) * g; const e = rC(y, v); t.setLayout({ x: e.x, y: e.y, rawX: y, rawY: v }, !0) }) + } + else { const m = t.getOrient(); m === 'RL' || m === 'LR' ? (g = o / (h.getLayout().x + p + d), f = r / (c.depth - 1 || 1), NC(l, (t) => { v = (t.getLayout().x + d) * g, y = m === 'LR' ? (t.depth - 1) * f : r - (t.depth - 1) * f, t.setLayout({ x: y, y: v }, !0) })) : m !== 'TB' && m !== 'BT' || (f = r / (h.getLayout().x + p + d), g = o / (c.depth - 1 || 1), NC(l, (t) => { y = (t.getLayout().x + d) * f, v = m === 'TB' ? (t.depth - 1) * g : o - (t.depth - 1) * g, t.setLayout({ x: y, y: v }, !0) })) } + } + }(t, e)) + }) + } function zC(t) { t.eachSeriesByType('tree', (t) => { const e = t.getData(); e.tree.eachNode((t) => { const n = t.getModel().getModel('itemStyle').getItemStyle(); A(e.ensureUniqueItemVisual(t.dataIndex, 'style'), n) }) }) } const VC = ['treemapZoomToNode', 'treemapRender', 'treemapMove']; function BC(t) { const e = t.getData().tree; const n = {}; e.eachNode((e) => { for (var i = e; i && i.depth > 1;)i = i.parentNode; const r = ed(t.ecModel, i.name || `${i.dataIndex}`, n); e.setVisual('decal', r) }) } const FC = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.preventUsingHoverLayer = !0, n } return n(e, t), e.prototype.getInitialData = function (t, e) { const n = { name: t.name, children: t.data }; GC(n); let i = t.levels || []; const r = this.designatedVisualItemStyle = {}; const o = new dc({ itemStyle: r }, this, e); const a = z((i = t.levels = (function (t, e) { let n; let i; const r = ho(e.get('color')); const o = ho(e.get(['aria', 'decal', 'decals'])); if (r) { E(t = t || [], (t) => { let e = new dc(t); let r = e.get('color'); let o = e.get('decal'); (e.get(['itemStyle', 'color']) || r && 'none' !== r) && (n = !0), (e.get(['itemStyle', 'decal']) || o && 'none' !== o) && (i = !0) }); const a = t[0] || (t[0] = {}); return n || (a.color = r.slice()), !i && o && (a.decal = o.slice()), t } }(i, e))) || [], (t) => { return new dc(t, o, e) }, this); var s = AC.createTree(n, this, (t) => { t.wrapMethod('getItemModel', (t, e) => { const n = s.getNodeByDataIndex(e); const i = n ? a[n.depth] : null; return t.parentModel = i || o, t }) }); return s.data }, e.prototype.optionUpdated = function () { this.resetViewRoot() }, e.prototype.formatTooltip = function (t, e, n) { const i = this.getData(); const r = this.getRawValue(t); return Xf('nameValue', { name: i.getName(t), value: r }) }, e.prototype.getDataParams = function (e) { const n = t.prototype.getDataParams.apply(this, arguments); const i = this.getData().tree.getNodeByDataIndex(e); return n.treeAncestors = OC(i, this), n.treePathInfo = n.treeAncestors, n }, e.prototype.setLayoutInfo = function (t) { this.layoutInfo = this.layoutInfo || {}, A(this.layoutInfo, t) }, e.prototype.mapIdToIndex = function (t) { let e = this._idIndexMap; e || (e = this._idIndexMap = ft(), this._idIndexMapCount = 0); let n = e.get(t); return n == null && e.set(t, n = this._idIndexMapCount++), n }, e.prototype.getViewRoot = function () { return this._viewRoot }, e.prototype.resetViewRoot = function (t) { t ? this._viewRoot = t : t = this._viewRoot; const e = this.getRawData().tree.root; t && (t === e || e.contains(t)) || (this._viewRoot = e) }, e.prototype.enableAriaDecal = function () { BC(this) }, e.type = 'series.treemap', e.layoutMode = 'box', e.defaultOption = { progressive: 0, left: 'center', top: 'middle', width: '80%', height: '80%', sort: !0, clipWindow: 'origin', squareRatio: 0.5 * (1 + Math.sqrt(5)), leafDepth: null, drillDownIcon: '▶', zoomToNodeRatio: 0.1024, roam: !0, nodeClick: 'zoomToNode', animation: !0, animationDurationUpdate: 900, animationEasing: 'quinticInOut', breadcrumb: { show: !0, height: 22, left: 'center', top: 'bottom', emptyItemWidth: 25, itemStyle: { color: 'rgba(0,0,0,0.7)', textStyle: { color: '#fff' } } }, label: { show: !0, distance: 0, padding: 5, position: 'inside', color: '#fff', overflow: 'truncate' }, upperLabel: { show: !1, position: [0, '50%'], height: 20, overflow: 'truncate', verticalAlign: 'middle' }, itemStyle: { color: null, colorAlpha: null, colorSaturation: null, borderWidth: 0, gapWidth: 0, borderColor: '#fff', borderColorSaturation: null }, emphasis: { upperLabel: { show: !0, position: [0, '50%'], overflow: 'truncate', verticalAlign: 'middle' } }, visualDimension: 0, visualMin: null, visualMax: null, color: [], colorAlpha: null, colorSaturation: null, colorMappingBy: 'index', visibleMin: 10, childrenVisibleMin: null, levels: [] }, e }(sg)); function GC(t) { let e = 0; E(t.children, (t) => { GC(t); let n = t.value; Y(n) && (n = n[0]), e += n }); let n = t.value; Y(n) && (n = n[0]), (n == null || isNaN(n)) && (n = e), n < 0 && (n = 0), Y(t.value) ? t.value[0] = n : t.value = n } const WC = (function () { function t(t) { this.group = new Cr(), t.add(this.group) } return t.prototype.render = function (t, e, n, i) { const r = t.getModel('breadcrumb'); const o = this.group; if (o.removeAll(), r.get('show') && n) { const a = r.getModel('itemStyle'); const s = a.getModel('textStyle'); const l = { pos: { left: r.get('left'), right: r.get('right'), top: r.get('top'), bottom: r.get('bottom') }, box: { width: e.getWidth(), height: e.getHeight() }, emptyItemWidth: r.get('emptyItemWidth'), totalWidth: 0, renderList: [] }; this._prepare(n, l, s), this._renderContent(t, l, a, s, i), _p(o, l.pos, l.box) } }, t.prototype._prepare = function (t, e, n) { for (let i = t; i; i = i.parentNode) { const r = xo(i.getModel().get('name'), ''); const o = n.getTextRect(r); const a = Math.max(o.width + 16, e.emptyItemWidth); e.totalWidth += a + 8, e.renderList.push({ node: i, text: r, width: a }) } }, t.prototype._renderContent = function (t, e, n, i, r) { for (var o, a, s, l, u, h, c, p, d, f = 0, g = e.emptyItemWidth, y = t.get(['breadcrumb', 'height']), v = (o = e.pos, l = (a = e.box).width, u = a.height, h = Er(o.left, l), c = Er(o.top, u), p = Er(o.right, l), d = Er(o.bottom, u), (isNaN(h) || isNaN(Number.parseFloat(o.left))) && (h = 0), (isNaN(p) || isNaN(Number.parseFloat(o.right))) && (p = l), (isNaN(c) || isNaN(Number.parseFloat(o.top))) && (c = 0), (isNaN(d) || isNaN(Number.parseFloat(o.bottom))) && (d = u), s = ip(s || 0), { width: Math.max(p - h - s[1] - s[3], 0), height: Math.max(d - c - s[0] - s[2], 0) }), m = e.totalWidth, x = e.renderList, _ = x.length - 1; _ >= 0; _--) { const b = x[_]; const w = b.node; let S = b.width; let M = b.text; m > v.width && (m -= S - g, S = g, M = null); const I = new Pu({ shape: { points: HC(f, 0, S, y, _ === x.length - 1, _ === 0) }, style: k(n.getItemStyle(), { lineJoin: 'bevel' }), textContent: new ks({ style: { text: M, fill: i.getTextColor(), font: i.getFont() } }), textConfig: { position: 'inside' }, z2: 1e5, onclick: H(r, w) }); I.disableLabelAnimation = !0, this.group.add(I), YC(I, t, w), f += S + 8 } }, t.prototype.remove = function () { this.group.removeAll() }, t }()); function HC(t, e, n, i, r, o) { const a = [[r ? t : t - 5, e], [t + n, e], [t + n, e + i], [r ? t : t - 5, e + i]]; return !o && a.splice(2, 0, [t + n + 5, e + i / 2]), !r && a.push([t, e + i / 2]), a } function YC(t, e, n) { Hs(t).eventData = { componentType: 'series', componentSubType: 'treemap', componentIndex: e.componentIndex, seriesIndex: e.seriesIndex, seriesName: e.name, seriesType: 'treemap', selfType: 'breadcrumb', nodeData: { dataIndex: n && n.dataIndex, name: n && n.name }, treePathInfo: n && OC(n, e) } } const UC = (function () { function t() { this._storage = [], this._elExistsMap = {} } return t.prototype.add = function (t, e, n, i, r) { return !this._elExistsMap[t.id] && (this._elExistsMap[t.id] = !0, this._storage.push({ el: t, target: e, duration: n, delay: i, easing: r }), !0) }, t.prototype.finished = function (t) { return this._finishedCallback = t, this }, t.prototype.start = function () { for (var t = this, e = this._storage.length, n = function () { --e <= 0 && (t._storage.length = 0, t._elExistsMap = {}, t._finishedCallback && t._finishedCallback()) }, i = 0, r = this._storage.length; i < r; i++) { const o = this._storage[i]; o.el.animateTo(o.target, { duration: o.duration, delay: o.delay, easing: o.easing, setToFinal: !0, done: n, aborted: n }) } return this }, t }()); const XC = Cr; const ZC = Cs; const qC = 'upperLabel'; const KC = Wo([['fill', 'color'], ['stroke', 'strokeColor'], ['lineWidth', 'strokeWidth'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]); const $C = function (t) { const e = KC(t); return e.stroke = e.fill = e.lineWidth = null, e }; const JC = So(); const QC = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n._state = 'ready', n._storage = { nodeGroup: [], background: [], content: [] }, n } return n(e, t), e.prototype.render = function (t, e, n, i) { if (!(P(e.findComponents({ mainType: 'series', subType: 'treemap', query: i }), t) < 0)) { this.seriesModel = t, this.api = n, this.ecModel = e; const r = kC(i, ['treemapZoomToNode', 'treemapRootToNode'], t); const o = i && i.type; const a = t.layoutInfo; const s = !this._oldTree; const l = this._storage; const u = o === 'treemapRootToNode' && r && l ? { rootNodeGroup: l.nodeGroup[r.node.getRawIndex()], direction: i.direction } : null; const h = this._giveContainerGroup(a); const c = t.get('animation'); const p = this._doRender(h, t, u); !c || s || o && o !== 'treemapZoomToNode' && o !== 'treemapRootToNode' ? p.renderFinally() : this._doAnimation(h, p, t, u), this._resetController(n), this._renderBreadcrumb(t, n, r) } }, e.prototype._giveContainerGroup = function (t) { let e = this._containerGroup; return e || (e = this._containerGroup = new XC(), this._initEvents(e), this.group.add(e)), e.x = t.x, e.y = t.y, e }, e.prototype._doRender = function (t, e, n) { + const i = e.getData().tree; const r = this._oldTree; const o = { nodeGroup: [], background: [], content: [] }; const a = { nodeGroup: [], background: [], content: [] }; const s = this._storage; const l = []; function u(t, i, r, u) { + return (function (t, e, n, i, r, o, a, s, l, u) { + if (a) { + var h = a.getLayout(); const c = t.getData(); var p = a.getModel(); if (c.setItemGraphicEl(a.dataIndex, null), h && h.isInView) { + const d = h.width; const f = h.height; const g = h.borderWidth; var y = h.invisible; var v = a.getRawIndex(); var m = s && s.getRawIndex(); const x = a.viewChildren; const _ = h.upperHeight; const b = x && x.length; const w = p.getModel('itemStyle'); const S = p.getModel(['emphasis', 'itemStyle']); const M = p.getModel(['blur', 'itemStyle']); const I = p.getModel(['select', 'itemStyle']); const T = w.get('borderRadius') || 0; const C = G('nodeGroup', XC); if (C) { + if (l.add(C), C.x = h.x || 0, C.y = h.y || 0, C.markRedraw(), JC(C).nodeWidth = d, JC(C).nodeHeight = f, h.isAboveViewRoot) + return C; const D = G('background', ZC, u, 20); D && (function (e, n, i) { + let r = Hs(n); if (r.dataIndex = a.dataIndex, r.seriesIndex = t.seriesIndex, n.setShape({ x: 0, y: 0, width: d, height: f, r: T }), y) { + V(n) +} else { + n.invisible = !1; const o = a.getVisual('style'); const s = o.stroke; const l = $C(w); l.fill = s; const u = KC(S); u.fill = S.get('borderColor'); const h = KC(M); h.fill = M.get('borderColor'); const c = KC(I); if (c.fill = I.get('borderColor'), i) { const p = d - 2 * g; B(n, s, o.opacity, { x: g, y: 0, width: p, height: _ }) } + else { + n.removeTextContent() + }n.setStyle(l), n.ensureState('emphasis').style = u, n.ensureState('blur').style = h, n.ensureState('select').style = c, vl(n) + }e.add(n) + }(C, D, b && h.upperLabelHeight)); const k = p.getModel('emphasis'); const L = k.get('focus'); const P = k.get('blurScope'); const O = k.get('disabled'); const R = L === 'ancestor' ? a.getAncestorsIndices() : L === 'descendant' ? a.getDescendantIndices() : L; if (b) { + Fl(C) && Bl(C, !1), D && (Bl(D, !O), c.setItemGraphicEl(a.dataIndex, D), Nl(D, R, P)) + } + else { + const N = G('content', ZC, u, 30); N && (function (e, n) { + let i = Hs(n); i.dataIndex = a.dataIndex, i.seriesIndex = t.seriesIndex; const r = Math.max(d - 2 * g, 0); const o = Math.max(f - 2 * g, 0); if (n.culling = !0, n.setShape({ x: g, y: g, width: r, height: o, r: T }), y) { + V(n) +} else { n.invisible = !1; const s = a.getVisual('style'); const l = s.fill; const u = $C(w); u.fill = l, u.decal = s.decal; const h = KC(S); const c = KC(M); const p = KC(I); B(n, l, s.opacity, null), n.setStyle(u), n.ensureState('emphasis').style = h, n.ensureState('blur').style = c, n.ensureState('select').style = p, vl(n) }e.add(n) + }(C, N)), D.disableMorphing = !0, D && Fl(D) && Bl(D, !1), Bl(C, !O), c.setItemGraphicEl(a.dataIndex, C), Nl(C, R, P) + } return C + } + } + } function V(t) { !t.invisible && o.push(t) } function B(e, n, i, r) { const o = p.getModel(r ? qC : 'label'); const s = xo(p.get('name'), null); const l = o.getShallow('show'); Hh(e, Yh(p, r ? qC : 'label'), { defaultText: l ? s : null, inheritColor: n, defaultOpacity: i, labelFetcher: t, labelDataIndex: a.dataIndex }); const u = e.getTextContent(); if (u) { const c = u.style; const d = st(c.padding || 0); r && (e.setTextConfig({ layoutRect: r }), u.disableLabelLayout = !0), u.beforeUpdate = function () { const t = Math.max((r ? r.width : e.shape.width) - d[1] - d[3], 0); const n = Math.max((r ? r.height : e.shape.height) - d[0] - d[2], 0); c.width === t && c.height === n || u.setStyle({ width: t, height: n }) }, c.truncateMinChar = 2, c.lineOverflow = 'truncate', F(c, r, h); const f = u.getState('emphasis'); F(f ? f.style : null, r, h) } } function F(e, n, i) { const r = e ? e.text : null; if (!n && i.isLeafRoot && r != null) { const o = t.get('drillDownIcon', !0); e.text = o ? `${o} ${r}` : r } } function G(t, i, o, a) { let s = m != null && n[t][m]; const l = r[t]; return s ? (n[t][m] = null, (function (t, e) { const n = t[v] = {}; e instanceof XC ? (n.oldX = e.x, n.oldY = e.y) : n.oldShape = A({}, e.shape) }(l, s))) : y || ((s = new i()) instanceof da && (s.z2 = (function (t, e) { return 100 * t + e }(o, a))), H(l, s)), e[t][v] = s } function H(t, e) { const n = t[v] = {}; const o = a.parentNode; const s = e instanceof Cr; if (o && (!i || i.direction === 'drillDown')) { let l = 0; let u = 0; const h = r.background[o.getRawIndex()]; !i && h && h.oldShape && (l = h.oldShape.width, u = h.oldShape.height), s ? (n.oldX = 0, n.oldY = u) : n.oldShape = { x: l, y: u, width: 0, height: 0 } }n.fadein = !s } + }(e, a, s, n, o, l, t, i, r, u)) + }!(function t(e, n, i, r, o) { function a(t) { return t.getId() } function s(a, s) { const l = a != null ? e[a] : null; const h = s != null ? n[s] : null; const c = u(l, h, i, o); c && t(l && l.viewChildren || [], h && h.viewChildren || [], c, r, o + 1) }r ? (n = e, E(e, (t, e) => { !t.isRemoved() && s(e, e) })) : new Im(n, e, a, a).add(s).update(s).remove(H(s, null)).execute() }(i.root ? [i.root] : [], r && r.root ? [r.root] : [], t, i === r || !r, 0)); const h = (function (t) { const e = { nodeGroup: [], background: [], content: [] }; return t && E(t, (t, n) => { let i = e[n]; E(t, (t) =>{ t && (i.push(t), JC(t).willDelete = !0) }) }), e }(s)); return this._oldTree = i, this._storage = a, { lastsForAnimation: o, willDeleteEls: h, renderFinally() { E(h, (t) => { E(t, (t) => { t.parent && t.parent.remove(t) }) }), E(l, (t) => { t.invisible = !0, t.dirty() }) } } + }, e.prototype._doAnimation = function (t, e, n, i) { + const r = n.get('animationDurationUpdate'); const o = n.get('animationEasing'); const a = (U(r) ? 0 : r) || 0; const s = (U(o) ? null : o) || 'cubicOut'; const l = new UC(); E(e.willDeleteEls, (t, e) => { + E(t, (t, n) => { + if (!t.invisible) { + let r; const o = t.parent; const u = JC(o); if (i && i.direction === 'drillDown') { + r = o === i.rootNodeGroup ? { shape: { x: 0, y: 0, width: u.nodeWidth, height: u.nodeHeight }, style: { opacity: 0 } } : { style: { opacity: 0 } } +} else { let h = 0; let c = 0; u.willDelete || (h = u.nodeWidth / 2, c = u.nodeHeight / 2), r = e === 'nodeGroup' ? { x: h, y: c, style: { opacity: 0 } } : { shape: { x: h, y: c, width: 0, height: 0 }, style: { opacity: 0 } } }r && l.add(t, r, a, 0, s) + } + }) + }), E(this._storage, (t, n) => { E(t, (t, i) => { const r = e.lastsForAnimation[n][i]; const o = {}; r && (t instanceof Cr ? r.oldX != null && (o.x = t.x, o.y = t.y, t.x = r.oldX, t.y = r.oldY) : (r.oldShape && (o.shape = A({}, t.shape), t.setShape(r.oldShape)), r.fadein ? (t.setStyle('opacity', 0), o.style = { opacity: 1 }) : t.style.opacity !== 1 && (o.style = { opacity: 1 })), l.add(t, o, a, 0, s)) }) }, this), this._state = 'animating', l.finished(W(function () { this._state = 'ready', e.renderFinally() }, this)).start() + }, e.prototype._resetController = function (t) { let e = this._controller; e || ((e = this._controller = new kI(t.getZr())).enable(this.seriesModel.get('roam')), e.on('pan', W(this._onPan, this)), e.on('zoom', W(this._onZoom, this))); const n = new sr(0, 0, t.getWidth(), t.getHeight()); e.setPointerChecker((t, e, i) => { return n.contain(e, i) }) }, e.prototype._clearController = function () { let t = this._controller; t && (t.dispose(), t = null) }, e.prototype._onPan = function (t) { + if (this._state !== 'animating' && (Math.abs(t.dx) > 3 || Math.abs(t.dy) > 3)) { + const e = this.seriesModel.getData().tree.root; if (!e) + return; const n = e.getLayout(); if (!n) + return; this.api.dispatchAction({ type: 'treemapMove', from: this.uid, seriesId: this.seriesModel.id, rootRect: { x: n.x + t.dx, y: n.y + t.dy, width: n.width, height: n.height } }) + } + }, e.prototype._onZoom = function (t) { + let e = t.originX; let n = t.originY; if (this._state !== 'animating') { + const i = this.seriesModel.getData().tree.root; if (!i) + return; const r = i.getLayout(); if (!r) + return; const o = new sr(r.x, r.y, r.width, r.height); const a = this.seriesModel.layoutInfo; const s = [1, 0, 0, 1, 0, 0]; Ei(s, s, [-(e -= a.x), -(n -= a.y)]), Vi(s, s, [t.scale, t.scale]), Ei(s, s, [e, n]), o.applyTransform(s), this.api.dispatchAction({ type: 'treemapRender', from: this.uid, seriesId: this.seriesModel.id, rootRect: { x: o.x, y: o.y, width: o.width, height: o.height } }) + } + }, e.prototype._initEvents = function (t) { + const e = this; t.on('click', (t) => { + if (e._state === 'ready') { + const n = e.seriesModel.get('nodeClick', !0); if (n) { + const i = e.findTarget(t.offsetX, t.offsetY); if (i) { + const r = i.node; if (r.getLayout().isLeafRoot) { + e._rootToNode(i) + } + else if (n === 'zoomToNode') { + e._zoomToNode(i) + } + else if (n === 'link') { const o = r.hostTree.data.getItemModel(r.dataIndex); const a = o.get('link', !0); const s = o.get('target', !0) || 'blank'; a && dp(a, s) } + } + } + } + }, this) + }, e.prototype._renderBreadcrumb = function (t, e, n) { const i = this; n || (n = t.get('leafDepth', !0) != null ? { node: t.getViewRoot() } : this.findTarget(e.getWidth() / 2, e.getHeight() / 2)) || (n = { node: t.getData().tree.root }), (this._breadcrumb || (this._breadcrumb = new WC(this.group))).render(t, e, n.node, (e) => { i._state !== 'animating' && (PC(t.getViewRoot(), e) ? i._rootToNode({ node: e }) : i._zoomToNode({ node: e })) }) }, e.prototype.remove = function () { this._clearController(), this._containerGroup && this._containerGroup.removeAll(), this._storage = { nodeGroup: [], background: [], content: [] }, this._state = 'ready', this._breadcrumb && this._breadcrumb.remove() }, e.prototype.dispose = function () { this._clearController() }, e.prototype._zoomToNode = function (t) { this.api.dispatchAction({ type: 'treemapZoomToNode', from: this.uid, seriesId: this.seriesModel.id, targetNode: t.node }) }, e.prototype._rootToNode = function (t) { this.api.dispatchAction({ type: 'treemapRootToNode', from: this.uid, seriesId: this.seriesModel.id, targetNode: t.node }) }, e.prototype.findTarget = function (t, e) { + let n; return this.seriesModel.getViewRoot().eachNode({ attr: 'viewChildren', order: 'preorder' }, function (i) { + const r = this._storage.background[i.getRawIndex()]; if (r) { + const o = r.transformCoordToLocal(t, e); const a = r.shape; if (!(a.x <= o[0] && o[0] <= a.x + a.width && a.y <= o[1] && o[1] <= a.y + a.height)) + return !1; n = { node: i, offsetX: o[0], offsetY: o[1] } + } + }, this), n + }, e.type = 'treemap', e + }(xg)); const tD = E; const eD = q; const nD = -1; const iD = (function () { + function t(e) { const n = e.mappingMethod; const i = e.type; const r = this.option = T(e); this.type = i, this.mappingMethod = n, this._normalizeData = dD[n]; const o = t.visualHandlers[i]; this.applyVisual = o.applyVisual, this.getColorMapper = o.getColorMapper, this._normalizedToVisual = o._normalizedToVisual[n], n === 'piecewise' ? (rD(r), (function (t) { const e = t.pieceList; t.hasSpecialVisual = !1, E(e, (e, n) => { e.originIndex = n, e.visual != null && (t.hasSpecialVisual = !0) }) }(r))) : n === 'category' ? r.categories ? (function (t) { const e = t.categories; const n = t.categoryMap = {}; let i = t.visual; if (tD(e, (t, e) => { n[t] = e }), !Y(i)) { const r = []; q(i) ? tD(i, (t, e) => { const i = n[e]; r[i != null ? i : nD] = t }) : r[-1] = i, i = pD(t, r) } for (let o = e.length - 1; o >= 0; o--)i[o] == null && (delete n[e[o]], e.pop()) }(r)) : rD(r, !0) : (lt(n !== 'linear' || r.dataExtent), rD(r)) } return t.prototype.mapValueToVisual = function (t) { const e = this._normalizeData(t); return this._normalizedToVisual(e, t) }, t.prototype.getNormalizer = function () { return W(this._normalizeData, this) }, t.listVisualTypes = function () { return G(t.visualHandlers) }, t.isValidType = function (e) { return t.visualHandlers.hasOwnProperty(e) }, t.eachVisual = function (t, e, n) { q(t) ? E(t, e, n) : e.call(n, t) }, t.mapVisual = function (e, n, i) { let r; let o = Y(e) ? [] : q(e) ? {} : (r = !0, null); return t.eachVisual(e, (t, e) => { const a = n.call(i, t, e); r ? o = a : o[e] = a }), o }, t.retrieveVisuals = function (e) { let n; const i = {}; return e && tD(t.visualHandlers, (t, r) => { e.hasOwnProperty(r) && (i[r] = e[r], n = !0) }), n ? i : null }, t.prepareVisualTypes = function (t) { + if (Y(t)) { + t = t.slice() + } + else { + if (!eD(t)) + return []; const e = []; tD(t, (t, n) => { e.push(n) }), t = e + } return t.sort((t, e) => { return e === 'color' && t !== 'color' && t.indexOf('color') === 0 ? 1 : -1 }), t + }, t.dependsOn = function (t, e) { return e === 'color' ? !(!t || t.indexOf(e) !== 0) : t === e }, t.findPieceIndex = function (t, e, n) { + for (var i, r = 1 / 0, o = 0, a = e.length; o < a; o++) { + const s = e[o].value; if (s != null) { + if (s === t || X(s) && s === `${t}`) + return o; n && c(s, o) + } + } for (o = 0, a = e.length; o < a; o++) { + const l = e[o]; const u = l.interval; const h = l.close; if (u) { + if (u[0] === -1 / 0) { + if (fD(h[1], t, u[1])) + return o + } + else if (u[1] === 1 / 0) { + if (fD(h[0], u[0], t)) + return o + } + else if (fD(h[0], u[0], t) && fD(h[1], t, u[1])) { + return o + } n && c(u[0], o), n && c(u[1], o) + } + } if (n) + return t === 1 / 0 ? e.length - 1 : t === -1 / 0 ? 0 : i; function c(e, n) { const o = Math.abs(e - t); o < r && (r = o, i = n) } + }, t.visualHandlers = { color: { applyVisual: sD('color'), getColorMapper() { const t = this.option; return W(t.mappingMethod === 'category' ? function (t, e) { return !e && (t = this._normalizeData(t)), lD.call(this, t) } : function (e, n, i) { const r = !!i; return !n && (e = this._normalizeData(e)), i = Mn(e, t.parsedVisual, i), r ? i : kn(i, 'rgba') }, this) }, _normalizedToVisual: { linear(t) { return kn(Mn(t, this.option.parsedVisual), 'rgba') }, category: lD, piecewise(t, e) { let n = cD.call(this, e); return n == null && (n = kn(Mn(t, this.option.parsedVisual), 'rgba')), n }, fixed: uD } }, colorHue: oD((t, e) => { return Dn(t, e) }), colorSaturation: oD((t, e) => { return Dn(t, null, e) }), colorLightness: oD((t, e) => { return Dn(t, null, null, e) }), colorAlpha: oD((t, e) => { return An(t, e) }), decal: { applyVisual: sD('decal'), _normalizedToVisual: { linear: null, category: lD, piecewise: null, fixed: null } }, opacity: { applyVisual: sD('opacity'), _normalizedToVisual: hD([0, 1]) }, liftZ: { applyVisual: sD('liftZ'), _normalizedToVisual: { linear: uD, category: uD, piecewise: uD, fixed: uD } }, symbol: { applyVisual(t, e, n) { n('symbol', this.mapValueToVisual(t)) }, _normalizedToVisual: { linear: aD, category: lD, piecewise(t, e) { let n = cD.call(this, e); return n == null && (n = aD.call(this, t)), n }, fixed: uD } }, symbolSize: { applyVisual: sD('symbolSize'), _normalizedToVisual: hD([0, 1]) } }, t + }()); function rD(t, e) { const n = t.visual; const i = []; q(n) ? tD(n, (t) => { i.push(t) }) : n != null && i.push(n), e || i.length !== 1 || { color: 1, symbol: 1 }.hasOwnProperty(t.type) || (i[1] = i[0]), pD(t, i) } function oD(t) { return { applyVisual(e, n, i) { const r = this.mapValueToVisual(e); i('color', t(n('color'), r)) }, _normalizedToVisual: hD([0, 1]) } } function aD(t) { const e = this.option.visual; return e[Math.round(Nr(t, [0, 1], [0, e.length - 1], !0))] || {} } function sD(t) { return function (e, n, i) { i(t, this.mapValueToVisual(e)) } } function lD(t) { const e = this.option.visual; return e[this.option.loop && t !== nD ? t % e.length : t] } function uD() { return this.option.visual[0] } function hD(t) { return { linear(e) { return Nr(e, t, this.option.visual, !0) }, category: lD, piecewise(e, n) { let i = cD.call(this, n); return i == null && (i = Nr(e, t, this.option.visual, !0)), i }, fixed: uD } } function cD(t) { + const e = this.option; const n = e.pieceList; if (e.hasSpecialVisual) { + const i = n[iD.findPieceIndex(t, n)]; if (i && i.visual) + return i.visual[this.type] + } + } function pD(t, e) { return t.visual = e, t.type === 'color' && (t.parsedVisual = z(e, (t) => { return bn(t) || [0, 0, 0, 1] })), e } var dD = { linear(t) { return Nr(t, this.option.dataExtent, [0, 1], !0) }, piecewise(t) { + const e = this.option.pieceList; const n = iD.findPieceIndex(t, e, !0); if (n != null) + return Nr(n, [0, e.length - 1], [0, 1], !0) + }, category(t) { const e = this.option.categories ? this.option.categoryMap[t] : t; return e == null ? nD : e }, fixed: xt }; function fD(t, e, n) { return t ? e <= n : e < n } const gD = So(); const yD = { seriesType: 'treemap', reset(t) { const e = t.getData().tree.root; e.isRemoved() || vD(e, {}, t.getViewRoot().getAncestors(), t) } }; function vD(t, e, n, i) { + const r = t.getModel(); const o = t.getLayout(); const a = t.hostTree.data; if (o && !o.invisible && o.isInView) { + let s; const l = r.getModel('itemStyle'); const u = (function (t, e, n) { const i = A({}, e); const r = n.designatedVisualItemStyle; return E(['color', 'colorAlpha', 'colorSaturation'], (n) => { r[n] = e[n]; const o = t.get(n); r[n] = null, o != null && (i[n] = o) }), i }(l, e, i)); const h = a.ensureUniqueItemVisual(t.dataIndex, 'style'); let c = l.get('borderColor'); const p = l.get('borderColorSaturation'); p != null && (c = (function (t, e) { return e != null ? Dn(e, null, null, t) : null }(p, s = mD(u)))), h.stroke = c; const d = t.viewChildren; if (d && d.length) { const f = (function (t, e, n, i, r, o) { if (o && o.length) { const a = _D(e, 'color') || r.color != null && r.color !== 'none' && (_D(e, 'colorAlpha') || _D(e, 'colorSaturation')); if (a) { const s = e.get('visualMin'); const l = e.get('visualMax'); const u = n.dataExtent.slice(); s != null && s < u[0] && (u[0] = s), l != null && l > u[1] && (u[1] = l); const h = e.get('colorMappingBy'); const c = { type: a.name, dataExtent: u, visual: a.range }; c.type !== 'color' || h !== 'index' && h !== 'id' ? c.mappingMethod = 'linear' : (c.mappingMethod = 'category', c.loop = !0); const p = new iD(c); return gD(p).drColorMappingBy = h, p } } }(0, r, o, 0, u, d)); E(d, (t, e) => { if (t.depth >= n.length || t === n[t.depth]) { const o = (function (t, e, n, i, r, o) { const a = A({}, e); if (r) { const s = r.type; const l = s === 'color' && gD(r).drColorMappingBy; const u = l === 'index' ? i : l === 'id' ? o.mapIdToIndex(n.getId()) : n.getValue(t.get('visualDimension')); a[s] = r.mapValueToVisual(u) } return a }(r, u, t, e, f, i)); vD(t, o, n, i) } }) } + else { + s = mD(u), h.fill = s + } + } + } function mD(t) { let e = xD(t, 'color'); if (e) { const n = xD(t, 'colorAlpha'); const i = xD(t, 'colorSaturation'); return i && (e = Dn(e, null, null, i)), n && (e = An(e, n)), e } } function xD(t, e) { + const n = t[e]; if (n != null && n !== 'none') + return n + } function _D(t, e) { const n = t.get(e); return Y(n) && n.length ? { name: e, range: n } : null } const bD = Math.max; const wD = Math.min; const SD = it; const MD = E; const ID = ['itemStyle', 'borderWidth']; const TD = ['itemStyle', 'gapWidth']; const CD = ['upperLabel', 'show']; const DD = ['upperLabel', 'height']; const AD = { seriesType: 'treemap', reset(t, e, n, i) { + const r = n.getWidth(); const o = n.getHeight(); const a = t.option; const s = xp(t.getBoxLayoutParams(), { width: n.getWidth(), height: n.getHeight() }); const l = a.size || []; const u = Er(SD(s.width, l[0]), r); const h = Er(SD(s.height, l[1]), o); const c = i && i.type; const p = kC(i, ['treemapZoomToNode', 'treemapRootToNode'], t); const d = c === 'treemapRender' || c === 'treemapMove' ? i.rootRect : null; const f = t.getViewRoot(); const g = LC(f); if (c !== 'treemapMove') { + const y = c === 'treemapZoomToNode' + ? (function (t, e, n, i, r) { + let o; let a = (e || {}).node; const s = [i, r]; if (!a || a === n) + return s; for (var l = i * r, u = l * t.option.zoomToNodeRatio; o = a.parentNode;) { + for (var h = 0, c = o.children, p = 0, d = c.length; p < d; p++)h += c[p].getValue(); const f = a.getValue(); if (f === 0) + return s; u *= h / f; const g = o.getModel(); const y = g.get(ID); (u += 4 * y * y + (3 * y + Math.max(y, RD(g))) * u ** 0.5) > Yr && (u = Yr), a = o + }u < l && (u = l); const v = (u / l) ** .5; return [i * v, r * v] + }(t, p, f, u, h)) + : d ? [d.width, d.height] : [u, h]; let v = a.sort; v && v !== 'asc' && v !== 'desc' && (v = 'desc'); const m = { squareRatio: a.squareRatio, sort: v, leafDepth: a.leafDepth }; f.hostTree.clearLayouts(); let x = { x: 0, y: 0, width: y[0], height: y[1], area: y[0] * y[1] }; f.setLayout(x), kD(f, m, !1, 0), x = f.getLayout(), MD(g, (t, e) => { const n = (g[e + 1] || f).getValue(); t.setLayout(A({ dataExtent: [n, n], borderWidth: 0, upperHeight: 0 }, x)) }) + } const _ = t.getData().tree.root; _.setLayout((function (t, e, n) { + if (e) + return { x: e.x, y: e.y }; const i = { x: 0, y: 0 }; if (!n) + return i; const r = n.node; const o = r.getLayout(); if (!o) + return i; for (var a = [o.width / 2, o.height / 2], s = r; s;) { const l = s.getLayout(); a[0] += l.x, a[1] += l.y, s = s.parentNode } return { x: t.width / 2 - a[0], y: t.height / 2 - a[1] } + }(s, d, p)), !0), t.setLayoutInfo(s), OD(_, new sr(-s.x, -s.y, r, o), g, f, 0) + } }; function kD(t, e, n, i) { + let r, o; if (!t.isRemoved()) { + const a = t.getLayout(); r = a.width, o = a.height; const s = t.getModel(); const l = s.get(ID); const u = s.get(TD) / 2; const h = RD(s); const c = Math.max(l, h); const p = l - u; const d = c - u; t.setLayout({ borderWidth: l, upperHeight: c, upperLabelHeight: h }, !0); const f = (r = bD(r - 2 * p, 0)) * (o = bD(o - p - d, 0)); const g = (function (t, e, n, i, r, o) { + let a = t.children || []; let s = i.sort; s !== 'asc' && s !== 'desc' && (s = null); const l = i.leafDepth != null && i.leafDepth <= o; if (r && !l) + return t.viewChildren = []; !(function (t, e) { e && t.sort((t, n) => { const i = e === 'asc' ? t.getValue() - n.getValue() : n.getValue() - t.getValue(); return i === 0 ? e === 'asc' ? t.dataIndex - n.dataIndex : n.dataIndex - t.dataIndex : i }) }(a = B(a, (t) => { return !t.isRemoved() }), s)); const u = (function (t, e, n) { for (var i = 0, r = 0, o = e.length; r < o; r++)i += e[r].getValue(); let a; const s = t.get('visualDimension'); return e && e.length ? s === 'value' && n ? (a = [e[e.length - 1].getValue(), e[0].getValue()], n === 'asc' && a.reverse()) : (a = [1 / 0, -1 / 0], MD(e, (t) => { const e = t.getValue(s); e < a[0] && (a[0] = e), e > a[1] && (a[1] = e) })) : a = [Number.NaN, Number.NaN], { sum: i, dataExtent: a } }(e, a, s)); if (u.sum === 0) + return t.viewChildren = []; if (u.sum = (function (t, e, n, i, r) { + if (!i) + return n; for (var o = t.get('visibleMin'), a = r.length, s = a, l = a - 1; l >= 0; l--) { const u = r[i === 'asc' ? a - l - 1 : l].getValue(); u / n * e < o && (s = l, n -= u) } return i === 'asc' ? r.splice(0, a - s) : r.splice(s, a - s), n + }(e, n, u.sum, s, a)), u.sum === 0) { + return t.viewChildren = [] + } for (let h = 0, c = a.length; h < c; h++) { const p = a[h].getValue() / u.sum * n; a[h].setLayout({ area: p }) } return l && (a.length && t.setLayout({ isLeafRoot: !0 }, !0), a.length = 0), t.viewChildren = a, t.setLayout({ dataExtent: u.dataExtent }, !0), a + }(t, s, f, e, n, i)); if (g.length) { const y = { x: p, y: d, width: r, height: o }; let v = wD(r, o); let m = 1 / 0; const x = []; x.area = 0; for (var _ = 0, b = g.length; _ < b;) { const w = g[_]; x.push(w), x.area += w.getLayout().area; const S = LD(x, v, e.squareRatio); S <= m ? (_++, m = S) : (x.area -= x.pop().getLayout().area, PD(x, v, y, u, !1), v = wD(y.width, y.height), x.length = x.area = 0, m = 1 / 0) } if (x.length && PD(x, v, y, u, !0), !n) { const M = s.get('childrenVisibleMin'); M != null && f < M && (n = !0) } for (_ = 0, b = g.length; _ < b; _++)kD(g[_], e, n, i + 1) } + } + } function LD(t, e, n) { for (var i = 0, r = 1 / 0, o = 0, a = void 0, s = t.length; o < s; o++)(a = t[o].getLayout().area) && (a < r && (r = a), a > i && (i = a)); const l = t.area * t.area; const u = e * e * n; return l ? bD(u * i / l, l / (u * r)) : 1 / 0 } function PD(t, e, n, i, r) { const o = e === n.width ? 0 : 1; const a = 1 - o; const s = ['x', 'y']; const l = ['width', 'height']; let u = n[s[o]]; let h = e ? t.area / e : 0; (r || h > n[l[a]]) && (h = n[l[a]]); for (let c = 0, p = t.length; c < p; c++) { const d = t[c]; const f = {}; const g = h ? d.getLayout().area / h : 0; const y = f[l[a]] = bD(h - 2 * i, 0); const v = n[s[o]] + n[l[o]] - u; const m = c === p - 1 || v < g ? v : g; const x = f[l[o]] = bD(m - 2 * i, 0); f[s[a]] = n[s[a]] + wD(i, y / 2), f[s[o]] = u + wD(i, x / 2), u += m, d.setLayout(f, !0) }n[s[a]] += h, n[l[a]] -= h } function OD(t, e, n, i, r) { const o = t.getLayout(); const a = n[r]; const s = a && a === t; if (!(a && !s || r === n.length && t !== i)) { t.setLayout({ isInView: !0, invisible: !s && !e.intersect(o), isAboveViewRoot: s }, !0); const l = new sr(e.x - o.x, e.y - o.y, e.width, e.height); MD(t.viewChildren || [], (t) => { OD(t, l, n, i, r + 1) }) } } function RD(t) { return t.get(CD) ? t.get(DD) : 0 } function ND(t) { + const e = t.findComponents({ mainType: 'legend' }); e && e.length && t.eachSeriesByType('graph', (t) => { + const n = t.getCategoriesData(); const i = t.getGraph().data; const r = n.mapArray(n.getName); i.filterSelf((t) => { + let n = i.getItemModel(t).getShallow('category'); if (n != null) { + j(n) && (n = r[n]); for (let o = 0; o < e.length; o++) { + if (!e[o].isSelected(n)) + return !1 + } + } return !0 + }) + }) + } function ED(t) { const e = {}; t.eachSeriesByType('graph', (t) => { const n = t.getCategoriesData(); const i = t.getData(); const r = {}; n.each((i) => { const o = n.getName(i); r[`ec-${o}`] = i; const a = n.getItemModel(i); const s = a.getModel('itemStyle').getItemStyle(); s.fill || (s.fill = t.getColorFromPalette(o, e)), n.setItemVisual(i, 'style', s); for (let l = ['symbol', 'symbolSize', 'symbolKeepAspect'], u = 0; u < l.length; u++) { const h = a.getShallow(l[u], !0); h != null && n.setItemVisual(i, l[u], h) } }), n.count() && i.each((t) => { let e = i.getItemModel(t).getShallow('category'); if (e != null) { X(e) && (e = r[`ec-${e}`]); const o = n.getItemVisual(e, 'style'); A(i.ensureUniqueItemVisual(t, 'style'), o); for (let a = ['symbol', 'symbolSize', 'symbolKeepAspect'], s = 0; s < a.length; s++)i.setItemVisual(t, a[s], n.getItemVisual(e, a[s])) } }) }) } function zD(t) { return Array.isArray(t) || (t = [t, t]), t } function VD(t) { t.eachSeriesByType('graph', (t) => { const e = t.getGraph(); const n = t.getEdgeData(); const i = zD(t.get('edgeSymbol')); const r = zD(t.get('edgeSymbolSize')); n.setVisual('fromSymbol', i && i[0]), n.setVisual('toSymbol', i && i[1]), n.setVisual('fromSymbolSize', r && r[0]), n.setVisual('toSymbolSize', r && r[1]), n.setVisual('style', t.getModel('lineStyle').getLineStyle()), n.each((t) => { const i = n.getItemModel(t); const r = e.getEdgeByIndex(t); const o = zD(i.getShallow('symbol', !0)); const a = zD(i.getShallow('symbolSize', !0)); const s = i.getModel('lineStyle').getLineStyle(); const l = n.ensureUniqueItemVisual(t, 'style'); switch (A(l, s), l.stroke) { case 'source':var u = r.node1.getVisual('style'); l.stroke = u && u.fill; break; case 'target':u = r.node2.getVisual('style'), l.stroke = u && u.fill }o[0] && r.setVisual('fromSymbol', o[0]), o[1] && r.setVisual('toSymbol', o[1]), a[0] && r.setVisual('fromSymbolSize', a[0]), a[1] && r.setVisual('toSymbolSize', a[1]) }) }) } const FD = function (t) { return t.get('autoCurveness') || null }; const GD = function (t, e) { + const n = FD(t); let i = 20; let r = []; if (j(n)) + i = n; else if (Y(n)) + return void (t.__curvenessList = n); e > i && (i = e); const o = i % 2 ? i + 2 : i + 3; r = []; for (let a = 0; a < o; a++)r.push((a % 2 ? a + 1 : a) / 10 * (a % 2 ? -1 : 1)); t.__curvenessList = r + }; const WD = function (t, e, n) { const i = [t.id, t.dataIndex].join('.'); const r = [e.id, e.dataIndex].join('.'); return [n.uid, i, r].join('--\x3E') }; const HD = function (t) { const e = t.split('--\x3E'); return [e[0], e[2], e[1]].join('--\x3E') }; const YD = function (t, e) { const n = e.__edgeMap; return n[t] ? n[t].length : 0 }; function UD(t, e, n, i) { + const r = FD(e); const o = Y(r); if (!r) + return null; const a = (function (t, e) { const n = WD(t.node1, t.node2, e); return e.__edgeMap[n] }(t, e)); if (!a) + return null; for (var s = -1, l = 0; l < a.length; l++) { + if (a[l] === n) { s = l; break } + } const u = (function (t, e) { return YD(WD(t.node1, t.node2, e), e) + YD(WD(t.node2, t.node1, e), e) }(t, e)); GD(e, u), t.lineStyle = t.lineStyle || {}; const h = WD(t.node1, t.node2, e); const c = e.__curvenessList; const p = o || u % 2 ? 0 : 1; if (a.isForward) + return c[p + s]; const d = HD(h); const f = YD(d, e); const g = c[s + f + p]; return i ? o ? r && r[0] === 0 ? (f + p) % 2 ? g : -g : ((f % 2 ? 0 : 1) + p) % 2 ? g : -g : (f + p) % 2 ? g : -g : c[s + f + p] + } function XD(t) { const e = t.coordinateSystem; if (!e || e.type === 'view') { const n = t.getGraph(); n.eachNode((t) => { const e = t.getModel(); t.setLayout([+e.get('x'), +e.get('y')]) }), ZD(n, t) } } function ZD(t, e) { t.eachEdge((t, n) => { const i = ot(t.getModel().get(['lineStyle', 'curveness']), -UD(t, e, n, !0), 0); const r = Mt(t.node1.getLayout()); const o = Mt(t.node2.getLayout()); const a = [r, o]; +i && a.push([(r[0] + o[0]) / 2 - (r[1] - o[1]) * i, (r[1] + o[1]) / 2 - (o[0] - r[0]) * i]), t.setLayout(a) }) } function jD(t, e) { + t.eachSeriesByType('graph', (t) => { + const e = t.get('layout'); const n = t.coordinateSystem; if (n && n.type !== 'view') { const i = t.getData(); let r = []; E(n.dimensions, (t) => { r = r.concat(i.mapDimensionsAll(t)) }); for (let o = 0; o < i.count(); o++) { for (var a = [], s = !1, l = 0; l < r.length; l++) { const u = i.get(r[l], o); isNaN(u) || (s = !0), a.push(u) }s ? i.setItemLayout(o, n.dataToPoint(a)) : i.setItemLayout(o, [Number.NaN, Number.NaN]) }ZD(i.graph, t) } + else { + e && e !== 'none' || XD(t) + } + }) + } function qD(t) { + const e = t.coordinateSystem; if (e.type !== 'view') + return 1; const n = t.option.nodeScaleRatio; const i = e.scaleX; return ((e.getZoom() - 1) * n + 1) / i + } function KD(t) { let e = t.getVisual('symbolSize'); return Array.isArray(e) && (e = (e[0] + e[1]) / 2), +e } const $D = Math.PI; const JD = []; function QD(t, e) { const n = t.coordinateSystem; if (!n || n.type === 'view') { const i = n.getBoundingRect(); const r = t.getData(); const o = r.graph; const a = i.width / 2 + i.x; const s = i.height / 2 + i.y; const l = Math.min(i.width, i.height) / 2; const u = r.count(); r.setLayout({ cx: a, cy: s }), u && (tA[e](t, o, r, l, a, s, u), o.eachEdge((e, n) => { let i; let r = ot(e.getModel().get(['lineStyle', 'curveness']), UD(e, t, n), 0); const o = Mt(e.node1.getLayout()); const l = Mt(e.node2.getLayout()); const u = (o[0] + l[0]) / 2; const h = (o[1] + l[1]) / 2; +r && (i = [a * (r *= 3) + u * (1 - r), s * r + h * (1 - r)]), e.setLayout([o, l, i]) })) } } var tA = { value(t, e, n, i, r, o, a) { let s = 0; const l = n.getSum('value'); const u = 2 * Math.PI / (l || a); e.eachNode((t) => { const e = t.getValue('value'); const n = u * (l ? e : 1) / 2; s += n, t.setLayout([i * Math.cos(s) + r, i * Math.sin(s) + o]), s += n }) }, symbolSize(t, e, n, i, r, o, a) { let s = 0; JD.length = a; const l = qD(t); e.eachNode((t) => { let e = KD(t); isNaN(e) && (e = 2), e < 0 && (e = 0), e *= l; let n = Math.asin(e / 2 / i); isNaN(n) && (n = $D / 2), JD[t.dataIndex] = n, s += 2 * n }); const u = (2 * $D - s) / a / 2; let h = 0; e.eachNode((t) => { const e = u + JD[t.dataIndex]; h += e, t.setLayout([i * Math.cos(h) + r, i * Math.sin(h) + o]), h += e }) } }; function eA(t) { t.eachSeriesByType('graph', (t) => { t.get('layout') === 'circular' && QD(t, 'symbolSize') }) } const nA = Ct; function iA(t) { + t.eachSeriesByType('graph', (t) => { + const e = t.coordinateSystem; if (!e || e.type === 'view') { + if (t.get('layout') === 'force') { const n = t.preservedPoints || {}; const i = t.getGraph(); const r = i.data; const o = i.edgeData; const a = t.getModel('force'); const s = a.get('initLayout'); t.preservedPoints ? r.each((t) => { const e = r.getId(t); r.setItemLayout(t, n[e] || [Number.NaN, Number.NaN]) }) : s && s !== 'none' ? s === 'circular' && QD(t, 'value') : XD(t); const l = r.getDataExtent('value'); const u = o.getDataExtent('value'); const h = a.get('repulsion'); const c = a.get('edgeLength'); const p = Y(h) ? h : [h, h]; let d = Y(c) ? c : [c, c]; d = [d[1], d[0]]; const f = r.mapArray('value', (t, e) => { const n = r.getItemLayout(e); let i = Nr(t, l, p); return isNaN(i) && (i = (p[0] + p[1]) / 2), { w: i, rep: i, fixed: r.getItemModel(e).get('fixed'), p: !n || isNaN(n[0]) || isNaN(n[1]) ? null : n } }); const g = o.mapArray('value', (e, n) => { const r = i.getEdgeByIndex(n); let o = Nr(e, u, d); isNaN(o) && (o = (d[0] + d[1]) / 2); const a = r.getModel(); const s = ot(r.getModel().get(['lineStyle', 'curveness']), -UD(r, t, n, !0), 0); return { n1: f[r.node1.dataIndex], n2: f[r.node2.dataIndex], d: o, curveness: s, ignoreForceLayout: a.get('ignoreForceLayout') } }); const y = e.getBoundingRect(); const v = (function (t, e, n) { for (var i = t, r = e, o = n.rect, a = o.width, s = o.height, l = [o.x + a / 2, o.y + s / 2], u = n.gravity == null ? 0.1 : n.gravity, h = 0; h < i.length; h++) { const c = i[h]; c.p || (c.p = wt(a * (Math.random() - 0.5) + l[0], s * (Math.random() - 0.5) + l[1])), c.pp = Mt(c.p), c.edges = null } let p; let d; const f = n.friction == null ? 0.6 : n.friction; let g = f; return { warmUp() { g = 0.8 * f }, setFixed(t) { i[t].fixed = !0 }, setUnfixed(t) { i[t].fixed = !1 }, beforeStep(t) { p = t }, afterStep(t) { d = t }, step(t) { p && p(i, r); for (var e = [], n = i.length, o = 0; o < r.length; o++) { const a = r[o]; if (!a.ignoreForceLayout) { var s = a.n1; Dt(e, (y = a.n2).p, s.p); var h = At(e) - a.d; let c = y.w / (s.w + y.w); isNaN(c) && (c = 0), Rt(e, e), !s.fixed && nA(s.p, s.p, e, c * h * g), !y.fixed && nA(y.p, y.p, e, -(1 - c) * h * g) } } for (o = 0; o < n; o++)(x = i[o]).fixed || (Dt(e, l, x.p), nA(x.p, x.p, e, u * g)); for (o = 0; o < n; o++) { s = i[o]; for (let f = o + 1; f < n; f++) { var y; Dt(e, (y = i[f]).p, s.p), (h = At(e)) === 0 && (It(e, Math.random() - 0.5, Math.random() - 0.5), h = 1); const v = (s.rep + y.rep) / h / h; !s.fixed && nA(s.pp, s.pp, e, v), !y.fixed && nA(y.pp, y.pp, e, -v) } } const m = []; for (o = 0; o < n; o++) { var x; (x = i[o]).fixed || (Dt(m, x.p, x.pp), nA(x.p, x.p, m, g), St(x.pp, x.p)) } const _ = (g *= 0.992) < 0.01; d && d(i, r, _), t && t(_) } } }(f, g, { rect: y, gravity: a.get('gravity'), friction: a.get('friction') })); v.beforeStep((t, e) => { for (let n = 0, r = t.length; n < r; n++)t[n].fixed && St(t[n].p, i.getNodeByIndex(n).getLayout()) }), v.afterStep((t, e, o) => { for (var a = 0, s = t.length; a < s; a++)t[a].fixed || i.getNodeByIndex(a).setLayout(t[a].p), n[r.getId(a)] = t[a].p; for (a = 0, s = e.length; a < s; a++) { const l = e[a]; const u = i.getEdgeByIndex(a); const h = l.n1.p; const c = l.n2.p; let p = u.getLayout(); (p = p ? p.slice() : [])[0] = p[0] || [], p[1] = p[1] || [], St(p[0], h), St(p[1], c), +l.curveness && (p[2] = [(h[0] + c[0]) / 2 - (h[1] - c[1]) * l.curveness, (h[1] + c[1]) / 2 - (c[0] - h[0]) * l.curveness]), u.setLayout(p) } }), t.forceLayout = v, t.preservedPoints = n, v.step() } + else { + t.forceLayout = null + } + } + }) + } function rA(t, e) { const n = []; return t.eachSeriesByType('graph', (t) => { const i = t.get('coordinateSystem'); if (!i || i === 'view') { const r = t.getData(); let o = []; let a = []; Ma(r.mapArray((t) => { const e = r.getItemModel(t); return [+e.get('x'), +e.get('y')] }), o, a), a[0] - o[0] == 0 && (a[0] += 1, o[0] -= 1), a[1] - o[1] == 0 && (a[1] += 1, o[1] -= 1); const s = (a[0] - o[0]) / (a[1] - o[1]); const l = (function (t, e, n) { return xp(A(t.getBoxLayoutParams(), { aspect: n }), { width: e.getWidth(), height: e.getHeight() }) }(t, e, s)); isNaN(s) && (o = [l.x, l.y], a = [l.x + l.width, l.y + l.height]); const u = a[0] - o[0]; const h = a[1] - o[1]; const c = l.width; const p = l.height; const d = t.coordinateSystem = new GT(); d.zoomLimit = t.get('scaleLimit'), d.setBoundingRect(o[0], o[1], u, h), d.setViewRect(l.x, l.y, c, p), d.setCenter(t.get('center'), e), d.setZoom(t.get('zoom')), n.push(d) } }), n } const oA = zu.prototype; const aA = Gu.prototype; const sA = function () { this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1 }; function lA(t) { return isNaN(+t.cpx1) || isNaN(+t.cpy1) }!(function (t) { n(function () { return t !== null && t.apply(this, arguments) || this }, t) }(sA)); const uA = (function (t) { function e(e) { const n = t.call(this, e) || this; return n.type = 'ec-line', n } return n(e, t), e.prototype.getDefaultStyle = function () { return { stroke: '#000', fill: null } }, e.prototype.getDefaultShape = function () { return new sA() }, e.prototype.buildPath = function (t, e) { lA(e) ? oA.buildPath.call(this, t, e) : aA.buildPath.call(this, t, e) }, e.prototype.pointAt = function (t) { return lA(this.shape) ? oA.pointAt.call(this, t) : aA.pointAt.call(this, t) }, e.prototype.tangentAt = function (t) { const e = this.shape; const n = lA(e) ? [e.x2 - e.x1, e.y2 - e.y1] : aA.tangentAt.call(this, t); return Rt(n, n) }, e }(gs)); const hA = ['fromSymbol', 'toSymbol']; function cA(t) { return `_${t}Type` } function pA(t, e, n) { const i = e.getItemVisual(n, t); if (i && i !== 'none') { const r = e.getItemVisual(n, `${t}Size`); const o = e.getItemVisual(n, `${t}Rotate`); const a = e.getItemVisual(n, `${t}Offset`); const s = e.getItemVisual(n, `${t}KeepAspect`); const l = Py(r); const u = Oy(a || 0, l); const h = Ly(i, -l[0] / 2 + u[0], -l[1] / 2 + u[1], l[0], l[1], null, s); return h.__specifiedRotation = o == null || isNaN(o) ? void 0 : +o * Math.PI / 180 || 0, h.name = t, h } } function dA(t, e) { t.x1 = e[0][0], t.y1 = e[0][1], t.x2 = e[1][0], t.y2 = e[1][1], t.percent = 1; const n = e[2]; n ? (t.cpx1 = n[0], t.cpy1 = n[1]) : (t.cpx1 = Number.NaN, t.cpy1 = Number.NaN) } const fA = (function (t) { + function e(e, n, i) { const r = t.call(this) || this; return r._createLine(e, n, i), r } return n(e, t), e.prototype._createLine = function (t, e, n) { const i = t.hostModel; const r = (function (t) { const e = new uA({ name: 'line', subPixelOptimize: !0 }); return dA(e.shape, t), e }(t.getItemLayout(e))); r.shape.percent = 0, oh(r, { shape: { percent: 1 } }, i, e), this.add(r), E(hA, function (n) { const i = pA(n, t, e); this.add(i), this[cA(n)] = t.getItemVisual(e, n) }, this), this._updateCommonStl(t, e, n) }, e.prototype.updateData = function (t, e, n) { const i = t.hostModel; const r = this.childOfName('line'); const o = t.getItemLayout(e); const a = { shape: {} }; dA(a.shape, o), rh(r, a, i, e), E(hA, function (n) { const i = t.getItemVisual(e, n); const r = cA(n); if (this[r] !== i) { this.remove(this.childOfName(n)); const o = pA(n, t, e); this.add(o) } this[r] = i }, this), this._updateCommonStl(t, e, n) }, e.prototype.getLinePath = function () { return this.childAt(0) }, e.prototype._updateCommonStl = function (t, e, n) { const i = t.hostModel; const r = this.childOfName('line'); let o = n && n.emphasisLineStyle; let a = n && n.blurLineStyle; let s = n && n.selectLineStyle; let l = n && n.labelStatesModels; let u = n && n.emphasisDisabled; let h = n && n.focus; let c = n && n.blurScope; if (!n || t.hasItemOption) { const p = t.getItemModel(e); const d = p.getModel('emphasis'); o = d.getModel('lineStyle').getLineStyle(), a = p.getModel(['blur', 'lineStyle']).getLineStyle(), s = p.getModel(['select', 'lineStyle']).getLineStyle(), u = d.get('disabled'), h = d.get('focus'), c = d.get('blurScope'), l = Yh(p) } const f = t.getItemVisual(e, 'style'); const g = f.stroke; r.useStyle(f), r.style.fill = null, r.style.strokeNoScale = !0, r.ensureState('emphasis').style = o, r.ensureState('blur').style = a, r.ensureState('select').style = s, E(hA, function (t) { const e = this.childOfName(t); if (e) { e.setColor(g), e.style.opacity = f.opacity; for (let n = 0; n < qs.length; n++) { const i = qs[n]; const o = r.getState(i); if (o) { const a = o.style || {}; const s = e.ensureState(i); const l = s.style || (s.style = {}); a.stroke != null && (l[e.__isEmptyBrush ? 'stroke' : 'fill'] = a.stroke), a.opacity != null && (l.opacity = a.opacity) } }e.markRedraw() } }, this); const y = i.getRawValue(e); Hh(this, l, { labelDataIndex: e, labelFetcher: { getFormattedLabel(e, n) { return i.getFormattedLabel(e, n, t.dataType) } }, inheritColor: g || '#000', defaultOpacity: f.opacity, defaultText: `${y == null ? t.getName(e) : isFinite(y) ? zr(y) : y}` }); const v = this.getTextContent(); if (v) { const m = l.normal; v.__align = v.style.align, v.__verticalAlign = v.style.verticalAlign, v.__position = m.get('position') || 'middle'; let x = m.get('distance'); Y(x) || (x = [x, x]), v.__labelDistance = x } this.setTextConfig({ position: null, local: !0, inside: !1 }), Rl(this, h, c, u) }, e.prototype.highlight = function () { _l(this) }, e.prototype.downplay = function () { bl(this) }, e.prototype.updateLayout = function (t, e) { this.setLinePoints(t.getItemLayout(e)) }, e.prototype.setLinePoints = function (t) { const e = this.childOfName('line'); dA(e.shape, t), e.dirty() }, e.prototype.beforeUpdate = function () { + const t = this; const e = t.childOfName('fromSymbol'); const n = t.childOfName('toSymbol'); const i = t.getTextContent(); if (e || n || i && !i.ignore) { for (var r = 1, o = this.parent; o;)o.scaleX && (r /= o.scaleX), o = o.parent; var a = t.childOfName('line'); if (this.__dirty || a.__dirty) { const s = a.shape.percent; const l = a.pointAt(0); const u = a.pointAt(s); const h = Dt([], u, l); if (Rt(h, h), e && (e.setPosition(l), S(e, 0), e.scaleX = e.scaleY = r * s, e.markRedraw()), n && (n.setPosition(u), S(n, 1), n.scaleX = n.scaleY = r * s, n.markRedraw()), i && !i.ignore) { i.x = i.y = 0, i.originX = i.originY = 0; let c = void 0; let p = void 0; const d = i.__labelDistance; const f = d[0] * r; const g = d[1] * r; const y = s / 2; const v = a.tangentAt(y); const m = [v[1], -v[0]]; const x = a.pointAt(y); m[1] > 0 && (m[0] = -m[0], m[1] = -m[1]); const _ = v[0] < 0 ? -1 : 1; if (i.__position !== 'start' && i.__position !== 'end') { let b = -Math.atan2(v[1], v[0]); u[0] < l[0] && (b = Math.PI + b), i.rotation = b } let w = void 0; switch (i.__position) { case 'insideStartTop':case 'insideMiddleTop':case 'insideEndTop':case 'middle':w = -g, p = 'bottom'; break; case 'insideStartBottom':case 'insideMiddleBottom':case 'insideEndBottom':w = g, p = 'top'; break; default:w = 0, p = 'middle' } switch (i.__position) { case 'end':i.x = h[0] * f + u[0], i.y = h[1] * g + u[1], c = h[0] > 0.8 ? 'left' : h[0] < -0.8 ? 'right' : 'center', p = h[1] > 0.8 ? 'top' : h[1] < -0.8 ? 'bottom' : 'middle'; break; case 'start':i.x = -h[0] * f + l[0], i.y = -h[1] * g + l[1], c = h[0] > 0.8 ? 'right' : h[0] < -0.8 ? 'left' : 'center', p = h[1] > 0.8 ? 'bottom' : h[1] < -0.8 ? 'top' : 'middle'; break; case 'insideStartTop':case 'insideStart':case 'insideStartBottom':i.x = f * _ + l[0], i.y = l[1] + w, c = v[0] < 0 ? 'right' : 'left', i.originX = -f * _, i.originY = -w; break; case 'insideMiddleTop':case 'insideMiddle':case 'insideMiddleBottom':case 'middle':i.x = x[0], i.y = x[1] + w, c = 'center', i.originY = -w; break; case 'insideEndTop':case 'insideEnd':case 'insideEndBottom':i.x = -f * _ + u[0], i.y = u[1] + w, c = v[0] >= 0 ? 'right' : 'left', i.originX = f * _, i.originY = -w }i.scaleX = i.scaleY = r, i.setStyle({ verticalAlign: i.__verticalAlign || p, align: i.__align || c }) } } } function S(t, e) { + const n = t.__specifiedRotation; if (n == null) { const i = a.tangentAt(e); t.attr('rotation', (e === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(i[1], i[0])) } + else { + t.attr('rotation', n) + } + } + }, e + }(Cr)); const gA = (function () { + function t(t) { this.group = new Cr(), this._LineCtor = t || fA } return t.prototype.updateData = function (t) { const e = this; this._progressiveEls = null; const n = this; const i = n.group; const r = n._lineData; n._lineData = t, r || i.removeAll(); const o = yA(t); t.diff(r).add((n) => { e._doAdd(t, n, o) }).update((n, i) => { e._doUpdate(r, t, i, n, o) }).remove((t) => { i.remove(r.getItemGraphicEl(t)) }).execute() }, t.prototype.updateLayout = function () { const t = this._lineData; t && t.eachItemGraphicEl((e, n) => { e.updateLayout(t, n) }, this) }, t.prototype.incrementalPrepareUpdate = function (t) { this._seriesScope = yA(t), this._lineData = null, this.group.removeAll() }, t.prototype.incrementalUpdate = function (t, e) { + function n(t) { t.isGroup || (function (t) { return t.animators && t.animators.length > 0 }(t)) || (t.incremental = !0, t.ensureState('emphasis').hoverLayer = !0) } this._progressiveEls = []; for (let i = t.start; i < t.end; i++) { + if (mA(e.getItemLayout(i))) { const r = new this._LineCtor(e, i, this._seriesScope); r.traverse(n), this.group.add(r), e.setItemGraphicEl(i, r), this._progressiveEls.push(r) } + } + }, t.prototype.remove = function () { this.group.removeAll() }, t.prototype.eachRendered = function (t) { Vh(this._progressiveEls || this.group, t) }, t.prototype._doAdd = function (t, e, n) { if (mA(t.getItemLayout(e))) { const i = new this._LineCtor(t, e, n); t.setItemGraphicEl(e, i), this.group.add(i) } }, t.prototype._doUpdate = function (t, e, n, i, r) { let o = t.getItemGraphicEl(n); mA(e.getItemLayout(i)) ? (o ? o.updateData(e, i, r) : o = new this._LineCtor(e, i, r), e.setItemGraphicEl(i, o), this.group.add(o)) : this.group.remove(o) }, t + }()); function yA(t) { const e = t.hostModel; const n = e.getModel('emphasis'); return { lineStyle: e.getModel('lineStyle').getLineStyle(), emphasisLineStyle: n.getModel(['lineStyle']).getLineStyle(), blurLineStyle: e.getModel(['blur', 'lineStyle']).getLineStyle(), selectLineStyle: e.getModel(['select', 'lineStyle']).getLineStyle(), emphasisDisabled: n.get('disabled'), blurScope: n.get('blurScope'), focus: n.get('focus'), labelStatesModels: Yh(e) } } function vA(t) { return isNaN(t[0]) || isNaN(t[1]) } function mA(t) { return t && !vA(t[0]) && !vA(t[1]) } const xA = []; const _A = []; const bA = []; const wA = Ke; const SA = Vt; const MA = Math.abs; function IA(t, e, n) { + for (var i, r = t[0], o = t[1], a = t[2], s = 1 / 0, l = n * n, u = 0.1, h = 0.1; h <= 0.9; h += 0.1)xA[0] = wA(r[0], o[0], a[0], h), xA[1] = wA(r[1], o[1], a[1], h), (d = MA(SA(xA, e) - l)) < s && (s = d, i = h); for (let c = 0; c < 32; c++) { + const p = i + u; _A[0] = wA(r[0], o[0], a[0], i), _A[1] = wA(r[1], o[1], a[1], i), bA[0] = wA(r[0], o[0], a[0], p), bA[1] = wA(r[1], o[1], a[1], p); var d = SA(_A, e) - l; if (MA(d) < 0.01) + break; const f = SA(bA, e) - l; u /= 2, d < 0 ? f >= 0 ? i += u : i -= u : f >= 0 ? i -= u : i += u + } return i + } function TA(t, e) { + const n = []; const i = Qe; const r = [[], [], []]; const o = [[], []]; const a = []; e /= 2, t.eachEdge((t, s) => { + const l = t.getLayout(); const u = t.getVisual('fromSymbol'); const h = t.getVisual('toSymbol'); l.__original || (l.__original = [Mt(l[0]), Mt(l[1])], l[2] && l.__original.push(Mt(l[2]))); const c = l.__original; if (l[2] != null) { if (St(r[0], c[0]), St(r[1], c[2]), St(r[2], c[1]), u && u !== 'none') { var p = KD(t.node1); var d = IA(r, c[0], p * e); i(r[0][0], r[1][0], r[2][0], d, n), r[0][0] = n[3], r[1][0] = n[4], i(r[0][1], r[1][1], r[2][1], d, n), r[0][1] = n[3], r[1][1] = n[4] }h && h !== 'none' && (p = KD(t.node2), d = IA(r, c[1], p * e), i(r[0][0], r[1][0], r[2][0], d, n), r[1][0] = n[1], r[2][0] = n[2], i(r[0][1], r[1][1], r[2][1], d, n), r[1][1] = n[1], r[2][1] = n[2]), St(l[0], r[0]), St(l[1], r[2]), St(l[2], r[1]) } + else { + St(o[0], c[0]), St(o[1], c[1]), Dt(a, o[1], o[0]), Rt(a, a), u && u !== 'none' && (p = KD(t.node1), Ct(o[0], o[0], a, p * e)), h && h !== 'none' && (p = KD(t.node2), Ct(o[1], o[1], a, -p * e)), St(l[0], o[0]), St(l[1], o[1]) + } + }) + } function CA(t) { return t.type === 'view' } const DA = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function (t, e) { const n = new qw(); const i = new gA(); const r = this.group; this._controller = new kI(e.getZr()), this._controllerHost = { target: r }, r.add(n.group), r.add(i.group), this._symbolDraw = n, this._lineDraw = i, this._firstRender = !0 }, e.prototype.render = function (t, e, n) { + const i = this; const r = t.coordinateSystem; this._model = t; const o = this._symbolDraw; const a = this._lineDraw; const s = this.group; if (CA(r)) { const l = { x: r.x, y: r.y, scaleX: r.scaleX, scaleY: r.scaleY }; this._firstRender ? s.attr(l) : rh(s, l, t) }TA(t.getGraph(), qD(t)); const u = t.getData(); o.updateData(u); const h = t.getEdgeData(); a.updateData(h), this._updateNodeAndLinkScale(), this._updateController(t, e, n), clearTimeout(this._layoutTimeout); const c = t.forceLayout; const p = t.get(['force', 'layoutAnimation']); c && this._startForceLayoutIteration(c, p), u.graph.eachNode((t) => { const e = t.dataIndex; const n = t.getGraphicEl(); const r = t.getModel(); if (n) { n.off('drag').off('dragend'); const o = r.get('draggable'); o && n.on('drag', () => { c && (c.warmUp(), !i._layouting && i._startForceLayoutIteration(c, p), c.setFixed(e), u.setItemLayout(e, [n.x, n.y])) }).on('dragend', () => { c && c.setUnfixed(e) }), n.setDraggable(o && !!c, !!r.get('cursor')), r.get(['emphasis', 'focus']) === 'adjacency' && (Hs(n).focus = t.getAdjacentDataIndices()) } }), u.graph.eachEdge((t) => { const e = t.getGraphicEl(); const n = t.getModel().get(['emphasis', 'focus']); e && n === 'adjacency' && (Hs(e).focus = { edge: [t.dataIndex], node: [t.node1.dataIndex, t.node2.dataIndex] }) }); const d = t.get('layout') === 'circular' && t.get(['circular', 'rotateLabel']); const f = u.getLayout('cx'); const g = u.getLayout('cy'); u.eachItemGraphicEl((t, e) => { + let n = u.getItemModel(e).get(['label', 'rotate']) || 0; const i = t.getSymbolPath(); if (d) { const r = u.getItemLayout(e); let o = Math.atan2(r[1] - g, r[0] - f); o < 0 && (o = 2 * Math.PI + o); const a = r[0] < f; a && (o -= Math.PI); const s = a ? 'left' : 'right'; i.setTextConfig({ rotation: -o, position: s, origin: 'center' }); const l = i.ensureState('emphasis'); A(l.textConfig || (l.textConfig = {}), { position: s }) } + else { + i.setTextConfig({ rotation: n *= Math.PI / 180 }) + } + }), this._firstRender = !1 + }, e.prototype.dispose = function () { this._controller && this._controller.dispose(), this._controllerHost = null }, e.prototype._startForceLayoutIteration = function (t, e) { const n = this; !(function i() { t.step((t) => { n.updateLayout(n._model), (n._layouting = !t) && (e ? n._layoutTimeout = setTimeout(i, 16) : i()) }) }()) }, e.prototype._updateController = function (t, e, n) { const i = this; const r = this._controller; const o = this._controllerHost; const a = this.group; r.setPointerChecker((e, i, r) => { const o = a.getBoundingRect(); return o.applyTransform(a.transform), o.contain(i, r) && !VI(e, n, t) }), CA(t.coordinateSystem) ? (r.enable(t.get('roam')), o.zoomLimit = t.get('scaleLimit'), o.zoom = t.coordinateSystem.getZoom(), r.off('pan').off('zoom').on('pan', (e) => { RI(o, e.dx, e.dy), n.dispatchAction({ seriesId: t.id, type: 'graphRoam', dx: e.dx, dy: e.dy }) }).on('zoom', (e) => { NI(o, e.scale, e.originX, e.originY), n.dispatchAction({ seriesId: t.id, type: 'graphRoam', zoom: e.scale, originX: e.originX, originY: e.originY }), i._updateNodeAndLinkScale(), TA(t.getGraph(), qD(t)), i._lineDraw.updateLayout(), n.updateLabelLayout() })) : r.disable() }, e.prototype._updateNodeAndLinkScale = function () { const t = this._model; const e = t.getData(); const n = qD(t); e.eachItemGraphicEl((t, e) => { t && t.setSymbolScale(n) }) }, e.prototype.updateLayout = function (t) { TA(t.getGraph(), qD(t)), this._symbolDraw.updateLayout(), this._lineDraw.updateLayout() }, e.prototype.remove = function (t, e) { this._symbolDraw && this._symbolDraw.remove(), this._lineDraw && this._lineDraw.remove() }, e.type = 'graph', e + }(xg)); function AA(t) { return `_EC_${t}` } const kA = (function () { + function t(t) { this.type = 'graph', this.nodes = [], this.edges = [], this._nodesMap = {}, this._edgesMap = {}, this._directed = t || !1 } return t.prototype.isDirected = function () { return this._directed }, t.prototype.addNode = function (t, e) { t = t == null ? `${e}` : `${t}`; const n = this._nodesMap; if (!n[AA(t)]) { const i = new LA(t, e); return i.hostGraph = this, this.nodes.push(i), n[AA(t)] = i, i } }, t.prototype.getNodeByIndex = function (t) { const e = this.data.getRawIndex(t); return this.nodes[e] }, t.prototype.getNodeById = function (t) { return this._nodesMap[AA(t)] }, t.prototype.addEdge = function (t, e, n) { const i = this._nodesMap; const r = this._edgesMap; if (j(t) && (t = this.nodes[t]), j(e) && (e = this.nodes[e]), t instanceof LA || (t = i[AA(t)]), e instanceof LA || (e = i[AA(e)]), t && e) { const o = `${t.id}-${e.id}`; const a = new PA(t, e, n); return a.hostGraph = this, this._directed && (t.outEdges.push(a), e.inEdges.push(a)), t.edges.push(a), t !== e && e.edges.push(a), this.edges.push(a), r[o] = a, a } }, t.prototype.getEdgeByIndex = function (t) { const e = this.edgeData.getRawIndex(t); return this.edges[e] }, t.prototype.getEdge = function (t, e) { t instanceof LA && (t = t.id), e instanceof LA && (e = e.id); const n = this._edgesMap; return this._directed ? n[`${t}-${e}`] : n[`${t}-${e}`] || n[`${e}-${t}`] }, t.prototype.eachNode = function (t, e) { for (let n = this.nodes, i = n.length, r = 0; r < i; r++)n[r].dataIndex >= 0 && t.call(e, n[r], r) }, t.prototype.eachEdge = function (t, e) { for (let n = this.edges, i = n.length, r = 0; r < i; r++)n[r].dataIndex >= 0 && n[r].node1.dataIndex >= 0 && n[r].node2.dataIndex >= 0 && t.call(e, n[r], r) }, t.prototype.breadthFirstTraverse = function (t, e, n, i) { + if (e instanceof LA || (e = this._nodesMap[AA(e)]), e) { + for (var r = n === 'out' ? 'outEdges' : n === 'in' ? 'inEdges' : 'edges', o = 0; o < this.nodes.length; o++) this.nodes[o].__visited = !1; if (!t.call(i, e, null)) { + for (let a = [e]; a.length;) { + const s = a.shift(); const l = s[r]; for (o = 0; o < l.length; o++) { + const u = l[o]; const h = u.node1 === s ? u.node2 : u.node1; if (!h.__visited) { + if (t.call(i, h, s)) + return; a.push(h), h.__visited = !0 + } + } + } + } + } + }, t.prototype.update = function () { for (var t = this.data, e = this.edgeData, n = this.nodes, i = this.edges, r = 0, o = n.length; r < o; r++)n[r].dataIndex = -1; for (r = 0, o = t.count(); r < o; r++)n[t.getRawIndex(r)].dataIndex = r; for (e.filterSelf((t) => { const n = i[e.getRawIndex(t)]; return n.node1.dataIndex >= 0 && n.node2.dataIndex >= 0 }), r = 0, o = i.length; r < o; r++)i[r].dataIndex = -1; for (r = 0, o = e.count(); r < o; r++)i[e.getRawIndex(r)].dataIndex = r }, t.prototype.clone = function () { for (var e = new t(this._directed), n = this.nodes, i = this.edges, r = 0; r < n.length; r++)e.addNode(n[r].id, n[r].dataIndex); for (r = 0; r < i.length; r++) { const o = i[r]; e.addEdge(o.node1.id, o.node2.id, o.dataIndex) } return e }, t + }()); var LA = (function () { + function t(t, e) { this.inEdges = [], this.outEdges = [], this.edges = [], this.dataIndex = -1, this.id = t == null ? '' : t, this.dataIndex = e == null ? -1 : e } return t.prototype.degree = function () { return this.edges.length }, t.prototype.inDegree = function () { return this.inEdges.length }, t.prototype.outDegree = function () { return this.outEdges.length }, t.prototype.getModel = function (t) { + if (!(this.dataIndex < 0)) + return this.hostGraph.data.getItemModel(this.dataIndex).getModel(t) + }, t.prototype.getAdjacentDataIndices = function () { for (var t = { edge: [], node: [] }, e = 0; e < this.edges.length; e++) { const n = this.edges[e]; n.dataIndex < 0 || (t.edge.push(n.dataIndex), t.node.push(n.node1.dataIndex, n.node2.dataIndex)) } return t }, t + }()); var PA = (function () { + function t(t, e, n) { this.dataIndex = -1, this.node1 = t, this.node2 = e, this.dataIndex = n == null ? -1 : n } return t.prototype.getModel = function (t) { + if (!(this.dataIndex < 0)) + return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(t) + }, t.prototype.getAdjacentDataIndices = function () { return { edge: [this.dataIndex], node: [this.node1.dataIndex, this.node2.dataIndex] } }, t + }()); function OA(t, e) { return { getValue(n) { const i = this[t][e]; return i.getStore().get(i.getDimensionIndex(n || 'value'), this.dataIndex) }, setVisual(n, i) { this.dataIndex >= 0 && this[t][e].setItemVisual(this.dataIndex, n, i) }, getVisual(n) { return this[t][e].getItemVisual(this.dataIndex, n) }, setLayout(n, i) { this.dataIndex >= 0 && this[t][e].setItemLayout(this.dataIndex, n, i) }, getLayout() { return this[t][e].getItemLayout(this.dataIndex) }, getGraphicEl() { return this[t][e].getItemGraphicEl(this.dataIndex) }, getRawIndex() { return this[t][e].getRawIndex(this.dataIndex) } } } function RA(t, e, n, i, r) { + for (var o = new kA(i), a = 0; a < t.length; a++)o.addNode(it(t[a].id, t[a].name, a), a); const s = []; const l = []; let u = 0; for (a = 0; a < e.length; a++) { const h = e[a]; const c = h.source; const p = h.target; o.addEdge(c, p, u) && (l.push(h), s.push(it(xo(h.id, null), `${c} > ${p}`)), u++) } let d; const f = n.get('coordinateSystem'); if (f === 'cartesian2d' || f === 'polar') { + d = rx(t, n) + } + else { const g = hd.get(f); const y = g && g.dimensions || []; P(y, 'value') < 0 && y.concat(['value']); const v = Km(t, { coordDimensions: y, encodeDefine: n.getEncode() }).dimensions; (d = new qm(v, n)).initData(t) } const m = new qm(['value'], n); return m.initData(l, s), r && r(d, m), _C({ mainData: d, struct: o, structAttr: 'graph', datas: { node: d, edge: m }, datasAttr: { node: 'data', edge: 'edgeData' } }), o.update(), o + }R(LA, OA('hostGraph', 'data')), R(PA, OA('hostGraph', 'edgeData')); const NA = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.hasSymbolVisual = !0, n } return n(e, t), e.prototype.init = function (e) { t.prototype.init.apply(this, arguments); const n = this; function i() { return n._categoriesData } this.legendVisualProvider = new hM(i, i), this.fillDataTextStyle(e.edges || e.links), this._updateCategoriesData() }, e.prototype.mergeOption = function (e) { t.prototype.mergeOption.apply(this, arguments), this.fillDataTextStyle(e.edges || e.links), this._updateCategoriesData() }, e.prototype.mergeDefaultAndTheme = function (e) { t.prototype.mergeDefaultAndTheme.apply(this, arguments), co(e, 'edgeLabel', ['show']) }, e.prototype.getInitialData = function (t, e) { let n; const i = t.edges || t.links || []; const r = t.data || t.nodes || []; const o = this; if (r && i) { FD(n = this) && (n.__curvenessList = [], n.__edgeMap = {}, GD(n)); const a = RA(r, i, this, !0, (t, e) => { t.wrapMethod('getItemModel', (t) => { const e = o._categoriesModels[t.getShallow('category')]; return e && (e.parentModel = t.parentModel, t.parentModel = e), t }); const n = dc.prototype.getModel; function i(t, e) { const i = n.call(this, t, e); return i.resolveParentPath = r, i } function r(t) { if (t && (t[0] === 'label' || t[1] === 'label')) { const e = t.slice(); return t[0] === 'label' ? e[0] = 'edgeLabel' : t[1] === 'label' && (e[1] = 'edgeLabel'), e } return t }e.wrapMethod('getItemModel', (t) => { return t.resolveParentPath = r, t.getModel = i, t }) }); return E(a.edges, function (t) { !(function (t, e, n, i) { if (FD(n)) { const r = WD(t, e, n); const o = n.__edgeMap; const a = o[HD(r)]; o[r] && !a ? o[r].isForward = !0 : a && o[r] && (a.isForward = !0, o[r].isForward = !1), o[r] = o[r] || [], o[r].push(i) } }(t.node1, t.node2, this, t.dataIndex)) }, this), a.data } }, e.prototype.getGraph = function () { return this.getData().graph }, e.prototype.getEdgeData = function () { return this.getGraph().edgeData }, e.prototype.getCategoriesData = function () { return this._categoriesData }, e.prototype.formatTooltip = function (t, e, n) { if (n === 'edge') { const i = this.getData(); const r = this.getDataParams(t, n); const o = i.graph.getEdgeByIndex(t); const a = i.getName(o.node1.dataIndex); const s = i.getName(o.node2.dataIndex); const l = []; return a != null && l.push(a), s != null && l.push(s), Xf('nameValue', { name: l.join(' > '), value: r.value, noValue: r.value == null }) } return rg({ series: this, dataIndex: t, multipleSeries: e }) }, e.prototype._updateCategoriesData = function () { const t = z(this.option.categories || [], (t) => { return t.value != null ? t : A({ value: 0 }, t) }); const e = new qm(['value'], this); e.initData(t), this._categoriesData = e, this._categoriesModels = e.mapArray((t) => { return e.getItemModel(t) }) }, e.prototype.setZoom = function (t) { this.option.zoom = t }, e.prototype.setCenter = function (t) { this.option.center = t }, e.prototype.isAnimationEnabled = function () { return t.prototype.isAnimationEnabled.call(this) && !(this.get('layout') === 'force' && this.get(['force', 'layoutAnimation'])) }, e.type = 'series.graph', e.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'], e.defaultOption = { z: 2, coordinateSystem: 'view', legendHoverLink: !0, layout: null, circular: { rotateLabel: !1 }, force: { initLayout: null, repulsion: [0, 50], gravity: 0.1, friction: 0.6, edgeLength: 30, layoutAnimation: !0 }, left: 'center', top: 'center', symbol: 'circle', symbolSize: 10, edgeSymbol: ['none', 'none'], edgeSymbolSize: 10, edgeLabel: { position: 'middle', distance: 5 }, draggable: !1, roam: !1, center: null, zoom: 1, nodeScaleRatio: 0.6, label: { show: !1, formatter: '{b}' }, itemStyle: {}, lineStyle: { color: '#aaa', width: 1, opacity: 0.5 }, emphasis: { scale: !0, label: { show: !0 } }, select: { itemStyle: { borderColor: '#212121' } } }, e }(sg)); const EA = { type: 'graphRoam', event: 'graphRoam', update: 'none' }; const zA = function () { this.angle = 0, this.width = 10, this.r = 10, this.x = 0, this.y = 0 }; const VA = (function (t) { function e(e) { const n = t.call(this, e) || this; return n.type = 'pointer', n } return n(e, t), e.prototype.getDefaultShape = function () { return new zA() }, e.prototype.buildPath = function (t, e) { const n = Math.cos; const i = Math.sin; const r = e.r; const o = e.width; let a = e.angle; const s = e.x - n(a) * o * (o >= r / 3 ? 1 : 2); const l = e.y - i(a) * o * (o >= r / 3 ? 1 : 2); a = e.angle - Math.PI / 2, t.moveTo(s, l), t.lineTo(e.x + n(a) * o, e.y + i(a) * o), t.lineTo(e.x + n(e.angle) * r, e.y + i(e.angle) * r), t.lineTo(e.x - n(a) * o, e.y - i(a) * o), t.lineTo(s, l) }, e }(gs)); function BA(t, e) { let n = t == null ? '' : `${t}`; return e && (X(e) ? n = e.replace('{value}', n) : U(e) && (n = e(t))), n } const FA = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { this.group.removeAll(); const i = t.get(['axisLine', 'lineStyle', 'color']); const r = (function (t, e) { const n = t.get('center'); const i = e.getWidth(); const r = e.getHeight(); const o = Math.min(i, r); return { cx: Er(n[0], e.getWidth()), cy: Er(n[1], e.getHeight()), r: Er(t.get('radius'), o / 2) } }(t, n)); this._renderMain(t, e, n, i, r), this._data = t.getData() }, e.prototype.dispose = function () {}, e.prototype._renderMain = function (t, e, n, i, r) { + const o = this.group; const a = t.get('clockwise'); let s = -t.get('startAngle') / 180 * Math.PI; let l = -t.get('endAngle') / 180 * Math.PI; const u = t.getModel('axisLine'); const h = u.get('roundCap') ? DS : Cu; const c = u.get('show'); const p = u.getModel('lineStyle'); const d = p.get('width'); const f = [s, l]; ja(f, !a); for (let g = (l = f[1]) - (s = f[0]), y = s, v = 0; c && v < i.length; v++) { const m = new h({ shape: { startAngle: y, endAngle: l = s + g * Math.min(Math.max(i[v][0], 0), 1), cx: r.cx, cy: r.cy, clockwise: a, r0: r.r - d, r: r.r }, silent: !0 }); m.setStyle({ fill: i[v][1] }), m.setStyle(p.getLineStyle(['color', 'width'])), o.add(m), y = l } const x = function (t) { + if (t <= 0) + return i[0][1]; let e; for (e = 0; e < i.length; e++) { + if (i[e][0] >= t && (e === 0 ? 0 : i[e - 1][0]) < t) + return i[e][1] + } return i[e - 1][1] + }; this._renderTicks(t, e, n, x, r, s, l, a, d), this._renderTitleAndDetail(t, e, n, x, r), this._renderAnchor(t, r), this._renderPointer(t, e, n, x, r, s, l, a, d) + }, e.prototype._renderTicks = function (t, e, n, i, r, o, a, s, l) { + for (var u, h, c = this.group, p = r.cx, d = r.cy, f = r.r, g = +t.get('min'), y = +t.get('max'), v = t.getModel('splitLine'), m = t.getModel('axisTick'), x = t.getModel('axisLabel'), _ = t.get('splitNumber'), b = m.get('splitNumber'), w = Er(v.get('length'), f), S = Er(m.get('length'), f), M = o, I = (a - o) / _, T = I / b, C = v.getModel('lineStyle').getLineStyle(), D = m.getModel('lineStyle').getLineStyle(), A = v.get('distance'), k = 0; k <= _; k++) { + if (u = Math.cos(M), h = Math.sin(M), v.get('show')) { const L = new zu({ shape: { x1: u * (f - (P = A ? A + l : l)) + p, y1: h * (f - P) + d, x2: u * (f - w - P) + p, y2: h * (f - w - P) + d }, style: C, silent: !0 }); C.stroke === 'auto' && L.setStyle({ stroke: i(k / _) }), c.add(L) } if (x.get('show')) { var P = x.get('distance') + A; const O = BA(zr(k / _ * (y - g) + g), x.get('formatter')); const R = i(k / _); c.add(new ks({ style: Uh(x, { text: O, x: u * (f - w - P) + p, y: h * (f - w - P) + d, verticalAlign: h < -0.8 ? 'top' : h > 0.8 ? 'bottom' : 'middle', align: u < -0.4 ? 'left' : u > 0.4 ? 'right' : 'center' }, { inheritColor: R }), silent: !0 })) } if (m.get('show') && k !== _) { P = (P = m.get('distance')) ? P + l : l; for (let N = 0; N <= b; N++) { u = Math.cos(M), h = Math.sin(M); const E = new zu({ shape: { x1: u * (f - P) + p, y1: h * (f - P) + d, x2: u * (f - S - P) + p, y2: h * (f - S - P) + d }, silent: !0, style: D }); D.stroke === 'auto' && E.setStyle({ stroke: i((k + N / b) / _) }), c.add(E), M += T }M -= T } + else { + M += I + } + } + }, e.prototype._renderPointer = function (t, e, n, i, r, o, a, s, l) { + const u = this.group; const h = this._data; const c = this._progressEls; const p = []; const d = t.get(['pointer', 'show']); const f = t.getModel('progress'); const g = f.get('show'); const y = t.getData(); const v = y.mapDimension('value'); const m = +t.get('min'); const x = +t.get('max'); const _ = [m, x]; const b = [o, a]; function w(e, n) { let i; const o = y.getItemModel(e).getModel('pointer'); const a = Er(o.get('width'), r.r); const s = Er(o.get('length'), r.r); const l = t.get(['pointer', 'icon']); const u = o.get('offsetCenter'); const h = Er(u[0], r.r); const c = Er(u[1], r.r); const p = o.get('keepAspect'); return (i = l ? Ly(l, h - a / 2, c - s, a, s, null, p) : new VA({ shape: { angle: -Math.PI / 2, width: a, r: s, x: h, y: c } })).rotation = -(n + Math.PI / 2), i.x = r.cx, i.y = r.cy, i } function S(t, e) { const n = f.get('roundCap') ? DS : Cu; const i = f.get('overlap'); const a = i ? f.get('width') : l / y.count(); const u = i ? r.r - a : r.r - (t + 1) * a; const h = i ? r.r : r.r - t * a; const c = new n({ shape: { startAngle: o, endAngle: e, cx: r.cx, cy: r.cy, clockwise: s, r0: u, r: h } }); return i && (c.z2 = x - y.get(v, t) % x), c }(g || d) && (y.diff(h).add((e) => { const n = y.get(v, e); if (d) { const i = w(e, o); oh(i, { rotation: -((isNaN(+n) ? b[0] : Nr(n, _, b, !0)) + Math.PI / 2) }, t), u.add(i), y.setItemGraphicEl(e, i) } if (g) { const r = S(e, o); const a = f.get('clip'); oh(r, { shape: { endAngle: Nr(n, _, b, a) } }, t), u.add(r), Ys(t.seriesIndex, y.dataType, e, r), p[e] = r } }).update((e, n) => { const i = y.get(v, e); if (d) { const r = h.getItemGraphicEl(n); const a = r ? r.rotation : o; const s = w(e, a); s.rotation = a, rh(s, { rotation: -((isNaN(+i) ? b[0] : Nr(i, _, b, !0)) + Math.PI / 2) }, t), u.add(s), y.setItemGraphicEl(e, s) } if (g) { const l = c[n]; const m = S(e, l ? l.shape.endAngle : o); const x = f.get('clip'); rh(m, { shape: { endAngle: Nr(i, _, b, x) } }, t), u.add(m), Ys(t.seriesIndex, y.dataType, e, m), p[e] = m } }).execute(), y.each((t) => { + const e = y.getItemModel(t); const n = e.getModel('emphasis'); const r = n.get('focus'); const o = n.get('blurScope'); const a = n.get('disabled'); if (d) { + const s = y.getItemGraphicEl(t); const l = y.getItemVisual(t, 'style'); const u = l.fill; if (s instanceof _s) { const h = s.style; s.useStyle(A({ image: h.image, x: h.x, y: h.y, width: h.width, height: h.height }, l)) } + else { + s.useStyle(l), s.type !== 'pointer' && s.setColor(u) + }s.setStyle(e.getModel(['pointer', 'itemStyle']).getItemStyle()), s.style.fill === 'auto' && s.setStyle('fill', i(Nr(y.get(v, t), _, [0, 1], !0))), s.z2EmphasisLift = 0, Vl(s, e), Rl(s, r, o, a) + } if (g) { const c = p[t]; c.useStyle(y.getItemVisual(t, 'style')), c.setStyle(e.getModel(['progress', 'itemStyle']).getItemStyle()), c.z2EmphasisLift = 0, Vl(c, e), Rl(c, r, o, a) } + }), this._progressEls = p) + }, e.prototype._renderAnchor = function (t, e) { const n = t.getModel('anchor'); if (n.get('show')) { const i = n.get('size'); const r = n.get('icon'); const o = n.get('offsetCenter'); const a = n.get('keepAspect'); const s = Ly(r, e.cx - i / 2 + Er(o[0], e.r), e.cy - i / 2 + Er(o[1], e.r), i, i, null, a); s.z2 = n.get('showAbove') ? 1 : 0, s.setStyle(n.getModel('itemStyle').getItemStyle()), this.group.add(s) } }, e.prototype._renderTitleAndDetail = function (t, e, n, i, r) { const o = this; const a = t.getData(); const s = a.mapDimension('value'); const l = +t.get('min'); const u = +t.get('max'); const h = new Cr(); const c = []; const p = []; const d = t.isAnimationEnabled(); const f = t.get(['pointer', 'showAbove']); a.diff(this._data).add((t) => { c[t] = new ks({ silent: !0 }), p[t] = new ks({ silent: !0 }) }).update((t, e) => { c[t] = o._titleEls[e], p[t] = o._detailEls[e] }).execute(), a.each((e) => { const n = a.getItemModel(e); const o = a.get(s, e); const g = new Cr(); const y = i(Nr(o, [l, u], [0, 1], !0)); const v = n.getModel('title'); if (v.get('show')) { const m = v.get('offsetCenter'); const x = r.cx + Er(m[0], r.r); const _ = r.cy + Er(m[1], r.r); (D = c[e]).attr({ z2: f ? 0 : 2, style: Uh(v, { x, y: _, text: a.getName(e), align: 'center', verticalAlign: 'middle' }, { inheritColor: y }) }), g.add(D) } const b = n.getModel('detail'); if (b.get('show')) { const w = b.get('offsetCenter'); const S = r.cx + Er(w[0], r.r); const M = r.cy + Er(w[1], r.r); const I = Er(b.get('width'), r.r); const T = Er(b.get('height'), r.r); const C = t.get(['progress', 'show']) ? a.getItemVisual(e, 'style').fill : y; var D = p[e]; const A = b.get('formatter'); D.attr({ z2: f ? 0 : 2, style: Uh(b, { x: S, y: M, text: BA(o, A), width: isNaN(I) ? null : I, height: isNaN(T) ? null : T, align: 'center', verticalAlign: 'middle' }, { inheritColor: C }) }), Qh(D, { normal: b }, o, (t) => { return BA(t, A) }), d && tc(D, e, a, t, { getFormattedLabel(t, e, n, i, r, a) { return BA(a ? a.interpolatedValue : o, A) } }), g.add(D) }h.add(g) }), this.group.add(h), this._titleEls = c, this._detailEls = p }, e.type = 'gauge', e + }(xg)); const GA = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.visualStyleAccessPath = 'itemStyle', n } return n(e, t), e.prototype.getInitialData = function (t, e) { return uM(this, ['value']) }, e.type = 'series.gauge', e.defaultOption = { z: 2, colorBy: 'data', center: ['50%', '50%'], legendHoverLink: !0, radius: '75%', startAngle: 225, endAngle: -45, clockwise: !0, min: 0, max: 100, splitNumber: 10, axisLine: { show: !0, roundCap: !1, lineStyle: { color: [[1, '#E6EBF8']], width: 10 } }, progress: { show: !1, overlap: !0, width: 10, roundCap: !1, clip: !0 }, splitLine: { show: !0, length: 10, distance: 10, lineStyle: { color: '#63677A', width: 3, type: 'solid' } }, axisTick: { show: !0, splitNumber: 5, length: 6, distance: 10, lineStyle: { color: '#63677A', width: 1, type: 'solid' } }, axisLabel: { show: !0, distance: 15, color: '#464646', fontSize: 12 }, pointer: { icon: null, offsetCenter: [0, 0], show: !0, showAbove: !0, length: '60%', width: 6, keepAspect: !1 }, anchor: { show: !1, showAbove: !1, size: 6, icon: 'circle', offsetCenter: [0, 0], keepAspect: !1, itemStyle: { color: '#fff', borderWidth: 0, borderColor: '#5470c6' } }, title: { show: !0, offsetCenter: [0, '20%'], color: '#464646', fontSize: 16, valueAnimation: !1 }, detail: { show: !0, backgroundColor: 'rgba(0,0,0,0)', borderWidth: 0, borderColor: '#ccc', width: 100, height: null, padding: [5, 10], offsetCenter: [0, '40%'], color: '#464646', fontSize: 30, fontWeight: 'bold', lineHeight: 30, valueAnimation: !1 } }, e }(sg)); const WA = ['itemStyle', 'opacity']; const HA = (function (t) { function e(e, n) { const i = t.call(this) || this; const r = i; const o = new Ru(); const a = new ks(); return r.setTextContent(a), i.setTextGuideLine(o), i.updateData(e, n, !0), i } return n(e, t), e.prototype.updateData = function (t, e, n) { const i = this; const r = t.hostModel; const o = t.getItemModel(e); const a = t.getItemLayout(e); const s = o.getModel('emphasis'); let l = o.get(WA); l = l == null ? 1 : l, n || hh(i), i.useStyle(t.getItemVisual(e, 'style')), i.style.lineJoin = 'round', n ? (i.setShape({ points: a.points }), i.style.opacity = 0, oh(i, { style: { opacity: l } }, r, e)) : rh(i, { style: { opacity: l }, shape: { points: a.points } }, r, e), Vl(i, o), this._updateLabel(t, e), Rl(this, s.get('focus'), s.get('blurScope'), s.get('disabled')) }, e.prototype._updateLabel = function (t, e) { const n = this; const i = this.getTextGuideLine(); const r = n.getTextContent(); const o = t.hostModel; const a = t.getItemModel(e); const s = t.getItemLayout(e).label; const l = t.getItemVisual(e, 'style'); const u = l.fill; Hh(r, Yh(a), { labelFetcher: t.hostModel, labelDataIndex: e, defaultOpacity: l.opacity, defaultText: t.getName(e) }, { normal: { align: s.textAlign, verticalAlign: s.verticalAlign } }), n.setTextConfig({ local: !0, inside: !!s.inside, insideStroke: u, outsideFill: u }); const h = s.linePoints; i.setShape({ points: h }), n.textGuideLineConfig = { anchor: h ? new Ji(h[0][0], h[0][1]) : null }, rh(r, { style: { x: s.x, y: s.y } }, o, e), r.attr({ rotation: s.rotation, originX: s.x, originY: s.y, z2: 10 }), db(n, fb(a), { stroke: u }) }, e }(Pu)); const YA = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.ignoreLabelLineUpdate = !0, n } return n(e, t), e.prototype.render = function (t, e, n) { const i = t.getData(); const r = this._data; const o = this.group; i.diff(r).add((t) => { const e = new HA(i, t); i.setItemGraphicEl(t, e), o.add(e) }).update((t, e) => { const n = r.getItemGraphicEl(e); n.updateData(i, t), o.add(n), i.setItemGraphicEl(t, n) }).remove((e) => { uh(r.getItemGraphicEl(e), t, e) }).execute(), this._data = i }, e.prototype.remove = function () { this.group.removeAll(), this._data = null }, e.prototype.dispose = function () {}, e.type = 'funnel', e }(xg)); const UA = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function (e) { t.prototype.init.apply(this, arguments), this.legendVisualProvider = new hM(W(this.getData, this), W(this.getRawData, this)), this._defaultLabelLine(e) }, e.prototype.getInitialData = function (t, e) { return uM(this, { coordDimensions: ['value'], encodeDefaulter: H(Yp, this) }) }, e.prototype._defaultLabelLine = function (t) { co(t, 'labelLine', ['show']); const e = t.labelLine; const n = t.emphasis.labelLine; e.show = e.show && t.label.show, n.show = n.show && t.emphasis.label.show }, e.prototype.getDataParams = function (e) { const n = this.getData(); const i = t.prototype.getDataParams.call(this, e); const r = n.mapDimension('value'); const o = n.getSum(r); return i.percent = o ? +(n.get(r, e) / o * 100).toFixed(2) : 0, i.$vars.push('percent'), i }, e.type = 'series.funnel', e.defaultOption = { z: 2, legendHoverLink: !0, colorBy: 'data', left: 80, top: 60, right: 80, bottom: 60, minSize: '0%', maxSize: '100%', sort: 'descending', orient: 'vertical', gap: 0, funnelAlign: 'center', label: { show: !0, position: 'outer' }, labelLine: { show: !0, length: 20, lineStyle: { width: 1 } }, itemStyle: { borderColor: '#fff', borderWidth: 1 }, emphasis: { label: { show: !0 } }, select: { itemStyle: { borderColor: '#212121' } } }, e }(sg)); function XA(t, e) { + t.eachSeriesByType('funnel', (t) => { + const n = t.getData(); const i = n.mapDimension('value'); const r = t.get('sort'); const o = (function (t, e) { return xp(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }) }(t, e)); const a = t.get('orient'); const s = o.width; const l = o.height; let u = (function (t, e) { for (var n = t.mapDimension('value'), i = t.mapArray(n, (t) => { return t }), r = [], o = e === 'ascending', a = 0, s = t.count(); a < s; a++)r[a] = a; return U(e) ? r.sort(e) : e !== 'none' && r.sort((t, e) => { return o ? i[t] - i[e] : i[e] - i[t] }), r }(n, r)); let h = o.x; let c = o.y; const p = a === 'horizontal' ? [Er(t.get('minSize'), l), Er(t.get('maxSize'), l)] : [Er(t.get('minSize'), s), Er(t.get('maxSize'), s)]; const d = n.getDataExtent(i); let f = t.get('min'); let g = t.get('max'); f == null && (f = Math.min(d[0], 0)), g == null && (g = d[1]); const y = t.get('funnelAlign'); let v = t.get('gap'); let m = ((a === 'horizontal' ? s : l) - v * (n.count() - 1)) / n.count(); const x = function (t, e) { if (a === 'horizontal') { const r = Nr(n.get(i, t) || 0, [f, g], p, !0); let o = void 0; switch (y) { case 'top':o = c; break; case 'center':o = c + (l - r) / 2; break; case 'bottom':o = c + (l - r) } return [[e, o], [e, o + r]] } let u; const d = Nr(n.get(i, t) || 0, [f, g], p, !0); switch (y) { case 'left':u = h; break; case 'center':u = h + (s - d) / 2; break; case 'right':u = h + s - d } return [[u, e], [u + d, e]] }; r === 'ascending' && (m = -m, v = -v, a === 'horizontal' ? h += s : c += l, u = u.reverse()); for (let _ = 0; _ < u.length; _++) { + const b = u[_]; const w = u[_ + 1]; const S = n.getItemModel(b); if (a === 'horizontal') { let M = S.get(['itemStyle', 'width']); M == null ? M = m : (M = Er(M, s), r === 'ascending' && (M = -M)); var I = x(b, h); var T = x(w, h + M); h += M + v, n.setItemLayout(b, { points: I.concat(T.slice().reverse()) }) } + else { let C = S.get(['itemStyle', 'height']); C == null ? C = m : (C = Er(C, l), r === 'ascending' && (C = -C)), I = x(b, c), T = x(w, c + C), c += C + v, n.setItemLayout(b, { points: I.concat(T.slice().reverse()) }) } + }!(function (t) { + const e = t.hostModel.get('orient'); t.each((n) => { + let i; let r; let o; let a; const s = t.getItemModel(n); const l = s.getModel('label').get('position'); const u = s.getModel('labelLine'); const h = t.getItemLayout(n); const c = h.points; const p = l === 'inner' || l === 'inside' || l === 'center' || l === 'insideLeft' || l === 'insideRight'; if (p) { + l === 'insideLeft' ? (r = (c[0][0] + c[3][0]) / 2 + 5, o = (c[0][1] + c[3][1]) / 2, i = 'left') : l === 'insideRight' ? (r = (c[1][0] + c[2][0]) / 2 - 5, o = (c[1][1] + c[2][1]) / 2, i = 'right') : (r = (c[0][0] + c[1][0] + c[2][0] + c[3][0]) / 4, o = (c[0][1] + c[1][1] + c[2][1] + c[3][1]) / 4, i = 'center'), a = [[r, o], [r, o]] + } + else { let d = void 0; let f = void 0; let g = void 0; let y = void 0; const v = u.get('length'); l === 'left' ? (d = (c[3][0] + c[0][0]) / 2, f = (c[3][1] + c[0][1]) / 2, r = (g = d - v) - 5, i = 'right') : l === 'right' ? (d = (c[1][0] + c[2][0]) / 2, f = (c[1][1] + c[2][1]) / 2, r = (g = d + v) + 5, i = 'left') : l === 'top' ? (d = (c[3][0] + c[0][0]) / 2, o = (y = (f = (c[3][1] + c[0][1]) / 2) - v) - 5, i = 'center') : l === 'bottom' ? (d = (c[1][0] + c[2][0]) / 2, o = (y = (f = (c[1][1] + c[2][1]) / 2) + v) + 5, i = 'center') : l === 'rightTop' ? (d = e === 'horizontal' ? c[3][0] : c[1][0], f = e === 'horizontal' ? c[3][1] : c[1][1], e === 'horizontal' ? (o = (y = f - v) - 5, i = 'center') : (r = (g = d + v) + 5, i = 'top')) : l === 'rightBottom' ? (d = c[2][0], f = c[2][1], e === 'horizontal' ? (o = (y = f + v) + 5, i = 'center') : (r = (g = d + v) + 5, i = 'bottom')) : l === 'leftTop' ? (d = c[0][0], f = e === 'horizontal' ? c[0][1] : c[1][1], e === 'horizontal' ? (o = (y = f - v) - 5, i = 'center') : (r = (g = d - v) - 5, i = 'right')) : l === 'leftBottom' ? (d = e === 'horizontal' ? c[1][0] : c[3][0], f = e === 'horizontal' ? c[1][1] : c[2][1], e === 'horizontal' ? (o = (y = f + v) + 5, i = 'center') : (r = (g = d - v) - 5, i = 'right')) : (d = (c[1][0] + c[2][0]) / 2, f = (c[1][1] + c[2][1]) / 2, e === 'horizontal' ? (o = (y = f + v) + 5, i = 'center') : (r = (g = d + v) + 5, i = 'left')), e === 'horizontal' ? r = g = d : o = y = f, a = [[d, f], [g, y]] }h.label = { linePoints: a, x: r, y: o, verticalAlign: 'middle', textAlign: i, inside: p } + }) + }(n)) + }) + } const ZA = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n._dataGroup = new Cr(), n._initialized = !1, n } return n(e, t), e.prototype.init = function () { this.group.add(this._dataGroup) }, e.prototype.render = function (t, e, n, i) { this._progressiveEls = null; const r = this._dataGroup; const o = t.getData(); const a = this._data; const s = t.coordinateSystem; const l = s.dimensions; const u = KA(t); if (o.diff(a).add((t) => { $A(qA(o, r, t, l, s), o, t, u) }).update((e, n) => { const i = a.getItemGraphicEl(n); const r = jA(o, e, l, s); o.setItemGraphicEl(e, i), rh(i, { shape: { points: r } }, t, e), hh(i), $A(i, o, e, u) }).remove((t) => { const e = a.getItemGraphicEl(t); r.remove(e) }).execute(), !this._initialized) { this._initialized = !0; const h = (function (t, e, n) { const i = t.model; const r = t.getRect(); const o = new Cs({ shape: { x: r.x, y: r.y, width: r.width, height: r.height } }); const a = i.get('layout') === 'horizontal' ? 'width' : 'height'; return o.setShape(a, 0), oh(o, { shape: { width: r.width, height: r.height } }, e, n), o }(s, t, () => { setTimeout(() => { r.removeClipPath() }) })); r.setClipPath(h) } this._data = o }, e.prototype.incrementalPrepareRender = function (t, e, n) { this._initialized = !0, this._data = null, this._dataGroup.removeAll() }, e.prototype.incrementalRender = function (t, e, n) { for (let i = e.getData(), r = e.coordinateSystem, o = r.dimensions, a = KA(e), s = this._progressiveEls = [], l = t.start; l < t.end; l++) { const u = qA(i, this._dataGroup, l, o, r); u.incremental = !0, $A(u, i, l, a), s.push(u) } }, e.prototype.remove = function () { this._dataGroup && this._dataGroup.removeAll(), this._data = null }, e.type = 'parallel', e }(xg)); function jA(t, e, n, i) { for (var r, o = [], a = 0; a < n.length; a++) { const s = n[a]; const l = t.get(t.mapDimension(s), e); r = l, (i.getAxis(s).type === 'category' ? r == null : r == null || isNaN(r)) || o.push(i.dataToPoint(l, s)) } return o } function qA(t, e, n, i, r) { const o = jA(t, n, i, r); const a = new Ru({ shape: { points: o }, z2: 10 }); return e.add(a), t.setItemGraphicEl(n, a), a } function KA(t) { let e = t.get('smooth', !0); return !0 === e && (e = 0.3), nt(e = to(e)) && (e = 0), { smooth: e } } function $A(t, e, n, i) { t.useStyle(e.getItemVisual(n, 'style')), t.style.fill = null, t.setShape('smooth', i.smooth); const r = e.getItemModel(n); const o = r.getModel('emphasis'); Vl(t, r, 'lineStyle'), Rl(t, o.get('focus'), o.get('blurScope'), o.get('disabled')) } const JA = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.visualStyleAccessPath = 'lineStyle', n.visualDrawType = 'stroke', n } return n(e, t), e.prototype.getInitialData = function (t, e) { return rx(null, this, { useEncodeDefaulter: W(QA, null, this) }) }, e.prototype.getRawIndicesByActiveState = function (t) { const e = this.coordinateSystem; const n = this.getData(); const i = []; return e.eachActiveState(n, (e, r) => { t === e && i.push(n.getRawIndex(r)) }), i }, e.type = 'series.parallel', e.dependencies = ['parallel'], e.defaultOption = { z: 2, coordinateSystem: 'parallel', parallelIndex: 0, label: { show: !1 }, inactiveOpacity: 0.05, activeOpacity: 1, lineStyle: { width: 1, opacity: 0.45, type: 'solid' }, emphasis: { label: { show: !1 } }, progressive: 500, smooth: !1, animationEasing: 'linear' }, e }(sg)); function QA(t) { const e = t.ecModel.getComponent('parallel', t.get('parallelIndex')); if (e) { const n = {}; return E(e.dimensions, (t) => { const e = +t.replace('dim', ''); n[t] = e }), n } } const tk = ['lineStyle', 'opacity']; const ek = { seriesType: 'parallel', reset(t, e) { const n = t.coordinateSystem; const i = { normal: t.get(['lineStyle', 'opacity']), active: t.get('activeOpacity'), inactive: t.get('inactiveOpacity') }; return { progress(t, e) { n.eachActiveState(e, (t, n) => { let r = i[t]; if (t === 'normal' && e.hasItemOption) { const o = e.getItemModel(n).get(tk, !0); o != null && (r = o) }e.ensureUniqueItemVisual(n, 'style').opacity = r }, t.start, t.end) } } } }; function nk(t) { !(function (t) { if (!t.parallel) { let e = !1; E(t.series, (t) => { t && t.type === 'parallel' && (e = !0) }), e && (t.parallel = [{}]) } }(t)), (function (t) { E(ho(t.parallelAxis), (e) => { if (q(e)) { const n = e.parallelIndex || 0; const i = ho(t.parallel)[n]; i && i.parallelAxisDefault && C(e, i.parallelAxisDefault, !1) } }) }(t)) } const ik = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { this._model = t, this._api = n, this._handlers || (this._handlers = {}, E(rk, function (t, e) { n.getZr().on(e, this._handlers[e] = W(t, this)) }, this)), Ag(this, '_throttledDispatchExpand', t.get('axisExpandRate'), 'fixRate') }, e.prototype.dispose = function (t, e) { kg(this, '_throttledDispatchExpand'), E(this._handlers, (t, n) => { e.getZr().off(n, t) }), this._handlers = null }, e.prototype._throttledDispatchExpand = function (t) { this._dispatchExpand(t) }, e.prototype._dispatchExpand = function (t) { t && this._api.dispatchAction(A({ type: 'parallelAxisExpand' }, t)) }, e.type = 'parallel', e }(gg)); var rk = { mousedown(t) { ok(this, 'click') && (this._mouseDownPoint = [t.offsetX, t.offsetY]) }, mouseup(t) { + const e = this._mouseDownPoint; if (ok(this, 'click') && e) { + const n = [t.offsetX, t.offsetY]; if ((e[0] - n[0]) ** 2 + (e[1] - n[1]) ** 2 > 5) + return; const i = this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX, t.offsetY]); i.behavior !== 'none' && this._dispatchExpand({ axisExpandWindow: i.axisExpandWindow }) + } this._mouseDownPoint = null + }, mousemove(t) { if (!this._mouseDownPoint && ok(this, 'mousemove')) { const e = this._model; const n = e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX, t.offsetY]); const i = n.behavior; i === 'jump' && this._throttledDispatchExpand.debounceNextCall(e.get('axisExpandDebounce')), this._throttledDispatchExpand(i === 'none' ? null : { axisExpandWindow: n.axisExpandWindow, animation: i === 'jump' ? null : { duration: 0 } }) } } }; function ok(t, e) { const n = t._model; return n.get('axisExpandable') && n.get('axisExpandTriggerOn') === e } const ak = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function () { t.prototype.init.apply(this, arguments), this.mergeOption({}) }, e.prototype.mergeOption = function (t) { const e = this.option; t && C(e, t, !0), this._initDimensions() }, e.prototype.contains = function (t, e) { const n = t.get('parallelIndex'); return n != null && e.getComponent('parallel', n) === this }, e.prototype.setAxisExpand = function (t) { E(['axisExpandable', 'axisExpandCenter', 'axisExpandCount', 'axisExpandWidth', 'axisExpandWindow'], function (e) { t.hasOwnProperty(e) && (this.option[e] = t[e]) }, this) }, e.prototype._initDimensions = function () { const t = this.dimensions = []; const e = this.parallelAxisIndex = []; E(B(this.ecModel.queryComponents({ mainType: 'parallelAxis' }), function (t) { return (t.get('parallelIndex') || 0) === this.componentIndex }, this), (n) => { t.push(`dim${n.get('dim')}`), e.push(n.componentIndex) }) }, e.type = 'parallel', e.dependencies = ['parallelAxis'], e.layoutMode = 'box', e.defaultOption = { z: 0, left: 80, top: 60, right: 80, bottom: 60, layout: 'horizontal', axisExpandable: !1, axisExpandCenter: null, axisExpandCount: 0, axisExpandWidth: 50, axisExpandRate: 17, axisExpandDebounce: 50, axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4], axisExpandTriggerOn: 'click', parallelAxisDefault: null }, e }(Tp)); const sk = (function (t) { function e(e, n, i, r, o) { const a = t.call(this, e, n, i) || this; return a.type = r || 'value', a.axisIndex = o, a } return n(e, t), e.prototype.isHorizontal = function () { return this.coordinateSystem.getModel().get('layout') !== 'horizontal' }, e }(H_)); function lk(t, e, n, i, r, o) { t = t || 0; const a = n[1] - n[0]; if (r != null && (r = hk(r, [0, a])), o != null && (o = Math.max(o, r != null ? r : 0)), i === 'all') { let s = Math.abs(e[1] - e[0]); s = hk(s, [0, a]), r = o = hk(s, [r, o]), i = 0 }e[0] = hk(e[0], n), e[1] = hk(e[1], n); const l = uk(e, i); e[i] += t; let u; const h = r || 0; const c = n.slice(); return l.sign < 0 ? c[0] += h : c[1] -= h, e[i] = hk(e[i], c), u = uk(e, i), r != null && (u.sign !== l.sign || u.span < r) && (e[1 - i] = e[i] + l.sign * r), u = uk(e, i), o != null && u.span > o && (e[1 - i] = e[i] + u.sign * o), e } function uk(t, e) { const n = t[e] - t[1 - e]; return { span: Math.abs(n), sign: n > 0 ? -1 : n < 0 ? 1 : e ? -1 : 1 } } function hk(t, e) { return Math.min(e[1] != null ? e[1] : 1 / 0, Math.max(e[0] != null ? e[0] : -1 / 0, t)) } const ck = E; const pk = Math.min; const dk = Math.max; const fk = Math.floor; const gk = Math.ceil; const yk = zr; const vk = Math.PI; const mk = (function () { + function t(t, e, n) { this.type = 'parallel', this._axesMap = ft(), this._axesLayout = {}, this.dimensions = t.dimensions, this._model = t, this._init(t, e, n) } return t.prototype._init = function (t, e, n) { const i = t.dimensions; const r = t.parallelAxisIndex; ck(i, function (t, n) { const i = r[n]; const o = e.getComponent('parallelAxis', i); const a = this._axesMap.set(t, new sk(t, o_(o), [0, 0], o.get('type'), i)); const s = a.type === 'category'; a.onBand = s && o.get('boundaryGap'), a.inverse = o.get('inverse'), o.axis = a, a.model = o, a.coordinateSystem = o.coordinateSystem = this }, this) }, t.prototype.update = function (t, e) { this._updateAxesFromSeries(this._model, t) }, t.prototype.containPoint = function (t) { const e = this._makeLayoutInfo(); const n = e.axisBase; const i = e.layoutBase; const r = e.pixelDimIndex; const o = t[1 - r]; const a = t[r]; return o >= n && o <= n + e.axisLength && a >= i && a <= i + e.layoutLength }, t.prototype.getModel = function () { return this._model }, t.prototype._updateAxesFromSeries = function (t, e) { e.eachSeries(function (n) { if (t.contains(n, e)) { const i = n.getData(); ck(this.dimensions, function (t) { const e = this._axesMap.get(t); e.scale.unionExtentFromData(i, i.mapDimension(t)), r_(e.scale, e.model) }, this) } }, this) }, t.prototype.resize = function (t, e) { this._rect = xp(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }), this._layoutAxes() }, t.prototype.getRect = function () { return this._rect }, t.prototype._makeLayoutInfo = function () { let t; const e = this._model; const n = this._rect; const i = ['x', 'y']; const r = ['width', 'height']; const o = e.get('layout'); const a = o === 'horizontal' ? 0 : 1; const s = n[r[a]]; const l = [0, s]; const u = this.dimensions.length; const h = xk(e.get('axisExpandWidth'), l); const c = xk(e.get('axisExpandCount') || 0, [0, u]); const p = e.get('axisExpandable') && u > 3 && u > c && c > 1 && h > 0 && s > 0; let d = e.get('axisExpandWindow'); d ? (t = xk(d[1] - d[0], l), d[1] = d[0] + t) : (t = xk(h * (c - 1), l), (d = [h * (e.get('axisExpandCenter') || fk(u / 2)) - t / 2])[1] = d[0] + t); let f = (s - t) / (u - c); f < 3 && (f = 0); const g = [fk(yk(d[0] / h, 1)) + 1, gk(yk(d[1] / h, 1)) - 1]; const y = f / h * d[0]; return { layout: o, pixelDimIndex: a, layoutBase: n[i[a]], layoutLength: s, axisBase: n[i[1 - a]], axisLength: n[r[1 - a]], axisExpandable: p, axisExpandWidth: h, axisCollapseWidth: f, axisExpandWindow: d, axisCount: u, winInnerIndices: g, axisExpandWindow0Pos: y } }, t.prototype._layoutAxes = function () { const t = this._rect; const e = this._axesMap; const n = this.dimensions; const i = this._makeLayoutInfo(); const r = i.layout; e.each((t) => { const e = [0, i.axisLength]; const n = t.inverse ? 1 : 0; t.setExtent(e[n], e[1 - n]) }), ck(n, function (e, n) { const o = (i.axisExpandable ? bk : _k)(n, i); const a = { horizontal: { x: o.position, y: i.axisLength }, vertical: { x: 0, y: o.position } }; const s = { horizontal: vk / 2, vertical: 0 }; const l = [a[r].x + t.x, a[r].y + t.y]; const u = s[r]; const h = [1, 0, 0, 1, 0, 0]; zi(h, h, u), Ei(h, h, l), this._axesLayout[e] = { position: l, rotation: u, transform: h, axisNameAvailableWidth: o.axisNameAvailableWidth, axisLabelShow: o.axisLabelShow, nameTruncateMaxWidth: o.nameTruncateMaxWidth, tickDirection: 1, labelDirection: 1 } }, this) }, t.prototype.getAxis = function (t) { return this._axesMap.get(t) }, t.prototype.dataToPoint = function (t, e) { return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t), e) }, t.prototype.eachActiveState = function (t, e, n, i) { + n == null && (n = 0), i == null && (i = t.count()); const r = this._axesMap; const o = this.dimensions; const a = []; const s = []; E(o, (e) => { a.push(t.mapDimension(e)), s.push(r.get(e).model) }); for (let l = this.hasAxisBrushed(), u = n; u < i; u++) { + let h = void 0; if (l) { + h = 'active'; for (let c = t.getValues(a, u), p = 0, d = o.length; p < d; p++) { + if (s[p].getActiveState(c[p]) === 'inactive') { h = 'inactive'; break } + } + } + else { + h = 'normal' + }e(h, u) + } + }, t.prototype.hasAxisBrushed = function () { for (var t = this.dimensions, e = this._axesMap, n = !1, i = 0, r = t.length; i < r; i++)e.get(t[i]).model.getActiveState() !== 'normal' && (n = !0); return n }, t.prototype.axisCoordToPoint = function (t, e) { return Th([t, 0], this._axesLayout[e].transform) }, t.prototype.getAxisLayout = function (t) { return T(this._axesLayout[t]) }, t.prototype.getSlidedAxisExpandWindow = function (t) { + const e = this._makeLayoutInfo(); const n = e.pixelDimIndex; let i = e.axisExpandWindow.slice(); const r = i[1] - i[0]; const o = [0, e.axisExpandWidth * (e.axisCount - 1)]; if (!this.containPoint(t)) + return { behavior: 'none', axisExpandWindow: i }; let a; const s = t[n] - e.layoutBase - e.axisExpandWindow0Pos; let l = 'slide'; const u = e.axisCollapseWidth; const h = this._model.get('axisExpandSlideTriggerArea'); const c = h[0] != null; if (u) { + c && u && s < r * h[0] ? (l = 'jump', a = s - r * h[2]) : c && u && s > r * (1 - h[0]) ? (l = 'jump', a = s - r * (1 - h[2])) : (a = s - r * h[1]) >= 0 && (a = s - r * (1 - h[1])) <= 0 && (a = 0), (a *= e.axisExpandWidth / u) ? lk(a, i, o, 'all') : l = 'none' + } + else { const p = i[1] - i[0]; (i = [dk(0, o[1] * s / p - p / 2)])[1] = pk(o[1], i[0] + p), i[0] = i[1] - p } return { axisExpandWindow: i, behavior: l } + }, t + }()); function xk(t, e) { return pk(dk(t, e[0]), e[1]) } function _k(t, e) { const n = e.layoutLength / (e.axisCount - 1); return { position: n * t, axisNameAvailableWidth: n, axisLabelShow: !0 } } function bk(t, e) { let n; let i; const r = e.layoutLength; const o = e.axisExpandWidth; const a = e.axisCount; const s = e.axisCollapseWidth; const l = e.winInnerIndices; let u = s; let h = !1; return t < l[0] ? (n = t * s, i = s) : t <= l[1] ? (n = e.axisExpandWindow0Pos + t * o - e.axisExpandWindow[0], u = o, h = !0) : (n = r - (a - 1 - t) * s, i = s), { position: n, axisNameAvailableWidth: u, axisLabelShow: h, nameTruncateMaxWidth: i } } const wk = { create(t, e) { const n = []; return t.eachComponent('parallel', (i, r) => { const o = new mk(i, t, e); o.name = `parallel_${r}`, o.resize(i, e), i.coordinateSystem = o, o.model = i, n.push(o) }), t.eachSeries((t) => { if (t.get('coordinateSystem') === 'parallel') { const e = t.getReferringComponents('parallel', Co).models[0]; t.coordinateSystem = e.coordinateSystem } }), n } }; const Sk = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.activeIntervals = [], n } return n(e, t), e.prototype.getAreaSelectStyle = function () { return Wo([['fill', 'color'], ['lineWidth', 'borderWidth'], ['stroke', 'borderColor'], ['width', 'width'], ['opacity', 'opacity']])(this.getModel('areaSelectStyle')) }, e.prototype.setActiveIntervals = function (t) { + const e = this.activeIntervals = T(t); if (e) { + for (let n = e.length - 1; n >= 0; n--)Vr(e[n]) + } + }, e.prototype.getActiveState = function (t) { + const e = this.activeIntervals; if (!e.length) + return 'normal'; if (t == null || isNaN(+t)) + return 'inactive'; if (e.length === 1) { + const n = e[0]; if (n[0] <= t && t <= n[1]) + return 'active' + } + else { + for (let i = 0, r = e.length; i < r; i++) { + if (e[i][0] <= t && t <= e[i][1]) + return 'active' + } + } return 'inactive' + }, e + }(Tp)); R(Sk, p_); const Mk = !0; const Ik = Math.min; const Tk = Math.max; const Ck = Math.pow; const Dk = 'globalPan'; const Ak = { w: [0, 0], e: [0, 1], n: [1, 0], s: [1, 1] }; const kk = { w: 'ew', e: 'ew', n: 'ns', s: 'ns', ne: 'nesw', sw: 'nesw', nw: 'nwse', se: 'nwse' }; const Lk = { brushStyle: { lineWidth: 2, stroke: 'rgba(210,219,238,0.3)', fill: '#D2DBEE' }, transformable: !0, brushMode: 'single', removeOnClick: !1 }; let Pk = 0; const Ok = (function (t) { + function e(e) { const n = t.call(this) || this; return n._track = [], n._covers = [], n._handlers = {}, n._zr = e, n.group = new Cr(), n._uid = `brushController_${Pk++}`, E(aL, function (t, e) { this._handlers[e] = W(t, this) }, n), n } return n(e, t), e.prototype.enableBrush = function (t) { return this._brushType && this._doDisableBrush(), t.brushType && this._doEnableBrush(t), this }, e.prototype._doEnableBrush = function (t) { const e = this._zr; this._enableGlobalPan || (function (t, e, n) { AI(t)[e] = n }(e, Dk, this._uid)), E(this._handlers, (t, n) => { e.on(n, t) }), this._brushType = t.brushType, this._brushOption = C(T(Lk), t, !0) }, e.prototype._doDisableBrush = function () { const t = this._zr; !(function (t, e, n) { const i = AI(t); i[e] === n && (i[e] = null) }(t, Dk, this._uid)), E(this._handlers, (e, n) => { t.off(n, e) }), this._brushType = this._brushOption = null }, e.prototype.setPanels = function (t) { + if (t && t.length) { const e = this._panels = {}; E(t, (t) => { e[t.panelId] = T(t) }) } + else { + this._panels = null + } return this + }, e.prototype.mount = function (t) { t = t || {}, this._enableGlobalPan = t.enableGlobalPan; const e = this.group; return this._zr.add(e), e.attr({ x: t.x || 0, y: t.y || 0, rotation: t.rotation || 0, scaleX: t.scaleX || 1, scaleY: t.scaleY || 1 }), this._transform = e.getLocalTransform(), this }, e.prototype.updateCovers = function (t) { + t = z(t, (t) => { return C(T(Lk), t, !0) }); const e = this._covers; const n = this._covers = []; const i = this; const r = this._creatingCover; return new Im(e, t, (t, e) => { return o(t.__brushOption, e) }, o).add(a).update(a).remove((t) => { e[t] !== r && i.group.remove(e[t]) }).execute(), this; function o(t, e) { return `${t.id != null ? t.id : `\0-brush-index-${e}`}-${t.brushType}` } function a(o, a) { + const s = t[o]; if (a != null && e[a] === r) { + n[o] = e[a] + } + else { const l = n[o] = a != null ? (e[a].__brushOption = s, e[a]) : Nk(i, Rk(i, s)); Vk(i, l) } + } + }, e.prototype.unmount = function () { return this.enableBrush(!1), Wk(this), this._zr.remove(this.group), this }, e.prototype.dispose = function () { this.unmount(), this.off() }, e + }(Xt)); function Rk(t, e) { const n = lL[e.brushType].createCover(t, e); return n.__brushOption = e, zk(n, e), t.group.add(n), n } function Nk(t, e) { const n = Bk(e); return n.endCreating && (n.endCreating(t, e), zk(e, e.__brushOption)), e } function Ek(t, e) { const n = e.__brushOption; Bk(e).updateCoverShape(t, e, n.range, n) } function zk(t, e) { let n = e.z; n == null && (n = 1e4), t.traverse((t) => { t.z = n, t.z2 = n }) } function Vk(t, e) { Bk(e).updateCommon(t, e), Ek(t, e) } function Bk(t) { return lL[t.__brushOption.brushType] } function Fk(t, e, n) { + let i; const r = t._panels; if (!r) + return Mk; const o = t._transform; return E(r, (t) => { t.isTargetByCursor(e, n, o) && (i = t) }), i + } function Gk(t, e) { + const n = t._panels; if (!n) + return Mk; const i = e.__brushOption.panelId; return i != null ? n[i] : Mk + } function Wk(t) { const e = t._covers; const n = e.length; return E(e, (e) => { t.group.remove(e) }, t), e.length = 0, !!n } function Hk(t, e) { const n = z(t._covers, (t) => { const e = t.__brushOption; const n = T(e.range); return { brushType: e.brushType, panelId: e.panelId, range: n } }); t.trigger('brush', { areas: n, isEnd: !!e.isEnd, removeOnClick: !!e.removeOnClick }) } function Yk(t) { let e = t.length - 1; return e < 0 && (e = 0), [t[0], t[e]] } function Uk(t, e, n, i) { const r = new Cr(); return r.add(new Cs({ name: 'main', style: qk(n), silent: !0, draggable: !0, cursor: 'move', drift: H(Jk, t, e, r, ['n', 's', 'w', 'e']), ondragend: H(Hk, e, { isEnd: !0 }) })), E(i, (n) => { r.add(new Cs({ name: n.join(''), style: { opacity: 0 }, draggable: !0, silent: !0, invisible: !0, drift: H(Jk, t, e, r, n), ondragend: H(Hk, e, { isEnd: !0 }) })) }), r } function Xk(t, e, n, i) { const r = i.brushStyle.lineWidth || 0; const o = Tk(r, 6); const a = n[0][0]; const s = n[1][0]; const l = a - r / 2; const u = s - r / 2; const h = n[0][1]; const c = n[1][1]; const p = h - o + r / 2; const d = c - o + r / 2; const f = h - a; const g = c - s; const y = f + r; const v = g + r; jk(t, e, 'main', a, s, f, g), i.transformable && (jk(t, e, 'w', l, u, o, v), jk(t, e, 'e', p, u, o, v), jk(t, e, 'n', l, u, y, o), jk(t, e, 's', l, d, y, o), jk(t, e, 'nw', l, u, o, o), jk(t, e, 'ne', p, u, o, o), jk(t, e, 'sw', l, d, o, o), jk(t, e, 'se', p, d, o, o)) } function Zk(t, e) { const n = e.__brushOption; const i = n.transformable; const r = e.childAt(0); r.useStyle(qk(n)), r.attr({ silent: !i, cursor: i ? 'move' : 'default' }), E([['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']], (n) => { const r = e.childOfName(n.join('')); const o = n.length === 1 ? $k(t, n[0]) : (function (t, e) { const n = [$k(t, e[0]), $k(t, e[1])]; return (n[0] === 'e' || n[0] === 'w') && n.reverse(), n.join('') }(t, n)); r && r.attr({ silent: !i, invisible: !i, cursor: i ? `${kk[o]}-resize` : null }) }) } function jk(t, e, n, i, r, o, a) { const s = e.childOfName(n); s && s.setShape(function (t) { const e = Ik(t[0][0], t[1][0]); const n = Ik(t[0][1], t[1][1]); return { x: e, y: n, width: Tk(t[0][0], t[1][0]) - e, height: Tk(t[0][1], t[1][1]) - n } }(eL(t, e, [[i, r], [i + o, r + a]]))) } function qk(t) { return k({ strokeNoScale: !0 }, t.brushStyle) } function Kk(t, e, n, i) { const r = [Ik(t, n), Ik(e, i)]; const o = [Tk(t, n), Tk(e, i)]; return [[r[0], o[0]], [r[1], o[1]]] } function $k(t, e) { return { left: 'w', right: 'e', top: 'n', bottom: 's' }[Ch({ w: 'left', e: 'right', n: 'top', s: 'bottom' }[e], (function (t) { return Ih(t.group) }(t)))] } function Jk(t, e, n, i, r, o) { const a = n.__brushOption; const s = t.toRectRange(a.range); const l = tL(e, r, o); E(i, (t) => { const e = Ak[t]; s[e[0]][e[1]] += l[e[0]] }), a.range = t.fromRectRange(Kk(s[0][0], s[1][0], s[0][1], s[1][1])), Vk(e, n), Hk(e, { isEnd: !1 }) } function Qk(t, e, n, i) { const r = e.__brushOption.range; const o = tL(t, n, i); E(r, (t) => { t[0] += o[0], t[1] += o[1] }), Vk(t, e), Hk(t, { isEnd: !1 }) } function tL(t, e, n) { const i = t.group; const r = i.transformCoordToLocal(e, n); const o = i.transformCoordToLocal(0, 0); return [r[0] - o[0], r[1] - o[1]] } function eL(t, e, n) { const i = Gk(t, e); return i && i !== Mk ? i.clipPath(n, t._transform) : T(n) } function nL(t) { const e = t.event; e.preventDefault && e.preventDefault() } function iL(t, e, n) { return t.childOfName('main').contain(e, n) } function rL(t, e, n, i) { + let r; let o = t._creatingCover; const a = t._creatingPanel; const s = t._brushOption; if (t._track.push(n.slice()), (function (t) { + const e = t._track; if (!e.length) + return !1; const n = e[e.length - 1]; const i = e[0]; const r = n[0] - i[0]; const o = n[1] - i[1]; return (r * r + o * o) ** 0.5 > 6 + }(t)) || o) { if (a && !o) { s.brushMode === 'single' && Wk(t); const l = T(s); l.brushType = oL(l.brushType, a), l.panelId = a === Mk ? null : a.panelId, o = t._creatingCover = Rk(t, l), t._covers.push(o) } if (o) { const u = lL[oL(t._brushType, a)]; o.__brushOption.range = u.getCreatingRange(eL(t, o, t._track)), i && (Nk(t, o), u.updateCommon(t, o)), Ek(t, o), r = { isEnd: i } } } + else { + i && s.brushMode === 'single' && s.removeOnClick && Fk(t, e, n) && Wk(t) && (r = { isEnd: i, removeOnClick: !0 }) + } return r + } function oL(t, e) { return t === 'auto' ? e.defaultBrushType : t } var aL = { mousedown(t) { + if (this._dragging) { + sL(this, t) + } + else if (!t.target || !t.target.draggable) { nL(t); const e = this.group.transformCoordToLocal(t.offsetX, t.offsetY); this._creatingCover = null, (this._creatingPanel = Fk(this, t, e)) && (this._dragging = !0, this._track = [e.slice()]) } + }, mousemove(t) { + const e = t.offsetX; const n = t.offsetY; const i = this.group.transformCoordToLocal(e, n); if ((function (t, e, n) { + if (t._brushType && !(function (t, e, n) { const i = t._zr; return e < 0 || e > i.getWidth() || n < 0 || n > i.getHeight() }(t, e.offsetX, e.offsetY))) { + const i = t._zr; const r = t._covers; const o = Fk(t, e, n); if (!t._dragging) { + for (let a = 0; a < r.length; a++) { + const s = r[a].__brushOption; if (o && (o === Mk || s.panelId === o.panelId) && lL[s.brushType].contain(r[a], n[0], n[1])) + return + } + }o && i.setCursorStyle('crosshair') + } + }(this, t, i)), this._dragging) { nL(t); const r = rL(this, t, i, !1); r && Hk(this, r) } + }, mouseup(t) { sL(this, t) } }; function sL(t, e) { if (t._dragging) { nL(e); const n = e.offsetX; const i = e.offsetY; const r = t.group.transformCoordToLocal(n, i); const o = rL(t, e, r, !0); t._dragging = !1, t._track = [], t._creatingCover = null, o && Hk(t, o) } } var lL = { lineX: uL(0), lineY: uL(1), rect: { createCover(t, e) { function n(t) { return t } return Uk({ toRectRange: n, fromRectRange: n }, t, e, [['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']]) }, getCreatingRange(t) { const e = Yk(t); return Kk(e[1][0], e[1][1], e[0][0], e[0][1]) }, updateCoverShape(t, e, n, i) { Xk(t, e, n, i) }, updateCommon: Zk, contain: iL }, polygon: { createCover(t, e) { const n = new Cr(); return n.add(new Ru({ name: 'main', style: qk(e), silent: !0 })), n }, getCreatingRange(t) { return t }, endCreating(t, e) { e.remove(e.childAt(0)), e.add(new Pu({ name: 'main', draggable: !0, drift: H(Qk, t, e), ondragend: H(Hk, t, { isEnd: !0 }) })) }, updateCoverShape(t, e, n, i) { e.childAt(0).setShape({ points: eL(t, e, n) }) }, updateCommon: Zk, contain: iL } }; function uL(t) { + return { createCover(e, n) { return Uk({ toRectRange(e) { const n = [e, [0, 100]]; return t && n.reverse(), n }, fromRectRange(e) { return e[t] } }, e, n, [[['w'], ['e']], [['n'], ['s']]][t]) }, getCreatingRange(e) { const n = Yk(e); return [Ik(n[0][t], n[1][t]), Tk(n[0][t], n[1][t])] }, updateCoverShape(e, n, i, r) { + let o; const a = Gk(e, n); if (a !== Mk && a.getLinearBrushOtherExtent) { + o = a.getLinearBrushOtherExtent(t) + } + else { const s = e._zr; o = [0, [s.getWidth(), s.getHeight()][1 - t]] } const l = [i, o]; t && l.reverse(), Xk(e, n, l, r) + }, updateCommon: Zk, contain: iL } + } function hL(t) { return t = dL(t), function (e) { return kh(e, t) } } function cL(t, e) { return t = dL(t), function (n) { const i = e != null ? e : n; const r = i ? t.width : t.height; const o = i ? t.x : t.y; return [o, o + (r || 0)] } } function pL(t, e, n) { const i = dL(t); return function (t, r) { return i.contain(r[0], r[1]) && !VI(t, e, n) } } function dL(t) { return sr.create(t) } const fL = ['axisLine', 'axisTickLabel', 'axisName']; const gL = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function (e, n) { t.prototype.init.apply(this, arguments), (this._brushController = new Ok(n.getZr())).on('brush', W(this._onBrush, this)) }, e.prototype.render = function (t, e, n, i) { if (!(function (t, e, n) { return n && n.type === 'axisAreaSelect' && e.findComponents({ mainType: 'parallelAxis', query: n })[0] === t }(t, e, i))) { this.axisModel = t, this.api = n, this.group.removeAll(); const r = this._axisGroup; if (this._axisGroup = new Cr(), this.group.add(this._axisGroup), t.get('show')) { const o = (function (t, e) { return e.getComponent('parallel', t.get('parallelIndex')) }(t, e)); const a = o.coordinateSystem; const s = t.getAreaSelectStyle(); const l = s.width; const u = t.axis.dim; const h = A({ strokeContainThreshold: l }, a.getAxisLayout(u)); const c = new GM(t, h); E(fL, c.add, c), this._axisGroup.add(c.getGroup()), this._refreshBrushController(h, s, t, o, l, n), Ah(r, this._axisGroup, t) } } }, e.prototype._refreshBrushController = function (t, e, n, i, r, o) { const a = n.axis.getExtent(); const s = a[1] - a[0]; const l = Math.min(30, 0.1 * Math.abs(s)); const u = sr.create({ x: a[0], y: -r / 2, width: s, height: r }); u.x -= l, u.width += 2 * l, this._brushController.mount({ enableGlobalPan: !0, rotation: t.rotation, x: t.position[0], y: t.position[1] }).setPanels([{ panelId: 'pl', clipPath: hL(u), isTargetByCursor: pL(u, o, i), getLinearBrushOtherExtent: cL(u, 0) }]).enableBrush({ brushType: 'lineX', brushStyle: e, removeOnClick: !0 }).updateCovers(function (t) { const e = t.axis; return z(t.activeIntervals, (t) => { return { brushType: 'lineX', panelId: 'pl', range: [e.dataToCoord(t[0], !0), e.dataToCoord(t[1], !0)] } }) }(n)) }, e.prototype._onBrush = function (t) { const e = t.areas; const n = this.axisModel; const i = n.axis; const r = z(e, (t) => { return [i.coordToData(t.range[0], !0), i.coordToData(t.range[1], !0)] }); (!n.option.realtime === t.isEnd || t.removeOnClick) && this.api.dispatchAction({ type: 'axisAreaSelect', parallelAxisId: n.id, intervals: r }) }, e.prototype.dispose = function () { this._brushController.dispose() }, e.type = 'parallelAxis', e }(gg)); const yL = { type: 'axisAreaSelect', event: 'axisAreaSelected' }; const vL = { type: 'value', areaSelectStyle: { width: 20, borderWidth: 1, borderColor: 'rgba(160,197,232)', color: 'rgba(160,197,232)', opacity: 0.3 }, realtime: !0, z: 10 }; function mL(t) { t.registerComponentView(ik), t.registerComponentModel(ak), t.registerCoordinateSystem('parallel', wk), t.registerPreprocessor(nk), t.registerComponentModel(Sk), t.registerComponentView(gL), MM(t, 'parallel', Sk, vL), (function (t) { t.registerAction(yL, (t, e) => { e.eachComponent({ mainType: 'parallelAxis', query: t }, (e) => { e.axis.model.setActiveIntervals(t.intervals) }) }), t.registerAction('parallelAxisExpand', (t, e) => { e.eachComponent({ mainType: 'parallel', query: t }, (e) => { e.setAxisExpand(t) }) }) }(t)) } const xL = function () { this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.cpx1 = 0, this.cpy1 = 0, this.cpx2 = 0, this.cpy2 = 0, this.extent = 0 }; const _L = (function (t) { function e(e) { return t.call(this, e) || this } return n(e, t), e.prototype.getDefaultShape = function () { return new xL() }, e.prototype.buildPath = function (t, e) { const n = e.extent; t.moveTo(e.x1, e.y1), t.bezierCurveTo(e.cpx1, e.cpy1, e.cpx2, e.cpy2, e.x2, e.y2), e.orient === 'vertical' ? (t.lineTo(e.x2 + n, e.y2), t.bezierCurveTo(e.cpx2 + n, e.cpy2, e.cpx1 + n, e.cpy1, e.x1 + n, e.y1)) : (t.lineTo(e.x2, e.y2 + n), t.bezierCurveTo(e.cpx2, e.cpy2 + n, e.cpx1, e.cpy1 + n, e.x1, e.y1 + n)), t.closePath() }, e.prototype.highlight = function () { _l(this) }, e.prototype.downplay = function () { bl(this) }, e }(gs)); const bL = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n._focusAdjacencyDisabled = !1, n } return n(e, t), e.prototype.render = function (t, e, n) { const i = this; const r = t.getGraph(); const o = this.group; const a = t.layoutInfo; const s = a.width; const l = a.height; const u = t.getData(); const h = t.getData('edge'); const c = t.get('orient'); this._model = t, o.removeAll(), o.x = a.x, o.y = a.y, r.eachEdge((e) => { const n = new _L(); const i = Hs(n); i.dataIndex = e.dataIndex, i.seriesIndex = t.seriesIndex, i.dataType = 'edge'; let r; let a; let u; let p; let d; let f; let g; let y; const v = e.getModel(); const m = v.getModel('lineStyle'); const x = m.get('curveness'); const _ = e.node1.getLayout(); const b = e.node1.getModel(); const w = b.get('localX'); const S = b.get('localY'); const M = e.node2.getLayout(); const I = e.node2.getModel(); const T = I.get('localX'); const C = I.get('localY'); const D = e.getLayout(); switch (n.shape.extent = Math.max(1, D.dy), n.shape.orient = c, c === 'vertical' ? (r = (w != null ? w * s : _.x) + D.sy, a = (S != null ? S * l : _.y) + _.dy, u = (T != null ? T * s : M.x) + D.ty, d = r, f = a * (1 - x) + (p = C != null ? C * l : M.y) * x, g = u, y = a * x + p * (1 - x)) : (r = (w != null ? w * s : _.x) + _.dx, a = (S != null ? S * l : _.y) + D.sy, d = r * (1 - x) + (u = T != null ? T * s : M.x) * x, f = a, g = r * x + u * (1 - x), y = p = (C != null ? C * l : M.y) + D.ty), n.setShape({ x1: r, y1: a, x2: u, y2: p, cpx1: d, cpy1: f, cpx2: g, cpy2: y }), n.useStyle(m.getItemStyle()), n.style.fill) {case 'source':n.style.fill = e.node1.getVisual('color'), n.style.decal = e.node1.getVisual('style').decal; break; case 'target':n.style.fill = e.node2.getVisual('color'), n.style.decal = e.node2.getVisual('style').decal; break; case 'gradient':var A = e.node1.getVisual('color'); var k = e.node2.getVisual('color'); X(A) && X(k) && (n.style.fill = new Xu(0, 0, +(c === 'horizontal'), +(c === 'vertical'), [{ color: A, offset: 0 }, { color: k, offset: 1 }])) } const L = v.getModel('emphasis'); Vl(n, v, 'lineStyle', (t) => { return t.getItemStyle() }), o.add(n), h.setItemGraphicEl(e.dataIndex, n); const P = L.get('focus'); Rl(n, P === 'adjacency' ? e.getAdjacentDataIndices() : P, L.get('blurScope'), L.get('disabled')), Hs(n).dataType = 'edge' }), r.eachNode((e) => { const n = e.getLayout(); const i = e.getModel(); const r = i.get('localX'); const a = i.get('localY'); const h = i.getModel('emphasis'); const c = new Cs({ shape: { x: r != null ? r * s : n.x, y: a != null ? a * l : n.y, width: n.dx, height: n.dy }, style: i.getModel('itemStyle').getItemStyle(), z2: 10 }); Hh(c, Yh(i), { labelFetcher: t, labelDataIndex: e.dataIndex, defaultText: e.id }), c.disableLabelAnimation = !0, c.setStyle('fill', e.getVisual('color')), c.setStyle('decal', e.getVisual('style').decal), Vl(c, i), o.add(c), u.setItemGraphicEl(e.dataIndex, c), Hs(c).dataType = 'node'; const p = h.get('focus'); Rl(c, p === 'adjacency' ? e.getAdjacentDataIndices() : p, h.get('blurScope'), h.get('disabled')) }), u.eachItemGraphicEl((e, r) => { u.getItemModel(r).get('draggable') && (e.drift = function (e, o) { i._focusAdjacencyDisabled = !0, this.shape.x += e, this.shape.y += o, this.dirty(), n.dispatchAction({ type: 'dragNode', seriesId: t.id, dataIndex: u.getRawIndex(r), localX: this.shape.x / s, localY: this.shape.y / l }) }, e.ondragend = function () { i._focusAdjacencyDisabled = !1 }, e.draggable = !0, e.cursor = 'move') }), !this._data && t.isAnimationEnabled() && o.setClipPath(function (t, e, n) { const i = new Cs({ shape: { x: t.x - 10, y: t.y - 10, width: 0, height: t.height + 20 } }); return oh(i, { shape: { width: t.width + 20 } }, e, () => { o.removeClipPath() }), i }(o.getBoundingRect(), t)), this._data = t.getData() }, e.prototype.dispose = function () {}, e.type = 'sankey', e }(xg)); const wL = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.getInitialData = function (t, e) { + const n = t.edges || t.links; const i = t.data || t.nodes; const r = t.levels; this.levelModels = []; for (let o = this.levelModels, a = 0; a < r.length; a++)r[a].depth != null && r[a].depth >= 0 && (o[r[a].depth] = new dc(r[a], this, e)); if (i && n) + return RA(i, n, this, !0, (t, e) => { t.wrapMethod('getItemModel', (t, e) => { const n = t.parentModel; const i = n.getData().getItemLayout(e); if (i) { const r = i.depth; const o = n.levelModels[r]; o && (t.parentModel = o) } return t }), e.wrapMethod('getItemModel', (t, e) => { const n = t.parentModel; const i = n.getGraph().getEdgeByIndex(e).node1.getLayout(); if (i) { const r = i.depth; const o = n.levelModels[r]; o && (t.parentModel = o) } return t }) }).data + }, e.prototype.setNodePosition = function (t, e) { const n = (this.option.data || this.option.nodes)[t]; n.localX = e[0], n.localY = e[1] }, e.prototype.getGraph = function () { return this.getData().graph }, e.prototype.getEdgeData = function () { return this.getGraph().edgeData }, e.prototype.formatTooltip = function (t, e, n) { function i(t) { return isNaN(t) || t == null } if (n === 'edge') { const r = this.getDataParams(t, n); const o = r.data; const a = r.value; return Xf('nameValue', { name: `${o.source} -- ${o.target}`, value: a, noValue: i(a) }) } const s = this.getGraph().getNodeByIndex(t).getLayout().value; const l = this.getDataParams(t, n).data.name; return Xf('nameValue', { name: l != null ? `${l}` : null, value: s, noValue: i(s) }) }, e.prototype.optionUpdated = function () {}, e.prototype.getDataParams = function (e, n) { const i = t.prototype.getDataParams.call(this, e, n); if (i.value == null && n === 'node') { const r = this.getGraph().getNodeByIndex(e).getLayout().value; i.value = r } return i }, e.type = 'series.sankey', e.defaultOption = { z: 2, coordinateSystem: 'view', left: '5%', top: '5%', right: '20%', bottom: '5%', orient: 'horizontal', nodeWidth: 20, nodeGap: 8, draggable: !0, layoutIterations: 32, label: { show: !0, position: 'right', fontSize: 12 }, levels: [], nodeAlign: 'justify', lineStyle: { color: '#314656', opacity: 0.2, curveness: 0.5 }, emphasis: { label: { show: !0 }, lineStyle: { opacity: 0.5 } }, select: { itemStyle: { borderColor: '#212121' } }, animationEasing: 'linear', animationDuration: 1e3 }, e + }(sg)); function SL(t, e) { + t.eachSeriesByType('sankey', (t) => { + const n = t.get('nodeWidth'); const i = t.get('nodeGap'); const r = (function (t, e) { return xp(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }) }(t, e)); t.layoutInfo = r; const o = r.width; const a = r.height; const s = t.getGraph(); const l = s.nodes; const u = s.edges; !(function (t) { E(t, (t) => { const e = OL(t.outEdges, PL); const n = OL(t.inEdges, PL); const i = t.getValue() || 0; const r = Math.max(e, n, i); t.setLayout({ value: r }, !0) }) }(l)), (function (t, e, n, i, r, o, a, s, l) { + (function (t, e, n, i, r, o, a) { + for (var s = [], l = [], u = [], h = [], c = 0, p = 0; p < e.length; p++)s[p] = 1; for (p = 0; p < t.length; p++)l[p] = t[p].inEdges.length, l[p] === 0 && u.push(t[p]); for (var d = -1; u.length;) { for (let f = 0; f < u.length; f++) { const g = u[f]; const y = g.hostGraph.data.getRawDataItem(g.dataIndex); const v = y.depth != null && y.depth >= 0; v && y.depth > d && (d = y.depth), g.setLayout({ depth: v ? y.depth : c }, !0), o === 'vertical' ? g.setLayout({ dy: n }, !0) : g.setLayout({ dx: n }, !0); for (let m = 0; m < g.outEdges.length; m++) { const x = g.outEdges[m]; s[e.indexOf(x)] = 0; const _ = x.node2; --l[t.indexOf(_)] == 0 && !h.includes(_) && h.push(_) } }++c, u = h, h = [] } for (p = 0; p < s.length; p++) { + if (s[p] === 1) + throw new Error('Sankey is a DAG, the original data has cycle!') + } const b = d > c - 1 ? d : c - 1; a && a !== 'left' && (function (t, e, n, i) { + if (e === 'right') { for (let r = [], o = t, a = 0; o.length;) { for (let s = 0; s < o.length; s++) { const l = o[s]; l.setLayout({ skNodeHeight: a }, !0); for (let u = 0; u < l.inEdges.length; u++) { const h = l.inEdges[u]; !r.includes(h.node1) && r.push(h.node1) } }o = r, r = [], ++a }E(t, (t) => { ML(t) || t.setLayout({ depth: Math.max(0, i - t.getLayout().skNodeHeight) }, !0) }) } + else { + e === 'justify' && (function (t, e) { E(t, (t) => { ML(t) || t.outEdges.length || t.setLayout({ depth: e }, !0) }) }(t, i)) + } + }(t, a, 0, b)), (function (t, e, n) { E(t, (t) => { const i = t.getLayout().depth * e; n === 'vertical' ? t.setLayout({ y: i }, !0) : t.setLayout({ x: i }, !0) }) }(t, o === 'vertical' ? (r - n) / b : (i - n) / b, o)) + })(t, e, n, r, o, s, l), (function (t, e, n, i, r, o, a) { const s = (function (t, e) { const n = []; const i = "vertical" === e ? "y" : "x"; const r = Lo(t, (t) =>{ return t.getLayout()[i] }); return r.keys.sort((t, e) => { return t - e }), E(r.keys, (t) => { n.push(r.buckets.get(t)) }), n }(t, a)); (function (t, e, n, i, r, o) { let a = 1 / 0; E(t, (t) => { const e = t.length; let s = 0; E(t, (t) => { s += t.getLayout().value }); const l = o === 'vertical' ? (i - (e - 1) * r) / s : (n - (e - 1) * r) / s; l < a && (a = l) }), E(t, (t) => { E(t, (t, e) => { const n = t.getLayout().value * a; o === 'vertical' ? (t.setLayout({ x: e }, !0), t.setLayout({ dx: n }, !0)) : (t.setLayout({ y: e }, !0), t.setLayout({ dy: n }, !0)) }) }), E(e, (t) => { const e = +t.getValue() * a; t.setLayout({ dy: e }, !0) }) })(s, e, n, i, r, a), IL(s, r, n, i, a); for (let l = 1; o > 0; o--)TL(s, l *= 0.99, a), IL(s, r, n, i, a), RL(s, l, a), IL(s, r, n, i, a) }(t, e, o, r, i, a, s)), (function (t, e) { const n = e === 'vertical' ? 'x' : 'y'; E(t, (t) => { t.outEdges.sort((t, e) => { return t.node2.getLayout()[n] - e.node2.getLayout()[n] }), t.inEdges.sort((t, e) => { return t.node1.getLayout()[n] - e.node1.getLayout()[n] }) }), E(t, (t) => { let e = 0; let n = 0; E(t.outEdges, (t) => { t.setLayout({ sy: e }, !0), e += t.getLayout().dy }), E(t.inEdges, (t) => { t.setLayout({ ty: n }, !0), n += t.getLayout().dy }) }) }(t, s)) + }(l, u, n, i, o, a, B(l, (t) => { return t.getLayout().value === 0 }).length !== 0 ? 0 : t.get('layoutIterations'), t.get('orient'), t.get('nodeAlign'))) + }) + } function ML(t) { const e = t.hostGraph.data.getRawDataItem(t.dataIndex); return e.depth != null && e.depth >= 0 } function IL(t, e, n, i, r) { + const o = r === 'vertical' ? 'x' : 'y'; E(t, (t) => { + let a, s, l; t.sort((t, e) => { return t.getLayout()[o] - e.getLayout()[o] }); for (var u = 0, h = t.length, c = r === 'vertical' ? 'dx' : 'dy', p = 0; p < h; p++)(l = u - (s = t[p]).getLayout()[o]) > 0 && (a = s.getLayout()[o] + l, r === 'vertical' ? s.setLayout({ x: a }, !0) : s.setLayout({ y: a }, !0)), u = s.getLayout()[o] + s.getLayout()[c] + e; if ((l = u - e - (r === 'vertical' ? i : n)) > 0) { + for (a = s.getLayout()[o] - l, r === 'vertical' ? s.setLayout({ x: a }, !0) : s.setLayout({ y: a }, !0), u = a, p = h - 2; p >= 0; --p)(l = (s = t[p]).getLayout()[o] + s.getLayout()[c] + e - u) > 0 && (a = s.getLayout()[o] - l, r === 'vertical' ? s.setLayout({ x: a }, !0) : s.setLayout({ y: a }, !0)), u = s.getLayout()[o] + } + }) + } function TL(t, e, n) { + E(t.slice().reverse(), (t) => { + E(t, (t) => { + if (t.outEdges.length) { + let i = OL(t.outEdges, CL, n) / OL(t.outEdges, PL); if (isNaN(i)) { const r = t.outEdges.length; i = r ? OL(t.outEdges, DL, n) / r : 0 } if (n === 'vertical') { const o = t.getLayout().x + (i - LL(t, n)) * e; t.setLayout({ x: o }, !0) } + else { const a = t.getLayout().y + (i - LL(t, n)) * e; t.setLayout({ y: a }, !0) } + } + }) + }) + } function CL(t, e) { return LL(t.node2, e) * t.getValue() } function DL(t, e) { return LL(t.node2, e) } function AL(t, e) { return LL(t.node1, e) * t.getValue() } function kL(t, e) { return LL(t.node1, e) } function LL(t, e) { return e === 'vertical' ? t.getLayout().x + t.getLayout().dx / 2 : t.getLayout().y + t.getLayout().dy / 2 } function PL(t) { return t.getValue() } function OL(t, e, n) { for (var i = 0, r = t.length, o = -1; ++o < r;) { const a = +e(t[o], n); isNaN(a) || (i += a) } return i } function RL(t, e, n) { + E(t, (t) => { + E(t, (t) => { + if (t.inEdges.length) { + let i = OL(t.inEdges, AL, n) / OL(t.inEdges, PL); if (isNaN(i)) { const r = t.inEdges.length; i = r ? OL(t.inEdges, kL, n) / r : 0 } if (n === 'vertical') { const o = t.getLayout().x + (i - LL(t, n)) * e; t.setLayout({ x: o }, !0) } + else { const a = t.getLayout().y + (i - LL(t, n)) * e; t.setLayout({ y: a }, !0) } + } + }) + }) + } function NL(t) { t.eachSeriesByType('sankey', (t) => { const e = t.getGraph().nodes; if (e.length) { let n = 1 / 0; let i = -1 / 0; E(e, (t) => { const e = t.getLayout().value; e < n && (n = e), e > i && (i = e) }), E(e, (e) => { const r = new iD({ type: 'color', mappingMethod: 'linear', dataExtent: [n, i], visual: t.get('color') }).mapValueToVisual(e.getLayout().value); const o = e.getModel().get(['itemStyle', 'color']); o != null ? (e.setVisual('color', o), e.setVisual('style', { fill: o })) : (e.setVisual('color', r), e.setVisual('style', { fill: r })) }) } }) } const EL = (function () { function t() {} return t.prototype.getInitialData = function (t, e) { let n; let i; const r = e.getComponent('xAxis', this.get('xAxisIndex')); const o = e.getComponent('yAxis', this.get('yAxisIndex')); const a = r.get('type'); const s = o.get('type'); a === 'category' ? (t.layout = 'horizontal', n = r.getOrdinalMeta(), i = !0) : s === 'category' ? (t.layout = 'vertical', n = o.getOrdinalMeta(), i = !0) : t.layout = t.layout || 'horizontal'; const l = ['x', 'y']; const u = t.layout === 'horizontal' ? 0 : 1; const h = this._baseAxisDim = l[u]; const c = l[1 - u]; const p = [r, o]; const d = p[u].get('type'); const f = p[1 - u].get('type'); const g = t.data; if (g && i) { const y = []; E(g, (t, e) => { let n; Y(t) ? (n = t.slice(), t.unshift(e)) : Y(t.value) ? ((n = A({}, t)).value = n.value.slice(), t.value.unshift(e)) : n = t, y.push(n) }), t.data = y } const v = this.defaultValueDimensions; const m = [{ name: h, type: Dm(d), ordinalMeta: n, otherDims: { tooltip: !1, itemName: 0 }, dimsDef: ['base'] }, { name: c, type: Dm(f), dimsDef: v.slice() }]; return uM(this, { coordDimensions: m, dimensionsCount: v.length + 1, encodeDefaulter: H(Hp, m, this) }) }, t.prototype.getBaseAxis = function () { const t = this._baseAxisDim; return this.ecModel.getComponent(`${t}Axis`, this.get(`${t}AxisIndex`)).axis }, t }()); const zL = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.defaultValueDimensions = [{ name: 'min', defaultTooltip: !0 }, { name: 'Q1', defaultTooltip: !0 }, { name: 'median', defaultTooltip: !0 }, { name: 'Q3', defaultTooltip: !0 }, { name: 'max', defaultTooltip: !0 }], n.visualDrawType = 'stroke', n } return n(e, t), e.type = 'series.boxplot', e.dependencies = ['xAxis', 'yAxis', 'grid'], e.defaultOption = { z: 2, coordinateSystem: 'cartesian2d', legendHoverLink: !0, layout: null, boxWidth: [7, 50], itemStyle: { color: '#fff', borderWidth: 1 }, emphasis: { scale: !0, itemStyle: { borderWidth: 2, shadowBlur: 5, shadowOffsetX: 1, shadowOffsetY: 1, shadowColor: 'rgba(0,0,0,0.2)' } }, animationDuration: 800 }, e }(sg)); R(zL, EL, !0); const VL = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { + const i = t.getData(); const r = this.group; const o = this._data; this._data || r.removeAll(); const a = t.get('layout') === 'horizontal' ? 1 : 0; i.diff(o).add((t) => { if (i.hasValue(t)) { const e = GL(i.getItemLayout(t), i, t, a, !0); i.setItemGraphicEl(t, e), r.add(e) } }).update((t, e) => { + let n = o.getItemGraphicEl(e); if (i.hasValue(t)) { const s = i.getItemLayout(t); n ? (hh(n), WL(s, n, i, t)) : n = GL(s, i, t, a), r.add(n), i.setItemGraphicEl(t, n) } + else { + r.remove(n) + } + }).remove((t) => { const e = o.getItemGraphicEl(t); e && r.remove(e) }).execute(), this._data = i + }, e.prototype.remove = function (t) { const e = this.group; const n = this._data; this._data = null, n && n.eachItemGraphicEl((t) => { t && e.remove(t) }) }, e.type = 'boxplot', e + }(xg)); const BL = function () {}; const FL = (function (t) { function e(e) { const n = t.call(this, e) || this; return n.type = 'boxplotBoxPath', n } return n(e, t), e.prototype.getDefaultShape = function () { return new BL() }, e.prototype.buildPath = function (t, e) { const n = e.points; let i = 0; for (t.moveTo(n[i][0], n[i][1]), i++; i < 4; i++)t.lineTo(n[i][0], n[i][1]); for (t.closePath(); i < n.length; i++)t.moveTo(n[i][0], n[i][1]), i++, t.lineTo(n[i][0], n[i][1]) }, e }(gs)); function GL(t, e, n, i, r) { const o = t.ends; const a = new FL({ shape: { points: r ? HL(o, i, t) : o } }); return WL(t, a, e, n, r), a } function WL(t, e, n, i, r) { const o = n.hostModel; (0, Bh[r ? 'initProps' : 'updateProps'])(e, { shape: { points: t.ends } }, o, i), e.useStyle(n.getItemVisual(i, 'style')), e.style.strokeNoScale = !0, e.z2 = 100; const a = n.getItemModel(i); const s = a.getModel('emphasis'); Vl(e, a), Rl(e, s.get('focus'), s.get('blurScope'), s.get('disabled')) } function HL(t, e, n) { return z(t, (t) => { return (t = t.slice())[e] = n.initBaseline, t }) } function YL(t, e) {} const UL = E; function XL(t) { + const e = (function (t) { const e = []; const n = []; return t.eachSeriesByType('boxplot', (t) => { const i = t.getBaseAxis(); let r = P(n, i); r < 0 && (r = n.length, n[r] = i, e[r] = { axis: i, seriesModels: [] }), e[r].seriesModels.push(t) }), e }(t)); UL(e, (t) => { + const e = t.seriesModels; e.length && ((function (t) { + let e; const n = t.axis; const i = t.seriesModels; const r = i.length; const o = t.boxWidthList = []; const a = t.boxOffsetList = []; const s = []; if (n.type === 'category') { + e = n.getBandWidth() + } + else { let l = 0; UL(i, (t) => { l = Math.max(l, t.getData().count()) }); const u = n.getExtent(); e = Math.abs(u[1] - u[0]) / l }UL(i, (t) => { let n = t.get('boxWidth'); Y(n) || (n = [n, n]), s.push([Er(n[0], e) || 0, Er(n[1], e) || 0]) }); const h = 0.8 * e - 2; const c = h / r * 0.3; const p = (h - c * (r - 1)) / r; let d = p / 2 - h / 2; UL(i, (t, e) => { a.push(d), d += c + p, o.push(Math.min(Math.max(p, s[e][0]), s[e][1])) }) + }(t)), UL(e, (e, n) => { + !(function (t, e, n) { + const i = t.coordinateSystem; const r = t.getData(); const o = n / 2; const a = t.get('layout') === 'horizontal' ? 0 : 1; const s = 1 - a; const l = ['x', 'y']; const u = r.mapDimension(l[a]); const h = r.mapDimensionsAll(l[s]); if (!(u == null || h.length < 5)) { + for (let c = 0; c < r.count(); c++) { const p = r.get(u, c); const d = x(p, h[2], c); const f = x(p, h[0], c); const g = x(p, h[1], c); const y = x(p, h[3], c); const v = x(p, h[4], c); const m = []; _(m, g, !1), _(m, y, !0), m.push(f, g, v, y), b(m, f), b(m, v), b(m, d), r.setItemLayout(c, { initBaseline: d[s], ends: m }) } + } function x(t, n, o) { let l; const u = r.get(n, o); const h = []; return h[a] = t, h[s] = u, isNaN(t) || isNaN(u) ? l = [Number.NaN, Number.NaN] : (l = i.dataToPoint(h))[a] += e, l } function _(t, e, n) { const i = e.slice(); const r = e.slice(); i[a] += o, r[a] -= o, n ? t.push(i, r) : t.push(r, i) } function b(t, e) { const n = e.slice(); const i = e.slice(); n[a] -= o, i[a] += o, t.push(n, i) } + }(e, t.boxOffsetList[n], t.boxWidthList[n])) + })) + }) + } const ZL = { type: 'echarts:boxplot', transform(t) { const e = t.upstream; if (e.sourceFormat !== Pp) { ao('') } const i = (function (t, e) { for (var n = [], i = [], r = (e = e || {}).boundIQR, o = r === 'none' || r === 0, a = 0; a < t.length; a++) { const s = Vr(t[a].slice()); const l = Jr(s, 0.25); const u = Jr(s, 0.5); const h = Jr(s, 0.75); const c = s[0]; const p = s[s.length - 1]; const d = (r == null ? 1.5 : r) * (h - l); const f = o ? c : Math.max(c, l - d); const g = o ? p : Math.min(p, h + d); const y = e.itemNameFormatter; const v = U(y) ? y({ value: a }) : X(y) ? y.replace('{value}', `${a }`) : `${a }`; n.push([v, f, l, u, h, g]); for (let m = 0; m < s.length; m++) { const x = s[m]; if (x < f || x > g) { const _ = [v, x]; i.push(_) } } } return { boxData: n, outliers: i } }(e.getRawData(), t.config)); return [{ dimensions: ['ItemName', 'Low', 'Q1', 'Q2', 'Q3', 'High'], data: i.boxData }, { data: i.outliers }] } }; const jL = ['color', 'borderColor']; const qL = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { this.group.removeClipPath(), this._progressiveEls = null, this._updateDrawMode(t), this._isLargeDraw ? this._renderLarge(t) : this._renderNormal(t) }, e.prototype.incrementalPrepareRender = function (t, e, n) { this._clear(), this._updateDrawMode(t) }, e.prototype.incrementalRender = function (t, e, n, i) { this._progressiveEls = [], this._isLargeDraw ? this._incrementalRenderLarge(t, e) : this._incrementalRenderNormal(t, e) }, e.prototype.eachRendered = function (t) { Vh(this._progressiveEls || this.group, t) }, e.prototype._updateDrawMode = function (t) { const e = t.pipelineContext.large; this._isLargeDraw != null && e === this._isLargeDraw || (this._isLargeDraw = e, this._clear()) }, e.prototype._renderNormal = function (t) { + const e = t.getData(); const n = this._data; const i = this.group; const r = e.getLayout('isSimpleBox'); const o = t.get('clip', !0); const a = t.coordinateSystem; const s = a.getArea && a.getArea(); this._data || i.removeAll(), e.diff(n).add((n) => { + if (e.hasValue(n)) { + const a = e.getItemLayout(n); if (o && QL(s, a)) + return; const l = JL(a, n, !0); oh(l, { shape: { points: a.ends } }, t, n), tP(l, e, n, r), i.add(l), e.setItemGraphicEl(n, l) + } + }).update((a, l) => { + let u = n.getItemGraphicEl(l); if (e.hasValue(a)) { const h = e.getItemLayout(a); o && QL(s, h) ? i.remove(u) : (u ? (rh(u, { shape: { points: h.ends } }, t, a), hh(u)) : u = JL(h), tP(u, e, a, r), i.add(u), e.setItemGraphicEl(a, u)) } + else { + i.remove(u) + } + }).remove((t) => { const e = n.getItemGraphicEl(t); e && i.remove(e) }).execute(), this._data = e + }, e.prototype._renderLarge = function (t) { this._clear(), rP(t, this.group); const e = t.get('clip', !0) ? lS(t.coordinateSystem, !1, t) : null; e ? this.group.setClipPath(e) : this.group.removeClipPath() }, e.prototype._incrementalRenderNormal = function (t, e) { for (var n, i = e.getData(), r = i.getLayout('isSimpleBox'); (n = t.next()) != null;) { const o = JL(i.getItemLayout(n)); tP(o, i, n, r), o.incremental = !0, this.group.add(o), this._progressiveEls.push(o) } }, e.prototype._incrementalRenderLarge = function (t, e) { rP(e, this.group, this._progressiveEls, !0) }, e.prototype.remove = function (t) { this._clear() }, e.prototype._clear = function () { this.group.removeAll(), this._data = null }, e.type = 'candlestick', e + }(xg)); const KL = function () {}; const $L = (function (t) { function e(e) { const n = t.call(this, e) || this; return n.type = 'normalCandlestickBox', n } return n(e, t), e.prototype.getDefaultShape = function () { return new KL() }, e.prototype.buildPath = function (t, e) { const n = e.points; this.__simpleBox ? (t.moveTo(n[4][0], n[4][1]), t.lineTo(n[6][0], n[6][1])) : (t.moveTo(n[0][0], n[0][1]), t.lineTo(n[1][0], n[1][1]), t.lineTo(n[2][0], n[2][1]), t.lineTo(n[3][0], n[3][1]), t.closePath(), t.moveTo(n[4][0], n[4][1]), t.lineTo(n[5][0], n[5][1]), t.moveTo(n[6][0], n[6][1]), t.lineTo(n[7][0], n[7][1])) }, e }(gs)); function JL(t, e, n) { const i = t.ends; return new $L({ shape: { points: n ? eP(i, t) : i }, z2: 100 }) } function QL(t, e) { + for (var n = !0, i = 0; i < e.ends.length; i++) { + if (t.contain(e.ends[i][0], e.ends[i][1])) { n = !1; break } + } return n + } function tP(t, e, n, i) { const r = e.getItemModel(n); t.useStyle(e.getItemVisual(n, 'style')), t.style.strokeNoScale = !0, t.__simpleBox = i, Vl(t, r) } function eP(t, e) { return z(t, (t) => { return (t = t.slice())[1] = e.initBaseline, t }) } const nP = function () {}; const iP = (function (t) { + function e(e) { const n = t.call(this, e) || this; return n.type = 'largeCandlestickBox', n } return n(e, t), e.prototype.getDefaultShape = function () { return new nP() }, e.prototype.buildPath = function (t, e) { + for (let n = e.points, i = 0; i < n.length;) { + if (this.__sign === n[i++]) { const r = n[i++]; t.moveTo(r, n[i++]), t.lineTo(r, n[i++]) } + else { + i += 3 + } + } + }, e + }(gs)); function rP(t, e, n, i) { const r = t.getData().getLayout('largePoints'); const o = new iP({ shape: { points: r }, __sign: 1 }); e.add(o); const a = new iP({ shape: { points: r }, __sign: -1 }); e.add(a), oP(1, o, t), oP(-1, a, t), i && (o.incremental = !0, a.incremental = !0), n && n.push(o, a) } function oP(t, e, n, i) { const r = n.get(['itemStyle', t > 0 ? 'borderColor' : 'borderColor0']) || n.get(['itemStyle', t > 0 ? 'color' : 'color0']); const o = n.getModel('itemStyle').getItemStyle(jL); e.useStyle(o), e.style.fill = null, e.style.stroke = r } const aP = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.defaultValueDimensions = [{ name: 'open', defaultTooltip: !0 }, { name: 'close', defaultTooltip: !0 }, { name: 'lowest', defaultTooltip: !0 }, { name: 'highest', defaultTooltip: !0 }], n } return n(e, t), e.prototype.getShadowDim = function () { return 'open' }, e.prototype.brushSelector = function (t, e, n) { const i = e.getItemLayout(t); return i && n.rect(i.brushRect) }, e.type = 'series.candlestick', e.dependencies = ['xAxis', 'yAxis', 'grid'], e.defaultOption = { z: 2, coordinateSystem: 'cartesian2d', legendHoverLink: !0, layout: null, clip: !0, itemStyle: { color: '#eb5454', color0: '#47b262', borderColor: '#eb5454', borderColor0: '#47b262', borderWidth: 1 }, emphasis: { scale: !0, itemStyle: { borderWidth: 2 } }, barMaxWidth: null, barMinWidth: null, barWidth: null, large: !0, largeThreshold: 600, progressive: 3e3, progressiveThreshold: 1e4, progressiveChunkMode: 'mod', animationEasing: 'linear', animationDuration: 300 }, e }(sg)); function sP(t) { t && Y(t.series) && E(t.series, (t) => { q(t) && t.type === 'k' && (t.type = 'candlestick') }) }R(aP, EL, !0); const lP = ['itemStyle', 'borderColor']; const uP = ['itemStyle', 'borderColor0']; const hP = ['itemStyle', 'color']; const cP = ['itemStyle', 'color0']; const pP = { seriesType: 'candlestick', plan: yg(), performRawSeries: !0, reset(t, e) { + function n(t, e) { return e.get(t > 0 ? hP : cP) } function i(t, e) { return e.get(t > 0 ? lP : uP) } if (!e.isSeriesFiltered(t)) + return !t.pipelineContext.large && { progress(t, e) { for (var r; (r = t.next()) != null;) { const o = e.getItemModel(r); const a = e.getItemLayout(r).sign; const s = o.getItemStyle(); s.fill = n(a, o), s.stroke = i(a, o) || s.fill, A(e.ensureUniqueItemVisual(r, 'style'), s) } } } + } }; const dP = { seriesType: 'candlestick', plan: yg(), reset(t) { + const e = t.coordinateSystem; const n = t.getData(); const i = (function (t, e) { let n; const i = t.getBaseAxis(); const r = "category" === i.type ? i.getBandWidth() : (n = i.getExtent(), Math.abs(n[1] - n[0]) / e.count()); const o = Er(rt(t.get('barMaxWidth'), r), r); const a = Er(rt(t.get('barMinWidth'), 1), r); const s = t.get('barWidth'); return s != null ? Er(s, r) : Math.max(Math.min(r / 2, o), a) }(t, n)); const r = ['x', 'y']; const o = n.getDimensionIndex(n.mapDimension(r[0])); const a = z(n.mapDimensionsAll(r[1]), n.getDimensionIndex, n); const s = a[0]; const l = a[1]; const u = a[2]; const h = a[3]; if (n.setLayout({ candleWidth: i, isSimpleBox: i <= 1.3 }), !(o < 0 || a.length < 4)) + return { progress: t.pipelineContext.large ? function (t, n) { for (var i, r, a = Sx(4 * t.count), c = 0, p = [], d = [], f = n.getStore(); (r = t.next()) != null;) { const g = f.get(o, r); const y = f.get(s, r); const v = f.get(l, r); const m = f.get(u, r); const x = f.get(h, r); isNaN(g) || isNaN(m) || isNaN(x) ? (a[c++] = Number.NaN, c += 3) : (a[c++] = fP(f, r, y, v, l), p[0] = g, p[1] = m, i = e.dataToPoint(p, null, d), a[c++] = i ? i[0] : Number.NaN, a[c++] = i ? i[1] : Number.NaN, p[1] = x, i = e.dataToPoint(p, null, d), a[c++] = i ? i[1] : Number.NaN) }n.setLayout('largePoints', a) } : function (t, n) { for (var r, a = n.getStore(); (r = t.next()) != null;) { const c = a.get(o, r); const p = a.get(s, r); const d = a.get(l, r); const f = a.get(u, r); const g = a.get(h, r); const y = Math.min(p, d); const v = Math.max(p, d); const m = S(y, c); const x = S(v, c); const _ = S(f, c); const b = S(g, c); const w = []; M(w, x, 0), M(w, m, 1), w.push(T(b), T(x), T(_), T(m)), n.setItemLayout(r, { sign: fP(a, r, p, d, l), initBaseline: p > d ? x[1] : m[1], ends: w, brushRect: I(f, g, c) }) } function S(t, n) { const i = []; return i[0] = n, i[1] = t, isNaN(n) || isNaN(t) ? [Number.NaN, Number.NaN] : e.dataToPoint(i) } function M(t, e, n) { const r = e.slice(); const o = e.slice(); r[0] = Mh(r[0] + i / 2, 1, !1), o[0] = Mh(o[0] - i / 2, 1, !0), n ? t.push(r, o) : t.push(o, r) } function I(t, e, n) { const r = S(t, n); const o = S(e, n); return r[0] -= i / 2, o[0] -= i / 2, { x: r[0], y: r[1], width: i, height: o[1] - r[1] } } function T(t) { return t[0] = Mh(t[0], 1), t } } } + } }; function fP(t, e, n, i, r) { return n > i ? -1 : n < i ? 1 : e > 0 ? t.get(r, e - 1) <= i ? 1 : -1 : 1 } function gP(t, e) { const n = e.rippleEffectColor || e.color; t.eachChild((t) => { t.attr({ z: e.z, zlevel: e.zlevel, style: { stroke: e.brushType === 'stroke' ? n : null, fill: e.brushType === 'fill' ? n : null } }) }) } const yP = (function (t) { + function e(e, n) { const i = t.call(this) || this; const r = new Yw(e, n); const o = new Cr(); return i.add(r), i.add(o), i.updateData(e, n), i } return n(e, t), e.prototype.stopEffectAnimation = function () { this.childAt(1).removeAll() }, e.prototype.startEffectAnimation = function (t) { for (var e = t.symbolType, n = t.color, i = t.rippleNumber, r = this.childAt(1), o = 0; o < i; o++) { const a = Ly(e, -1, -1, 2, 2, n); a.attr({ style: { strokeNoScale: !0 }, z2: 99, silent: !0, scaleX: 0.5, scaleY: 0.5 }); const s = -o / i * t.period + t.effectOffset; a.animate('', !0).when(t.period, { scaleX: t.rippleScale / 2, scaleY: t.rippleScale / 2 }).delay(s).start(), a.animateStyle(!0).when(t.period, { opacity: 0 }).delay(s).start(), r.add(a) }gP(r, t) }, e.prototype.updateEffectAnimation = function (t) { + for (var e = this._effectCfg, n = this.childAt(1), i = ['symbolType', 'period', 'rippleScale', 'rippleNumber'], r = 0; r < i.length; r++) { + const o = i[r]; if (e[o] !== t[o]) + return this.stopEffectAnimation(), void this.startEffectAnimation(t) + }gP(n, t) + }, e.prototype.highlight = function () { _l(this) }, e.prototype.downplay = function () { bl(this) }, e.prototype.getSymbolType = function () { const t = this.childAt(0); return t && t.getSymbolType() }, e.prototype.updateData = function (t, e) { const n = this; const i = t.hostModel; this.childAt(0).updateData(t, e); const r = this.childAt(1); const o = t.getItemModel(e); const a = t.getItemVisual(e, 'symbol'); const s = Py(t.getItemVisual(e, 'symbolSize')); const l = t.getItemVisual(e, 'style'); const u = l && l.fill; const h = o.getModel('emphasis'); r.setScale(s), r.traverse((t) => { t.setStyle('fill', u) }); const c = Oy(t.getItemVisual(e, 'symbolOffset'), s); c && (r.x = c[0], r.y = c[1]); const p = t.getItemVisual(e, 'symbolRotate'); r.rotation = (p || 0) * Math.PI / 180 || 0; const d = {}; d.showEffectOn = i.get('showEffectOn'), d.rippleScale = o.get(['rippleEffect', 'scale']), d.brushType = o.get(['rippleEffect', 'brushType']), d.period = 1e3 * o.get(['rippleEffect', 'period']), d.effectOffset = e / t.count(), d.z = i.getShallow('z') || 0, d.zlevel = i.getShallow('zlevel') || 0, d.symbolType = a, d.color = u, d.rippleEffectColor = o.get(['rippleEffect', 'color']), d.rippleNumber = o.get(['rippleEffect', 'number']), d.showEffectOn === 'render' ? (this._effectCfg ? this.updateEffectAnimation(d) : this.startEffectAnimation(d), this._effectCfg = d) : (this._effectCfg = null, this.stopEffectAnimation(), this.onHoverStateChange = function (t) { t === 'emphasis' ? d.showEffectOn !== 'render' && n.startEffectAnimation(d) : t === 'normal' && d.showEffectOn !== 'render' && n.stopEffectAnimation() }), this._effectCfg = d, Rl(this, h.get('focus'), h.get('blurScope'), h.get('disabled')) }, e.prototype.fadeOut = function (t) { t && t() }, e + }(Cr)); const vP = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function () { this._symbolDraw = new qw(yP) }, e.prototype.render = function (t, e, n) { const i = t.getData(); const r = this._symbolDraw; r.updateData(i, { clipShape: this._getClipShape(t) }), this.group.add(r.group) }, e.prototype._getClipShape = function (t) { const e = t.coordinateSystem; const n = e && e.getArea && e.getArea(); return t.get('clip', !0) ? n : null }, e.prototype.updateTransform = function (t, e, n) { const i = t.getData(); this.group.dirty(); const r = bS('').reset(t, e, n); r.progress && r.progress({ start: 0, end: i.count(), count: i.count() }, i), this._symbolDraw.updateLayout() }, e.prototype._updateGroupTransform = function (t) { const e = t.coordinateSystem; e && e.getRoamTransform && (this.group.transform = Fi(e.getRoamTransform()), this.group.decomposeTransform()) }, e.prototype.remove = function (t, e) { this._symbolDraw && this._symbolDraw.remove(!0) }, e.type = 'effectScatter', e }(xg)); const mP = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.hasSymbolVisual = !0, n } return n(e, t), e.prototype.getInitialData = function (t, e) { return rx(null, this, { useEncodeDefaulter: !0 }) }, e.prototype.brushSelector = function (t, e, n) { return n.point(e.getItemLayout(t)) }, e.type = 'series.effectScatter', e.dependencies = ['grid', 'polar'], e.defaultOption = { coordinateSystem: 'cartesian2d', z: 2, legendHoverLink: !0, effectType: 'ripple', progressive: 0, showEffectOn: 'render', clip: !0, rippleEffect: { period: 4, scale: 2.5, brushType: 'fill', number: 3 }, universalTransition: { divideShape: 'clone' }, symbolSize: 10 }, e }(sg)); const xP = (function (t) { function e(e, n, i) { const r = t.call(this) || this; return r.add(r.createLine(e, n, i)), r._updateEffectSymbol(e, n), r } return n(e, t), e.prototype.createLine = function (t, e, n) { return new fA(t, e, n) }, e.prototype._updateEffectSymbol = function (t, e) { const n = t.getItemModel(e).getModel('effect'); let i = n.get('symbolSize'); const r = n.get('symbol'); Y(i) || (i = [i, i]); const o = t.getItemVisual(e, 'style'); const a = n.get('color') || o && o.stroke; let s = this.childAt(1); this._symbolType !== r && (this.remove(s), (s = Ly(r, -0.5, -0.5, 1, 1, a)).z2 = 100, s.culling = !0, this.add(s)), s && (s.setStyle('shadowColor', a), s.setStyle(n.getItemStyle(['color'])), s.scaleX = i[0], s.scaleY = i[1], s.setColor(a), this._symbolType = r, this._symbolScale = i, this._updateEffectAnimation(t, n, e)) }, e.prototype._updateEffectAnimation = function (t, e, n) { const i = this.childAt(1); if (i) { const r = t.getItemLayout(n); let o = 1e3 * e.get('period'); const a = e.get('loop'); const s = e.get('constantSpeed'); const l = it(e.get('delay'), (e) => { return e / t.count() * o / 3 }); if (i.ignore = !0, this._updateAnimationPoints(i, r), s > 0 && (o = this._getLineLength(i) / s * 1e3), o !== this._period || a !== this._loop) { i.stopAnimation(); let u = void 0; u = U(l) ? l(n) : l, i.__t > 0 && (u = -o * i.__t), this._animateSymbol(i, o, u, a) } this._period = o, this._loop = a } }, e.prototype._animateSymbol = function (t, e, n, i) { if (e > 0) { t.__t = 0; const r = this; const o = t.animate('', i).when(e, { __t: 1 }).delay(n).during(() => { r._updateSymbolPosition(t) }); i || o.done(() => { r.remove(t) }), o.start() } }, e.prototype._getLineLength = function (t) { return Et(t.__p1, t.__cp1) + Et(t.__cp1, t.__p2) }, e.prototype._updateAnimationPoints = function (t, e) { t.__p1 = e[0], t.__p2 = e[1], t.__cp1 = e[2] || [(e[0][0] + e[1][0]) / 2, (e[0][1] + e[1][1]) / 2] }, e.prototype.updateData = function (t, e, n) { this.childAt(0).updateData(t, e, n), this._updateEffectSymbol(t, e) }, e.prototype._updateSymbolPosition = function (t) { const e = t.__p1; const n = t.__p2; const i = t.__cp1; const r = t.__t; const o = [t.x, t.y]; const a = o.slice(); const s = Ke; const l = $e; o[0] = s(e[0], i[0], n[0], r), o[1] = s(e[1], i[1], n[1], r); const u = l(e[0], i[0], n[0], r); const h = l(e[1], i[1], n[1], r); t.rotation = -Math.atan2(h, u) - Math.PI / 2, this._symbolType !== 'line' && this._symbolType !== 'rect' && this._symbolType !== 'roundRect' || (void 0 !== t.__lastT && t.__lastT < t.__t ? (t.scaleY = 1.05 * Et(a, o), r === 1 && (o[0] = a[0] + (o[0] - a[0]) / 2, o[1] = a[1] + (o[1] - a[1]) / 2)) : t.__lastT === 1 ? t.scaleY = 2 * Et(e, o) : t.scaleY = this._symbolScale[1]), t.__lastT = t.__t, t.ignore = !1, t.x = o[0], t.y = o[1] }, e.prototype.updateLayout = function (t, e) { this.childAt(0).updateLayout(t, e); const n = t.getItemModel(e).getModel('effect'); this._updateEffectAnimation(t, n, e) }, e }(Cr)); const _P = (function (t) { function e(e, n, i) { const r = t.call(this) || this; return r._createPolyline(e, n, i), r } return n(e, t), e.prototype._createPolyline = function (t, e, n) { const i = t.getItemLayout(e); const r = new Ru({ shape: { points: i } }); this.add(r), this._updateCommonStl(t, e, n) }, e.prototype.updateData = function (t, e, n) { const i = t.hostModel; rh(this.childAt(0), { shape: { points: t.getItemLayout(e) } }, i, e), this._updateCommonStl(t, e, n) }, e.prototype._updateCommonStl = function (t, e, n) { const i = this.childAt(0); const r = t.getItemModel(e); let o = n && n.emphasisLineStyle; let a = n && n.focus; let s = n && n.blurScope; let l = n && n.emphasisDisabled; if (!n || t.hasItemOption) { const u = r.getModel('emphasis'); o = u.getModel('lineStyle').getLineStyle(), l = u.get('disabled'), a = u.get('focus'), s = u.get('blurScope') }i.useStyle(t.getItemVisual(e, 'style')), i.style.fill = null, i.style.strokeNoScale = !0, i.ensureState('emphasis').style = o, Rl(this, a, s, l) }, e.prototype.updateLayout = function (t, e) { this.childAt(0).setShape('points', t.getItemLayout(e)) }, e }(Cr)); const bP = (function (t) { + function e() { const e = t !== null && t.apply(this, arguments) || this; return e._lastFrame = 0, e._lastFramePercent = 0, e } return n(e, t), e.prototype.createLine = function (t, e, n) { return new _P(t, e, n) }, e.prototype._updateAnimationPoints = function (t, e) { + this._points = e; for (var n = [0], i = 0, r = 1; r < e.length; r++) { const o = e[r - 1]; const a = e[r]; i += Et(o, a), n.push(i) } if (i !== 0) { for (r = 0; r < n.length; r++)n[r] /= i; this._offsets = n, this._length = i } + else { + this._length = 0 + } + }, e.prototype._getLineLength = function () { return this._length }, e.prototype._updateSymbolPosition = function (t) { + const e = t.__t; const n = this._points; const i = this._offsets; const r = n.length; if (i) { + let o; const a = this._lastFrame; if (e < this._lastFramePercent) { for (o = Math.min(a + 1, r - 1); o >= 0 && !(i[o] <= e); o--);o = Math.min(o, r - 2) } + else { for (o = a; o < r && !(i[o] > e); o++);o = Math.min(o - 1, r - 2) } const s = (e - i[o]) / (i[o + 1] - i[o]); const l = n[o]; const u = n[o + 1]; t.x = l[0] * (1 - s) + s * u[0], t.y = l[1] * (1 - s) + s * u[1]; const h = u[0] - l[0]; const c = u[1] - l[1]; t.rotation = -Math.atan2(c, h) - Math.PI / 2, this._lastFrame = o, this._lastFramePercent = e, t.ignore = !1 + } + }, e + }(xP)); const wP = function () { this.polyline = !1, this.curveness = 0, this.segs = [] }; const SP = (function (t) { + function e(e) { const n = t.call(this, e) || this; return n._off = 0, n.hoverDataIdx = -1, n } return n(e, t), e.prototype.reset = function () { this.notClear = !1, this._off = 0 }, e.prototype.getDefaultStyle = function () { return { stroke: '#000', fill: null } }, e.prototype.getDefaultShape = function () { return new wP() }, e.prototype.buildPath = function (t, e) { + let n; const i = e.segs; const r = e.curveness; if (e.polyline) { + for (n = this._off; n < i.length;) { const o = i[n++]; if (o > 0) { t.moveTo(i[n++], i[n++]); for (let a = 1; a < o; a++)t.lineTo(i[n++], i[n++]) } } + } + else { + for (n = this._off; n < i.length;) { + const s = i[n++]; const l = i[n++]; const u = i[n++]; const h = i[n++]; if (t.moveTo(s, l), r > 0) { const c = (s + u) / 2 - (l - h) * r; const p = (l + h) / 2 - (u - s) * r; t.quadraticCurveTo(c, p, u, h) } + else { + t.lineTo(u, h) + } + } + } this.incremental && (this._off = n, this.notClear = !0) + }, e.prototype.findDataIndex = function (t, e) { + const n = this.shape; const i = n.segs; const r = n.curveness; const o = this.style.lineWidth; if (n.polyline) { + for (var a = 0, s = 0; s < i.length;) { + const l = i[s++]; if (l > 0) { + for (var u = i[s++], h = i[s++], c = 1; c < l; c++) { + if (Ka(u, h, p = i[s++], d = i[s++], o, t, e)) + return a +} + } a++ + } + } + else { + for (a = 0, s = 0; s < i.length;) { + u = i[s++], h = i[s++]; var p = i[s++]; var d = i[s++]; if (r > 0) { + if (Ja(u, h, (u + p) / 2 - (h - d) * r, (h + d) / 2 - (p - u) * r, p, d, o, t, e)) + return a + } + else if (Ka(u, h, p, d, o, t, e)) { + return a + } a++ + } + } return -1 + }, e.prototype.contain = function (t, e) { const n = this.transformCoordToLocal(t, e); const i = this.getBoundingRect(); return t = n[0], e = n[1], i.contain(t, e) ? (this.hoverDataIdx = this.findDataIndex(t, e)) >= 0 : (this.hoverDataIdx = -1, !1) }, e.prototype.getBoundingRect = function () { let t = this._rect; if (!t) { for (var e = this.shape.segs, n = 1 / 0, i = 1 / 0, r = -1 / 0, o = -1 / 0, a = 0; a < e.length;) { const s = e[a++]; const l = e[a++]; n = Math.min(s, n), r = Math.max(s, r), i = Math.min(l, i), o = Math.max(l, o) }t = this._rect = new sr(n, i, r, o) } return t }, e + }(gs)); const MP = (function () { + function t() { this.group = new Cr() } return t.prototype.updateData = function (t) { this._clear(); const e = this._create(); e.setShape({ segs: t.getLayout('linesPoints') }), this._setCommon(e, t) }, t.prototype.incrementalPrepareUpdate = function (t) { this.group.removeAll(), this._clear() }, t.prototype.incrementalUpdate = function (t, e) { + const n = this._newAdded[0]; const i = e.getLayout('linesPoints'); const r = n && n.shape.segs; if (r && r.length < 2e4) { const o = r.length; const a = new Float32Array(o + i.length); a.set(r), a.set(i, o), n.setShape({ segs: a }) } + else { this._newAdded = []; const s = this._create(); s.incremental = !0, s.setShape({ segs: i }), this._setCommon(s, e), s.__startIndex = t.start } + }, t.prototype.remove = function () { this._clear() }, t.prototype.eachRendered = function (t) { this._newAdded[0] && t(this._newAdded[0]) }, t.prototype._create = function () { const t = new SP({ cursor: 'default' }); return this._newAdded.push(t), this.group.add(t), t }, t.prototype._setCommon = function (t, e, n) { const i = e.hostModel; t.setShape({ polyline: i.get('polyline'), curveness: i.get(['lineStyle', 'curveness']) }), t.useStyle(i.getModel('lineStyle').getLineStyle()), t.style.strokeNoScale = !0; const r = e.getVisual('style'); r && r.stroke && t.setStyle('stroke', r.stroke), t.setStyle('fill', null); const o = Hs(t); o.seriesIndex = i.seriesIndex, t.on('mousemove', (e) => { o.dataIndex = null; const n = t.hoverDataIdx; n > 0 && (o.dataIndex = n + t.__startIndex) }) }, t.prototype._clear = function () { this._newAdded = [], this.group.removeAll() }, t + }()); const IP = { seriesType: 'lines', plan: yg(), reset(t) { + const e = t.coordinateSystem; if (e) { + const n = t.get('polyline'); const i = t.pipelineContext.large; return { progress(r, o) { + const a = []; if (i) { + let s = void 0; const l = r.end - r.start; if (n) { for (var u = 0, h = r.start; h < r.end; h++)u += t.getLineCoordsCount(h); s = new Float32Array(l + 2 * u) } + else { + s = new Float32Array(4 * l) + } let c = 0; let p = []; for (h = r.start; h < r.end; h++) { var d = t.getLineCoords(h, a); n && (s[c++] = d); for (let f = 0; f < d; f++)p = e.dataToPoint(a[f], !1, p), s[c++] = p[0], s[c++] = p[1] }o.setLayout('linesPoints', s) + } + else { + for (h = r.start; h < r.end; h++) { + let g = o.getItemModel(h); const y = (d = t.getLineCoords(h, a), []); if (n) { + for (let v = 0; v < d; v++)y.push(e.dataToPoint(a[v])) +} else { y[0] = e.dataToPoint(a[0]), y[1] = e.dataToPoint(a[1]); const m = g.get(['lineStyle', 'curveness']); +m && (y[2] = [(y[0][0] + y[1][0]) / 2 - (y[0][1] - y[1][1]) * m, (y[0][1] + y[1][1]) / 2 - (y[1][0] - y[0][0]) * m]) }o.setItemLayout(h, y) + } + } + } } + } + } }; const TP = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { const i = t.getData(); const r = this._updateLineDraw(i, t); const o = t.get('zlevel'); const a = t.get(['effect', 'trailLength']); const s = n.getZr(); const l = s.painter.getType() === 'svg'; l || s.painter.getLayer(o).clear(!0), this._lastZlevel == null || l || s.configLayer(this._lastZlevel, { motionBlur: !1 }), this._showEffect(t) && a > 0 && (l || s.configLayer(o, { motionBlur: !0, lastFrameAlpha: Math.max(Math.min(a / 10 + 0.9, 1), 0) })), r.updateData(i); const u = t.get('clip', !0) && lS(t.coordinateSystem, !1, t); u ? this.group.setClipPath(u) : this.group.removeClipPath(), this._lastZlevel = o, this._finished = !0 }, e.prototype.incrementalPrepareRender = function (t, e, n) { const i = t.getData(); this._updateLineDraw(i, t).incrementalPrepareUpdate(i), this._clearLayer(n), this._finished = !1 }, e.prototype.incrementalRender = function (t, e, n) { this._lineDraw.incrementalUpdate(t, e.getData()), this._finished = t.end === e.getData().count() }, e.prototype.eachRendered = function (t) { this._lineDraw && this._lineDraw.eachRendered(t) }, e.prototype.updateTransform = function (t, e, n) { + const i = t.getData(); const r = t.pipelineContext; if (!this._finished || r.large || r.progressiveRender) + return { update: !0 }; const o = IP.reset(t, e, n); o.progress && o.progress({ start: 0, end: i.count(), count: i.count() }, i), this._lineDraw.updateLayout(), this._clearLayer(n) + }, e.prototype._updateLineDraw = function (t, e) { let n = this._lineDraw; const i = this._showEffect(e); const r = !!e.get('polyline'); const o = e.pipelineContext.large; return n && i === this._hasEffet && r === this._isPolyline && o === this._isLargeDraw || (n && n.remove(), n = this._lineDraw = o ? new MP() : new gA(r ? i ? bP : _P : i ? xP : fA), this._hasEffet = i, this._isPolyline = r, this._isLargeDraw = o), this.group.add(n.group), n }, e.prototype._showEffect = function (t) { return !!t.get(['effect', 'show']) }, e.prototype._clearLayer = function (t) { const e = t.getZr(); e.painter.getType() === 'svg' || this._lastZlevel == null || e.painter.getLayer(this._lastZlevel).clear(!0) }, e.prototype.remove = function (t, e) { this._lineDraw && this._lineDraw.remove(), this._lineDraw = null, this._clearLayer(e) }, e.prototype.dispose = function (t, e) { this.remove(t, e) }, e.type = 'lines', e + }(xg)); const CP = typeof Uint32Array == 'undefined' ? Array : Uint32Array; const DP = typeof Float64Array == 'undefined' ? Array : Float64Array; function AP(t) { const e = t.data; e && e[0] && e[0][0] && e[0][0].coord && (t.data = z(e, (t) => { const e = { coords: [t[0].coord, t[1].coord] }; return t[0].name && (e.fromName = t[0].name), t[1].name && (e.toName = t[1].name), D([e, t[0], t[1]]) })) } const kP = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.visualStyleAccessPath = 'lineStyle', n.visualDrawType = 'stroke', n } return n(e, t), e.prototype.init = function (e) { e.data = e.data || [], AP(e); const n = this._processFlatCoordsArray(e.data); this._flatCoords = n.flatCoords, this._flatCoordsOffset = n.flatCoordsOffset, n.flatCoords && (e.data = new Float32Array(n.count)), t.prototype.init.apply(this, arguments) }, e.prototype.mergeOption = function (e) { if (AP(e), e.data) { const n = this._processFlatCoordsArray(e.data); this._flatCoords = n.flatCoords, this._flatCoordsOffset = n.flatCoordsOffset, n.flatCoords && (e.data = new Float32Array(n.count)) }t.prototype.mergeOption.apply(this, arguments) }, e.prototype.appendData = function (t) { const e = this._processFlatCoordsArray(t.data); e.flatCoords && (this._flatCoords ? (this._flatCoords = gt(this._flatCoords, e.flatCoords), this._flatCoordsOffset = gt(this._flatCoordsOffset, e.flatCoordsOffset)) : (this._flatCoords = e.flatCoords, this._flatCoordsOffset = e.flatCoordsOffset), t.data = new Float32Array(e.count)), this.getRawData().appendData(t.data) }, e.prototype._getCoordsFromItemModel = function (t) { const e = this.getData().getItemModel(t); return Array.isArray(e.option) ? e.option : e.getShallow('coords') }, e.prototype.getLineCoordsCount = function (t) { return this._flatCoordsOffset ? this._flatCoordsOffset[2 * t + 1] : this._getCoordsFromItemModel(t).length }, e.prototype.getLineCoords = function (t, e) { if (this._flatCoordsOffset) { for (var n = this._flatCoordsOffset[2 * t], i = this._flatCoordsOffset[2 * t + 1], r = 0; r < i; r++)e[r] = e[r] || [], e[r][0] = this._flatCoords[n + 2 * r], e[r][1] = this._flatCoords[n + 2 * r + 1]; return i } const o = this._getCoordsFromItemModel(t); for (r = 0; r < o.length; r++)e[r] = e[r] || [], e[r][0] = o[r][0], e[r][1] = o[r][1]; return o.length }, e.prototype._processFlatCoordsArray = function (t) { let e = 0; if (this._flatCoords && (e = this._flatCoords.length), j(t[0])) { for (var n = t.length, i = new CP(n), r = new DP(n), o = 0, a = 0, s = 0, l = 0; l < n;) { s++; const u = t[l++]; i[a++] = o + e, i[a++] = u; for (let h = 0; h < u; h++) { const c = t[l++]; const p = t[l++]; r[o++] = c, r[o++] = p } } return { flatCoordsOffset: new Uint32Array(i.buffer, 0, a), flatCoords: r, count: s } } return { flatCoordsOffset: null, flatCoords: null, count: t.length } }, e.prototype.getInitialData = function (t, e) { + const n = new qm(['value'], this); return n.hasItemOption = !1, n.initData(t.data, [], (t, e, i, r) => { + if (Array.isArray(t)) + return Number.NaN; n.hasItemOption = !0; const o = t.value; return o != null ? Array.isArray(o) ? o[r] : o : void 0 + }), n + }, e.prototype.formatTooltip = function (t, e, n) { + const i = this.getData().getItemModel(t); const r = i.get('name'); if (r) + return r; const o = i.get('fromName'); const a = i.get('toName'); const s = []; return o != null && s.push(o), a != null && s.push(a), Xf('nameValue', { name: s.join(' > ') }) + }, e.prototype.preventIncremental = function () { return !!this.get(['effect', 'show']) }, e.prototype.getProgressive = function () { const t = this.option.progressive; return t == null ? this.option.large ? 1e4 : this.get('progressive') : t }, e.prototype.getProgressiveThreshold = function () { const t = this.option.progressiveThreshold; return t == null ? this.option.large ? 2e4 : this.get('progressiveThreshold') : t }, e.prototype.getZLevelKey = function () { const t = this.getModel('effect'); const e = t.get('trailLength'); return this.getData().count() > this.getProgressiveThreshold() ? this.id : t.get('show') && e > 0 ? `${e}` : '' }, e.type = 'series.lines', e.dependencies = ['grid', 'polar', 'geo', 'calendar'], e.defaultOption = { coordinateSystem: 'geo', z: 2, legendHoverLink: !0, xAxisIndex: 0, yAxisIndex: 0, symbol: ['none', 'none'], symbolSize: [10, 10], geoIndex: 0, effect: { show: !1, period: 4, constantSpeed: 0, symbol: 'circle', symbolSize: 3, loop: !0, trailLength: 0.2 }, large: !1, largeThreshold: 2e3, polyline: !1, clip: !0, label: { show: !1, position: 'end' }, lineStyle: { opacity: 0.5 } }, e + }(sg)); function LP(t) { return Array.isArray(t) || (t = [t, t]), t } const PP = { seriesType: 'lines', reset(t) { const e = LP(t.get('symbol')); const n = LP(t.get('symbolSize')); const i = t.getData(); return i.setVisual('fromSymbol', e && e[0]), i.setVisual('toSymbol', e && e[1]), i.setVisual('fromSymbolSize', n && n[0]), i.setVisual('toSymbolSize', n && n[1]), { dataEach: i.hasItemOption ? function (t, e) { const n = t.getItemModel(e); const i = LP(n.getShallow('symbol', !0)); const r = LP(n.getShallow('symbolSize', !0)); i[0] && t.setItemVisual(e, 'fromSymbol', i[0]), i[1] && t.setItemVisual(e, 'toSymbol', i[1]), r[0] && t.setItemVisual(e, 'fromSymbolSize', r[0]), r[1] && t.setItemVisual(e, 'toSymbolSize', r[1]) } : null } } }; const OP = (function () { + function t() { this.blurSize = 30, this.pointSize = 20, this.maxOpacity = 1, this.minOpacity = 0, this._gradientPixels = { inRange: null, outOfRange: null }; const t = h.createCanvas(); this.canvas = t } return t.prototype.update = function (t, e, n, i, r, o) { + const a = this._getBrush(); const s = this._getGradient(r, 'inRange'); const l = this._getGradient(r, 'outOfRange'); const u = this.pointSize + this.blurSize; const h = this.canvas; const c = h.getContext('2d'); const p = t.length; h.width = e, h.height = n; for (let d = 0; d < p; ++d) { const f = t[d]; const g = f[0]; const y = f[1]; var v = i(f[2]); c.globalAlpha = v, c.drawImage(a, g - u, y - u) } if (!h.width || !h.height) + return h; for (var m = c.getImageData(0, 0, h.width, h.height), x = m.data, _ = 0, b = x.length, w = this.minOpacity, S = this.maxOpacity - w; _ < b;) { + v = x[_ + 3] / 256; const M = 4 * Math.floor(255 * v); if (v > 0) { const I = o(v) ? s : l; v > 0 && (v = v * S + w), x[_++] = I[M], x[_++] = I[M + 1], x[_++] = I[M + 2], x[_++] = I[M + 3] * v * 256 } + else { + _ += 4 + } + } return c.putImageData(m, 0, 0), h + }, t.prototype._getBrush = function () { const t = this._brushCanvas || (this._brushCanvas = h.createCanvas()); const e = this.pointSize + this.blurSize; const n = 2 * e; t.width = n, t.height = n; const i = t.getContext('2d'); return i.clearRect(0, 0, n, n), i.shadowOffsetX = n, i.shadowBlur = this.blurSize, i.shadowColor = '#000', i.beginPath(), i.arc(-e, e, this.pointSize, 0, 2 * Math.PI, !0), i.closePath(), i.fill(), t }, t.prototype._getGradient = function (t, e) { for (var n = this._gradientPixels, i = n[e] || (n[e] = new Uint8ClampedArray(1024)), r = [0, 0, 0, 0], o = 0, a = 0; a < 256; a++)t[e](a / 255, !0, r), i[o++] = r[0], i[o++] = r[1], i[o++] = r[2], i[o++] = r[3]; return i }, t + }()); function RP(t) { const e = t.dimensions; return e[0] === 'lng' && e[1] === 'lat' } const NP = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { let i; e.eachComponent('visualMap', (e) => { e.eachTargetSeries((n) => { n === t && (i = e) }) }), this._progressiveEls = null, this.group.removeAll(); const r = t.coordinateSystem; r.type === 'cartesian2d' || r.type === 'calendar' ? this._renderOnCartesianAndCalendar(t, n, 0, t.getData().count()) : RP(r) && this._renderOnGeo(r, t, i, n) }, e.prototype.incrementalPrepareRender = function (t, e, n) { this.group.removeAll() }, e.prototype.incrementalRender = function (t, e, n, i) { const r = e.coordinateSystem; r && (RP(r) ? this.render(e, n, i) : (this._progressiveEls = [], this._renderOnCartesianAndCalendar(e, i, t.start, t.end, !0))) }, e.prototype.eachRendered = function (t) { Vh(this._progressiveEls || this.group, t) }, e.prototype._renderOnCartesianAndCalendar = function (t, e, n, i, r) { + let o; let a; let s; let l; const u = t.coordinateSystem; const h = uS(u, 'cartesian2d'); if (h) { const c = u.getAxis('x'); const p = u.getAxis('y'); o = c.getBandWidth() + 0.5, a = p.getBandWidth() + 0.5, s = c.scale.getExtent(), l = p.scale.getExtent() } for (let d = this.group, f = t.getData(), g = t.getModel(['emphasis', 'itemStyle']).getItemStyle(), y = t.getModel(['blur', 'itemStyle']).getItemStyle(), v = t.getModel(['select', 'itemStyle']).getItemStyle(), m = t.get(['itemStyle', 'borderRadius']), x = Yh(t), _ = t.getModel('emphasis'), b = _.get('focus'), w = _.get('blurScope'), S = _.get('disabled'), M = h ? [f.mapDimension('x'), f.mapDimension('y'), f.mapDimension('value')] : [f.mapDimension('time'), f.mapDimension('value')], I = n; I < i; I++) { + let T = void 0; const C = f.getItemVisual(I, 'style'); if (h) { + const D = f.get(M[0], I); const A = f.get(M[1], I); if (isNaN(f.get(M[2], I)) || D < s[0] || D > s[1] || A < l[0] || A > l[1]) + continue; const k = u.dataToPoint([D, A]); T = new Cs({ shape: { x: k[0] - o / 2, y: k[1] - a / 2, width: o, height: a }, style: C }) + } + else { + if (isNaN(f.get(M[1], I))) + continue; T = new Cs({ z2: 1, shape: u.dataToRect([f.get(M[0], I)]).contentShape, style: C }) + } if (f.hasItemOption) { const L = f.getItemModel(I); const P = L.getModel('emphasis'); g = P.getModel('itemStyle').getItemStyle(), y = L.getModel(['blur', 'itemStyle']).getItemStyle(), v = L.getModel(['select', 'itemStyle']).getItemStyle(), m = L.get(['itemStyle', 'borderRadius']), b = P.get('focus'), w = P.get('blurScope'), S = P.get('disabled'), x = Yh(L) }T.shape.r = m; const O = t.getRawValue(I); let R = '-'; O && O[2] != null && (R = `${O[2]}`), Hh(T, x, { labelFetcher: t, labelDataIndex: I, defaultOpacity: C.opacity, defaultText: R }), T.ensureState('emphasis').style = g, T.ensureState('blur').style = y, T.ensureState('select').style = v, Rl(T, b, w, S), T.incremental = r, r && (T.states.emphasis.hoverLayer = !0), d.add(T), f.setItemGraphicEl(I, T), this._progressiveEls && this._progressiveEls.push(T) + } + }, e.prototype._renderOnGeo = function (t, e, n, i) { + const r = n.targetVisuals.inRange; const o = n.targetVisuals.outOfRange; const a = e.getData(); const s = this._hmLayer || this._hmLayer || new OP(); s.blurSize = e.get('blurSize'), s.pointSize = e.get('pointSize'), s.minOpacity = e.get('minOpacity'), s.maxOpacity = e.get('maxOpacity'); const l = t.getViewRect().clone(); const u = t.getRoamTransform(); l.applyTransform(u); const h = Math.max(l.x, 0); const c = Math.max(l.y, 0); const p = Math.min(l.width + l.x, i.getWidth()); const d = Math.min(l.height + l.y, i.getHeight()); const f = p - h; const g = d - c; const y = [a.mapDimension('lng'), a.mapDimension('lat'), a.mapDimension('value')]; const v = a.mapArray(y, (e, n, i) => { const r = t.dataToPoint([e, n]); return r[0] -= h, r[1] -= c, r.push(i), r }); const m = n.getExtent(); const x = n.type === 'visualMap.continuous' + ? (function (t, e) { const n = t[1] - t[0]; return e = [(e[0] - t[0]) / n, (e[1] - t[0]) / n], function (t) { return t >= e[0] && t <= e[1] } }(m, n.option.range)) + : (function (t, e, n) { + const i = t[1] - t[0]; const r = (e = z(e, (e) =>{ return { interval: [(e.interval[0] - t[0]) / i, (e.interval[1] - t[0]) / i] } })).length; let o = 0; return function (t) { + let i; for (i = o; i < r; i++) { + if ((a = e[i].interval)[0] <= t && t <= a[1]) { o = i; break } + } if (i === r) { + for (i = o - 1; i >= 0; i--) { var a; if ((a = e[i].interval)[0] <= t && t <= a[1]) { o = i; break } } + } return i >= 0 && i < r && n[i] + } + }(m, n.getPieceList(), n.option.selected)); s.update(v, f, g, r.color.getNormalizer(), { inRange: r.color.getColorMapper(), outOfRange: o.color.getColorMapper() }, x); const _ = new _s({ style: { width: f, height: g, x: h, y: c, image: s.canvas }, silent: !0 }); this.group.add(_) + }, e.type = 'heatmap', e + }(xg)); const EP = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.getInitialData = function (t, e) { return rx(null, this, { generateCoord: 'value' }) }, e.prototype.preventIncremental = function () { + const t = hd.get(this.get('coordinateSystem')); if (t && t.dimensions) + return t.dimensions[0] === 'lng' && t.dimensions[1] === 'lat' + }, e.type = 'series.heatmap', e.dependencies = ['grid', 'geo', 'calendar'], e.defaultOption = { coordinateSystem: 'cartesian2d', z: 2, geoIndex: 0, blurSize: 30, pointSize: 20, maxOpacity: 1, minOpacity: 0, select: { itemStyle: { borderColor: '#212121' } } }, e + }(sg)); const zP = ['itemStyle', 'borderWidth']; const VP = [{ xy: 'x', wh: 'width', index: 0, posDesc: ['left', 'right'] }, { xy: 'y', wh: 'height', index: 1, posDesc: ['top', 'bottom'] }]; const BP = new hu(); const FP = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { + const i = this.group; const r = t.getData(); const o = this._data; const a = t.coordinateSystem; const s = a.getBaseAxis().isHorizontal(); const l = a.master.getRect(); const u = { ecSize: { width: n.getWidth(), height: n.getHeight() }, seriesModel: t, coordSys: a, coordSysExtent: [[l.x, l.x + l.width], [l.y, l.y + l.height]], isHorizontal: s, valueDim: VP[+s], categoryDim: VP[1 - +s] }; return r.diff(o).add((t) => { if (r.hasValue(t)) { const e = jP(r, t); const n = GP(r, t, e, u); const o = $P(r, u, n); r.setItemGraphicEl(t, o), i.add(o), nO(o, u, n) } }).update((t, e) => { + let n = o.getItemGraphicEl(e); if (r.hasValue(t)) { const a = jP(r, t); const s = GP(r, t, a, u); const l = QP(r, s); n && l !== n.__pictorialShapeStr && (i.remove(n), r.setItemGraphicEl(t, null), n = null), n ? (function (t, e, n) { const i = n.animationModel; const r = n.dataIndex; rh(t.__pictorialBundle, { x: n.bundlePosition[0], y: n.bundlePosition[1] }, i, r), n.symbolRepeat ? YP(t, e, n, !0) : UP(t, e, n, !0), XP(t, n, !0), ZP(t, e, n, !0) }(n, u, s)) : n = $P(r, u, s, !0), r.setItemGraphicEl(t, n), n.__pictorialSymbolMeta = s, i.add(n), nO(n, u, s) } + else { + i.remove(n) + } + }).remove((t) => { const e = o.getItemGraphicEl(t); e && JP(o, t, e.__pictorialSymbolMeta.animationModel, e) }).execute(), this._data = r, this.group + }, e.prototype.remove = function (t, e) { const n = this.group; const i = this._data; t.get('animation') ? i && i.eachItemGraphicEl((e) => { JP(i, Hs(e).dataIndex, t, e) }) : n.removeAll() }, e.type = 'pictorialBar', e + }(xg)); function GP(t, e, n, i) { + const r = t.getItemLayout(e); const o = n.get('symbolRepeat'); const a = n.get('symbolClip'); const s = n.get('symbolPosition') || 'start'; const l = (n.get('symbolRotate') || 0) * Math.PI / 180 || 0; const u = n.get('symbolPatternSize') || 2; const h = n.isAnimationEnabled(); const c = { dataIndex: e, layout: r, itemModel: n, symbolType: t.getItemVisual(e, 'symbol') || 'circle', style: t.getItemVisual(e, 'style'), symbolClip: a, symbolRepeat: o, symbolRepeatDirection: n.get('symbolRepeatDirection'), symbolPatternSize: u, rotation: l, animationModel: h ? n : null, hoverScale: h && n.get(['emphasis', 'scale']), z2: n.getShallow('z', !0) || 0 }; !(function (t, e, n, i, r) { + let o; const a = i.valueDim; const s = t.get('symbolBoundingData'); const l = i.coordSys.getOtherAxis(i.coordSys.getBaseAxis()); const u = l.toGlobalCoord(l.dataToCoord(0)); const h = 1 - +(n[a.wh] <= 0); if (Y(s)) { const c = [WP(l, s[0]) - u, WP(l, s[1]) - u]; c[1] < c[0] && c.reverse(), o = c[h] } + else { + o = s != null ? WP(l, s) - u : e ? i.coordSysExtent[a.index][h] - u : n[a.wh] + }r.boundingLength = o, e && (r.repeatCutLength = n[a.wh]), r.pxSign = o > 0 ? 1 : -1 + }(n, o, r, i, c)), (function (t, e, n, i, r, o, a, s, l, u) { let h; const c = l.valueDim; const p = l.categoryDim; const d = Math.abs(n[p.wh]); const f = t.getItemVisual(e, 'symbolSize'); (h = Y(f) ? f.slice() : f == null ? ['100%', '100%'] : [f, f])[p.index] = Er(h[p.index], d), h[c.index] = Er(h[c.index], i ? d : Math.abs(o)), u.symbolSize = h, (u.symbolScale = [h[0] / s, h[1] / s])[c.index] *= (l.isHorizontal ? -1 : 1) * a }(t, e, r, o, 0, c.boundingLength, c.pxSign, u, i, c)), (function (t, e, n, i, r) { let o = t.get(zP) || 0; o && (BP.attr({ scaleX: e[0], scaleY: e[1], rotation: n }), BP.updateTransform(), o /= BP.getLineScale(), o *= e[i.valueDim.index]), r.valueLineWidth = o || 0 }(n, c.symbolScale, l, i, c)); const p = c.symbolSize; const d = Oy(n.get('symbolOffset'), p); return (function (t, e, n, i, r, o, a, s, l, u, h, c) { const p = h.categoryDim; const d = h.valueDim; const f = c.pxSign; const g = Math.max(e[d.index] + s, 0); let y = g; if (i) { const v = Math.abs(l); let m = `${it(t.get('symbolMargin'), '15%')}`; let x = !1; m.lastIndexOf('!') === m.length - 1 && (x = !0, m = m.slice(0, m.length - 1)); let _ = Er(m, e[d.index]); let b = Math.max(g + 2 * _, 0); let w = x ? 0 : 2 * _; const S = eo(i); let M = S ? i : iO((v + w) / b); b = g + 2 * (_ = (v - M * g) / 2 / (x ? M : Math.max(M - 1, 1))), w = x ? 0 : 2 * _, S || i === 'fixed' || (M = u ? iO((Math.abs(u) + w) / b) : 0), y = M * b - w, c.repeatTimes = M, c.symbolMargin = _ } const I = f * (y / 2); const T = c.pathPosition = []; T[p.index] = n[p.wh] / 2, T[d.index] = a === 'start' ? I : a === 'end' ? l - I : l / 2, o && (T[0] += o[0], T[1] += o[1]); const C = c.bundlePosition = []; C[p.index] = n[p.xy], C[d.index] = n[d.xy]; const D = c.barRectShape = A({}, n); D[d.wh] = f * Math.max(Math.abs(n[d.wh]), Math.abs(T[d.index] + I)), D[p.wh] = n[p.wh]; const k = c.clipShape = {}; k[p.xy] = -n[p.xy], k[p.wh] = h.ecSize[p.wh], k[d.xy] = 0, k[d.wh] = n[d.wh] }(n, p, r, o, 0, d, s, c.valueLineWidth, c.boundingLength, c.repeatCutLength, i, c)), c + } function WP(t, e) { return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e))) } function HP(t) { const e = t.symbolPatternSize; const n = Ly(t.symbolType, -e / 2, -e / 2, e, e); return n.attr({ culling: !0 }), n.type !== 'image' && n.setStyle({ strokeNoScale: !0 }), n } function YP(t, e, n, i) { const r = t.__pictorialBundle; const o = n.symbolSize; const a = n.valueLineWidth; const s = n.pathPosition; const l = e.valueDim; const u = n.repeatTimes || 0; let h = 0; const c = o[e.valueDim.index] + a + 2 * n.symbolMargin; for (tO(t, (t) => { t.__pictorialAnimationIndex = h, t.__pictorialRepeatTimes = u, h < u ? eO(t, null, f(h), n, i) : eO(t, null, { scaleX: 0, scaleY: 0 }, n, i, () => { r.remove(t) }), h++ }); h < u; h++) { const p = HP(n); p.__pictorialAnimationIndex = h, p.__pictorialRepeatTimes = u, r.add(p); const d = f(h); eO(p, { x: d.x, y: d.y, scaleX: 0, scaleY: 0 }, { scaleX: d.scaleX, scaleY: d.scaleY, rotation: d.rotation }, n, i) } function f(t) { const e = s.slice(); const i = n.pxSign; let r = t; return (n.symbolRepeatDirection === 'start' ? i > 0 : i < 0) && (r = u - 1 - t), e[l.index] = c * (r - u / 2 + 0.5) + s[l.index], { x: e[0], y: e[1], scaleX: n.symbolScale[0], scaleY: n.symbolScale[1], rotation: n.rotation } } } function UP(t, e, n, i) { const r = t.__pictorialBundle; let o = t.__pictorialMainPath; o ? eO(o, null, { x: n.pathPosition[0], y: n.pathPosition[1], scaleX: n.symbolScale[0], scaleY: n.symbolScale[1], rotation: n.rotation }, n, i) : (o = t.__pictorialMainPath = HP(n), r.add(o), eO(o, { x: n.pathPosition[0], y: n.pathPosition[1], scaleX: 0, scaleY: 0, rotation: n.rotation }, { scaleX: n.symbolScale[0], scaleY: n.symbolScale[1] }, n, i)) } function XP(t, e, n) { const i = A({}, e.barRectShape); let r = t.__pictorialBarRect; r ? eO(r, null, { shape: i }, e, n) : ((r = t.__pictorialBarRect = new Cs({ z2: 2, shape: i, silent: !0, style: { stroke: 'transparent', fill: 'transparent', lineWidth: 0 } })).disableMorphing = !0, t.add(r)) } function ZP(t, e, n, i) { + if (n.symbolClip) { + let r = t.__pictorialClipPath; const o = A({}, n.clipShape); const a = e.valueDim; const s = n.animationModel; const l = n.dataIndex; if (r) { + rh(r, { shape: o }, s, l) + } + else { o[a.wh] = 0, r = new Cs({ shape: o }), t.__pictorialBundle.setClipPath(r), t.__pictorialClipPath = r; const u = {}; u[a.wh] = n.clipShape[a.wh], Bh[i ? 'updateProps' : 'initProps'](r, { shape: u }, s, l) } + } + } function jP(t, e) { const n = t.getItemModel(e); return n.getAnimationDelayParams = qP, n.isAnimationEnabled = KP, n } function qP(t) { return { index: t.__pictorialAnimationIndex, count: t.__pictorialRepeatTimes } } function KP() { return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation') } function $P(t, e, n, i) { const r = new Cr(); const o = new Cr(); return r.add(o), r.__pictorialBundle = o, o.x = n.bundlePosition[0], o.y = n.bundlePosition[1], n.symbolRepeat ? YP(r, e, n) : UP(r, 0, n), XP(r, n, i), ZP(r, e, n, i), r.__pictorialShapeStr = QP(t, n), r.__pictorialSymbolMeta = n, r } function JP(t, e, n, i) { const r = i.__pictorialBarRect; r && r.removeTextContent(); const o = []; tO(i, (t) => { o.push(t) }), i.__pictorialMainPath && o.push(i.__pictorialMainPath), i.__pictorialClipPath && (n = null), E(o, (t) => { sh(t, { scaleX: 0, scaleY: 0 }, n, e, () => { i.parent && i.parent.remove(i) }) }), t.setItemGraphicEl(e, null) } function QP(t, e) { return [t.getItemVisual(e.dataIndex, 'symbol') || 'none', !!e.symbolRepeat, !!e.symbolClip].join(':') } function tO(t, e, n) { E(t.__pictorialBundle.children(), (i) => { i !== t.__pictorialBarRect && e.call(n, i) }) } function eO(t, e, n, i, r, o) { e && t.attr(e), i.symbolClip && !r ? n && t.attr(n) : n && Bh[r ? 'updateProps' : 'initProps'](t, n, i.animationModel, i.dataIndex, o) } function nO(t, e, n) { + const i = n.dataIndex; const r = n.itemModel; const o = r.getModel('emphasis'); const a = o.getModel('itemStyle').getItemStyle(); const s = r.getModel(['blur', 'itemStyle']).getItemStyle(); const l = r.getModel(['select', 'itemStyle']).getItemStyle(); const u = r.getShallow('cursor'); const h = o.get('focus'); const c = o.get('blurScope'); const p = o.get('scale'); tO(t, (t) => { + if (t instanceof _s) { const e = t.style; t.useStyle(A({ image: e.image, x: e.x, y: e.y, width: e.width, height: e.height }, n.style)) } + else { + t.useStyle(n.style) + } const i = t.ensureState('emphasis'); i.style = a, p && (i.scaleX = 1.1 * t.scaleX, i.scaleY = 1.1 * t.scaleY), t.ensureState('blur').style = s, t.ensureState('select').style = l, u && (t.cursor = u), t.z2 = n.z2 + }); const d = e.valueDim.posDesc[+(n.boundingLength > 0)]; Hh(t.__pictorialBarRect, Yh(r), { labelFetcher: e.seriesModel, labelDataIndex: i, defaultText: Ww(e.seriesModel.getData(), i), inheritColor: n.style.fill, defaultOpacity: n.style.opacity, defaultOutsidePosition: d }), Rl(t, h, c, o.get('disabled')) + } function iO(t) { const e = Math.round(t); return Math.abs(t - e) < 1e-4 ? e : Math.ceil(t) } const rO = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.hasSymbolVisual = !0, n.defaultSymbol = 'roundRect', n } return n(e, t), e.prototype.getInitialData = function (e) { return e.stack = null, t.prototype.getInitialData.apply(this, arguments) }, e.type = 'series.pictorialBar', e.dependencies = ['grid'], e.defaultOption = yc(IS.defaultOption, { symbol: 'circle', symbolSize: null, symbolRotate: null, symbolPosition: null, symbolOffset: null, symbolMargin: null, symbolRepeat: !1, symbolRepeatDirection: 'end', symbolClip: !1, symbolBoundingData: null, symbolPatternSize: 400, barGap: '-100%', progressive: 0, emphasis: { scale: !1 }, select: { itemStyle: { borderColor: '#212121' } } }), e }(IS)); const oO = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n._layers = [], n } return n(e, t), e.prototype.render = function (t, e, n) { + const i = t.getData(); const r = this; const o = this.group; const a = t.getLayerSeries(); const s = i.getLayout('layoutInfo'); const l = s.rect; const u = s.boundaryGap; function h(t) { return t.name }o.x = 0, o.y = l.y + u[0]; const c = new Im(this._layersSeries || [], a, h, h); const p = []; function d(e, n, s) { + const l = r._layers; if (e !== 'remove') { + for (var u, h, c = [], d = [], f = a[n].indices, g = 0; g < f.length; g++) { const y = i.getItemLayout(f[g]); const v = y.x; const m = y.y0; const x = y.y; c.push(v, m), d.push(v, m + x), u = i.getItemVisual(f[g], 'style') } const _ = i.getItemLayout(f[0]); const b = t.getModel('label').get('margin'); const w = t.getModel('emphasis'); if (e === 'add') { var S = p[n] = new Cr(); h = new oS({ shape: { points: c, stackedOnPoints: d, smooth: 0.4, stackedOnSmooth: 0.4, smoothConstraint: !1 }, z2: 0 }), S.add(h), o.add(S), t.isAnimationEnabled() && h.setClipPath(function (t, e, n) { const i = new Cs({ shape: { x: t.x - 10, y: t.y - 10, width: 0, height: t.height + 20 } }); return oh(i, { shape: { x: t.x - 50, width: t.width + 100, height: t.height + 20 } }, e, () => { h.removeClipPath() }), i }(h.getBoundingRect(), t)) } + else { + S = l[s], h = S.childAt(0), o.add(S), p[n] = S, rh(h, { shape: { points: c, stackedOnPoints: d } }, t), hh(h) + }Hh(h, Yh(t), { labelDataIndex: f[g - 1], defaultText: i.getName(f[g - 1]), inheritColor: u.fill }, { normal: { verticalAlign: 'middle' } }), h.setTextConfig({ position: null, local: !0 }); const M = h.getTextContent(); M && (M.x = _.x - b, M.y = _.y0 + _.y / 2), h.useStyle(u), i.setItemGraphicEl(n, h), Vl(h, t), Rl(h, w.get('focus'), w.get('blurScope'), w.get('disabled')) + } + else { + o.remove(l[n]) + } + }c.add(W(d, this, 'add')).update(W(d, this, 'update')).remove(W(d, this, 'remove')).execute(), this._layersSeries = a, this._layers = p + }, e.type = 'themeRiver', e + }(xg)); const aO = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function (e) { t.prototype.init.apply(this, arguments), this.legendVisualProvider = new hM(W(this.getData, this), W(this.getRawData, this)) }, e.prototype.fixData = function (t) { let e = t.length; const n = {}; const i = Lo(t, (t) => { return n.hasOwnProperty(`${t[0]}`) || (n[`${t[0]}`] = -1), t[2] }); const r = []; i.buckets.each((t, e) => { r.push({ name: e, dataList: t }) }); for (let o = r.length, a = 0; a < o; ++a) { for (var s = r[a].name, l = 0; l < r[a].dataList.length; ++l) { var u = `${r[a].dataList[l][0]}`; n[u] = a } for (var u in n)n.hasOwnProperty(u) && n[u] !== a && (n[u] = a, t[e] = [u, 0, s], e++) } return t }, e.prototype.getInitialData = function (t, e) { for (var n = this.getReferringComponents('singleAxis', Co).models[0].get('type'), i = B(t.data, (t) => { return void 0 !== t[2] }), r = this.fixData(i || []), o = [], a = this.nameMap = ft(), s = 0, l = 0; l < r.length; ++l)o.push(r[l][2]), a.get(r[l][2]) || (a.set(r[l][2], s), s++); const u = Km(r, { coordDimensions: ['single'], dimensionsDefine: [{ name: 'time', type: Dm(n) }, { name: 'value', type: 'float' }, { name: 'name', type: 'ordinal' }], encodeDefine: { single: 0, value: 1, itemName: 2 } }).dimensions; const h = new qm(u, this); return h.initData(r), h }, e.prototype.getLayerSeries = function () { for (var t = this.getData(), e = t.count(), n = [], i = 0; i < e; ++i)n[i] = i; const r = t.mapDimension('single'); const o = Lo(n, (e) => { return t.get('name', e) }); const a = []; return o.buckets.each((e, n) => { e.sort((e, n) => { return t.get(r, e) - t.get(r, n) }), a.push({ name: n, indices: e }) }), a }, e.prototype.getAxisTooltipData = function (t, e, n) { Y(t) || (t = t ? [t] : []); for (var i, r = this.getData(), o = this.getLayerSeries(), a = [], s = o.length, l = 0; l < s; ++l) { for (var u = Number.MAX_VALUE, h = -1, c = o[l].indices.length, p = 0; p < c; ++p) { const d = r.get(t[0], o[l].indices[p]); const f = Math.abs(d - e); f <= u && (i = d, u = f, h = o[l].indices[p]) }a.push(h) } return { dataIndices: a, nestestValue: i } }, e.prototype.formatTooltip = function (t, e, n) { const i = this.getData(); return Xf('nameValue', { name: i.getName(t), value: i.get(i.mapDimension('value'), t) }) }, e.type = 'series.themeRiver', e.dependencies = ['singleAxis'], e.defaultOption = { z: 2, colorBy: 'data', coordinateSystem: 'singleAxis', boundaryGap: ['10%', '10%'], singleAxisIndex: 0, animationEasing: 'linear', label: { margin: 4, show: !0, position: 'left', fontSize: 11 }, emphasis: { label: { show: !0 } } }, e }(sg)); function sO(t, e) { t.eachSeriesByType('themeRiver', (t) => { const e = t.getData(); const n = t.coordinateSystem; const i = {}; const r = n.getRect(); i.rect = r; const o = t.get('boundaryGap'); const a = n.getAxis(); i.boundaryGap = o, a.orient === 'horizontal' ? (o[0] = Er(o[0], r.height), o[1] = Er(o[1], r.height), lO(e, t, r.height - o[0] - o[1])) : (o[0] = Er(o[0], r.width), o[1] = Er(o[1], r.width), lO(e, t, r.width - o[0] - o[1])), e.setLayout('layoutInfo', i) }) } function lO(t, e, n) { + if (t.count()) { + for (var i, r = e.coordinateSystem, o = e.getLayerSeries(), a = t.mapDimension('single'), s = t.mapDimension('value'), l = z(o, (e) => { return z(e.indices, (e) => { const n = r.dataToPoint(t.get(a, e)); return n[1] = t.get(s, e), n }) }), u = (function (t) { for (var e = t.length, n = t[0].length, i = [], r = [], o = 0, a = 0; a < n; ++a) { for (var s = 0, l = 0; l < e; ++l)s += t[l][a][1]; s > o && (o = s), i.push(s) } for (let u = 0; u < n; ++u)r[u] = (o - i[u]) / 2; o = 0; for (let h = 0; h < n; ++h) { const c = i[h] + r[h]; c > o && (o = c) } return { y0: r, max: o } }(l)), h = u.y0, c = n / u.max, p = o.length, d = o[0].indices.length, f = 0; f < d; ++f) { i = h[f] * c, t.setItemLayout(o[0].indices[f], { layerIndex: 0, x: l[0][f][0], y0: i, y: l[0][f][1] * c }); for (let g = 1; g < p; ++g)i += l[g - 1][f][1] * c, t.setItemLayout(o[g].indices[f], { layerIndex: g, x: l[g][f][0], y0: i, y: l[g][f][1] * c }) } + } + } const uO = (function (t) { function e(e, n, i, r) { const o = t.call(this) || this; o.z2 = 2, o.textConfig = { inside: !0 }, Hs(o).seriesIndex = n.seriesIndex; const a = new ks({ z2: 4, silent: e.getModel().get(['label', 'silent']) }); return o.setTextContent(a), o.updateData(!0, e, n, i, r), o } return n(e, t), e.prototype.updateData = function (t, e, n, i, r) { this.node = e, e.piece = this, n = n || this._seriesModel, i = i || this._ecModel; const o = this; Hs(o).dataIndex = e.dataIndex; const a = e.getModel(); const s = a.getModel('emphasis'); const l = e.getLayout(); const u = A({}, l); u.label = null; const h = e.getVisual('style'); h.lineJoin = 'bevel'; const c = e.getVisual('decal'); c && (h.decal = rv(c, r)); const p = aM(a.getModel('itemStyle'), u, !0); A(u, p), E(qs, (t) => { const e = o.ensureState(t); const n = a.getModel([t, 'itemStyle']); e.style = n.getItemStyle(); const i = aM(n, u); i && (e.shape = i) }), t ? (o.setShape(u), o.shape.r = l.r0, rh(o, { shape: { r: l.r } }, n, e.dataIndex)) : (rh(o, { shape: u }, n), hh(o)), o.useStyle(h), this._updateLabel(n); const d = a.getShallow('cursor'); d && o.attr('cursor', d), this._seriesModel = n || this._seriesModel, this._ecModel = i || this._ecModel; const f = s.get('focus'); Rl(this, f === 'ancestor' ? e.getAncestorsIndices() : f === 'descendant' ? e.getDescendantIndices() : f, s.get('blurScope'), s.get('disabled')) }, e.prototype._updateLabel = function (t) { const e = this; const n = this.node.getModel(); const i = n.getModel('label'); const r = this.node.getLayout(); const o = r.endAngle - r.startAngle; const a = (r.startAngle + r.endAngle) / 2; const s = Math.cos(a); const l = Math.sin(a); const u = this; const h = u.getTextContent(); const c = this.node.dataIndex; const p = i.get('minAngle') / 180 * Math.PI; const d = i.get('show') && !(p != null && Math.abs(o) < p); function f(t, e) { const n = t.get(e); return n == null ? i.get(e) : n }h.ignore = !d, E(Ks, (i) => { const p = i === 'normal' ? n.getModel('label') : n.getModel([i, 'label']); const d = i === 'normal'; const g = d ? h : h.ensureState(i); let y = t.getFormattedLabel(c, i); d && (y = y || e.node.name), g.style = Uh(p, {}, null, i !== 'normal', !0), y && (g.style.text = y); const v = p.get('show'); v == null || d || (g.ignore = !v); let m; const x = f(p, 'position'); const _ = d ? u : u.states[i]; const b = _.style.fill; _.textConfig = { outsideFill: p.get('color') === 'inherit' ? b : null, inside: x !== 'outside' }; const w = f(p, 'distance') || 0; let S = f(p, 'align'); x === 'outside' ? (m = r.r + w, S = a > Math.PI / 2 ? 'right' : 'left') : S && S !== 'center' ? S === 'left' ? (m = r.r0 + w, a > Math.PI / 2 && (S = 'right')) : S === 'right' && (m = r.r - w, a > Math.PI / 2 && (S = 'left')) : (m = o === 2 * Math.PI && r.r0 === 0 ? 0 : (r.r + r.r0) / 2, S = 'center'), g.style.align = S, g.style.verticalAlign = f(p, 'verticalAlign') || 'middle', g.x = m * s + r.cx, g.y = m * l + r.cy; const M = f(p, 'rotate'); let I = 0; M === 'radial' ? (I = -a) < -Math.PI / 2 && (I += Math.PI) : M === 'tangential' ? (I = Math.PI / 2 - a) > Math.PI / 2 ? I -= Math.PI : I < -Math.PI / 2 && (I += Math.PI) : j(M) && (I = M * Math.PI / 180), g.rotation = I }), h.dirtyStyle() }, e }(Cu)); const hO = 'sunburstRootToNode'; const cO = 'sunburstHighlight'; const pO = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n, i) { + const r = this; this.seriesModel = t, this.api = n, this.ecModel = e; const o = t.getData(); const a = o.tree.root; const s = t.getViewRoot(); const l = this.group; const u = t.get('renderLabelForZeroData'); const h = []; s.eachNode((t) => { h.push(t) }); const c = this._oldChildren || []; !(function (i, r) { + function s(t) { return t.getId() } function h(s, h) { + !(function (i, r) { + if (u || !i || i.getValue() || (i = null), i !== a && r !== a) { + if (r && r.piece) { +i ? (r.piece.updateData(!1, i, t, e, n), o.setItemGraphicEl(i.dataIndex, r.piece)) : function (t) { t && t.piece && (l.remove(t.piece), t.piece = null) }(r); +} else if (i) { let s = new uO(i, t, e, n); l.add(s), o.setItemGraphicEl(i.dataIndex, s) } + } + }(s == null ? null : i[s], h == null ? null : r[h])) + }i.length === 0 && r.length === 0 || new Im(r, i, s, s).add(h).update(h).remove(H(h, null)).execute() + }(h, c)), (function (i, o) { o.depth > 0 ? (r.virtualPiece ? r.virtualPiece.updateData(!1, i, t, e, n) : (r.virtualPiece = new uO(i, t, e, n), l.add(r.virtualPiece)), o.piece.off('click'), r.virtualPiece.on('click', (t) => { r._rootToNode(o.parentNode) })) : r.virtualPiece && (l.remove(r.virtualPiece), r.virtualPiece = null) }(a, s)), this._initEvents(), this._oldChildren = h + }, e.prototype._initEvents = function () { + const t = this; this.group.off('click'), this.group.on('click', (e) => { + let n = !1; t.seriesModel.getViewRoot().eachNode((i) => { + if (!n && i.piece && i.piece === e.target) { + let r = i.getModel().get('nodeClick'); if (r === 'rootToNode') { + t._rootToNode(i) +} else if (r === 'link') { const o = i.getModel(); const a = o.get('link'); a && dp(a, o.get('target', !0) || '_blank') }n = !0 + } + }) + }) + }, e.prototype._rootToNode = function (t) { t !== this.seriesModel.getViewRoot() && this.api.dispatchAction({ type: hO, from: this.uid, seriesId: this.seriesModel.id, targetNode: t }) }, e.prototype.containPoint = function (t, e) { const n = e.getData().getItemLayout(0); if (n) { const i = t[0] - n.cx; const r = t[1] - n.cy; const o = Math.sqrt(i * i + r * r); return o <= n.r && o >= n.r0 } }, e.type = 'sunburst', e + }(xg)); const dO = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.ignoreStyleOnData = !0, n } return n(e, t), e.prototype.getInitialData = function (t, e) { const n = { name: t.name, children: t.data }; fO(n); const i = this._levelModels = z(t.levels || [], function (t) { return new dc(t, this, e) }, this); var r = AC.createTree(n, this, (t) => { t.wrapMethod('getItemModel', (t, e) => { const n = r.getNodeByDataIndex(e); const o = i[n.depth]; return o && (t.parentModel = o), t }) }); return r.data }, e.prototype.optionUpdated = function () { this.resetViewRoot() }, e.prototype.getDataParams = function (e) { const n = t.prototype.getDataParams.apply(this, arguments); const i = this.getData().tree.getNodeByDataIndex(e); return n.treePathInfo = OC(i, this), n }, e.prototype.getLevelModel = function (t) { return this._levelModels && this._levelModels[t.depth] }, e.prototype.getViewRoot = function () { return this._viewRoot }, e.prototype.resetViewRoot = function (t) { t ? this._viewRoot = t : t = this._viewRoot; const e = this.getRawData().tree.root; t && (t === e || e.contains(t)) || (this._viewRoot = e) }, e.prototype.enableAriaDecal = function () { BC(this) }, e.type = 'series.sunburst', e.defaultOption = { z: 2, center: ['50%', '50%'], radius: [0, '75%'], clockwise: !0, startAngle: 90, minAngle: 0, stillShowZeroSum: !0, nodeClick: 'rootToNode', renderLabelForZeroData: !1, label: { rotate: 'radial', show: !0, opacity: 1, align: 'center', position: 'inside', distance: 5, silent: !0 }, itemStyle: { borderWidth: 1, borderColor: 'white', borderType: 'solid', shadowBlur: 0, shadowColor: 'rgba(0, 0, 0, 0.2)', shadowOffsetX: 0, shadowOffsetY: 0, opacity: 1 }, emphasis: { focus: 'descendant' }, blur: { itemStyle: { opacity: 0.2 }, label: { opacity: 0.1 } }, animationType: 'expansion', animationDuration: 1e3, animationDurationUpdate: 500, data: [], sort: 'desc' }, e }(sg)); function fO(t) { let e = 0; E(t.children, (t) => { fO(t); let n = t.value; Y(n) && (n = n[0]), e += n }); let n = t.value; Y(n) && (n = n[0]), (n == null || isNaN(n)) && (n = e), n < 0 && (n = 0), Y(t.value) ? t.value[0] = n : t.value = n } const gO = Math.PI / 180; function yO(t, e, n) { e.eachSeriesByType(t, (t) => { let e = t.get('center'); let i = t.get('radius'); Y(i) || (i = [0, i]), Y(e) || (e = [e, e]); const r = n.getWidth(); const o = n.getHeight(); const a = Math.min(r, o); const s = Er(e[0], r); const l = Er(e[1], o); const u = Er(i[0], a / 2); const h = Er(i[1], a / 2); const c = -t.get('startAngle') * gO; const p = t.get('minAngle') * gO; const d = t.getData().tree.root; const f = t.getViewRoot(); const g = f.depth; const y = t.get('sort'); y != null && vO(f, y); let v = 0; E(f.children, (t) => { !isNaN(t.getValue()) && v++ }); const m = f.getValue(); const x = Math.PI / (m || v) * 2; const _ = f.depth > 0; const b = f.height - (_ ? -1 : 1); const w = (h - u) / (b || 1); const S = t.get('clockwise'); const M = t.get('stillShowZeroSum'); const I = S ? 1 : -1; const T = function (e, n) { if (e) { let i = n; if (e !== d) { const r = e.getValue(); let o = m === 0 && M ? x : r * x; o < p && (o = p), i = n + I * o; const h = e.depth - g - (_ ? -1 : 1); let c = u + w * h; let f = u + w * (h + 1); const y = t.getLevelModel(e); if (y) { let v = y.get('r0', !0); let b = y.get('r', !0); const C = y.get('radius', !0); C != null && (v = C[0], b = C[1]), v != null && (c = Er(v, a / 2)), b != null && (f = Er(b, a / 2)) }e.setLayout({ angle: o, startAngle: n, endAngle: i, clockwise: S, cx: s, cy: l, r0: c, r: f }) } if (e.children && e.children.length) { let D = 0; E(e.children, (t) => { D += T(t, n + D) }) } return i - n } }; if (_) { const C = u; const D = u + w; const A = 2 * Math.PI; d.setLayout({ angle: A, startAngle: c, endAngle: c + A, clockwise: S, cx: s, cy: l, r0: C, r: D }) }T(f, c) }) } function vO(t, e) { const n = t.children || []; t.children = (function (t, e) { if (U(e)) { const n = z(t, (t, e) => { const n = t.getValue(); return { params: { depth: t.depth, height: t.height, dataIndex: t.dataIndex, getValue() { return n } }, index: e } }); return n.sort((t, n) => { return e(t.params, n.params) }), z(n, (e) => { return t[e.index] }) } const i = e === 'asc'; return t.sort((t, e) => { const n = (t.getValue() - e.getValue()) * (i ? 1 : -1); return n === 0 ? (t.dataIndex - e.dataIndex) * (i ? -1 : 1) : n }) }(n, e)), n.length && E(t.children, (t) => { vO(t, e) }) } function mO(t) { const e = {}; t.eachSeriesByType('sunburst', (t) => { const n = t.getData(); const i = n.tree; i.eachNode((r) => { const o = r.getModel().getModel('itemStyle').getItemStyle(); o.fill || (o.fill = (function (t, n, i) { for (var r = t; r && r.depth > 1;)r = r.parentNode; let o = n.getColorFromPalette(r.name || `${r.dataIndex}`, e); return t.depth > 1 && X(o) && (o = Sn(o, (t.depth - 1) / (i - 1) * 0.5)), o }(r, t, i.root.height))), A(n.ensureUniqueItemVisual(r.dataIndex, 'style'), o) }) }) } const xO = { color: 'fill', borderColor: 'stroke' }; const _O = { symbol: 1, symbolSize: 1, symbolKeepAspect: 1, legendIcon: 1, visualMeta: 1, liftZ: 1, decal: 1 }; const bO = So(); const wO = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.optionUpdated = function () { this.currentZLevel = this.get('zlevel', !0), this.currentZ = this.get('z', !0) }, e.prototype.getInitialData = function (t, e) { return rx(null, this) }, e.prototype.getDataParams = function (e, n, i) { const r = t.prototype.getDataParams.call(this, e, n); return i && (r.info = bO(i).info), r }, e.type = 'series.custom', e.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'], e.defaultOption = { coordinateSystem: 'cartesian2d', z: 2, legendHoverLink: !0, clip: !1 }, e }(sg)); function SO(t, e) { return e = e || [0, 0], z(['x', 'y'], function (n, i) { const r = this.getAxis(n); const o = e[i]; const a = t[i] / 2; return r.type === 'category' ? r.getBandWidth() : Math.abs(r.dataToCoord(o - a) - r.dataToCoord(o + a)) }, this) } function MO(t, e) { return e = e || [0, 0], z([0, 1], function (n) { const i = e[n]; const r = t[n] / 2; const o = []; const a = []; return o[n] = i - r, a[n] = i + r, o[1 - n] = a[1 - n] = e[1 - n], Math.abs(this.dataToPoint(o)[n] - this.dataToPoint(a)[n]) }, this) } function IO(t, e) { const n = this.getAxis(); const i = Array.isArray(e) ? e[0] : e; const r = (Array.isArray(t) ? t[0] : t) / 2; return n.type === 'category' ? n.getBandWidth() : Math.abs(n.dataToCoord(i - r) - n.dataToCoord(i + r)) } function TO(t, e) { return e = e || [0, 0], z(['Radius', 'Angle'], function (n, i) { const r = this[`get${n}Axis`](); const o = e[i]; const a = t[i] / 2; let s = r.type === 'category' ? r.getBandWidth() : Math.abs(r.dataToCoord(o - a) - r.dataToCoord(o + a)); return n === 'Angle' && (s = s * Math.PI / 180), s }, this) } function CO(t, e, n, i) { return t && (t.legacy || !1 !== t.legacy && !n && !i && e !== 'tspan' && (e === 'text' || mt(t, 'text'))) } function DO(t, e, n) { + let i; let r; let o; const a = t; if (e === 'text') { + o = a + } + else { o = {}, mt(a, 'text') && (o.text = a.text), mt(a, 'rich') && (o.rich = a.rich), mt(a, 'textFill') && (o.fill = a.textFill), mt(a, 'textStroke') && (o.stroke = a.textStroke), mt(a, 'fontFamily') && (o.fontFamily = a.fontFamily), mt(a, 'fontSize') && (o.fontSize = a.fontSize), mt(a, 'fontStyle') && (o.fontStyle = a.fontStyle), mt(a, 'fontWeight') && (o.fontWeight = a.fontWeight), r = { type: 'text', style: o, silent: !0 }, i = {}; const s = mt(a, 'textPosition'); n ? i.position = s ? a.textPosition : 'inside' : s && (i.position = a.textPosition), mt(a, 'textPosition') && (i.position = a.textPosition), mt(a, 'textOffset') && (i.offset = a.textOffset), mt(a, 'textRotation') && (i.rotation = a.textRotation), mt(a, 'textDistance') && (i.distance = a.textDistance) } return AO(o, t), E(o.rich, (t) => { AO(t, t) }), { textConfig: i, textContent: r } + } function AO(t, e) { e && (e.font = e.textFont || e.font, mt(e, 'textStrokeWidth') && (t.lineWidth = e.textStrokeWidth), mt(e, 'textAlign') && (t.align = e.textAlign), mt(e, 'textVerticalAlign') && (t.verticalAlign = e.textVerticalAlign), mt(e, 'textLineHeight') && (t.lineHeight = e.textLineHeight), mt(e, 'textWidth') && (t.width = e.textWidth), mt(e, 'textHeight') && (t.height = e.textHeight), mt(e, 'textBackgroundColor') && (t.backgroundColor = e.textBackgroundColor), mt(e, 'textPadding') && (t.padding = e.textPadding), mt(e, 'textBorderColor') && (t.borderColor = e.textBorderColor), mt(e, 'textBorderWidth') && (t.borderWidth = e.textBorderWidth), mt(e, 'textBorderRadius') && (t.borderRadius = e.textBorderRadius), mt(e, 'textBoxShadowColor') && (t.shadowColor = e.textBoxShadowColor), mt(e, 'textBoxShadowBlur') && (t.shadowBlur = e.textBoxShadowBlur), mt(e, 'textBoxShadowOffsetX') && (t.shadowOffsetX = e.textBoxShadowOffsetX), mt(e, 'textBoxShadowOffsetY') && (t.shadowOffsetY = e.textBoxShadowOffsetY)) } function kO(t, e, n) { const i = t; i.textPosition = i.textPosition || n.position || 'inside', n.offset != null && (i.textOffset = n.offset), n.rotation != null && (i.textRotation = n.rotation), n.distance != null && (i.textDistance = n.distance); const r = i.textPosition.includes('inside'); const o = t.fill || '#000'; LO(i, e); const a = i.textFill == null; return r ? a && (i.textFill = n.insideFill || '#fff', !i.textStroke && n.insideStroke && (i.textStroke = n.insideStroke), !i.textStroke && (i.textStroke = o), i.textStrokeWidth == null && (i.textStrokeWidth = 2)) : (a && (i.textFill = t.fill || n.outsideFill || '#000'), !i.textStroke && n.outsideStroke && (i.textStroke = n.outsideStroke)), i.text = e.text, i.rich = e.rich, E(e.rich, (t) => { LO(t, t) }), i } function LO(t, e) { e && (mt(e, 'fill') && (t.textFill = e.fill), mt(e, 'stroke') && (t.textStroke = e.fill), mt(e, 'lineWidth') && (t.textStrokeWidth = e.lineWidth), mt(e, 'font') && (t.font = e.font), mt(e, 'fontStyle') && (t.fontStyle = e.fontStyle), mt(e, 'fontWeight') && (t.fontWeight = e.fontWeight), mt(e, 'fontSize') && (t.fontSize = e.fontSize), mt(e, 'fontFamily') && (t.fontFamily = e.fontFamily), mt(e, 'align') && (t.textAlign = e.align), mt(e, 'verticalAlign') && (t.textVerticalAlign = e.verticalAlign), mt(e, 'lineHeight') && (t.textLineHeight = e.lineHeight), mt(e, 'width') && (t.textWidth = e.width), mt(e, 'height') && (t.textHeight = e.height), mt(e, 'backgroundColor') && (t.textBackgroundColor = e.backgroundColor), mt(e, 'padding') && (t.textPadding = e.padding), mt(e, 'borderColor') && (t.textBorderColor = e.borderColor), mt(e, 'borderWidth') && (t.textBorderWidth = e.borderWidth), mt(e, 'borderRadius') && (t.textBorderRadius = e.borderRadius), mt(e, 'shadowColor') && (t.textBoxShadowColor = e.shadowColor), mt(e, 'shadowBlur') && (t.textBoxShadowBlur = e.shadowBlur), mt(e, 'shadowOffsetX') && (t.textBoxShadowOffsetX = e.shadowOffsetX), mt(e, 'shadowOffsetY') && (t.textBoxShadowOffsetY = e.shadowOffsetY), mt(e, 'textShadowColor') && (t.textShadowColor = e.textShadowColor), mt(e, 'textShadowBlur') && (t.textShadowBlur = e.textShadowBlur), mt(e, 'textShadowOffsetX') && (t.textShadowOffsetX = e.textShadowOffsetX), mt(e, 'textShadowOffsetY') && (t.textShadowOffsetY = e.textShadowOffsetY)) } const PO = { position: ['x', 'y'], scale: ['scaleX', 'scaleY'], origin: ['originX', 'originY'] }; const OO = G(PO); const RO = (V(Ki, (t, e) => { return t[e] = 1, t }, {}), Ki.join(', '), ['', 'style', 'shape', 'extra']); const NO = So(); function EO(t, e, n, i, r) { const o = `${t}Animation`; const a = nh(t, i, r) || {}; const s = NO(e).userDuring; return a.duration > 0 && (a.during = s ? W(HO, { el: e, userDuring: s }) : null, a.setToFinal = !0, a.scope = t), A(a, n[o]), a } function zO(t, e, n, i) { + const r = (i = i || {}).dataIndex; const o = i.isInit; const a = i.clearStyle; const s = n.isAnimationEnabled(); const l = NO(t); const u = e.style; l.userDuring = e.during; const h = {}; const c = {}; if ((function (t, e, n) { for (var i = 0; i < OO.length; i++) { const r = OO[i]; const o = PO[r]; const a = e[r]; a && (n[o[0]] = a[0], n[o[1]] = a[1]) } for (i = 0; i < Ki.length; i++) { const s = Ki[i]; e[s] != null && (n[s] = e[s]) } }(0, e, c)), UO('shape', e, c), UO('extra', e, c), !o && s && ((function (t, e, n) { for (let i = e.transition, r = FO(i) ? Ki : ho(i || []), o = 0; o < r.length; o++) { const a = r[o]; if (a !== 'style' && a !== 'shape' && a !== 'extra') { const s = t[a]; n[a] = s } } }(t, e, h)), YO('shape', t, e, h), YO('extra', t, e, h), (function (t, e, n, i) { + if (n) { + let r; const o = t.style; if (o) { + const a = n.transition; const s = e.transition; if (a && !FO(a)) { const l = ho(a); !r && (r = i.style = {}); for (var u = 0; u < l.length; u++) { var h = o[f = l[u]]; r[f] = h } } + else if (t.getAnimationStyleProps && (FO(s) || FO(a) || P(s, 'style') >= 0)) { const c = t.getAnimationStyleProps(); const p = c ? c.style : null; if (p) { !r && (r = i.style = {}); const d = G(n); for (u = 0; u < d.length; u++) { var f; p[f = d[u]] && (h = o[f], r[f] = h) } } } + } + } + }(t, e, u, h))), c.style = u, (function (t, e, n) { const i = e.style; if (!t.isGroup && i) { if (n) { t.useStyle({}); for (let r = t.animators, o = 0; o < r.length; o++) { const a = r[o]; a.targetName === 'style' && a.changeTarget(t.style) } }t.setStyle(i) }e && (e.style = null, e && t.attr(e), e.style = i) }(t, c, a)), (function (t, e) { mt(e, 'silent') && (t.silent = e.silent), mt(e, 'ignore') && (t.ignore = e.ignore), t instanceof da && mt(e, 'invisible') && (t.invisible = e.invisible), t instanceof gs && mt(e, 'autoBatch') && (t.autoBatch = e.autoBatch) }(t, e)), s) { + if (o) { const p = {}; E(RO, (t) => { const n = t ? e[t] : e; n && n.enterFrom && (t && (p[t] = p[t] || {}), A(t ? p[t] : p, n.enterFrom)) }); const d = EO('enter', t, e, n, r); d.duration > 0 && t.animateFrom(p, d) } + else { + !(function (t, e, n, i, r) { if (r) { const o = EO('update', t, e, i, n); o.duration > 0 && t.animateFrom(r, o) } }(t, e, r || 0, n, h)) + } + } VO(t, e), u ? t.dirty() : t.markRedraw() + } function VO(t, e) { for (let n = NO(t).leaveToProps, i = 0; i < RO.length; i++) { const r = RO[i]; const o = r ? e[r] : e; o && o.leaveTo && (n || (n = NO(t).leaveToProps = {}), r && (n[r] = n[r] || {}), A(r ? n[r] : n, o.leaveTo)) } } function BO(t, e, n, i) { + if (t) { + const r = t.parent; const o = NO(t).leaveToProps; if (o) { const a = EO('update', t, e, n, 0); a.done = function () { r.remove(t), i && i() }, t.animateTo(o, a) } + else { + r.remove(t), i && i() + } + } + } function FO(t) { return t === 'all' } const GO = {}; const WO = { setTransform(t, e) { return GO.el[t] = e, this }, getTransform(t) { return GO.el[t] }, setShape(t, e) { const n = GO.el; return (n.shape || (n.shape = {}))[t] = e, n.dirtyShape && n.dirtyShape(), this }, getShape(t) { + const e = GO.el.shape; if (e) + return e[t] + }, setStyle(t, e) { const n = GO.el; const i = n.style; return i && (i[t] = e, n.dirtyStyle && n.dirtyStyle()), this }, getStyle(t) { + const e = GO.el.style; if (e) + return e[t] + }, setExtra(t, e) { return (GO.el.extra || (GO.el.extra = {}))[t] = e, this }, getExtra(t) { + const e = GO.el.extra; if (e) + return e[t] + } }; function HO() { const t = this; const e = t.el; if (e) { const n = NO(e).userDuring; const i = t.userDuring; n === i ? (GO.el = e, i(WO)) : t.el = t.userDuring = null } } function YO(t, e, n, i) { + const r = n[t]; if (r) { + let o; const a = e[t]; if (a) { + const s = n.transition; const l = r.transition; if (l) { + if (!o && (o = i[t] = {}), FO(l)) { + A(o, a) + } + else { + for (var u = ho(l), h = 0; h < u.length; h++) { var c = a[d = u[h]]; o[d] = c } + } + } + else if (FO(s) || P(s, t) >= 0) { !o && (o = i[t] = {}); const p = G(a); for (h = 0; h < p.length; h++) { var d; c = a[d = p[h]], XO(r[d], c) && (o[d] = c) } } + } + } + } function UO(t, e, n) { + const i = e[t]; if (i) { + for (let r = n[t] = {}, o = G(i), a = 0; a < o.length; a++) { const s = o[a]; r[s] = ti(i[s]) } + } + } function XO(t, e) { return N(t) ? t !== e : t != null && isFinite(t) } const ZO = So(); const jO = ['percent', 'easing', 'shape', 'style', 'extra']; function qO(t) { t.stopAnimation('keyframe'), t.attr(ZO(t)) } function KO(t, e, n) { + if (n.isAnimationEnabled() && e) { + if (Y(e)) { + E(e, (e) => { KO(t, e, n) }) + } + else { const i = e.keyframes; let r = e.duration; if (n && r == null) { const o = nh('enter', n, 0); r = o && o.duration } if (i && r) { const a = ZO(t); E(RO, (n) => { let o; n && !t[n] || (i.sort((t, e) => { return t.percent - e.percent }), E(i, (i) => { const s = t.animators; const l = n ? i[n] : i; if (l) { let u = G(l); if (n || (u = B(u, (t) => { return P(jO, t) < 0 })), u.length) { o || ((o = t.animate(n, e.loop, !0)).scope = 'keyframe'); for (let h = 0; h < s.length; h++)s[h] !== o && s[h].targetName === o.targetName && s[h].stopTracks(u); n && (a[n] = a[n] || {}); const c = n ? a[n] : a; E(u, (e) => { c[e] = ((n ? t[n] : t) || {})[e] }), o.whenWithKeys(r * i.percent, l, u, i.easing) } } }), o && o.delay(e.delay || 0).duration(r).start(e.easing)) }) } } + } + } const $O = 'emphasis'; const JO = 'normal'; const QO = 'blur'; const tR = 'select'; const eR = [JO, $O, QO, tR]; const nR = { normal: ['itemStyle'], emphasis: [$O, 'itemStyle'], blur: [QO, 'itemStyle'], select: [tR, 'itemStyle'] }; const iR = { normal: ['label'], emphasis: [$O, 'label'], blur: [QO, 'label'], select: [tR, 'label'] }; const rR = ['x', 'y']; const oR = { normal: {}, emphasis: {}, blur: {}, select: {} }; const aR = { cartesian2d(t) { const e = t.master.getRect(); return { coordSys: { type: 'cartesian2d', x: e.x, y: e.y, width: e.width, height: e.height }, api: { coord(e) { return t.dataToPoint(e) }, size: W(SO, t) } } }, geo(t) { const e = t.getBoundingRect(); return { coordSys: { type: 'geo', x: e.x, y: e.y, width: e.width, height: e.height, zoom: t.getZoom() }, api: { coord(e) { return t.dataToPoint(e) }, size: W(MO, t) } } }, single(t) { const e = t.getRect(); return { coordSys: { type: 'singleAxis', x: e.x, y: e.y, width: e.width, height: e.height }, api: { coord(e) { return t.dataToPoint(e) }, size: W(IO, t) } } }, polar(t) { const e = t.getRadiusAxis(); const n = t.getAngleAxis(); const i = e.getExtent(); return i[0] > i[1] && i.reverse(), { coordSys: { type: 'polar', cx: t.cx, cy: t.cy, r: i[1], r0: i[0] }, api: { coord(i) { const r = e.dataToRadius(i[0]); const o = n.dataToAngle(i[1]); const a = t.coordToPoint([r, o]); return a.push(r, o * Math.PI / 180), a }, size: W(TO, t) } } }, calendar(t) { const e = t.getRect(); const n = t.getRangeInfo(); return { coordSys: { type: 'calendar', x: e.x, y: e.y, width: e.width, height: e.height, cellWidth: t.getCellWidth(), cellHeight: t.getCellHeight(), rangeInfo: { start: n.start, end: n.end, weeks: n.weeks, dayCount: n.allDay } }, api: { coord(e, n) { return t.dataToPoint(e, n) } } } } }; function sR(t) { return t instanceof gs } function lR(t) { return t instanceof da } const uR = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n, i) { this._progressiveEls = null; const r = this._data; const o = t.getData(); const a = this.group; const s = fR(t, o, e, n); r || a.removeAll(), o.diff(r).add((e) => { yR(n, null, e, s(e, i), t, a, o) }).remove((e) => { const n = r.getItemGraphicEl(e); BO(n, bO(n).option, t) }).update((e, l) => { const u = r.getItemGraphicEl(l); yR(n, u, e, s(e, i), t, a, o) }).execute(); const l = t.get('clip', !0) ? lS(t.coordinateSystem, !1, t) : null; l ? a.setClipPath(l) : a.removeClipPath(), this._data = o }, e.prototype.incrementalPrepareRender = function (t, e, n) { this.group.removeAll(), this._data = null }, e.prototype.incrementalRender = function (t, e, n, i, r) { const o = e.getData(); const a = fR(e, o, n, i); const s = this._progressiveEls = []; function l(t) { t.isGroup || (t.incremental = !0, t.ensureState('emphasis').hoverLayer = !0) } for (let u = t.start; u < t.end; u++) { const h = yR(null, null, u, a(u, r), e, this.group, o); h && (h.traverse(l), s.push(h)) } }, e.prototype.eachRendered = function (t) { Vh(this._progressiveEls || this.group, t) }, e.prototype.filterForExposedEvent = function (t, e, n, i) { + const r = e.element; if (r == null || n.name === r) + return !0; for (;(n = n.__hostTarget || n.parent) && n !== this.group;) { + if (n.name === r) + return !0 + } return !1 + }, e.type = 'custom', e + }(xg)); function hR(t) { + let e; const n = t.type; if (n === 'path') { const i = t.shape; const r = i.width != null && i.height != null ? { x: i.x || 0, y: i.y || 0, width: i.width, height: i.height } : null; const o = IR(i); e = xh(o, null, r, i.layout || 'center'), bO(e).customPathData = o } + else if (n === 'image') { + e = new _s({}), bO(e).customImagePath = t.style.image + } + else if (n === 'text') { + e = new ks({}) + } + else if (n === 'group') { + e = new Cr() + } + else { + if (n === 'compoundPath') + throw new Error('"compoundPath" is not supported yet.'); const a = mh(n); if (!a) { ao('') }e = new a() + } return bO(e).customGraphicType = n, e.name = t.name, e.z2EmphasisLift = 1, e.z2SelectLift = 1, e + } function cR(t, e, n, i, r, o, a) { qO(e); const s = r && r.normal.cfg; s && e.setTextConfig(s), i && i.transition == null && (i.transition = rR); const l = i && i.style; if (l) { if (e.type === 'text') { const u = l; mt(u, 'textFill') && (u.fill = u.textFill), mt(u, 'textStroke') && (u.stroke = u.textStroke) } var h = void 0; const c = sR(e) ? l.decal : null; t && c && (c.dirty = !0, h = rv(c, t)), l.__decalPattern = h }lR(e) && l && (h = l.__decalPattern) && (l.decal = h), zO(e, i, o, { dataIndex: n, isInit: a, clearStyle: !0 }), KO(e, i.keyframeAnimation, o) } function pR(t, e, n, i, r) { + const o = e.isGroup ? null : e; const a = r && r[t].cfg; if (o) { + const s = o.ensureState(t); if (!1 === i) { const l = o.getState(t); l && (l.style = null) } + else { + s.style = i || null + }a && (s.textConfig = a), vl(o) + } + } function dR(t, e, n) { const i = n === JO; const r = i ? e : _R(e, n); const o = r ? r.z2 : null; o != null && ((i ? t : t.ensureState(n)).z2 = o || 0) } function fR(t, e, n, i) { + const r = t.get('renderItem'); const o = t.coordinateSystem; let a = {}; o && (a = o.prepareCustoms ? o.prepareCustoms(o) : aR[o.type](o)); for (var s, l, u = k({ getWidth: i.getWidth, getHeight: i.getHeight, getZr: i.getZr, getDevicePixelRatio: i.getDevicePixelRatio, value(t, n) { return n == null && (n = s), e.getStore().get(e.getDimensionIndex(t || 0), n) }, style(n, i) { i == null && (i = s); const r = e.getItemVisual(i, 'style'); const o = r && r.fill; const a = r && r.opacity; let l = m(i, JO).getItemStyle(); o != null && (l.fill = o), a != null && (l.opacity = a); const u = { inheritColor: X(o) ? o : '#000' }; const h = x(i, JO); const c = Uh(h, null, u, !1, !0); c.text = h.getShallow('show') ? rt(t.getFormattedLabel(i, JO), Ww(e, i)) : null; const p = Xh(h, u, !1); return b(n, l), l = kO(l, c, p), n && _(l, n), l.legacy = !0, l }, ordinalRawValue(t, n) { n == null && (n = s), t = t || 0; const i = e.getDimensionInfo(t); if (!i) { const r = e.getDimensionIndex(t); return r >= 0 ? e.getStore().get(r, n) : void 0 } const o = e.get(i.name, n); const a = i && i.ordinalMeta; return a ? a.categories[o] : o }, styleEmphasis(n, i) { i == null && (i = s); let r = m(i, $O).getItemStyle(); const o = x(i, $O); const a = Uh(o, null, null, !0, !0); a.text = o.getShallow('show') ? ot(t.getFormattedLabel(i, $O), t.getFormattedLabel(i, JO), Ww(e, i)) : null; const l = Xh(o, null, !0); return b(n, r), r = kO(r, a, l), n && _(r, n), r.legacy = !0, r }, visual(t, n) { + if (n == null && (n = s), mt(xO, t)) { const i = e.getItemVisual(n, 'style'); return i ? i[xO[t]] : null } if (mt(_O, t)) + return e.getItemVisual(n, t) + }, barLayout(t) { + if (o.type === 'cartesian2d') + return (function (t) { const e = []; const n = t.axis; if (n.type === 'category') { for (var r = n.getBandWidth(), o = 0; o < t.count; o++)e.push(k({ bandWidth: r, axisKey: 'axis0', stackId: Mx + o }, t)); const a = Ax(e); const s = []; for (o = 0; o < t.count; o++) { const l = a.axis0[Mx + o]; l.offsetCenter = l.offset + l.width / 2, s.push(l) } return s } }(k({ axis: o.getBaseAxis() }, t))) + }, currentSeriesIndices() { return n.getCurrentSeriesIndices() }, font(t) { return $h(t, n) } }, a.api || {}), h = { context: {}, seriesId: t.id, seriesName: t.name, seriesIndex: t.seriesIndex, coordSys: a.coordSys, dataInsideLength: e.count(), encode: gR(t.getData()) }, c = {}, p = {}, d = {}, f = {}, g = 0; g < eR.length; g++) { const y = eR[g]; d[y] = t.getModel(nR[y]), f[y] = t.getModel(iR[y]) } function v(t) { return t === s ? l || (l = e.getItemModel(t)) : e.getItemModel(t) } function m(t, n) { return e.hasItemOption ? t === s ? c[n] || (c[n] = v(t).getModel(nR[n])) : v(t).getModel(nR[n]) : d[n] } function x(t, n) { return e.hasItemOption ? t === s ? p[n] || (p[n] = v(t).getModel(iR[n])) : v(t).getModel(iR[n]) : f[n] } return function (t, n) { return s = t, l = null, c = {}, p = {}, r && r(k({ dataIndexInside: t, dataIndex: e.getRawIndex(t), actionType: n ? n.type : null }, h), u) }; function _(t, e) { for (const n in e)mt(e, n) && (t[n] = e[n]) } function b(t, e) { t && (t.textFill && (e.textFill = t.textFill), t.textPosition && (e.textPosition = t.textPosition)) } + } function gR(t) { const e = {}; return E(t.dimensions, (n) => { const i = t.getDimensionInfo(n); if (!i.isExtraCoord) { const r = i.coordDim; (e[r] = e[r] || [])[i.coordDimIndex] = t.getDimensionIndex(n) } }), e } function yR(t, e, n, i, r, o, a) { if (i) { const s = vR(t, e, n, i, r, o); return s && a.setItemGraphicEl(n, s), s && Rl(s, i.focus, i.blurScope, i.emphasisDisabled), s }o.remove(e) } function vR(t, e, n, i, r, o) { + let a = -1; const s = e; e && mR(e, i, r) && (a = P(o.childrenRef(), e), e = null); let l; let u; const h = !e; let c = e; c ? c.clearStates() : (c = hR(i), s && (l = s, (u = c).copyTransform(l), lR(u) && lR(l) && (u.setStyle(l.style), u.z = l.z, u.z2 = l.z2, u.zlevel = l.zlevel, u.invisible = l.invisible, u.ignore = l.ignore, sR(u) && sR(l) && u.setShape(l.shape)))), !1 === i.morph ? c.disableMorphing = !0 : c.disableMorphing && (c.disableMorphing = !1), oR.normal.cfg = oR.normal.conOpt = oR.emphasis.cfg = oR.emphasis.conOpt = oR.blur.cfg = oR.blur.conOpt = oR.select.cfg = oR.select.conOpt = null, oR.isLegacy = !1, (function (t, e, n, i, r, o) { + if (!t.isGroup) { + xR(n, null, o), xR(n, $O, o); let a = o.normal.conOpt; const s = o.emphasis.conOpt; const l = o.blur.conOpt; const u = o.select.conOpt; if (a != null || s != null || u != null || l != null) { + let h = t.getTextContent(); if (!1 === a) { + h && t.removeTextContent() + } + else { + a = o.normal.conOpt = a || { type: 'text' }, h ? h.clearStates() : (h = hR(a), t.setTextContent(h)), cR(null, h, e, a, null, i, r); for (var c = a && a.style, p = 0; p < eR.length; p++) { + const d = eR[p]; if (d !== JO) + pR(d, h, 0, bR(a, o[d].conOpt, d), null) + }c ? h.dirty() : h.markRedraw() + } + } + } + }(c, n, i, r, h, oR)), (function (t, e, n, i, r) { + const o = n.clipPath; if (!1 === o) { + t && t.getClipPath() && t.removeClipPath() + } + else if (o) { let a = t.getClipPath(); a && mR(a, o, i) && (a = null), a || (a = hR(o), t.setClipPath(a)), cR(null, a, e, o, null, i, r) } + }(c, n, i, r, h)), cR(t, c, n, i, oR, r, h), mt(i, 'info') && (bO(c).info = i.info); for (let p = 0; p < eR.length; p++) { + const d = eR[p]; if (d !== JO) + pR(d, c, 0, bR(i, _R(i, d), d), oR) + } return (function (t, e, n) { if (!t.isGroup) { const i = t; const r = n.currentZ; const o = n.currentZLevel; i.z = r, i.zlevel = o; const a = e.z2; a != null && (i.z2 = a || 0); for (let s = 0; s < eR.length; s++)dR(i, e, eR[s]) } }(c, i, r)), i.type === 'group' && (function (t, e, n, i, r) { + const o = i.children; const a = o ? o.length : 0; const s = i.$mergeChildren; const l = s === 'byName' || i.diffChildrenByName; const u = !1 === s; if (a || l || u) { + if (l) + return h = { api: t, oldChildren: e.children() || [], newChildren: o || [], dataIndex: n, seriesModel: r, group: e }, void new Im(h.oldChildren, h.newChildren, wR, wR, h).add(SR).update(SR).remove(MR).execute(); let h; u && e.removeAll(); for (var c = 0; c < a; c++)o[c] && vR(t, e.childAt(c), n, o[c], r, e); for (let p = e.childCount() - 1; p >= c; p--)BO(e.childAt(p), bO(e).option, r) + } + }(t, c, n, i, r)), a >= 0 ? o.replaceAt(c, a) : o.add(c), c + } function mR(t, e, n) { let i; const r = bO(t); const o = e.type; const a = e.shape; const s = e.style; return n.isUniversalTransitionEnabled() || o != null && o !== r.customGraphicType || o === 'path' && (i = a) && (mt(i, 'pathData') || mt(i, 'd')) && IR(a) !== r.customPathData || o === 'image' && mt(s, 'image') && s.image !== r.customImagePath } function xR(t, e, n) { const i = e ? _R(t, e) : t; const r = e ? bR(t, i, $O) : t.style; const o = t.type; let a = i ? i.textConfig : null; const s = t.textContent; let l = s ? e ? _R(s, e) : s : null; if (r && (n.isLegacy || CO(r, o, !!a, !!l))) { n.isLegacy = !0; const u = DO(r, o, !e); !a && u.textConfig && (a = u.textConfig), !l && u.textContent && (l = u.textContent) } if (!e && l) { const h = l; !h.type && (h.type = 'text') } const c = e ? n[e] : n.normal; c.cfg = a, c.conOpt = l } function _R(t, e) { return e ? t ? t[e] : null : t } function bR(t, e, n) { let i = e && e.style; return i == null && n === $O && t && (i = t.styleEmphasis), i } function wR(t, e) { const n = t && t.name; return n != null ? n : `e\0\0${e}` } function SR(t, e) { const n = this.context; const i = t != null ? n.newChildren[t] : null; const r = e != null ? n.oldChildren[e] : null; vR(n.api, r, n.dataIndex, i, n.seriesModel, n.group) } function MR(t) { const e = this.context; const n = e.oldChildren[t]; BO(n, bO(n).option, e.seriesModel) } function IR(t) { return t && (t.pathData || t.d) } const TR = So(); const CR = T; const DR = W; const AR = (function () { + function t() { this._dragging = !1, this.animationThreshold = 15 } return t.prototype.render = function (t, e, n, i) { + const r = e.get('value'); const o = e.get('status'); if (this._axisModel = t, this._axisPointerModel = e, this._api = n, i || this._lastValue !== r || this._lastStatus !== o) { + this._lastValue = r, this._lastStatus = o; let a = this._group; const s = this._handle; if (!o || o === 'hide') + return a && a.hide(), void (s && s.hide()); a && a.show(), s && s.show(); const l = {}; this.makeElOption(l, r, t, e, n); const u = l.graphicKey; u !== this._lastGraphicKey && this.clear(n), this._lastGraphicKey = u; const h = this._moveAnimation = this.determineAnimation(t, e); if (a) { const c = H(kR, e, h); this.updatePointerEl(a, l, c), this.updateLabelEl(a, l, c, e) } + else { + a = this._group = new Cr(), this.createPointerEl(a, l, t, e), this.createLabelEl(a, l, t, e), n.getZr().add(a) + }RR(a, e, !0), this._renderHandle(r) + } + }, t.prototype.remove = function (t) { this.clear(t) }, t.prototype.dispose = function (t) { this.clear(t) }, t.prototype.determineAnimation = function (t, e) { + const n = e.get('animation'); const i = t.axis; const r = i.type === 'category'; const o = e.get('snap'); if (!o && !r) + return !1; if (n === 'auto' || n == null) { + const a = this.animationThreshold; if (r && i.getBandWidth() > a) + return !0; if (o) { const s = KM(t).seriesDataCount; const l = i.getExtent(); return Math.abs(l[0] - l[1]) / s > a } return !1 + } return !0 === n + }, t.prototype.makeElOption = function (t, e, n, i, r) {}, t.prototype.createPointerEl = function (t, e, n, i) { const r = e.pointer; if (r) { const o = TR(t).pointerEl = new Bh[r.type](CR(e.pointer)); t.add(o) } }, t.prototype.createLabelEl = function (t, e, n, i) { if (e.label) { const r = TR(t).labelEl = new ks(CR(e.label)); t.add(r), PR(r, i) } }, t.prototype.updatePointerEl = function (t, e, n) { const i = TR(t).pointerEl; i && e.pointer && (i.setStyle(e.pointer.style), n(i, { shape: e.pointer.shape })) }, t.prototype.updateLabelEl = function (t, e, n, i) { const r = TR(t).labelEl; r && (r.setStyle(e.label.style), n(r, { x: e.label.x, y: e.label.y }), PR(r, i)) }, t.prototype._renderHandle = function (t) { + if (!this._dragging && this.updateHandleTransform) { + let e; const n = this._axisPointerModel; const i = this._api.getZr(); let r = this._handle; const o = n.getModel('handle'); const a = n.get('status'); if (!o.get('show') || !a || a === 'hide') + return r && i.remove(r), void (this._handle = null); this._handle || (e = !0, r = this._handle = Ph(o.get('icon'), { cursor: 'move', draggable: !0, onmousemove(t) { se(t.event) }, onmousedown: DR(this._onHandleDragMove, this, 0, 0), drift: DR(this._onHandleDragMove, this), ondragend: DR(this._onHandleDragEnd, this) }), i.add(r)), RR(r, n, !1), r.setStyle(o.getItemStyle(null, ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'])); let s = o.get('size'); Y(s) || (s = [s, s]), r.scaleX = s[0] / 2, r.scaleY = s[1] / 2, Ag(this, '_doDispatchAxisPointer', o.get('throttle') || 0, 'fixRate'), this._moveHandleToValue(t, e) + } + }, t.prototype._moveHandleToValue = function (t, e) { kR(this._axisPointerModel, !e && this._moveAnimation, this._handle, OR(this.getHandleTransform(t, this._axisModel, this._axisPointerModel))) }, t.prototype._onHandleDragMove = function (t, e) { const n = this._handle; if (n) { this._dragging = !0; const i = this.updateHandleTransform(OR(n), [t, e], this._axisModel, this._axisPointerModel); this._payloadInfo = i, n.stopAnimation(), n.attr(OR(i)), TR(n).lastProp = null, this._doDispatchAxisPointer() } }, t.prototype._doDispatchAxisPointer = function () { if (this._handle) { const t = this._payloadInfo; const e = this._axisModel; this._api.dispatchAction({ type: 'updateAxisPointer', x: t.cursorPoint[0], y: t.cursorPoint[1], tooltipOption: t.tooltipOption, axesInfo: [{ axisDim: e.axis.dim, axisIndex: e.componentIndex }] }) } }, t.prototype._onHandleDragEnd = function () { if (this._dragging = !1, this._handle) { const t = this._axisPointerModel.get('value'); this._moveHandleToValue(t), this._api.dispatchAction({ type: 'hideTip' }) } }, t.prototype.clear = function (t) { this._lastValue = null, this._lastStatus = null; const e = t.getZr(); const n = this._group; const i = this._handle; e && n && (this._lastGraphicKey = null, n && e.remove(n), i && e.remove(i), this._group = null, this._handle = null, this._payloadInfo = null), kg(this, '_doDispatchAxisPointer') }, t.prototype.doClear = function () {}, t.prototype.buildLabel = function (t, e, n) { return { x: t[n = n || 0], y: t[1 - n], width: e[n], height: e[1 - n] } }, t + }()); function kR(t, e, n, i) { LR(TR(n).lastProp, i) || (TR(n).lastProp = i, e ? rh(n, i, t) : (n.stopAnimation(), n.attr(i))) } function LR(t, e) { if (q(t) && q(e)) { let n = !0; return E(e, (e, i) => { n = n && LR(t[i], e) }), !!n } return t === e } function PR(t, e) { t[e.get(['label', 'show']) ? 'show' : 'hide']() } function OR(t) { return { x: t.x || 0, y: t.y || 0, rotation: t.rotation || 0 } } function RR(t, e, n) { const i = e.get('z'); const r = e.get('zlevel'); t && t.traverse((t) => { t.type !== 'group' && (i != null && (t.z = i), r != null && (t.zlevel = r), t.silent = n) }) } function NR(t) { let e; const n = t.get('type'); const i = t.getModel(`${n}Style`); return n === 'line' ? (e = i.getLineStyle()).fill = null : n === 'shadow' && ((e = i.getAreaStyle()).stroke = null), e } function ER(t, e, n, i, r) { const o = zR(n.get('value'), e.axis, e.ecModel, n.get('seriesDataIndices'), { precision: n.get(['label', 'precision']), formatter: n.get(['label', 'formatter']) }); const a = n.getModel('label'); const s = ip(a.get('padding') || 0); const l = a.getFont(); const u = cr(o, l); const h = r.position; const c = u.width + s[1] + s[3]; const p = u.height + s[0] + s[2]; const d = r.align; d === 'right' && (h[0] -= c), d === 'center' && (h[0] -= c / 2); const f = r.verticalAlign; f === 'bottom' && (h[1] -= p), f === 'middle' && (h[1] -= p / 2), (function (t, e, n, i) { const r = i.getWidth(); const o = i.getHeight(); t[0] = Math.min(t[0] + e, r) - e, t[1] = Math.min(t[1] + n, o) - n, t[0] = Math.max(t[0], 0), t[1] = Math.max(t[1], 0) }(h, c, p, i)); let g = a.get('backgroundColor'); g && g !== 'auto' || (g = e.get(['axisLine', 'lineStyle', 'color'])), t.label = { x: h[0], y: h[1], style: Uh(a, { text: o, font: l, fill: a.getTextColor(), padding: s, backgroundColor: g }), z2: 10 } } function zR(t, e, n, i, r) { t = e.scale.parse(t); let o = e.scale.getLabel({ value: t }, { precision: r.precision }); const a = r.formatter; if (a) { const s = { value: s_(e, { value: t }), axisDimension: e.dim, axisIndex: e.index, seriesData: [] }; E(i, (t) => { const e = n.getSeriesByIndex(t.seriesIndex); const i = t.dataIndexInside; const r = e && e.getDataParams(i); r && s.seriesData.push(r) }), X(a) ? o = a.replace('{value}', o) : U(a) && (o = a(s)) } return o } function VR(t, e, n) { const i = [1, 0, 0, 1, 0, 0]; return zi(i, i, n.rotation), Ei(i, i, n.position), Th([t.dataToCoord(e), (n.labelOffset || 0) + (n.labelDirection || 1) * (n.labelMargin || 0)], i) } function BR(t, e, n, i, r, o) { const a = GM.innerTextLayout(n.rotation, 0, n.labelDirection); n.labelMargin = r.get(['label', 'margin']), ER(e, i, r, o, { position: VR(i.axis, t, n), align: a.textAlign, verticalAlign: a.textVerticalAlign }) } function FR(t, e, n) { return { x1: t[n = n || 0], y1: t[1 - n], x2: e[n], y2: e[1 - n] } } function GR(t, e, n) { return { x: t[n = n || 0], y: t[1 - n], width: e[n], height: e[1 - n] } } function WR(t, e, n, i, r, o) { return { cx: t, cy: e, r0: n, r: i, startAngle: r, endAngle: o, clockwise: !0 } } const HR = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.makeElOption = function (t, e, n, i, r) { const o = n.axis; const a = o.grid; const s = i.get('type'); const l = YR(a, o).getOtherAxis(o).getGlobalExtent(); const u = o.toGlobalCoord(o.dataToCoord(e, !0)); if (s && s !== 'none') { const h = NR(i); const c = UR[s](o, u, l); c.style = h, t.graphicKey = c.type, t.pointer = c }BR(e, t, LM(a.model, n), n, i, r) }, e.prototype.getHandleTransform = function (t, e, n) { const i = LM(e.axis.grid.model, e, { labelInside: !1 }); i.labelMargin = n.get(['handle', 'margin']); const r = VR(e.axis, t, i); return { x: r[0], y: r[1], rotation: i.rotation + (i.labelDirection < 0 ? Math.PI : 0) } }, e.prototype.updateHandleTransform = function (t, e, n, i) { const r = n.axis; const o = r.grid; const a = r.getGlobalExtent(!0); const s = YR(o, r).getOtherAxis(r).getGlobalExtent(); const l = r.dim === 'x' ? 0 : 1; const u = [t.x, t.y]; u[l] += e[l], u[l] = Math.min(a[1], u[l]), u[l] = Math.max(a[0], u[l]); const h = (s[1] + s[0]) / 2; const c = [h, h]; return c[l] = u[l], { x: u[0], y: u[1], rotation: t.rotation, cursorPoint: c, tooltipOption: [{ verticalAlign: 'middle' }, { align: 'center' }][l] } }, e }(AR)); function YR(t, e) { const n = {}; return n[`${e.dim}AxisIndex`] = e.index, t.getCartesian(n) } var UR = { line(t, e, n) { return { type: 'Line', subPixelOptimize: !0, shape: FR([e, n[0]], [e, n[1]], XR(t)) } }, shadow(t, e, n) { const i = Math.max(1, t.getBandWidth()); const r = n[1] - n[0]; return { type: 'Rect', shape: GR([e - i / 2, n[0]], [i, r], XR(t)) } } }; function XR(t) { return t.dim === 'x' ? 0 : 1 } const ZR = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'axisPointer', e.defaultOption = { show: 'auto', z: 50, type: 'line', snap: !1, triggerTooltip: !0, value: null, status: null, link: [], animation: null, animationDurationUpdate: 200, lineStyle: { color: '#B9BEC9', width: 1, type: 'dashed' }, shadowStyle: { color: 'rgba(210,219,238,0.2)' }, label: { show: !0, formatter: null, precision: 'auto', margin: 3, color: '#fff', padding: [5, 7, 5, 7], backgroundColor: 'auto', borderColor: null, borderWidth: 0, borderRadius: 3 }, handle: { show: !1, icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z', size: 45, margin: 50, color: '#333', shadowBlur: 3, shadowColor: '#aaa', shadowOffsetX: 0, shadowOffsetY: 2, throttle: 40 } }, e }(Tp)); const jR = So(); const qR = E; function KR(t, e, n) { if (!r.node) { const i = e.getZr(); jR(i).records || (jR(i).records = {}), (function (t, e) { function n(n, i) { t.on(n, (n) => { const r = (function (t) { const e = { showTip: [], hideTip: [] }; const n = function (i) { const r = e[i.type]; r ? r.push(i) : (i.dispatchAction = n, t.dispatchAction(i)) }; return { dispatchAction: n, pendings: e } }(e)); qR(jR(t).records, (t) => { t && i(t, n, r.dispatchAction) }), (function (t, e) { let n; const i = t.showTip.length; const r = t.hideTip.length; i ? n = t.showTip[i - 1] : r && (n = t.hideTip[r - 1]), n && (n.dispatchAction = null, e.dispatchAction(n)) }(r.pendings, e)) }) }jR(t).initialized || (jR(t).initialized = !0, n('click', H(JR, 'click')), n('mousemove', H(JR, 'mousemove')), n('globalout', $R)) }(i, e)), (jR(i).records[t] || (jR(i).records[t] = {})).handler = n } } function $R(t, e, n) { t.handler('leave', null, n) } function JR(t, e, n, i) { e.handler(t, n, i) } function QR(t, e) { if (!r.node) { const n = e.getZr(); (jR(n).records || {})[t] && (jR(n).records[t] = null) } } const tN = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { const i = e.getComponent('tooltip'); const r = t.get('triggerOn') || i && i.get('triggerOn') || 'mousemove|click'; KR('axisPointer', n, (t, e, n) => { r !== 'none' && (t === 'leave' || r.includes(t)) && n({ type: 'updateAxisPointer', currTrigger: t, x: e && e.offsetX, y: e && e.offsetY }) }) }, e.prototype.remove = function (t, e) { QR('axisPointer', e) }, e.prototype.dispose = function (t, e) { QR('axisPointer', e) }, e.type = 'axisPointer', e }(gg)); function eN(t, e) { + let n; let i = []; const r = t.seriesIndex; if (r == null || !(n = e.getSeriesByIndex(r))) + return { point: [] }; const o = n.getData(); const a = wo(o, t); if (a == null || a < 0 || Y(a)) + return { point: [] }; const s = o.getItemGraphicEl(a); const l = n.coordinateSystem; if (n.getTooltipPosition) { + i = n.getTooltipPosition(a) || [] + } + else if (l && l.dataToPoint) { + if (t.isStacked) { const u = l.getBaseAxis(); const h = l.getOtherAxis(u).dim; const c = u.dim; const p = h === 'x' || h === 'radius' ? 1 : 0; const d = o.mapDimension(c); const f = []; f[p] = o.get(d, a), f[1 - p] = o.get(o.getCalculationInfo('stackResultDimension'), a), i = l.dataToPoint(f) || [] } + else { + i = l.dataToPoint(o.getValues(z(l.dimensions, (t) => { return o.mapDimension(t) }), a)) || [] + } + } + else if (s) { const g = s.getBoundingRect().clone(); g.applyTransform(s.transform), i = [g.x + g.width / 2, g.y + g.height / 2] } return { point: i, el: s } + } const nN = So(); function iN(t, e, n) { + const i = t.currTrigger; let r = [t.x, t.y]; const o = t; const a = t.dispatchAction || W(n.dispatchAction, n); const s = e.getComponent('axisPointer').coordSysAxesInfo; if (s) { + lN(r) && (r = eN({ seriesIndex: o.seriesIndex, dataIndex: o.dataIndex }, e).point); const l = lN(r); const u = o.axesInfo; const h = s.axesInfo; const c = i === 'leave' || lN(r); const p = {}; const d = {}; const f = { list: [], map: {} }; const g = { showPointer: H(oN, d), showTooltip: H(aN, f) }; E(s.coordSysMap, (t, e) => { + const n = l || t.containPoint(r); E(s.coordSysAxesInfo[e], (t, e) => { + const i = t.axis; const o = (function (t, e) { + for (let n = 0; n < (t || []).length; n++) { + const i = t[n]; if (e.axis.dim === i.axisDim && e.axis.model.componentIndex === i.axisIndex) + return i + } + }(u, t)); if (!c && n && (!u || o)) { let a = o && o.value; a != null || l || (a = i.pointToData(r)), a != null && rN(t, a, g, !1, p) } + }) + }); const y = {}; return E(h, (t, e) => { const n = t.linkGroup; n && !d[e] && E(n.axesInfo, (e, i) => { const r = d[i]; if (e !== t && r) { let o = r.value; n.mapper && (o = t.axis.scale.parse(n.mapper(o, sN(e), sN(t)))), y[t.key] = o } }) }), E(y, (t, e) => { rN(h[e], t, g, !0, p) }), (function (t, e, n) { const i = n.axesInfo = []; E(e, (e, n) => { const r = e.axisPointerModel.option; const o = t[n]; o ? (!e.useHandle && (r.status = 'show'), r.value = o.value, r.seriesDataIndices = (o.payloadBatch || []).slice()) : !e.useHandle && (r.status = 'hide'), r.status === 'show' && i.push({ axisDim: e.axis.dim, axisIndex: e.axis.model.componentIndex, value: r.value }) }) }(d, h, p)), (function (t, e, n, i) { + if (!lN(e) && t.list.length) { const r = ((t.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}; i({ type: 'showTip', escapeConnect: !0, x: e[0], y: e[1], tooltipOption: n.tooltipOption, position: n.position, dataIndexInside: r.dataIndexInside, dataIndex: r.dataIndex, seriesIndex: r.seriesIndex, dataByCoordSys: t.list }) } + else { + i({ type: 'hideTip' }) + } + }(f, r, t, a)), (function (t, e, n) { const i = n.getZr(); const r = 'axisPointerLastHighlights'; const o = nN(i)[r] || {}; const a = nN(i)[r] = {}; E(t, (t, e) => { const n = t.axisPointerModel.option; n.status === 'show' && E(n.seriesDataIndices, (t) => { const e = `${t.seriesIndex} | ${t.dataIndex}`; a[e] = t }) }); const s = []; const l = []; E(o, (t, e) => { !a[e] && l.push(t) }), E(a, (t, e) => { !o[e] && s.push(t) }), l.length && n.dispatchAction({ type: 'downplay', escapeConnect: !0, notBlur: !0, batch: l }), s.length && n.dispatchAction({ type: 'highlight', escapeConnect: !0, notBlur: !0, batch: s }) }(h, 0, n)), p + } + } function rN(t, e, n, i, r) { + const o = t.axis; if (!o.scale.isBlank() && o.containData(e)) { + if (t.involveSeries) { + const a = (function (t, e) { + const n = e.axis; const i = n.dim; let r = t; const o = []; let a = Number.MAX_VALUE; let s = -1; return E(e.seriesModels, (e, l) => { + let u; let h; const c = e.getData().mapDimensionsAll(i); if (e.getAxisTooltipData) { const p = e.getAxisTooltipData(c, t, n); h = p.dataIndices, u = p.nestestValue } + else { + if (!(h = e.getData().indicesOfNearest(c[0], t, n.type === 'category' ? 0.5 : null)).length) + return; u = e.getData().get(c[0], h[0]) + } if (u != null && isFinite(u)) { const d = t - u; const f = Math.abs(d); f <= a && ((f < a || d >= 0 && s < 0) && (a = f, s = d, r = u, o.length = 0), E(h, (t) => { o.push({ seriesIndex: e.seriesIndex, dataIndexInside: t, dataIndex: e.getData().getRawIndex(t) }) })) } + }), { payloadBatch: o, snapToValue: r } + }(e, t)); const s = a.payloadBatch; const l = a.snapToValue; s[0] && r.seriesIndex == null && A(r, s[0]), !i && t.snap && o.containData(l) && l != null && (e = l), n.showPointer(t, e, s), n.showTooltip(t, a, l) + } + else { + n.showPointer(t, e) + } + } + } function oN(t, e, n, i) { t[e.key] = { value: n, payloadBatch: i } } function aN(t, e, n, i) { const r = n.payloadBatch; const o = e.axis; const a = o.model; const s = e.axisPointerModel; if (e.triggerTooltip && r.length) { const l = e.coordSys.model; const u = JM(l); let h = t.map[u]; h || (h = t.map[u] = { coordSysId: l.id, coordSysIndex: l.componentIndex, coordSysType: l.type, coordSysMainType: l.mainType, dataByAxis: [] }, t.list.push(h)), h.dataByAxis.push({ axisDim: o.dim, axisIndex: a.componentIndex, axisType: a.type, axisId: a.id, value: i, valueLabelOpt: { precision: s.get(['label', 'precision']), formatter: s.get(['label', 'formatter']) }, seriesDataIndices: r.slice() }) } } function sN(t) { const e = t.axis.model; const n = {}; const i = n.axisDim = t.axis.dim; return n.axisIndex = n[`${i}AxisIndex`] = e.componentIndex, n.axisName = n[`${i}AxisName`] = e.name, n.axisId = n[`${i}AxisId`] = e.id, n } function lN(t) { return !t || t[0] == null || isNaN(t[0]) || t[1] == null || isNaN(t[1]) } function uN(t) { + tI.registerAxisPointerClass('CartesianAxisPointer', HR), t.registerComponentModel(ZR), t.registerComponentView(tN), t.registerPreprocessor((t) => { if (t) { (!t.axisPointer || t.axisPointer.length === 0) && (t.axisPointer = {}); const e = t.axisPointer.link; e && !Y(e) && (t.axisPointer.link = [e]) } }), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, (t, e) => { + t.getComponent('axisPointer').coordSysAxesInfo = (function (t, e) { + const n = { axesInfo: {}, seriesInvolved: !1, coordSysAxesInfo: {}, coordSysMap: {} }; return (function (t, e, n) { + const i = e.getComponent('tooltip'); const r = e.getComponent('axisPointer'); const o = r.get('link', !0) || []; const a = []; E(n.getCoordinateSystems(), (n) => { + if (n.axisPointerEnabled) { const s = JM(n.model); var l = t.coordSysAxesInfo[s] = {}; t.coordSysMap[s] = n; var u = n.model.getModel('tooltip', i); if (E(n.getAxes(), H(d, !1, null)), n.getTooltipAxes && i && u.get('show')) { const h = u.get('trigger') === 'axis'; const c = 'cross' === u.get(['axisPointer', 'type']); const p = n.getTooltipAxes(u.get(['axisPointer', 'axis'])); (h || c) && E(p.baseAxes, H(d, !c || 'cross', h)), c && E(p.otherAxes, H(d, 'cross', !1)) } } function d(i, s, h) { + let c = h.model.getModel('axisPointer', r); const p = c.get('show'); if (p && (p !== 'auto' || i || $M(c))) { + s == null && (s = c.get('triggerTooltip')); const d = (c = i ? (function (t, e, n, i, r, o) { let a = e.getModel('axisPointer'); let s = {}; E(['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'], (t) =>{ s[t] = T(a.get(t)) }), s.snap = 'category' !== t.type && !!o, 'cross' === a.get('type') && (s.type = 'line'); let l = s.label || (s.label = {}); if (l.show == null && (l.show = !1), 'cross' === r) { let u = a.get(['label', 'show']); if (l.show = u == null || u, !o) { let h = s.lineStyle = a.get('crossStyle'); h && k(l, h.textStyle) } } return t.model.getModel('axisPointer', new dc(s, n, i)) }(h, u, r, e, i, s)) : c).get('snap'); const f = JM(h.model); const g = s || d || 'category' === h.type; const y = t.axesInfo[f] = { key: f, axis: h, coordSys: n, axisPointerModel: c, triggerTooltip: s, involveSeries: g, snap: d, useHandle: $M(c), seriesModels: [], linkGroup: null }; l[f] = y, t.seriesInvolved = t.seriesInvolved || g; const v = (function (t, e) { + for (let n = e.model, i = e.dim, r = 0; r < t.length; r++) { + let o = t[r] || {}; if (jM(o[`${i}AxisId`], n.id) || jM(o[`${i}AxisIndex`], n.componentIndex) || jM(o[`${i}AxisName`], n.name)) + return r +} +}(o, h)); if (v != null) { const m = a[v] || (a[v] = { axesInfo: {} }); m.axesInfo[f] = y, m.mapper = o[v].mapper, y.linkGroup = m } + } + } + }) + }(n, t, e)), n.seriesInvolved && (function (t, e) { e.eachSeries((e) => { const n = e.coordinateSystem; const i = e.get(['tooltip', 'trigger'], !0); const r = e.get(['tooltip', 'show'], !0); n && i !== 'none' && !1 !== i && i !== 'item' && !1 !== r && !1 !== e.get(['axisPointer', 'show'], !0) && E(t.coordSysAxesInfo[JM(n.model)], (t) => { const i = t.axis; n.getAxis(i.dim) === i && (t.seriesModels.push(e), t.seriesDataCount == null && (t.seriesDataCount = 0), t.seriesDataCount += e.getData().count()) }) }) }(n, t)), n + }(t, e)) + }), t.registerAction({ type: 'updateAxisPointer', event: 'updateAxisPointer', update: ':updateAxisPointer' }, iN) + } const hN = (function (t) { + function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.makeElOption = function (t, e, n, i, r) { + const o = n.axis; o.dim === 'angle' && (this.animationThreshold = Math.PI / 18); const a = o.polar; const s = a.getOtherAxis(o).getExtent(); const l = o.dataToCoord(e); const u = i.get('type'); if (u && u !== 'none') { const h = NR(i); const c = cN[u](o, a, l, s); c.style = h, t.graphicKey = c.type, t.pointer = c } const p = (function (t, e, n, i, r) { + const o = e.axis; const a = o.dataToCoord(t); let s = i.getAngleAxis().getExtent()[0]; s = s / 180 * Math.PI; let l; let u; let h; const c = i.getRadiusAxis().getExtent(); if (o.dim === 'radius') { const p = [1, 0, 0, 1, 0, 0]; zi(p, p, s), Ei(p, p, [i.cx, i.cy]), l = Th([a, -r], p); const d = e.getModel('axisLabel').get('rotate') || 0; const f = GM.innerTextLayout(s, d * Math.PI / 180, -1); u = f.textAlign, h = f.textVerticalAlign } + else { const g = c[1]; l = i.coordToPoint([g + r, a]); const y = i.cx; const v = i.cy; u = Math.abs(l[0] - y) / g < 0.3 ? 'center' : l[0] > y ? 'left' : 'right', h = Math.abs(l[1] - v) / g < 0.3 ? 'middle' : l[1] > v ? 'top' : 'bottom' } return { position: l, align: u, verticalAlign: h } + }(e, n, 0, a, i.get(['label', 'margin']))); ER(t, n, i, r, p) + }, e + }(AR)); var cN = { line(t, e, n, i) { return t.dim === 'angle' ? { type: 'Line', shape: FR(e.coordToPoint([i[0], n]), e.coordToPoint([i[1], n])) } : { type: 'Circle', shape: { cx: e.cx, cy: e.cy, r: n } } }, shadow(t, e, n, i) { const r = Math.max(1, t.getBandWidth()); const o = Math.PI / 180; return t.dim === 'angle' ? { type: 'Sector', shape: WR(e.cx, e.cy, i[0], i[1], (-n - r / 2) * o, (r / 2 - n) * o) } : { type: 'Sector', shape: WR(e.cx, e.cy, n - r / 2, n + r / 2, 0, 2 * Math.PI) } } }; const pN = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.findAxisModel = function (t) { let e; return this.ecModel.eachComponent(t, function (t) { t.getCoordSysModel() === this && (e = t) }, this), e }, e.type = 'polar', e.dependencies = ['radiusAxis', 'angleAxis'], e.defaultOption = { z: 0, center: ['50%', '50%'], radius: '80%' }, e }(Tp)); const dN = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.getCoordSysModel = function () { return this.getReferringComponents('polar', Co).models[0] }, e.type = 'polarAxis', e }(Tp)); R(dN, p_); const fN = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'angleAxis', e }(dN)); const gN = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'radiusAxis', e }(dN)); const yN = (function (t) { function e(e, n) { return t.call(this, 'radius', e, n) || this } return n(e, t), e.prototype.pointToData = function (t, e) { return this.polar.pointToData(t, e)[this.dim === 'radius' ? 0 : 1] }, e }(H_)); yN.prototype.dataToRadius = H_.prototype.dataToCoord, yN.prototype.radiusToData = H_.prototype.coordToData; const vN = So(); const mN = (function (t) { + function e(e, n) { return t.call(this, 'angle', e, n || [0, 360]) || this } return n(e, t), e.prototype.pointToData = function (t, e) { return this.polar.pointToData(t, e)[this.dim === 'radius' ? 0 : 1] }, e.prototype.calculateCategoryInterval = function () { + const t = this; const e = t.getLabelModel(); const n = t.scale; const i = n.getExtent(); const r = n.count(); if (i[1] - i[0] < 1) + return 0; const o = i[0]; const a = t.dataToCoord(o + 1) - t.dataToCoord(o); const s = Math.abs(a); const l = cr(o == null ? '' : `${o}`, e.getFont(), 'center', 'top'); let u = Math.max(l.height, 7) / s; isNaN(u) && (u = 1 / 0); let h = Math.max(0, Math.floor(u)); const c = vN(t.model); const p = c.lastAutoInterval; const d = c.lastTickCount; return p != null && d != null && Math.abs(p - h) <= 1 && Math.abs(d - r) <= 1 && p > h ? h = p : (c.lastTickCount = r, c.lastAutoInterval = h), h + }, e + }(H_)); mN.prototype.dataToAngle = H_.prototype.dataToCoord, mN.prototype.angleToData = H_.prototype.coordToData; const xN = ['radius', 'angle']; const _N = (function () { function t(t) { this.dimensions = xN, this.type = 'polar', this.cx = 0, this.cy = 0, this._radiusAxis = new yN(), this._angleAxis = new mN(), this.axisPointerEnabled = !0, this.name = t || '', this._radiusAxis.polar = this._angleAxis.polar = this } return t.prototype.containPoint = function (t) { const e = this.pointToCoord(t); return this._radiusAxis.contain(e[0]) && this._angleAxis.contain(e[1]) }, t.prototype.containData = function (t) { return this._radiusAxis.containData(t[0]) && this._angleAxis.containData(t[1]) }, t.prototype.getAxis = function (t) { return this[`_${t}Axis`] }, t.prototype.getAxes = function () { return [this._radiusAxis, this._angleAxis] }, t.prototype.getAxesByScale = function (t) { const e = []; const n = this._angleAxis; const i = this._radiusAxis; return n.scale.type === t && e.push(n), i.scale.type === t && e.push(i), e }, t.prototype.getAngleAxis = function () { return this._angleAxis }, t.prototype.getRadiusAxis = function () { return this._radiusAxis }, t.prototype.getOtherAxis = function (t) { const e = this._angleAxis; return t === e ? this._radiusAxis : e }, t.prototype.getBaseAxis = function () { return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAngleAxis() }, t.prototype.getTooltipAxes = function (t) { const e = t != null && t !== 'auto' ? this.getAxis(t) : this.getBaseAxis(); return { baseAxes: [e], otherAxes: [this.getOtherAxis(e)] } }, t.prototype.dataToPoint = function (t, e) { return this.coordToPoint([this._radiusAxis.dataToRadius(t[0], e), this._angleAxis.dataToAngle(t[1], e)]) }, t.prototype.pointToData = function (t, e) { const n = this.pointToCoord(t); return [this._radiusAxis.radiusToData(n[0], e), this._angleAxis.angleToData(n[1], e)] }, t.prototype.pointToCoord = function (t) { let e = t[0] - this.cx; let n = t[1] - this.cy; const i = this.getAngleAxis(); const r = i.getExtent(); let o = Math.min(r[0], r[1]); let a = Math.max(r[0], r[1]); i.inverse ? o = a - 360 : a = o + 360; const s = Math.sqrt(e * e + n * n); e /= s, n /= s; for (var l = Math.atan2(-n, e) / Math.PI * 180, u = l < o ? 1 : -1; l < o || l > a;)l += 360 * u; return [s, l] }, t.prototype.coordToPoint = function (t) { const e = t[0]; const n = t[1] / 180 * Math.PI; return [Math.cos(n) * e + this.cx, -Math.sin(n) * e + this.cy] }, t.prototype.getArea = function () { const t = this.getAngleAxis(); const e = this.getRadiusAxis().getExtent().slice(); e[0] > e[1] && e.reverse(); const n = t.getExtent(); const i = Math.PI / 180; return { cx: this.cx, cy: this.cy, r0: e[0], r: e[1], startAngle: -n[0] * i, endAngle: -n[1] * i, clockwise: t.inverse, contain(t, e) { const n = t - this.cx; const i = e - this.cy; const r = n * n + i * i - 1e-4; const o = this.r; const a = this.r0; return r <= o * o && r >= a * a } } }, t.prototype.convertToPixel = function (t, e, n) { return bN(e) === this ? this.dataToPoint(n) : null }, t.prototype.convertFromPixel = function (t, e, n) { return bN(e) === this ? this.pointToData(n) : null }, t }()); function bN(t) { const e = t.seriesModel; const n = t.polarModel; return n && n.coordinateSystem || e && e.coordinateSystem } function wN(t, e) { const n = this; const i = n.getAngleAxis(); const r = n.getRadiusAxis(); if (i.scale.setExtent(1 / 0, -1 / 0), r.scale.setExtent(1 / 0, -1 / 0), t.eachSeries((t) => { if (t.coordinateSystem === n) { const e = t.getData(); E(c_(e, 'radius'), (t) => { r.scale.unionExtentFromData(e, t) }), E(c_(e, 'angle'), (t) => { i.scale.unionExtentFromData(e, t) }) } }), r_(i.scale, i.model), r_(r.scale, r.model), i.type === 'category' && !i.onBand) { const o = i.getExtent(); const a = 360 / i.scale.count(); i.inverse ? o[1] += a : o[1] -= a, i.setExtent(o[0], o[1]) } } function SN(t, e) { if (t.type = e.get('type'), t.scale = o_(e), t.onBand = e.get('boundaryGap') && t.type === 'category', t.inverse = e.get('inverse'), (function (t) { return t.mainType === 'angleAxis' }(e))) { t.inverse = t.inverse !== e.get('clockwise'); const n = e.get('startAngle'); t.setExtent(n, n + (t.inverse ? -360 : 360)) }e.axis = t, t.model = e } const MN = { dimensions: xN, create(t, e) { const n = []; return t.eachComponent('polar', (t, i) => { const r = new _N(`${i}`); r.update = wN; const o = r.getRadiusAxis(); const a = r.getAngleAxis(); const s = t.findAxisModel('radiusAxis'); const l = t.findAxisModel('angleAxis'); SN(o, s), SN(a, l), (function (t, e, n) { const i = e.get('center'); const r = n.getWidth(); const o = n.getHeight(); t.cx = Er(i[0], r), t.cy = Er(i[1], o); const a = t.getRadiusAxis(); const s = Math.min(r, o) / 2; let l = e.get('radius'); l == null ? l = [0, '100%'] : Y(l) || (l = [0, l]); const u = [Er(l[0], s), Er(l[1], s)]; a.inverse ? a.setExtent(u[1], u[0]) : a.setExtent(u[0], u[1]) }(r, t, e)), n.push(r), t.coordinateSystem = r, r.model = t }), t.eachSeries((t) => { if (t.get('coordinateSystem') === 'polar') { const e = t.getReferringComponents('polar', Co).models[0]; t.coordinateSystem = e.coordinateSystem } }), n } }; const IN = ['axisLine', 'axisLabel', 'axisTick', 'minorTick', 'splitLine', 'minorSplitLine', 'splitArea']; function TN(t, e, n) { e[1] > e[0] && (e = e.slice().reverse()); const i = t.coordToPoint([e[0], n]); const r = t.coordToPoint([e[1], n]); return { x1: i[0], y1: i[1], x2: r[0], y2: r[1] } } function CN(t) { return t.getRadiusAxis().inverse ? 0 : 1 } function DN(t) { const e = t[0]; const n = t[t.length - 1]; e && n && Math.abs(Math.abs(e.coord - n.coord) - 360) < 1e-4 && t.pop() } const AN = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.axisPointerClass = 'PolarAxisPointer', n } return n(e, t), e.prototype.render = function (t, e) { if (this.group.removeAll(), t.get('show')) { const n = t.axis; const i = n.polar; const r = i.getRadiusAxis().getExtent(); const o = n.getTicksCoords(); const a = n.getMinorTicksCoords(); const s = z(n.getViewLabels(), (t) => { t = T(t); const e = n.scale; const i = e.type === 'ordinal' ? e.getRawOrdinalNumber(t.tickValue) : t.tickValue; return t.coord = n.dataToCoord(i), t }); DN(s), DN(o), E(IN, function (e) { !t.get([e, 'show']) || n.scale.isBlank() && e !== 'axisLine' || kN[e](this.group, t, i, o, a, r, s) }, this) } }, e.type = 'angleAxis', e }(tI)); var kN = { axisLine(t, e, n, i, r, o) { let a; const s = e.getModel(['axisLine', 'lineStyle']); const l = CN(n); const u = l ? 0 : 1; (a = o[u] === 0 ? new hu({ shape: { cx: n.cx, cy: n.cy, r: o[l] }, style: s.getLineStyle(), z2: 1, silent: !0 }) : new Au({ shape: { cx: n.cx, cy: n.cy, r: o[l], r0: o[u] }, style: s.getLineStyle(), z2: 1, silent: !0 })).style.fill = null, t.add(a) }, axisTick(t, e, n, i, r, o) { const a = e.getModel('axisTick'); const s = (a.get('inside') ? -1 : 1) * a.get('length'); const l = o[CN(n)]; const u = z(i, (t) => { return new zu({ shape: TN(n, [l, l + s], t.coord) }) }); t.add(wh(u, { style: k(a.getModel('lineStyle').getLineStyle(), { stroke: e.get(['axisLine', 'lineStyle', 'color']) }) })) }, minorTick(t, e, n, i, r, o) { + if (r.length) { + for (var a = e.getModel('axisTick'), s = e.getModel('minorTick'), l = (a.get('inside') ? -1 : 1) * s.get('length'), u = o[CN(n)], h = [], c = 0; c < r.length; c++) { + for (let p = 0; p < r[c].length; p++)h.push(new zu({ shape: TN(n, [u, u + l], r[c][p].coord) })) + } t.add(wh(h, { style: k(s.getModel('lineStyle').getLineStyle(), k(a.getLineStyle(), { stroke: e.get(['axisLine', 'lineStyle', 'color']) })) })) + } + }, axisLabel(t, e, n, i, r, o, a) { const s = e.getCategories(!0); const l = e.getModel('axisLabel'); const u = l.get('margin'); const h = e.get('triggerEvent'); E(a, (i, r) => { let a = l; const c = i.tickValue; const p = o[CN(n)]; const d = n.coordToPoint([p + u, i.coord]); const f = n.cx; const g = n.cy; const y = Math.abs(d[0] - f) / p < 0.3 ? 'center' : d[0] > f ? 'left' : 'right'; const v = Math.abs(d[1] - g) / p < 0.3 ? 'middle' : d[1] > g ? 'top' : 'bottom'; if (s && s[c]) { const m = s[c]; q(m) && m.textStyle && (a = new dc(m.textStyle, l, l.ecModel)) } const x = new ks({ silent: GM.isLabelSilent(e), style: Uh(a, { x: d[0], y: d[1], fill: a.getTextColor() || e.get(['axisLine', 'lineStyle', 'color']), text: i.formattedLabel, align: y, verticalAlign: v }) }); if (t.add(x), h) { const _ = GM.makeAxisEventDataBase(e); _.targetType = 'axisLabel', _.value = i.rawLabel, Hs(x).eventData = _ } }, this) }, splitLine(t, e, n, i, r, o) { const a = e.getModel('splitLine').getModel('lineStyle'); let s = a.get('color'); let l = 0; s = Array.isArray(s) ? s : [s]; for (var u = [], h = 0; h < i.length; h++) { const c = l++ % s.length; u[c] = u[c] || [], u[c].push(new zu({ shape: TN(n, o, i[h].coord) })) } for (h = 0; h < u.length; h++)t.add(wh(u[h], { style: k({ stroke: s[h % s.length] }, a.getLineStyle()), silent: !0, z: e.get('z') })) }, minorSplitLine(t, e, n, i, r, o) { + if (r.length) { + for (var a = e.getModel('minorSplitLine').getModel('lineStyle'), s = [], l = 0; l < r.length; l++) { + for (let u = 0; u < r[l].length; u++)s.push(new zu({ shape: TN(n, o, r[l][u].coord) })) + } t.add(wh(s, { style: a.getLineStyle(), silent: !0, z: e.get('z') })) + } + }, splitArea(t, e, n, i, r, o) { if (i.length) { const a = e.getModel('splitArea').getModel('areaStyle'); let s = a.get('color'); let l = 0; s = Array.isArray(s) ? s : [s]; for (var u = [], h = Math.PI / 180, c = -i[0].coord * h, p = Math.min(o[0], o[1]), d = Math.max(o[0], o[1]), f = e.get('clockwise'), g = 1, y = i.length; g <= y; g++) { const v = g === y ? i[0].coord : i[g].coord; const m = l++ % s.length; u[m] = u[m] || [], u[m].push(new Cu({ shape: { cx: n.cx, cy: n.cy, r0: p, r: d, startAngle: c, endAngle: -v * h, clockwise: f }, silent: !0 })), c = -v * h } for (g = 0; g < u.length; g++)t.add(wh(u[g], { style: k({ fill: s[g % s.length] }, a.getAreaStyle()), silent: !0 })) } } }; const LN = ['axisLine', 'axisTickLabel', 'axisName']; const PN = ['splitLine', 'splitArea', 'minorSplitLine']; const ON = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.axisPointerClass = 'PolarAxisPointer', n } return n(e, t), e.prototype.render = function (t, e) { if (this.group.removeAll(), t.get('show')) { const n = this._axisGroup; const i = this._axisGroup = new Cr(); this.group.add(i); const r = t.axis; const o = r.polar; const a = o.getAngleAxis(); const s = r.getTicksCoords(); const l = r.getMinorTicksCoords(); const u = a.getExtent()[0]; const h = r.getExtent(); const c = (function (t, e, n) { return { position: [t.cx, t.cy], rotation: n / 180 * Math.PI, labelDirection: -1, tickDirection: -1, nameDirection: 1, labelRotate: e.getModel('axisLabel').get('rotate'), z2: 1 } }(o, t, u)); const p = new GM(t, c); E(LN, p.add, p), i.add(p.getGroup()), Ah(n, i, t), E(PN, function (e) { t.get([e, 'show']) && !r.scale.isBlank() && RN[e](this.group, t, o, u, h, s, l) }, this) } }, e.type = 'radiusAxis', e }(tI)); var RN = { splitLine(t, e, n, i, r, o) { const a = e.getModel('splitLine').getModel('lineStyle'); let s = a.get('color'); let l = 0; s = Array.isArray(s) ? s : [s]; for (var u = [], h = 0; h < o.length; h++) { const c = l++ % s.length; u[c] = u[c] || [], u[c].push(new hu({ shape: { cx: n.cx, cy: n.cy, r: Math.max(o[h].coord, 0) } })) } for (h = 0; h < u.length; h++)t.add(wh(u[h], { style: k({ stroke: s[h % s.length], fill: null }, a.getLineStyle()), silent: !0 })) }, minorSplitLine(t, e, n, i, r, o, a) { + if (a.length) { + for (var s = e.getModel('minorSplitLine').getModel('lineStyle'), l = [], u = 0; u < a.length; u++) { + for (let h = 0; h < a[u].length; h++)l.push(new hu({ shape: { cx: n.cx, cy: n.cy, r: a[u][h].coord } })) + } t.add(wh(l, { style: k({ fill: null }, s.getLineStyle()), silent: !0 })) + } + }, splitArea(t, e, n, i, r, o) { if (o.length) { const a = e.getModel('splitArea').getModel('areaStyle'); let s = a.get('color'); let l = 0; s = Array.isArray(s) ? s : [s]; for (var u = [], h = o[0].coord, c = 1; c < o.length; c++) { const p = l++ % s.length; u[p] = u[p] || [], u[p].push(new Cu({ shape: { cx: n.cx, cy: n.cy, r0: h, r: o[c].coord, startAngle: 0, endAngle: 2 * Math.PI }, silent: !0 })), h = o[c].coord } for (c = 0; c < u.length; c++)t.add(wh(u[c], { style: k({ fill: s[c % s.length] }, a.getAreaStyle()), silent: !0 })) } } }; function NN(t) { return t.get('stack') || `__ec_stack_${t.seriesIndex}` } function EN(t, e) { return e.dim + t.model.componentIndex } function zN(t, e, n) { + const i = {}; const r = (function (t) { const e = {}; E(t, (t, n) => { const i = t.getData(); const r = t.coordinateSystem; const o = r.getBaseAxis(); const a = EN(r, o); const s = o.getExtent(); const l = o.type === 'category' ? o.getBandWidth() : Math.abs(s[1] - s[0]) / i.count(); const u = e[a] || { bandWidth: l, remainedWidth: l, autoWidthCount: 0, categoryGap: '20%', gap: '30%', stacks: {} }; const h = u.stacks; e[a] = u; const c = NN(t); h[c] || u.autoWidthCount++, h[c] = h[c] || { width: 0, maxWidth: 0 }; let p = Er(t.get('barWidth'), l); const d = Er(t.get('barMaxWidth'), l); const f = t.get('barGap'); const g = t.get('barCategoryGap'); p && !h[c].width && (p = Math.min(u.remainedWidth, p), h[c].width = p, u.remainedWidth -= p), d && (h[c].maxWidth = d), f != null && (u.gap = f), g != null && (u.categoryGap = g) }); const n = {}; return E(e, (t, e) => { n[e] = {}; const i = t.stacks; const r = t.bandWidth; const o = Er(t.categoryGap, r); const a = Er(t.gap, 1); let s = t.remainedWidth; let l = t.autoWidthCount; let u = (s - o) / (l + (l - 1) * a); u = Math.max(u, 0), E(i, (t, e) => { let n = t.maxWidth; n && n < u && (n = Math.min(n, s), t.width && (n = Math.min(n, t.width)), s -= n, t.width = n, l--) }), u = (s - o) / (l + (l - 1) * a), u = Math.max(u, 0); let h; let c = 0; E(i, (t, e) => { t.width || (t.width = u), h = t, c += t.width * (1 + a) }), h && (c -= h.width * a); let p = -c / 2; E(i, (t, i) => { n[e][i] = n[e][i] || { offset: p, width: t.width }, p += t.width * (1 + a) }) }), n }(B(e.getSeriesByType(t), (t) => { return !e.isSeriesFiltered(t) && t.coordinateSystem && t.coordinateSystem.type === 'polar' }))); e.eachSeriesByType(t, (t) => { + if (t.coordinateSystem.type === 'polar') { + const e = t.getData(); const n = t.coordinateSystem; const o = n.getBaseAxis(); const a = EN(n, o); const s = NN(t); const l = r[a][s]; const u = l.offset; const h = l.width; const c = n.getOtherAxis(o); const p = t.coordinateSystem.cx; const d = t.coordinateSystem.cy; const f = t.get('barMinHeight') || 0; const g = t.get('barMinAngle') || 0; i[s] = i[s] || []; for (let y = e.mapDimension(c.dim), v = e.mapDimension(o.dim), m = nx(e, y), x = o.dim !== 'radius' || !t.get('roundCap', !0), _ = c.dataToCoord(0), b = 0, w = e.count(); b < w; b++) { + const S = e.get(y, b); const M = e.get(v, b); const I = S >= 0 ? 'p' : 'n'; let T = _; m && (i[s][M] || (i[s][M] = { p: _, n: _ }), T = i[s][M][I]); let C = void 0; let D = void 0; let A = void 0; let k = void 0; if (c.dim === 'radius') { let L = c.dataToCoord(S) - _; const P = o.dataToCoord(M); Math.abs(L) < f && (L = (L < 0 ? -1 : 1) * f), C = T, D = T + L, k = (A = P - u) - h, m && (i[s][M][I] = D) } + else { let O = c.dataToCoord(S, x) - _; const R = o.dataToCoord(M); Math.abs(O) < g && (O = (O < 0 ? -1 : 1) * g), D = (C = R + u) + h, A = T, k = T + O, m && (i[s][M][I] = k) }e.setItemLayout(b, { cx: p, cy: d, r0: C, r: D, startAngle: -A * Math.PI / 180, endAngle: -k * Math.PI / 180, clockwise: A >= k }) + } + } + }) + } const VN = { startAngle: 90, clockwise: !0, splitNumber: 12, axisLabel: { rotate: 0 } }; const BN = { splitNumber: 5 }; const FN = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'polar', e }(gg)); function GN(t, e) { e = e || {}; const n = t.coordinateSystem; const i = t.axis; const r = {}; const o = i.position; const a = i.orient; const s = n.getRect(); const l = [s.x, s.x + s.width, s.y, s.y + s.height]; const u = { horizontal: { top: l[2], bottom: l[3] }, vertical: { left: l[0], right: l[1] } }; r.position = [a === 'vertical' ? u.vertical[o] : l[0], a === 'horizontal' ? u.horizontal[o] : l[3]], r.rotation = Math.PI / 2 * { horizontal: 0, vertical: 1 }[a], r.labelDirection = r.tickDirection = r.nameDirection = { top: -1, bottom: 1, right: 1, left: -1 }[o], t.get(['axisTick', 'inside']) && (r.tickDirection = -r.tickDirection), it(e.labelInside, t.get(['axisLabel', 'inside'])) && (r.labelDirection = -r.labelDirection); let h = e.rotate; return h == null && (h = t.get(['axisLabel', 'rotate'])), r.labelRotation = o === 'top' ? -h : h, r.z2 = 1, r } const WN = ['axisLine', 'axisTickLabel', 'axisName']; const HN = ['splitArea', 'splitLine']; const YN = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.axisPointerClass = 'SingleAxisPointer', n } return n(e, t), e.prototype.render = function (e, n, i, r) { const o = this.group; o.removeAll(); const a = this._axisGroup; this._axisGroup = new Cr(); const s = GN(e); const l = new GM(e, s); E(WN, l.add, l), o.add(this._axisGroup), o.add(l.getGroup()), E(HN, function (t) { e.get([t, 'show']) && UN[t](this, this.group, this._axisGroup, e) }, this), Ah(a, this._axisGroup, e), t.prototype.render.call(this, e, n, i, r) }, e.prototype.remove = function () { iI(this) }, e.type = 'singleAxis', e }(tI)); var UN = { splitLine(t, e, n, i) { const r = i.axis; if (!r.scale.isBlank()) { const o = i.getModel('splitLine'); const a = o.getModel('lineStyle'); let s = a.get('color'); s = Array.isArray(s) ? s : [s]; for (var l = i.coordinateSystem.getRect(), u = r.isHorizontal(), h = [], c = 0, p = r.getTicksCoords({ tickModel: o }), d = [], f = [], g = 0; g < p.length; ++g) { const y = r.toGlobalCoord(p[g].coord); u ? (d[0] = y, d[1] = l.y, f[0] = y, f[1] = l.y + l.height) : (d[0] = l.x, d[1] = y, f[0] = l.x + l.width, f[1] = y); const v = c++ % s.length; h[v] = h[v] || [], h[v].push(new zu({ subPixelOptimize: !0, shape: { x1: d[0], y1: d[1], x2: f[0], y2: f[1] }, silent: !0 })) } const m = a.getLineStyle(['color']); for (g = 0; g < h.length; ++g)e.add(wh(h[g], { style: k({ stroke: s[g % s.length] }, m), silent: !0 })) } }, splitArea(t, e, n, i) { nI(t, n, i, i) } }; const XN = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.getCoordSysModel = function () { return this }, e.type = 'singleAxis', e.layoutMode = 'box', e.defaultOption = { left: '5%', top: '5%', right: '5%', bottom: '5%', type: 'value', position: 'bottom', orient: 'horizontal', axisLine: { show: !0, lineStyle: { width: 1, type: 'solid' } }, tooltip: { show: !0 }, axisTick: { show: !0, length: 6, lineStyle: { width: 1 } }, axisLabel: { show: !0, interval: 'auto' }, splitLine: { show: !0, lineStyle: { type: 'dashed', opacity: 0.2 } } }, e }(Tp)); R(XN, p_.prototype); const ZN = (function (t) { function e(e, n, i, r, o) { const a = t.call(this, e, n, i) || this; return a.type = r || 'value', a.position = o || 'bottom', a } return n(e, t), e.prototype.isHorizontal = function () { const t = this.position; return t === 'top' || t === 'bottom' }, e.prototype.pointToData = function (t, e) { return this.coordinateSystem.pointToData(t)[0] }, e }(H_)); const jN = ['single']; const qN = (function () { function t(t, e, n) { this.type = 'single', this.dimension = 'single', this.dimensions = jN, this.axisPointerEnabled = !0, this.model = t, this._init(t, e, n) } return t.prototype._init = function (t, e, n) { const i = this.dimension; const r = new ZN(i, o_(t), [0, 0], t.get('type'), t.get('position')); const o = r.type === 'category'; r.onBand = o && t.get('boundaryGap'), r.inverse = t.get('inverse'), r.orient = t.get('orient'), t.axis = r, r.model = t, r.coordinateSystem = this, this._axis = r }, t.prototype.update = function (t, e) { t.eachSeries(function (t) { if (t.coordinateSystem === this) { const e = t.getData(); E(e.mapDimensionsAll(this.dimension), function (t) { this._axis.scale.unionExtentFromData(e, t) }, this), r_(this._axis.scale, this._axis.model) } }, this) }, t.prototype.resize = function (t, e) { this._rect = xp({ left: t.get('left'), top: t.get('top'), right: t.get('right'), bottom: t.get('bottom'), width: t.get('width'), height: t.get('height') }, { width: e.getWidth(), height: e.getHeight() }), this._adjustAxis() }, t.prototype.getRect = function () { return this._rect }, t.prototype._adjustAxis = function () { const t = this._rect; const e = this._axis; const n = e.isHorizontal(); const i = n ? [0, t.width] : [0, t.height]; const r = e.reverse ? 1 : 0; e.setExtent(i[r], i[1 - r]), this._updateAxisTransform(e, n ? t.x : t.y) }, t.prototype._updateAxisTransform = function (t, e) { const n = t.getExtent(); const i = n[0] + n[1]; const r = t.isHorizontal(); t.toGlobalCoord = r ? function (t) { return t + e } : function (t) { return i - t + e }, t.toLocalCoord = r ? function (t) { return t - e } : function (t) { return i - t + e } }, t.prototype.getAxis = function () { return this._axis }, t.prototype.getBaseAxis = function () { return this._axis }, t.prototype.getAxes = function () { return [this._axis] }, t.prototype.getTooltipAxes = function () { return { baseAxes: [this.getAxis()], otherAxes: [] } }, t.prototype.containPoint = function (t) { const e = this.getRect(); const n = this.getAxis(); return n.orient === 'horizontal' ? n.contain(n.toLocalCoord(t[0])) && t[1] >= e.y && t[1] <= e.y + e.height : n.contain(n.toLocalCoord(t[1])) && t[0] >= e.y && t[0] <= e.y + e.height }, t.prototype.pointToData = function (t) { const e = this.getAxis(); return [e.coordToData(e.toLocalCoord(t[e.orient === 'horizontal' ? 0 : 1]))] }, t.prototype.dataToPoint = function (t) { const e = this.getAxis(); const n = this.getRect(); const i = []; const r = e.orient === 'horizontal' ? 0 : 1; return Array.isArray(t) && (t = t[0]), i[r] = e.toGlobalCoord(e.dataToCoord(+t)), i[1 - r] = r === 0 ? n.y + n.height / 2 : n.x + n.width / 2, i }, t.prototype.convertToPixel = function (t, e, n) { return KN(e) === this ? this.dataToPoint(n) : null }, t.prototype.convertFromPixel = function (t, e, n) { return KN(e) === this ? this.pointToData(n) : null }, t }()); function KN(t) { const e = t.seriesModel; const n = t.singleAxisModel; return n && n.coordinateSystem || e && e.coordinateSystem } const $N = { create(t, e) { const n = []; return t.eachComponent('singleAxis', (i, r) => { const o = new qN(i, t, e); o.name = `single_${r}`, o.resize(i, e), i.coordinateSystem = o, n.push(o) }), t.eachSeries((t) => { if (t.get('coordinateSystem') === 'singleAxis') { const e = t.getReferringComponents('singleAxis', Co).models[0]; t.coordinateSystem = e && e.coordinateSystem } }), n }, dimensions: jN }; const JN = ['x', 'y']; const QN = ['width', 'height']; const tE = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.makeElOption = function (t, e, n, i, r) { const o = n.axis; const a = o.coordinateSystem; const s = iE(a, 1 - nE(o)); const l = a.dataToPoint(e)[0]; const u = i.get('type'); if (u && u !== 'none') { const h = NR(i); const c = eE[u](o, l, s); c.style = h, t.graphicKey = c.type, t.pointer = c }BR(e, t, GN(n), n, i, r) }, e.prototype.getHandleTransform = function (t, e, n) { const i = GN(e, { labelInside: !1 }); i.labelMargin = n.get(['handle', 'margin']); const r = VR(e.axis, t, i); return { x: r[0], y: r[1], rotation: i.rotation + (i.labelDirection < 0 ? Math.PI : 0) } }, e.prototype.updateHandleTransform = function (t, e, n, i) { const r = n.axis; const o = r.coordinateSystem; const a = nE(r); const s = iE(o, a); const l = [t.x, t.y]; l[a] += e[a], l[a] = Math.min(s[1], l[a]), l[a] = Math.max(s[0], l[a]); const u = iE(o, 1 - a); const h = (u[1] + u[0]) / 2; const c = [h, h]; return c[a] = l[a], { x: l[0], y: l[1], rotation: t.rotation, cursorPoint: c, tooltipOption: { verticalAlign: 'middle' } } }, e }(AR)); var eE = { line(t, e, n) { return { type: 'Line', subPixelOptimize: !0, shape: FR([e, n[0]], [e, n[1]], nE(t)) } }, shadow(t, e, n) { const i = t.getBandWidth(); const r = n[1] - n[0]; return { type: 'Rect', shape: GR([e - i / 2, n[0]], [i, r], nE(t)) } } }; function nE(t) { return t.isHorizontal() ? 0 : 1 } function iE(t, e) { const n = t.getRect(); return [n[JN[e]], n[JN[e]] + n[QN[e]]] } const rE = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'single', e }(gg)); const oE = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function (e, n, i) { const r = Sp(e); t.prototype.init.apply(this, arguments), aE(e, r) }, e.prototype.mergeOption = function (e) { t.prototype.mergeOption.apply(this, arguments), aE(this.option, e) }, e.prototype.getCellSize = function () { return this.option.cellSize }, e.type = 'calendar', e.defaultOption = { z: 2, left: 80, top: 60, cellSize: 20, orient: 'horizontal', splitLine: { show: !0, lineStyle: { color: '#000', width: 1, type: 'solid' } }, itemStyle: { color: '#fff', borderWidth: 1, borderColor: '#ccc' }, dayLabel: { show: !0, firstDay: 0, position: 'start', margin: '50%', color: '#000' }, monthLabel: { show: !0, position: 'start', margin: 5, align: 'center', formatter: null, color: '#000' }, yearLabel: { show: !0, position: null, margin: 30, formatter: null, color: '#ccc', fontFamily: 'sans-serif', fontWeight: 'bolder', fontSize: 20 } }, e }(Tp)); function aE(t, e) { let n; const i = t.cellSize; (n = Y(i) ? i : t.cellSize = [i, i]).length === 1 && (n[1] = n[0]); const r = z([0, 1], (t) => { return (function (t, e) { return t[yp[e][0]] != null || t[yp[e][1]] != null && t[yp[e][2]] != null }(e, t)) && (n[t] = 'auto'), n[t] != null && n[t] !== 'auto' }); wp(t, e, { type: 'box', ignoreSize: r }) } const sE = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { const i = this.group; i.removeAll(); const r = t.coordinateSystem; const o = r.getRangeInfo(); const a = r.getOrient(); const s = e.getLocaleModel(); this._renderDayRect(t, o, i), this._renderLines(t, o, a, i), this._renderYearText(t, o, a, i), this._renderMonthText(t, s, a, i), this._renderWeekText(t, s, o, a, i) }, e.prototype._renderDayRect = function (t, e, n) { for (let i = t.coordinateSystem, r = t.getModel('itemStyle').getItemStyle(), o = i.getCellWidth(), a = i.getCellHeight(), s = e.start.time; s <= e.end.time; s = i.getNextNDay(s, 1).time) { const l = i.dataToRect([s], !1).tl; const u = new Cs({ shape: { x: l[0], y: l[1], width: o, height: a }, cursor: 'default', style: r }); n.add(u) } }, e.prototype._renderLines = function (t, e, n, i) { const r = this; const o = t.coordinateSystem; const a = t.getModel(['splitLine', 'lineStyle']).getLineStyle(); const s = t.get(['splitLine', 'show']); const l = a.lineWidth; this._tlpoints = [], this._blpoints = [], this._firstDayOfMonth = [], this._firstDayPoints = []; for (let u = e.start, h = 0; u.time <= e.end.time; h++) { p(u.formatedDate), h === 0 && (u = o.getDateInfo(`${e.start.y}-${e.start.m}`)); const c = u.date; c.setMonth(c.getMonth() + 1), u = o.getDateInfo(c) } function p(e) { r._firstDayOfMonth.push(o.getDateInfo(e)), r._firstDayPoints.push(o.dataToRect([e], !1).tl); const l = r._getLinePointsOfOneWeek(t, e, n); r._tlpoints.push(l[0]), r._blpoints.push(l[l.length - 1]), s && r._drawSplitline(l, a, i) }p(o.getNextNDay(e.end.time, 1).formatedDate), s && this._drawSplitline(r._getEdgesPoints(r._tlpoints, l, n), a, i), s && this._drawSplitline(r._getEdgesPoints(r._blpoints, l, n), a, i) }, e.prototype._getEdgesPoints = function (t, e, n) { const i = [t[0].slice(), t[t.length - 1].slice()]; const r = n === 'horizontal' ? 0 : 1; return i[0][r] = i[0][r] - e / 2, i[1][r] = i[1][r] + e / 2, i }, e.prototype._drawSplitline = function (t, e, n) { const i = new Ru({ z2: 20, shape: { points: t }, style: e }); n.add(i) }, e.prototype._getLinePointsOfOneWeek = function (t, e, n) { for (var i = t.coordinateSystem, r = i.getDateInfo(e), o = [], a = 0; a < 7; a++) { const s = i.getNextNDay(r.time, a); const l = i.dataToRect([s.time], !1); o[2 * s.day] = l.tl, o[2 * s.day + 1] = l[n === 'horizontal' ? 'bl' : 'tr'] } return o }, e.prototype._formatterLabel = function (t, e) { return X(t) && t ? (n = t, E(e, (t, e) => { n = n.replace(`{${e}}`, t) }), n) : U(t) ? t(e) : e.nameMap; let n }, e.prototype._yearTextPositionControl = function (t, e, n, i, r) { let o = e[0]; let a = e[1]; let s = ['center', 'bottom']; i === 'bottom' ? (a += r, s = ['center', 'top']) : i === 'left' ? o -= r : i === 'right' ? (o += r, s = ['center', 'top']) : a -= r; let l = 0; return i !== 'left' && i !== 'right' || (l = Math.PI / 2), { rotation: l, x: o, y: a, style: { align: s[0], verticalAlign: s[1] } } }, e.prototype._renderYearText = function (t, e, n, i) { const r = t.getModel('yearLabel'); if (r.get('show')) { const o = r.get('margin'); let a = r.get('position'); a || (a = n !== 'horizontal' ? 'top' : 'left'); const s = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]]; const l = (s[0][0] + s[1][0]) / 2; const u = (s[0][1] + s[1][1]) / 2; const h = n === 'horizontal' ? 0 : 1; const c = { top: [l, s[h][1]], bottom: [l, s[1 - h][1]], left: [s[1 - h][0], u], right: [s[h][0], u] }; let p = e.start.y; +e.end.y > +e.start.y && (p = `${p}-${e.end.y}`); const d = r.get('formatter'); const f = { start: e.start.y, end: e.end.y, nameMap: p }; const g = this._formatterLabel(d, f); const y = new ks({ z2: 30, style: Uh(r, { text: g }) }); y.attr(this._yearTextPositionControl(y, c[a], n, a, o)), i.add(y) } }, e.prototype._monthTextPositionControl = function (t, e, n, i, r) { let o = 'left'; let a = 'top'; let s = t[0]; let l = t[1]; return n === 'horizontal' ? (l += r, e && (o = 'center'), i === 'start' && (a = 'bottom')) : (s += r, e && (a = 'middle'), i === 'start' && (o = 'right')), { x: s, y: l, align: o, verticalAlign: a } }, e.prototype._renderMonthText = function (t, e, n, i) { const r = t.getModel('monthLabel'); if (r.get('show')) { let o = r.get('nameMap'); let a = r.get('margin'); const s = r.get('position'); const l = r.get('align'); const u = [this._tlpoints, this._blpoints]; o && !X(o) || (o && (e = Mc(o) || e), o = e.get(['time', 'monthAbbr']) || []); const h = s === 'start' ? 0 : 1; const c = n === 'horizontal' ? 0 : 1; a = s === 'start' ? -a : a; for (let p = l === 'center', d = 0; d < u[h].length - 1; d++) { const f = u[h][d].slice(); const g = this._firstDayOfMonth[d]; if (p) { const y = this._firstDayPoints[d]; f[c] = (y[c] + u[0][d + 1][c]) / 2 } const v = r.get('formatter'); const m = o[+g.m - 1]; const x = { yyyy: g.y, yy: (`${g.y}`).slice(2), MM: g.m, M: +g.m, nameMap: m }; const _ = this._formatterLabel(v, x); const b = new ks({ z2: 30, style: A(Uh(r, { text: _ }), this._monthTextPositionControl(f, p, n, s, a)) }); i.add(b) } } }, e.prototype._weekTextPositionControl = function (t, e, n, i, r) { let o = 'center'; let a = 'middle'; let s = t[0]; let l = t[1]; const u = n === 'start'; return e === 'horizontal' ? (s = s + i + (u ? 1 : -1) * r[0] / 2, o = u ? 'right' : 'left') : (l = l + i + (u ? 1 : -1) * r[1] / 2, a = u ? 'bottom' : 'top'), { x: s, y: l, align: o, verticalAlign: a } }, e.prototype._renderWeekText = function (t, e, n, i, r) { const o = t.getModel('dayLabel'); if (o.get('show')) { const a = t.coordinateSystem; const s = o.get('position'); let l = o.get('nameMap'); let u = o.get('margin'); const h = a.getFirstDayOfWeek(); l && !X(l) || (l && (e = Mc(l) || e), l = e.get(['time', 'dayOfWeekShort']) || z(e.get(['time', 'dayOfWeekAbbr']), (t) => { return t[0] })); let c = a.getNextNDay(n.end.time, 7 - n.lweek).time; const p = [a.getCellWidth(), a.getCellHeight()]; u = Er(u, Math.min(p[1], p[0])), s === 'start' && (c = a.getNextNDay(n.start.time, -(7 + n.fweek)).time, u = -u); for (let d = 0; d < 7; d++) { var f; const g = a.getNextNDay(c, d); const y = a.dataToRect([g.time], !1).center; f = Math.abs((d + h) % 7); const v = new ks({ z2: 30, style: A(Uh(o, { text: l[f] }), this._weekTextPositionControl(y, i, s, u, p)) }); r.add(v) } } }, e.type = 'calendar', e }(gg)); const lE = 864e5; const uE = (function () { + function t(e, n, i) { this.type = 'calendar', this.dimensions = t.dimensions, this.getDimensionsInfo = t.getDimensionsInfo, this._model = e } return t.getDimensionsInfo = function () { return [{ name: 'time', type: 'time' }, 'value'] }, t.prototype.getRangeInfo = function () { return this._rangeInfo }, t.prototype.getModel = function () { return this._model }, t.prototype.getRect = function () { return this._rect }, t.prototype.getCellWidth = function () { return this._sw }, t.prototype.getCellHeight = function () { return this._sh }, t.prototype.getOrient = function () { return this._orient }, t.prototype.getFirstDayOfWeek = function () { return this._firstDayOfWeek }, t.prototype.getDateInfo = function (t) { const e = (t = jr(t)).getFullYear(); const n = t.getMonth() + 1; const i = n < 10 ? `0${ n}` : `${ n}`; const r = t.getDate(); const o = r < 10 ? `0${ r}` : `${ r}`; let a = t.getDay(); return { y: `${e}`, m: i, d: o, day: a = Math.abs((a + 7 - this.getFirstDayOfWeek()) % 7), time: t.getTime(), formatedDate: `${e}-${i}-${o}`, date: t } }, t.prototype.getNextNDay = function (t, e) { return (e = e || 0) === 0 || (t = new Date(this.getDateInfo(t).time)).setDate(t.getDate() + e), this.getDateInfo(t) }, t.prototype.update = function (t, e) { this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay'), this._orient = this._model.get('orient'), this._lineWidth = this._model.getModel('itemStyle').getItemStyle().lineWidth || 0, this._rangeInfo = this._getRangeInfo(this._initRangeOption()); const n = this._rangeInfo.weeks || 1; const i = ['width', 'height']; const r = this._model.getCellSize().slice(); const o = this._model.getBoxLayoutParams(); const a = this._orient === 'horizontal' ? [n, 7] : [7, n]; E([0, 1], (t) => { u(r, t) && (o[i[t]] = r[t] * a[t]) }); const s = { width: e.getWidth(), height: e.getHeight() }; const l = this._rect = xp(o, s); function u(t, e) { return t[e] != null && t[e] !== 'auto' }E([0, 1], (t) => { u(r, t) || (r[t] = l[i[t]] / a[t]) }), this._sw = r[0], this._sh = r[1] }, t.prototype.dataToPoint = function (t, e) { + Y(t) && (t = t[0]), e == null && (e = !0); const n = this.getDateInfo(t); const i = this._rangeInfo; const r = n.formatedDate; if (e && !(n.time >= i.start.time && n.time < i.end.time + lE)) + return [Number.NaN, Number.NaN]; const o = n.day; const a = this._getRangeInfo([i.start.time, r]).nthWeek; return this._orient === 'vertical' ? [this._rect.x + o * this._sw + this._sw / 2, this._rect.y + a * this._sh + this._sh / 2] : [this._rect.x + a * this._sw + this._sw / 2, this._rect.y + o * this._sh + this._sh / 2] + }, t.prototype.pointToData = function (t) { const e = this.pointToDate(t); return e && e.time }, t.prototype.dataToRect = function (t, e) { const n = this.dataToPoint(t, e); return { contentShape: { x: n[0] - (this._sw - this._lineWidth) / 2, y: n[1] - (this._sh - this._lineWidth) / 2, width: this._sw - this._lineWidth, height: this._sh - this._lineWidth }, center: n, tl: [n[0] - this._sw / 2, n[1] - this._sh / 2], tr: [n[0] + this._sw / 2, n[1] - this._sh / 2], br: [n[0] + this._sw / 2, n[1] + this._sh / 2], bl: [n[0] - this._sw / 2, n[1] + this._sh / 2] } }, t.prototype.pointToDate = function (t) { const e = Math.floor((t[0] - this._rect.x) / this._sw) + 1; const n = Math.floor((t[1] - this._rect.y) / this._sh) + 1; const i = this._rangeInfo.range; return this._orient === 'vertical' ? this._getDateByWeeksAndDay(n, e - 1, i) : this._getDateByWeeksAndDay(e, n - 1, i) }, t.prototype.convertToPixel = function (t, e, n) { const i = hE(e); return i === this ? i.dataToPoint(n) : null }, t.prototype.convertFromPixel = function (t, e, n) { const i = hE(e); return i === this ? i.pointToData(n) : null }, t.prototype.containPoint = function (t) { return console.warn('Not implemented.'), !1 }, t.prototype._initRangeOption = function () { + let t; let e = this._model.get('range'); if (Y(e) && e.length === 1 && (e = e[0]), Y(e)) { + t = e + } + else { const n = e.toString(); if (/^\d{4}$/.test(n) && (t = [`${n}-01-01`, `${n}-12-31`]), /^\d{4}[/|-]\d{1,2}$/.test(n)) { const i = this.getDateInfo(n); const r = i.date; r.setMonth(r.getMonth() + 1); const o = this.getNextNDay(r, -1); t = [i.formatedDate, o.formatedDate] }/^\d{4}[/|-]\d{1,2}[/|-]\d{1,2}$/.test(n) && (t = [n, n]) } if (!t) + return e; const a = this._getRangeInfo(t); return a.start.time > a.end.time && t.reverse(), t + }, t.prototype._getRangeInfo = function (t) { + let e; const n = [this.getDateInfo(t[0]), this.getDateInfo(t[1])]; n[0].time > n[1].time && (e = !0, n.reverse()); let i = Math.floor(n[1].time / lE) - Math.floor(n[0].time / lE) + 1; const r = new Date(n[0].time); const o = r.getDate(); const a = n[1].date.getDate(); r.setDate(o + i - 1); let s = r.getDate(); if (s !== a) { + for (let l = r.getTime() - n[1].time > 0 ? 1 : -1; (s = r.getDate()) !== a && (r.getTime() - n[1].time) * l > 0;)i -= l, r.setDate(s - l) + } const u = Math.floor((i + n[0].day + 6) / 7); const h = e ? 1 - u : u - 1; return e && n.reverse(), { range: [n[0].formatedDate, n[1].formatedDate], start: n[0], end: n[1], allDay: i, weeks: u, nthWeek: h, fweek: n[0].day, lweek: n[1].day } + }, t.prototype._getDateByWeeksAndDay = function (t, e, n) { + const i = this._getRangeInfo(n); if (t > i.weeks || t === 0 && e < i.fweek || t === i.weeks && e > i.lweek) + return null; const r = 7 * (t - 1) - i.fweek + e; const o = new Date(i.start.time); return o.setDate(+i.start.d + r), this.getDateInfo(o) + }, t.create = function (e, n) { const i = []; return e.eachComponent('calendar', (r) => { const o = new t(r, e, n); i.push(o), r.coordinateSystem = o }), e.eachSeries((t) => { t.get('coordinateSystem') === 'calendar' && (t.coordinateSystem = i[t.get('calendarIndex') || 0]) }), i }, t.dimensions = ['time', 'value'], t + }()); function hE(t) { const e = t.calendarModel; const n = t.seriesModel; return e ? e.coordinateSystem : n ? n.coordinateSystem : null } function cE(t, e) { let n; return E(e, (e) => { t[e] != null && t[e] !== 'auto' && (n = !0) }), n } const pE = ['transition', 'enterFrom', 'leaveTo']; const dE = pE.concat(['enterAnimation', 'updateAnimation', 'leaveAnimation']); function fE(t, e, n) { + if (n && (!t[n] && e[n] && (t[n] = {}), t = t[n], e = e[n]), t && e) { + for (let i = n ? pE : dE, r = 0; r < i.length; r++) { const o = i[r]; t[o] == null && e[o] != null && (t[o] = e[o]) } + } + } const gE = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.preventAutoZ = !0, n } return n(e, t), e.prototype.mergeOption = function (e, n) { const i = this.option.elements; this.option.elements = null, t.prototype.mergeOption.call(this, e, n), this.option.elements = i }, e.prototype.optionUpdated = function (t, e) { const n = this.option; const i = (e ? n : t).elements; const r = n.elements = e ? [] : n.elements; const o = []; this._flatten(i, o, null); const a = yo(r, o, 'normalMerge'); const s = this._elOptionsToUpdate = []; E(a, (t, e) => { const n = t.newOption; n && (s.push(n), (function (t, e) { const n = t.existing; if (e.id = t.keyInfo.id, !e.type && n && (e.type = n.type), e.parentId == null) { const i = e.parentOption; i ? e.parentId = i.id : n && (e.parentId = n.parentId) }e.parentOption = null }(t, n)), (function (t, e, n) { const i = A({}, n); const r = t[e]; const o = n.$action || 'merge'; o === 'merge' ? r ? (C(r, i, !0), wp(r, i, { ignoreSize: !0 }), Mp(n, r), fE(n, r), fE(n, r, 'shape'), fE(n, r, 'style'), fE(n, r, 'extra'), n.clipPath = r.clipPath) : t[e] = i : o === 'replace' ? t[e] = i : o === 'remove' && r && (t[e] = null) }(r, e, n)), (function (t, e) { if (t && (t.hv = e.hv = [cE(e, ['left', 'right']), cE(e, ['top', 'bottom'])], t.type === 'group')) { const n = t; const i = e; n.width == null && (n.width = i.width = 0), n.height == null && (n.height = i.height = 0) } }(r[e], n))) }, this), n.elements = B(r, (t) => { return t && delete t.$action, t != null }) }, e.prototype._flatten = function (t, e, n) { E(t, function (t) { if (t) { n && (t.parentOption = n), e.push(t); const i = t.children; i && i.length && this._flatten(i, e, t), delete t.children } }, this) }, e.prototype.useElOptionsToUpdate = function () { const t = this._elOptionsToUpdate; return this._elOptionsToUpdate = null, t }, e.type = 'graphic', e.defaultOption = { elements: [] }, e }(Tp)); const yE = { path: null, compoundPath: null, group: Cr, image: _s, text: ks }; const vE = So(); const mE = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function () { this._elMap = ft() }, e.prototype.render = function (t, e, n) { t !== this._lastGraphicModel && this._clear(), this._lastGraphicModel = t, this._updateElements(t), this._relocate(t, n) }, e.prototype._updateElements = function (t) { + const e = t.useElOptionsToUpdate(); if (e) { + const n = this._elMap; const i = this.group; const r = t.get('z'); const o = t.get('zlevel'); E(e, (e) => { + const a = xo(e.id, null); const s = a != null ? n.get(a) : null; const l = xo(e.parentId, null); const u = l != null ? n.get(l) : i; const h = e.type; const c = e.style; h === 'text' && c && e.hv && e.hv[1] && (c.textVerticalAlign = c.textBaseline = c.verticalAlign = c.align = null); let p = e.textContent; let d = e.textConfig; if (c && CO(c, h, !!d, !!p)) { const f = DO(c, h, !0); !d && f.textConfig && (d = e.textConfig = f.textConfig), !p && f.textContent && (p = f.textContent) } const g = (function (t) { return t = A({}, t), E(['id', 'parentId', '$action', 'hv', 'bounding', 'textContent', 'clipPath'].concat(gp), (e) => { delete t[e] }), t }(e)); const y = e.$action || 'merge'; const v = y === 'merge'; const m = y === 'replace'; if (v) { let x = s; (T = !s) ? x = _E(a, u, e.type, n) : (x && (vE(x).isNew = !1), qO(x)), x && (zO(x, g, t, { isInit: T }), wE(x, e, r, o)) } + else if (m) { bE(s, e, n, t); const _ = _E(a, u, e.type, n); _ && (zO(_, g, t, { isInit: !0 }), wE(_, e, r, o)) } + else { + y === 'remove' && (VO(s, e), bE(s, e, n, t)) + } const b = n.get(a); if (b && p) { + if (v) { const w = b.getTextContent(); w ? w.attr(p) : b.setTextContent(new ks(p)) } + else { + m && b.setTextContent(new ks(p)) + } + } if (b) { + const S = e.clipPath; if (S) { + const M = S.type; let I = void 0; var T = !1; if (v) { const C = b.getClipPath(); I = (T = !C || vE(C).type !== M) ? xE(M) : C } + else { + m && (T = !0, I = xE(M)) + }b.setClipPath(I), zO(I, S, t, { isInit: T }), KO(I, S.keyframeAnimation, t) + } const D = vE(b); b.setTextConfig(d), D.option = e, (function (t, e, n) { let i = Hs(t).eventData; t.silent || t.ignore || i || (i = Hs(t).eventData = { componentType: 'graphic', componentIndex: e.componentIndex, name: t.name }), i && (i.info = n.info) }(b, t, e)), Eh({ el: b, componentModel: t, itemName: b.name, itemTooltipOption: e.tooltip }), KO(b, e.keyframeAnimation, t) + } + }) + } + }, e.prototype._relocate = function (t, e) { + for (var n = t.option.elements, i = this.group, r = this._elMap, o = e.getWidth(), a = e.getHeight(), s = ['x', 'y'], l = 0; l < n.length; l++) { + if ((f = (d = xo((p = n[l]).id, null)) != null ? r.get(d) : null) && f.isGroup) { const u = (g = f.parent) === i; const h = vE(f); var c = vE(g); h.width = Er(h.option.width, u ? o : c.width) || 0, h.height = Er(h.option.height, u ? a : c.height) || 0 } + } for (l = n.length - 1; l >= 0; l--) { + var p, d, f; if (f = (d = xo((p = n[l]).id, null)) != null ? r.get(d) : null) { + var g = f.parent; const y = (c = vE(g), {}); const v = _p(f, p, g === i ? { width: o, height: a } : { width: c.width, height: c.height }, null, { hv: p.hv, boundingMode: p.bounding }, y); if (!vE(f).isNew && v) { for (var m = p.transition, x = {}, _ = 0; _ < s.length; _++) { const b = s[_]; const w = y[b]; m && (FO(m) || P(m, b) >= 0) ? x[b] = w : f[b] = w }rh(f, x, t, 0) } + else { + f.attr(y) + } + } + } + }, e.prototype._clear = function () { const t = this; const e = this._elMap; e.each((n) => { bE(n, vE(n).option, e, t._lastGraphicModel) }), this._elMap = ft() }, e.prototype.dispose = function () { this._clear() }, e.type = 'graphic', e + }(gg)); function xE(t) { const n = new (mt(yE, t) ? yE[t] : mh(t))({}); return vE(n).type = t, n } function _E(t, e, n, i) { const r = xE(n); return e.add(r), i.set(t, r), vE(r).id = t, vE(r).isNew = !0, r } function bE(t, e, n, i) { t && t.parent && (t.type === 'group' && t.traverse((t) => { bE(t, e, n, i) }), BO(t, e, i), n.removeKey(vE(t).id)) } function wE(t, e, n, i) { t.isGroup || E([['cursor', da.prototype.cursor], ['zlevel', i || 0], ['z', n || 0], ['z2', 0]], (n) => { const i = n[0]; mt(e, i) ? t[i] = rt(e[i], n[1]) : t[i] == null && (t[i] = n[1]) }), E(G(e), (n) => { if (n.indexOf('on') === 0) { const i = e[n]; t[n] = U(i) ? i : null } }), mt(e, 'draggable') && (t.draggable = e.draggable), e.name != null && (t.name = e.name), e.id != null && (t.id = e.id) } const SE = ['x', 'y', 'radius', 'angle', 'single']; const ME = ['cartesian2d', 'polar', 'singleAxis']; function IE(t) { return `${t}Axis` } function CE(t) { const e = t.ecModel; const n = { infoList: [], infoMap: ft() }; return t.eachTargetAxis((t, i) => { const r = e.getComponent(IE(t), i); if (r) { const o = r.getCoordSysModel(); if (o) { const a = o.uid; let s = n.infoMap.get(a); s || (s = { model: o, axisModels: [] }, n.infoList.push(s), n.infoMap.set(a, s)), s.axisModels.push(r) } } }), n } const DE = (function () { function t() { this.indexList = [], this.indexMap = [] } return t.prototype.add = function (t) { this.indexMap[t] || (this.indexList.push(t), this.indexMap[t] = !0) }, t }()); const AE = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n._autoThrottle = !0, n._noTarget = !0, n._rangePropMode = ['percent', 'percent'], n } return n(e, t), e.prototype.init = function (t, e, n) { const i = kE(t); this.settledOption = i, this.mergeDefaultAndTheme(t, n), this._doInit(i) }, e.prototype.mergeOption = function (t) { const e = kE(t); C(this.option, t, !0), C(this.settledOption, e, !0), this._doInit(e) }, e.prototype._doInit = function (t) { const e = this.option; this._setDefaultThrottle(t), this._updateRangeUse(t); const n = this.settledOption; E([['start', 'startValue'], ['end', 'endValue']], function (t, i) { this._rangePropMode[i] === 'value' && (e[t[0]] = n[t[0]] = null) }, this), this._resetTarget() }, e.prototype._resetTarget = function () { const t = this.get('orient', !0); const e = this._targetAxisInfoMap = ft(); this._fillSpecifiedTargetAxis(e) ? this._orient = t || this._makeAutoOrientByTargetAxis() : (this._orient = t || 'horizontal', this._fillAutoTargetAxisByOrient(e, this._orient)), this._noTarget = !0, e.each(function (t) { t.indexList.length && (this._noTarget = !1) }, this) }, e.prototype._fillSpecifiedTargetAxis = function (t) { let e = !1; return E(SE, function (n) { const i = this.getReferringComponents(IE(n), Do); if (i.specified) { e = !0; const r = new DE(); E(i.models, (t) => { r.add(t.componentIndex) }), t.set(n, r) } }, this), e }, e.prototype._fillAutoTargetAxisByOrient = function (t, e) { const n = this.ecModel; let i = !0; if (i) { const r = e === 'vertical' ? 'y' : 'x'; o(n.findComponents({ mainType: `${r}Axis` }), r) } function o(e, n) { const r = e[0]; if (r) { const o = new DE(); if (o.add(r.componentIndex), t.set(n, o), i = !1, n === 'x' || n === 'y') { const a = r.getReferringComponents('grid', Co).models[0]; a && E(e, (t) => { r.componentIndex !== t.componentIndex && a === t.getReferringComponents('grid', Co).models[0] && o.add(t.componentIndex) }) } } }i && o(n.findComponents({ mainType: 'singleAxis', filter(t) { return t.get('orient', !0) === e } }), 'single'), i && E(SE, (e) => { if (i) { const r = n.findComponents({ mainType: IE(e), filter(t) { return t.get('type', !0) === 'category' } }); if (r[0]) { const o = new DE(); o.add(r[0].componentIndex), t.set(e, o), i = !1 } } }, this) }, e.prototype._makeAutoOrientByTargetAxis = function () { let t; return this.eachTargetAxis((e) => { !t && (t = e) }, this), t === 'y' ? 'vertical' : 'horizontal' }, e.prototype._setDefaultThrottle = function (t) { if (t.hasOwnProperty('throttle') && (this._autoThrottle = !1), this._autoThrottle) { const e = this.ecModel.option; this.option.throttle = e.animation && e.animationDurationUpdate > 0 ? 100 : 20 } }, e.prototype._updateRangeUse = function (t) { const e = this._rangePropMode; const n = this.get('rangeMode'); E([['start', 'startValue'], ['end', 'endValue']], (i, r) => { const o = t[i[0]] != null; const a = t[i[1]] != null; o && !a ? e[r] = 'percent' : !o && a ? e[r] = 'value' : n ? e[r] = n[r] : o && (e[r] = 'percent') }) }, e.prototype.noTarget = function () { return this._noTarget }, e.prototype.getFirstTargetAxisModel = function () { let t; return this.eachTargetAxis(function (e, n) { t == null && (t = this.ecModel.getComponent(IE(e), n)) }, this), t }, e.prototype.eachTargetAxis = function (t, e) { this._targetAxisInfoMap.each((n, i) => { E(n.indexList, (n) => { t.call(e, i, n) }) }) }, e.prototype.getAxisProxy = function (t, e) { + const n = this.getAxisModel(t, e); if (n) + return n.__dzAxisProxy + }, e.prototype.getAxisModel = function (t, e) { + const n = this._targetAxisInfoMap.get(t); if (n && n.indexMap[e]) + return this.ecModel.getComponent(IE(t), e) + }, e.prototype.setRawRange = function (t) { const e = this.option; const n = this.settledOption; E([['start', 'startValue'], ['end', 'endValue']], (i) => { t[i[0]] == null && t[i[1]] == null || (e[i[0]] = n[i[0]] = t[i[0]], e[i[1]] = n[i[1]] = t[i[1]]) }, this), this._updateRangeUse(t) }, e.prototype.setCalculatedRange = function (t) { const e = this.option; E(['start', 'startValue', 'end', 'endValue'], (n) => { e[n] = t[n] }) }, e.prototype.getPercentRange = function () { + const t = this.findRepresentativeAxisProxy(); if (t) + return t.getDataPercentWindow() + }, e.prototype.getValueRange = function (t, e) { + if (t != null || e != null) + return this.getAxisProxy(t, e).getDataValueWindow(); const n = this.findRepresentativeAxisProxy(); return n ? n.getDataValueWindow() : void 0 + }, e.prototype.findRepresentativeAxisProxy = function (t) { + if (t) + return t.__dzAxisProxy; for (var e, n = this._targetAxisInfoMap.keys(), i = 0; i < n.length; i++) { + for (let r = n[i], o = this._targetAxisInfoMap.get(r), a = 0; a < o.indexList.length; a++) { + const s = this.getAxisProxy(r, o.indexList[a]); if (s.hostedBy(this)) + return s; e || (e = s) + } + } return e + }, e.prototype.getRangePropMode = function () { return this._rangePropMode.slice() }, e.prototype.getOrient = function () { return this._orient }, e.type = 'dataZoom', e.dependencies = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series', 'toolbox'], e.defaultOption = { z: 4, filterMode: 'filter', start: 0, end: 100 }, e + }(Tp)); function kE(t) { const e = {}; return E(['start', 'end', 'startValue', 'endValue', 'throttle'], (n) => { t.hasOwnProperty(n) && (e[n] = t[n]) }), e } const LE = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'dataZoom.select', e }(AE)); const PE = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n, i) { this.dataZoomModel = t, this.ecModel = e, this.api = n }, e.type = 'dataZoom', e }(gg)); const OE = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'dataZoom.select', e }(PE)); const RE = E; const NE = Vr; const EE = (function () { + function t(t, e, n, i) { this._dimName = t, this._axisIndex = e, this.ecModel = i, this._dataZoomModel = n } return t.prototype.hostedBy = function (t) { return this._dataZoomModel === t }, t.prototype.getDataValueWindow = function () { return this._valueWindow.slice() }, t.prototype.getDataPercentWindow = function () { return this._percentWindow.slice() }, t.prototype.getTargetSeriesModels = function () { const t = []; return this.ecModel.eachSeries(function (e) { if (function (t) { const e = t.get('coordinateSystem'); return P(ME, e) >= 0 }(e)) { const n = IE(this._dimName); const i = e.getReferringComponents(n, Co).models[0]; i && this._axisIndex === i.componentIndex && t.push(e) } }, this), t }, t.prototype.getAxisModel = function () { return this.ecModel.getComponent(`${this._dimName}Axis`, this._axisIndex) }, t.prototype.getMinMaxSpan = function () { return T(this._minMaxSpan) }, t.prototype.calculateDataWindow = function (t) { let e; const n = this._dataExtent; const i = this.getAxisModel().axis.scale; const r = this._dataZoomModel.getRangePropMode(); const o = [0, 100]; const a = []; const s = []; RE(['start', 'end'], (l, u) => { let h = t[l]; let c = t[`${l}Value`]; r[u] === 'percent' ? (h == null && (h = o[u]), c = i.parse(Nr(h, o, n))) : (e = !0, h = Nr(c = c == null ? n[u] : i.parse(c), n, o)), s[u] = c, a[u] = h }), NE(s), NE(a); const l = this._minMaxSpan; function u(t, e, n, r, o) { const a = o ? 'Span' : 'ValueSpan'; lk(0, t, n, 'all', l[`min${a}`], l[`max${a}`]); for (let s = 0; s < 2; s++)e[s] = Nr(t[s], n, r, !0), o && (e[s] = i.parse(e[s])) } return e ? u(s, a, n, o, !1) : u(a, s, o, n, !0), { valueWindow: s, percentWindow: a } }, t.prototype.reset = function (t) { if (t === this._dataZoomModel) { const e = this.getTargetSeriesModels(); this._dataExtent = (function (t, e, n) { const i = [1 / 0, -1 / 0]; RE(n, (t) => { !(function (t, e, n) { e && E(c_(e, n), (n) =>{ var i = e.getApproximateExtent(n); i[0] < t[0] && (t[0] = i[0]), i[1] > t[1] && (t[1] = i[1]) }) }(i, t.getData(), e)) }); const r = t.getAxisModel(); const o = e_(r.axis.scale, r, i).calculate(); return [o.min, o.max] }(this, this._dimName, e)), this._updateMinMaxSpan(); const n = this.calculateDataWindow(t.settledOption); this._valueWindow = n.valueWindow, this._percentWindow = n.percentWindow, this._setAxisModel() } }, t.prototype.filterData = function (t, e) { + if (t === this._dataZoomModel) { + const n = this._dimName; const i = this.getTargetSeriesModels(); const r = t.get('filterMode'); const o = this._valueWindow; r !== 'none' && RE(i, (t) => { + let e = t.getData(); const i = e.mapDimensionsAll(n); if (i.length) { + if (r === 'weakFilter') { + const a = e.getStore(); const s = z(i, (t) => { return e.getDimensionIndex(t) }, e); e.filterSelf((t) => { + for (var e, n, r, l = 0; l < i.length; l++) { + let u = a.get(s[l], t); const h = !isNaN(u); const c = u < o[0]; const p = u > o[1]; if (h && !c && !p) + return !0; h && (r = !0), c && (e = !0), p && (n = !0) + } return r && e && n + }) + } + else { + RE(i, (n) => { + if (r==='empty') { +t.setData(e = e.map(n, ((t) =>{ return (function(t){return t>=o[0]&&t<=o[1]}(t))?t : NaN }))); +} else { let i = {}; i[n] = o, e.selectRange(i) } +}) + }RE(i, (t) => { e.setApproximateExtent(o, t) }) + } + }) + } + }, t.prototype._updateMinMaxSpan = function () { const t = this._minMaxSpan = {}; const e = this._dataZoomModel; const n = this._dataExtent; RE(['min', 'max'], function (i) { let r = e.get(`${i}Span`); let o = e.get(`${i}ValueSpan`); o != null && (o = this.getAxisModel().axis.scale.parse(o)), o != null ? r = Nr(n[0] + o, n, [0, 100], !0) : r != null && (o = Nr(r, [0, 100], n, !0) - n[0]), t[`${i}Span`] = r, t[`${i}ValueSpan`] = o }, this) }, t.prototype._setAxisModel = function () { const t = this.getAxisModel(); const e = this._percentWindow; const n = this._valueWindow; if (e) { let i = Gr(n, [0, 500]); i = Math.min(i, 20); const r = t.axis.scale.rawExtentInfo; e[0] !== 0 && r.setDeterminedMinMax('min', +n[0].toFixed(i)), e[1] !== 100 && r.setDeterminedMinMax('max', +n[1].toFixed(i)), r.freeze() } }, t + }()); const zE = { getTargetSeries(t) { function e(e) { t.eachComponent('dataZoom', (n) => { n.eachTargetAxis((i, r) => { const o = t.getComponent(IE(i), r); e(i, r, o, n) }) }) }e((t, e, n, i) => { n.__dzAxisProxy = null }); const n = []; e((e, i, r, o) => { r.__dzAxisProxy || (r.__dzAxisProxy = new EE(e, i, o, t), n.push(r.__dzAxisProxy)) }); const i = ft(); return E(n, (t) => { E(t.getTargetSeriesModels(), (t) => { i.set(t.uid, t) }) }), i }, overallReset(t, e) { t.eachComponent('dataZoom', (t) => { t.eachTargetAxis((e, n) => { t.getAxisProxy(e, n).reset(t) }), t.eachTargetAxis((n, i) => { t.getAxisProxy(n, i).filterData(t, e) }) }), t.eachComponent('dataZoom', (t) => { const e = t.findRepresentativeAxisProxy(); if (e) { const n = e.getDataPercentWindow(); const i = e.getDataValueWindow(); t.setCalculatedRange({ start: n[0], end: n[1], startValue: i[0], endValue: i[1] }) } }) } }; let VE = !1; function BE(t) { VE || (VE = !0, t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER, zE), (function (t) { t.registerAction('dataZoom', (t, e) => { E((function (t, e) { let n; const i = ft(); const r = []; const o = ft(); t.eachComponent({ mainType: 'dataZoom', query: e }, (t) => { o.get(t.uid) || s(t) }); do { n = !1, t.eachComponent('dataZoom', a) } while (n); function a(t) { !o.get(t.uid) && (function (t) { let e = !1; return t.eachTargetAxis((t, n) => { const r = i.get(t); r && r[n] && (e = !0) }), e }(t)) && (s(t), n = !0) } function s(t) { o.set(t.uid, !0), r.push(t), t.eachTargetAxis((t, e) => { (i.get(t) || i.set(t, []))[e] = !0 }) } return r }(e, t)), (e) => { e.setRawRange({ start: t.start, end: t.end, startValue: t.startValue, endValue: t.endValue }) }) }) }(t)), t.registerSubTypeDefaulter('dataZoom', () => { return 'slider' })) } function FE(t) { t.registerComponentModel(LE), t.registerComponentView(OE), BE(t) } const GE = function () {}; const WE = {}; function HE(t, e) { WE[t] = e } function YE(t) { return WE[t] } const UE = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.optionUpdated = function () { t.prototype.optionUpdated.apply(this, arguments); const e = this.ecModel; E(this.option.feature, (t, n) => { const i = YE(n); i && (i.getDefaultOption && (i.defaultOption = i.getDefaultOption(e)), C(t, i.defaultOption)) }) }, e.type = 'toolbox', e.layoutMode = { type: 'box', ignoreSize: !0 }, e.defaultOption = { show: !0, z: 6, orient: 'horizontal', left: 'right', top: 'top', backgroundColor: 'transparent', borderColor: '#ccc', borderRadius: 0, borderWidth: 0, padding: 5, itemSize: 15, itemGap: 8, showTitle: !0, iconStyle: { borderColor: '#666', color: 'none' }, emphasis: { iconStyle: { borderColor: '#3E98C5' } }, tooltip: { show: !1, position: 'bottom' } }, e }(Tp)); function XE(t, e) { const n = ip(e.get('padding')); const i = e.getItemStyle(['color', 'opacity']); return i.fill = e.get('backgroundColor'), new Cs({ shape: { x: t.x - n[3], y: t.y - n[0], width: t.width + n[1] + n[3], height: t.height + n[0] + n[2], r: e.get('borderRadius') }, style: i, silent: !0, z2: -1 }) } const ZE = (function (t) { + function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.render = function (t, e, n, i) { + const r = this.group; if (r.removeAll(), t.get('show')) { var o = +t.get('itemSize'); var a = t.get('orient') === 'vertical'; var s = t.get('feature') || {}; var l = this._features || (this._features = {}); var u = []; E(s, (t, e) => { u.push(e) }), new Im(this._featureNames || [], u).add(h).update(h).remove(H(h, null)).execute(), this._featureNames = u, (function (t, e, n) { const i = e.getBoxLayoutParams(); const r = e.get('padding'); const o = { width: n.getWidth(), height: n.getHeight() }; const a = xp(i, o, r); mp(e.get('orient'), t, e.get('itemGap'), a.width, a.height), _p(t, i, o, r) }(r, t, n)), r.add(XE(r.getBoundingRect(), t)), a || r.eachChild((t) => { const e = t.__title; const i = t.ensureState('emphasis'); const a = i.textConfig || (i.textConfig = {}); const s = t.getTextContent(); const l = s && s.ensureState('emphasis'); if (l && !U(l) && e) { const u = l.style || (l.style = {}); const h = cr(e, ks.makeFont(u)); const c = t.x + r.x; let p = !1; t.y + r.y + o + h.height > n.getHeight() && (a.position = 'top', p = !0); const d = p ? -5 - h.height : o + 10; c + h.width / 2 > n.getWidth() ? (a.position = ['100%', d], u.align = 'right') : c - h.width / 2 < 0 && (a.position = [0, d], u.align = 'left') } }) } function h(h, c) { + let p; const d = u[h]; const f = u[c]; const g = s[d]; const y = new dc(g, t, t.ecModel); if (i && i.newTitle != null && i.featureName === d && (g.title = i.newTitle), d && !f) { + if (function (t) { return t.indexOf('my') === 0 }(d)) { + p = { onclick: y.option.onclick, featureName: d } + } + else { + const v = YE(d); if (!v) + return; p = new v() + }l[d] = p + } + else if (!(p = l[f])) { + return + } p.uid = gc('toolbox-feature'), p.model = y, p.ecModel = e, p.api = n; const m = p instanceof GE; d || !f ? !y.get('show') || m && p.unusable ? m && p.remove && p.remove(e, n) : ((function (i, s, l) { let u; let h; const c = i.getModel('iconStyle'); const p = i.getModel(['emphasis', 'iconStyle']); const d = s instanceof GE && s.getIcons ? s.getIcons() : i.get('icon'); const f = i.get('title') || {}; X(d) ? (u = {})[l] = d : u = d, X(f) ? (h = {})[l] = f : h = f; const g = i.iconPaths = {}; E(u, (l, u) => { const d = Ph(l, {}, { x: -o / 2, y: -o / 2, width: o, height: o }); d.setStyle(c.getItemStyle()), d.ensureState('emphasis').style = p.getItemStyle(); const f = new ks({ style: { text: h[u], align: p.get('textAlign'), borderRadius: p.get('textBorderRadius'), padding: p.get('textPadding'), fill: null }, ignore: !0 }); d.setTextContent(f), Eh({ el: d, componentModel: t, itemName: u, formatterParamsExtra: { title: h[u] } }), d.__title = h[u], d.on('mouseover', function () { const e = p.getItemStyle(); const i = a ? t.get('right') == null && 'right' !== t.get('left') ? 'right' : 'left' : t.get('bottom') == null && 'bottom' !== t.get('top') ? 'bottom' : 'top'; f.setStyle({ fill: p.get('textFill') || e.fill || e.stroke || '#000', backgroundColor: p.get('textBackgroundColor') }), d.setTextConfig({ position: p.get('textPosition') || i }), f.ignore = !t.get('showTitle'), n.enterEmphasis(this) }).on('mouseout', function () { i.get(['iconStatus', u]) !== 'emphasis' && n.leaveEmphasis(this), f.hide() }), (i.get(['iconStatus', u]) === 'emphasis' ? _l : bl)(d), r.add(d), d.on('click', W(s.onclick, s, e, n, u)), g[u] = d }) }(y, p, d)), y.setIconStatus = function (t, e) { const n = this.option; const i = this.iconPaths; n.iconStatus = n.iconStatus || {}, n.iconStatus[t] = e, i[t] && (e === 'emphasis' ? _l : bl)(i[t]) }, p instanceof GE && p.render && p.render(y, e, n, i)) : m && p.dispose && p.dispose(e, n) + } + }, e.prototype.updateView = function (t, e, n, i) { E(this._features, (t) => { t instanceof GE && t.updateView && t.updateView(t.model, e, n, i) }) }, e.prototype.remove = function (t, e) { E(this._features, (n) => { n instanceof GE && n.remove && n.remove(t, e) }), this.group.removeAll() }, e.prototype.dispose = function (t, e) { E(this._features, (n) => { n instanceof GE && n.dispose && n.dispose(t, e) }) }, e.type = 'toolbox', e + }(gg)); const jE = (function (t) { + function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.onclick = function (t, e) { + const n = this.model; const i = n.get('name') || t.get('title.0.text') || 'echarts'; const o = e.getZr().painter.getType() === 'svg'; const a = o ? 'svg' : n.get('type', !0) || 'png'; const s = e.getConnectedDataURL({ type: a, backgroundColor: n.get('backgroundColor', !0) || t.get('backgroundColor') || '#fff', connectedBackgroundColor: n.get('connectedBackgroundColor'), excludeComponents: n.get('excludeComponents'), pixelRatio: n.get('pixelRatio') }); const l = r.browser; if (U(MouseEvent) && (l.newEdge || !l.ie && !l.edge)) { const u = document.createElement('a'); u.download = `${i}.${a}`, u.target = '_blank', u.href = s; const h = new MouseEvent('click', { view: document.defaultView, bubbles: !0, cancelable: !1 }); u.dispatchEvent(h) } + else if (window.navigator.msSaveOrOpenBlob || o) { + const c = s.split(','); const p = c[0].includes('base64'); let d = o ? decodeURIComponent(c[1]) : c[1]; p && (d = window.atob(d)); const f = `${i}.${a}`; if (window.navigator.msSaveOrOpenBlob) { for (var g = d.length, y = new Uint8Array(g); g--;)y[g] = d.charCodeAt(g); const v = new Blob([y]); window.navigator.msSaveOrOpenBlob(v, f) } + else { const m = document.createElement('iframe'); document.body.appendChild(m); const x = m.contentWindow; const _ = x.document; _.open('image/svg+xml', 'replace'), _.write(d), _.close(), x.focus(), _.execCommand('SaveAs', !0, f), document.body.removeChild(m) } + } + else { const b = n.get('lang'); const w = ``; const S = window.open(); S.document.write(w), S.document.title = i } + }, e.getDefaultOption = function (t) { return { show: !0, icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0', title: t.getLocaleModel().get(['toolbox', 'saveAsImage', 'title']), type: 'png', connectedBackgroundColor: '#fff', name: '', excludeComponents: ['toolbox'], lang: t.getLocaleModel().get(['toolbox', 'saveAsImage', 'lang']) } }, e + }(GE)); const qE = '__ec_magicType_stack__'; const KE = [['line', 'bar'], ['stack']]; const $E = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.getIcons = function () { const t = this.model; const e = t.get('icon'); const n = {}; return E(t.get('type'), (t) => { e[t] && (n[t] = e[t]) }), n }, e.getDefaultOption = function (t) { return { show: !0, type: [], icon: { line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4', bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7', stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z' }, title: t.getLocaleModel().get(['toolbox', 'magicType', 'title']), option: {}, seriesIndex: {} } }, e.prototype.onclick = function (t, e, n) { const i = this.model; const r = i.get(['seriesIndex', n]); if (JE[n]) { let o; const a = { series: [] }; E(KE, (t) => { P(t, n) >= 0 && E(t, (t) => { i.setIconStatus(t, 'normal') }) }), i.setIconStatus(n, 'emphasis'), t.eachComponent({ mainType: 'series', query: r == null ? null : { seriesIndex: r } }, (t) => { const e = t.subType; const r = t.id; const o = JE[n](e, r, t, i); o && (k(o, t.option), a.series.push(o)); const s = t.coordinateSystem; if (s && s.type === 'cartesian2d' && (n === 'line' || n === 'bar')) { const l = s.getAxesByScale('ordinal')[0]; if (l) { const u = `${l.dim }Axis`; const h = t.getReferringComponents(u, Co).models[0].componentIndex; a[u] = a[u] || []; for (let c = 0; c <= h; c++)a[u][h] = a[u][h] || {}; a[u][h].boundaryGap = n === 'bar' } } }); let s = n; n === 'stack' && (o = C({ stack: i.option.title.tiled, tiled: i.option.title.stack }, i.option.title), i.get(['iconStatus', n]) !== 'emphasis' && (s = 'tiled')), e.dispatchAction({ type: 'changeMagicType', currentType: s, newOption: a, newTitle: o, featureName: 'magicType' }) } }, e }(GE)); var JE = { line(t, e, n, i) { + if (t === 'bar') + return C({ id: e, type: 'line', data: n.get('data'), stack: n.get('stack'), markPoint: n.get('markPoint'), markLine: n.get('markLine') }, i.get(['option', 'line']) || {}, !0) + }, bar(t, e, n, i) { + if (t === 'line') + return C({ id: e, type: 'bar', data: n.get('data'), stack: n.get('stack'), markPoint: n.get('markPoint'), markLine: n.get('markLine') }, i.get(['option', 'bar']) || {}, !0) + }, stack(t, e, n, i) { + const r = n.get('stack') === qE; if (t === 'line' || t === 'bar') + return i.setIconStatus('stack', r ? 'normal' : 'emphasis'), C({ id: e, stack: r ? '' : qE }, i.get(['option', 'stack']) || {}, !0) + } }; cm({ type: 'changeMagicType', event: 'magicTypeChanged', update: 'prepareAndUpdate' }, (t, e) => { e.mergeOption(t.newOption) }); const QE = Array.from({ length: 60 }).join('-'); function ez(t) { return t.replace(/^\s+/, '').replace(/\s+$/, '') } const nz = new RegExp('\t+', 'g'); const rz = (function (t) { + function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.onclick = function (t, e) { + setTimeout(() => { e.dispatchAction({ type: 'hideTip' }) }); const n = e.getDom(); const i = this.model; this._dom && n.removeChild(this._dom); const r = document.createElement('div'); r.style.cssText = 'position:absolute;top:0;bottom:0;left:0;right:0;padding:5px', r.style.backgroundColor = i.get('backgroundColor') || '#fff'; const o = document.createElement('h4'); const a = i.get('lang') || []; o.innerHTML = a[0] || i.get('title'), o.style.cssText = 'margin:10px 20px', o.style.color = i.get('textColor'); const s = document.createElement('div'); const l = document.createElement('textarea'); s.style.cssText = 'overflow:auto'; const u = i.get('optionToContent'); const h = i.get('contentToOption'); const c = (function (t) { let e; let n; let i; const r = (function (t) { let e = {}; let n = []; let i = []; return t.eachRawSeries((t) =>{ var r = t.coordinateSystem; if (!r || "cartesian2d" !== r.type && "polar" !== r.type) +n.push(t); else { var o = r.getBaseAxis(); if ('category'===o.type) { var a = o.dim + "_" + o.index; e[a] || (e[a] = { categoryAxis: o, valueAxis: r.getOtherAxis(o), series: [] }, i.push({ axisDim: o.dim, axisIndex: o.index })), e[a].series.push(t) } +else { n.push(t) +}} }), { seriesGroupByCategoryAxis: e, other: n, meta: i } }(t)); return { value: B([(n = r.seriesGroupByCategoryAxis, i = [], E(n, (t, e) => { const n = t.categoryAxis; const r = t.valueAxis.dim; const o = [' '].concat(z(t.series, ((t) =>{ return t.name }))); const a = [n.model.getCategories()]; E(t.series, (t) => { let e = t.getRawData(); a.push(t.getRawData().mapArray(e.mapDimension(r), (t) =>{ return t })) }); for (var s = [o.join('\t')], l = 0; l < a[0].length; l++) { for (var u = [], h = 0; h < a.length; h++)u.push(a[h][l]); s.push(u.join('\t')) }i.push(s.join('\n')) }), i.join(`\n\n${QE}\n\n`)), (e = r.other, z(e, (t) => { const e = t.getRawData(); const n = [t.name]; const i = []; return e.each(e.dimensions, function () { for (var t = arguments.length, r = arguments[t - 1], o = e.getName(r), a = 0; a < t - 1; a++)i[a] = arguments[a]; n.push((o ? `${o }\t` : '') + i.join('\t')) }), n.join('\n') }).join(`\n\n${QE}\n\n`))], (t) => { return !!t.replace(/\s/g, '') }).join(`\n\n${QE}\n\n`), meta: r.meta } }(t)); if (U(u)) { const p = u(e.getOption()); X(p) ? s.innerHTML = p : J(p) && s.appendChild(p) } + else { l.readOnly = i.get('readOnly'); const d = l.style; d.cssText = 'display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none', d.color = i.get('textColor'), d.borderColor = i.get('textareaBorderColor'), d.backgroundColor = i.get('textareaColor'), l.value = c.value, s.appendChild(l) } const f = c.meta; const g = document.createElement('div'); g.style.cssText = 'position:absolute;bottom:5px;left:0;right:0'; let y = 'float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px'; const v = document.createElement('div'); const m = document.createElement('div'); y += `;background-color:${i.get('buttonColor')}`, y += `;color:${i.get('buttonTextColor')}`; const x = this; function _() { n.removeChild(r), x._dom = null }ae(v, 'click', _), ae(m, 'click', () => { + if (h == null && u != null || h != null && u == null) { + _() + } + else { + let t; try { + t = U(h) + ? h(s, e.getOption()) + : (function (t, e) { + const n = t.split(new RegExp(`\n*${QE }\n*`, 'g')); const i = { series: [] }; return E(n, (t, n) => { + if (function (t) { + if (t.slice(0, t.indexOf('\n')).includes('\t')) + return !0 + }(t)) { var r = (function (t) { for (var e = t.split(/\n+/g), n = [], i = z(ez(e.shift()).split(nz), (t) =>{ return { name: t, data: [] } }), r = 0; r < e.length; r++) { let o = ez(e[r]).split(nz); n.push(o.shift()); for (let a = 0; a < o.length; a++)i[a] && (i[a].data[r] = o[a]) } return { series: i, categories: n } }(t)); const o = e[n]; const a = `${o.axisDim }Axis`; o && (i[a] = i[a] || [], i[a][o.axisIndex] = { data: r.categories }, i.series = i.series.concat(r.series)) } + else { + r = (function (t) { for (var e = t.split(/\n+/g), n = ez(e.shift()), i = [], r = 0; r < e.length; r++) { var o = ez(e[r]); if (o) { var a = o.split(nz); var s=""; var l=void 0; var u = !1; isNaN(a[0]) ? (u = !0, s = a[0], a = a.slice(1), i[r] = { name: s, value: [] }, l = i[r].value) : l = i[r] = []; for (let h = 0; h < a.length; h++)l.push(+a[h]); 1 === l.length && (u ? i[r].value = l[0] : i[r] = l[0]) } } return { name: n, data: i } }(t)), i.series.push(r) + } +}), i + }(l.value, f)) + } + catch (t) { throw _(), new Error(`Data view format error ${t}`) }t && e.dispatchAction({ type: 'changeDataView', newOption: t }), _() + } + }), v.innerHTML = a[1], m.innerHTML = a[2], m.style.cssText = v.style.cssText = y, !i.get('readOnly') && g.appendChild(m), g.appendChild(v), r.appendChild(o), r.appendChild(s), r.appendChild(g), s.style.height = `${n.clientHeight - 80}px`, n.appendChild(r), this._dom = r + }, e.prototype.remove = function (t, e) { this._dom && e.getDom().removeChild(this._dom) }, e.prototype.dispose = function (t, e) { this.remove(t, e) }, e.getDefaultOption = function (t) { return { show: !0, readOnly: !1, optionToContent: null, contentToOption: null, icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28', title: t.getLocaleModel().get(['toolbox', 'dataView', 'title']), lang: t.getLocaleModel().get(['toolbox', 'dataView', 'lang']), backgroundColor: '#fff', textColor: '#000', textareaColor: '#fff', textareaBorderColor: '#333', buttonColor: '#c23531', buttonTextColor: '#fff' } }, e + }(GE)); function oz(t, e) { return z(t, (t, n) => { const i = e && e[n]; if (q(i) && !Y(i)) { q(t) && !Y(t) || (t = { value: t }); const r = i.name != null && t.name == null; return t = k(t, i), r && delete t.name, t } return t }) }cm({ type: 'changeDataView', event: 'dataViewChanged', update: 'prepareAndUpdate' }, (t, e) => { + const n = []; E(t.newOption.series, (t) => { + const i = e.getSeriesByName(t.name)[0]; if (i) { const r = i.get('data'); n.push({ name: t.name, data: oz(t.data, r) }) } + else { + n.push(A({ type: 'scatter' }, t)) + } + }), e.mergeOption(k({ series: n }, t.newOption)) + }); const az = E; const sz = So(); function lz(t) { const e = sz(t); return e.snapshots || (e.snapshots = [{}]), e.snapshots } const uz = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.onclick = function (t, e) { !(function (t) { sz(t).snapshots = null }(t)), e.dispatchAction({ type: 'restore', from: this.uid }) }, e.getDefaultOption = function (t) { return { show: !0, icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5', title: t.getLocaleModel().get(['toolbox', 'restore', 'title']) } }, e }(GE)); cm({ type: 'restore', event: 'restore', update: 'prepareAndUpdate' }, (t, e) => { e.resetOption('recreate') }); const hz = ['grid', 'xAxis', 'yAxis', 'geo', 'graph', 'polar', 'radiusAxis', 'angleAxis', 'bmap']; const cz = (function () { + function t(t, e, n) { const i = this; this._targetInfoList = []; const r = dz(e, t); E(fz, (t, e) => { (!n || !n.include || P(n.include, e) >= 0) && t(r, i._targetInfoList) }) } return t.prototype.setOutputRanges = function (t, e) { return this.matchOutputRanges(t, e, (t, e, n) => { if ((t.coordRanges || (t.coordRanges = [])).push(e), !t.coordRange) { t.coordRange = e; const i = vz[t.brushType](0, n, e); t.__rangeOffset = { offset: xz[t.brushType](i.values, t.range, [1, 1]), xyMinMax: i.xyMinMax } } }), t }, t.prototype.matchOutputRanges = function (t, e, n) { E(t, function (t) { const i = this.findTargetInfo(t, e); i && !0 !== i && E(i.coordSyses, (i) => { const r = vz[t.brushType](1, i, t.range, !0); n(t, r.values, i, e) }) }, this) }, t.prototype.setInputRanges = function (t, e) { E(t, function (t) { let n; let i; let r; let o; let a; const s = this.findTargetInfo(t, e); if (t.range = t.range || [], s && !0 !== s) { t.panelId = s.panelId; const l = vz[t.brushType](0, s.coordSys, t.coordRange); const u = t.__rangeOffset; t.range = u ? xz[t.brushType](l.values, u.offset, (n = l.xyMinMax, i = u.xyMinMax, r = bz(n), o = bz(i), a = [r[0] / o[0], r[1] / o[1]], isNaN(a[0]) && (a[0] = 1), isNaN(a[1]) && (a[1] = 1), a)) : l.values } }, this) }, t.prototype.makePanelOpts = function (t, e) { return z(this._targetInfoList, (n) => { const i = n.getPanelRect(); return { panelId: n.panelId, defaultBrushType: e ? e(n) : null, clipPath: hL(i), isTargetByCursor: pL(i, t, n.coordSysModel), getLinearBrushOtherExtent: cL(i) } }) }, t.prototype.controlSeries = function (t, e, n) { const i = this.findTargetInfo(t, n); return !0 === i || i && P(i.coordSyses, e.coordinateSystem) >= 0 }, t.prototype.findTargetInfo = function (t, e) { + for (let n = this._targetInfoList, i = dz(e, t), r = 0; r < n.length; r++) { + const o = n[r]; const a = t.panelId; if (a) { + if (o.panelId === a) + return o + } + else { + for (let s = 0; s < gz.length; s++) { + if (gz[s](i, o)) + return o + } + } + } return !0 + }, t + }()); function pz(t) { return t[0] > t[1] && t.reverse(), t } function dz(t, e) { return Io(t, e, { includeMainTypes: hz }) } var fz = { grid(t, e) { const n = t.xAxisModels; const i = t.yAxisModels; const r = t.gridModels; const o = ft(); const a = {}; const s = {}; (n || i || r) && (E(n, (t) => { const e = t.axis.grid.model; o.set(e.id, e), a[e.id] = !0 }), E(i, (t) => { const e = t.axis.grid.model; o.set(e.id, e), s[e.id] = !0 }), E(r, (t) => { o.set(t.id, t), a[t.id] = !0, s[t.id] = !0 }), o.each((t) => { const r = t.coordinateSystem; const o = []; E(r.getCartesians(), (t, e) => { (P(n, t.getAxis('x').model) >= 0 || P(i, t.getAxis('y').model) >= 0) && o.push(t) }), e.push({ panelId: `grid--${t.id}`, gridModel: t, coordSysModel: t, coordSys: o[0], coordSyses: o, getPanelRect: yz.grid, xAxisDeclared: a[t.id], yAxisDeclared: s[t.id] }) })) }, geo(t, e) { E(t.geoModels, (t) => { const n = t.coordinateSystem; e.push({ panelId: `geo--${t.id}`, geoModel: t, coordSysModel: t, coordSys: n, coordSyses: [n], getPanelRect: yz.geo }) }) } }; var gz = [function (t, e) { const n = t.xAxisModel; const i = t.yAxisModel; let r = t.gridModel; return !r && n && (r = n.axis.grid.model), !r && i && (r = i.axis.grid.model), r && r === e.gridModel }, function (t, e) { const n = t.geoModel; return n && n === e.geoModel }]; var yz = { grid() { return this.coordSys.master.getRect().clone() }, geo() { const t = this.coordSys; const e = t.getBoundingRect().clone(); return e.applyTransform(Ih(t)), e } }; var vz = { lineX: H(mz, 0), lineY: H(mz, 1), rect(t, e, n, i) { const r = t ? e.pointToData([n[0][0], n[1][0]], i) : e.dataToPoint([n[0][0], n[1][0]], i); const o = t ? e.pointToData([n[0][1], n[1][1]], i) : e.dataToPoint([n[0][1], n[1][1]], i); const a = [pz([r[0], o[0]]), pz([r[1], o[1]])]; return { values: a, xyMinMax: a } }, polygon(t, e, n, i) { const r = [[1 / 0, -1 / 0], [1 / 0, -1 / 0]]; return { values: z(n, (n) => { const o = t ? e.pointToData(n, i) : e.dataToPoint(n, i); return r[0][0] = Math.min(r[0][0], o[0]), r[1][0] = Math.min(r[1][0], o[1]), r[0][1] = Math.max(r[0][1], o[0]), r[1][1] = Math.max(r[1][1], o[1]), o }), xyMinMax: r } } }; function mz(t, e, n, i) { const r = n.getAxis(['x', 'y'][t]); const o = pz(z([0, 1], (t) => { return e ? r.coordToData(r.toLocalCoord(i[t]), !0) : r.toGlobalCoord(r.dataToCoord(i[t])) })); const a = []; return a[t] = o, a[1 - t] = [Number.NaN, Number.NaN], { values: o, xyMinMax: a } } var xz = { lineX: H(_z, 0), lineY: H(_z, 1), rect(t, e, n) { return [[t[0][0] - n[0] * e[0][0], t[0][1] - n[0] * e[0][1]], [t[1][0] - n[1] * e[1][0], t[1][1] - n[1] * e[1][1]]] }, polygon(t, e, n) { return z(t, (t, i) => { return [t[0] - n[0] * e[i][0], t[1] - n[1] * e[i][1]] }) } }; function _z(t, e, n, i) { return [e[0] - i[t] * n[0], e[1] - i[t] * n[1]] } function bz(t) { return t ? [t[0][1] - t[0][0], t[1][1] - t[1][0]] : [Number.NaN, Number.NaN] } let wz; let Sz; const Mz = E; const Iz = `${uo}toolbox-dataZoom_`; const Tz = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.render = function (t, e, n, i) { this._brushController || (this._brushController = new Ok(n.getZr()), this._brushController.on('brush', W(this._onBrush, this)).mount()), (function (t, e, n, i, r) { let o = n._isZoomActive; i && i.type === 'takeGlobalCursor' && (o = i.key === 'dataZoomSelect' && i.dataZoomSelectActive), n._isZoomActive = o, t.setIconStatus('zoom', o ? 'emphasis' : 'normal'); const a = new cz(Dz(t), e, { include: ['grid'] }).makePanelOpts(r, (t) => { return t.xAxisDeclared && !t.yAxisDeclared ? 'lineX' : !t.xAxisDeclared && t.yAxisDeclared ? 'lineY' : 'rect' }); n._brushController.setPanels(a).enableBrush(!(!o || !a.length) && { brushType: 'auto', brushStyle: t.getModel('brushStyle').getItemStyle() }) }(t, e, this, i, n)), (function (t, e) { t.setIconStatus('back', (function (t) { return lz(t).length }(e)) > 1 ? 'emphasis' : 'normal') }(t, e)) }, e.prototype.onclick = function (t, e, n) { Cz[n].call(this) }, e.prototype.remove = function (t, e) { this._brushController && this._brushController.unmount() }, e.prototype.dispose = function (t, e) { this._brushController && this._brushController.dispose() }, e.prototype._onBrush = function (t) { const e = t.areas; if (t.isEnd && e.length) { var n = {}; var i = this.ecModel; this._brushController.updateCovers([]), new cz(Dz(this.model), i, { include: ['grid'] }).matchOutputRanges(e, i, (t, e, n) => { if (n.type === 'cartesian2d') { const i = t.brushType; i === 'rect' ? (r('x', n, e[0]), r('y', n, e[1])) : r({ lineX: 'x', lineY: 'y' }[i], n, e) } }), (function (t, e) { const n = lz(t); az(e, (e, i) => { for (var r = n.length - 1; r >= 0 && !n[r][i]; r--);if (r < 0) { const o = t.queryComponents({ mainType: 'dataZoom', subType: 'select', id: i })[0]; if (o) { const a = o.getPercentRange(); n[0][i] = { dataZoomId: i, start: a[0], end: a[1] } } } }), n.push(e) }(i, n)), this._dispatchZoomAction(n) } function r(t, e, r) { const o = e.getAxis(t); const a = o.model; const s = (function (t, e, n) { let i; return n.eachComponent({ mainType: 'dataZoom', subType: 'select' }, (n) =>{ n.getAxisModel(t, e.componentIndex) && (i = n) }), i }(t, a, i)); const l = s.findRepresentativeAxisProxy(a).getMinMaxSpan(); l.minValueSpan == null && l.maxValueSpan == null || (r = lk(0, r.slice(), o.scale.getExtent(), 0, l.minValueSpan, l.maxValueSpan)), s && (n[s.id] = { dataZoomId: s.id, startValue: r[0], endValue: r[1] }) } }, e.prototype._dispatchZoomAction = function (t) { const e = []; Mz(t, (t, n) => { e.push(T(t)) }), e.length && this.api.dispatchAction({ type: 'dataZoom', from: this.uid, batch: e }) }, e.getDefaultOption = function (t) { return { show: !0, filterMode: 'filter', icon: { zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1', back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26' }, title: t.getLocaleModel().get(['toolbox', 'dataZoom', 'title']), brushStyle: { borderWidth: 0, color: 'rgba(210,219,238,0.2)' } } }, e }(GE)); var Cz = { zoom() { const t = !this._isZoomActive; this.api.dispatchAction({ type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: t }) }, back() { + this._dispatchZoomAction(function (t) { + const e = lz(t); const n = e[e.length - 1]; e.length > 1 && e.pop(); const i = {}; return az(n, (t, n) => { + for (let r = e.length - 1; r >= 0; r--) { + if (t = e[r][n]) { i[n] = t; break } + } + }), i + }(this.ecModel)) + } }; function Dz(t) { const e = { xAxisIndex: t.get('xAxisIndex', !0), yAxisIndex: t.get('yAxisIndex', !0), xAxisId: t.get('xAxisId', !0), yAxisId: t.get('yAxisId', !0) }; return e.xAxisIndex == null && e.xAxisId == null && (e.xAxisIndex = 'all'), e.yAxisIndex == null && e.yAxisId == null && (e.yAxisIndex = 'all'), e }wz = 'dataZoom', Sz = function (t) { const e = t.getComponent('toolbox', 0); const n = ['feature', 'dataZoom']; if (e && e.get(n) != null) { var i = e.getModel(n); var r = []; const o = Io(t, Dz(i)); return Mz(o.xAxisModels, (t) => { return a(t, 'xAxis', 'xAxisIndex') }), Mz(o.yAxisModels, (t) => { return a(t, 'yAxis', 'yAxisIndex') }), r } function a(t, e, n) { const o = t.componentIndex; const a = { type: 'select', $fromToolbox: !0, filterMode: i.get('filterMode', !0) || 'filter', id: Iz + e + o }; a[n] = o, r.push(a) } }, lt(jp.get(wz) == null && Sz), jp.set(wz, Sz); const Az = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'tooltip', e.dependencies = ['axisPointer'], e.defaultOption = { z: 60, show: !0, showContent: !0, trigger: 'item', triggerOn: 'mousemove|click', alwaysShowContent: !1, displayMode: 'single', renderMode: 'auto', confine: null, showDelay: 0, hideDelay: 100, transitionDuration: 0.4, enterable: !1, backgroundColor: '#fff', shadowBlur: 10, shadowColor: 'rgba(0, 0, 0, .2)', shadowOffsetX: 1, shadowOffsetY: 2, borderRadius: 4, borderWidth: 1, padding: null, extraCssText: '', axisPointer: { type: 'line', axis: 'auto', animation: 'auto', animationDurationUpdate: 200, animationEasingUpdate: 'exponentialOut', crossStyle: { color: '#999', width: 1, type: 'dashed', textStyle: {} } }, textStyle: { color: '#666', fontSize: 14 } }, e }(Tp)); function kz(t) { const e = t.get('confine'); return e != null ? !!e : t.get('renderMode') === 'richText' } function Lz(t) { + if (r.domSupported) { + for (let e = document.documentElement.style, n = 0, i = t.length; n < i; n++) { + if (t[n] in e) + return t[n] + } + } + } const Pz = Lz(['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']); function Oz(t, e) { + if (!t) + return e; e = np(e, !0); const n = t.indexOf(e); return (t = n === -1 ? e : `-${t.slice(0, n)}-${e}`).toLowerCase() + } const Rz = Oz(Lz(['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']), 'transition'); const Nz = Oz(Pz, 'transform'); const Ez = `position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;${r.transform3dSupported ? 'will-change:transform;' : ''}`; function zz(t, e, n) { + const i = `${t.toFixed(0)}px`; const o = `${e.toFixed(0)}px`; if (!r.transformSupported) + return n ? `top:${o};left:${i};` : [['top', o], ['left', i]]; const a = r.transform3dSupported; const s = `translate${a ? '3d' : ''}(${i},${o}${a ? ',0' : ''})`; return n ? `top:0;left:0;${Nz}:${s};` : [['top', 0], ['left', 0], [Pz, s]] + } function Vz(t, e, n) { const i = []; const o = t.get('transitionDuration'); const a = t.get('backgroundColor'); const s = t.get('shadowBlur'); const l = t.get('shadowColor'); const u = t.get('shadowOffsetX'); const h = t.get('shadowOffsetY'); const c = t.getModel('textStyle'); const p = ng(t, 'html'); const d = `${u}px ${h}px ${s}px ${l}`; return i.push(`box-shadow:${d}`), e && o && i.push(function (t, e) { const n = 'cubic-bezier(0.23,1,0.32,1)'; let i = ` ${t / 2}s ${n}`; let o = `opacity${i},visibility${i}`; return e || (i = ` ${t}s ${n}`, o += r.transformSupported ? `,${Nz}${i}` : `,left${i},top${i}`), `${Rz}:${o}` }(o, n)), a && i.push(`background-color:${a}`), E(['width', 'color', 'radius'], (e) => { const n = `border-${e}`; const r = np(n); const o = t.get(r); o != null && i.push(`${n}:${o}${e === 'color' ? '' : 'px'}`) }), i.push(function (t) { const e = []; const n = t.get('fontSize'); const i = t.getTextColor(); i && e.push(`color:${i}`), e.push(`font:${t.getFont()}`), n && e.push(`line-height:${Math.round(3 * n / 2)}px`); const r = t.get('textShadowColor'); const o = t.get('textShadowBlur') || 0; const a = t.get('textShadowOffsetX') || 0; const s = t.get('textShadowOffsetY') || 0; return r && o && e.push(`text-shadow:${a}px ${s}px ${o}px ${r}`), E(['decoration', 'align'], (n) => { const i = t.get(n); i && e.push(`text-${n}:${i}`) }), e.join(';') }(c)), p != null && i.push(`padding:${ip(p).join('px ')}px`), `${i.join(';')};` } function Bz(t, e, n, i, r) { + const o = e && e.painter; if (n) { const a = o && o.getViewportRoot(); a && (function (t, e, n, i, r) { $t(Kt, e, i, r, !0) && $t(t, n, Kt[0], Kt[1]) }(t, a, document.body, i, r)) } + else { t[0] = i, t[1] = r; const s = o && o.getViewportRootOffset(); s && (t[0] += s.offsetLeft, t[1] += s.offsetTop) }t[2] = t[0] / e.getWidth(), t[3] = t[1] / e.getHeight() + } const Fz = (function () { + function t(t, e, n) { + if (this._show = !1, this._styleCoord = [0, 0, 0, 0], this._enterable = !0, this._firstShow = !0, this._longHide = !0, r.wxa) + return null; const i = document.createElement('div'); i.domBelongToZr = !0, this.el = i; const o = this._zr = e.getZr(); const a = this._appendToBody = n && n.appendToBody; Bz(this._styleCoord, o, a, e.getWidth() / 2, e.getHeight() / 2), a ? document.body.appendChild(i) : t.appendChild(i), this._container = t; const s = this; i.onmouseenter = function () { s._enterable && (clearTimeout(s._hideTimeout), s._show = !0), s._inContent = !0 }, i.onmousemove = function (t) { if (t = t || window.event, !s._enterable) { const e = o.handler; oe(o.painter.getViewportRoot(), t, !0), e.dispatch('mousemove', t) } }, i.onmouseleave = function () { s._inContent = !1, s._enterable && s._show && s.hideLater(s._hideDelay) } + } return t.prototype.update = function (t) { let e; let n; let i; const r = this._container; const o = (n = 'position', (i = (e = r).currentStyle || document.defaultView && document.defaultView.getComputedStyle(e)) ? n ? i[n] : i : null); const a = r.style; a.position !== 'absolute' && o !== 'absolute' && (a.position = 'relative'), t.get('alwaysShowContent') && this._moveIfResized(), this.el.className = t.get('className') || '' }, t.prototype.show = function (t, e) { clearTimeout(this._hideTimeout), clearTimeout(this._longHideTimeout); const n = this.el; const i = n.style; const r = this._styleCoord; n.innerHTML ? i.cssText = `${Ez + Vz(t, !this._firstShow, this._longHide) + zz(r[0], r[1], !0)}border-color:${pp(e)};${t.get('extraCssText') || ''};pointer-events:${this._enterable ? 'auto' : 'none'}` : i.display = 'none', this._show = !0, this._firstShow = !1, this._longHide = !1 }, t.prototype.setContent = function (t, e, n, i, r) { + const o = this.el; if (t != null) { + let a = ''; if (X(r) && n.get('trigger') === 'item' && !kz(n) && (a = (function (t, e, n) { + if (!X(n) || n === 'inside') + return ''; const i = t.get('backgroundColor'); const r = t.get('borderWidth'); e = pp(e); let o; let a; const s = (o = n) === 'left' ? 'right' : o === 'right' ? 'left' : o === 'top' ? 'bottom' : 'top'; const l = Math.max(1.5 * Math.round(r), 6); let u = ''; let h = `${Nz}:`; P(['left', 'right'], s) > -1 ? (u += 'top:50%', h += `translateY(-50%) rotate(${a = s === 'left' ? -225 : -45}deg)`) : (u += 'left:50%', h += `translateX(-50%) rotate(${a = s === 'top' ? 225 : 45}deg)`); const c = a * Math.PI / 180; const p = l + r; const d = p * Math.abs(Math.cos(c)) + p * Math.abs(Math.sin(c)); const f = `${e} solid ${r}px;`; return `
` + }(n, i, r))), X(t)) { + o.innerHTML = t + a + } + else if (t) { o.innerHTML = '', Y(t) || (t = [t]); for (let s = 0; s < t.length; s++)J(t[s]) && t[s].parentNode !== o && o.appendChild(t[s]); if (a && o.childNodes.length) { const l = document.createElement('div'); l.innerHTML = a, o.appendChild(l) } } + } + else { + o.innerHTML = '' + } + }, t.prototype.setEnterable = function (t) { this._enterable = t }, t.prototype.getSize = function () { const t = this.el; return [t.offsetWidth, t.offsetHeight] }, t.prototype.moveTo = function (t, e) { const n = this._styleCoord; if (Bz(n, this._zr, this._appendToBody, t, e), n[0] != null && n[1] != null) { const i = this.el.style; E(zz(n[0], n[1]), (t) => { i[t[0]] = t[1] }) } }, t.prototype._moveIfResized = function () { const t = this._styleCoord[2]; const e = this._styleCoord[3]; this.moveTo(t * this._zr.getWidth(), e * this._zr.getHeight()) }, t.prototype.hide = function () { const t = this; const e = this.el.style; e.visibility = 'hidden', e.opacity = '0', r.transform3dSupported && (e.willChange = ''), this._show = !1, this._longHideTimeout = setTimeout(() => { return t._longHide = !0 }, 500) }, t.prototype.hideLater = function (t) { !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(W(this.hide, this), t)) : this.hide()) }, t.prototype.isShow = function () { return this._show }, t.prototype.dispose = function () { this.el.parentNode.removeChild(this.el) }, t + }()); const Gz = (function () { function t(t) { this._show = !1, this._styleCoord = [0, 0, 0, 0], this._enterable = !0, this._zr = t.getZr(), Yz(this._styleCoord, this._zr, t.getWidth() / 2, t.getHeight() / 2) } return t.prototype.update = function (t) { t.get('alwaysShowContent') && this._moveIfResized() }, t.prototype.show = function () { this._hideTimeout && clearTimeout(this._hideTimeout), this.el.show(), this._show = !0 }, t.prototype.setContent = function (t, e, n, i, r) { const o = this; q(t) && ao(''), this.el && this._zr.remove(this.el); const a = n.getModel('textStyle'); this.el = new ks({ style: { rich: e.richTextStyles, text: t, lineHeight: 22, borderWidth: 1, borderColor: i, textShadowColor: a.get('textShadowColor'), fill: n.get(['textStyle', 'color']), padding: ng(n, 'richText'), verticalAlign: 'top', align: 'left' }, z: n.get('z') }), E(['backgroundColor', 'borderRadius', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'], (t) => { o.el.style[t] = n.get(t) }), E(['textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'], (t) => { o.el.style[t] = a.get(t) || 0 }), this._zr.add(this.el); const s = this; this.el.on('mouseover', () => { s._enterable && (clearTimeout(s._hideTimeout), s._show = !0), s._inContent = !0 }), this.el.on('mouseout', () => { s._enterable && s._show && s.hideLater(s._hideDelay), s._inContent = !1 }) }, t.prototype.setEnterable = function (t) { this._enterable = t }, t.prototype.getSize = function () { const t = this.el; const e = this.el.getBoundingRect(); const n = Hz(t.style); return [e.width + n.left + n.right, e.height + n.top + n.bottom] }, t.prototype.moveTo = function (t, e) { const n = this.el; if (n) { const i = this._styleCoord; Yz(i, this._zr, t, e), t = i[0], e = i[1]; const r = n.style; const o = Wz(r.borderWidth || 0); const a = Hz(r); n.x = t + o + a.left, n.y = e + o + a.top, n.markRedraw() } }, t.prototype._moveIfResized = function () { const t = this._styleCoord[2]; const e = this._styleCoord[3]; this.moveTo(t * this._zr.getWidth(), e * this._zr.getHeight()) }, t.prototype.hide = function () { this.el && this.el.hide(), this._show = !1 }, t.prototype.hideLater = function (t) { !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(W(this.hide, this), t)) : this.hide()) }, t.prototype.isShow = function () { return this._show }, t.prototype.dispose = function () { this._zr.remove(this.el) }, t }()); function Wz(t) { return Math.max(0, t) } function Hz(t) { const e = Wz(t.shadowBlur || 0); const n = Wz(t.shadowOffsetX || 0); const i = Wz(t.shadowOffsetY || 0); return { left: Wz(e - n), right: Wz(e + n), top: Wz(e - i), bottom: Wz(e + i) } } function Yz(t, e, n, i) { t[0] = n, t[1] = i, t[2] = t[0] / e.getWidth(), t[3] = t[1] / e.getHeight() } const Uz = new Cs({ shape: { x: -1, y: -1, width: 2, height: 2 } }); const Xz = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function (t, e) { if (!r.node && e.getDom()) { let n; const i = t.getComponent('tooltip'); const o = this._renderMode = (n = i.get('renderMode')) === 'auto' ? r.domSupported ? 'html' : 'richText' : n || 'html'; this._tooltipContent = o === 'richText' ? new Gz(e) : new Fz(e.getDom(), e, { appendToBody: i.get('appendToBody', !0) }) } }, e.prototype.render = function (t, e, n) { if (!r.node && n.getDom()) { this.group.removeAll(), this._tooltipModel = t, this._ecModel = e, this._api = n, this._alwaysShowContent = t.get('alwaysShowContent'); const i = this._tooltipContent; i.update(t), i.setEnterable(t.get('enterable')), this._initGlobalListener(), this._keepShow(), this._renderMode !== 'richText' && t.get('transitionDuration') ? Ag(this, '_updatePosition', 50, 'fixRate') : kg(this, '_updatePosition') } }, e.prototype._initGlobalListener = function () { const t = this._tooltipModel.get('triggerOn'); KR('itemTooltip', this._api, W(function (e, n, i) { t !== 'none' && (t.includes(e) ? this._tryShow(n, i) : e === 'leave' && this._hide(i)) }, this)) }, e.prototype._keepShow = function () { const t = this._tooltipModel; const e = this._ecModel; const n = this._api; const i = t.get('triggerOn'); if (this._lastX != null && this._lastY != null && i !== 'none' && i !== 'click') { const r = this; clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout(() => { !n.isDisposed() && r.manuallyShowTip(t, e, n, { x: r._lastX, y: r._lastY, dataByCoordSys: r._lastDataByCoordSys }) }) } }, e.prototype.manuallyShowTip = function (t, e, n, i) { + if (i.from !== this.uid && !r.node && n.getDom()) { + const o = jz(i, n); this._ticket = ''; const a = i.dataByCoordSys; const s = (function (t, e, n) { + const i = To(t).queryOptionMap; const r = i.keys()[0]; if (r && r !== 'series') { + let o; const a = Ao(e, r, i.get(r), { useDefault: !1, enableAll: !1, enableNone: !1 }).models[0]; if (a) { + return n.getViewOfComponentModel(a).group.traverse((e) => { + let n = Hs(e).tooltipConfig; if (n && n.name === t.name) + return o = e, !0 +}), o ? { componentMainType: r, componentIndex: a.componentIndex, el: o } : void 0 + } + } + }(i, e, n)); if (s) { const l = s.el.getBoundingRect().clone(); l.applyTransform(s.el.transform), this._tryShow({ offsetX: l.x + l.width / 2, offsetY: l.y + l.height / 2, target: s.el, position: i.position, positionDefault: 'bottom' }, o) } + else if (i.tooltip && i.x != null && i.y != null) { const u = Uz; u.x = i.x, u.y = i.y, u.update(), Hs(u).tooltipConfig = { name: null, option: i.tooltip }, this._tryShow({ offsetX: i.x, offsetY: i.y, target: u }, o) } + else if (a) { + this._tryShow({ offsetX: i.x, offsetY: i.y, position: i.position, dataByCoordSys: a, tooltipOption: i.tooltipOption }, o) + } + else if (i.seriesIndex != null) { + if (this._manuallyAxisShowTip(t, e, n, i)) + return; const h = eN(i, e); const c = h.point[0]; const p = h.point[1]; c != null && p != null && this._tryShow({ offsetX: c, offsetY: p, target: h.el, position: i.position, positionDefault: 'bottom' }, o) + } + else { + i.x != null && i.y != null && (n.dispatchAction({ type: 'updateAxisPointer', x: i.x, y: i.y }), this._tryShow({ offsetX: i.x, offsetY: i.y, position: i.position, target: n.getZr().findHover(i.x, i.y).target }, o)) + } + } + }, e.prototype.manuallyHideTip = function (t, e, n, i) { const r = this._tooltipContent; !this._alwaysShowContent && this._tooltipModel && r.hideLater(this._tooltipModel.get('hideDelay')), this._lastX = this._lastY = this._lastDataByCoordSys = null, i.from !== this.uid && this._hide(jz(i, n)) }, e.prototype._manuallyAxisShowTip = function (t, e, n, i) { + const r = i.seriesIndex; const o = i.dataIndex; const a = e.getComponent('axisPointer').coordSysAxesInfo; if (r != null && o != null && a != null) { + const s = e.getSeriesByIndex(r); if (s && Zz([s.getData().getItemModel(o), s, (s.coordinateSystem || {}).model], this._tooltipModel).get('trigger') === 'axis') + return n.dispatchAction({ type: 'updateAxisPointer', seriesIndex: r, dataIndex: o, position: i.position }), !0 + } + }, e.prototype._tryShow = function (t, e) { + const n = t.target; if (this._tooltipModel) { + this._lastX = t.offsetX, this._lastY = t.offsetY; const i = t.dataByCoordSys; if (i && i.length) { + this._showAxisTooltip(i, t) + } + else if (n) { let r, o; this._lastDataByCoordSys = null, xy(n, (t) => { return Hs(t).dataIndex != null ? (r = t, !0) : Hs(t).tooltipConfig != null ? (o = t, !0) : void 0 }, !0), r ? this._showSeriesItemTooltip(t, r, e) : o ? this._showComponentItemTooltip(t, o, e) : this._hide(e) } + else { + this._lastDataByCoordSys = null, this._hide(e) + } + } + }, e.prototype._showOrMove = function (t, e) { const n = t.get('showDelay'); e = W(e, this), clearTimeout(this._showTimout), n > 0 ? this._showTimout = setTimeout(e, n) : e() }, e.prototype._showAxisTooltip = function (t, e) { const n = this._ecModel; const i = this._tooltipModel; const r = [e.offsetX, e.offsetY]; const o = Zz([e.tooltipOption], i); const a = this._renderMode; const s = []; const l = Xf('section', { blocks: [], noHeader: !0 }); const u = []; const h = new ig(); E(t, (t) => { E(t.dataByAxis, (t) => { const e = n.getComponent(`${t.axisDim}Axis`, t.axisIndex); const r = t.value; if (e && r != null) { const o = zR(r, e.axis, n, t.seriesDataIndices, t.valueLabelOpt); const c = Xf('section', { header: o, noHeader: !ut(o), sortBlocks: !0, blocks: [] }); l.blocks.push(c), E(t.seriesDataIndices, (l) => { const p = n.getSeriesByIndex(l.seriesIndex); const d = l.dataIndexInside; const f = p.getDataParams(d); if (!(f.dataIndex < 0)) { f.axisDim = t.axisDim, f.axisIndex = t.axisIndex, f.axisType = t.axisType, f.axisId = t.axisId, f.axisValue = s_(e.axis, { value: r }), f.axisValueLabel = o, f.marker = h.makeTooltipMarker('item', pp(f.color), a); const g = uf(p.formatTooltip(d, !0, null)); const y = g.frag; if (y) { const v = Zz([p], i).get('valueFormatter'); c.blocks.push(v ? A({ valueFormatter: v }, y) : y) }g.text && u.push(g.text), s.push(f) } }) } }) }), l.blocks.reverse(), u.reverse(); const c = e.position; const p = o.get('order'); const d = Jf(l, h, a, p, n.get('useUTC'), o.get('textStyle')); d && u.unshift(d); const f = a === 'richText' ? '\n\n' : '
'; const g = u.join(f); this._showOrMove(o, function () { this._updateContentNotChangedOnAxis(t, s) ? this._updatePosition(o, c, r[0], r[1], this._tooltipContent, s) : this._showTooltipContent(o, g, s, `${Math.random()}`, r[0], r[1], c, null, h) }) }, e.prototype._showSeriesItemTooltip = function (t, e, n) { const i = this._ecModel; const r = Hs(e); const o = r.seriesIndex; const a = i.getSeriesByIndex(o); const s = r.dataModel || a; const l = r.dataIndex; const u = r.dataType; const h = s.getData(u); const c = this._renderMode; const p = t.positionDefault; const d = Zz([h.getItemModel(l), s, a && (a.coordinateSystem || {}).model], this._tooltipModel, p ? { position: p } : null); const f = d.get('trigger'); if (f == null || f === 'item') { const g = s.getDataParams(l, u); const y = new ig(); g.marker = y.makeTooltipMarker('item', pp(g.color), c); const v = uf(s.formatTooltip(l, !1, u)); const m = d.get('order'); const x = d.get('valueFormatter'); const _ = v.frag; const b = _ ? Jf(x ? A({ valueFormatter: x }, _) : _, y, c, m, i.get('useUTC'), d.get('textStyle')) : v.text; const w = `item_${s.name}_${l}`; this._showOrMove(d, function () { this._showTooltipContent(d, b, g, w, t.offsetX, t.offsetY, t.position, t.target, y) }), n({ type: 'showTip', dataIndexInside: l, dataIndex: h.getRawIndex(l), seriesIndex: o, from: this.uid }) } }, e.prototype._showComponentItemTooltip = function (t, e, n) { const i = Hs(e); let r = i.tooltipConfig.option || {}; X(r) && (r = { content: r, formatter: r }); const o = [r]; const a = this._ecModel.getComponent(i.componentMainType, i.componentIndex); a && o.push(a), o.push({ formatter: r.content }); const s = t.positionDefault; const l = Zz(o, this._tooltipModel, s ? { position: s } : null); const u = l.get('content'); const h = `${Math.random()}`; const c = new ig(); this._showOrMove(l, function () { const n = T(l.get('formatterParams') || {}); this._showTooltipContent(l, u, n, h, t.offsetX, t.offsetY, t.position, e, c) }), n({ type: 'showTip', from: this.uid }) }, e.prototype._showTooltipContent = function (t, e, n, i, r, o, a, s, l) { + if (this._ticket = '', t.get('showContent') && t.get('show')) { + const u = this._tooltipContent; u.setEnterable(t.get('enterable')); const h = t.get('formatter'); a = a || t.get('position'); let c = e; const p = this._getNearestPoint([r, o], n, t.get('trigger'), t.get('borderColor')).color; if (h) { + if (X(h)) { const d = t.ecModel.get('useUTC'); const f = Y(n) ? n[0] : n; c = h, f && f.axisType && f.axisType.includes('time') && (c = Vc(f.axisValue, c, d)), c = hp(c, n, !0) } + else if (U(h)) { const g = W(function (e, i) { e === this._ticket && (u.setContent(i, l, t, p, a), this._updatePosition(t, a, r, o, u, n, s)) }, this); this._ticket = i, c = h(n, i, g) } + else { + c = h + } + }u.setContent(c, l, t, p, a), u.show(t, p), this._updatePosition(t, a, r, o, u, n, s) + } + }, e.prototype._getNearestPoint = function (t, e, n, i) { return n === 'axis' || Y(e) ? { color: i || (this._renderMode === 'html' ? '#fff' : 'none') } : Y(e) ? void 0 : { color: i || e.color || e.borderColor } }, e.prototype._updatePosition = function (t, e, n, i, r, o, a) { + const s = this._api.getWidth(); const l = this._api.getHeight(); e = e || t.get('position'); const u = r.getSize(); let h = t.get('align'); let c = t.get('verticalAlign'); const p = a && a.getBoundingRect().clone(); if (a && p.applyTransform(a.transform), U(e) && (e = e([n, i], o, r.el, p, { viewSize: [s, l], contentSize: u.slice() })), Y(e)) { + n = Er(e[0], s), i = Er(e[1], l) + } + else if (q(e)) { const d = e; d.width = u[0], d.height = u[1]; const f = xp(d, { width: s, height: l }); n = f.x, i = f.y, h = null, c = null } + else if (X(e) && a) { var g = (function (t, e, n, i) { const r = n[0]; const o = n[1]; const a = Math.ceil(Math.SQRT2 * i) + 8; let s = 0; let l = 0; const u = e.width; const h = e.height; switch (t) { case 'inside':s = e.x + u / 2 - r / 2, l = e.y + h / 2 - o / 2; break; case 'top':s = e.x + u / 2 - r / 2, l = e.y - o - a; break; case 'bottom':s = e.x + u / 2 - r / 2, l = e.y + h + a; break; case 'left':s = e.x - r - a, l = e.y + h / 2 - o / 2; break; case 'right':s = e.x + u + a, l = e.y + h / 2 - o / 2 } return [s, l] }(e, p, u, t.get('borderWidth'))); n = g[0], i = g[1] } + else { + g = (function (t, e, n, i, r, o, a) { const s = n.getSize(); const l = s[0]; const u = s[1]; return o != null && (t + l + o + 2 > i ? t -= l + o : t += o), a != null && (e + u + a > r ? e -= u + a : e += a), [t, e] }(n, i, r, s, l, h ? null : 20, c ? null : 20)), n = g[0], i = g[1] + }h && (n -= qz(h) ? u[0] / 2 : h === 'right' ? u[0] : 0), c && (i -= qz(c) ? u[1] / 2 : c === 'bottom' ? u[1] : 0), kz(t) && (g = (function (t, e, n, i, r) { const o = n.getSize(); const a = o[0]; const s = o[1]; return t = Math.min(t + a, i) - a, e = Math.min(e + s, r) - s, [t = Math.max(t, 0), e = Math.max(e, 0)] }(n, i, r, s, l)), n = g[0], i = g[1]), r.moveTo(n, i) + }, e.prototype._updateContentNotChangedOnAxis = function (t, e) { const n = this._lastDataByCoordSys; const i = this._cbParamsList; let r = !!n && n.length === t.length; return r && E(n, (n, o) => { const a = n.dataByAxis || []; const s = (t[o] || {}).dataByAxis || []; (r = r && a.length === s.length) && E(a, (t, n) => { const o = s[n] || {}; const a = t.seriesDataIndices || []; const l = o.seriesDataIndices || []; (r = r && t.value === o.value && t.axisType === o.axisType && t.axisId === o.axisId && a.length === l.length) && E(a, (t, e) => { const n = l[e]; r = r && t.seriesIndex === n.seriesIndex && t.dataIndex === n.dataIndex }), i && E(t.seriesDataIndices, (t) => { const n = t.seriesIndex; const o = e[n]; const a = i[n]; o && a && a.data !== o.data && (r = !1) }) }) }), this._lastDataByCoordSys = t, this._cbParamsList = e, !!r }, e.prototype._hide = function (t) { this._lastDataByCoordSys = null, t({ type: 'hideTip', from: this.uid }) }, e.prototype.dispose = function (t, e) { !r.node && e.getDom() && (kg(this, '_updatePosition'), this._tooltipContent.dispose(), QR('itemTooltip', e)) }, e.type = 'tooltip', e + }(gg)); function Zz(t, e, n) { let i; const r = e.ecModel; n ? (i = new dc(n, r, r), i = new dc(e.option, i, r)) : i = e; for (let o = t.length - 1; o >= 0; o--) { let a = t[o]; a && (a instanceof dc && (a = a.get('tooltip', !0)), X(a) && (a = { formatter: a }), a && (i = new dc(a, i, r))) } return i } function jz(t, e) { return t.dispatchAction || W(e.dispatchAction, e) } function qz(t) { return t === 'center' || t === 'middle' } const Kz = ['rect', 'polygon', 'keep', 'clear']; function $z(t, e) { const n = ho(t ? t.brush : []); if (n.length) { let i = []; E(n, (t) => { const e = t.hasOwnProperty('toolbox') ? t.toolbox : []; Array.isArray(e) && (i = i.concat(e)) }); let r = t && t.toolbox; Y(r) && (r = r[0]), r || (r = { feature: {} }, t.toolbox = [r]); const o = r.feature || (r.feature = {}); const a = o.brush || (o.brush = {}); const s = a.type || (a.type = []); s.push.apply(s, i), (function (t) { const e = {}; E(t, (t) => { e[t] = 1 }), t.length = 0, E(e, (e, n) => { t.push(n) }) }(s)), e && !s.length && s.push.apply(s, Kz) } } const Jz = E; function Qz(t) { + if (t) { + for (const e in t) { + if (t.hasOwnProperty(e)) + return !0 + } + } + } function tV(t, e, n) { const i = {}; return Jz(e, (e) => { let r; const o = i[e] = ((r = function () {}).prototype.__hidden = r.prototype, new r()); Jz(t[e], (t, i) => { if (iD.isValidType(i)) { let r = { type: i, visual: t }; n && n(r, e), o[i] = new iD(r), i === 'opacity' && ((r = T(r)).type = 'colorAlpha', o.__hidden.__alphaForOpacity = new iD(r)) } }) }), i } function eV(t, e, n) { let i; E(n, (t) => { e.hasOwnProperty(t) && Qz(e[t]) && (i = !0) }), i && E(n, (n) => { e.hasOwnProperty(n) && Qz(e[n]) ? t[n] = T(e[n]) : delete t[n] }) } const nV = { lineX: iV(0), lineY: iV(1), rect: { point(t, e, n) { return t && n.boundingRect.contain(t[0], t[1]) }, rect(t, e, n) { return t && n.boundingRect.intersect(t) } }, polygon: { point(t, e, n) { return t && n.boundingRect.contain(t[0], t[1]) && y_(n.range, t[0], t[1]) }, rect(t, e, n) { + const i = n.range; if (!t || i.length <= 1) + return !1; const r = t.x; const o = t.y; const a = t.width; const s = t.height; const l = i[0]; return !!(y_(i, r, o) || y_(i, r + a, o) || y_(i, r, o + s) || y_(i, r + a, o + s) || sr.create(t).contain(l[0], l[1]) || Oh(r, o, r + a, o, i) || Oh(r, o, r, o + s, i) || Oh(r + a, o, r + a, o + s, i) || Oh(r, o + s, r + a, o + s, i)) || void 0 + } } }; function iV(t) { const e = ['x', 'y']; const n = ['width', 'height']; return { point(e, n, i) { if (e) { const r = i.range; return rV(e[t], r) } }, rect(i, r, o) { if (i) { const a = o.range; const s = [i[e[t]], i[e[t]] + i[n[t]]]; return s[1] < s[0] && s.reverse(), rV(s[0], a) || rV(s[1], a) || rV(a[0], s) || rV(a[1], s) } } } } function rV(t, e) { return e[0] <= t && t <= e[1] } const oV = ['inBrush', 'outOfBrush']; const sV = '__ecInBrushSelectEvent'; function lV(t) { t.eachComponent({ mainType: 'brush' }, (e) => { (e.brushTargetManager = new cz(e.option, t)).setInputRanges(e.areas, t) }) } function uV(t, e, n) { + let i; let r; const o = []; t.eachComponent({ mainType: 'brush' }, (t) => { n && n.type === 'takeGlobalCursor' && t.setBrushOption(n.key === 'brush' ? n.brushOption : { brushType: !1 }) }), lV(t), t.eachComponent({ mainType: 'brush' }, (e, n) => { + const a = { brushId: e.id, brushIndex: n, brushName: e.name, areas: T(e.areas), selected: [] }; o.push(a); const s = e.option; const l = s.brushLink; const u = []; const h = []; const c = []; let p = !1; n || (i = s.throttleType, r = s.throttleDelay); const d = z(e.areas, (t) => { const e = pV[t.brushType]; const n = k({ boundingRect: e ? e(t) : void 0 }, t); return n.selectors = (function (t) { const e = t.brushType; var n = { point(i) { return nV[e].point(i, n, t) }, rect(i) { return nV[e].rect(i, n, t) } }; return n }(n)), n }); const f = tV(e.option, oV, (t) => { t.mappingMethod = 'fixed' }); function g(t) { return l === 'all' || !!u[t] } function y(t) { return !!t.length }Y(l) && E(l, (t) => { u[t] = 1 }), t.eachSeries((n, i) => { const r = c[i] = []; n.subType === 'parallel' ? (function (t, e) { const n = t.coordinateSystem; p = p || n.hasAxisBrushed(), g(e) && n.eachActiveState(t.getData(), (t, e) => { t === 'active' && (h[e] = 1) }) }(n, i)) : (function (n, i, r) { if (n.brushSelector && !(function (t, e) { const n = t.option.seriesIndex; return n != null && n !== 'all' && (Y(n) ? P(n, e) < 0 : e !== n) }(e, i)) && (E(d, (i) => { e.brushTargetManager.controlSeries(i, n, t) && r.push(i), p = p || y(r) }), g(i) && y(r))) { const o = n.getData(); o.each((t) => { cV(n, r, o, t) && (h[t] = 1) }) } }(n, i, r)) }), t.eachSeries((t, e) => { + const n = { seriesId: t.id, seriesIndex: e, seriesName: t.name, dataIndex: [] }; a.selected.push(n); const i = c[e]; const r = t.getData(); const o = g(e) ? function (t) { return h[t] ? (n.dataIndex.push(r.getRawIndex(t)), 'inBrush') : 'outOfBrush' } : function (e) { return cV(t, i, r, e) ? (n.dataIndex.push(r.getRawIndex(e)), 'inBrush') : 'outOfBrush' }; (g(e) ? p : y(i)) && (function (t, e, n, i, r, o) { + let a; const s = {}; function l(t) { return fy(n, a, t) } function u(t, e) { yy(n, a, t, e) } function h(t, h) { + a = t; const c = n.getRawDataItem(a); if (!c || !1 !== c.visualMap) { + for (let p = i.call(undefined, t), d = e[p], f = s[p], g = 0, y = f.length; g < y; g++) { const v = f[g]; d[v] && d[v].applyVisual(t, l, u) } + } + }E(t, (t) => { const n = iD.prepareVisualTypes(e[t]); s[t] = n }), n.each(h) + }(oV, f, r, o)) + }) + }), (function (t, e, n, i, r) { if (r) { const o = t.getZr(); o[sV] || (o.__ecBrushSelect || (o.__ecBrushSelect = hV), Ag(o, '__ecBrushSelect', n, e)(t, i)) } }(e, i, r, o, n)) + } function hV(t, e) { if (!t.isDisposed()) { const n = t.getZr(); n[sV] = !0, t.dispatchAction({ type: 'brushSelect', batch: e }), n[sV] = !1 } } function cV(t, e, n, i) { + for (let r = 0, o = e.length; r < o; r++) { + const a = e[r]; if (t.brushSelector(i, n, a.selectors, a)) + return !0 + } + } var pV = { rect(t) { return dV(t.range) }, polygon(t) { for (var e, n = t.range, i = 0, r = n.length; i < r; i++) { e = e || [[1 / 0, -1 / 0], [1 / 0, -1 / 0]]; const o = n[i]; o[0] < e[0][0] && (e[0][0] = o[0]), o[0] > e[0][1] && (e[0][1] = o[0]), o[1] < e[1][0] && (e[1][0] = o[1]), o[1] > e[1][1] && (e[1][1] = o[1]) } return e && dV(e) } }; function dV(t) { return new sr(t[0][0], t[1][0], t[0][1] - t[0][0], t[1][1] - t[1][0]) } const fV = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function (t, e) { this.ecModel = t, this.api = e, this.model, (this._brushController = new Ok(e.getZr())).on('brush', W(this._onBrush, this)).mount() }, e.prototype.render = function (t, e, n, i) { this.model = t, this._updateController(t, e, n, i) }, e.prototype.updateTransform = function (t, e, n, i) { lV(e), this._updateController(t, e, n, i) }, e.prototype.updateVisual = function (t, e, n, i) { this.updateTransform(t, e, n, i) }, e.prototype.updateView = function (t, e, n, i) { this._updateController(t, e, n, i) }, e.prototype._updateController = function (t, e, n, i) { (!i || i.$from !== t.id) && this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice()) }, e.prototype.dispose = function () { this._brushController.dispose() }, e.prototype._onBrush = function (t) { const e = this.model.id; const n = this.model.brushTargetManager.setOutputRanges(t.areas, this.ecModel); (!t.isEnd || t.removeOnClick) && this.api.dispatchAction({ type: 'brush', brushId: e, areas: T(n), $from: e }), t.isEnd && this.api.dispatchAction({ type: 'brushEnd', brushId: e, areas: T(n), $from: e }) }, e.type = 'brush', e }(gg)); const gV = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.areas = [], n.brushOption = {}, n } return n(e, t), e.prototype.optionUpdated = function (t, e) { const n = this.option; !e && eV(n, t, ['inBrush', 'outOfBrush']); const i = n.inBrush = n.inBrush || {}; n.outOfBrush = n.outOfBrush || { color: '#ddd' }, i.hasOwnProperty('liftZ') || (i.liftZ = 5) }, e.prototype.setAreas = function (t) { t && (this.areas = z(t, function (t) { return yV(this.option, t) }, this)) }, e.prototype.setBrushOption = function (t) { this.brushOption = yV(this.option, t), this.brushType = this.brushOption.brushType }, e.type = 'brush', e.dependencies = ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'], e.defaultOption = { seriesIndex: 'all', brushType: 'rect', brushMode: 'single', transformable: !0, brushStyle: { borderWidth: 1, color: 'rgba(210,219,238,0.3)', borderColor: '#D2DBEE' }, throttleType: 'fixRate', throttleDelay: 0, removeOnClick: !0, z: 1e4 }, e }(Tp)); function yV(t, e) { return C({ brushType: t.brushType, brushMode: t.brushMode, transformable: t.transformable, brushStyle: new dc(t.brushStyle).getItemStyle(), removeOnClick: t.removeOnClick, z: t.z }, e, !0) } const vV = ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear']; const mV = (function (t) { function e() { return t !== null && t.apply(this, arguments) || this } return n(e, t), e.prototype.render = function (t, e, n) { let i, r, o; e.eachComponent({ mainType: 'brush' }, (t) => { i = t.brushType, r = t.brushOption.brushMode || 'single', o = o || !!t.areas.length }), this._brushType = i, this._brushMode = r, E(t.get('type', !0), (e) => { t.setIconStatus(e, (e === 'keep' ? r === 'multiple' : e === 'clear' ? o : e === i) ? 'emphasis' : 'normal') }) }, e.prototype.updateView = function (t, e, n) { this.render(t, e, n) }, e.prototype.getIcons = function () { const t = this.model; const e = t.get('icon', !0); const n = {}; return E(t.get('type', !0), (t) => { e[t] && (n[t] = e[t]) }), n }, e.prototype.onclick = function (t, e, n) { const i = this._brushType; const r = this._brushMode; n === 'clear' ? (e.dispatchAction({ type: 'axisAreaSelect', intervals: [] }), e.dispatchAction({ type: 'brush', command: 'clear', areas: [] })) : e.dispatchAction({ type: 'takeGlobalCursor', key: 'brush', brushOption: { brushType: n === 'keep' ? i : i !== n && n, brushMode: n === 'keep' ? r === 'multiple' ? 'single' : 'multiple' : r } }) }, e.getDefaultOption = function (t) { return { show: !0, type: vV.slice(), icon: { rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13', polygon: 'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2', lineX: 'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4', lineY: 'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4', keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z', clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2' }, title: t.getLocaleModel().get(['toolbox', 'brush', 'title']) } }, e }(GE)); const xV = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.layoutMode = { type: 'box', ignoreSize: !0 }, n } return n(e, t), e.type = 'title', e.defaultOption = { z: 6, show: !0, text: '', target: 'blank', subtext: '', subtarget: 'blank', left: 0, top: 0, backgroundColor: 'rgba(0,0,0,0)', borderColor: '#ccc', borderWidth: 0, padding: 5, itemGap: 10, textStyle: { fontSize: 18, fontWeight: 'bold', color: '#464646' }, subtextStyle: { fontSize: 12, color: '#6E7079' } }, e }(Tp)); const _V = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.render = function (t, e, n) { if (this.group.removeAll(), t.get('show')) { const i = this.group; const r = t.getModel('textStyle'); const o = t.getModel('subtextStyle'); let a = t.get('textAlign'); let s = rt(t.get('textBaseline'), t.get('textVerticalAlign')); const l = new ks({ style: Uh(r, { text: t.get('text'), fill: r.getTextColor() }, { disableBox: !0 }), z2: 10 }); const u = l.getBoundingRect(); const h = t.get('subtext'); const c = new ks({ style: Uh(o, { text: h, fill: o.getTextColor(), y: u.height + t.get('itemGap'), verticalAlign: 'top' }, { disableBox: !0 }), z2: 10 }); const p = t.get('link'); const d = t.get('sublink'); const f = t.get('triggerEvent', !0); l.silent = !p && !f, c.silent = !d && !f, p && l.on('click', () => { dp(p, `_${ t.get('target')}`) }), d && c.on('click', () => { dp(d, `_${ t.get('subtarget')}`) }), Hs(l).eventData = Hs(c).eventData = f ? { componentType: 'title', componentIndex: t.componentIndex } : null, i.add(l), h && i.add(c); let g = i.getBoundingRect(); const y = t.getBoxLayoutParams(); y.width = g.width, y.height = g.height; const v = xp(y, { width: n.getWidth(), height: n.getHeight() }, t.get('padding')); a || ((a = t.get('left') || t.get('right')) === 'middle' && (a = 'center'), a === 'right' ? v.x += v.width : a === 'center' && (v.x += v.width / 2)), s || ((s = t.get('top') || t.get('bottom')) === 'center' && (s = 'middle'), s === 'bottom' ? v.y += v.height : s === 'middle' && (v.y += v.height / 2), s = s || 'top'), i.x = v.x, i.y = v.y, i.markRedraw(); const m = { align: a, verticalAlign: s }; l.setStyle(m), c.setStyle(m), g = i.getBoundingRect(); const x = v.margin; const _ = t.getItemStyle(['color', 'opacity']); _.fill = t.get('backgroundColor'); const b = new Cs({ shape: { x: g.x - x[3], y: g.y - x[0], width: g.width + x[1] + x[3], height: g.height + x[0] + x[2], r: t.get('borderRadius') }, style: _, subPixelOptimize: !0, silent: !0 }); i.add(b) } }, e.type = 'title', e }(gg)); const bV = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.layoutMode = 'box', n } return n(e, t), e.prototype.init = function (t, e, n) { this.mergeDefaultAndTheme(t, n), this._initData() }, e.prototype.mergeOption = function (e) { t.prototype.mergeOption.apply(this, arguments), this._initData() }, e.prototype.setCurrentIndex = function (t) { t == null && (t = this.option.currentIndex); const e = this._data.count(); this.option.loop ? t = (t % e + e) % e : (t >= e && (t = e - 1), t < 0 && (t = 0)), this.option.currentIndex = t }, e.prototype.getCurrentIndex = function () { return this.option.currentIndex }, e.prototype.isIndexMax = function () { return this.getCurrentIndex() >= this._data.count() - 1 }, e.prototype.setPlayState = function (t) { this.option.autoPlay = !!t }, e.prototype.getPlayState = function () { return !!this.option.autoPlay }, e.prototype._initData = function () { let t; const e = this.option; const n = e.data || []; const i = e.axisType; const r = this._names = []; i === 'category' ? (t = [], E(n, (e, n) => { let i; const o = xo(fo(e), ''); q(e) ? (i = T(e)).value = n : i = n, t.push(i), r.push(o) })) : t = n; const o = { category: 'ordinal', time: 'time', value: 'number' }[i] || 'number'; (this._data = new qm([{ name: 'value', type: o }], this)).initData(t, r) }, e.prototype.getData = function () { return this._data }, e.prototype.getCategories = function () { + if (this.get('axisType') === 'category') + return this._names.slice() + }, e.type = 'timeline', e.defaultOption = { z: 4, show: !0, axisType: 'time', realtime: !0, left: '20%', top: null, right: '20%', bottom: 0, width: null, height: 40, padding: 5, controlPosition: 'left', autoPlay: !1, rewind: !1, loop: !0, playInterval: 2e3, currentIndex: 0, itemStyle: {}, label: { color: '#000' }, data: [] }, e + }(Tp)); const wV = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'timeline.slider', e.defaultOption = yc(bV.defaultOption, { backgroundColor: 'rgba(0,0,0,0)', borderColor: '#ccc', borderWidth: 0, orient: 'horizontal', inverse: !1, tooltip: { trigger: 'item' }, symbol: 'circle', symbolSize: 12, lineStyle: { show: !0, width: 2, color: '#DAE1F5' }, label: { position: 'auto', show: !0, interval: 'auto', rotate: 0, color: '#A4B1D7' }, itemStyle: { color: '#A4B1D7', borderWidth: 1 }, checkpointStyle: { symbol: 'circle', symbolSize: 15, color: '#316bf3', borderColor: '#fff', borderWidth: 2, shadowBlur: 2, shadowOffsetX: 1, shadowOffsetY: 1, shadowColor: 'rgba(0, 0, 0, 0.3)', animation: !0, animationDuration: 300, animationEasing: 'quinticInOut' }, controlStyle: { show: !0, showPlayBtn: !0, showPrevBtn: !0, showNextBtn: !0, itemSize: 24, itemGap: 12, position: 'left', playIcon: 'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z', stopIcon: 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z', nextIcon: 'M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z', prevIcon: 'M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z', prevBtnSize: 18, nextBtnSize: 18, color: '#A4B1D7', borderColor: '#A4B1D7', borderWidth: 1 }, emphasis: { label: { show: !0, color: '#6f778d' }, itemStyle: { color: '#316BF3' }, controlStyle: { color: '#316BF3', borderColor: '#316BF3', borderWidth: 2 } }, progress: { lineStyle: { color: '#316BF3' }, itemStyle: { color: '#316BF3' }, label: { color: '#6f778d' } }, data: [] }), e }(bV)); R(wV, lf.prototype); const SV = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'timeline', e }(gg)); const MV = (function (t) { function e(e, n, i, r) { const o = t.call(this, e, n, i) || this; return o.type = r || 'value', o } return n(e, t), e.prototype.getLabelModel = function () { return this.model.getModel('label') }, e.prototype.isHorizontal = function () { return this.model.get('orient') === 'horizontal' }, e }(H_)); const IV = Math.PI; const TV = So(); const CV = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function (t, e) { this.api = e }, e.prototype.render = function (t, e, n) { if (this.model = t, this.api = n, this.ecModel = e, this.group.removeAll(), t.get('show', !0)) { const i = this._layout(t, n); const r = this._createGroup('_mainGroup'); const o = this._createGroup('_labelGroup'); const a = this._axis = this._createAxis(i, t); t.formatTooltip = function (t) { return Xf('nameValue', { noName: !0, value: a.scale.getLabel({ value: t }) }) }, E(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (e) { this[`_render${e}`](i, r, a, t) }, this), this._renderAxisLabel(i, o, a, t), this._position(i, t) } this._doPlayStop(), this._updateTicksStatus() }, e.prototype.remove = function () { this._clearTimer(), this.group.removeAll() }, e.prototype.dispose = function () { this._clearTimer() }, e.prototype._layout = function (t, e) { let n; let i; let r; let o; const a = t.get(['label', 'position']); const s = t.get('orient'); const l = (function (t, e) { return xp(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }, t.get('padding')) }(t, e)); const u = { horizontal: 'center', vertical: (n = a == null || a === 'auto' ? s === 'horizontal' ? l.y + l.height / 2 < e.getHeight() / 2 ? '-' : '+' : l.x + l.width / 2 < e.getWidth() / 2 ? '+' : '-' : X(a) ? { horizontal: { top: '-', bottom: '+' }, vertical: { left: '-', right: '+' } }[s][a] : a) >= 0 || n === '+' ? 'left' : 'right' }; const h = { horizontal: n >= 0 || n === '+' ? 'top' : 'bottom', vertical: 'middle' }; const c = { horizontal: 0, vertical: IV / 2 }; const p = s === 'vertical' ? l.height : l.width; const d = t.getModel('controlStyle'); const f = d.get('show', !0); const g = f ? d.get('itemSize') : 0; const y = f ? d.get('itemGap') : 0; const v = g + y; let m = t.get(['label', 'rotate']) || 0; m = m * IV / 180; const x = d.get('position', !0); const _ = f && d.get('showPlayBtn', !0); const b = f && d.get('showPrevBtn', !0); const w = f && d.get('showNextBtn', !0); let S = 0; let M = p; x === 'left' || x === 'bottom' ? (_ && (i = [0, 0], S += v), b && (r = [S, 0], S += v), w && (o = [M - g, 0], M -= v)) : (_ && (i = [M - g, 0], M -= v), b && (r = [0, 0], S += v), w && (o = [M - g, 0], M -= v)); const I = [S, M]; return t.get('inverse') && I.reverse(), { viewRect: l, mainLength: p, orient: s, rotation: c[s], labelRotation: m, labelPosOpt: n, labelAlign: t.get(['label', 'align']) || u[s], labelBaseline: t.get(['label', 'verticalAlign']) || t.get(['label', 'baseline']) || h[s], playPosition: i, prevBtnPosition: r, nextBtnPosition: o, axisExtent: I, controlSize: g, controlGap: y } }, e.prototype._position = function (t, e) { const n = this._mainGroup; const i = this._labelGroup; let r = t.viewRect; if (t.orient === 'vertical') { const o = [1, 0, 0, 1, 0, 0]; const a = r.x; const s = r.y + r.height; Ei(o, o, [-a, -s]), zi(o, o, -IV / 2), Ei(o, o, [a, s]), (r = r.clone()).applyTransform(o) } const l = y(r); const u = y(n.getBoundingRect()); const h = y(i.getBoundingRect()); const c = [n.x, n.y]; const p = [i.x, i.y]; p[0] = c[0] = l[0][0]; let d; const f = t.labelPosOpt; function g(t) { t.originX = l[0][0] - t.x, t.originY = l[1][0] - t.y } function y(t) { return [[t.x, t.x + t.width], [t.y, t.y + t.height]] } function v(t, e, n, i, r) { t[i] += n[i][r] - e[i][r] }f == null || X(f) ? (v(c, u, l, 1, d = f === '+' ? 0 : 1), v(p, h, l, 1, 1 - d)) : (v(c, u, l, 1, d = f >= 0 ? 0 : 1), p[1] = c[1] + f), n.setPosition(c), i.setPosition(p), n.rotation = i.rotation = t.rotation, g(n), g(i) }, e.prototype._createAxis = function (t, e) { + const n = e.getData(); const i = e.get('axisType'); const r = (function (t, e) { + if (e = e || t.get('type')) + switch (e) { case 'category':return new vx({ ordinalMeta: t.getCategories(), extent: [1 / 0, -1 / 0] }); case 'time':return new Rx({ locale: t.ecModel.getLocaleModel(), useUTC: t.ecModel.get('useUTC') }); default:return new xx() } + }(e, i)); r.getTicks = function () { return n.mapArray(['value'], (t) => { return { value: t } }) }; const o = n.getDataExtent('value'); r.setExtent(o[0], o[1]), r.calcNiceTicks(); const a = new MV('value', r, t.axisExtent, i); return a.model = e, a + }, e.prototype._createGroup = function (t) { const e = this[t] = new Cr(); return this.group.add(e), e }, e.prototype._renderAxisLine = function (t, e, n, i) { const r = n.getExtent(); if (i.get(['lineStyle', 'show'])) { const o = new zu({ shape: { x1: r[0], y1: 0, x2: r[1], y2: 0 }, style: A({ lineCap: 'round' }, i.getModel('lineStyle').getLineStyle()), silent: !0, z2: 1 }); e.add(o); const a = this._progressLine = new zu({ shape: { x1: r[0], x2: this._currentPointer ? this._currentPointer.x : r[0], y1: 0, y2: 0 }, style: k({ lineCap: 'round', lineWidth: o.style.lineWidth }, i.getModel(['progress', 'lineStyle']).getLineStyle()), silent: !0, z2: 1 }); e.add(a) } }, e.prototype._renderAxisTick = function (t, e, n, i) { const r = this; const o = i.getData(); const a = n.scale.getTicks(); this._tickSymbols = [], E(a, (t) => { const a = n.dataToCoord(t.value); const s = o.getItemModel(t.value); const l = s.getModel('itemStyle'); const u = s.getModel(['emphasis', 'itemStyle']); const h = s.getModel(['progress', 'itemStyle']); const c = { x: a, y: 0, onclick: W(r._changeTimeline, r, t.value) }; const p = DV(s, l, e, c); p.ensureState('emphasis').style = u.getItemStyle(), p.ensureState('progress').style = h.getItemStyle(), Ol(p); const d = Hs(p); s.get('tooltip') ? (d.dataIndex = t.value, d.dataModel = i) : d.dataIndex = d.dataModel = null, r._tickSymbols.push(p) }) }, e.prototype._renderAxisLabel = function (t, e, n, i) { const r = this; if (n.getLabelModel().get('show')) { const o = i.getData(); const a = n.getViewLabels(); this._tickLabels = [], E(a, (i) => { const a = i.tickValue; const s = o.getItemModel(a); const l = s.getModel('label'); const u = s.getModel(['emphasis', 'label']); const h = s.getModel(['progress', 'label']); const c = n.dataToCoord(i.tickValue); const p = new ks({ x: c, y: 0, rotation: t.labelRotation - t.rotation, onclick: W(r._changeTimeline, r, a), silent: !1, style: Uh(l, { text: i.formattedLabel, align: t.labelAlign, verticalAlign: t.labelBaseline }) }); p.ensureState('emphasis').style = Uh(u), p.ensureState('progress').style = Uh(h), e.add(p), Ol(p), TV(p).dataIndex = a, r._tickLabels.push(p) }) } }, e.prototype._renderControl = function (t, e, n, i) { const r = t.controlSize; const o = t.rotation; const a = i.getModel('controlStyle').getItemStyle(); const s = i.getModel(['emphasis', 'controlStyle']).getItemStyle(); const l = i.getPlayState(); const u = i.get('inverse', !0); function h(t, n, l, u) { if (t) { const h = gr(rt(i.get(['controlStyle', `${n}BtnSize`]), r), r); const c = (function (t, e, n, i) { const r = i.style; const o = Ph(t.get(['controlStyle', e]), i || {}, new sr(n[0], n[1], n[2], n[3])); return r && o.setStyle(r), o }(i, `${n}Icon`, [0, -h / 2, h, h], { x: t[0], y: t[1], originX: r / 2, originY: 0, rotation: u ? -o : 0, rectHover: !0, style: a, onclick: l })); c.ensureState('emphasis').style = s, e.add(c), Ol(c) } }h(t.nextBtnPosition, 'next', W(this._changeTimeline, this, u ? '-' : '+')), h(t.prevBtnPosition, 'prev', W(this._changeTimeline, this, u ? '+' : '-')), h(t.playPosition, l ? 'stop' : 'play', W(this._handlePlayClick, this, !l), !0) }, e.prototype._renderCurrentPointer = function (t, e, n, i) { const r = i.getData(); const o = i.getCurrentIndex(); const a = r.getItemModel(o).getModel('checkpointStyle'); const s = this; const l = { onCreate(t) { t.draggable = !0, t.drift = W(s._handlePointerDrag, s), t.ondragend = W(s._handlePointerDragend, s), AV(t, s._progressLine, o, n, i, !0) }, onUpdate(t) { AV(t, s._progressLine, o, n, i) } }; this._currentPointer = DV(a, a, this._mainGroup, {}, this._currentPointer, l) }, e.prototype._handlePlayClick = function (t) { this._clearTimer(), this.api.dispatchAction({ type: 'timelinePlayChange', playState: t, from: this.uid }) }, e.prototype._handlePointerDrag = function (t, e, n) { this._clearTimer(), this._pointerChangeTimeline([n.offsetX, n.offsetY]) }, e.prototype._handlePointerDragend = function (t) { this._pointerChangeTimeline([t.offsetX, t.offsetY], !0) }, e.prototype._pointerChangeTimeline = function (t, e) { let n = this._toAxisCoord(t)[0]; const i = Vr(this._axis.getExtent().slice()); n > i[1] && (n = i[1]), n < i[0] && (n = i[0]), this._currentPointer.x = n, this._currentPointer.markRedraw(), this._progressLine.shape.x2 = n, this._progressLine.dirty(); const r = this._findNearestTick(n); const o = this.model; (e || r !== o.getCurrentIndex() && o.get('realtime')) && this._changeTimeline(r) }, e.prototype._doPlayStop = function () { const t = this; this._clearTimer(), this.model.getPlayState() && (this._timer = setTimeout(() => { const e = t.model; t._changeTimeline(e.getCurrentIndex() + (e.get('rewind', !0) ? -1 : 1)) }, this.model.get('playInterval'))) }, e.prototype._toAxisCoord = function (t) { return Th(t, this._mainGroup.getLocalTransform(), !0) }, e.prototype._findNearestTick = function (t) { let e; const n = this.model.getData(); let i = 1 / 0; const r = this._axis; return n.each(['value'], (n, o) => { const a = r.dataToCoord(n); const s = Math.abs(a - t); s < i && (i = s, e = o) }), e }, e.prototype._clearTimer = function () { this._timer && (clearTimeout(this._timer), this._timer = null) }, e.prototype._changeTimeline = function (t) { const e = this.model.getCurrentIndex(); t === '+' ? t = e + 1 : t === '-' && (t = e - 1), this.api.dispatchAction({ type: 'timelineChange', currentIndex: t, from: this.uid }) }, e.prototype._updateTicksStatus = function () { + const t = this.model.getCurrentIndex(); const e = this._tickSymbols; const n = this._tickLabels; if (e) { + for (var i = 0; i < e.length; i++)e && e[i] && e[i].toggleState('progress', i < t) + } if (n) { + for (i = 0; i < n.length; i++)n && n[i] && n[i].toggleState('progress', TV(n[i]).dataIndex <= t) + } + }, e.type = 'timeline.slider', e + }(SV)); function DV(t, e, n, i, r, o) { const a = e.get('color'); r ? (r.setColor(a), n.add(r), o && o.onUpdate(r)) : ((r = Ly(t.get('symbol'), -1, -1, 2, 2, a)).setStyle('strokeNoScale', !0), n.add(r), o && o.onCreate(r)); const s = e.getItemStyle(['color']); r.setStyle(s), i = C({ rectHover: !0, z2: 100 }, i, !0); const l = Py(t.get('symbolSize')); i.scaleX = l[0] / 2, i.scaleY = l[1] / 2; const u = Oy(t.get('symbolOffset'), l); u && (i.x = (i.x || 0) + u[0], i.y = (i.y || 0) + u[1]); const h = t.get('symbolRotate'); return i.rotation = (h || 0) * Math.PI / 180 || 0, r.attr(i), r.updateTransform(), r } function AV(t, e, n, i, r, o) { + if (!t.dragging) { + const a = r.getModel('checkpointStyle'); const s = i.dataToCoord(r.getData().get('value', n)); if (o || !a.get('animation', !0)) { + t.attr({ x: s, y: 0 }), e && e.attr({ shape: { x2: s } }) + } + else { const l = { duration: a.get('animationDuration', !0), easing: a.get('animationEasing', !0) }; t.stopAnimation(null, !0), t.animateTo({ x: s, y: 0 }, l), e && e.animateTo({ shape: { x2: s } }, l) } + } + } function kV(t) { let e = t && t.timeline; Y(e) || (e = e ? [e] : []), E(e, (t) => { t && (function (t) { const e = t.type; const n = { number: 'value', time: 'time' }; if (n[e] && (t.axisType = n[e], delete t.type), LV(t), PV(t, 'controlPosition')) { const i = t.controlStyle || (t.controlStyle = {}); PV(i, 'position') || (i.position = t.controlPosition), i.position !== 'none' || PV(i, 'show') || (i.show = !1, delete i.position), delete t.controlPosition }E(t.data || [], (t) => { q(t) && !Y(t) && (!PV(t, 'value') && PV(t, 'name') && (t.value = t.name), LV(t)) }) }(t)) }) } function LV(t) { const e = t.itemStyle || (t.itemStyle = {}); const n = e.emphasis || (e.emphasis = {}); const i = t.label || t.label || {}; const r = i.normal || (i.normal = {}); const o = { normal: 1, emphasis: 1 }; E(i, (t, e) => { o[e] || PV(r, e) || (r[e] = t) }), n.label && !PV(i, 'emphasis') && (i.emphasis = n.label, delete n.label) } function PV(t, e) { return t.hasOwnProperty(e) } function OV(t, e) { + if (!t) + return !1; for (let n = Y(t) ? t : [t], i = 0; i < n.length; i++) { + if (n[i] && n[i][e]) + return !0 + } return !1 + } function RV(t) { co(t, 'label', ['show']) } const NV = So(); const EV = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.createdBySelf = !1, n } return n(e, t), e.prototype.init = function (t, e, n) { this.mergeDefaultAndTheme(t, n), this._mergeOption(t, n, !1, !0) }, e.prototype.isAnimationEnabled = function () { + if (r.node) + return !1; const t = this.__hostSeries; return this.getShallow('animation') && t && t.isAnimationEnabled() + }, e.prototype.mergeOption = function (t, e) { this._mergeOption(t, e, !1, !1) }, e.prototype._mergeOption = function (t, e, n, i) { const r = this.mainType; n || e.eachSeries(function (t) { const n = t.get(this.mainType, !0); let o = NV(t)[r]; n && n.data ? (o ? o._mergeOption(n, e, !0) : (i && RV(n), E(n.data, (t) => { Array.isArray(t) ? (RV(t[0]), RV(t[1])) : RV(t) }), A(o = this.createMarkerModelFromSeries(n, this, e), { mainType: this.mainType, seriesIndex: t.seriesIndex, name: t.name, createdBySelf: !0 }), o.__hostSeries = t), NV(t)[r] = o) : NV(t)[r] = null }, this) }, e.prototype.formatTooltip = function (t, e, n) { const i = this.getData(); const r = this.getRawValue(t); const o = i.getName(t); return Xf('section', { header: this.name, blocks: [Xf('nameValue', { name: o, value: r, noName: !o, noValue: r == null })] }) }, e.prototype.getData = function () { return this._data }, e.prototype.setData = function (t) { this._data = t }, e.getMarkerModelFromSeries = function (t, e) { return NV(t)[e] }, e.type = 'marker', e.dependencies = ['series', 'grid', 'polar', 'geo'], e + }(Tp)); R(EV, lf.prototype); const zV = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.createMarkerModelFromSeries = function (t, n, i) { return new e(t, n, i) }, e.type = 'markPoint', e.defaultOption = { z: 5, symbol: 'pin', symbolSize: 50, tooltip: { trigger: 'item' }, label: { show: !0, position: 'inside' }, itemStyle: { borderWidth: 2 }, emphasis: { label: { show: !0 } } }, e }(EV)); function VV(t) { return !(isNaN(Number.parseFloat(t.x)) && isNaN(Number.parseFloat(t.y))) } function BV(t, e, n, i, r, o) { const a = []; const s = nx(e, i) ? e.getCalculationInfo('stackResultDimension') : i; const l = UV(e, s, t); const u = e.indicesOfNearest(s, l)[0]; a[r] = e.get(n, u), a[o] = e.get(s, u); const h = e.get(i, u); let c = Br(e.get(i, u)); return (c = Math.min(c, 20)) >= 0 && (a[o] = +a[o].toFixed(c)), [a, h] } const FV = { min: H(BV, 'min'), max: H(BV, 'max'), average: H(BV, 'average'), median: H(BV, 'median') }; function GV(t, e) { + const n = t.getData(); const i = t.coordinateSystem; if (e && !(function (t) { return !isNaN(Number.parseFloat(t.x)) && !isNaN(Number.parseFloat(t.y)) }(e)) && !Y(e.coord) && i) { + const r = i.dimensions; const o = WV(e, n, i, t); if ((e = T(e)).type && FV[e.type] && o.baseAxis && o.valueAxis) { const a = P(r, o.baseAxis.dim); const s = P(r, o.valueAxis.dim); const l = FV[e.type](n, o.baseDataDim, o.valueDataDim, a, s); e.coord = l[0], e.value = l[1] } + else { for (var u = [e.xAxis != null ? e.xAxis : e.radiusAxis, e.yAxis != null ? e.yAxis : e.angleAxis], h = 0; h < 2; h++)FV[u[h]] && (u[h] = UV(n, n.mapDimension(r[h]), u[h])); e.coord = u } + } return e + } function WV(t, e, n, i) { const r = {}; return t.valueIndex != null || t.valueDim != null ? (r.valueDataDim = t.valueIndex != null ? e.getDimension(t.valueIndex) : t.valueDim, r.valueAxis = n.getAxis(function (t, e) { const n = t.getData().getDimensionInfo(e); return n && n.coordDim }(i, r.valueDataDim)), r.baseAxis = n.getOtherAxis(r.valueAxis), r.baseDataDim = e.mapDimension(r.baseAxis.dim)) : (r.baseAxis = i.getBaseAxis(), r.valueAxis = n.getOtherAxis(r.baseAxis), r.baseDataDim = e.mapDimension(r.baseAxis.dim), r.valueDataDim = e.mapDimension(r.valueAxis.dim)), r } function HV(t, e) { return !(t && t.containData && e.coord && !VV(e)) || t.containData(e.coord) } function YV(t, e) { return t ? function (t, n, i, r) { return df(r < 2 ? t.coord && t.coord[r] : t.value, e[r]) } : function (t, n, i, r) { return df(t.value, e[r]) } } function UV(t, e, n) { if (n === 'average') { let i = 0; let r = 0; return t.each(e, (t, e) => { isNaN(t) || (i += t, r++) }), i / r } return n === 'median' ? t.getMedian(e) : t.getDataExtent(e)[n === 'max' ? 1 : 0] } const XV = So(); const ZV = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.init = function () { this.markerGroupMap = ft() }, e.prototype.render = function (t, e, n) { const i = this; const r = this.markerGroupMap; r.each((t) => { XV(t).keep = !1 }), e.eachSeries((t) => { const r = EV.getMarkerModelFromSeries(t, i.type); r && i.renderSeries(t, r, e, n) }), r.each((t) => { !XV(t).keep && i.group.remove(t.group) }) }, e.prototype.markKeep = function (t) { XV(t).keep = !0 }, e.prototype.toggleBlurSeries = function (t, e) { const n = this; E(t, (t) => { const i = EV.getMarkerModelFromSeries(t, n.type); i && i.getData().eachItemGraphicEl((t) => { t && (e ? wl(t) : Sl(t)) }) }) }, e.type = 'marker', e }(gg)); function jV(t, e, n) { + const i = e.coordinateSystem; t.each((r) => { + let o; const a = t.getItemModel(r); const s = Er(a.get('x'), n.getWidth()); const l = Er(a.get('y'), n.getHeight()); if (isNaN(s) || isNaN(l)) { + if (e.getMarkerPosition) { + o = e.getMarkerPosition(t.getValues(t.dimensions, r)) + } + else if (i) { const u = t.get(i.dimensions[0], r); const h = t.get(i.dimensions[1], r); o = i.dataToPoint([u, h]) } + } + else { + o = [s, l] + }isNaN(s) || (o[0] = s), isNaN(l) || (o[1] = l), t.setItemLayout(r, o) + }) + } const qV = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.updateTransform = function (t, e, n) { e.eachSeries(function (t) { const e = EV.getMarkerModelFromSeries(t, 'markPoint'); e && (jV(e.getData(), t, n), this.markerGroupMap.get(t.id).updateLayout()) }, this) }, e.prototype.renderSeries = function (t, e, n, i) { const r = t.coordinateSystem; const o = t.id; const a = t.getData(); const s = this.markerGroupMap; const l = s.get(o) || s.set(o, new qw()); const u = (function (t, e, n) { let i; i = t ? z(t && t.dimensions, (t) => { return A(A({}, e.getData().getDimensionInfo(e.getData().mapDimension(t)) || {}), { name: t, ordinalMeta: null }) }) : [{ name: 'value', type: 'float' }]; const r = new qm(i, n); let o = z(n.get('data'), H(GV, e)); t && (o = B(o, H(HV, t))); const a = YV(!!t, i); return r.initData(o, null, a), r }(r, t, e)); e.setData(u), jV(e.getData(), t, i), u.each((t) => { const n = u.getItemModel(t); let i = n.getShallow('symbol'); let r = n.getShallow('symbolSize'); let o = n.getShallow('symbolRotate'); let s = n.getShallow('symbolOffset'); const l = n.getShallow('symbolKeepAspect'); if (U(i) || U(r) || U(o) || U(s)) { const h = e.getRawValue(t); const c = e.getDataParams(t); U(i) && (i = i(h, c)), U(r) && (r = r(h, c)), U(o) && (o = o(h, c)), U(s) && (s = s(h, c)) } const p = n.getModel('itemStyle').getItemStyle(); const d = gy(a, 'color'); p.fill || (p.fill = d), u.setItemVisual(t, { symbol: i, symbolSize: r, symbolRotate: o, symbolOffset: s, symbolKeepAspect: l, style: p }) }), l.updateData(u), this.group.add(l.group), u.eachItemGraphicEl((t) => { t.traverse((t) => { Hs(t).dataModel = e }) }), this.markKeep(l), l.group.silent = e.get('silent') || t.get('silent') }, e.type = 'markPoint', e }(ZV)); const KV = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.createMarkerModelFromSeries = function (t, n, i) { return new e(t, n, i) }, e.type = 'markLine', e.defaultOption = { z: 5, symbol: ['circle', 'arrow'], symbolSize: [8, 16], symbolOffset: 0, precision: 2, tooltip: { trigger: 'item' }, label: { show: !0, position: 'end', distance: 5 }, lineStyle: { type: 'dashed' }, emphasis: { label: { show: !0 }, lineStyle: { width: 3 } }, animationEasing: 'linear' }, e }(EV)); const $V = So(); const JV = function (t, e, n, i) { + let r; const o = t.getData(); if (Y(i)) { + r = i + } + else { + const a = i.type; if (a === 'min' || a === 'max' || a === 'average' || a === 'median' || i.xAxis != null || i.yAxis != null) { + let s = void 0; let l = void 0; if (i.yAxis != null || i.xAxis != null) { + s = e.getAxis(i.yAxis != null ? 'y' : 'x'), l = it(i.yAxis, i.xAxis) + } + else { const u = WV(i, o, e, t); s = u.valueAxis, l = UV(o, ix(o, u.valueDataDim), a) } const h = s.dim === 'x' ? 0 : 1; const c = 1 - h; const p = T(i); const d = { coord: [] }; p.type = null, p.coord = [], p.coord[c] = -1 / 0, d.coord[c] = 1 / 0; const f = n.get('precision'); f >= 0 && j(l) && (l = +l.toFixed(Math.min(f, 20))), p.coord[h] = d.coord[h] = l, r = [p, d, { type: a, valueIndex: i.valueIndex, value: l }] + } + else { + r = [] + } + } const g = [GV(t, r[0]), GV(t, r[1]), A({}, r[2])]; return g[2].type = g[2].type || null, C(g[2], g[0]), C(g[2], g[1]), g + }; function QV(t) { return !isNaN(t) && !isFinite(t) } function tB(t, e, n, i) { const r = 1 - t; const o = i.dimensions[t]; return QV(e[r]) && QV(n[r]) && e[t] === n[t] && i.getAxis(o).containData(e[t]) } function eB(t, e) { + if (t.type === 'cartesian2d') { + const n = e[0].coord; const i = e[1].coord; if (n && i && (tB(1, n, i, t) || tB(0, n, i, t))) + return !0 + } return HV(t, e[0]) && HV(t, e[1]) + } function nB(t, e, n, i, r) { + let o; const a = i.coordinateSystem; const s = t.getItemModel(e); const l = Er(s.get('x'), r.getWidth()); const u = Er(s.get('y'), r.getHeight()); if (isNaN(l) || isNaN(u)) { + if (i.getMarkerPosition) { + o = i.getMarkerPosition(t.getValues(t.dimensions, e)) + } + else { var h = a.dimensions; const c = t.get(h[0], e); const p = t.get(h[1], e); o = a.dataToPoint([c, p]) } if (uS(a, 'cartesian2d')) { const d = a.getAxis('x'); const f = a.getAxis('y'); h = a.dimensions, QV(t.get(h[0], e)) ? o[0] = d.toGlobalCoord(d.getExtent()[n ? 0 : 1]) : QV(t.get(h[1], e)) && (o[1] = f.toGlobalCoord(f.getExtent()[n ? 0 : 1])) }isNaN(l) || (o[0] = l), isNaN(u) || (o[1] = u) + } + else { + o = [l, u] + }t.setItemLayout(e, o) + } const iB = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.updateTransform = function (t, e, n) { e.eachSeries(function (t) { const e = EV.getMarkerModelFromSeries(t, 'markLine'); if (e) { const i = e.getData(); const r = $V(e).from; const o = $V(e).to; r.each((e) => { nB(r, e, !0, t, n), nB(o, e, !1, t, n) }), i.each((t) => { i.setItemLayout(t, [r.getItemLayout(t), o.getItemLayout(t)]) }), this.markerGroupMap.get(t.id).updateLayout() } }, this) }, e.prototype.renderSeries = function (t, e, n, i) { const r = t.coordinateSystem; const o = t.id; const a = t.getData(); const s = this.markerGroupMap; const l = s.get(o) || s.set(o, new gA()); this.group.add(l.group); const u = (function (t, e, n) { let i; i = t ? z(t && t.dimensions, (t) => { return A(A({}, e.getData().getDimensionInfo(e.getData().mapDimension(t)) || {}), { name: t, ordinalMeta: null }) }) : [{ name: 'value', type: 'float' }]; const r = new qm(i, n); const o = new qm(i, n); const a = new qm([], n); let s = z(n.get('data'), H(JV, e, t, n)); t && (s = B(s, H(eB, t))); const l = YV(!!t, i); return r.initData(z(s, (t) => { return t[0] }), null, l), o.initData(z(s, (t) => { return t[1] }), null, l), a.initData(z(s, (t) => { return t[2] })), a.hasItemOption = !0, { from: r, to: o, line: a } }(r, t, e)); const h = u.from; const c = u.to; const p = u.line; $V(e).from = h, $V(e).to = c, e.setData(p); let d = e.get('symbol'); let f = e.get('symbolSize'); let g = e.get('symbolRotate'); let y = e.get('symbolOffset'); function v(e, n, r) { const o = e.getItemModel(n); nB(e, n, r, t, i); const s = o.getModel('itemStyle').getItemStyle(); s.fill == null && (s.fill = gy(a, 'color')), e.setItemVisual(n, { symbolKeepAspect: o.get('symbolKeepAspect'), symbolOffset: rt(o.get('symbolOffset', !0), y[r ? 0 : 1]), symbolRotate: rt(o.get('symbolRotate', !0), g[r ? 0 : 1]), symbolSize: rt(o.get('symbolSize'), f[r ? 0 : 1]), symbol: rt(o.get('symbol', !0), d[r ? 0 : 1]), style: s }) }Y(d) || (d = [d, d]), Y(f) || (f = [f, f]), Y(g) || (g = [g, g]), Y(y) || (y = [y, y]), u.from.each((t) => { v(h, t, !0), v(c, t, !1) }), p.each((t) => { const e = p.getItemModel(t).getModel('lineStyle').getLineStyle(); p.setItemLayout(t, [h.getItemLayout(t), c.getItemLayout(t)]), e.stroke == null && (e.stroke = h.getItemVisual(t, 'style').fill), p.setItemVisual(t, { fromSymbolKeepAspect: h.getItemVisual(t, 'symbolKeepAspect'), fromSymbolOffset: h.getItemVisual(t, 'symbolOffset'), fromSymbolRotate: h.getItemVisual(t, 'symbolRotate'), fromSymbolSize: h.getItemVisual(t, 'symbolSize'), fromSymbol: h.getItemVisual(t, 'symbol'), toSymbolKeepAspect: c.getItemVisual(t, 'symbolKeepAspect'), toSymbolOffset: c.getItemVisual(t, 'symbolOffset'), toSymbolRotate: c.getItemVisual(t, 'symbolRotate'), toSymbolSize: c.getItemVisual(t, 'symbolSize'), toSymbol: c.getItemVisual(t, 'symbol'), style: e }) }), l.updateData(p), u.line.eachItemGraphicEl((t) => { Hs(t).dataModel = e, t.traverse((t) => { Hs(t).dataModel = e }) }), this.markKeep(l), l.group.silent = e.get('silent') || t.get('silent') }, e.type = 'markLine', e }(ZV)); const rB = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.createMarkerModelFromSeries = function (t, n, i) { return new e(t, n, i) }, e.type = 'markArea', e.defaultOption = { z: 1, tooltip: { trigger: 'item' }, animation: !1, label: { show: !0, position: 'top' }, itemStyle: { borderWidth: 0 }, emphasis: { label: { show: !0, position: 'top' } } }, e }(EV)); const oB = So(); const aB = function (t, e, n, i) { const r = GV(t, i[0]); const o = GV(t, i[1]); const a = r.coord; const s = o.coord; a[0] = it(a[0], -1 / 0), a[1] = it(a[1], -1 / 0), s[0] = it(s[0], 1 / 0), s[1] = it(s[1], 1 / 0); const l = D([{}, r, o]); return l.coord = [r.coord, o.coord], l.x0 = r.x, l.y0 = r.y, l.x1 = o.x, l.y1 = o.y, l }; function sB(t) { return !isNaN(t) && !isFinite(t) } function lB(t, e, n, i) { const r = 1 - t; return sB(e[r]) && sB(n[r]) } function uB(t, e) { const n = e.coord[0]; const i = e.coord[1]; const r = { coord: n, x: e.x0, y: e.y0 }; const o = { coord: i, x: e.x1, y: e.y1 }; return uS(t, 'cartesian2d') ? !(!n || !i || !lB(1, n, i) && !lB(0, n, i)) || (function (t, e, n) { return !(t && t.containZone && e.coord && n.coord && !VV(e) && !VV(n)) || t.containZone(e.coord, n.coord) }(t, r, o)) : HV(t, r) || HV(t, o) } function hB(t, e, n, i, r) { + let o; const a = i.coordinateSystem; const s = t.getItemModel(e); const l = Er(s.get(n[0]), r.getWidth()); const u = Er(s.get(n[1]), r.getHeight()); if (isNaN(l) || isNaN(u)) { + if (i.getMarkerPosition) { + o = i.getMarkerPosition(t.getValues(n, e)) + } + else { const h = [d = t.get(n[0], e), f = t.get(n[1], e)]; a.clampData && a.clampData(h, h), o = a.dataToPoint(h, !0) } if (uS(a, 'cartesian2d')) { const c = a.getAxis('x'); const p = a.getAxis('y'); var d = t.get(n[0], e); var f = t.get(n[1], e); sB(d) ? o[0] = c.toGlobalCoord(c.getExtent()[n[0] === 'x0' ? 0 : 1]) : sB(f) && (o[1] = p.toGlobalCoord(p.getExtent()[n[1] === 'y0' ? 0 : 1])) }isNaN(l) || (o[0] = l), isNaN(u) || (o[1] = u) + } + else { + o = [l, u] + } return o + } const cB = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']]; const pB = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.updateTransform = function (t, e, n) { e.eachSeries((t) => { const e = EV.getMarkerModelFromSeries(t, 'markArea'); if (e) { const i = e.getData(); i.each((e) => { const r = z(cB, (r) =>{ return hB(i, e, r, t, n) }); i.setItemLayout(e, r), i.getItemGraphicEl(e).setShape('points', r) }) } }, this) }, e.prototype.renderSeries = function (t, e, n, i) { + const r = t.coordinateSystem; const o = t.id; const a = t.getData(); const s = this.markerGroupMap; const l = s.get(o) || s.set(o, { group: new Cr() }); this.group.add(l.group), this.markKeep(l); const u = (function (t, e, n) { + let i, r; if (t) { const a = z(t && t.dimensions, (t) =>{ var n = e.getData(); return A(A({}, n.getDimensionInfo(n.mapDimension(t)) || {}), { name: t, ordinalMeta: null }) }); r = z(['x0', 'y0', 'x1', 'y1'], (t, e) => { return { name: t, type: a[e % 2].type } }), i = new qm(r, n) } + else { + i = new qm(r = [{ name: 'value', type: 'float' }], n) + } var s = z(n.get('data'), H(aB, e, t, n)); t && (s = B(s, H(uB, t))); const l = t ? function (t, e, n, i) { return df(t.coord[Math.floor(i / 2)][i % 2], r[i]) } : function (t, e, n, i) { return df(t.value, r[i]) }; return i.initData(s, null, l), i.hasItemOption = !0, i + }(r, t, e)); e.setData(u), u.each((e) => { const n = z(cB, (n) => { return hB(u, e, n, t, i) }); const o = r.getAxis('x').scale; const s = r.getAxis('y').scale; const l = o.getExtent(); const h = s.getExtent(); const c = [o.parse(u.get('x0', e)), o.parse(u.get('x1', e))]; const p = [s.parse(u.get('y0', e)), s.parse(u.get('y1', e))]; Vr(c), Vr(p); const d = !!(l[0] > c[1] || l[1] < c[0] || h[0] > p[1] || h[1] < p[0]); u.setItemLayout(e, { points: n, allClipped: d }); const f = u.getItemModel(e).getModel('itemStyle').getItemStyle(); const g = gy(a, 'color'); f.fill || (f.fill = g, X(f.fill) && (f.fill = An(f.fill, 0.4))), f.stroke || (f.stroke = g), u.setItemVisual(e, 'style', f) }), u.diff(oB(l).data).add((t) => { const e = u.getItemLayout(t); if (!e.allClipped) { const n = new Pu({ shape: { points: e.points } }); u.setItemGraphicEl(t, n), l.group.add(n) } }).update((t, n) => { let i = oB(l).data.getItemGraphicEl(n); const r = u.getItemLayout(t); r.allClipped ? i && l.group.remove(i) : (i ? rh(i, { shape: { points: r.points } }, e, t) : i = new Pu({ shape: { points: r.points } }), u.setItemGraphicEl(t, i), l.group.add(i)) }).remove((t) => { const e = oB(l).data.getItemGraphicEl(t); l.group.remove(e) }).execute(), u.eachItemGraphicEl((t, n) => { const i = u.getItemModel(n); const r = u.getItemVisual(n, 'style'); t.useStyle(u.getItemVisual(n, 'style')), Hh(t, Yh(i), { labelFetcher: e, labelDataIndex: n, defaultText: u.getName(n) || '', inheritColor: X(r.fill) ? An(r.fill, 1) : '#000' }), Vl(t, i), Rl(t, null, null, i.get(['emphasis', 'disabled'])), Hs(t).dataModel = e }), oB(l).data = u, l.group.silent = e.get('silent') || t.get('silent') + }, e.type = 'markArea', e + }(ZV)); const dB = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.layoutMode = { type: 'box', ignoreSize: !0 }, n } return n(e, t), e.prototype.init = function (t, e, n) { this.mergeDefaultAndTheme(t, n), t.selected = t.selected || {}, this._updateSelector(t) }, e.prototype.mergeOption = function (e, n) { t.prototype.mergeOption.call(this, e, n), this._updateSelector(e) }, e.prototype._updateSelector = function (t) { let e = t.selector; const n = this.ecModel; !0 === e && (e = t.selector = ['all', 'inverse']), Y(e) && E(e, (t, i) => { X(t) && (t = { type: t }), e[i] = C(t, (function (t, e) { return e === 'all' ? { type: 'all', title: t.getLocaleModel().get(['legend', 'selector', 'all']) } : e === 'inverse' ? { type: 'inverse', title: t.getLocaleModel().get(['legend', 'selector', 'inverse']) } : void 0 }(n, t.type))) }) }, e.prototype.optionUpdated = function () { this._updateData(this.ecModel); const t = this._data; if (t[0] && this.get('selectedMode') === 'single') { for (var e = !1, n = 0; n < t.length; n++) { const i = t[n].get('name'); if (this.isSelected(i)) { this.select(i), e = !0; break } }!e && this.select(t[0].get('name')) } }, e.prototype._updateData = function (t) { + let e = []; let n = []; t.eachRawSeries((i) => { + let r; const o = i.name; if (n.push(o), i.legendVisualProvider) { const a = i.legendVisualProvider.getAllNames(); t.isSeriesFiltered(i) || (n = n.concat(a)), a.length ? e = e.concat(a) : r = !0 } + else { + r = !0 + }r && _o(i) && e.push(i.name) + }), this._availableNames = n; const i = z(this.get('data') || e, function (t) { return (X(t) || j(t)) && (t = { name: t }), new dc(t, this, this.ecModel) }, this); this._data = i + }, e.prototype.getData = function () { return this._data }, e.prototype.select = function (t) { const e = this.option.selected; this.get('selectedMode') === 'single' && E(this._data, (t) => { e[t.get('name')] = !1 }), e[t] = !0 }, e.prototype.unSelect = function (t) { this.get('selectedMode') !== 'single' && (this.option.selected[t] = !1) }, e.prototype.toggleSelected = function (t) { const e = this.option.selected; e.hasOwnProperty(t) || (e[t] = !0), this[e[t] ? 'unSelect' : 'select'](t) }, e.prototype.allSelect = function () { const t = this._data; const e = this.option.selected; E(t, (t) => { e[t.get('name', !0)] = !0 }) }, e.prototype.inverseSelect = function () { const t = this._data; const e = this.option.selected; E(t, (t) => { const n = t.get('name', !0); e.hasOwnProperty(n) || (e[n] = !0), e[n] = !e[n] }) }, e.prototype.isSelected = function (t) { const e = this.option.selected; return !(e.hasOwnProperty(t) && !e[t]) && P(this._availableNames, t) >= 0 }, e.prototype.getOrient = function () { return this.get('orient') === 'vertical' ? { index: 1, name: 'vertical' } : { index: 0, name: 'horizontal' } }, e.type = 'legend.plain', e.dependencies = ['series'], e.defaultOption = { z: 4, show: !0, orient: 'horizontal', left: 'center', top: 0, align: 'auto', backgroundColor: 'rgba(0,0,0,0)', borderColor: '#ccc', borderRadius: 0, borderWidth: 0, padding: 5, itemGap: 10, itemWidth: 25, itemHeight: 14, symbolRotate: 'inherit', symbolKeepAspect: !0, inactiveColor: '#ccc', inactiveBorderColor: '#ccc', inactiveBorderWidth: 'auto', itemStyle: { color: 'inherit', opacity: 'inherit', borderColor: 'inherit', borderWidth: 'auto', borderCap: 'inherit', borderJoin: 'inherit', borderDashOffset: 'inherit', borderMiterLimit: 'inherit' }, lineStyle: { width: 'auto', color: 'inherit', inactiveColor: '#ccc', inactiveWidth: 2, opacity: 'inherit', type: 'inherit', cap: 'inherit', join: 'inherit', dashOffset: 'inherit', miterLimit: 'inherit' }, textStyle: { color: '#333' }, selectedMode: !0, selector: !1, selectorLabel: { show: !0, borderRadius: 10, padding: [3, 5, 3, 5], fontSize: 12, fontFamily: 'sans-serif', color: '#666', borderWidth: 1, borderColor: '#666' }, emphasis: { selectorLabel: { show: !0, color: '#eee', backgroundColor: '#666' } }, selectorPosition: 'auto', selectorItemGap: 7, selectorButtonGap: 10, tooltip: { show: !1 } }, e + }(Tp)); const fB = H; const gB = E; const yB = Cr; const vB = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.newlineDisabled = !1, n } return n(e, t), e.prototype.init = function () { this.group.add(this._contentGroup = new yB()), this.group.add(this._selectorGroup = new yB()), this._isFirstRender = !0 }, e.prototype.getContentGroup = function () { return this._contentGroup }, e.prototype.getSelectorGroup = function () { return this._selectorGroup }, e.prototype.render = function (t, e, n) { const i = this._isFirstRender; if (this._isFirstRender = !1, this.resetInner(), t.get('show', !0)) { let r = t.get('align'); const o = t.get('orient'); r && r !== 'auto' || (r = t.get('left') === 'right' && o === 'vertical' ? 'right' : 'left'); const a = t.get('selector', !0); let s = t.get('selectorPosition', !0); !a || s && s !== 'auto' || (s = o === 'horizontal' ? 'end' : 'start'), this.renderInner(r, t, e, n, a, o, s); const l = t.getBoxLayoutParams(); const u = { width: n.getWidth(), height: n.getHeight() }; const h = t.get('padding'); const c = xp(l, u, h); const p = this.layoutInner(t, r, c, i, a, s); const d = xp(k({ width: p.width, height: p.height }, l), u, h); this.group.x = d.x - p.x, this.group.y = d.y - p.y, this.group.markRedraw(), this.group.add(this._backgroundEl = XE(p, t)) } }, e.prototype.resetInner = function () { this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl), this.getSelectorGroup().removeAll() }, e.prototype.renderInner = function (t, e, n, i, r, o, a) { + const s = this.getContentGroup(); const l = ft(); const u = e.get('selectedMode'); const h = []; n.eachRawSeries((t) => { !t.get('legendHoverLink') && h.push(t.id) }), gB(e.getData(), function (r, o) { + const a = r.get('name'); if (!this.newlineDisabled && (a === '' || a === '\n')) { const c = new yB(); return c.newline = !0, void s.add(c) } const p = n.getSeriesByName(a)[0]; if (!l.get(a)) { + if (p) { const d = p.getData(); const f = d.getVisual('legendLineStyle') || {}; const g = d.getVisual('legendIcon'); const y = d.getVisual('style'); this._createItem(p, a, o, r, e, t, f, y, g, u, i).on('click', fB(mB, a, null, i, h)).on('mouseover', fB(_B, p.name, null, i, h)).on('mouseout', fB(bB, p.name, null, i, h)), l.set(a, !0) } + else { + n.eachRawSeries(function (n) { + if (!l.get(a) && n.legendVisualProvider) { + let s = n.legendVisualProvider; if (!s.containName(a)) + return; let c = s.indexOfName(a); let p = s.getItemVisual(c, "style"); let d = s.getItemVisual(c, "legendIcon"); let f = bn(p.fill); f && f[3] === 0 && (f[3] = 0.2, p = A(A({}, p), { fill: kn(f, 'rgba') })), this._createItem(n, a, o, r, e, t, {}, p, d, u, i).on('click', fB(mB, null, a, i, h)).on('mouseover', fB(_B, null, a, i, h)).on('mouseout', fB(bB, null, a, i, h)), l.set(a, !0) +} +}, this) + } + } + }, this), r && this._createSelector(r, e, i, o, a) + }, e.prototype._createSelector = function (t, e, n, i, r) { const o = this.getSelectorGroup(); gB(t, (t) => { const i = t.type; const r = new ks({ style: { x: 0, y: 0, align: 'center', verticalAlign: 'middle' }, onclick() { n.dispatchAction({ type: i === 'all' ? 'legendAllSelect' : 'legendInverseSelect' }) } }); o.add(r), Hh(r, { normal: e.getModel('selectorLabel'), emphasis: e.getModel(['emphasis', 'selectorLabel']) }, { defaultText: t.title }), Ol(r) }) }, e.prototype._createItem = function (t, e, n, i, r, o, a, s, l, u, h) { + const c = t.visualDrawType; const p = r.get('itemWidth'); const d = r.get('itemHeight'); const f = r.isSelected(e); const g = i.get('symbolRotate'); const y = i.get('symbolKeepAspect'); const v = i.get('icon'); const m = (function (t, e, n, i, r, o, a) { function s(t, e) { t.lineWidth === 'auto' && (t.lineWidth = e.lineWidth > 0 ? 2 : 0), gB(t, (n, i) => { 'inherit' === t[i] && (t[i] = e[i]) }) } const l = e.getModel('itemStyle'); const u = l.getItemStyle(); const h = 0 === t.lastIndexOf('empty', 0) ? "fill" : "stroke"; const c = l.getShallow('decal'); u.decal = c && c !== 'inherit' ? rv(c, a) : i.decal, u.fill === 'inherit' && (u.fill = i[r]), u.stroke === 'inherit' && (u.stroke = i[h]), u.opacity === 'inherit' && (u.opacity = (r === 'fill' ? i : n).opacity), s(u, i); const p = e.getModel('lineStyle'); const d = p.getLineStyle(); if (s(d, n), u.fill === 'auto' && (u.fill = i.fill), u.stroke === 'auto' && (u.stroke = i.fill), d.stroke === 'auto' && (d.stroke = i.fill), !o) { const f = e.get('inactiveBorderWidth'); const g = u[h]; u.lineWidth = f === 'auto' ? i.lineWidth > 0 && g ? 2 : 0 : u.lineWidth, u.fill = e.get('inactiveColor'), u.stroke = e.get('inactiveBorderColor'), d.stroke = p.get('inactiveColor'), d.lineWidth = p.get('inactiveWidth') } return { itemStyle: u, lineStyle: d } }(l = v || l || 'roundRect', i, a, s, c, f, h)); const x = new yB(); const _ = i.getModel('textStyle'); if (!U(t.getLegendIcon) || v && v !== 'inherit') { const b = v === 'inherit' && t.getData().getVisual('symbol') ? g === 'inherit' ? t.getData().getVisual('symbolRotate') : g : 0; x.add(function (t) { const e = t.icon || 'roundRect'; const n = Ly(e, 0, 0, t.itemWidth, t.itemHeight, t.itemStyle.fill, t.symbolKeepAspect); return n.setStyle(t.itemStyle), n.rotation = (t.iconRotate || 0) * Math.PI / 180, n.setOrigin([t.itemWidth / 2, t.itemHeight / 2]), e.includes('empty') && (n.style.stroke = n.style.fill, n.style.fill = '#fff', n.style.lineWidth = 2), n }({ itemWidth: p, itemHeight: d, icon: l, iconRotate: b, itemStyle: m.itemStyle, lineStyle: m.lineStyle, symbolKeepAspect: y })) } + else { + x.add(t.getLegendIcon({ itemWidth: p, itemHeight: d, icon: l, iconRotate: g, itemStyle: m.itemStyle, lineStyle: m.lineStyle, symbolKeepAspect: y })) + } const w = o === 'left' ? p + 5 : -5; const S = o; const M = r.get('formatter'); let I = e; X(M) && M ? I = M.replace('{name}', e != null ? e : '') : U(M) && (I = M(e)); const T = i.get('inactiveColor'); x.add(new ks({ style: Uh(_, { text: I, x: w, y: d / 2, fill: f ? _.getTextColor() : T, align: S, verticalAlign: 'middle' }) })); const C = new Cs({ shape: x.getBoundingRect(), invisible: !0 }); const D = i.getModel('tooltip'); return D.get('show') && Eh({ el: C, componentModel: r, itemName: e, itemTooltipOption: D.option }), x.add(C), x.eachChild((t) => { t.silent = !0 }), C.silent = !u, this.getContentGroup().add(x), Ol(x), x.__legendDataIndex = n, x + }, e.prototype.layoutInner = function (t, e, n, i, r, o) { const a = this.getContentGroup(); const s = this.getSelectorGroup(); mp(t.get('orient'), a, t.get('itemGap'), n.width, n.height); const l = a.getBoundingRect(); const u = [-l.x, -l.y]; if (s.markRedraw(), a.markRedraw(), r) { mp('horizontal', s, t.get('selectorItemGap', !0)); const h = s.getBoundingRect(); const c = [-h.x, -h.y]; const p = t.get('selectorButtonGap', !0); const d = t.getOrient().index; const f = d === 0 ? 'width' : 'height'; const g = d === 0 ? 'height' : 'width'; const y = d === 0 ? 'y' : 'x'; o === 'end' ? c[d] += l[f] + p : u[d] += h[f] + p, c[1 - d] += l[g] / 2 - h[g] / 2, s.x = c[0], s.y = c[1], a.x = u[0], a.y = u[1]; const v = { x: 0, y: 0 }; return v[f] = l[f] + p + h[f], v[g] = Math.max(l[g], h[g]), v[y] = Math.min(0, h[y] + c[1 - d]), v } return a.x = u[0], a.y = u[1], this.group.getBoundingRect() }, e.prototype.remove = function () { this.getContentGroup().removeAll(), this._isFirstRender = !0 }, e.type = 'legend.plain', e + }(gg)); function mB(t, e, n, i) { bB(t, e, n, i), n.dispatchAction({ type: 'legendToggleSelect', name: t != null ? t : e }), _B(t, e, n, i) } function xB(t) { for (var e, n = t.getZr().storage.getDisplayList(), i = 0, r = n.length; i < r && !(e = n[i].states.emphasis);)i++; return e && e.hoverLayer } function _B(t, e, n, i) { xB(n) || n.dispatchAction({ type: 'highlight', seriesName: t, name: e, excludeSeriesId: i }) } function bB(t, e, n, i) { xB(n) || n.dispatchAction({ type: 'downplay', seriesName: t, name: e, excludeSeriesId: i }) } function wB(t) { + const e = t.findComponents({ mainType: 'legend' }); e && e.length && t.filterSeries((t) => { + for (let n = 0; n < e.length; n++) { + if (!e[n].isSelected(t.name)) + return !1 + } return !0 + }) + } function SB(t, e, n) { let i; const r = {}; const o = t === 'toggleSelected'; return n.eachComponent('legend', (n) => { o && i != null ? n[i ? 'select' : 'unSelect'](e.name) : t === 'allSelect' || t === 'inverseSelect' ? n[t]() : (n[t](e.name), i = n.isSelected(e.name)), E(n.getData(), (t) => { const e = t.get('name'); if (e !== '\n' && e !== '') { const i = n.isSelected(e); r.hasOwnProperty(e) ? r[e] = r[e] && i : r[e] = i } }) }), t === 'allSelect' || t === 'inverseSelect' ? { selected: r } : { name: e.name, selected: r } } function MB(t) { t.registerComponentModel(dB), t.registerComponentView(vB), t.registerProcessor(t.PRIORITY.PROCESSOR.SERIES_FILTER, wB), t.registerSubTypeDefaulter('legend', () => { return 'plain' }), (function (t) { t.registerAction('legendToggleSelect', 'legendselectchanged', H(SB, 'toggleSelected')), t.registerAction('legendAllSelect', 'legendselectall', H(SB, 'allSelect')), t.registerAction('legendInverseSelect', 'legendinverseselect', H(SB, 'inverseSelect')), t.registerAction('legendSelect', 'legendselected', H(SB, 'select')), t.registerAction('legendUnSelect', 'legendunselected', H(SB, 'unSelect')) }(t)) } const IB = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.setScrollDataIndex = function (t) { this.option.scrollDataIndex = t }, e.prototype.init = function (e, n, i) { const r = Sp(e); t.prototype.init.call(this, e, n, i), TB(this, e, r) }, e.prototype.mergeOption = function (e, n) { t.prototype.mergeOption.call(this, e, n), TB(this, this.option, e) }, e.type = 'legend.scroll', e.defaultOption = yc(dB.defaultOption, { scrollDataIndex: 0, pageButtonItemGap: 5, pageButtonGap: null, pageButtonPosition: 'end', pageFormatter: '{current}/{total}', pageIcons: { horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'], vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z'] }, pageIconColor: '#2f4554', pageIconInactiveColor: '#aaa', pageIconSize: 15, pageTextStyle: { color: '#333' }, animationDurationUpdate: 800 }), e }(dB)); function TB(t, e, n) { const i = [1, 1]; i[t.getOrient().index] = 0, wp(e, n, { type: 'box', ignoreSize: !!i }) } const CB = Cr; const DB = ['width', 'height']; const AB = ['x', 'y']; const kB = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.newlineDisabled = !0, n._currentIndex = 0, n } return n(e, t), e.prototype.init = function () { t.prototype.init.call(this), this.group.add(this._containerGroup = new CB()), this._containerGroup.add(this.getContentGroup()), this.group.add(this._controllerGroup = new CB()) }, e.prototype.resetInner = function () { t.prototype.resetInner.call(this), this._controllerGroup.removeAll(), this._containerGroup.removeClipPath(), this._containerGroup.__rectSize = null }, e.prototype.renderInner = function (e, n, i, r, o, a, s) { const l = this; t.prototype.renderInner.call(this, e, n, i, r, o, a, s); const u = this._controllerGroup; const h = n.get('pageIconSize', !0); const c = Y(h) ? h : [h, h]; d('pagePrev', 0); const p = n.getModel('pageTextStyle'); function d(t, e) { const i = `${t}DataIndex`; const o = Ph(n.get('pageIcons', !0)[n.getOrient().name][e], { onclick: W(l._pageGo, l, i, n, r) }, { x: -c[0] / 2, y: -c[1] / 2, width: c[0], height: c[1] }); o.name = t, u.add(o) }u.add(new ks({ name: 'pageText', style: { text: 'xx/xx', fill: p.getTextColor(), font: p.getFont(), verticalAlign: 'middle', align: 'center' }, silent: !0 })), d('pageNext', 1) }, e.prototype.layoutInner = function (t, e, n, i, r, o) { + const a = this.getSelectorGroup(); const s = t.getOrient().index; const l = DB[s]; const u = AB[s]; const h = DB[1 - s]; const c = AB[1 - s]; r && mp('horizontal', a, t.get('selectorItemGap', !0)); const p = t.get('selectorButtonGap', !0); const d = a.getBoundingRect(); const f = [-d.x, -d.y]; const g = T(n); r && (g[l] = n[l] - d[l] - p); const y = this._layoutContentAndController(t, i, g, s, l, h, c, u); if (r) { + if (o === 'end') { + f[s] += y[l] + p + } + else { const v = d[l] + p; f[s] -= v, y[u] -= v }y[l] += d[l] + p, f[1 - s] += y[c] + y[h] / 2 - d[h] / 2, y[h] = Math.max(y[h], d[h]), y[c] = Math.min(y[c], d[c] + f[1 - s]), a.x = f[0], a.y = f[1], a.markRedraw() + } return y + }, e.prototype._layoutContentAndController = function (t, e, n, i, r, o, a, s) { + const l = this.getContentGroup(); const u = this._containerGroup; const h = this._controllerGroup; mp(t.get('orient'), l, t.get('itemGap'), i ? n.width : null, i ? null : n.height), mp('horizontal', h, t.get('pageButtonItemGap', !0)); const c = l.getBoundingRect(); const p = h.getBoundingRect(); const d = this._showController = c[r] > n[r]; const f = [-c.x, -c.y]; e || (f[i] = l[s]); const g = [0, 0]; const y = [-p.x, -p.y]; const v = rt(t.get('pageButtonGap', !0), t.get('itemGap', !0)); d && (t.get('pageButtonPosition', !0) === 'end' ? y[i] += n[r] - p[r] : g[i] += p[r] + v), y[1 - i] += c[o] / 2 - p[o] / 2, l.setPosition(f), u.setPosition(g), h.setPosition(y); const m = { x: 0, y: 0 }; if (m[r] = d ? n[r] : c[r], m[o] = Math.max(c[o], p[o]), m[a] = Math.min(0, p[a] + y[1 - i]), u.__rectSize = n[r], d) { const x = { x: 0, y: 0 }; x[r] = Math.max(n[r] - p[r] - v, 0), x[o] = m[o], u.setClipPath(new Cs({ shape: x })), u.__rectSize = x[r] } + else { + h.eachChild((t) => { t.attr({ invisible: !0, silent: !0 }) }) + } const _ = this._getPageInfo(t); return _.pageIndex != null && rh(l, { x: _.contentPosition[0], y: _.contentPosition[1] }, d ? t : null), this._updatePageInfoView(t, _), m + }, e.prototype._pageGo = function (t, e, n) { const i = this._getPageInfo(e)[t]; i != null && n.dispatchAction({ type: 'legendScroll', scrollDataIndex: i, legendId: e.id }) }, e.prototype._updatePageInfoView = function (t, e) { const n = this._controllerGroup; E(['pagePrev', 'pageNext'], (i) => { const r = e[`${i}DataIndex`] != null; const o = n.childOfName(i); o && (o.setStyle('fill', r ? t.get('pageIconColor', !0) : t.get('pageIconInactiveColor', !0)), o.cursor = r ? 'pointer' : 'default') }); const i = n.childOfName('pageText'); const r = t.get('pageFormatter'); const o = e.pageIndex; const a = o != null ? o + 1 : 0; const s = e.pageCount; i && r && i.setStyle('text', X(r) ? r.replace('{current}', a == null ? '' : `${a}`).replace('{total}', s == null ? '' : `${s}`) : r({ current: a, total: s })) }, e.prototype._getPageInfo = function (t) { + const e = t.get('scrollDataIndex', !0); const n = this.getContentGroup(); const i = this._containerGroup.__rectSize; const r = t.getOrient().index; const o = DB[r]; const a = AB[r]; const s = this._findTargetItemIndex(e); const l = n.children(); const u = l[s]; const h = l.length; const c = h ? 1 : 0; const p = { contentPosition: [n.x, n.y], pageCount: c, pageIndex: c - 1, pagePrevDataIndex: null, pageNextDataIndex: null }; if (!u) + return p; const d = m(u); p.contentPosition[r] = -d.s; for (var f = s + 1, g = d, y = d, v = null; f <= h; ++f)(!(v = m(l[f])) && y.e > g.s + i || v && !x(v, g.s)) && (g = y.i > g.i ? y : v) && (p.pageNextDataIndex == null && (p.pageNextDataIndex = g.i), ++p.pageCount), y = v; for (f = s - 1, g = d, y = d, v = null; f >= -1; --f)(v = m(l[f])) && x(y, v.s) || !(g.i < y.i) || (y = g, p.pagePrevDataIndex == null && (p.pagePrevDataIndex = g.i), ++p.pageCount, ++p.pageIndex), g = v; return p; function m(t) { if (t) { const e = t.getBoundingRect(); const n = e[a] + t[a]; return { s: n, e: n + e[o], i: t.__legendDataIndex } } } function x(t, e) { return t.e >= e && t.s <= e + i } + }, e.prototype._findTargetItemIndex = function (t) { return this._showController ? (this.getContentGroup().eachChild((i, r) => { const o = i.__legendDataIndex; n == null && o != null && (n = r), o === t && (e = r) }), e != null ? e : n) : 0; let e, n }, e.type = 'legend.scroll', e + }(vB)); function LB(t) { wm(MB), t.registerComponentModel(IB), t.registerComponentView(kB), (function (t) { t.registerAction('legendScroll', 'legendscroll', (t, e) => { const n = t.scrollDataIndex; n != null && e.eachComponent({ mainType: 'legend', subType: 'scroll', query: t }, (t) => { t.setScrollDataIndex(n) }) }) }(t)) } const PB = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'dataZoom.inside', e.defaultOption = yc(AE.defaultOption, { disabled: !1, zoomLock: !1, zoomOnMouseWheel: !0, moveOnMouseMove: !0, moveOnMouseWheel: !1, preventDefaultMouseMove: !0 }), e }(AE)); const OB = So(); function NB(t, e) { if (e) { t.removeKey(e.model.uid); const n = e.controller; n && n.dispose() } } function EB(t, e) { t.isDisposed() || t.dispatchAction({ type: 'dataZoom', animation: { easing: 'cubicOut', duration: 100 }, batch: e }) } function zB(t, e, n, i) { return t.coordinateSystem.containPoint([n, i]) } const BB = (function (t) { function e() { const e = t !== null && t.apply(this, arguments) || this; return e.type = 'dataZoom.inside', e } return n(e, t), e.prototype.render = function (e, n, i) { t.prototype.render.apply(this, arguments), e.noTarget() ? this._clear() : (this.range = e.getPercentRange(), (function (t, e, n) { OB(t).coordSysRecordMap.each((t) => { const i = t.dataZoomInfoMap.get(e.uid); i && (i.getRange = n) }) }(i, e, { pan: W(FB.pan, this), zoom: W(FB.zoom, this), scrollMove: W(FB.scrollMove, this) }))) }, e.prototype.dispose = function () { this._clear(), t.prototype.dispose.apply(this, arguments) }, e.prototype._clear = function () { !(function (t, e) { for (let n = OB(t).coordSysRecordMap, i = n.keys(), r = 0; r < i.length; r++) { const o = i[r]; const a = n.get(o); const s = a.dataZoomInfoMap; if (s) { const l = e.uid; s.get(l) && (s.removeKey(l), s.keys().length || NB(n, a)) } } }(this.api, this.dataZoomModel)), this.range = null }, e.type = 'dataZoom.inside', e }(PE)); var FB = { zoom(t, e, n, i) { const r = this.range; const o = r.slice(); const a = t.axisModels[0]; if (a) { const s = WB[e](null, [i.originX, i.originY], a, n, t); const l = (s.signal > 0 ? s.pixelStart + s.pixelLength - s.pixel : s.pixel - s.pixelStart) / s.pixelLength * (o[1] - o[0]) + o[0]; const u = Math.max(1 / i.scale, 0); o[0] = (o[0] - l) * u + l, o[1] = (o[1] - l) * u + l; const h = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); return lk(0, o, [0, 100], 0, h.minSpan, h.maxSpan), this.range = o, r[0] !== o[0] || r[1] !== o[1] ? o : void 0 } }, pan: GB((t, e, n, i, r, o) => { const a = WB[i]([o.oldX, o.oldY], [o.newX, o.newY], e, r, n); return a.signal * (t[1] - t[0]) * a.pixel / a.pixelLength }), scrollMove: GB((t, e, n, i, r, o) => { return WB[i]([0, 0], [o.scrollDelta, o.scrollDelta], e, r, n).signal * (t[1] - t[0]) * o.scrollDelta }) }; function GB(t) { + return function (e, n, i, r) { + const o = this.range; const a = o.slice(); const s = e.axisModels[0]; if (s) + return lk(t(a, s, e, n, i, r), a, [0, 100], 'all'), this.range = a, o[0] !== a[0] || o[1] !== a[1] ? a : void 0 + } + } var WB = { grid(t, e, n, i, r) { const o = n.axis; const a = {}; const s = r.model.coordinateSystem.getRect(); return t = t || [0, 0], o.dim === 'x' ? (a.pixel = e[0] - t[0], a.pixelLength = s.width, a.pixelStart = s.x, a.signal = o.inverse ? 1 : -1) : (a.pixel = e[1] - t[1], a.pixelLength = s.height, a.pixelStart = s.y, a.signal = o.inverse ? -1 : 1), a }, polar(t, e, n, i, r) { const o = n.axis; const a = {}; const s = r.model.coordinateSystem; const l = s.getRadiusAxis().getExtent(); const u = s.getAngleAxis().getExtent(); return t = t ? s.pointToCoord(t) : [0, 0], e = s.pointToCoord(e), n.mainType === 'radiusAxis' ? (a.pixel = e[0] - t[0], a.pixelLength = l[1] - l[0], a.pixelStart = l[0], a.signal = o.inverse ? 1 : -1) : (a.pixel = e[1] - t[1], a.pixelLength = u[1] - u[0], a.pixelStart = u[0], a.signal = o.inverse ? -1 : 1), a }, singleAxis(t, e, n, i, r) { const o = n.axis; const a = r.model.coordinateSystem.getRect(); const s = {}; return t = t || [0, 0], o.orient === 'horizontal' ? (s.pixel = e[0] - t[0], s.pixelLength = a.width, s.pixelStart = a.x, s.signal = o.inverse ? 1 : -1) : (s.pixel = e[1] - t[1], s.pixelLength = a.height, s.pixelStart = a.y, s.signal = o.inverse ? -1 : 1), s } }; function HB(t) { + BE(t), t.registerComponentModel(PB), t.registerComponentView(BB), (function (t) { + t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER, (t, e) => { + const n = OB(e); const i = n.coordSysRecordMap || (n.coordSysRecordMap = ft()); i.each((t) => { t.dataZoomInfoMap = null }), t.eachComponent({ mainType: 'dataZoom', subType: 'inside' }, (t) => { E(CE(t).infoList, (n) => { const r = n.model.uid; const o = i.get(r) || i.set(r, (function (t, e) { let n = { model: e, containsPoint: H(zB, e), dispatchAction: H(EB, t), dataZoomInfoMap: null, controller: null }; let i = n.controller = new kI(t.getZr()); return E(['pan', 'zoom', 'scrollMove'], (t) =>{ i.on(t, ((e) =>{ var i = []; n.dataZoomInfoMap.each(function(r){if(e.isAvailableBehavior(r.model.option)){var o=(r.getRange||{})[t],a=o&&o(r.dzReferCoordSysInfo,n.model.mainType,n.controller,e);!r.model.get("disabled",!0)&&a&&i.push({dataZoomId:r.model.id,start:a[0],end:a[1]})}}), i.length && n.dispatchAction(i) })) }), n }(e, n.model))); (o.dataZoomInfoMap || (o.dataZoomInfoMap = ft())).set(t.uid, { dzReferCoordSysInfo: n, model: t, getRange: null }) }) }), i.each((t) => { + let e; const n = t.controller; const r = t.dataZoomInfoMap; if (r) { const o = r.keys()[0]; o != null && (e = r.get(o)) } if (e) { const a = (function (t) { let e; const n = "type_"; const i = { type_true: 2, type_move: 1, type_false: 0, type_undefined: -1 }; let r = !0; return t.each((t) => { let o = t.model; let a = !o.get('disabled', !0) && (!o.get('zoomLock', !0) || 'move'); i[n + a] > i[n + e] && (e = a), r = r && o.get('preventDefaultMouseMove', !0) }), { controlType: e, opt: { zoomOnMouseWheel: !0, moveOnMouseMove: !0, moveOnMouseWheel: !0, preventDefaultMouseMove: !!r } } }(r)); n.enable(a.controlType, a.opt), n.setPointerChecker(t.containsPoint), Ag(t, 'dispatchAction', e.model.get('throttle', !0), 'fixRate') } + else { + NB(i, t) + } + }) + }) + }(t)) + } const YB = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.type = 'dataZoom.slider', e.layoutMode = 'box', e.defaultOption = yc(AE.defaultOption, { show: !0, right: 'ph', top: 'ph', width: 'ph', height: 'ph', left: null, bottom: null, borderColor: '#d2dbee', borderRadius: 3, backgroundColor: 'rgba(47,69,84,0)', dataBackground: { lineStyle: { color: '#d2dbee', width: 0.5 }, areaStyle: { color: '#d2dbee', opacity: 0.2 } }, selectedDataBackground: { lineStyle: { color: '#8fb0f7', width: 0.5 }, areaStyle: { color: '#8fb0f7', opacity: 0.2 } }, fillerColor: 'rgba(135,175,274,0.2)', handleIcon: 'path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z', handleSize: '100%', handleStyle: { color: '#fff', borderColor: '#ACB8D1' }, moveHandleSize: 7, moveHandleIcon: 'path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z', moveHandleStyle: { color: '#D2DBEE', opacity: 0.7 }, showDetail: !0, showDataShadow: 'auto', realtime: !0, zoomLock: !1, textStyle: { color: '#6E7079' }, brushSelect: !0, brushStyle: { color: 'rgba(135,175,274,0.15)' }, emphasis: { handleStyle: { borderColor: '#8FB0F7' }, moveHandleStyle: { color: '#8FB0F7' } } }), e }(AE)); const UB = Cs; const XB = 'horizontal'; const ZB = 'vertical'; const jB = ['line', 'bar', 'candlestick', 'scatter']; const qB = { easing: 'cubicOut', duration: 100, delay: 0 }; const KB = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n._displayables = {}, n } return n(e, t), e.prototype.init = function (t, e) { this.api = e, this._onBrush = W(this._onBrush, this), this._onBrushEnd = W(this._onBrushEnd, this) }, e.prototype.render = function (e, n, i, r) { + if (t.prototype.render.apply(this, arguments), Ag(this, '_dispatchZoomAction', e.get('throttle'), 'fixRate'), this._orient = e.getOrient(), !1 !== e.get('show')) { + if (e.noTarget()) + return this._clear(), void this.group.removeAll(); r && r.type === 'dataZoom' && r.from === this.uid || this._buildView(), this._updateView() + } + else { + this.group.removeAll() + } + }, e.prototype.dispose = function () { this._clear(), t.prototype.dispose.apply(this, arguments) }, e.prototype._clear = function () { kg(this, '_dispatchZoomAction'); const t = this.api.getZr(); t.off('mousemove', this._onBrush), t.off('mouseup', this._onBrushEnd) }, e.prototype._buildView = function () { const t = this.group; t.removeAll(), this._brushing = !1, this._displayables.brushRect = null, this._resetLocation(), this._resetInterval(); const e = this._displayables.sliderGroup = new Cr(); this._renderBackground(), this._renderHandle(), this._renderDataShadow(), t.add(e), this._positionGroup() }, e.prototype._resetLocation = function () { const t = this.dataZoomModel; const e = this.api; const n = t.get('brushSelect') ? 7 : 0; const i = this._findCoordRect(); const r = { width: e.getWidth(), height: e.getHeight() }; const o = this._orient === XB ? { right: r.width - i.x - i.width, top: r.height - 30 - 7 - n, width: i.width, height: 30 } : { right: 7, top: i.y, width: 30, height: i.height }; const a = Sp(t.option); E(['right', 'top', 'width', 'height'], (t) => { a[t] === 'ph' && (a[t] = o[t]) }); const s = xp(a, r); this._location = { x: s.x, y: s.y }, this._size = [s.width, s.height], this._orient === ZB && this._size.reverse() }, e.prototype._positionGroup = function () { const t = this.group; const e = this._location; const n = this._orient; const i = this.dataZoomModel.getFirstTargetAxisModel(); const r = i && i.get('inverse'); const o = this._displayables.sliderGroup; const a = (this._dataShadowInfo || {}).otherAxisInverse; o.attr(n !== XB || r ? n === XB && r ? { scaleY: a ? 1 : -1, scaleX: -1 } : n !== ZB || r ? { scaleY: a ? -1 : 1, scaleX: -1, rotation: Math.PI / 2 } : { scaleY: a ? -1 : 1, scaleX: 1, rotation: Math.PI / 2 } : { scaleY: a ? 1 : -1, scaleX: 1 }); const s = t.getBoundingRect([o]); t.x = e.x - s.x, t.y = e.y - s.y, t.markRedraw() }, e.prototype._getViewExtent = function () { return [0, this._size[0]] }, e.prototype._renderBackground = function () { const t = this.dataZoomModel; const e = this._size; const n = this._displayables.sliderGroup; const i = t.get('brushSelect'); n.add(new UB({ silent: !0, shape: { x: 0, y: 0, width: e[0], height: e[1] }, style: { fill: t.get('backgroundColor') }, z2: -40 })); const r = new UB({ shape: { x: 0, y: 0, width: e[0], height: e[1] }, style: { fill: 'transparent' }, z2: 0, onclick: W(this._onClickPanel, this) }); const o = this.api.getZr(); i ? (r.on('mousedown', this._onBrushStart, this), r.cursor = 'crosshair', o.on('mousemove', this._onBrush), o.on('mouseup', this._onBrushEnd)) : (o.off('mousemove', this._onBrush), o.off('mouseup', this._onBrushEnd)), n.add(r) }, e.prototype._renderDataShadow = function () { + const t = this._dataShadowInfo = this._prepareDataShadowInfo(); if (this._displayables.dataShadowSegs = [], t) { + const e = this._size; const n = this._shadowSize || []; const i = t.series; const r = i.getRawData(); const o = i.getShadowDim ? i.getShadowDim() : t.otherDim; if (o != null) { + var a = this._shadowPolygonPts; var s = this._shadowPolylinePts; if (r !== this._shadowData || o !== this._shadowDim || e[0] !== n[0] || e[1] !== n[1]) { + let l = r.getDataExtent(o); const u = 0.3 * (l[1] - l[0]); l = [l[0] - u, l[1] + u]; let h; const c = [0, e[1]]; const p = [0, e[0]]; const d = [[e[0], 0], [0, 0]]; const f = []; const g = p[1] / (r.count() - 1); let y = 0; const v = Math.round(r.count() / e[0]); r.each([o], (t, e) => { + if (v > 0 && e % v) { + y += g + } + else { const n = t == null || isNaN(t) || t === ''; const i = n ? 0 : Nr(t, l, c, !0); n && !h && e ? (d.push([d[d.length - 1][0], 0]), f.push([f[f.length - 1][0], 0])) : !n && h && (d.push([y, 0]), f.push([y, 0])), d.push([y, i]), f.push([y, i]), y += g, h = n } + }), a = this._shadowPolygonPts = d, s = this._shadowPolylinePts = f + } this._shadowData = r, this._shadowDim = o, this._shadowSize = [e[0], e[1]]; for (var m = this.dataZoomModel, x = 0; x < 3; x++) { const _ = b(x === 1); this._displayables.sliderGroup.add(_), this._displayables.dataShadowSegs.push(_) } + } + } function b(t) { const e = m.getModel(t ? 'selectedDataBackground' : 'dataBackground'); const n = new Cr(); const i = new Pu({ shape: { points: a }, segmentIgnoreThreshold: 1, style: e.getModel('areaStyle').getAreaStyle(), silent: !0, z2: -20 }); const r = new Ru({ shape: { points: s }, segmentIgnoreThreshold: 1, style: e.getModel('lineStyle').getLineStyle(), silent: !0, z2: -19 }); return n.add(i), n.add(r), n } + }, e.prototype._prepareDataShadowInfo = function () { const t = this.dataZoomModel; const e = t.get('showDataShadow'); if (!1 !== e) { let n; const i = this.ecModel; return t.eachTargetAxis(function (r, o) { E(t.getAxisProxy(r, o).getTargetSeriesModels(), (t) => { if (!(n || !0 !== e && P(jB, t.get('type')) < 0)) { let a; const s = i.getComponent(IE(r), o).axis; let l = { x: 'y', y: 'x', radius: 'angle', angle: 'radius' }[r]; const u = t.coordinateSystem; l != null && u.getOtherAxis && (a = u.getOtherAxis(s).inverse), l = t.getData().mapDimension(l), n = { thisAxis: s, series: t, thisDim: r, otherDim: l, otherAxisInverse: a } } }, this) }, this), n } }, e.prototype._renderHandle = function () { const t = this.group; const e = this._displayables; const n = e.handles = [null, null]; const i = e.handleLabels = [null, null]; const r = this._displayables.sliderGroup; const o = this._size; const a = this.dataZoomModel; const s = this.api; const l = a.get('borderRadius') || 0; const u = a.get('brushSelect'); const h = e.filler = new UB({ silent: u, style: { fill: a.get('fillerColor') }, textConfig: { position: 'inside' } }); r.add(h), r.add(new UB({ silent: !0, subPixelOptimize: !0, shape: { x: 0, y: 0, width: o[0], height: o[1], r: l }, style: { stroke: a.get('dataBackgroundColor') || a.get('borderColor'), lineWidth: 1, fill: 'rgba(0,0,0,0)' } })), E([0, 1], function (e) { let o = a.get('handleIcon'); !Dy[o] && !o.includes('path://') && !o.includes('image://') && (o = `path://${o}`); const s = Ly(o, -1, 0, 2, 2, null, !0); s.attr({ cursor: $B(this._orient), draggable: !0, drift: W(this._onDragMove, this, e), ondragend: W(this._onDragEnd, this), onmouseover: W(this._showDataInfo, this, !0), onmouseout: W(this._showDataInfo, this, !1), z2: 5 }); const l = s.getBoundingRect(); const u = a.get('handleSize'); this._handleHeight = Er(u, this._size[1]), this._handleWidth = l.width / l.height * this._handleHeight, s.setStyle(a.getModel('handleStyle').getItemStyle()), s.style.strokeNoScale = !0, s.rectHover = !0, s.ensureState('emphasis').style = a.getModel(['emphasis', 'handleStyle']).getItemStyle(), Ol(s); const h = a.get('handleColor'); h != null && (s.style.fill = h), r.add(n[e] = s); const c = a.getModel('textStyle'); t.add(i[e] = new ks({ silent: !0, invisible: !0, style: Uh(c, { x: 0, y: 0, text: '', verticalAlign: 'middle', align: 'center', fill: c.getTextColor(), font: c.getFont() }), z2: 10 })) }, this); let c = h; if (u) { const p = Er(a.get('moveHandleSize'), o[1]); const d = e.moveHandle = new Cs({ style: a.getModel('moveHandleStyle').getItemStyle(), silent: !0, shape: { r: [0, 0, 2, 2], y: o[1] - 0.5, height: p } }); const f = 0.8 * p; const g = e.moveHandleIcon = Ly(a.get('moveHandleIcon'), -f / 2, -f / 2, f, f, '#fff', !0); g.silent = !0, g.y = o[1] + p / 2 - 0.5, d.ensureState('emphasis').style = a.getModel(['emphasis', 'moveHandleStyle']).getItemStyle(); const y = Math.min(o[1] / 2, Math.max(p, 10)); (c = e.moveZone = new Cs({ invisible: !0, shape: { y: o[1] - y, height: p + y } })).on('mouseover', () => { s.enterEmphasis(d) }).on('mouseout', () => { s.leaveEmphasis(d) }), r.add(d), r.add(g), r.add(c) }c.attr({ draggable: !0, cursor: $B(this._orient), drift: W(this._onDragMove, this, 'all'), ondragstart: W(this._showDataInfo, this, !0), ondragend: W(this._onDragEnd, this), onmouseover: W(this._showDataInfo, this, !0), onmouseout: W(this._showDataInfo, this, !1) }) }, e.prototype._resetInterval = function () { const t = this._range = this.dataZoomModel.getPercentRange(); const e = this._getViewExtent(); this._handleEnds = [Nr(t[0], [0, 100], e, !0), Nr(t[1], [0, 100], e, !0)] }, e.prototype._updateInterval = function (t, e) { const n = this.dataZoomModel; const i = this._handleEnds; const r = this._getViewExtent(); const o = n.findRepresentativeAxisProxy().getMinMaxSpan(); const a = [0, 100]; lk(e, i, r, n.get('zoomLock') ? 'all' : t, o.minSpan != null ? Nr(o.minSpan, a, r, !0) : null, o.maxSpan != null ? Nr(o.maxSpan, a, r, !0) : null); const s = this._range; const l = this._range = Vr([Nr(i[0], r, a, !0), Nr(i[1], r, a, !0)]); return !s || s[0] !== l[0] || s[1] !== l[1] }, e.prototype._updateView = function (t) { const e = this._displayables; const n = this._handleEnds; const i = Vr(n.slice()); const r = this._size; E([0, 1], function (t) { const i = e.handles[t]; const o = this._handleHeight; i.attr({ scaleX: o / 2, scaleY: o / 2, x: n[t] + (t ? -1 : 1), y: r[1] / 2 - o / 2 }) }, this), e.filler.setShape({ x: i[0], y: 0, width: i[1] - i[0], height: r[1] }); const o = { x: i[0], width: i[1] - i[0] }; e.moveHandle && (e.moveHandle.setShape(o), e.moveZone.setShape(o), e.moveZone.getBoundingRect(), e.moveHandleIcon && e.moveHandleIcon.attr('x', o.x + o.width / 2)); for (let a = e.dataShadowSegs, s = [0, i[0], i[1], r[0]], l = 0; l < a.length; l++) { const u = a[l]; let h = u.getClipPath(); h || (h = new Cs(), u.setClipPath(h)), h.setShape({ x: s[l], y: 0, width: s[l + 1] - s[l], height: r[1] }) } this._updateDataInfo(t) }, e.prototype._updateDataInfo = function (t) { const e = this.dataZoomModel; const n = this._displayables; const i = n.handleLabels; const r = this._orient; let o = ['', '']; if (e.get('showDetail')) { const a = e.findRepresentativeAxisProxy(); if (a) { const s = a.getAxisModel().axis; const l = this._range; const u = t ? a.calculateDataWindow({ start: l[0], end: l[1] }).valueWindow : a.getDataValueWindow(); o = [this._formatLabel(u[0], s), this._formatLabel(u[1], s)] } } const h = Vr(this._handleEnds.slice()); function c(t) { const e = Ih(n.handles[t].parent, this.group); const a = Ch(t === 0 ? 'right' : 'left', e); const s = this._handleWidth / 2 + 5; const l = Th([h[t] + (t === 0 ? -s : s), this._size[1] / 2], e); i[t].setStyle({ x: l[0], y: l[1], verticalAlign: r === XB ? 'middle' : a, align: r === XB ? a : 'center', text: o[t] }) }c.call(this, 0), c.call(this, 1) }, e.prototype._formatLabel = function (t, e) { const n = this.dataZoomModel; const i = n.get('labelFormatter'); let r = n.get('labelPrecision'); r != null && r !== 'auto' || (r = e.getPixelPrecision()); const o = t == null || isNaN(t) ? '' : e.type === 'category' || e.type === 'time' ? e.scale.getLabel({ value: Math.round(t) }) : t.toFixed(Math.min(r, 20)); return U(i) ? i(t, o) : X(i) ? i.replace('{value}', o) : o }, e.prototype._showDataInfo = function (t) { t = this._dragging || t; const e = this._displayables; const n = e.handleLabels; n[0].attr('invisible', !t), n[1].attr('invisible', !t), e.moveHandle && this.api[t ? 'enterEmphasis' : 'leaveEmphasis'](e.moveHandle, 1) }, e.prototype._onDragMove = function (t, e, n, i) { this._dragging = !0, se(i.event); const r = Th([e, n], this._displayables.sliderGroup.getLocalTransform(), !0); const o = this._updateInterval(t, r[0]); const a = this.dataZoomModel.get('realtime'); this._updateView(!a), o && a && this._dispatchZoomAction(!0) }, e.prototype._onDragEnd = function () { this._dragging = !1, this._showDataInfo(!1), !this.dataZoomModel.get('realtime') && this._dispatchZoomAction(!1) }, e.prototype._onClickPanel = function (t) { const e = this._size; const n = this._displayables.sliderGroup.transformCoordToLocal(t.offsetX, t.offsetY); if (!(n[0] < 0 || n[0] > e[0] || n[1] < 0 || n[1] > e[1])) { const i = this._handleEnds; const r = (i[0] + i[1]) / 2; const o = this._updateInterval('all', n[0] - r); this._updateView(), o && this._dispatchZoomAction(!1) } }, e.prototype._onBrushStart = function (t) { const e = t.offsetX; const n = t.offsetY; this._brushStart = new Ji(e, n), this._brushing = !0, this._brushStartTime = +new Date() }, e.prototype._onBrushEnd = function (t) { if (this._brushing) { const e = this._displayables.brushRect; if (this._brushing = !1, e) { e.attr('ignore', !0); const n = e.shape; if (!(+new Date() - this._brushStartTime < 200 && Math.abs(n.width) < 5)) { const i = this._getViewExtent(); const r = [0, 100]; this._range = Vr([Nr(n.x, i, r, !0), Nr(n.x + n.width, i, r, !0)]), this._handleEnds = [n.x, n.x + n.width], this._updateView(), this._dispatchZoomAction(!1) } } } }, e.prototype._onBrush = function (t) { this._brushing && (se(t.event), this._updateBrushRect(t.offsetX, t.offsetY)) }, e.prototype._updateBrushRect = function (t, e) { const n = this._displayables; const i = this.dataZoomModel; let r = n.brushRect; r || (r = n.brushRect = new UB({ silent: !0, style: i.getModel('brushStyle').getItemStyle() }), n.sliderGroup.add(r)), r.attr('ignore', !1); const o = this._brushStart; const a = this._displayables.sliderGroup; const s = a.transformCoordToLocal(t, e); const l = a.transformCoordToLocal(o.x, o.y); const u = this._size; s[0] = Math.max(Math.min(u[0], s[0]), 0), r.setShape({ x: l[0], y: 0, width: s[0] - l[0], height: u[1] }) }, e.prototype._dispatchZoomAction = function (t) { const e = this._range; this.api.dispatchAction({ type: 'dataZoom', from: this.uid, dataZoomId: this.dataZoomModel.id, animation: t ? qB : null, start: e[0], end: e[1] }) }, e.prototype._findCoordRect = function () { let t; const e = CE(this.dataZoomModel).infoList; if (!t && e.length) { const n = e[0].model.coordinateSystem; t = n.getRect && n.getRect() } if (!t) { const i = this.api.getWidth(); const r = this.api.getHeight(); t = { x: 0.2 * i, y: 0.2 * r, width: 0.6 * i, height: 0.6 * r } } return t }, e.type = 'dataZoom.slider', e + }(PE)); function $B(t) { return t === 'vertical' ? 'ns-resize' : 'ew-resize' } function JB(t) { t.registerComponentModel(YB), t.registerComponentView(KB), BE(t) } const QB = function (t, e, n) { const i = T((tF[t] || {})[e]); return n && Y(i) ? i[i.length - 1] : i }; var tF = { color: { active: ['#006edd', '#e0ffff'], inactive: ['rgba(0,0,0,0)'] }, colorHue: { active: [0, 360], inactive: [0, 0] }, colorSaturation: { active: [0.3, 1], inactive: [0, 0] }, colorLightness: { active: [0.9, 0.5], inactive: [0, 0] }, colorAlpha: { active: [0.3, 1], inactive: [0, 0] }, opacity: { active: [0.3, 1], inactive: [0, 0] }, symbol: { active: ['circle', 'roundRect', 'diamond'], inactive: ['none'] }, symbolSize: { active: [10, 50], inactive: [0, 0] } }; const eF = iD.mapVisual; const nF = iD.eachVisual; const iF = Y; const rF = E; const oF = Vr; const aF = Nr; const sF = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.stateList = ['inRange', 'outOfRange'], n.replacableOptionKeys = ['inRange', 'outOfRange', 'target', 'controller', 'color'], n.layoutMode = { type: 'box', ignoreSize: !0 }, n.dataBound = [-1 / 0, 1 / 0], n.targetVisuals = {}, n.controllerVisuals = {}, n } return n(e, t), e.prototype.init = function (t, e, n) { this.mergeDefaultAndTheme(t, n) }, e.prototype.optionUpdated = function (t, e) { const n = this.option; !e && eV(n, t, this.replacableOptionKeys), this.textStyleModel = this.getModel('textStyle'), this.resetItemSize(), this.completeVisualOption() }, e.prototype.resetVisual = function (t) { const e = this.stateList; t = W(t, this), this.controllerVisuals = tV(this.option.controller, e, t), this.targetVisuals = tV(this.option.target, e, t) }, e.prototype.getItemSymbol = function () { return null }, e.prototype.getTargetSeriesIndices = function () { const t = this.option.seriesIndex; let e = []; return t == null || t === 'all' ? this.ecModel.eachSeries((t, n) => { e.push(n) }) : e = ho(t), e }, e.prototype.eachTargetSeries = function (t, e) { E(this.getTargetSeriesIndices(), function (n) { const i = this.ecModel.getSeriesByIndex(n); i && t.call(e, i) }, this) }, e.prototype.isTargetSeries = function (t) { let e = !1; return this.eachTargetSeries((n) => { n === t && (e = !0) }), e }, e.prototype.formatValueText = function (t, e, n) { let i; const r = this.option; const o = r.precision; const a = this.dataBound; const s = r.formatter; n = n || ['<', '>'], Y(t) && (t = t.slice(), i = !0); const l = e ? t : i ? [u(t[0]), u(t[1])] : u(t); return X(s) ? s.replace('{value}', i ? l[0] : l).replace('{value2}', i ? l[1] : l) : U(s) ? i ? s(t[0], t[1]) : s(t) : i ? t[0] === a[0] ? `${n[0]} ${l[1]}` : t[1] === a[1] ? `${n[1]} ${l[0]}` : `${l[0]} - ${l[1]}` : l; function u(t) { return t === a[0] ? 'min' : t === a[1] ? 'max' : (+t).toFixed(Math.min(o, 20)) } }, e.prototype.resetExtent = function () { const t = this.option; const e = oF([t.min, t.max]); this._dataExtent = e }, e.prototype.getDataDimensionIndex = function (t) { + const e = this.option.dimension; if (e != null) + return t.getDimensionIndex(e); for (let n = t.dimensions, i = n.length - 1; i >= 0; i--) { + const r = n[i]; const o = t.getDimensionInfo(r); if (!o.isCalculationCoord) + return o.storeDimIndex + } + }, e.prototype.getExtent = function () { return this._dataExtent.slice() }, e.prototype.completeVisualOption = function () { const t = this.ecModel; const e = this.option; const n = { inRange: e.inRange, outOfRange: e.outOfRange }; const i = e.target || (e.target = {}); const r = e.controller || (e.controller = {}); C(i, n), C(r, n); const o = this.isCategory(); function a(n) { iF(e.color) && !n.inRange && (n.inRange = { color: e.color.slice().reverse() }), n.inRange = n.inRange || { color: t.get('gradientColor') } }a.call(this, i), a.call(this, r), (function (t, e, n) { const i = t[e]; let r = t[n]; i && !r && (r = t[n] = {}, rF(i, (t, e) => { if (iD.isValidType(e)) { const n = QB(e, 'inactive', o); n != null && (r[e] = n, e !== 'color' || r.hasOwnProperty('opacity') || r.hasOwnProperty('colorAlpha') || (r.opacity = [0, 0])) } })) }.call(this, i, 'inRange', 'outOfRange')), (function (t) { const e = (t.inRange || {}).symbol || (t.outOfRange || {}).symbol; const n = (t.inRange || {}).symbolSize || (t.outOfRange || {}).symbolSize; const i = this.get('inactiveColor'); const r = this.getItemSymbol() || 'roundRect'; rF(this.stateList, function (a) { const s = this.itemSize; let l = t[a]; l || (l = t[a] = { color: o ? i : [i] }), l.symbol == null && (l.symbol = e && T(e) || (o ? r : [r])), l.symbolSize == null && (l.symbolSize = n && T(n) || (o ? s[0] : [s[0], s[0]])), l.symbol = eF(l.symbol, (t) => { return 'none' === t ? r : t }); const u = l.symbolSize; if (u != null) { let h = -1 / 0; nF(u, (t) => { t > h && (h = t) }), l.symbolSize = eF(u, (t) => { return aF(t, [0, h], [0, s[0]], !0) }) } }, this) }.call(this, r)) }, e.prototype.resetItemSize = function () { this.itemSize = [Number.parseFloat(this.get('itemWidth')), Number.parseFloat(this.get('itemHeight'))] }, e.prototype.isCategory = function () { return !!this.option.categories }, e.prototype.setSelected = function (t) {}, e.prototype.getSelected = function () { return null }, e.prototype.getValueState = function (t) { return null }, e.prototype.getVisualMeta = function (t) { return null }, e.type = 'visualMap', e.dependencies = ['series'], e.defaultOption = { show: !0, z: 4, seriesIndex: 'all', min: 0, max: 200, left: 0, right: null, top: null, bottom: 0, itemWidth: null, itemHeight: null, inverse: !1, orient: 'vertical', backgroundColor: 'rgba(0,0,0,0)', borderColor: '#ccc', contentColor: '#5793f3', inactiveColor: '#aaa', borderWidth: 0, padding: 5, textGap: 10, precision: 0, textStyle: { color: '#333' } }, e + }(Tp)); const lF = [20, 140]; const uF = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.optionUpdated = function (e, n) { t.prototype.optionUpdated.apply(this, arguments), this.resetExtent(), this.resetVisual(function (t) { t.mappingMethod = 'linear', t.dataExtent = this.getExtent() }), this._resetRange() }, e.prototype.resetItemSize = function () { t.prototype.resetItemSize.apply(this, arguments); const e = this.itemSize; (e[0] == null || isNaN(e[0])) && (e[0] = lF[0]), (e[1] == null || isNaN(e[1])) && (e[1] = lF[1]) }, e.prototype._resetRange = function () { const t = this.getExtent(); const e = this.option.range; !e || e.auto ? (t.auto = 1, this.option.range = t) : Y(e) && (e[0] > e[1] && e.reverse(), e[0] = Math.max(e[0], t[0]), e[1] = Math.min(e[1], t[1])) }, e.prototype.completeVisualOption = function () { t.prototype.completeVisualOption.apply(this, arguments), E(this.stateList, function (t) { const e = this.option.controller[t].symbolSize; e && e[0] !== e[1] && (e[0] = e[1] / 3) }, this) }, e.prototype.setSelected = function (t) { this.option.range = t.slice(), this._resetRange() }, e.prototype.getSelected = function () { const t = this.getExtent(); const e = Vr((this.get('range') || []).slice()); return e[0] > t[1] && (e[0] = t[1]), e[1] > t[1] && (e[1] = t[1]), e[0] < t[0] && (e[0] = t[0]), e[1] < t[0] && (e[1] = t[0]), e }, e.prototype.getValueState = function (t) { const e = this.option.range; const n = this.getExtent(); return (e[0] <= n[0] || e[0] <= t) && (e[1] >= n[1] || t <= e[1]) ? 'inRange' : 'outOfRange' }, e.prototype.findTargetDataIndices = function (t) { const e = []; return this.eachTargetSeries(function (n) { const i = []; const r = n.getData(); r.each(this.getDataDimensionIndex(r), (e, n) => { t[0] <= e && e <= t[1] && i.push(n) }, this), e.push({ seriesId: n.id, dataIndex: i }) }, this), e }, e.prototype.getVisualMeta = function (t) { const e = hF(this, 'outOfRange', this.getExtent()); const n = hF(this, 'inRange', this.option.range.slice()); const i = []; function r(e, n) { i.push({ value: e, color: t(e, n) }) } for (var o = 0, a = 0, s = n.length, l = e.length; a < l && (!n.length || e[a] <= n[0]); a++)e[a] < n[o] && r(e[a], 'outOfRange'); for (var u = 1; o < s; o++, u = 0)u && i.length && r(n[o], 'outOfRange'), r(n[o], 'inRange'); for (u = 1; a < l; a++)(!n.length || n[n.length - 1] < e[a]) && (u && (i.length && r(i[i.length - 1].value, 'outOfRange'), u = 0), r(e[a], 'outOfRange')); const h = i.length; return { stops: i, outerColors: [h ? i[0].color : 'transparent', h ? i[h - 1].color : 'transparent'] } }, e.type = 'visualMap.continuous', e.defaultOption = yc(sF.defaultOption, { align: 'auto', calculable: !1, hoverLink: !0, realtime: !0, handleIcon: 'path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z', handleSize: '120%', handleStyle: { borderColor: '#fff', borderWidth: 1 }, indicatorIcon: 'circle', indicatorSize: '50%', indicatorStyle: { borderColor: '#fff', borderWidth: 2, shadowBlur: 2, shadowOffsetX: 1, shadowOffsetY: 1, shadowColor: 'rgba(0,0,0,0.2)' } }), e }(sF)); function hF(t, e, n) { + if (n[0] === n[1]) + return n.slice(); for (var i = (n[1] - n[0]) / 200, r = n[0], o = [], a = 0; a <= 200 && r < n[1]; a++)o.push(r), r += i; return o.push(n[1]), o + } const cF = (function (t) { function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n.autoPositionValues = { left: 1, right: 1, top: 1, bottom: 1 }, n } return n(e, t), e.prototype.init = function (t, e) { this.ecModel = t, this.api = e }, e.prototype.render = function (t, e, n, i) { this.visualMapModel = t, !1 !== t.get('show') ? this.doRender(t, e, n, i) : this.group.removeAll() }, e.prototype.renderBackground = function (t) { const e = this.visualMapModel; const n = ip(e.get('padding') || 0); const i = t.getBoundingRect(); t.add(new Cs({ z2: -1, silent: !0, shape: { x: i.x - n[3], y: i.y - n[0], width: i.width + n[3] + n[1], height: i.height + n[0] + n[2] }, style: { fill: e.get('backgroundColor'), stroke: e.get('borderColor'), lineWidth: e.get('borderWidth') } })) }, e.prototype.getControllerVisual = function (t, e, n) { const i = (n = n || {}).forceState; const r = this.visualMapModel; const o = {}; if (e === 'color') { const a = r.get('contentColor'); o.color = a } function s(t) { return o[t] } function l(t, e) { o[t] = e } const u = r.controllerVisuals[i || r.getValueState(t)]; return E(iD.prepareVisualTypes(u), (i) => { let r = u[i]; n.convertOpacityToAlpha && i === 'opacity' && (i = 'colorAlpha', r = u.__alphaForOpacity), iD.dependsOn(i, e) && r && r.applyVisual(t, s, l) }), o[e] }, e.prototype.positionGroup = function (t) { const e = this.visualMapModel; const n = this.api; _p(t, e.getBoxLayoutParams(), { width: n.getWidth(), height: n.getHeight() }) }, e.prototype.doRender = function (t, e, n, i) {}, e.type = 'visualMap', e }(gg)); const pF = [['left', 'right', 'width'], ['top', 'bottom', 'height']]; function dF(t, e, n) { + const i = t.option; const r = i.align; if (r != null && r !== 'auto') + return r; for (var o = { width: e.getWidth(), height: e.getHeight() }, a = i.orient === 'horizontal' ? 1 : 0, s = pF[a], l = [0, null, 10], u = {}, h = 0; h < 3; h++)u[pF[1 - a][h]] = l[h], u[s[h]] = h === 2 ? n[0] : i[s[h]]; const c = [['x', 'width', 3], ['y', 'height', 0]][a]; const p = xp(u, o, i.padding); return s[(p.margin[c[2]] || 0) + p[c[0]] + 0.5 * p[c[1]] < 0.5 * o[c[1]] ? 0 : 1] + } function fF(t, e) { return E(t || [], (t) => { t.dataIndex != null && (t.dataIndexInside = t.dataIndex, t.dataIndex = null), t.highlightKey = `visualMap${e ? e.componentIndex : ''}` }), t } const gF = Nr; const yF = E; const vF = Math.min; const mF = Math.max; const xF = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n._shapes = {}, n._dataInterval = [], n._handleEnds = [], n._hoverLinkDataIndices = [], n } return n(e, t), e.prototype.doRender = function (t, e, n, i) { this._api = n, i && i.type === 'selectDataRange' && i.from === this.uid || this._buildView() }, e.prototype._buildView = function () { this.group.removeAll(); const t = this.visualMapModel; const e = this.group; this._orient = t.get('orient'), this._useHandle = t.get('calculable'), this._resetInterval(), this._renderBar(e); const n = t.get('text'); this._renderEndsText(e, n, 0), this._renderEndsText(e, n, 1), this._updateView(!0), this.renderBackground(e), this._updateView(), this._enableHoverLinkToSeries(), this._enableHoverLinkFromSeries(), this.positionGroup(e) }, e.prototype._renderEndsText = function (t, e, n) { if (e) { let i = e[1 - n]; i = i != null ? `${i}` : ''; const r = this.visualMapModel; const o = r.get('textGap'); const a = r.itemSize; const s = this._shapes.mainGroup; const l = this._applyTransform([a[0] / 2, n === 0 ? -o : a[1] + o], s); const u = this._applyTransform(n === 0 ? 'bottom' : 'top', s); const h = this._orient; const c = this.visualMapModel.textStyleModel; this.group.add(new ks({ style: Uh(c, { x: l[0], y: l[1], verticalAlign: h === 'horizontal' ? 'middle' : u, align: h === 'horizontal' ? u : 'center', text: i }) })) } }, e.prototype._renderBar = function (t) { const e = this.visualMapModel; const n = this._shapes; const i = e.itemSize; const r = this._orient; const o = this._useHandle; const a = dF(e, this.api, i); const s = n.mainGroup = this._createBarGroup(a); const l = new Cr(); s.add(l), l.add(n.outOfRange = _F()), l.add(n.inRange = _F(null, o ? wF(this._orient) : null, W(this._dragHandle, this, 'all', !1), W(this._dragHandle, this, 'all', !0))), l.setClipPath(new Cs({ shape: { x: 0, y: 0, width: i[0], height: i[1], r: 3 } })); const u = e.textStyleModel.getTextRect('国'); const h = mF(u.width, u.height); o && (n.handleThumbs = [], n.handleLabels = [], n.handleLabelPoints = [], this._createHandle(e, s, 0, i, h, r), this._createHandle(e, s, 1, i, h, r)), this._createIndicator(e, s, i, h, r), t.add(s) }, e.prototype._createHandle = function (t, e, n, i, r, o) { const a = W(this._dragHandle, this, n, !1); const s = W(this._dragHandle, this, n, !0); const l = gr(t.get('handleSize'), i[0]); const u = Ly(t.get('handleIcon'), -l / 2, -l / 2, l, l, null, !0); const h = wF(this._orient); u.attr({ cursor: h, draggable: !0, drift: a, ondragend: s, onmousemove(t) { se(t.event) } }), u.x = i[0] / 2, u.useStyle(t.getModel('handleStyle').getItemStyle()), u.setStyle({ strokeNoScale: !0, strokeFirst: !0 }), u.style.lineWidth *= 2, u.ensureState('emphasis').style = t.getModel(['emphasis', 'handleStyle']).getItemStyle(), Bl(u, !0), e.add(u); const c = this.visualMapModel.textStyleModel; const p = new ks({ cursor: h, draggable: !0, drift: a, onmousemove(t) { se(t.event) }, ondragend: s, style: Uh(c, { x: 0, y: 0, text: '' }) }); p.ensureState('blur').style = { opacity: 0.1 }, p.stateTransition = { duration: 200 }, this.group.add(p); const d = [l, 0]; const f = this._shapes; f.handleThumbs[n] = u, f.handleLabelPoints[n] = d, f.handleLabels[n] = p }, e.prototype._createIndicator = function (t, e, n, i, r) { + const o = gr(t.get('indicatorSize'), n[0]); const a = Ly(t.get('indicatorIcon'), -o / 2, -o / 2, o, o, null, !0); a.attr({ cursor: 'move', invisible: !0, silent: !0, x: n[0] / 2 }); const s = t.getModel('indicatorStyle').getItemStyle(); if (a instanceof _s) { const l = a.style; a.useStyle(A({ image: l.image, x: l.x, y: l.y, width: l.width, height: l.height }, s)) } + else { + a.useStyle(s) + }e.add(a); const u = this.visualMapModel.textStyleModel; const h = new ks({ silent: !0, invisible: !0, style: Uh(u, { x: 0, y: 0, text: '' }) }); this.group.add(h); const c = [(r === 'horizontal' ? i / 2 : 6) + n[0] / 2, 0]; const p = this._shapes; p.indicator = a, p.indicatorLabel = h, p.indicatorLabelPoint = c, this._firstShowIndicator = !0 + }, e.prototype._dragHandle = function (t, e, n, i) { if (this._useHandle) { if (this._dragging = !e, !e) { const r = this._applyTransform([n, i], this._shapes.mainGroup, !0); this._updateInterval(t, r[1]), this._hideIndicator(), this._updateView() }e === !this.visualMapModel.get('realtime') && this.api.dispatchAction({ type: 'selectDataRange', from: this.uid, visualMapId: this.visualMapModel.id, selected: this._dataInterval.slice() }), e ? !this._hovering && this._clearHoverLinkToSeries() : bF(this.visualMapModel) && this._doHoverLinkToSeries(this._handleEnds[t], !1) } }, e.prototype._resetInterval = function () { const t = this.visualMapModel; const e = this._dataInterval = t.getSelected(); const n = t.getExtent(); const i = [0, t.itemSize[1]]; this._handleEnds = [gF(e[0], n, i, !0), gF(e[1], n, i, !0)] }, e.prototype._updateInterval = function (t, e) { e = e || 0; const n = this.visualMapModel; const i = this._handleEnds; const r = [0, n.itemSize[1]]; lk(e, i, r, t, 0); const o = n.getExtent(); this._dataInterval = [gF(i[0], r, o, !0), gF(i[1], r, o, !0)] }, e.prototype._updateView = function (t) { const e = this.visualMapModel; const n = e.getExtent(); const i = this._shapes; const r = [0, e.itemSize[1]]; const o = t ? r : this._handleEnds; const a = this._createBarVisual(this._dataInterval, n, o, 'inRange'); const s = this._createBarVisual(n, n, r, 'outOfRange'); i.inRange.setStyle({ fill: a.barColor }).setShape('points', a.barPoints), i.outOfRange.setStyle({ fill: s.barColor }).setShape('points', s.barPoints), this._updateHandle(o, a) }, e.prototype._createBarVisual = function (t, e, n, i) { const r = { forceState: i, convertOpacityToAlpha: !0 }; const o = this._makeColorGradient(t, r); const a = [this.getControllerVisual(t[0], 'symbolSize', r), this.getControllerVisual(t[1], 'symbolSize', r)]; const s = this._createBarPoints(n, a); return { barColor: new Xu(0, 0, 0, 1, o), barPoints: s, handlesColor: [o[0].color, o[o.length - 1].color] } }, e.prototype._makeColorGradient = function (t, e) { + const n = []; const i = (t[1] - t[0]) / 100; n.push({ color: this.getControllerVisual(t[0], 'color', e), offset: 0 }); for (let r = 1; r < 100; r++) { + const o = t[0] + i * r; if (o > t[1]) + break; n.push({ color: this.getControllerVisual(o, 'color', e), offset: r / 100 }) + } return n.push({ color: this.getControllerVisual(t[1], 'color', e), offset: 1 }), n + }, e.prototype._createBarPoints = function (t, e) { const n = this.visualMapModel.itemSize; return [[n[0] - e[0], t[0]], [n[0], t[0]], [n[0], t[1]], [n[0] - e[1], t[1]]] }, e.prototype._createBarGroup = function (t) { const e = this._orient; const n = this.visualMapModel.get('inverse'); return new Cr(e !== 'horizontal' || n ? e === 'horizontal' && n ? { scaleX: t === 'bottom' ? -1 : 1, rotation: -Math.PI / 2 } : e !== 'vertical' || n ? { scaleX: t === 'left' ? 1 : -1 } : { scaleX: t === 'left' ? 1 : -1, scaleY: -1 } : { scaleX: t === 'bottom' ? 1 : -1, rotation: Math.PI / 2 }) }, e.prototype._updateHandle = function (t, e) { if (this._useHandle) { const n = this._shapes; const i = this.visualMapModel; const r = n.handleThumbs; const o = n.handleLabels; const a = i.itemSize; const s = i.getExtent(); yF([0, 1], function (l) { const u = r[l]; u.setStyle('fill', e.handlesColor[l]), u.y = t[l]; const h = gF(t[l], [0, a[1]], s, !0); const c = this.getControllerVisual(h, 'symbolSize'); u.scaleX = u.scaleY = c / a[0], u.x = a[0] - c / 2; const p = Th(n.handleLabelPoints[l], Ih(u, this.group)); o[l].setStyle({ x: p[0], y: p[1], text: i.formatValueText(this._dataInterval[l]), verticalAlign: 'middle', align: this._orient === 'vertical' ? this._applyTransform('left', n.mainGroup) : 'center' }) }, this) } }, e.prototype._showIndicator = function (t, e, n, i) { + const r = this.visualMapModel; const o = r.getExtent(); const a = r.itemSize; const s = [0, a[1]]; const l = this._shapes; const u = l.indicator; if (u) { + u.attr('invisible', !1); const h = this.getControllerVisual(t, 'color', { convertOpacityToAlpha: !0 }); const c = this.getControllerVisual(t, 'symbolSize'); const p = gF(t, o, s, !0); const d = a[0] - c / 2; const f = { x: u.x, y: u.y }; u.y = p, u.x = d; const g = Th(l.indicatorLabelPoint, Ih(u, this.group)); const y = l.indicatorLabel; y.attr('invisible', !1); const v = this._applyTransform('left', l.mainGroup); const m = this._orient === 'horizontal'; y.setStyle({ text: (n || '') + r.formatValueText(e), verticalAlign: m ? v : 'middle', align: m ? 'center' : v }); const x = { x: d, y: p, style: { fill: h } }; const _ = { style: { x: g[0], y: g[1] } }; if (r.ecModel.isAnimationEnabled() && !this._firstShowIndicator) { const b = { duration: 100, easing: 'cubicInOut', additive: !0 }; u.x = f.x, u.y = f.y, u.animateTo(x, b), y.animateTo(_, b) } + else { + u.attr(x), y.attr(_) + } this._firstShowIndicator = !1; const w = this._shapes.handleLabels; if (w) { + for (let S = 0; S < w.length; S++) this._api.enterBlur(w[S]) + } + } + }, e.prototype._enableHoverLinkToSeries = function () { const t = this; this._shapes.mainGroup.on('mousemove', (e) => { if (t._hovering = !0, !t._dragging) { const n = t.visualMapModel.itemSize; const i = t._applyTransform([e.offsetX, e.offsetY], t._shapes.mainGroup, !0, !0); i[1] = vF(mF(0, i[1]), n[1]), t._doHoverLinkToSeries(i[1], i[0] >= 0 && i[0] <= n[0]) } }).on('mouseout', () => { t._hovering = !1, !t._dragging && t._clearHoverLinkToSeries() }) }, e.prototype._enableHoverLinkFromSeries = function () { const t = this.api.getZr(); this.visualMapModel.option.hoverLink ? (t.on('mouseover', this._hoverLinkFromSeriesMouseOver, this), t.on('mouseout', this._hideIndicator, this)) : this._clearHoverLinkFromSeries() }, e.prototype._doHoverLinkToSeries = function (t, e) { + const n = this.visualMapModel; const i = n.itemSize; if (n.option.hoverLink) { + const r = [0, i[1]]; const o = n.getExtent(); t = vF(mF(r[0], t), r[1]); const a = (function (t, e, n) { let i = 6; const r = t.get('hoverLinkDataSize'); return r && (i = gF(r, e, n, !0) / 2), i }(n, o, r)); const s = [t - a, t + a]; const l = gF(t, r, o, !0); const u = [gF(s[0], r, o, !0), gF(s[1], r, o, !0)]; s[0] < r[0] && (u[0] = -1 / 0), s[1] > r[1] && (u[1] = 1 / 0), e && (u[0] === -1 / 0 ? this._showIndicator(l, u[1], '< ', a) : u[1] === 1 / 0 ? this._showIndicator(l, u[0], '> ', a) : this._showIndicator(l, l, '≈ ', a)); const h = this._hoverLinkDataIndices; let c = []; (e || bF(n)) && (c = this._hoverLinkDataIndices = n.findTargetDataIndices(u)); const p = (function (t, e) { + const n = {}; const i = {}; return r(t || [], n), r(e || [], i, n), [o(n), o(i)]; function r(t, e, n) { + for (let i = 0, r = t.length; i < r; i++) { + const o = xo(t[i].seriesId, null); if (o == null) + return; for (let a = ho(t[i].dataIndex), s = n && n[o], l = 0, u = a.length; l < u; l++) { const h = a[l]; s && s[h] ? s[h] = null : (e[o] || (e[o] = {}))[h] = 1 } + } + } function o(t, e) { + const n = []; for (const i in t) { + if (t.hasOwnProperty(i) && t[i] != null) { + if (e) { +n.push(+i); +} else { let r = o(t[i], !0); r.length && n.push({ seriesId: i, dataIndex: r }) } + } + } return n + } + }(h, c)); this._dispatchHighDown('downplay', fF(p[0], n)), this._dispatchHighDown('highlight', fF(p[1], n)) + } + }, e.prototype._hoverLinkFromSeriesMouseOver = function (t) { const e = t.target; const n = this.visualMapModel; if (e && Hs(e).dataIndex != null) { const i = Hs(e); const r = this.ecModel.getSeriesByIndex(i.seriesIndex); if (n.isTargetSeries(r)) { const o = r.getData(i.dataType); const a = o.getStore().get(n.getDataDimensionIndex(o), i.dataIndex); isNaN(a) || this._showIndicator(a, a) } } }, e.prototype._hideIndicator = function () { + const t = this._shapes; t.indicator && t.indicator.attr('invisible', !0), t.indicatorLabel && t.indicatorLabel.attr('invisible', !0); const e = this._shapes.handleLabels; if (e) { + for (let n = 0; n < e.length; n++) this._api.leaveBlur(e[n]) + } + }, e.prototype._clearHoverLinkToSeries = function () { this._hideIndicator(); const t = this._hoverLinkDataIndices; this._dispatchHighDown('downplay', fF(t, this.visualMapModel)), t.length = 0 }, e.prototype._clearHoverLinkFromSeries = function () { this._hideIndicator(); const t = this.api.getZr(); t.off('mouseover', this._hoverLinkFromSeriesMouseOver), t.off('mouseout', this._hideIndicator) }, e.prototype._applyTransform = function (t, e, n, i) { const r = Ih(e, i ? null : this.group); return Y(t) ? Th(t, r, n) : Ch(t, r, n) }, e.prototype._dispatchHighDown = function (t, e) { e && e.length && this.api.dispatchAction({ type: t, batch: e }) }, e.prototype.dispose = function () { this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries() }, e.prototype.remove = function () { this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries() }, e.type = 'visualMap.continuous', e + }(cF)); function _F(t, e, n, i) { return new Pu({ shape: { points: t }, draggable: !!n, cursor: e, drift: n, onmousemove(t) { se(t.event) }, ondragend: i }) } function bF(t) { const e = t.get('hoverLinkOnHandle'); return !!(e == null ? t.get('realtime') : e) } function wF(t) { return t === 'vertical' ? 'ns-resize' : 'ew-resize' } const SF = { type: 'selectDataRange', event: 'dataRangeSelected', update: 'update' }; const MF = function (t, e) { e.eachComponent({ mainType: 'visualMap', query: t }, (e) => { e.setSelected(t.selected) }) }; const IF = [{ createOnAllSeries: !0, reset(t, e) { + const n = []; return e.eachComponent('visualMap', (e) => { + let i; let r; let o; let a; let s; const l = t.pipelineContext; !e.isTargetSeries(t) || l && l.large || n.push((i = e.stateList, r = e.targetVisuals, o = W(e.getValueState, e), a = e.getDataDimensionIndex(t.getData()), s = {}, E(i, (t) => { const e = iD.prepareVisualTypes(r[t]); s[t] = e }), { progress(t, e) { + let n, i; function l(t) { return fy(e, i, t) } function u(t, n) { yy(e, i, t, n) }a != null && (n = e.getDimensionIndex(a)); for (let h = e.getStore(); (i = t.next()) != null;) { + const c = e.getRawDataItem(i); if (!c || !1 !== c.visualMap) { + for (let p = a != null ? h.get(n, i) : i, d = o(p), f = r[d], g = s[d], y = 0, v = g.length; y < v; y++) { const m = g[y]; f[m] && f[m].applyVisual(p, l, u) } + } + } + } })) + }), n + } }, { createOnAllSeries: !0, reset(t, e) { const n = t.getData(); const i = []; e.eachComponent('visualMap', (e) => { if (e.isTargetSeries(t)) { const r = e.getVisualMeta(W(TF, null, t, e)) || { stops: [], outerColors: [] }; const o = e.getDataDimensionIndex(n); o >= 0 && (r.dimension = o, i.push(r)) } }), t.getData().setVisual('visualMeta', i) } }]; function TF(t, e, n, i) { for (var r = e.targetVisuals[i], o = iD.prepareVisualTypes(r), a = { color: gy(t.getData(), 'color') }, s = 0, l = o.length; s < l; s++) { const u = o[s]; const h = r[u === 'opacity' ? '__alphaForOpacity' : u]; h && h.applyVisual(n, c, p) } return a.color; function c(t) { return a[t] } function p(t, e) { a[t] = e } } const CF = E; function DF(t) { let e = t && t.visualMap; Y(e) || (e = e ? [e] : []), CF(e, (t) => { if (t) { AF(t, 'splitList') && !AF(t, 'pieces') && (t.pieces = t.splitList, delete t.splitList); const e = t.pieces; e && Y(e) && CF(e, (t) => { q(t) && (AF(t, 'start') && !AF(t, 'min') && (t.min = t.start), AF(t, 'end') && !AF(t, 'max') && (t.max = t.end)) }) } }) } function AF(t, e) { return t && t.hasOwnProperty && t.hasOwnProperty(e) } let kF = !1; function LF(t) { kF || (kF = !0, t.registerSubTypeDefaulter('visualMap', (t) => { return t.categories || (t.pieces ? t.pieces.length > 0 : t.splitNumber > 0) && !t.calculable ? 'piecewise' : 'continuous' }), t.registerAction(SF, MF), E(IF, (e) => { t.registerVisual(t.PRIORITY.VISUAL.COMPONENT, e) }), t.registerPreprocessor(DF)) } function PF(t) { t.registerComponentModel(uF), t.registerComponentView(xF), LF(t) } const OF = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n._pieceList = [], n } return n(e, t), e.prototype.optionUpdated = function (e, n) { t.prototype.optionUpdated.apply(this, arguments), this.resetExtent(); const i = this._mode = this._determineMode(); this._pieceList = [], RF[this._mode].call(this, this._pieceList), this._resetSelected(e, n); const r = this.option.categories; this.resetVisual(function (t, e) { i === 'categories' ? (t.mappingMethod = 'category', t.categories = T(r)) : (t.dataExtent = this.getExtent(), t.mappingMethod = 'piecewise', t.pieceList = z(this._pieceList, (t) => { return t = T(t), e !== 'inRange' && (t.visual = null), t })) }) }, e.prototype.completeVisualOption = function () { const e = this.option; const n = {}; const i = iD.listVisualTypes(); const r = this.isCategory(); function o(t, e, n) { return t && t[e] && t[e].hasOwnProperty(n) }E(e.pieces, (t) => { E(i, (e) => { t.hasOwnProperty(e) && (n[e] = 1) }) }), E(n, function (t, n) { let i = !1; E(this.stateList, (t) => { i = i || o(e, t, n) || o(e.target, t, n) }, this), !i && E(this.stateList, (t) => { (e[t] || (e[t] = {}))[n] = QB(n, t === 'inRange' ? 'active' : 'inactive', r) }) }, this), t.prototype.completeVisualOption.apply(this, arguments) }, e.prototype._resetSelected = function (t, e) { const n = this.option; const i = this._pieceList; const r = (e ? n : t).selected || {}; if (n.selected = r, E(i, function (t, e) { const n = this.getSelectedMapKey(t); r.hasOwnProperty(n) || (r[n] = !0) }, this), n.selectedMode === 'single') { let o = !1; E(i, function (t, e) { const n = this.getSelectedMapKey(t); r[n] && (o ? r[n] = !1 : o = !0) }, this) } }, e.prototype.getItemSymbol = function () { return this.get('itemSymbol') }, e.prototype.getSelectedMapKey = function (t) { return this._mode === 'categories' ? `${t.value}` : `${t.index}` }, e.prototype.getPieceList = function () { return this._pieceList }, e.prototype._determineMode = function () { const t = this.option; return t.pieces && t.pieces.length > 0 ? 'pieces' : this.option.categories ? 'categories' : 'splitNumber' }, e.prototype.setSelected = function (t) { this.option.selected = T(t) }, e.prototype.getValueState = function (t) { const e = iD.findPieceIndex(t, this._pieceList); return e != null && this.option.selected[this.getSelectedMapKey(this._pieceList[e])] ? 'inRange' : 'outOfRange' }, e.prototype.findTargetDataIndices = function (t) { const e = []; const n = this._pieceList; return this.eachTargetSeries(function (i) { const r = []; const o = i.getData(); o.each(this.getDataDimensionIndex(o), (e, i) => { iD.findPieceIndex(e, n) === t && r.push(i) }, this), e.push({ seriesId: i.id, dataIndex: r }) }, this), e }, e.prototype.getRepresentValue = function (t) { + let e; if (this.isCategory()) { + e = t.value + } + else if (t.value != null) { + e = t.value + } + else { const n = t.interval || []; e = n[0] === -1 / 0 && n[1] === 1 / 0 ? 0 : (n[0] + n[1]) / 2 } return e + }, e.prototype.getVisualMeta = function (t) { + if (!this.isCategory()) { + var e = []; var n = ['', '']; var i = this; const r = this._pieceList.slice(); if (r.length) { let o = r[0].interval[0]; o !== -1 / 0 && r.unshift({ interval: [-1 / 0, o] }), (o = r[r.length - 1].interval[1]) !== 1 / 0 && r.push({ interval: [o, 1 / 0] }) } + else { + r.push({ interval: [-1 / 0, 1 / 0] }) + } let a = -1 / 0; return E(r, (t) => { const e = t.interval; e && (e[0] > a && s([a, e[0]], 'outOfRange'), s(e.slice()), a = e[1]) }, this), { stops: e, outerColors: n } + } function s(r, o) { const a = i.getRepresentValue({ interval: r }); o || (o = i.getValueState(a)); const s = t(a, o); r[0] === -1 / 0 ? n[0] = s : r[1] === 1 / 0 ? n[1] = s : e.push({ value: r[0], color: s }, { value: r[1], color: s }) } + }, e.type = 'visualMap.piecewise', e.defaultOption = yc(sF.defaultOption, { selected: null, minOpen: !1, maxOpen: !1, align: 'auto', itemWidth: 20, itemHeight: 14, itemSymbol: 'roundRect', pieces: null, categories: null, splitNumber: 5, selectedMode: 'multiple', itemGap: 10, hoverLink: !0 }), e + }(sF)); var RF = { splitNumber(t) { const e = this.option; let n = Math.min(e.precision, 20); const i = this.getExtent(); let r = e.splitNumber; r = Math.max(Number.parseInt(r, 10), 1), e.splitNumber = r; for (var o = (i[1] - i[0]) / r; +o.toFixed(n) !== o && n < 5;)n++; e.precision = n, o = +o.toFixed(n), e.minOpen && t.push({ interval: [-1 / 0, i[0]], close: [0, 0] }); for (let a = 0, s = i[0]; a < r; s += o, a++) { const l = a === r - 1 ? i[1] : s + o; t.push({ interval: [s, l], close: [1, 1] }) }e.maxOpen && t.push({ interval: [i[1], 1 / 0], close: [0, 0] }), Qr(t), E(t, function (t, e) { t.index = e, t.text = this.formatValueText(t.interval) }, this) }, categories(t) { const e = this.option; E(e.categories, function (e) { t.push({ text: this.formatValueText(e, !0), value: e }) }, this), NF(e, t) }, pieces(t) { + const e = this.option; E(e.pieces, (e, n) => { + q(e) || (e = { value: e }); const i = { text: '', index: n }; if (e.label != null && (i.text = e.label), e.hasOwnProperty('value')) { const r = i.value = e.value; i.interval = [r, r], i.close = [1, 1] } + else { for (var o = i.interval = [], a = i.close = [0, 0], s = [1, 0, 1], l = [-1 / 0, 1 / 0], u = [], h = 0; h < 2; h++) { for (let c = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][h], p = 0; p < 3 && o[h] == null; p++)o[h] = e[c[p]], a[h] = s[p], u[h] = p === 2; o[h] == null && (o[h] = l[h]) }u[0] && o[1] === 1 / 0 && (a[0] = 0), u[1] && o[0] === -1 / 0 && (a[1] = 0), o[0] === o[1] && a[0] && a[1] && (i.value = o[0]) }i.visual = iD.retrieveVisuals(e), t.push(i) + }, this), NF(e, t), Qr(t), E(t, function (t) { const e = t.close; const n = [['<', '≤'][e[1]], ['>', '≥'][e[0]]]; t.text = t.text || this.formatValueText(t.value != null ? t.value : t.interval, !1, n) }, this) + } }; function NF(t, e) { const n = t.inverse; (t.orient === 'vertical' ? !n : n) && e.reverse() } const EF = (function (t) { + function e() { const n = t !== null && t.apply(this, arguments) || this; return n.type = e.type, n } return n(e, t), e.prototype.doRender = function () { const t = this.group; t.removeAll(); const e = this.visualMapModel; const n = e.get('textGap'); const i = e.textStyleModel; const r = i.getFont(); const o = i.getTextColor(); const a = this._getItemAlign(); const s = e.itemSize; const l = this._getViewData(); const u = l.endsText; const h = it(e.get('showLabel', !0), !u); u && this._renderEndsText(t, u[0], s, h, a), E(l.viewPieceList, function (i) { const l = i.piece; const u = new Cr(); u.onclick = W(this._onItemClick, this, l), this._enableHoverLink(u, i.indexInModelPieceList); const c = e.getRepresentValue(l); if (this._createItemSymbol(u, c, [0, 0, s[0], s[1]]), h) { const p = this.visualMapModel.getValueState(c); u.add(new ks({ style: { x: a === 'right' ? -n : s[0] + n, y: s[1] / 2, text: l.text, verticalAlign: 'middle', align: a, font: r, fill: o, opacity: p === 'outOfRange' ? 0.5 : 1 } })) }t.add(u) }, this), u && this._renderEndsText(t, u[1], s, h, a), mp(e.get('orient'), t, e.get('itemGap')), this.renderBackground(t), this.positionGroup(t) }, e.prototype._enableHoverLink = function (t, e) { const n = this; t.on('mouseover', () => { return i('highlight') }).on('mouseout', () => { return i('downplay') }); var i = function (t) { const i = n.visualMapModel; i.option.hoverLink && n.api.dispatchAction({ type: t, batch: fF(i.findTargetDataIndices(e), i) }) } }, e.prototype._getItemAlign = function () { + const t = this.visualMapModel; const e = t.option; if (e.orient === 'vertical') + return dF(t, this.api, t.itemSize); let n = e.align; return n && n !== 'auto' || (n = 'left'), n + }, e.prototype._renderEndsText = function (t, e, n, i, r) { if (e) { const o = new Cr(); const a = this.visualMapModel.textStyleModel; o.add(new ks({ style: Uh(a, { x: i ? r === 'right' ? n[0] : 0 : n[0] / 2, y: n[1] / 2, verticalAlign: 'middle', align: i ? r : 'center', text: e }) })), t.add(o) } }, e.prototype._getViewData = function () { const t = this.visualMapModel; const e = z(t.getPieceList(), (t, e) => { return { piece: t, indexInModelPieceList: e } }); let n = t.get('text'); const i = t.get('orient'); const r = t.get('inverse'); return (i === 'horizontal' ? r : !r) ? e.reverse() : n && (n = n.slice().reverse()), { viewPieceList: e, endsText: n } }, e.prototype._createItemSymbol = function (t, e, n) { t.add(Ly(this.getControllerVisual(e, 'symbol'), n[0], n[1], n[2], n[3], this.getControllerVisual(e, 'color'))) }, e.prototype._onItemClick = function (t) { const e = this.visualMapModel; const n = e.option; const i = n.selectedMode; if (i) { const r = T(n.selected); const o = e.getSelectedMapKey(t); i === 'single' || !0 === i ? (r[o] = !0, E(r, (t, e) => { r[e] = e === o })) : r[o] = !r[o], this.api.dispatchAction({ type: 'selectDataRange', from: this.uid, visualMapId: this.visualMapModel.id, selected: r }) } }, e.type = 'visualMap.piecewise', e + }(cF)); function zF(t) { t.registerComponentModel(OF), t.registerComponentView(EF), LF(t) } const VF = { label: { enabled: !0 }, decal: { show: !1 } }; const BF = So(); const FF = {}; function GF(t, e) { + const n = t.getModel('aria'); if (n.get('enabled')) { + const i = T(VF); C(i.label, t.getLocaleModel().get('aria'), !1), C(n.option, i, !1), (function () { + if (n.getModel('decal').get('show')) { + const e = ft(); t.eachSeries((t) => { if (!t.isColorBySeries()) { let n = e.get(t.type); n || (n = {}, e.set(t.type, n)), BF(t).scope = n } }), t.eachRawSeries((e) => { + if (!t.isSeriesFiltered(e)) { + if (U(e.enableAriaDecal)) { + e.enableAriaDecal() + } + else { + const n = e.getData(); if (e.isColorBySeries()) { const i = ed(e.ecModel, e.name, FF, t.getSeriesCount()); const r = n.getVisual('decal'); n.setVisual('decal', u(r, i)) } + else { const o = e.getRawData(); const a = {}; const s = BF(e).scope; n.each((t) => { const e = n.getRawIndex(t); a[e] = t }); const l = o.count(); o.each((t) => { const i = a[t]; const r = o.getName(t) || `${t }`; const h = ed(e.ecModel, r, s, l); const c = n.getItemVisual(i, 'decal'); n.setItemVisual(i, 'decal', u(c, h)) }) } + } + } function u(t, e) { const n = t ? A(A({}, e), t) : e; return n.dirty = !0, n } + }) + } + }()), (function () { + const i = t.getLocaleModel().get('aria'); const o = n.getModel('label'); if (o.option = k(o.option, i), o.get('enabled')) { + const a = e.getZr().dom; if (o.get('description')) { + a.setAttribute('aria-label', o.get('description')) + } + else { + let s; const l = t.getSeriesCount(); const u = o.get(['data', 'maxCount']) || 10; const h = o.get(['series', 'maxCount']) || 10; const c = Math.min(l, h); if (!(l < 1)) { + const p = (function () { let e = t.get('title'); return e && e.length && (e = e[0]), e && e.text }()); if (p) + s = r(o.get(['general', 'withTitle']), { title: p }); else s = o.get(['general', 'withoutTitle']); const f = []; s += r(l > 1 ? o.get(['series', 'multiple', 'prefix']) : o.get(['series', 'single', 'prefix']), { seriesCount: l }), t.eachSeries((e, n) => { + if (n < c) { + let i = void 0; const a = e.get('name') ? 'withName' : 'withoutName'; i = r(i = l > 1 ? o.get(['series', 'multiple', a]) : o.get(['series', 'single', a]), { seriesId: e.seriesIndex, seriesName: e.get('name'), seriesType: (x = e.subType, t.getLocaleModel().get(['series', 'typeNames'])[x] || '自定义图') }); const s = e.getData(); s.count() > u ? i += r(o.get(['data', 'partialData']), { displayCnt: u }) : i += o.get(['data', 'allData']); for (var h = o.get(['data', 'separator', 'middle']), p = o.get(['data', 'separator', 'end']), d = [], g = 0; g < s.count(); g++) { + if (g < u) { const y = s.getName(g); const v = s.getValues(g); const m = o.get(['data', y ? 'withName' : 'withoutName']); d.push(r(m, { name: y, value: v.join(h) })) } + }i += d.join(h) + p, f.push(i) + } let x + }); const y = o.getModel(['series', 'multiple', 'separator']); const v = y.get('middle'); const m = y.get('end'); s += f.join(v) + m, a.setAttribute('aria-label', s) + } + } + } + }()) + } function r(t, e) { + if (!X(t)) + return t; let n = t; return E(e, (t, e) => { n = n.replace(new RegExp(`\\{\\s*${e}\\s*\\}`, 'g'), t) }), n + } + } function WF(t) { if (t && t.aria) { const e = t.aria; e.show != null && (e.enabled = e.show), e.label = e.label || {}, E(['description', 'general', 'series', 'data'], (t) => { e[t] != null && (e.label[t] = e[t]) }) } } const HF = { 'value': 'eq', '<': 'lt', '<=': 'lte', '>': 'gt', '>=': 'gte', '=': 'eq', '!=': 'ne', '<>': 'ne' }; const YF = (function () { function t(t) { if ((this._condVal = X(t) ? new RegExp(t) : et(t) ? t : null) == null) { ao('') } } return t.prototype.evaluate = function (t) { const e = typeof t; return X(e) ? this._condVal.test(t) : !!j(e) && this._condVal.test(`${t}`) }, t }()); const UF = (function () { function t() {} return t.prototype.evaluate = function () { return this.value }, t }()); const XF = (function () { + function t() {} return t.prototype.evaluate = function () { + for (let t = this.children, e = 0; e < t.length; e++) { + if (!t[e].evaluate()) + return !1 + } return !0 + }, t + }()); const ZF = (function () { + function t() {} return t.prototype.evaluate = function () { + for (let t = this.children, e = 0; e < t.length; e++) { + if (t[e].evaluate()) + return !0 + } return !1 + }, t + }()); const jF = (function () { function t() {} return t.prototype.evaluate = function () { return !this.child.evaluate() }, t }()); const qF = (function () { + function t() {} return t.prototype.evaluate = function () { + for (let t = !!this.valueParser, e = (0, this.getValue)(this.valueGetterParam), n = t ? this.valueParser(e) : null, i = 0; i < this.subCondList.length; i++) { + if (!this.subCondList[i].evaluate(t ? n : e)) + return !1 + } return !0 + }, t + }()); function KF(t, e) { if (!0 === t || !1 === t) { const n = new UF(); return n.value = t, n } return JF(t) || ao(''), t.and ? $F('and', t, e) : t.or ? $F('or', t, e) : t.not ? (function (t, e) { const n = t.not; JF(n) || ao(''); const r = new jF(); return r.child = KF(n, e), r.child || ao(''), r }(t, e)) : (function (t, e) { for (var i = e.prepareGetValue(t), r = [], o = G(t), a = t.parser, s = a ? gf(a) : null, l = 0; l < o.length; l++) { const u = o[l]; if (u !== 'parser' && !e.valueGetterAttrMap.get(u)) { const h = mt(HF, u) ? HF[u] : u; const c = t[u]; const p = s ? s(c) : c; const d = _f(h, p) || h === 'reg' && new YF(p); d || ao(''), r.push(d) } }r.length || ao(''); const f = new qF(); return f.valueGetterParam = i, f.valueParser = s, f.getValue = e.getValue, f.subCondList = r, f }(t, e)) } function $F(t, e, n) { const i = e[t]; Y(i) || ao(''), i.length || ao(''); const o = t === 'and' ? new XF() : new ZF(); return o.children = z(i, (t) => { return KF(t, n) }), o.children.length || ao(''), o } function JF(t) { return q(t) && !N(t) } const QF = (function () { function t(t, e) { this._cond = KF(t, e) } return t.prototype.evaluate = function () { return this._cond.evaluate() }, t }()); const tG = { type: 'echarts:filter', transform(t) { for (var e, n, i, r = t.upstream, o = (n = t.config, i = { valueGetterAttrMap: ft({ dimension: !0 }), prepareGetValue(t) { const n = t.dimension; mt(t, 'dimension') || ao(''); const i = r.getDimensionInfo(n); return i || ao(''), { dimIdx: i.index } }, getValue(t) { return r.retrieveValueFromItem(e, t.dimIdx) } }, new QF(n, i)), a = [], s = 0, l = r.count(); s < l; s++)e = r.getRawDataItem(s), o.evaluate() && a.push(e); return { data: a } } }; const eG = { type: 'echarts:sort', transform(t) { + const e = t.upstream; const n = t.config; const i = ''; const r = ho(n); r.length || ao(i); const o = []; E(r, (t) => { const n = t.dimension; const r = t.order; const a = t.parser; const s = t.incomparable; if (n == null && ao(i), r !== 'asc' && r !== 'desc' && ao(i), s && s !== 'min' && s !== 'max') { ao('') } if (r !== 'asc' && r !== 'desc') { ao('') } const h = e.getDimensionInfo(n); h || ao(i); const c = a ? gf(a) : null; a && !c && ao(i), o.push({ dimIdx: h.index, parser: c, comparator: new mf(r, s) }) }); const a = e.sourceFormat; a !== Pp && a !== Op && ao(i); for (var s = [], l = 0, u = e.count(); l < u; l++)s.push(e.getRawDataItem(l)); return s.sort((t, n) => { + for (let i = 0; i < o.length; i++) { + const r = o[i]; let a = e.retrieveValueFromItem(t, r.dimIdx); let s = e.retrieveValueFromItem(n, r.dimIdx); r.parser && (a = r.parser(a), s = r.parser(s)); const l = r.comparator.evaluate(a, s); if (l !== 0) + return l + } return 0 + }), { data: s } + } }; const nG = (function (t) { function e() { const e = t !== null && t.apply(this, arguments) || this; return e.type = 'dataset', e } return n(e, t), e.prototype.init = function (e, n, i) { t.prototype.init.call(this, e, n, i), this._sourceManager = new Bf(this), Ff(this) }, e.prototype.mergeOption = function (e, n) { t.prototype.mergeOption.call(this, e, n), Ff(this) }, e.prototype.optionUpdated = function () { this._sourceManager.dirty() }, e.prototype.getSourceManager = function () { return this._sourceManager }, e.type = 'dataset', e.defaultOption = { seriesLayoutBy: zp }, e }(Tp)); const iG = (function (t) { function e() { const e = t !== null && t.apply(this, arguments) || this; return e.type = 'dataset', e } return n(e, t), e.type = 'dataset', e }(gg)); const rG = qa.CMD; function oG(t, e) { return Math.abs(t - e) < 1e-5 } function aG(t) { let e; let n; let i; let r; let o; const a = t.data; const s = t.len(); const l = []; let u = 0; let h = 0; let c = 0; let p = 0; function d(t, n) { e && e.length > 2 && l.push(e), e = [t, n] } function f(t, n, i, r) { oG(t, i) && oG(n, r) || e.push(t, n, i, r, i, r) } function g(t, n, i, r, o, a) { const s = Math.abs(n - t); const l = 4 * Math.tan(s / 4) / 3; const u = n < t ? -1 : 1; const h = Math.cos(t); const c = Math.sin(t); const p = Math.cos(n); const d = Math.sin(n); const f = h * o + i; const g = c * a + r; const y = p * o + i; const v = d * a + r; const m = o * l * u; const x = a * l * u; e.push(f - m * c, g + x * h, y + m * d, v - x * p, y, v) } for (let y = 0; y < s;) { const v = a[y++]; const m = y === 1; switch (m && (c = u = a[y], p = h = a[y + 1], v !== rG.L && v !== rG.C && v !== rG.Q || (e = [c, p])), v) { case rG.M:u = c = a[y++], h = p = a[y++], d(c, p); break; case rG.L:f(u, h, n = a[y++], i = a[y++]), u = n, h = i; break; case rG.C:e.push(a[y++], a[y++], a[y++], a[y++], u = a[y++], h = a[y++]); break; case rG.Q:n = a[y++], i = a[y++], r = a[y++], o = a[y++], e.push(u + 2 / 3 * (n - u), h + 2 / 3 * (i - h), r + 2 / 3 * (n - r), o + 2 / 3 * (i - o), r, o), u = r, h = o; break; case rG.A:var x = a[y++]; var _ = a[y++]; var b = a[y++]; var w = a[y++]; var S = a[y++]; var M = a[y++] + S; y += 1; var I = !a[y++]; n = Math.cos(S) * b + x, i = Math.sin(S) * w + _, m ? d(c = n, p = i) : f(u, h, n, i), u = Math.cos(M) * b + x, h = Math.sin(M) * w + _; for (let T = (I ? -1 : 1) * Math.PI / 2, C = S; I ? C > M : C < M; C += T)g(C, I ? Math.max(C + T, M) : Math.min(C + T, M), x, _, b, w); break; case rG.R:c = u = a[y++], p = h = a[y++], n = c + a[y++], i = p + a[y++], d(n, p), f(n, p, n, i), f(n, i, c, i), f(c, i, c, p), f(c, p, n, p); break; case rG.Z:e && f(u, h, c, p), u = c, h = p } } return e && e.length > 2 && l.push(e), l } function sG(t, e, n, i, r, o, a, s, l, u) { + if (oG(t, n) && oG(e, i) && oG(r, a) && oG(o, s)) { + l.push(a, s) + } + else { + const h = 2 / u; const c = h * h; let p = a - t; let d = s - e; const f = Math.sqrt(p * p + d * d); p /= f, d /= f; const g = n - t; const y = i - e; const v = r - a; const m = o - s; const x = g * g + y * y; const _ = v * v + m * m; if (x < c && _ < c) { + l.push(a, s) + } + else { + const b = p * g + d * y; const w = -p * v - d * m; if (x - b * b < c && b >= 0 && _ - w * w < c && w >= 0) { + l.push(a, s) + } + else { const S = []; const M = []; Ze(t, n, r, a, 0.5, S), Ze(e, i, o, s, 0.5, M), sG(S[0], M[0], S[1], M[1], S[2], M[2], S[3], M[3], l, u), sG(S[4], M[4], S[5], M[5], S[6], M[6], S[7], M[7], l, u) } + } + } + } function lG(t, e, n) { + const i = t[e]; const r = t[1 - e]; const o = Math.abs(i / r); let a = Math.ceil(Math.sqrt(o * n)); let s = Math.floor(n / a); s === 0 && (s = 1, a = n); for (var l = [], u = 0; u < a; u++)l.push(s); const h = n - a * s; if (h > 0) { + for (u = 0; u < h; u++)l[u % a] += 1 + } return l + } function uG(t, e, n) { + for (let i = t.r0, r = t.r, o = t.startAngle, a = t.endAngle, s = Math.abs(a - o), l = s * r, u = r - i, h = l > Math.abs(u), c = lG([l, u], h ? 0 : 1, e), p = (h ? s : u) / c.length, d = 0; d < c.length; d++) { + for (let f = (h ? u : s) / c[d], g = 0; g < c[d]; g++) { const y = {}; h ? (y.startAngle = o + p * d, y.endAngle = o + p * (d + 1), y.r0 = i + f * g, y.r = i + f * (g + 1)) : (y.startAngle = o + f * g, y.endAngle = o + f * (g + 1), y.r0 = i + p * d, y.r = i + p * (d + 1)), y.clockwise = t.clockwise, y.cx = t.cx, y.cy = t.cy, n.push(y) } + } + } function hG(t, e, n, i) { return t * i - n * e } function cG(t, e, n, i, r, o, a, s) { + const l = n - t; const u = i - e; const h = a - r; const c = s - o; const p = hG(h, c, l, u); if (Math.abs(p) < 1e-6) + return null; const d = hG(t - r, e - o, h, c) / p; return d < 0 || d > 1 ? null : new Ji(d * l + t, d * u + e) + } function pG(t, e, n) { const i = new Ji(); Ji.sub(i, n, e), i.normalize(); const r = new Ji(); return Ji.sub(r, t, e), r.dot(i) } function dG(t, e) { const n = t[t.length - 1]; n && n[0] === e[0] && n[1] === e[1] || t.push(e) } function fG(t) { + const e = t.points; const n = []; const i = []; Ma(e, n, i); const r = new sr(n[0], n[1], i[0] - n[0], i[1] - n[1]); const o = r.width; const a = r.height; const s = r.x; const l = r.y; const u = new Ji(); const h = new Ji(); return o > a ? (u.x = h.x = s + o / 2, u.y = l, h.y = l + a) : (u.y = h.y = l + a / 2, u.x = s, h.x = s + o), (function (t, e, n) { + for (var i = t.length, r = [], o = 0; o < i; o++) { const a = t[o]; const s = t[(o + 1) % i]; const l = cG(a[0], a[1], s[0], s[1], e.x, e.y, n.x, n.y); l && r.push({ projPt: pG(l, e, n), pt: l, idx: o }) } if (r.length < 2) + return [{ points: t }, { points: t }]; r.sort((t, e) => { return t.projPt - e.projPt }); let u = r[0]; let h = r[r.length - 1]; if (h.idx < u.idx) { const c = u; u = h, h = c } const p = [u.pt.x, u.pt.y]; const d = [h.pt.x, h.pt.y]; const f = [p]; const g = [d]; for (o = u.idx + 1; o <= h.idx; o++)dG(f, t[o].slice()); for (dG(f, d), dG(f, p), o = h.idx + 1; o <= u.idx + i; o++)dG(g, t[o % i].slice()); return dG(g, p), dG(g, d), [{ points: f }, { points: g }] + }(e, u, h)) + } function gG(t, e, n, i) { + if (n === 1) { + i.push(e) + } + else { const r = Math.floor(n / 2); const o = t(e); gG(t, o[0], r, i), gG(t, o[1], n - r, i) } return i + } function yG(t, e) { e.setStyle(t.style), e.z = t.z, e.z2 = t.z2, e.zlevel = t.zlevel } function mG(t, e) { + const n = t.length; const i = e.length; if (n === i) + return [t, e]; for (var r = [], o = [], a = n < i ? t : e, s = Math.min(n, i), l = Math.abs(i - n) / 6, u = (s - 2) / 6, h = Math.ceil(l / u) + 1, c = [a[0], a[1]], p = l, d = 2; d < s;) { + let f = a[d - 2]; let g = a[d - 1]; let y = a[d++]; let v = a[d++]; let m = a[d++]; let x = a[d++]; const _ = a[d++]; const b = a[d++]; if (p <= 0) { + c.push(y, v, m, x, _, b) + } + else { for (var w = Math.min(p, h - 1) + 1, S = 1; S <= w; S++) { const M = S / w; Ze(f, y, m, _, M, r), Ze(g, v, x, b, M, o), f = r[3], g = o[3], c.push(r[1], o[1], r[2], o[2], f, g), y = r[5], v = o[5], m = r[6], x = o[6] }p -= w - 1 } + } return a === t ? [c, e] : [t, c] + } function xG(t, e) { for (var n = t.length, i = t[n - 2], r = t[n - 1], o = [], a = 0; a < e.length;)o[a++] = i, o[a++] = r; return o } function _G(t) { for (var e = 0, n = 0, i = 0, r = t.length, o = 0, a = r - 2; o < r; a = o, o += 2) { const s = t[a]; const l = t[a + 1]; const u = t[o]; const h = t[o + 1]; const c = s * h - u * l; e += c, n += (s + u) * c, i += (l + h) * c } return e === 0 ? [t[0] || 0, t[1] || 0] : [n / e / 3, i / e / 3, e] } function bG(t, e, n, i) { for (var r = (t.length - 2) / 6, o = 1 / 0, a = 0, s = t.length, l = s - 2, u = 0; u < r; u++) { for (var h = 6 * u, c = 0, p = 0; p < s; p += 2) { const d = p === 0 ? h : (h + p - 2) % l + 2; const f = t[d] - n[0]; const g = t[d + 1] - n[1]; const y = e[p] - i[0] - f; const v = e[p + 1] - i[1] - g; c += y * y + v * v }c < o && (o = c, a = u) } return a } function wG(t) { for (var e = [], n = t.length, i = 0; i < n; i += 2)e[i] = t[n - i - 2], e[i + 1] = t[n - i - 1]; return e } function SG(t) { return t.__isCombineMorphing } const MG = '__mOriginal_'; function IG(t, e, n) { const i = MG + e; const r = t[i] || t[e]; t[i] || (t[i] = t[e]); const o = n.replace; const a = n.after; const s = n.before; t[e] = function () { let t; const e = arguments; return s && s.apply(this, e), t = o ? o.apply(this, e) : r.apply(this, e), a && a.apply(this, e), t } } function TG(t, e) { const n = MG + e; t[n] && (t[e] = t[n], t[n] = null) } function CG(t, e) { + for (let n = 0; n < t.length; n++) { + for (let i = t[n], r = 0; r < i.length;) { const o = i[r]; const a = i[r + 1]; i[r++] = e[0] * o + e[2] * a + e[4], i[r++] = e[1] * o + e[3] * a + e[5] } + } + } function DG(t, e) { const n = t.getUpdatedPathProxy(); const i = e.getUpdatedPathProxy(); const r = (function (t, e) { for (var n, i, r, o = [], a = [], s = 0; s < Math.max(t.length, e.length); s++) { const l = t[s]; const u = e[s]; let h = void 0; let c = void 0; l ? u ? (i = h = (n = mG(l, u))[0], r = c = n[1]) : (c = xG(r || l, l), h = l) : (h = xG(i || u, u), c = u), o.push(h), a.push(c) } return [o, a] }(aG(n), aG(i))); const o = r[0]; const a = r[1]; const s = t.getComputedTransform(); const l = e.getComputedTransform(); s && CG(o, s), l && CG(a, l), IG(e, 'updateTransform', { replace() { this.transform = null } }), e.transform = null; const u = (function (t, e, n, i) { for (var r, o = [], a = 0; a < t.length; a++) { let s = t[a]; const l = e[a]; const u = _G(s); const h = _G(l); r == null && (r = u[2] < 0 != h[2] < 0); const c = []; const p = []; let d = 0; let f = 1 / 0; const g = []; const y = s.length; r && (s = wG(s)); for (var v = 6 * bG(s, l, u, h), m = y - 2, x = 0; x < m; x += 2) { const _ = (v + x) % m + 2; c[x + 2] = s[_] - u[0], c[x + 3] = s[_ + 1] - u[1] }c[0] = s[v] - u[0], c[1] = s[v + 1] - u[1]; for (let b = i / 10, w = -i / 2; w <= i / 2; w += b) { const S = Math.sin(w); const M = Math.cos(w); let I = 0; for (x = 0; x < s.length; x += 2) { const T = c[x]; const C = c[x + 1]; const D = l[x] - h[0]; const A = l[x + 1] - h[1]; const k = D * M - A * S; const L = D * S + A * M; g[x] = k, g[x + 1] = L; const P = k - T; const O = L - C; I += P * P + O * O } if (I < f) { f = I, d = w; for (let R = 0; R < g.length; R++)p[R] = g[R] } }o.push({ from: c, to: p, fromCp: u, toCp: h, rotation: -d }) } return o }(o, a, 0, Math.PI)); const h = []; IG(e, 'buildPath', { replace(t) { for (let n = e.__morphT, i = 1 - n, r = [], o = 0; o < u.length; o++) { const a = u[o]; const s = a.from; const l = a.to; const c = a.rotation * n; const p = a.fromCp; const d = a.toCp; const f = Math.sin(c); const g = Math.cos(c); Bt(r, p, d, n); for (var y = 0; y < s.length; y += 2) { const v = s[y]; const m = s[y + 1]; const x = v * i + (S = l[y]) * n; const _ = m * i + (M = l[y + 1]) * n; h[y] = x * g - _ * f + r[0], h[y + 1] = x * f + _ * g + r[1] } let b = h[0]; let w = h[1]; for (t.moveTo(b, w), y = 2; y < s.length;) { var S = h[y++]; var M = h[y++]; const I = h[y++]; const T = h[y++]; const C = h[y++]; const D = h[y++]; b === S && w === M && I === C && T === D ? t.lineTo(C, D) : t.bezierCurveTo(S, M, I, T, C, D), b = C, w = D } } } }) } function AG(t, e, n) { + if (!t || !e) + return e; const i = n.done; const r = n.during; return DG(t, e), e.__morphT = 0, e.animateTo({ __morphT: 1 }, k({ during(t) { e.dirtyShape(), r && r(t) }, done() { TG(e, 'buildPath'), TG(e, 'updateTransform'), e.__morphT = -1, e.createPathProxy(), e.dirtyShape(), i && i() } }, n)), e + } function kG(t, e, n, i, r, o) { t = r === n ? 0 : Math.round(32767 * (t - n) / (r - n)), e = o === i ? 0 : Math.round(32767 * (e - i) / (o - i)); for (var a, s = 0, l = 32768; l > 0; l /= 2) { let u = 0; let h = 0; (t & l) > 0 && (u = 1), (e & l) > 0 && (h = 1), s += l * l * (3 * u ^ h), h === 0 && (u === 1 && (t = l - 1 - t, e = l - 1 - e), a = t, t = e, e = a) } return s } function LG(t) { let e = 1 / 0; let n = 1 / 0; let i = -1 / 0; let r = -1 / 0; const o = z(t, (t) => { const o = t.getBoundingRect(); const a = t.getComputedTransform(); const s = o.x + o.width / 2 + (a ? a[4] : 0); const l = o.y + o.height / 2 + (a ? a[5] : 0); return e = Math.min(s, e), n = Math.min(l, n), i = Math.max(s, i), r = Math.max(l, r), [s, l] }); return z(o, (o, a) => { return { cp: o, z: kG(o[0], o[1], e, n, i, r), path: t[a] } }).sort((t, e) => { return t.z - e.z }).map((t) => { return t.path }) } function PG(t) { + return (function (t, e) { + let n; const i = []; const r = t.shape; switch (t.type) { + case 'rect':!(function (t, e, n) { + for (let i = t.width, r = t.height, o = i > r, a = lG([i, r], o ? 0 : 1, e), s = o ? 'width' : 'height', l = o ? 'height' : 'width', u = o ? 'x' : 'y', h = o ? 'y' : 'x', c = t[s] / a.length, p = 0; p < a.length; p++) { + for (let d = t[l] / a[p], f = 0; f < a[p]; f++) { const g = {}; g[u] = p * c, g[h] = f * d, g[s] = c, g[l] = d, g.x += t.x, g.y += t.y, n.push(g) } + } + }(r, e, i)), n = Cs; break; case 'sector':uG(r, e, i), n = Cu; break; case 'circle':uG({ r0: 0, r: r.r, startAngle: 0, endAngle: 2 * Math.PI, cx: r.cx, cy: r.cy }, e, i), n = Cu; break; default:var o = t.getComputedTransform(); var a = o ? Math.sqrt(Math.max(o[0] * o[0] + o[1] * o[1], o[2] * o[2] + o[3] * o[3])) : 1; var s = z((function (t, e) { const n = aG(t); const i = []; e = e || 1; for (let r = 0; r < n.length; r++) { const o = n[r]; const a = []; let s = o[0]; let l = o[1]; a.push(s, l); for (let u = 2; u < o.length;) { const h = o[u++]; const c = o[u++]; const p = o[u++]; const d = o[u++]; const f = o[u++]; const g = o[u++]; sG(s, l, h, c, p, d, f, g, a, e), s = f, l = g }i.push(a) } return i }(t.getUpdatedPathProxy(), a)), (t) => { return (function (t) { for (var e = [], n = 0; n < t.length;)e.push([t[n++], t[n++]]); return e }(t)) }); var l = s.length; if (l === 0) { + gG(fG, { points: s[0] }, e, i) + } + else if (l === e) { + for (var u = 0; u < l; u++)i.push({ points: s[u] }) + } + else { + let h = 0; const c = z(s, (t) => { const e = []; const n = []; Ma(t, e, n); const i = (n[1] - e[1]) * (n[0] - e[0]); return h += i, { poly: t, area: i } }); c.sort((t, e) => { return e.area - t.area }); let p = e; for (u = 0; u < l; u++) { + const d = c[u]; if (p <= 0) + break; const f = u === l - 1 ? p : Math.ceil(d.area / h * e); f < 0 || (gG(fG, { points: d.poly }, f, i), p -= f) + } + }n = Pu + } if (!n) + return (function (t, e) { for (var n = [], i = 0; i < e; i++)n.push(lu(t)); return n }(t, e)); const g = []; for (u = 0; u < i.length; u++) { const y = new n(); y.setShape(i[u]), yG(t, y), g.push(y) } return g + }(t.path, t.count)) + } function OG(t) { return Y(t[0]) } function RG(t, e) { + for (var n = [], i = t.length, r = 0; r < i; r++)n.push({ one: t[r], many: [] }); for (r = 0; r < e.length; r++) { var o = e[r].length; let a = void 0; for (a = 0; a < o; a++)n[a % i].many.push(e[r][a]) } let s = 0; for (r = i - 1; r >= 0; r--) { + if (!n[r].many.length) { + const l = n[s].many; if (l.length <= 1) { + if (!s) + return n; s = 0 + }o = l.length; const u = Math.ceil(o / 2); n[r].many = l.slice(u, o), n[s].many = l.slice(0, u), s++ + } + } return n + } const NG = { clone(t) { for (var e = [], n = 1 - (1 - t.path.style.opacity) ** (1 / t.count), i = 0; i < t.count; i++) { const r = lu(t.path); r.setStyle('opacity', n), e.push(r) } return e }, split: null }; function EG(t, e, n, i, r, o) { + if (t.length && e.length) { const a = nh('update', i, r); if (a && a.duration > 0) { let s; let l; var u = i.getModel('universalTransition').get('delay'); var h = Object.assign({ setToFinal: !0 }, a); OG(t) && (s = t, l = e), OG(e) && (s = e, l = t); for (var c = s ? s === t : t.length > e.length, p = s ? RG(l, s) : RG(c ? e : t, [c ? t : e]), d = 0, f = 0; f < p.length; f++)d += p[f].many.length; let g = 0; for (f = 0; f < p.length; f++)y(p[f], c, g, d), g += p[f].many.length } } function y(t, e, i, r, a) { + const s = t.many; const l = t.one; if (s.length !== 1 || a) { + for (let c = k({ dividePath: NG[n], individualDelay: u && function (t, e, n, o) { return u(t + i, r) } }, h), p = e + ? (function (t, e, n) { + let i = []; !(function t(e) { for (let n = 0; n < e.length; n++) { const r = e[n]; SG(r) ? t(r.childrenRef()) : r instanceof gs && i.push(r) } }(t)); const r = i.length; if (!r) + return { fromIndividuals: [], toIndividuals: [], count: 0 }; let o = (n.dividePath || PG)({ path: e, count: r }); if (o.length !== r) + return console.error('Invalid morphing: unmatched splitted path'), { fromIndividuals: [], toIndividuals: [], count: 0 }; i = LG(i), o = LG(o); for (var a = n.done, s = n.during, l = n.individualDelay, u = new qi(), h = 0; h < r; h++) { const c = i[h]; const p = o[h]; p.parent = e, p.copyTransform(u), l || DG(c, p) } function d(t) { for (let e = 0; e < o.length; e++)o[e].addSelfToZr(t) } function f() { e.__isCombineMorphing = !1, e.__morphT = -1, e.childrenRef = null, TG(e, 'addSelfToZr'), TG(e, 'removeSelfFromZr') }e.__isCombineMorphing = !0, e.childrenRef = function () { return o }, IG(e, 'addSelfToZr', { after(t) { d(t) } }), IG(e, 'removeSelfFromZr', { after(t) { for (let e = 0; e < o.length; e++)o[e].removeSelfFromZr(t) } }); const g = o.length; if (l) { let y = g; const v = function () { --y == 0 && (f(), a && a()) }; for (h = 0; h < g; h++) { const m = l ? k({ delay: (n.delay || 0) + l(h, g, i[h], o[h]), done: v }, n) : n; AG(i[h], o[h], m) } } + else { + e.__morphT = 0, e.animateTo({ __morphT: 1 }, k({ during(t) { for (let n = 0; n < g; n++) { const i = o[n]; i.__morphT = e.__morphT, i.dirtyShape() }s && s(t) }, done() { f(); for (let e = 0; e < t.length; e++)TG(t[e], 'updateTransform'); a && a() } }, n)) + } return e.__zr && d(e.__zr), { fromIndividuals: i, toIndividuals: o, count: g } + }(s, l, c)) + : (function (t, e, n) { + const i = e.length; let r = []; const o = n.dividePath || PG; if (SG(t)) { + !(function t(e) { for (let n = 0; n < e.length; n++) { const i = e[n]; SG(i) ? t(i.childrenRef()) : i instanceof gs && r.push(i) } }(t.childrenRef())); const a = r.length; if (a < i) { + for (var s = 0, l = a; l < i; l++)r.push(lu(r[s++ % a])) + } r.length = i + } + else { + r = o({ path: t, count: i }); const u = t.getComputedTransform(); for (l = 0; l < r.length; l++)r[l].setLocalTransform(u); if (r.length !== i) + return console.error('Invalid morphing: unmatched splitted path'), { fromIndividuals: [], toIndividuals: [], count: 0 } + }r = LG(r), e = LG(e); const h = n.individualDelay; for (l = 0; l < i; l++) { const c = h ? k({ delay: (n.delay || 0) + h(l, i, r[l], e[l]) }, n) : n; AG(r[l], e[l], c) } return { fromIndividuals: r, toIndividuals: e, count: e.length } + }(l, s, c)), d = p.fromIndividuals, f = p.toIndividuals, g = d.length, v = 0; v < g; v++)m = u ? k({ delay: u(v, g) }, h) : h, o(d[v], f[v], e ? s[v] : t.one, e ? t.one : s[v], m) + } + else { var m; const x = e ? s[0] : l; const _ = e ? l : s[0]; SG(x) ? y({ many: [x], one: _ }, !0, i, r, !0) : (AG(x, _, m = u ? k({ delay: u(i, r) }, h) : h), o(x, _, x, _, m)) } + } + } function zG(t) { + if (!t) + return []; if (Y(t)) { for (var e = [], n = 0; n < t.length; n++)e.push(zG(t[n])); return e } const i = []; return t.traverse((t) => { t instanceof gs && !t.disableMorphing && !t.invisible && !t.ignore && i.push(t) }), i + } const VG = So(); function BG(t) { + const e = []; return E(t, (t) => { + const n = t.data; if (!(n.count() > 1e4)) { + for (let i = n.getIndices(), r = (function (t) { + for (let e = t.dimensions, n = 0; n < e.length; n++) { + const i = t.getDimensionInfo(e[n]); if (i && i.otherDims.itemGroupId === 0) + return e[n] + } + }(n)), o = 0; o < i.length; o++)e.push({ data: n, dim: t.dim || r, divide: t.divide, dataIndex: o }) + } + }), e + } function FG(t, e, n) { t.traverse((t) => { t instanceof gs && oh(t, { style: { opacity: 0 } }, e, { dataIndex: n, isFrom: !0 }) }) } function GG(t) { if (t.parent) { const e = t.getComputedTransform(); t.setLocalTransform(e), t.parent.remove(t) } } function WG(t) { t.stopAnimation(), t.isGroup && t.traverse((t) => { t.stopAnimation() }) } function YG(t, e, n) { + const i = BG(t); const r = BG(e); function o(t, e, n, i, r) { (n || t) && e.animateFrom({ style: n && n !== t ? A(A({}, n.style), t.style) : t.style }, r) } function a(t) { + for (let e = 0; e < t.length; e++) { + if (t[e].dim) + return t[e].dim + } + } const s = a(i); const l = a(r); let u = !1; function h(t, e) { + return function (n) { + const i = n.data; const r = n.dataIndex; if (e) + return i.getId(r); const o = i.hostModel && i.hostModel.get('dataGroupId'); const a = t ? s || l : l || s; const u = a && i.getDimensionInfo(a); const h = u && u.ordinalMeta; if (u) { const c = i.get(u.name, r); return h && h.categories[c] || `${c}` } const p = i.getRawDataItem(r); return p && p.groupId ? `${p.groupId}` : o || i.getId(r) + } + } const c = (function (t, e) { + const n = t.length; if (n !== e.length) + return !1; for (let i = 0; i < n; i++) { + const r = t[i]; const o = e[i]; if (r.data.getId(r.dataIndex) !== o.data.getId(o.dataIndex)) + return !1 + } return !0 + }(i, r)); const p = {}; if (!c) { + for (let d = 0; d < r.length; d++) { const f = r[d]; const g = f.data.getItemGraphicEl(f.dataIndex); g && (p[g.id] = !0) } + } function y(t, e) { const n = i[e]; const a = r[t]; const s = a.data.hostModel; const l = n.data.getItemGraphicEl(n.dataIndex); const h = a.data.getItemGraphicEl(a.dataIndex); l !== h ? l && p[l.id] || h && (WG(h), l ? (WG(l), GG(l), u = !0, EG(zG(l), zG(h), a.divide, s, t, o)) : FG(h, s, t)) : h && (function (t, e, n) { const i = nh('update', n, e); i && t.traverse((t) => { if (t instanceof da) { const e = (function (t) { return eh(t).oldStyle }(t)); e && t.animateFrom({ style: e }, i) } }) }(h, a.dataIndex, s)) } new Im(i, r, h(!0, c), h(!1, c), null, 'multiple').update(y).updateManyToOne((t, e) => { const n = r[t]; const a = n.data; const s = a.hostModel; const l = a.getItemGraphicEl(n.dataIndex); const h = B(z(e, (t) => { return i[t].data.getItemGraphicEl(i[t].dataIndex) }), (t) => { return t && t !== l && !p[t.id] }); l && (WG(l), h.length ? (E(h, (t) => { WG(t), GG(t) }), u = !0, EG(zG(h), zG(l), n.divide, s, t, o)) : FG(l, s, n.dataIndex)) }).updateOneToMany((t, e) => { const n = i[e]; const a = n.data.getItemGraphicEl(n.dataIndex); if (!a || !p[a.id]) { const s = B(z(t, (t) => { return r[t].data.getItemGraphicEl(r[t].dataIndex) }), (t) => { return t && t !== a }); const l = r[t[0]].data.hostModel; s.length && (E(s, (t) => { return WG(t) }), a ? (WG(a), GG(a), u = !0, EG(zG(a), zG(s), n.divide, l, t[0], o)) : E(s, (e) => { return FG(e, l, t[0]) })) } }).updateManyToMany((t, e) => { new Im(e, t, (t) => { return i[t].data.getId(i[t].dataIndex) }, (t) => { return r[t].data.getId(r[t].dataIndex) }).update((n, i) => { y(t[n], e[i]) }).execute() }).execute(), u && E(e, (t) => { const e = t.data.hostModel; const i = e && n.getViewOfSeriesModel(e); const r = nh('update', e, 0); i && e.isAnimationEnabled() && r && r.duration > 0 && i.group.traverse((t) => { t instanceof gs && !t.animators.length && t.animateFrom({ style: { opacity: 0 } }, r) }) }) + } function UG(t) { return t.getModel('universalTransition').get('seriesKey') || t.id } function XG(t) { return Y(t) ? t.sort().join(',') : t } function ZG(t) { + if (t.hostModel) + return t.hostModel.getModel('universalTransition').get('divideShape') + } function jG(t, e) { + for (let n = 0; n < t.length; n++) { + if (e.seriesIndex != null && e.seriesIndex === t[n].seriesIndex || e.seriesId != null && e.seriesId === t[n].id) + return n + } + }wm([function (t) { t.registerPainter('canvas', Fw) }]), wm([function (t) { t.registerPainter('svg', Ow) }]), wm([function (t) { t.registerChartView(_S), t.registerSeriesModel(Gw), t.registerLayout(bS('line', !0)), t.registerVisual({ seriesType: 'line', reset(t) { const e = t.getData(); const n = t.getModel('lineStyle').getLineStyle(); n && !n.stroke && (n.stroke = e.getVisual('style').fill), e.setVisual('legendLineStyle', n) } }), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, MS('line')) }, function (t) { t.registerChartView(OS), t.registerSeriesModel(TS), t.registerLayout(t.PRIORITY.VISUAL.LAYOUT, H(kx, 'bar')), t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, Lx('bar')), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, MS('bar')), t.registerAction({ type: 'changeAxisOrder', event: 'changeAxisOrder', update: 'update' }, (t, e) => { const n = t.componentType || 'series'; e.eachComponent({ mainType: n, query: t }, (e) => { t.sortInfo && e.axis.setCategorySortInfo(t.sortInfo) }) }) }, function (t) { t.registerChartView(lM), t.registerSeriesModel(cM), vy('pie', t.registerAction), t.registerLayout(H(QS, 'pie')), t.registerProcessor(tM('pie')), t.registerProcessor({ seriesType: 'pie', reset(t, e) { const n = t.getData(); n.filterSelf((t) => { const e = n.mapDimension('value'); const i = n.get(e, t); return !(j(i) && !isNaN(i) && i < 0) }) } }) }, function (t) { wm(pI), t.registerSeriesModel(pM), t.registerChartView(yM), t.registerLayout(bS('scatter')) }, function (t) { wm(TI), t.registerChartView(vI), t.registerSeriesModel(mI), t.registerLayout(dI), t.registerProcessor(tM('radar')), t.registerPreprocessor(yI) }, function (t) { wm(tC), t.registerChartView(ET), t.registerSeriesModel(zT), t.registerLayout(BT), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, VT), vy('map', t.registerAction) }, function (t) { t.registerChartView(pC), t.registerSeriesModel(RC), t.registerLayout(EC), t.registerVisual(zC), (function (t) { t.registerAction({ type: 'treeExpandAndCollapse', event: 'treeExpandAndCollapse', update: 'update' }, (t, e) => { e.eachComponent({ mainType: 'series', subType: 'tree', query: t }, (e) => { const n = t.dataIndex; const i = e.getData().tree.getNodeByDataIndex(n); i.isExpand = !i.isExpand }) }), t.registerAction({ type: 'treeRoam', event: 'treeRoam', update: 'none' }, (t, e, n) => { e.eachComponent({ mainType: 'series', subType: 'tree', query: t }, (e) => { const i = $T(e.coordinateSystem, t, void 0, n); e.setCenter && e.setCenter(i.center), e.setZoom && e.setZoom(i.zoom) }) }) }(t)) }, function (t) { t.registerSeriesModel(FC), t.registerChartView(QC), t.registerVisual(yD), t.registerLayout(AD), (function (t) { for (let e = 0; e < VC.length; e++)t.registerAction({ type: VC[e], update: 'updateView' }, xt); t.registerAction({ type: 'treemapRootToNode', update: 'updateView' }, (t, e) => { e.eachComponent({ mainType: 'series', subType: 'treemap', query: t }, (e, n) => { const i = kC(t, ['treemapZoomToNode', 'treemapRootToNode'], e); if (i) { const r = e.getViewRoot(); r && (t.direction = PC(r, i.node) ? 'rollUp' : 'drillDown'), e.resetViewRoot(i.node) } }) }) }(t)) }, function (t) { t.registerChartView(DA), t.registerSeriesModel(NA), t.registerProcessor(ND), t.registerVisual(ED), t.registerVisual(VD), t.registerLayout(jD), t.registerLayout(t.PRIORITY.VISUAL.POST_CHART_LAYOUT, eA), t.registerLayout(iA), t.registerCoordinateSystem('graphView', { dimensions: GT.dimensions, create: rA }), t.registerAction({ type: 'focusNodeAdjacency', event: 'focusNodeAdjacency', update: 'series:focusNodeAdjacency' }, xt), t.registerAction({ type: 'unfocusNodeAdjacency', event: 'unfocusNodeAdjacency', update: 'series:unfocusNodeAdjacency' }, xt), t.registerAction(EA, (t, e, n) => { e.eachComponent({ mainType: 'series', query: t }, (e) => { const i = $T(e.coordinateSystem, t, void 0, n); e.setCenter && e.setCenter(i.center), e.setZoom && e.setZoom(i.zoom) }) }) }, function (t) { t.registerChartView(FA), t.registerSeriesModel(GA) }, function (t) { t.registerChartView(YA), t.registerSeriesModel(UA), t.registerLayout(XA), t.registerProcessor(tM('funnel')) }, function (t) { wm(mL), t.registerChartView(ZA), t.registerSeriesModel(JA), t.registerVisual(t.PRIORITY.VISUAL.BRUSH, ek) }, function (t) { t.registerChartView(bL), t.registerSeriesModel(wL), t.registerLayout(SL), t.registerVisual(NL), t.registerAction({ type: 'dragNode', event: 'dragnode', update: 'update' }, (t, e) => { e.eachComponent({ mainType: 'series', subType: 'sankey', query: t }, (e) => { e.setNodePosition(t.dataIndex, [t.localX, t.localY]) }) }) }, function (t) { t.registerSeriesModel(zL), t.registerChartView(VL), t.registerVisual(YL), t.registerLayout(XL), t.registerTransform(ZL) }, function (t) { t.registerChartView(qL), t.registerSeriesModel(aP), t.registerPreprocessor(sP), t.registerVisual(pP), t.registerLayout(dP) }, function (t) { t.registerChartView(vP), t.registerSeriesModel(mP), t.registerLayout(bS('effectScatter')) }, function (t) { t.registerChartView(TP), t.registerSeriesModel(kP), t.registerLayout(IP), t.registerVisual(PP) }, function (t) { t.registerChartView(NP), t.registerSeriesModel(EP) }, function (t) { t.registerChartView(FP), t.registerSeriesModel(rO), t.registerLayout(t.PRIORITY.VISUAL.LAYOUT, H(kx, 'pictorialBar')), t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, Lx('pictorialBar')) }, function (t) { t.registerChartView(oO), t.registerSeriesModel(aO), t.registerLayout(sO), t.registerProcessor(tM('themeRiver')) }, function (t) { t.registerChartView(pO), t.registerSeriesModel(dO), t.registerLayout(H(yO, 'sunburst')), t.registerProcessor(H(tM, 'sunburst')), t.registerVisual(mO), (function (t) { t.registerAction({ type: hO, update: 'updateView' }, (t, e) => { e.eachComponent({ mainType: 'series', subType: 'sunburst', query: t }, (e, n) => { const i = kC(t, [hO], e); if (i) { const r = e.getViewRoot(); r && (t.direction = PC(r, i.node) ? 'rollUp' : 'drillDown'), e.resetViewRoot(i.node) } }) }), t.registerAction({ type: cO, update: 'none' }, (t, e, n) => { t = A({}, t), e.eachComponent({ mainType: 'series', subType: 'sunburst', query: t }, (e) => { const n = kC(t, [cO], e); n && (t.dataIndex = n.node.dataIndex) }), n.dispatchAction(A(t, { type: 'highlight' })) }), t.registerAction({ type: 'sunburstUnhighlight', update: 'updateView' }, (t, e, n) => { t = A({}, t), n.dispatchAction(A(t, { type: 'downplay' })) }) }(t)) }, function (t) { t.registerChartView(uR), t.registerSeriesModel(wO) }]), wm((t) => { wm(pI), wm(uN) }), wm((t) => { wm(uN), tI.registerAxisPointerClass('PolarAxisPointer', hN), t.registerCoordinateSystem('polar', MN), t.registerComponentModel(pN), t.registerComponentView(FN), MM(t, 'angle', fN, VN), MM(t, 'radius', gN, BN), t.registerComponentView(AN), t.registerComponentView(ON), t.registerLayout(H(zN, 'bar')) }), wm(tC), wm((t) => { wm(uN), tI.registerAxisPointerClass('SingleAxisPointer', tE), t.registerComponentView(rE), t.registerComponentView(YN), t.registerComponentModel(XN), MM(t, 'single', XN, XN.defaultOption), t.registerCoordinateSystem('single', $N) }), wm(mL), wm((t) => { t.registerComponentModel(oE), t.registerComponentView(sE), t.registerCoordinateSystem('calendar', uE) }), wm((t) => { t.registerComponentModel(gE), t.registerComponentView(mE), t.registerPreprocessor((t) => { const e = t.graphic; Y(e) ? e[0] && e[0].elements ? t.graphic = [t.graphic[0]] : t.graphic = [{ elements: e }] : e && !e.elements && (t.graphic = [{ elements: [e] }]) }) }), wm((t) => { t.registerComponentModel(UE), t.registerComponentView(ZE), HE('saveAsImage', jE), HE('magicType', $E), HE('dataView', rz), HE('dataZoom', Tz), HE('restore', uz), wm(FE) }), wm((t) => { wm(uN), t.registerComponentModel(Az), t.registerComponentView(Xz), t.registerAction({ type: 'showTip', event: 'showTip', update: 'tooltip:manuallyShowTip' }, xt), t.registerAction({ type: 'hideTip', event: 'hideTip', update: 'tooltip:manuallyHideTip' }, xt) }), wm(uN), wm((t) => { t.registerComponentView(fV), t.registerComponentModel(gV), t.registerPreprocessor($z), t.registerVisual(t.PRIORITY.VISUAL.BRUSH, uV), t.registerAction({ type: 'brush', event: 'brush', update: 'updateVisual' }, (t, e) => { e.eachComponent({ mainType: 'brush', query: t }, (e) => { e.setAreas(t.areas) }) }), t.registerAction({ type: 'brushSelect', event: 'brushSelected', update: 'none' }, xt), t.registerAction({ type: 'brushEnd', event: 'brushEnd', update: 'none' }, xt), HE('brush', mV) }), wm((t) => { t.registerComponentModel(xV), t.registerComponentView(_V) }), wm((t) => { t.registerComponentModel(wV), t.registerComponentView(CV), t.registerSubTypeDefaulter('timeline', () => { return 'slider' }), (function (t) { t.registerAction({ type: 'timelineChange', event: 'timelineChanged', update: 'prepareAndUpdate' }, (t, e, n) => { const i = e.getComponent('timeline'); return i && t.currentIndex != null && (i.setCurrentIndex(t.currentIndex), !i.get('loop', !0) && i.isIndexMax() && i.getPlayState() && (i.setPlayState(!1), n.dispatchAction({ type: 'timelinePlayChange', playState: !1, from: t.from }))), e.resetOption('timeline', { replaceMerge: i.get('replaceMerge', !0) }), k({ currentIndex: i.option.currentIndex }, t) }), t.registerAction({ type: 'timelinePlayChange', event: 'timelinePlayChanged', update: 'update' }, (t, e) => { const n = e.getComponent('timeline'); n && t.playState != null && n.setPlayState(t.playState) }) }(t)), t.registerPreprocessor(kV) }), wm((t) => { t.registerComponentModel(zV), t.registerComponentView(qV), t.registerPreprocessor((t) => { OV(t.series, 'markPoint') && (t.markPoint = t.markPoint || {}) }) }), wm((t) => { t.registerComponentModel(KV), t.registerComponentView(iB), t.registerPreprocessor((t) => { OV(t.series, 'markLine') && (t.markLine = t.markLine || {}) }) }), wm((t) => { t.registerComponentModel(rB), t.registerComponentView(pB), t.registerPreprocessor((t) => { OV(t.series, 'markArea') && (t.markArea = t.markArea || {}) }) }), wm((t) => { wm(MB), wm(LB) }), wm((t) => { wm(HB), wm(JB) }), wm(HB), wm(JB), wm((t) => { wm(PF), wm(zF) }), wm(PF), wm(zF), wm((t) => { t.registerPreprocessor(WF), t.registerVisual(t.PRIORITY.VISUAL.ARIA, GF) }), wm((t) => { t.registerTransform(tG), t.registerTransform(eG) }), wm((t) => { t.registerComponentModel(nG), t.registerComponentView(iG) }), wm((t) => { + t.registerUpdateLifecycle('series:beforeupdate', (t, e, n) => { E(ho(n.seriesTransition), (t) => { E(ho(t.to), (t) => { for (let e = n.updatedSeries, i = 0; i < e.length; i++)(t.seriesIndex != null && t.seriesIndex === e[i].seriesIndex || t.seriesId != null && t.seriesId === e[i].id) && (e[i].__universalTransitionEnabled = !0) }) }) }), t.registerUpdateLifecycle('series:transition', (t, e, n) => { + const i = VG(e); if (i.oldSeries && n.updatedSeries && n.optionChanged) { + const r = n.seriesTransition; if (r) { + E(ho(r), (t) => { !(function (t, e, n, i) { const r = []; const o = []; E(ho(t.from), (t) => { let n = jG(e.oldSeries, t); n >= 0 && r.push({ data: e.oldData[n], divide: ZG(e.oldData[n]), dim: t.dimension }) }), E(ho(t.to), (t) => { let e = jG(n.updatedSeries, t); if (e >= 0) { let i = n.updatedSeries[e].getData(); o.push({ data: i, divide: ZG(i), dim: t.dimension }) } }), r.length > 0 && o.length > 0 && YG(r, o, i) }(t, i, n, e)) }) + } + else { + const o = (function (t, e) { + const n = ft(); const i = ft(); const r = ft(); return E(t.oldSeries, (e, n) => { const o = t.oldData[n]; const a = UG(e); const s = XG(a); i.set(s, o), Y(a) && E(a, (t) => { r.set(t, { data: o, key: s }) }) }), E(e.updatedSeries, (t) => { + if (t.isUniversalTransitionEnabled() && t.isAnimationEnabled()) { + let e = t.getData(); const o = UG(t); const a = XG(o); const s = i.get(a); if (s) { + n.set(a, { oldSeries: [{ divide: ZG(s), data: s }], newSeries: [{ divide: ZG(e), data: e }] }) +} else if (Y(o)) { const l = []; E(o, (t) => { let e = i.get(t); e && l.push({ divide: ZG(e), data: e }) }), l.length && n.set(a, { oldSeries: l, newSeries: [{ data: e, divide: ZG(e) }] }) } + else { const u = r.get(o); if (u) { let h = n.get(u.key); h || (h = { oldSeries: [{ data: u.data, divide: ZG(u.data) }], newSeries: [] }, n.set(u.key, h)), h.newSeries.push({ data: e, divide: ZG(e) }) } } + } + }), n + }(i, n)); E(o.keys(), (t) => { const n = o.get(t); YG(n.oldSeries, n.newSeries, e) }) + }E(n.updatedSeries, (t) => { t.__universalTransitionEnabled && (t.__universalTransitionEnabled = !1) }) + } for (let a = t.getSeries(), s = i.oldSeries = [], l = i.oldData = [], u = 0; u < a.length; u++) { const h = a[u].getData(); h.count() < 1e4 && (s.push(a[u]), l.push(h)) } + }) + }), wm((t) => { t.registerUpdateLifecycle('series:beforeupdate', (t, e, n) => { let i = Db(e).labelManager; i || (i = Db(e).labelManager = new Cb()), i.clearLabels() }), t.registerUpdateLifecycle('series:layoutlabels', (t, e, n) => { const i = Db(e).labelManager; n.updatedSeries.forEach((t) => { i.addLabelsOfSeries(e.getViewOfSeriesModel(t)) }), i.updateLayoutConfig(e), i.layout(e), i.processLabelsOverall() }) }), t.Axis = H_, t.ChartView = xg, t.ComponentModel = Tp, t.ComponentView = gg, t.List = qm, t.Model = dc, t.PRIORITY = fv, t.SeriesModel = sg, t.color = Pn, t.connect = function (t) { if (Y(t)) { const e = t; t = null, E(e, (e) => { e.group != null && (t = e.group) }), t = t || `g_${tm++}`, E(e, (e) => { e.group = t }) } return Jv[t] = !0, t }, t.dataTool = {}, t.dependencies = { zrender: '5.3.2' }, t.disConnect = nm, t.disconnect = im, t.dispose = function (t) { X(t) ? t = $v[t] : t instanceof Fv || (t = rm(t)), t instanceof Fv && !t.isDisposed() && t.dispose() }, t.env = r, t.extendChartView = function (t) { const e = xg.extend(t); return xg.registerClass(e), e }, t.extendComponentModel = function (t) { const e = Tp.extend(t); return Tp.registerClass(e), e }, t.extendComponentView = function (t) { const e = gg.extend(t); return gg.registerClass(e), e }, t.extendSeriesModel = function (t) { const e = sg.extend(t); return sg.registerClass(e), e }, t.format = L_, t.getCoordinateSystemDimensions = function (t) { + const e = hd.get(t); if (e) + return e.getDimensionsInfo ? e.getDimensionsInfo() : e.dimensions.slice() + }, t.getInstanceByDom = rm, t.getInstanceById = function (t) { return $v[t] }, t.getMap = function (t) { const e = hv('getMap'); return e && e(t) }, t.graphic = k_, t.helper = f_, t.init = function (t, e, n) { + const i = !(n && n.ssr); if (i) { + const r = rm(t); if (r) + return r + } const o = new Fv(t, e, n); return o.id = `ec_${Qv++}`, $v[o.id] = o, i && ko(t, em, o.id), Nv(o), lv.trigger('afterinit', o), o + }, t.innerDrawElementOnCanvas = Qy, t.matrix = Gi, t.number = D_, t.parseGeoJSON = C_, t.parseGeoJson = C_, t.registerAction = cm, t.registerCoordinateSystem = pm, t.registerLayout = dm, t.registerLoading = vm, t.registerLocale = Sc, t.registerMap = mm, t.registerPostInit = lm, t.registerPostUpdate = um, t.registerPreprocessor = am, t.registerProcessor = sm, t.registerTheme = om, t.registerTransform = xm, t.registerUpdateLifecycle = hm, t.registerVisual = fm, t.setCanvasCreator = function (t) { c({ createCanvas: t }) }, t.setPlatformAPI = c, t.throttle = Dg, t.time = A_, t.use = wm, t.util = P_, t.vector = Ht, t.version = '5.3.3', t.zrUtil = bt, t.zrender = Or, Object.defineProperty(t, '__esModule', { value: !0 }) +})) diff --git a/src/pages/d_invite/index.scss b/src/pages/d_invite/index.scss index d987c86..d2a846c 100644 --- a/src/pages/d_invite/index.scss +++ b/src/pages/d_invite/index.scss @@ -1,4 +1,4 @@ -page{ +page { background-color: #d68dfc; } .page { diff --git a/src/pages/d_noteDetail/index.wxml b/src/pages/d_noteDetail/index.wxml index 27fb796..562f022 100644 --- a/src/pages/d_noteDetail/index.wxml +++ b/src/pages/d_noteDetail/index.wxml @@ -13,27 +13,27 @@ 当前记录对应的替妥尤单抗使用次数: {{recordDetail.treatmentCount}} -