From 182a04ca6be01ff2c796c54f3edd855c2909aa70 Mon Sep 17 00:00:00 2001 From: lyy <2783432487@qq.com> Date: Fri, 10 May 2024 00:37:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A7=E6=9C=89=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=96=B0=E5=A2=9E=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=90=8E=E7=9A=84=E5=89=8D=E7=AB=AF=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=8F=8A=E5=85=B6=E5=9B=BE=E7=89=87=E7=B4=A0=E6=9D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/DetectUI.html | 231 + assets/GuideUI.html | 132 + assets/LoginUI.html | 154 + assets/MainPageUI.html | 192 + assets/RegisterUI.html | 147 + assets/assets/css/style.css | 288 + assets/assets/images/Nginx.jpg | Bin 0 -> 36575 bytes assets/assets/images/R-C blue.png | Bin 0 -> 151250 bytes assets/assets/images/R-C green.png | Bin 0 -> 177012 bytes assets/assets/images/R-C pink.png | Bin 0 -> 167905 bytes assets/assets/images/R-C red.png | Bin 0 -> 158312 bytes assets/assets/images/R-C.jpg | Bin 0 -> 1330305 bytes assets/assets/images/R-C.png | Bin 0 -> 2072669 bytes assets/assets/images/bg.png | Bin 0 -> 757742 bytes .../assets/images}/button.jpg | Bin {prototype => assets/assets/images}/cg.jpg | Bin assets/assets/images/delete.png | Bin 0 -> 6218 bytes assets/assets/images/dove.png | Bin 0 -> 11389 bytes assets/assets/images/logo.svg | 4 + assets/assets/images/nginx.gif | Bin 0 -> 12532 bytes assets/assets/js/data.json | 20 + assets/assets/js/jquery.js | 2 + assets/assets/js/script.js | 149 + assets/css/index.css | 235 + assets/css/msgList.css | 0 assets/css/public.css | 138 + assets/css/rainbow.css | 93 + assets/css/reset.css | 76 + assets/echarts.js | 85683 ++++++++++++++++ assets/echarts.min.js | 45 + assets/jquery.min.js | 2 + assets/msgList.css | 206 + prototype/entry.html | 45 - prototype/exit.png | Bin 874060 -> 0 bytes prototype/mainpage.html | 58 - prototype/s.css | 19 - prototype/style.css | 64 - 37 files changed, 87797 insertions(+), 186 deletions(-) create mode 100644 assets/DetectUI.html create mode 100644 assets/GuideUI.html create mode 100644 assets/LoginUI.html create mode 100644 assets/MainPageUI.html create mode 100644 assets/RegisterUI.html create mode 100644 assets/assets/css/style.css create mode 100644 assets/assets/images/Nginx.jpg create mode 100644 assets/assets/images/R-C blue.png create mode 100644 assets/assets/images/R-C green.png create mode 100644 assets/assets/images/R-C pink.png create mode 100644 assets/assets/images/R-C red.png create mode 100644 assets/assets/images/R-C.jpg create mode 100644 assets/assets/images/R-C.png create mode 100644 assets/assets/images/bg.png rename {prototype => assets/assets/images}/button.jpg (100%) rename {prototype => assets/assets/images}/cg.jpg (100%) create mode 100644 assets/assets/images/delete.png create mode 100644 assets/assets/images/dove.png create mode 100644 assets/assets/images/logo.svg create mode 100644 assets/assets/images/nginx.gif create mode 100644 assets/assets/js/data.json create mode 100644 assets/assets/js/jquery.js create mode 100644 assets/assets/js/script.js create mode 100644 assets/css/index.css create mode 100644 assets/css/msgList.css create mode 100644 assets/css/public.css create mode 100644 assets/css/rainbow.css create mode 100644 assets/css/reset.css create mode 100644 assets/echarts.js create mode 100644 assets/echarts.min.js create mode 100644 assets/jquery.min.js create mode 100644 assets/msgList.css delete mode 100644 prototype/entry.html delete mode 100644 prototype/exit.png delete mode 100644 prototype/mainpage.html delete mode 100644 prototype/s.css delete mode 100644 prototype/style.css diff --git a/assets/DetectUI.html b/assets/DetectUI.html new file mode 100644 index 0000000..5150b19 --- /dev/null +++ b/assets/DetectUI.html @@ -0,0 +1,231 @@ + + + + + + Title + + + + + + +
+
+
+ + +
+ + + + 2019-03-28 +
+
第一个测试发送消息的内容
+ +
  • +
    + + + + +
    +
    + + + + 2019-03-28 +
    +
    第一个测试发送消息的内容
    +
  • +
  • +
    + + + + +
    +
    + + + + 2019-03-28 +
    +
    第三个测试发送消息的内容,大声说出你们的爱
    +
  • + +
    + +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/assets/GuideUI.html b/assets/GuideUI.html new file mode 100644 index 0000000..bab7a5d --- /dev/null +++ b/assets/GuideUI.html @@ -0,0 +1,132 @@ + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +

    welcome

    + + + \ No newline at end of file diff --git a/assets/LoginUI.html b/assets/LoginUI.html new file mode 100644 index 0000000..0a95023 --- /dev/null +++ b/assets/LoginUI.html @@ -0,0 +1,154 @@ + + + + +LoginUI + + + + +
    +
    +
    + +
    +
    + 1 + 2 +
    +
    + + + + \ No newline at end of file diff --git a/assets/MainPageUI.html b/assets/MainPageUI.html new file mode 100644 index 0000000..a574603 --- /dev/null +++ b/assets/MainPageUI.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + + 首页 + + + + + + + + + + +
    + +

    + +

    + +
    + +
    + +
    +
    +
    + + + + + +
    + +
    +

    版本更新情况

    + + +
    + +
    +

    服务器列表

    +

    北京 ip:192.168.20.2

    +

    广州 ip:192.168.21.4

    +

    长沙 ip:192.168.23.4

    +
    + +
    +

    最近操作

    +

    开启主备切换服务

    +

    开启Nginx服务

    + + +
    +
    + +
    +

    当前可用服务

    +
    +
    +
    +
    查看主动探测
    +
    +
    +
    +
    查看流量控制
    +
    +
    +
    +
    启用主备切换
    +
    +
    +
    +
    查看Nginx日志
    +
    +
    +
    + + + + + + + \ No newline at end of file diff --git a/assets/RegisterUI.html b/assets/RegisterUI.html new file mode 100644 index 0000000..16902a5 --- /dev/null +++ b/assets/RegisterUI.html @@ -0,0 +1,147 @@ + + + + + 注册页面 + + + + + +
    +
    +

    新用户注册

    +

    USER REGISTER

    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    +
    +

    返回登录界面

    +
    +
    + + diff --git a/assets/assets/css/style.css b/assets/assets/css/style.css new file mode 100644 index 0000000..6f672bf --- /dev/null +++ b/assets/assets/css/style.css @@ -0,0 +1,288 @@ +/*-----------------------------------*\ + #style.css +\*-----------------------------------*/ + +/** + * copyright 2022 codewithsadee + */ + + + + + +/*-----------------------------------*\ + #CUSTOM PROPERTY +\*-----------------------------------*/ + +:root { + + /** + * colors + */ + + --medium-slate-blue: hsl(240, 73%, 65%); + --space-cadet_10: hsl(226, 54%, 26%, 0.1); + --space-cadet: hsl(226, 54%, 26%); + --ghost-white: hsl(227, 69%, 97%); + --cool-gray: hsl(226, 19%, 63%); + --cultured: hsl(0, 0%, 95%); + --white: hsl(0, 0%, 100%); + + /** + * typography + */ + + --ff-dm-sans: 'Roboto', sans-serif; + --ff-helvetica: 'Helvetica', sans-serif; + + --fs-1: 3rem; + --fs-2: 2.4rem; + --fs-3: 1.5rem; + --fs-4: 1.2rem; + + --fw-500: 500; + --fw-600: 600; + --fw-700: 700; + + /** + * shadow + */ + + --shadow: 1px 1px 3px hsla(0, 0%, 0%, 0.15); + + /** + * radius + */ + + --radius-5: 5px; + --radius-15: 15px; + + /** + * transition + */ + + --transition-1: 0.25s ease; + --transition-2: 1s ease; + +} + + + + + +/*-----------------------------------*\ + #RESET +\*-----------------------------------*/ + +*, +*::before, +*::after { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +span, +data { display: block; } + +img { height: auto; } + +table, +tbody, +tr, +th, +td { + all: unset; +} + +html { + font-family: var(--ff-dm-sans); + font-size: 10px; +} + +body { + background-color: var(--ghost-white); + color: var(--cool-gray); + font-size: 1.6rem; + padding-inline: 15px; + min-height: 100vh; +} + + + + + +/*-----------------------------------*\ + #REUSED STYLE +\*-----------------------------------*/ + +.flex-center { + display: flex; + justify-content: center; + align-items: center; +} + +.balance-card, +.chart-card { + width: 300px; + height: 150px; + position: relative; + padding: 5px; + border-radius: var(--radius-10); +} + +.text { font-size: var(--fs-3); } + +.h2 { font-size: var(--fs-2); } + + + + + +/*-----------------------------------*\ + #BALANCE CARD +\*-----------------------------------*/ + +.chart-container { + width: 100%; + max-width: 540px; + margin-inline: 100px; + left: 50px; +} + +.balance-card { + background-color: var(--medium-slate-blue); + color: var(--white); + justify-content: space-between; + margin-block-end: 15px; +} + +.balance-card .text { + font-weight: unset; + margin-block-end: 5px; +} + +.balance-card .h2 { font-weight: var(--fw-700); } + +.balance-card .logo { width: 60px; } + + + + + +/*-----------------------------------*\ + #CHART CARD +\*-----------------------------------*/ + +.chart-card { + position: relative; + margin-right: 30px; + background-color: var(--white); +} + +.chart-card .h2 { + color: var(--space-cadet); + font-weight: var(--fw-500); + margin-block-end: 50px; +} + +.chart-card .card-table { + display: block; + padding-block-end: 24px; + border-block-end: 1px solid var(--space-cadet_10); + margin-block-end: 24px; +} + +.chart-card .table-body { + justify-content: space-evenly; + align-items: stretch; + gap: 12px; +} + +.chart-card .table-row { + flex-direction: column-reverse; + justify-content: flex-start; + gap: 10px; + min-height: calc(150px + 31px); +} + +.chart-card .table-heading { + color: var(--space-cadet); + font-family: var(--ff-helvetica); + font-size: var(--fs-4); +} + +.chart-card .table-data { + min-width: 20px; + height: 100%; + background-color: var(--cultured); + cursor: pointer; +} + +.chart-card .chart-bar { + background-color: var(--medium-slate-blue); + height: 100%; + transform-origin: bottom; + transition: transform var(--transition-2); +} + +.chart-card .chart-bar:hover { opacity: 0.75; } + +.tooltip { + position: fixed; + top: 0; + left: 50%; + transform: translateX(-50%); + background-color: var(--white); + color: var(--space-cadet); + font-family: var(--ff-helvetica); + font-weight: var(--fw-600); + padding: 8px; + border: 1px solid var(--cultured); + border-radius: var(--radius-5); + box-shadow: var(--shadow); + pointer-events: none; + opacity: 0; + transition: var(--transition-1); +} + +.tooltip.active { opacity: 1; } + +.chart-card .wrapper { + justify-content: space-between; + align-items: flex-start; +} + +.chart-card .meta-value { + color: var(--space-cadet); + font-weight: var(--fw-500); + margin-block-start: 5px; +} + +.chart-card .meta-value:not(.small) { font-size: var(--fs-1); } + +.chart-card .card-meta:last-child { + align-self: flex-end; + text-align: right; +} + +.piechart{ + margin-top: -180px; + left: 600px; + width: 150px; + height: 150px; + position: fixed; + padding: 5px; + border-radius: var(--radius-10); +} + + + +/*-----------------------------------*\ + #MEDIA QUERIES +\*-----------------------------------*/ + +/** + * responsive for large than 768px screen + */ + diff --git a/assets/assets/images/Nginx.jpg b/assets/assets/images/Nginx.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf3095efb94e6728334bee7494ad328c302df3ff GIT binary patch literal 36575 zcmeFZ2UJ^GmM$#YWn-5Eg)v|g%S4k4Opa}n3>ajPgg`=2CK!XrIaB2TMkJF>E|Y{L zButQq0^8(lf=D9gC~{6u?w;wHfBo-uukM*y|6B9Vk=E7KJy-Xfd+ynLfBW0}=zQpW z67Z9rwyrkd!bJeUhW-MauL77fy{wUbfD3>h004j){SXas>yeF%l`X*LGyTYgb1L8s z;KEwi}dZqiJx_yPg=(*d~-#-@fx|c9}$i_+=TRkk@`0_Z8 zPvee^CyQLqtFIty@ZHyJ*}Vd+Q}H=7{5D>;=Ocg{^c$mJgbAPyc$4vE|5$#nv3tNq z=_xUh?Zau|snDF%CFZApy}keRo%Vf(iPZ@zo4VQiHdtpz^P1g~y70TZslWcGxAdWbDG{(B&I+8?i>HP#^T1w1FcW*H0Cn=fF|7A_ysB;ZE>pU&?*iE^SS2)@c zJP;he_2KvM{Qt5R0k+4l*Y{l3BC-lwY{g&9Tkn-V_FvZIz2M2?)3jr&g%#<0`ev2?BbEPIBmEzc%1b+rdjYi? zUgblDtk|?U+PaMA9!`~$5rf4RBpMZ>9^@c1_bZ{ANFxaJTW}s|=|u-YSNj@ihrg_R zDBNVkqM6(w?>(#)m_1W=z!gU>SoR+!tUQY8=M{0t@MK}RX5M}3;3@w+**vL!Kss96 z&a?$1$`O7lmox1W&=8c-w`w=q=dhNTTotXNn>q5p$izPqw(VToU-U|{=bMIcVlQ$! zOFAQnCqot}QOOl*R>bR3$ZwtzwNv{hM`%l^=Hx0$v@>Zt8sW^!8QKSVUJJ7gWP{5( zGUnm(Gi7^v+Hc^ILwiN9a$;F-3Ksau9^WPkUCU1$$PBGEIt-iI`s*{0JB}K?JTD|+ z6;~Y-a5=Dh^;yfO_GC{DWHEmSf`?~CIkGGP$*10CrAGiJsyrJah9;ajD97A%KL<#4 z$xMm0A<>Ux7IgDw)_v7;Ng@jLoS#c{+<`b@|Cmk)dSpw6LJizuB><(nxvN z2|1Es=p+!RFChLnTM##=x26U%TnpD&5aG6N;N**H%d3tcih5BXANN#&pF4fkbP#{N z!N0Nd&rhH$UL+3tG#A0?=K&DX-o28*byo>6sSwt9(cuWy)|_(}g_~@Ww?LEIqO6U~ z=QOoI3XfWQI1Vk$d^r4B#hU#+>;(qS0XHR|_lS}P9md|RZTV&^VKsaw_+aH13 zMZGo#`_QOO9p9Q9@iZcvXfKSXRJT!Gw=8Sl!Sj~%x@D}bJl6+3pZPL%n|M@kLON(I zdP`m2N_p8e#Lrzs1;kfWyXrJDxr2H&lVsG_XqN<)h;kV0ftW~hff^CdVvAL|ETV!{ zWXClgbO_={Jxa#WGUXwPa>KM3A8wUisnf9F=jn9ECl9e&x*oJurT9IqR^PFH= z3x)$nRml%E_%E9R84FLw&}nYI@kd5mjz|~PU>&z+AK#qnN|Tm#Z&5+f^yw0NG5x}X z#GN>iLzXhoVpL|5HyXq}(S?fgFz;W1Iw>eg*C@n?Zr(HGHFbRIW5*MVk5a{~hD2`k z&AR^SFO!SaY&C3nzO{Aer601Dsy?_UIB2G#Y)dlEN$ser3SZ%*cwtcyM^%|7RWea* zX0yoH5$#6Dnp(u~6We(O@#aypqaK>Y2NbyQVeyd@(q$Q)on}G4Za}Ey=*Se>0RB|` z%sCqV==Ik&lg8IhwnvpZi_(R8N1(Mgxr{-npLGc9_@w{K~gF zTpla>G|LLEG{$BoSh1372K*6*YBGP;GfzborXrYN$?#lnaFnP^gMK}>difdDDRgSY zF-{fEb-1?z#`aTW0^jTSc*NEwS|qxk*{b+=`==8?W8Os%c6!xh>rT;cOxJPodh@G= z6GlhyPaz_pEpUP(pL<38sF1B>+0bs#>k#kc`_?bFISs241!49!E^sUSN36AAenuUd zBfY7Tg=w?;3ui#qO}7_}%B5?r$#-VT^VC8!6ON(J@0Z*XYC9;uIv188IpWWs+MA`B zz0A@k~&S2Ikq?`)?fN`@7Ql0-K4dD0LPl8fat5hGY4wgRHC-SFFA9_ZiN z{`2PiVn@i0EFS#534#5b_wrR&=nA01JQy{BQqm?GXKp6fVkHZka5DpKNnucjrNC%hk#sRgsqB$tPseFkRi#a_tKH{R>Y%|5@Fh|leD7%n?IAxB|% z0{B-f@(c{p$eWePK9cpYwohAbK7ENzWvUH}Im1G*UG3B~;j>4NiN9Tbt^8!)89O9` zV`Q%s4UQ|f#@X1)P0%ju59qoc+8{W9&*mryNB5#vNA`n_Y7t#a2<QSB0Y7U z)nv|;r?XAp9H^>)@r1M=d7z*6Yx4{^eD~SV%h-f(UQ6gS5Fa}wfGp`=*@nfU#T!!k zr3<-6!HJLxMNodk;|=oVEIYrb=zDEwKb;-l0E4`~YOd=fLljv8trE33uKIQM%EG*I zT@`dmT4h4MFpjWpu?vn?E4n)QJBsjR^6k6WriKk`CMMO(Ms8PvLS!0%Ebo$b=9ed? z5!W2_t%N}+g)FA@X@a$s`*@`rrH&VIP5hc8j8Q_t<2Si;!0U8Ur>}j>Q%UdQw5Z3{ zPMFXb4>#Xg_eXxs3;qJ&+u9Mm3&q%y$Ji`6ZDNRsr2kwuC!$5_TLaa_yDZ&XPZAak z`L^f}6+Vm#34O@n+ipOEh{g^-P_-u{5>#*NCI`}#i%l0qD(<%+$f;LprRHuh>fQuY zmI;zvEq2|V*v>&=fyEhIvUV?Tv<`^>hK0S|AyBcssn`>(8V?@6P?tmtBH@#J#8D5t zCzus8G~A)NtYz`r-xBP<)cy0A;Bs>?E6~+1aV=7kLRe6ZcS!y%C4-{Y&a$M@%J(Ih zH>;^>@N~dTZM^k~;y7-4fZPxi@Wx}kXtQ0tUSnP2J-4kY>)& z%_$kXhnfk%iEo3~3Yf@d?~* z#Gqnlr8uYZ5C{PQmJ1-FT}@uS?f0oK=dk(J#xBYBg8c3!}eM*nA9 zPc|&yp*M?(=K!xHV0nr0Eg$RwvB-_bVv6&4<;1;vHk61*G{W5124j&EKuryFQK=(LACUC|qyl&@oy?ba< z-*Zo$va60+-g8Jnj0QBTWHgI)%$YyzxmHKVVGy`^;;@rCiMnnpWF)j;Q+LZ(cuQXCR*FE!5-Fn|hG?SQ|pmJ$U%Rp0R|DJl2ul<(7&j0|mb|NIk zf+=X-sc0898njWTrdmMbtT`YsPmJtNdtRWeohT|kTE#)BtTVXn?n%=kZM7QRFXK8# z$a{;;>py$!iQdTH005SZ!h%_fU8#+oTw%Qjgzh&1bEzQp@qSWM{S z{`bm1PmHl~9hj+pnTL{osWYig-!s5kTzugJJ{E)KG4jV;K0t+Va9Hk}*&GK5{Jh{_ z6am|3+NCjd*VZ+Q(H#oLnyNqf-D?T{-o5`(CI6yIZdR}DAM8%Cjqi<|15EMF6W6zA zMxv+MyHWq5Hn{)yYJ=;)ui5|r#O{sgRC}3xftdPITH!m1)m(5sVbVFkRm7r1Kdha1 zal}7N0=r_J7|7OVSS!2(%MoDUJDl8V=DeZ?`Lv@A+zkRQ`;$}ip+4N3-9m2d4;7&| zb{@OzB7mprpdO0)X~VI%W3$`ZhtS5L)Xe%y6Lvq5J!`)uJ}1qAVJv%$qq`z1%dEVA zaY9-R&mt4R!u>9HvCc|86AVF z9Xw{$6G`>E-j3r0#Z>;@AkRLWo+ChzHk9!kDJ$z6Nb6r5Ai9S|P>BtQk=oU>4b!CI z0Fq?Ji<3d4hSskgCLVwvc4-m#JhQZ2R?CGb9f?j>lut14X z0BF;}^X1}b&}W4%jwXGE$SD4@{94DH?=^=Yti4PRVZlVn6aX-NSQg{GjDLmww26x= zUlR3JB58x1&L+WRn`Fi$t)8;oTL{QNv&eyDenuc@k*KYAOK1DbT(rWCK-}}i$gJg~ ztp42q*{1}W>P)8LOwtQ?!o9^e6U$XuN5SYEY{+r=-s*7l3{~nT>R47a%)L-%3$og@ z-K#wkjxPnvau3aVu&9-~V0vn8f?y&q_e4~gbbEpuTpDGLd8R&Pq&LnDaD;zqleRYy z`HD0Uor@T$5!LPLjvaLy8-GBfK}wXzP_3v1g~C+*+baSBLHwv%EvGw2e0F&mnEvMS z?d%-$L0P3vs^P6jf;0bAjW+0A5(hKaaPutE8t4$fGovb0J~1=+#xj74Jhdvn_xwA6 zYTeqNt^kH02gAQHRF`ke&M}nWEgj*}McwMZTaoV`Z3;2?@hlbE2_ZhI01-21+2Ctu zb(EX*!2lVtgb-eX`==V13dt%$Ur%>%)LTLLu~RZNi~4z<=tHCaK@D9j(?2Q)#$^i4 zuZtB~1x?Mt_5zsIxZww6%mGnJ2F$?Ydh226X55zIsj8?LO=C~XVvbD% zwdMmyAv-BQuh3~n>Bv-&-lx<)y+fxHRVxv!lld);C znXu>*f6Ln0|63Lmu6w6T@E;jnF5#xT@`^N$KU;v{L2LMC&YuNBl4p#1;O_o<*rbRg z-fX;(^|{z0GRQZcu_k6`;9*b9_@5S5P3{>?0xtCC+&U4pn(*mYxA~=r}K5tA?fs{EUfP4 zpq63l9|SLD*j#1?0pi$c*R5RyXKEV{8@k1J8{b=%^8CcBgG2F$LY2p-T&)U~lC3@9 zC8FnAej?0hwx()YqGA8Xp;WPe`}jP9t(T~CwPKAoS_>{);xLqY;IJfUT_qwca<6Az zXRt?91`KwWT3ZVIGPlR}ZiCRct1JFX>L6Qh6=;Mg`>hulGjAuhp9ann9)9TojV; z)W9{bQk=cx-E3+oQMjkb3X4WP>E!G;_SPG9&J#d`41(Dsu1w!z{5ro?9E|KHDs(Z! zc4S4Mj<&$2vP|)RF96B^>KOsm*ZEFmBX_L#-zy%ogo1nl0MCN@x*vzi$95TqZ-}pi z)p?ZCW|p&erGcTaeW_ihw)c}L+}{^~|3J|9di04{=H#|0^{yoj(G?&_k-YFw85@)& z+8Y+9^Xf!PJu0f`xUeLM9QWRX3~j^*ygS;zx-elmlN1sfHjemNC303Bz#Ox29IQ;B z6OD?D1XwuRSjY_H7_j{|bYJ%1gxqlYk^{Y|6Y^_1>~y^*D81Krfjw3vpzmxYY-esc z)_%CX#%VjWydBD;$l!%-@hyH&@f?w$tzZkkh>B$4u)-r5z_>BKQ9|aGY#fV;X*>=e zxBRQrS$Ahr(fzr=lm(d*GciH&@=zCzfwgjCkVRrCtPf1P&`#i81-jzHvztrUM_}_% zW70}#TC;;Eq!ccQ4=)NO#Jy0?&W`(-!EF;1bh}hbONWnpoa2K^?bl6imZ4gVKt3~U z`Ut8QV3J?OZlFha;og0zNrA`OKQVu|IyT46>81TzL=Oa}>nW4^vH5{7x!PQ73`gr; zzZ~wATy1qYfb38OlE$5iJmT1w?mYRADc zTgBrdMzSJ6Ia-f5_W?5sF89Q^rDfuJQx8j`Tea4JbB37QKJDrZ)1_Yl7k=&PRi$D{ zKVs{f2znE__@U+Ddj{plzZ>tynX8$xY4`OjdO_iwxXId7uT5Y!<=z8Do^FODg-NL` zd|0-02yQt9L|LUsS6A#u`zc48rL!QD)Ra1QcjXJ;=K=n{Ml^zS#6EvM5dp$|bb&cYjA(nel}O!oNN zz*`}CRtd8J0GG%w>t9LY`#~Ce8rS`&)<;*5D~<}tPvfVO$Q?nN?zsxQ*w24|lK%&S z1T%Hlg(_6q_L|t12R$-diTayS;P#k3mv ztK$CP!CcnV$Nl6djC_iWpMRJ+QJaWfsiWP}SV_v(+P6HY-v@0qB%XE#t4q46!>%ly z7)=ZbvDO8w^VrE`DmLZnW$v527Cbi~vF~#~#0uMf+smuO0(2o}FW8ajckNnhriZ>j+*d2A z?~5H(XKDbHvILjK%NkB{{xddUs`7RFswC4CB4RlX_FR@ANrz2D2js`xe(e7}HsCh2 zoU7UAcF$L*_uZewz`@8K%yvIc+&yO*OR(faibv(%xS@=tyXAjm_ znIkO8`!S`dK+YLs0ib`#nCn?O**HlD@YwajuM%B|8JBd~T3E$li!$CsqcJiRm*3;# zgMhraW(Gb*7#a322PQ3X&v|ahvY28^8Zr=$$qApWPqWg*EgnC1w@dGBwfXdcG=7iF z2q%qGcKuB{kp`d&28oJ@V%4uC!3gdaq&+ePp+_Zjxo}~6OgbG?NrJWPRk|N&D3o5P zr(f*uj$S7V3uk12uk){4$JZNtq5s|ofTb?l%ZgN{w5u@QoeYXvHc1lRYSOrKHYY_`(MZfH-QT<5dt|!QX7bfK$p@xZvOdal` z+))AM{rFo_ldFbW;Yn;P?79vC{3Ja|hhTBTD3%8Cotj7ME(49g&Q+p>q2s(Y`&SOrzEm?IAXyU2LO5!h~AvX^L!jHbm z1E-_Uz9kmQz!1W8>?&}epwHA55$X+tTN-JtY7 zZT18kgCFK}#1v(lyeue~wWij4FeDFI@O`ajqwtq~MVedcEdd?AyNVb{N0-^8Z}X*9 z7vr+=a(5YLar{lyVt)~wu0&`&SYeKltsMETniw>EI$11UvhQfA)ae(7*`sz6Y3>>b z4QXPnjkIS`OSE;Y=?-#aKJVrKflw*1P@CkmyE!B9x`}S~L6&kx-(AcT3`HjO<)8h zph~9_p>k8pM5M4-2nrXN`{nLAz;3=B`u=_T|Nrpe{|x~b_5;(|C|8RYnlW05$&Lcu z5#VL*s?4n@2+$CPN2qTJ|0O7{e@mnh7Q15|dRBAOUqX!wMGWaS}W3XFU!K(dm( zvY_@YSVs`E<&c%|n!KES4oHKAEPkh+ERHrqx>m_qr8@LbFRQi{58zt+LEv?LK~Iv={}Y>?#AbOH`-Hf8;4Iew?*4R>2Bhz0bu|H7`a>Z$m{5Rr@KV$FjB&5>Wk(f4 z%&ZIvB>lF3bz|-;KJ2o$DKUKtceybhhNrqX9Fav|5c4skmy*r3hBBw%%vv!vvSq{$ zLY~v0oqTlvBJKsr0M2ZA6T#o%qopOFp`_AsbR_Tsg^Jczt&#u5FX-*GifD0=vHnv* zV&e`WVGnOWcT^J1JLWPOB3;#*c0~D>K~l z+*3J3J6`r2AZv;*duW08>@!gD5?>Fa{E|fe9z-VSVUplQhu=NocawV9Kacp|-u&}v z(AQZ4tlEJFF^2nm*6{*OS*nm5l8_$e&U{QE5{fV}4CNK6 zm~&5~mY{X{s)=qYu6}PeN9OW}0d46qcD$DH1@WL{@(M^-km-z^mLAq?ZKh;5Ae zX#EI?zJm)qTY24|W;EWt@xEztdd|NQ$wDw0Pc}?u#U}O7=~eM28fzb99^_dy^E=?< zs6Kyifk(U=1p5F#%k%671TlKxB11zojev|*~hwR_-tp6 zhoU^O#=FVcZPe++yOh#Df9vfsK8CN&B$b|O)&n7U-tqM80w&`4sFPJ6*UgB_tvY|K zWXxA&Dik`^aB@LDluPP)dTwax%)P|BHN>X>d0JflZ{llhg+)|XHW&<(*H|}9O@{r- zMcQr14befQU1yI(Ui`8Qi)FQ{Yjdl;wLM9Jv>Sh=rc>b70*W;>rFk;$=(%S<0pPHle1Ve|vs&rta;Lsx)|5_yK&VloMJ7g1;wMX(9x4M> zvZ^EV8k0!p-v4g-$5RIwU(QVMl!FrB7Cw9@LH$<1Jc}>GPJXdfjNl9W;fV4t0wd74hx)VCk*wYM<>s{E`6aZYi$9z$VhT zKq5?(Vz0`AOdF5t9Ehdx5g)L<@~LI#H|vJ6;ZJOn<3Ab`RTBexf{5G64*p8_o|2D- z5Cb!EE4FEp)pT@*Jguw1i>vysCdB7A|m5!dxmPV6G9G3HDyYsEcx5HP5T_?6isCQc-oHzy=k&Op2pCMhA*U8k606xRT#g0GTqZtl!p)w66Kb!RUi{4w%G_ zNI;8uZf0HkWN!6Jb)#;!dMQnpIRr6CnmzIE7^Yw-yLx&oP8y~Wi`xzsxI;37s*CWe z!Q7NX2JduI1KXN$#_(ESHP1y@ut~?I*oj-*T_thi4U@FR32$}(Uk<0Lp0h?Yw(cu4 z(`0V*?~Eg?w04h#;e0TBT1N_dL6#1IAXS|x?&@jB(?F)W?(7ZQw!*5}OfgDLIK95@ z>=jbcrxCTwKE4e;?Ca1*XJ=jgW^SZYB79XbD0`dVges_S`D9(R>kq7FriO@M59cS` zkquOKrz&mn~f!Wft!gC2yqxE%AJma*w)FS6oPk_Lhf&gZOxET^*SS}?hy$bD*dX0vzoWF5D=o>;dt ziS_rxs1of?hgKI^uawJLoIQlXxRi2s)Q3M}Bc=zNn#k(HVYl2pgxUzABr)+_Olzg= zKzW+(ZXRgvYvAuK?r`iG$4#D>8Q|PGxh%bLC&4OXVBy3dZzVy~y%@s6w3LrI>;r>U z753yb#t}nl<=jDuHhxWZB(p2}$+o)`s94&4TxU^S|G?lt%Mv;hig$?^-^V5NBq5xt zh%+i4_gWmYnB1Yx@Ps@;sU@yy2lUL)ZnCO3Zsx0~rl?PKXm`=wgR7kcJ# zJ3HH#60-9Fa~Nr1=JH2h<=6~=Tz0v@09vwXWRpdMMxkC=qQ-bhnQo?|%9V%66jX^* zb=%5EYthB!0*ihO30if>5tu5d&lwe4Xr(tO5vgSzt6=WUIINbhS?j!2WiB7A9OqH$ zUX5R&M=A4BSTurV@muGcHIJbMm4#amT_y|`+LrfxqIb7iI_&$O=?Lm3$YpAw%pMqj zEDB9ZDMF^kw>9r7Vxz)450`eo%ymuUzC|~-b!m-t|5|LCqU_C$4P4skt-8Hpztm4k z;x0JwuD0)t%8OP}7R{~VcWCU$X%|VFC2Ss^-j>}7vQXa(Qc>lOPdI}*#=6rM;wqeJ zhIRTugU2eG_LM+L7Gzx{I%gK0+$8jQIoaH%oNwEA0XY)xV%l?0bJhc5p7;clpDM2Y z5ehm~&nVJ~+!o%4g%EqJ)KC0P%C=8=a!%Jz_#=%16%pkax7m_zhfZgCi3FE5&tYTI z3|4k+c@dQ)VgNCZJ_qRZfq^$=wMNb$E`>Yqe4JYoyQ*O4R##oWP4b_d4R&c=hCo*koaj>8;6n1%N`iqAW-V~Dr zoi6(=UYd^6^rsRZF}&B|w-wKCgD|}`h)fo|jK?qS9B>U+uqPCP72W0*M=U_fD4K&N z=AZnrVJiY!oc_4HKLXN=QZwol2?I|+c#Bq3&XCd`aSIJ@phvbJhp9QjHq1qP(20!8 zSC!hJQ?84$1BUlK_Ft~~C}GX@^KQQt;qati{O__yrBTUELAVFiOZ=B@A} ziJm}4f?xdymGQySMtD@qDi*KIU3S#>G(|DmDACQ3MYN~Yctr!emDoDmY#~6Pa zuk1oyXBvyQ!Xo)XAxRvn+K`~6C^n0HBCMPnU0fGSLx8@F9IVVIRoBcKCGCH5!E|}< z*3>e$ukM>n6#zr_UhE7+&oz;qM2UO-aY1Bi;3fNF{TJ6s3bv&e>I*xUNHgB43I#8x z2X`{&8V0h-?b8bq1os0h_8_x7aZb)vj*_mzcU4?ZSYUdSjIOk)0Vk~vroa2lMCE|)j_^p zUeA+K+5WBJ2^Cmm9&^(8YsRp>KO_4*kML%oPW0=#Af4-%v!#Ik)$}z-r{WRXG}77K zGfo1vqq)wwijvytzO-~o@CIYt2J_&QZzCqXNbGJ%&Qeh;`uD>V?1b4tb-4{St*p`_ z<5W%07j@>Nvjq&E2mn# zc_IOI=ic+VjB3;!`Lt`~*M|_Py1nS6v#5-0Xh?X8q&-)@8C98`sAs+q^mL;{jtG zXmYQCRio5V^TVZ=F9mFNDJ{*xddZ|T%QILoD7|$GAAh~733#PgA-`r_?mEWaWv*w7 zLtwnUlI`b;?J8dvF1bqr!Blar(6sxVrP!CxlNP{qa`A)k;?jhSdoGjq2qbphif^2t zolV4p1FhGuccwc--i0z;mb9A}*3(P$a^lCq1oTK{Rjc|y$huKCXR|;fwcY*jSW?Q+ zLswCWlmG!`!--DzUioh_yaq`V0fk3j(v6*TcYg^b6UG&gx&JPq6Co5kw!F#eQYh%> z5!^q<=apxwj@QI7^bwRDhz9cR&QxXf(J;HEkE!|b?Bh=zVz*bjw*SBME7 zO>q#X{8)t*#IYBp@Wg;DWu@-={!6a#L&d~)b9%0DQUW2*)WCi)KRR{#1U6`?Job-3 zJ+2pX<@Ag{laTk8ZR_nf!y_W6cZ&GvxgOlT6Cu~<`=-lO+-4;XOTyz`92z=)$k1x+ z)QS^@yc%?_(BX8pWX+AY;4acUl}JJs>DhPLY{2om@r+diAZG>T1FYXxWu-+ylk{e# z{i^oEarG)TK2lEXzM72Nv247uu2ne5*R>)km0c8qu(rS0kWhv#Kdy^+xTFaf)aDN?`ATPauBe(aR?*L$b;!IHTEgv|%+JF+Qt$x<(5 z45%~UHUthi2i$R_TX?K>G31 zbHKFZet9tDG_=7@y}C}!)k4$B;2aPrKfar_dJb4I6_)4Ytf&&EFLMGzSAeQ|vazz` zwxTvi^-L_X9!$7Ntas+Mg-qMfW>}`g3EIw27_H|_zPUWePVvgAa$m1Wa(UBHXx?mP z=iamhiYypd`8JMsBW$gJ#h;IcygfJvs8tjP4`Z;;^ICWb#0k=h5CvQ2^W!xTzDE_d zm)&pFuBs%02KGACUc*=orHSl3sJWcDE%fSR!(Fy8EFPSF#J;!|f&3b9YiB_Led8b_ zZT>^PFteMQ+Vribl2_lFu!jitJRJ!Lx~<66*0Ss9hAV?;FV`w@3bEO>3x6JO?5*v( znb$jzH{~gJP^VH}p8^?udf#-YY}6X#hmDOf#a^lL&m-kBN(phC3R{v$v7RN#`%DY4Nz9fR7)0oow`UE`V0e|X ze|(A8_sop%Skg4()2>p>HDCdOH^i>rY#gB3Mm)?J+f$?9G0y9v{$+_ zk@5Ljx_9o!+8K*PY@SpJ_b%5L7mgf>8ESd3iu=$=V%!7?Jb)FN`PA#hnCzxat$+=J#vYCyZBW_yjx}#(`(+vOs?>ku&Xq zHk#$v3jF2@Whz{_V0TY1;0c8ghSe{@^c9qj|1kZ;O#)=crXWt;J6T-C6~3qz1y@B| zr47FVtvPSe#)pk4RkiWX?g6`@NtJZTQ1M1BEphObX>Ph}VGr2L`Km@l)m1)=2@0;g zS^lV~GwT%0+s5_g*m~VUH_lWsvEncqSehnpzzjBo?&9=i7*C%K z`m?X^Wa*r(K;o0yU7ZfQA8*B3zE>$~7)$ry=*y^v&D>nT{)VMT1|l*rWKE( zwS-}gc%Q0es6aIR*>OVGq#Gb6gz;4$;T?OuJo@ZAqDZ)%1DN(E4(RJLBZ`JwL+E;< z8n_>G%(sBf+I8vABGjT6JnaYjc7hN}$Qg7CaN=~BXD*~;-!p&_Sxrhy+bMci#(28U zGds~G&%M5SHsM`mzj~U#76=jcp|9H<<(;YQb=H#D4KB#j%aV(C{*~B6kY|xJ#u|%@ zPI-)XB`!g0wbFn*4>3%}bw%6f0Od?RDy|=Lh!Sd@VHr*hjPv8K0vQ-a4|CTg)rjf)GJFWHD$b#6G6?J^g-JH?@^eFBky2gtc- zS52P4GMiR7#zRUk+i@bLCBU0-F8ZGiP>wXDIeBF{6NvI8qLf1 z?m2J_I5y&YC%4Snv+}4z&xE zQ0GQJ%-_~eH4SF3U)PHx3(RYv@jF_+yW;qObw$7SHrbE_?8SaNl)VKXXd>`uwRu` z&H-Ih@Ahb?o+r&Lm4+w~6c#XM>os-!&FzkqWm%0DB-lDKC_^oJ8KQ3s`aTU~SXfy) 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 literal 0 HcmV?d00001 diff --git a/assets/assets/images/R-C blue.png b/assets/assets/images/R-C blue.png new file mode 100644 index 0000000000000000000000000000000000000000..2cb2e959682a452e1736a098e3b599472ec1e1f4 GIT binary patch literal 151250 zcmX6^byO7X+ZI$1X%UbHk!C?U7eumR1&OCEJcV5>uVc(RbvEP!ueevQ2wycbV>WddBCdkA14I1*yTS~`2$R7*`86D>r zFE9!IJ5XMvWqf#ns`Oh{LQLHw<0#Y9gK*})UzF<?Uh&-MzH<3q2-r*L&d-c+nZ}@{ai|$0YX6?pO$dfH@4q=6bB#SQo-=tW* z|D6>Ikk~|MCtuq}dY5Y}uk*vewwUgHC$ECR zdDin~Eh6{2&)$2v!lJi+T$@+PX1fvjfR;dczt8_j_>V|w7+?(4vN$B%q*32#eud*= z2eF z$Yxjyb~{^CVX_>4N~Vj^L`O>u_2Gc)_h9@Afpm+V$SzRQyKX7yF7J zo9*qY#{;us^D-TZ_TC*39TOds*?N}4)lq=Ebq0A$`*FE}io56Uj`z%~dR4QXRuc87 zAAC@`(Rhq!P`fmnatUF||9h&D$Ic}#x9cUq zv(Pkbc)td^?uT?*L-k*3Y@@j5mn`Hfju>5{Tqai(8S2|fvb399&~0h@bgZHKXEi$D zhn~j&qx1icU+#NO@4IQurJLzlaVL_8+`sdu?oBH8H-?~#1MZ}4Hl-_FPg?EdO^|%6JT@`b)?8 z)pmHA#=gX#aomx68zIii|C#;&FUkJX?jl=Rzx+E}7?cp1{qzcD-!?1H^$t6-oUr2V z;&UH2+!DEX``BHy>;M)|7#zJ}h^k^OEiy6o5n}7Hw|pkgg5EtRQk?aTC;^6Dt`l*V><`3w>U>l{he-X{W`rocJ8~*Vjue zR<tqhZ5ZqRa&O4`T7htHRG6Kt!Gdy|3I&;wqhFEw6_~uhJJ58c@o&449Z5l}oLH zh+lE!!6WVOa(i!?CCsLqI|4>l3q+k?=x#G(UFvHV>6>|FulK~03ew4x1`&H{uq=Dp z0LFb&dDw}!&#v2xiaRCbK6TK>qV#$XJ{Co}jrKUr30vno9eL=89K4G@U5Gl3y`~d? zypj5}YyA{iBo$SlH3;UeDK*`hKip2F#kEp$x>y@58eRy*6;Bg{Z`l`RvfakqVaqv@ zb)2j^Uz8j~m9h6HMJq<1sx=pp0`JB%Z=NLb@7+TU5wK-I?MB&u3wRmpU*KK#x+s&$ z?5AgzXD=hyXlUwBeXf}Sc$|6Or+eF&DirWxW!{Cje9xz!B~1ic0=)4RjB+J&I>w_8Nbb`B-N4%=-M1P~l+?%Ah?2)ANmpEF^A=%9Al%o2< zxAVl77Ne8l5R8i7a9i=7WLa_0cB=WXKG*1{QQ-u85nkELWXI76sZzGAFNlqm`{0HZ zr<Wd41B#dr(;h5{^{-8tOlJw8CL*+W08ReJ=kTQgo>s&D6@kge-7C3 z#SG^u)0{q~X~&axM@RgAuWUOp3)oJu`A8*&+{$#kDo2g4sk=m;W@-3bqg$!Cihg&g z=OaRWTg6Oq1iT`%U)jEq%7!)$5~}G`w{|BmOOZ z@vrlVz`c6-+jKiv9gZu^8EpIi@tY1aE87gCG(;0l(~ z();4_jLIOG4NKLs*I;;(MZl;M)6nU^WFnKcghQaaVqKBAH^v)0C&w<-`1c#JlG+Y; z1s6qBl;Hpvnfc`{X$8>*A3BM8bBuM?a}Uo{B&XVcub<_)+GtkVDQumXY9)Nx8pp(t zePu93X8IlalqNJ@k3pxh+0w@j1X`6p?A@e0Y827WQB8Dokn+LJ)9Ea1Xrw$s;!;K= zOGe))W$_!AV;v&8=`~A3ig& z7L+%V&pFp>(KEs+d)bV1{64O!$iz(FApJ$iDGvKU#XMW>y9>TIB&yBXtb)g^Pz9#j zkqCOzLNZVDX$z9Yn#2HgvgVzFt)q7Ip}Lok!#R_{4i5C8WL7AJ&su@KWtf-oGF`gB znZyw!$wSfv6Q>svvnOdI;P}sM;@xChaYXak9g0xAAK;}|VyR;{s9rp+X4h=++}Fzo z(4(COlQkm;{hSn5Av#{o;<0Nrz8txfN{VX!x+?0JpD|HpUY6DBJRvs#d$BdJ(Pp|% zl4sgmET5RF4<1pc)ksl_#YDfN6Wy;O2$Ms*UW^HVA5jSI?yDHj6nBPvTq?m1*S^?j zoZ8oDW*M#6CCbnjip)<3>{9Xl0vn`TwJOJumWg~21vhCPi3t8oY}rdDOP4{(+8tui z%7PRccxV~}biLdFsx^@IUnoF%3v%6*3*r3<*Az(e8#xs}boa#|b6cX13_nlLP#t|v zSKkx6nV3t>+Y}wq0xvNC0FU15I9y~;!`ICRVCdL8wOOLEI^9Z|rx_m2*7PZZ#ChOY zX*BFY<#jVzfr>jPWch^}}r~iE7 z>>1rA`9*xTTztxir3eud+n&Uvb@PBn7R#oRaPme#bW}`AkyNxRjKZB~MLz9dfe)Jk zd?L85B}9%ok9E;AP;~;=1Fyzun+a5aKqTYN5DJ}7`C5)z&BTP2H9KD>T~#KzUpjqr z@D-!KR#Zgh)L~Ba++y8cNS2;GU9}(|I*K!Wf zA-Gs$Dk{6RZvr<3HSshONJp#IfQ6~9XAZE26IF;?s8;;s30O3HREcp;rJ);aK3ahC zT`8mTotTzFjJWVn1(97WlG)o3BiCWJJakGzb2_`*TZB>%%Pxa+Q!9+-V)jh5(ab3| zF{)LS2#ad)-v;mw{G1GXiCo&4l!~Eu)5Acw$$6-AVygN{n&p4>f!g@-b|JNn$wcP# znkyseDQ2fq5*g2tR0QtxG){r-b0E~&wpZnR^WPf=c1kt#0itl!OL4UE=BWKX+3 zdb-Y^nskQICZ(#=vq&2a4y>ZrS`8Z^d&X7*8tLRCz-cz`BA0R^1G0iKL#fysuml6T z)Y)JrpZt+QwS35KNeOA;8Q6+5UX~=Vo3}gE>Cps{0ri8gRv=Y%^eYj~#VUahely>I z0_{)~CzGk;<_xYqi`x}Pt>JTD(D>H%e=Z=JG5*O%>A{^{!x_@94s?IcPVb>XJSD1F ztt;|PLhKW~X@Si|aoJYgT6dWy4v?oAmXw$R_nLwC1@8cal8YZN)R;Wojs|uv2DSV% zfDR#fHg0}uh=(meTZBE z^ylIprJps?u9g#|@^elE&eczk583U1{@5vSTCpU~-f!bN8S0z-eZ{n(_RM?HFnYa1 z5u`xkTGisw1z4g0Ww_LsPA-6QYE4=yzVGYl=9(FLjwzKioSRP6*P-GZjcmpsT0-aRRrn5i_T6otngPNr07=M&&`pmjguvdXI0NXuT`JM zq%l)3&->RmGzfiaf7Y>;mG<58$?L3coYBXS=iMv_!C;7TvhzTv7yAa)MZT)Ar$90z zudssQS=&p}`;tW9(_}=KtaIT$3;h#u#glE8^YHlk&AR9^``v^j-zIuly>&S<0Qa_s zhe~XI*foM_JND<)M6V{jE!rHt!3}M(l&@dk7(G(qZ!Or)i1Zr_3@zNgN`c?PgwJ+z zGdYwIS`)tm^)Ngisb81W-~4G8eG97BQ@()@3b@U*_IGtaK}xXuoh4RAJ@J}Fv?b7w zuz88Y%xXy$ppJ$d(>eR&R1V3NELZ) zHxNq_Qu-9%La2X5DO0?q$-$9KOr_|7pzyzmr4E$ZB08^_pthh6>}feD#Vsx| z1e>?<(E03MD&IljL0+rXoXjkIU9;9w1B&7yOM$o|)IKMfT30%_qA|0UFPLNsTm;Jt zN{3*xJk<5=5pRV%5QMjQd*QYexDxNwHJX!&b~2lHx74~VsapRsKn>?rGb15noUPu< z&&!)HT5e-mx;1J}jNutf55WtU?M#8&kHMN>SH%Y6=)9L2;9GkR+1>2l8Y!+HwCpfX zeJ*8vCn5!|e_s_qd>4QDd99b4j_6iq>=5OL0*a`dW7{u9PiIAsmL$ZOB{jZ@3ugWm zAjyxdTs^9~Xf8^D*Z_f#xcNrTtmAps$$)e*$=w4@!cybWAgHNqZduM+d zpGnVjGl_Yc4g`^GpH$y|qY~8`$Ch}@{hpcH%c>wYBwD5d|4%BQL#TVaffdtRh)uDugq zYb69SXLINw4An@0J{UWk=NJ8Hu^=&;{b0fQrphf@4onMKSaH5Yvo54B`3Y+u`(A0cJx57*WAD%C3-0PXjW6GJ*d2;r zs5adot05Yw-CI{)vnT_2X7QAb3p1OToU!Q_FUcYm&}=@Q8ANpcIczY0WKoVHw?3_L zFIvOJT^_sglt)hFOiV{TfNtf=nESzAoJo~_sO}37#>wfNiAMfL{=0L)l0+81n3WCr zZ!8ogcvc9p-f*haE35uFNCd+EFaCinjJBndSM$r47rz)quebJY#2O<8v8qvKN- zL(%oAJ=K);>Gz{82JP1T)_Z~Ul{t|D@5Q;Sv&-*S#xWfB=Saux0LVCsF+3JOg$K46 zc@@!>d_|gHTNHl7s+m~vSeiZaE56mI>G3S@NH~e?gm3Ss=2*M3(eqG8lly9yCWbKq zsq>k8%j!u(SYk@|UOW1H$6`%G;*}`h{8?W|qw}iTL#|~_N2x|@+c;s;j8_juOv7EF zDn>N$3LSo%@VfTu1znqs6=&+a*GuXTPP^EhMCH^ZlaDXlEVBzvGk78Ej|O*FqI=9b+3LiRvW(? zTf>VNBgmb2V`sB4O8}W$3#^{l(*}ozF7@H%sBrwn?5URe)fLr?Atqz2hFNvPI-OH> zKJf(=9WzR-|2H`RhxBaX&DN1uqIXw`v?P&7@Ccpt+`DoFqmS`3m++>aRV!?vsHu)0*`0smm`GNy;gLVIf7vRtYD$0aX z7}XfofW;CNQBzn;--No@iWNsyxMC`5N^GzgBGRXLlORu54{QFGF$dCS?VSOpWecdO za*z%14R*I*=j04aApWh$Ogy}1K_JlU1On4JXJQ$en_A`+ZCAGUzQqyf97UwI)KIt? z5l*%^X!#D)NEZi&7!rUp93ciOP0Sx|CM9+t+TCN-106*cNv!p#B>K%UzAG^?S2qF= zsM+Pw%~m(I>)F{Y$_V2VbR(VI`FKst0fE36v(Y|e=#iZAOt_9>Oc8-`tY_NH)VLaYJ)R2r&{f4n3oIy3-_aiA0 zb>Iq~Gf`%q$`)P|{vk06-n(Cl!7^?!eWpCxvm&lCt!ol>>#pVYEIz0<)p$1KU%Bfn z4&I!tu+qoUVKAQr`%^O^Pz%W8#Oi%I zLo*K=X*_mZw8M0gL-;-XO|{Rv4jx@ST&N2rSH8-4J*=1U2tMqIV_uRjjsyGTyAO<8 z^DJZrXt3)SK+|qM5D@!Z+456$upp;O0QFnTL(%aQw>wX<>%*AgJj|lKbeK+AfCFvM)s)@us% z{fFtb_?P?~6G9|U3qrSC+s7$gLusUsYa70)9X_%SQ;8&r8s+F@`*rTbP8!L6ma9eB zdNAa|aF_s-2m?41A))2J*lfAM#vlEQ0y^P`MGDx-8tOx);%JMs(JlN-aztjcpl7+t ztIOAJx4!5yxudu=BjL51M;_=o#<}$IfS+aj)wvbgCN%ZQ*lYc>ARH2`1w35#wn>of zgVFW2veM774du-@VMKn^RokO_>_yIFcFl*Om-YQjjWe*v#ZBc(^y?G+tM;|}YMQdOOog_MKyOAlB=P-LMS zAHl-wMGw^_h>cNCMc`FdI^8bzKIHW2lsvhj*hW~S76-p-dZWW&_h{lihQwuwapPZf z!`)j7>+>n85 z*ObY=eDxJhV>x+kQ!y0U&bQM=U3{X3W>gIb+>E%6HYtl5b2M9_tv=XX4#pXVqwyhs z^&i_@S0R6?zb~?1bjG;j;-s;{Wp86DwIBv$ewtNMu)C4N(e2lsEP!^ z+*)y1D=7+?m+Lw~%>dD)u_;5QLN%?^HRdtbBSM5$TaF=<1O6xDUotFvRR3A)NdBC1?jXS^u?uaOJktS^Ji7;&dgcG-kk}mQ>S>5jnM0e6b@Xw0y{=>2N91sxfCO!Z z7JU6`)rN3+J|}_A-b0*@=+y7h#Kb& zBMYQ3RUwx?hEyDC*YaBYq%qkOlNUC`t4xGfbuJuITB^&$HsHPsyK$graQ%ZP7^M}U zK;X+CU>7P;xd9Lu$1BnUMRN16ao;?QMD9Yc5Kpt@Pp1vA!g8O(I7TGmb=Q);gdv1A z=JTCY*FM&-fbIsHfs);JsrDKKI?Wu(LZn`?tW33SX!Vi=VvpEDFyadaqCqb(H=Y7|-eF_kLU`S*nt!27#Xa9r(B9?x)U{h4 z3@f^E|MJ?1tWwoo9z=9+k^K>{-qt(?I6BFJi?myR0!B?(_mMn{?{MXh&L3LKEAh%- z{~JnAQ!l9s+nfIEXx5dH3#`XdK2UKH*YEL{GaLf$tdl zP|bh{zPH|g*03J>O!c)a2y5WiM%#23eqK_l_DSk)uGjni+r2(_f%oIiHH^#_((=jI zTPnt_xTlT&e!#T%9=o;APr{d1oE&Po?Y@rA8ia@?F82Q9vrEURnUqbUGquRM@zA=} zpMDD-X1YGlWqsI%BR^z1o^(l-3EpqJf2)DCRyywDHu>#g$Z|mxk`PZS4^qa-@m)$M zM~6_g2>T8uFfqAKyL+Zbsn`8v&9}++=XlQiTNKXcEhBEQ8U0J|7+_0T2?YB1d>}L{@L@=cehYyuM~C*hIDPdQ&vkal^{flnHX8 z--`4{r-{d=mhS@|q?VA;24vdla{*3bZk!a#+4*7}CWVO;?5AxsMrzJGiav0tDOCH1 znrm`-eA(CRpQve+8Ev{jz3o27Hpw{=+Mdo&ZIDY6eP9H(oW7&@kaE%LH%~3W>#BM$ z=)J)sRb%D#AGLF^atKj@W`U&IxO1~8d3Y^XOC7Y9JHql44C|LUHd35SpzrFdJchUX zvE#0KO2DZ%{=$52`H?_y2l2=gx8*9=y;+=WswC2?+_E+Ejb?G@Bdyvuf9x+tIP=Cx zynbKp=~5eDE>59(4iT6~YEVUXG@WnET)l`RGD5H+nKSc{XI-KU{z;yMAx0`+o_k;6R>KKWw)cNyk!XHF6RTHTELzh%M$fmKO=4y<|i}FdW6mOFZEx_GK{+9 z{bUiC1Qn5SKuJvvd94nD%x$XfypTR+X5{VfbpxL|lvSVip+6_%G90|7T09u0ioV-D!U>YY&U;Riv|LtEtaB809xsCb*m~ zhOu9M-z`!-2y=dB+*F2pJ^{ZaNJpudjgi)EbUuUARviDv`o3;@KCa7EIlm%II7!+)&j%n=LwV!R~azsCl8r%X=zzOO1!9<*Cpmb8I> z*erFlYXb}CKd$T=Rrfdd{#%}SW1nxjy+m=`)>Wfi_xB}smv{1~_9i^=kPvrw^v)1dRnhjD= z->LJx-wG#iXlNg}E5g!qP zMf;>-c-JZ{ValR2}oz;Aw z?Q*{=MmK!HyQpmFmNs?x&pFeG@&@#Tzd$!0j#3Lz}( z8rcv4O)0mZbE1$jmCX+va2|u;i!e9~gQyf<`P_CAN?5%v``xL*dL1H5qPVO?2GjKi zW7uy3whHZ+(}O=&ZZ+wzCjM&DKHOmMj2QuZ<=!5hGh|tK3mAGVVJ2KwHHUxbg+<~-YV%gdO7dB5mF^0}cH)V)Z_(6!%8HbO6KHw}26UpEcqT5T@x z_TsoaRQKCWH;7#7Cd^+!XDjm2TfSAB2i!-nl8%ZaaB)}XCVi~#Rtnj*YkT?1CiPq= z59mzwl(Z*x^BOv`VzadBzdrLn2_Wnuz4s~)Ip^eMJ_r|5J%VDtTp&8XCi@qxOg|z8 z96RSu4Hp}FTZ^=hbJi6?E}7uh6w?LW(esl;hFL&wR$w!qOQ*%fDw2Ad&dXD>Dk+Fo z5JkvcpHno{n=}o~cS^UMt~k|M6^fUYE+NWBBK*npTHfh(DP}rfk2Mc4N0WO(N#}&g zpQv=py)x(oY3*FqpjK}BWC8*W->ik}WooV!~c zTnLO-O&AlY6Ej1ScXeX7B4B9ym#=oDg3CPiCjnNT3QxNuH+>}3w z&(rwm!j*)6`r5g9d!-yP0V6Oi2b)Kg3qJ7djnk8Y zjD1qsxP=0;UI$$aRl=CKN)#$S_@-toJ9i)?*ZaH&q(-KS=*j;ApGU7v!6d7%4>Dg;wlX5o&b&gqg0c+#?s*zY9C^~i;V2$YW( zw*rOvBD?@MThHiauQwrT*{iNX{nz_rv)rxflL858DF!DsWPmh%=(zC(;1BiS6CihS3FX@*byU zZZs0%>XW|PLsfe5Kc3gH1^>*t*G5|)WdpK+>d!MxpoMEf0@*etFp7ezKpiJbXlcI9t4)P!I&d(-5M{$ zRf(WwBwBGY*c`9g>-u;wQ`V2{J7J&1A9=XnB_Xw6!~YEFMj1M;m{!!J$UVP5@|1wh$)h6o+d;3lixUFz*fnGar{mN zkK#v;w9L7)$-trvFi{K@yIOy=Rpl7E3%f=NF0lF@ERQVuEy&h-{K?|$d&#(zt9+!I z%aiBSM?F@@PPL9j!OylycDDR;$)a+U^$r>PpNql_(DJXHPmBz=hr3e8MZC()VSNwR z+D)E=0ER!I12-pL`N-LUbMubC;8J^Qk8H7xo9)Yms6T@EH*28Wt;%T(zuHKTllw|g z!$8nWoYmCiR8mo&Mp9pWSn`|xHbkP@3a(wpU&)y3uqPZhVx>kU?2{JUQ5l`+Q|Dig zV}O*h;Sh=$y!Pa5Ir`B=Tm!CN#>?7H;U&fdwrY=roo#+~TPv=3WKuwOxS~G7B zX@BMXnD@upA5iPyo!%yQzq0h|M3j*3$oKegITJ!)mpB|k86;CbEv+l;e!j1FgmTyM zdk3HTx_VeTUGRI^U|t_G@DyULLvR;a$*a%rk!nAdxvX8k&p$G}p1VZt51$8@Qk2g| zGMH~`9#8VkWrP27(sFSXjB`R$6J zF3FX@mljOmT4d+>xY29=&eAKnl&qstL_^@?YN}#9*GHWV%gr?6D04$z=Gkc4kA4MX zZTpGYwq^h%NLa4xhX9_`Mj$4?7i<^BZ_zoYfrxM8xRl&Q|9n=80zQA1&}SNuZ?cbS z88HxE@1wB%^B@}21y^+JlB1iBw1y3aNm3D1A$8D2Ad99~;}&(Wc+KLA23O`I6rwtq-kzVSK>+@^=$EDl9ltm(Pc_VPL1jzH*qP2OxirHzov*gnDH zT#bWL%tH7|rg!3qKPG!^-c+6RIQuo|dejUdb++31b2prdfU(san3!5$>#1yVhWv zE=z33NyFB=Mr_MvDBl2&VW84;^?IVeXf8E-N^7DtbE+b9YSgYkBlv5{@hnRR(fgeS zt^XxH2ly!SN1eD_IF8k9-R|JPXlBMi2~r0ZvT1LZsBJtP*T(A}iyV^o}qTZ&u z?VC+-{s(ogv`E3LX#%#Fr2LrcW8_S zFYTD)s9Kr3TyK5f92?V7{!XNjeMHt?6Q9ACn3LD(*^KqV-uwGjUoe-vkqCL2RyO-w z_MMu9(=sju#As@kzY@&7;{|ARTnV$Jw=C?x=yk~(LC!tg-IXYhQ(d35Vj}rh9@oH! zX?RG$@V}BufX=P{MhzNGd6?!&Xm_6%!z+3tj}*49Ki#^sP-Yg7L>vlp0TR)Uy{!U? zvbd*^$$}#*)p(iTl^;1*XWb8Y>=-9-W~ceoEN_LF(u?X_sy2@_y0R!#+a);$vMX>h za(Q+#CzR_EKDF4@$-dsE7iHut`JOZwgBU#%6V3hHVcVUZ8{metG+ok2G#7J+2)EuF z)1l%B;N`6DZ3H@%mE#F_KpOeX!nfgc0URVPlcx^kchXKM9|iDFHWq$v2m^U#aOk_=W50$M)n>AUQEYg zU0G^h@0T9*lQwv-4$T}mzN9~lC_MfqZ9y_#qYkP(!qil^G2Aah0+2_m0ww07M(tB& z|CsREFMCiG-S|k~w$7#4K~5Foel-#~syp(9hIbe_Ad~~hC_!~1+J-0m_n&4U{j1NA zlY16Sq9hb4xwk@xbS%uI=+nc$C<_jPVHtQ^yM&AG3XkRv-T8CBbOm;D+O7_%So2yp zhUtd43Y@kNjIh; z-a3#@Xx=jwk@rOM5$Dy>PX{x1Br6m~Q_t^@V&p6DXC2J0ch^?AI_ychav?Jh&#qhcn80C)a0VoUC)}-Y|)U+JBvQHi$=YZ-oERm z5=ySb4`E=ED7xmnmR7zf~fQz<^Br&N>=T}_+Z1-2imNQP$n!+@uTyecZZu))|{#kKWI49FY-atKj>di;@q|; zOy-VxomYoL5-~pg96kv;zK%Cd;?AyZlW$(!g|~tnwi6jrJH7)XFlfl#24sTrQCTgf zgHnS}-t(NpbR1jq1i2T=p6aEq3YhPT*B_95*WGQC`J!!GJ>2_d`um7DJ1<)dBT}Mz z;I8STBq^!eOte)pX#A`&DSyC4)x_XoHv6-EtOZaSEm=%Ax9d+}t?jy1U_Ag8iv)$? zRaJTML!PZaie>vf7aE1KE3E1)F=|NZ+y3wQckzH6+n33b_asG>BbN|%E9&;}(kREJ z+|0Lw^4p8h=%*TT?mZjL5${RZ<@9CxEw2ruCDYF`Vs;^|x2m4cgYJl=1x%5mc8p^r z8lr{->WFh~lAbp=H&cNPmY^O{O6OR=^Wzwu)}Pq0FT~_X+1k(Sr>X9MzkJFc$F2E< zzDqBC;gLpao0sPh7Os2ahgU;7w`kJvO9-oW)q}jzsop;X7LELE7wWU;5r!9x%82n0 z<`;=^`CP&7y+7=FKd)5mj7B91v3uQlmY!|1TCNWCz4^cdU^}~g9L63!94Temjl7P& zA8ktN5Pa%a$arf1y$RFOY*4jufc6_iE9yt^m#M(`DELlBbTjR|OE&0BU}`?@JCB295O|48S4_Z8{0AdHm_vlgco72sL<){%s|7!Ea9F zQw)$$t@3q=-61bGy~eK)X);tNhi>wGB?nhj(OMNUaT)7?=1@irh1ZJ#;~&%&;(xvv zrmyrL&p8hLZj0H~mp4uSQIqV`ICa3}8VlKkqaNK-IKblNqQqP%doJLcV0CVo=v;lS zg7HM~7uK^^$8-aX*kOX?VHJBRhKQUWMWS8G)^S!br8Ntrl8YAkl+xU(!|=WN}rNKEoqkJ*~9VHSZ`LH97 z~i}i|DX-H^yW*3W_qXh}%du_h82$Stf>d|D_m5Bivb=HdV<3#McFY z-+t8TL~R+9s95-EUFYwCQuWae`!fd(>LPX3Oc`sSy$++XKL&i~80D;*=;KXpW0P1nJfTQBs?PfP|opuJWIw0};!qEr_LV)KWp%f}Jd> z9V2R-gUX{j$;x0eTCKIlK>@<-))AsEQs{R|*Z`Y-xZ260lYg>{*VL}`I*?}H#iYQ3 zqLi>f1YoD5r6}`)@f`<--mfkx+UfQF{LSwPVigM6F6N??S$8U%F>fcyPzi&j^qTjX z4?MwM>$wx}>j7BopbMI(GtAQie?I+QvB#6r-4Uav72MEWvywR^X0ShTsVp+XgeSb% z)3y=+X)s8TxI{k3>a~GEh{;!*uRa(mKNR|C_=)cPr5IShR#joY(tMK~g+udxe1Ugs zacx>9p_r}~)#jl1V_*-++tt8f`2BvDu8%iKTB)`rL%R_r&-9CMo9YellurJppBtND zzR}?;8}&*l0<*4xYP24F&L1*vAL2NAi0U||=O<2oXuTe2#;anjrs!+Vu?OQl1i#2$FSGnIH2`tP1GJRp|-=T zeQ5Dd*9m87+?nd`gv>2 zQOph;L1lBJzn?(a8WniE5=FgSUK4V~%3RIuSFp5wQ#Uu^z^B5?XOn-ysf)Xjug%T)ok4Ctx_h;gaZjHTkY`d z%5e&9pI#Ono&{>iDQoY|ugK>Sozw7&E$dQ#G&iL9zG?hdW{o-@1@U8}$V_PbUy^-Qj|%=LaS`y^je;K|LP5Bwr+T9A1zNwh z#nQ(WF`5OEPjP?4<$hzWCH$aGTMX7z6)P|DuI(&BQ^X#RgU_^dOG$3q4Uem@B<^{80LC`UwA88{5(0(8wH}w?*!9x!q#LD+wB_Ej^~+?x2L4Cx zLQ^l?lUY~HSV}3r4voe!L_Y<2&qM6av=l+VF3ph`Z5CqPz3uDrt!{O!Si#DX<5LWd zJT5T%;GTd)VAJj?W`WAbfaR~yNe=;BdZ%>=-pgXCa3?3x=C=|wqEk(MciE;WtK1Wh z>F3M{9lifhiG-b?zcPR*F3SZ1?QhaZk&?+UZP8$?@SGL=$8RJO+jzh^6?Owp%^Uxh z&sWD3;qA1Awyyky)$Dv@{wvbD ztGTc1@bilS_+!WmvUDYW4-YXMyUf52vAjtdRbtDA7w@DlP~6IAf^&{!vZ#OHf5>Ue zWp*d&(&Z*I9)^Xxo{v`TYl!~}`ugV0xW&aiifXc=B6<{LHKrgdit!U0PwBT$Z;CCa zF=Ovw*A#VmWAn0?w9D-8lY*=VD#^w8_HI-linuACa)F#0I7&g$`4O>bO&Gbw(WSq| zLeTo_B2-U44WHNhhotWfUP=Q@<5Qx3U zo^aZA!q-#m*w8OotXxIhW5@8^xDNy}WZT`IRFVBG`;OpHgi{=ZO&DhY-DK|(seF1y z+>TxZ{bvBA###Dmk-gF60+uT5jUR=fCy{UN=%3Z#F{AbI9}+vPsdb`rCid-22^(S@ zgr>CMiVgvfQuyx544YyujneK67`9IApW-YG4=x@_Cg#`utEQ3Y2HD^}J=>AM0-mqR5u_qjo0p$5{ zRIA3ZKCS17GqHNyZ7H@_bX}6bw%xgKI`t=I(obsj?z^YdQ94`{=w`neB9ELC6mG;s zfzl9z3*ok#%)X<0jfcUeQyZ-T2_)EZ{Y-%?lfF!gimLV5W9#LyOz<)F=9=B-Zw4W} zC{3=x)c68jwH%?Qy)^hl@4k+&iqUbYFIrbEeEEmA{N28l9m`}_C8;=6l;6LPA)G$! zfD1G3_tX|qo+Ey4+9=yM>9p-nOYb)U#CwYv+11()CE{YNXqG+)mBvF5hOuI?vM750 zSjnX8*Gjpu>Wb*_BRM#Ku4HipqzZr33h!)bX1z}SuLUkWv3X#GA;ta#;or_WR{dc+ z2VG55?(&E?f;I_?7s=9wl9rsB6widaSQ|}ztLEp`8tR37w|q7j`?XZ$uGgbKc3bt^ zOnL>s4B!3eKF)h2$5ZmT_ViuIN6bEc*qVRoHOV`XJl5i(8t6rgraZR#!(y2le?#HhT64_0t<)3+1>%Za)OnGf{Hb}VrW}KGT7hXtSbzqNQN45;fb($LibG8uheZ`GjxP#>oixGK=CbanvZuFBEJBvf!gH z^h|ph%5Sul(E`QE4g68a|9uoUQ2#}R{Q5f#Tz*z6=QzhS+2X5|7LHc7(w|e@O(TZp zP)XYCEbr4U{?}aT#h^1!VcCPcI-sfgkfB1Y*bn;n^9c*&(af9vd#T|m-w?5H4 zB4{(|VJAotElFtg-3WEy&o0yJ=R6kPKJN*A$+S7!OUBZpxC~u^XcYGepe`OVnBo0@98P-UMSaOXA}d9SsESAb<>aQ00p)^)P>04M6RVs; zA|i|r=3VCZxU4~jP(%9uke~0j7l;0^FK0b=Z!md!!z6YeA3chmr9~2kX0zyuZGDB~ z`t0vcy5dem9RPvSxIjBRlaCkVAeA9{qeci(+QK&>*fv@~>O#b_amA**K%<>1d{zK{ z69TqL5JD^==-4VPAh~82R9dLmZ7rHIqWJ1MXcBiFK~sm*K+JZ79!wmo4LRfm`xCAV zS-0zIgmR*&mFSENb!6j_A=7Zx42B>k=STw4CoIA7$D*<~YXK0(ODvPI*hv51H> zn0S$?Ki|ZksK{R1jnq1q%3T7yavQXb&Juh9EDPf2EF%_M5$jS8cujGY~r|TOgzqV65_zWuEn@bKnRJTpEk%^zasjrx|!}$r{1ip8Y zh5V-H{_4PE&jslizQ6thec7}fyRj=O*XtD(dYd|uh$W{T`$K*2Q;V8wuW~@~Zn8_8 zj=pbentP+KdFolY`@b*i@`_EKV@HY8X19HOGOkT^9LAO)avs?TD%w_G^1x60YbL+i zcx=JsS#PU6Cnp^L{I&YcrR6l*YH0_@EB^8C{EBy8U^}}t$bg=uYU-8ulW==!YL(z3 z>_#d~L7;FeLV_Sb)tM+E0*k-~L2z}5Z-c#S78On)y5%Gas38* z1X#to4i0&B9Z9b2z`D+99KwdY!{{j8@FnXdhR9mgfFdA3;lyscIx5xYq_R4bTwj3S zwuUrm?1re7ENWsIM6=03m`x5g7CxDnaD|WxkSy5H25I8}AufC!_srB;0hv*M zI3)bY9NjDsd*y_I-n{qx(e!%;R`@6;?TaC|hGF0NDad8N!!6SzZb!;uLC9+ndH6x^sJoZJc z^a$HHRJB=*PkBse5urz<8~tBm`C)5FhCe{c6g7o4_0#a(sz#!8lzt*7y1a9u}Dz3{AX`RbMWcZe3?yYZl=5@5*uw6HyG4hkSOgegqI`sJKSvm8b;LMjFWzvF=zf0k8 z-y6w71{CjQk3Z}f*>})|!G_l#=c+d!(KpVRx6SR*)^K9KgVmYG9uXXT-ko2TbftUO zF7|_GoE)6{$RkXjzl=r`(S7=yG3?znU;p#97sILVEK(Q!Vo>s!ftRPL$ANV`-my`n`BDPoa<^rYKl=@|_KTw}#x9tIn zt=2yAxFmCqfjZa0!(~_8upLs9Kv!f?#*SlcO_Z!rAF5{CXbj4>sN8iuX}-WA9qXtz z_4PHR!2;g$oQWK5CU#^R9CC2OeULJ+J0z&i`UuSiG#g__TWp;Z0Ew8Kw}uq?6}uxF z6Rg{HIRWcp`6QAjY!Z#E+|8k5E8n98Z$%F2U1~^MOVDJR#5Zs4{CWvPC?>VCEkUOY zzV!(;)FRX&gk%sLvJmpHO&;NDCkjom?M;iH1uBHlhD^4>$qJ}C<@Zt2No7?H>FrN1 zmhN4<=;iCyQCYbW5ldb6n=6r_vy<{ z(K&U=;K-{UY92x-#RZ-8>Z-~(@o39%T?egOtOcSbpD{LE8GNGu{J?WxifDHL(zBq@ zp3wgY={w}wVAZVq^pXF%jrl90SjX=Gz8{iB%FAKgPmW;UV=mO|=RU^W3!cxX-bN~|G8FCcR(g1!C6V0}K1+d0GO>t|9Y+sut1y=ULIQ<~NwKXgMc+u=5@vnJe;}$!i0|-hsUYyX`0ax<*^3GDa5O4 zi{CZ}8l3!FAHyaxwov#4RxSjJj8lh02xP_1O9RxB=5v&_3i8_k?VzR;UKIp!#7Y1V zgtXfbLSSK!fA|f&kjhhkbC67b=L5Z+Y1(?h(&Y``@rgg3n?3lXb2BUEKdA@aaB+Rn zDFAzqPDReXN1Vo_&K-i{-)~y%J=fK_c6+B|eutpfzHOO3zmob|89loe*>|0KlAUVP zE@&x(@3aB^^nX8E#NuTY`2H5H``~vE+=lJYlJqFOio5E?t5;FA9clfZn?-u-y1SlN zwt_RJKOf!!^!@p@a@FcZ`sa^5u_MLDzA1cn3Hii*d%8W39V@iySo7bNbM*yNU*Fyv zD5o5GFy+-1`aiQj*-S60tV-+3M!Tmicx}~h`yNQ2J$jP#W;VaR|J%Rbwwh!5_OYo<=pA8z1UBp%s&pDOq^!nhBcRxpXSgWeH9a1 z`s>i`x}wVJkhUI>K~oFc*a5g?qvEhVO&ZVcK#*|}CyNXjLTVa{Md^6Fk;S~8Y&KAn zy_|IRu1IYjUO6Z~By6-x&0ejc!ovIOq&dEuq2dq259XD37rUQ4{F=rs;hCpL1V6v| zA6vCBADZ)GO<_Tf%KRlO&}69cYoh$f z7I13c0itqzJ>uS{x0$$=_P5JG)AP&9WaZkxMhFf}?aMFsoyVl_UMAmnQnHXC-S@Mv z>T`HldieQlSn#;+|M#nTb7{lMzU>QapFX8V9NEtqJ!DY&2Y<}Iau@_MeLUcCG)C$DXuf8nE#=*cq|)h`b2qa#muetqiYneq?+;~#P5 z`OIHX77Zv$^6(BCa*n@p-ZOsJlg4hd?u3Y?s$ZP!WY-PMpxq?-Xu6OcxTs1CsR_vt zWt7>O5J^}Bp+R?WNawCY^Eo~nVv3E@QlfuZ2pvhKcgI;P=zN>XtPjwvMWF~9vJ1C- zn;ldvZ-ju2#==9WB#prn~cuj`x@7EW5xxvg4GYeR|u!IqZPo(kcI9-ux!JLP`od z6A-X;MI~EX>GD%4s{Dz>w z(J7VF zqc2S&2)8P$sHe{!r;Wg%>=109moku; z$bE-2?@~!65aO^As6)smgT(0-WmI?{q6;i^g~m(ogRlz$kRi>sEYK=y@JIkQX=>0I z(riTIlHm)|9n+8ldF7q(=!D>6V-Rw-dfiP3V$%NtyS+e#g`y*whLn))f#4I8VKpkt z;8nJPIOcgNUgkUv*Ps)s7lx1`x-z^{KIH(_^)nN zSN!^q>|4^L6O8?vAN6+z54p;H{ESO+r9;CV%1h;{2hRAtJN4WP>Dhgk#^)en%f&;F zl0Myc2ZZv<%2=vs`n;z7+VI#LZwgMm|B;rgUYUCK#SH7eKile&=PE~z*}vPD>f2Z4 z`<(mgjP$I3UXb1S$A93SV>a*P^DX1MCs|zAYmnOa=nHk#+{d_M-V^%fneWE?$1epL zbId^d^dSRvw?ABmACxtDGtinK-SFhfk-bXwd&@qhth~uqObzSPN4L-JKqlC1RrXI9 ze~T36C-vfG>uAPM!Ow2Gv7Uvce~%Ju(R#+bWxBkgN*{R6H2{*Im$Xkm>hR#WJ$jab;_YLNz(<{=;E%^pmn1PWfp16f*cFoAx)ak5d1hM z+HOcs5pv>9ekOKCMa@=xDo7{h;}+~g&Z-dG?@D!^Lihr<5k2IRAk9V`vhm2prvir* zE(V7z*0BW1-v_r0Qt7Uwy%0Z6lHQ(HFZE7CLGYcGB%Kb}>pKy&T~C@C6fLa6jSx8+ zB@Rif#BXn*KF=U|Ib_(dO;Q&uvhiY4)}-x?h@AkkW6G@sY&@Jek=u^-@;ZEK;@IX4 z^~o?U(dJHB5ET2UYA?$6(|`p@K>Hyzkm3p19@rI z2W(;Pg!jGne9bNe*^+FNWN|YIr*dWNLEZFK-<`^E-zmvLhIH@F)qRds-3~u5 zccj4Sgy8G-z&3pL@P573dB6C%|L6PfVfy^f*lIji%lfgp>BJMV2Oiv`=JY%6 z4`yzhtv~d(TX}Q-a^gwtK7IBWXYeWK>6Pz2mF_xxn^6?%*|W!H z4?6l>jcKpRCdux2b?u-+qcgFS92+|f32Yk|s4m<{+FnM63hMRDFy2aQf|!U6**K(Q zYYvFF(i)A8V3DL0Z>0xyHh!1&RIy|mYh@i#O^AquBE7aQj$hVseY@u_C(VR}rN~8-E0=ZPx9!6sW_ps`VrpGrz`mz18nploZgyVAF`gh2Z`I=^B2FU19&)HCOut2?yM4~l+27C-o+ z>4{rT7HM+WvYPcwUzK(3!vXuX*N~ z<{Fv)`^>reiMQr&D=kxo_3N$1{$h~+*K5;*>n3f=78J4RyWig0!43D?C68J2S2RqX zFV?PyIuMn`f<;ZOY(X;1Ui&9Y$`+%;txh&sG5!f>mu>@V2waC<$TLNdR#2rO(1>MY z8$%dsLb0J!zzSzMn$<*wb3zmnCpf5vz_t2{bD6j`R6RjQ2@#u8lGm{izjHCE)$LHr zk|cNChc(s*2sLbSqM3#)xcXeZAkO5|%@Ql3jJ%L)`+dCp?zrU+bl#m%zQ9KC@n{#> zjp(?`h^rMD1J1^%5}OVU)PzU~ZUWK<)KV8Z?n_cY65vZ6SOHiXsHKYPm>$;=kU^0h zFFa*rC)(ncyR0j$|9LhQ5{ig)Q^H82Vk1OJKO6Asl4R;!L?zIq8+CvQ8?K>Z(W2f0 zSMlBQi9!w~gn$fCg|L{a{I;~~xI4iY3TmP{&dCh;HmI@?+UDZ4&Bo8lp@tPmr{a^O z=E)!VZI1gX>0s$*6RA=3gL?E2qnw}r{yh2JyvM8d{=+2=S$aw()TFUzNI^26`(Aol z-}qFMxh@mW{XOq}yi8v;`Bgn@(c+fot6oyJN*{N_I4b=O_(9XvEkBiX|M8bof`7k0 zN8dZ`?X5nyS5EmCJ{dII)}gl3$;Vl5O$qWQqYgWMoW91^`lXfQSyooD?GwLVd}j!m z%k~+l_C4kTy?*v%;e@yTt)F`TbG9@2Lq9g_4ZS@pZSUgUg8g>cheeB?Z}EWodd8mT zy3btn$KavqGxa}SSkQRow12w)0c2<8grBde0=;Q`T8H83cl|BXwR0Q&)SM-aS8_dT z(Z}gSF1WtF{<8Ea?xI&#R#IM(_6OZ`y%gl9bW~Kl#qTSSEZXQRwX~(LFUV7$Dl9Q!Madc; zQQ2`1{*K%7DO*x{yQ`Y62`pCUod* zwkNSe<8zah!Qix-nkKT;hY*;Eo>V}Nu-`Wpq> zCZJ()6Ebl+xJM2Fb)>0lxX;9Y*B4h(5NAJT#gk|QRn`Keup_qL1!uKQ5a_70iEW{( zHQ@$>m){w?O`BMjl6_>ubDwa{1B3J>kG{Ai%QF11Y+2@`S00Xg^lkEi1VLT6ZiSIf zIgn|Z6e0(e>|yWPz7stTE7jA#n9s~vn<~N;q*Cs!rwsA$|L?2%g*QK8@rst6<>i%C z!3(c{pjWQ1Zs^I?82PCr<&|kb>v>C;wRjEKp(6H8u&i<&XHB0TjMwLThyLc;@QyVf z>SHH9v0c>>zeao~Bnuhd^M_pc!~Sl!pO5wb`=1N-5qCfKrKO6kq(8TCY>Uwta`J$K z)tKXc7ToyEB>nIU?{2o0Q6dC71dODTp02Fgtk|~u-1%drq_|Uh_^r3bJ%xf@aTwFvm2_yCg> z0a#DSdNT217Q~h0q+y{6@nd^Fx4Iit3YEKl3ao8#4sN>lRudu)8t!Q{Ca>m)I4f<| zb^VCQLf-T{xUpsJ(G^+M232Jd*imASjUhB4q_QAYM_R2Q&2nsn?8=JAstTGG9%_PA z(xZM3i`Y_H)KM>p>mhH+pK(h6e$u|3rEh-fjV908iTw^%m;GuO+1c4a*FRj;#BZZi zLI(6K*3;hlbgLGzh^=Pdcv1NGmtWSm|L2XZ9V_{%B;C5?=~)X_Y-!Qi8f4;;zg8!l za&xe9)_q*`%H#T>d5boC-oIvirz8vMQ(R=9*XIzY+Yw_k>t{WtubH{sQbmi`%g<}; z{qE4is~&ph^Q{uH=eaWbx{K`BKAac)>CUN*>ly0@UwTddea7qcq`Mh$2a#p$-gVkZ z9M*Fm_1yVgc(YVmCg#6}q+8Lp#6I=hD4x;C&TB(-)I{LcAgBR?{-~ZM5p2NF{BXuxRunV{&{tz`5Zrc175+tc&i~dw}iBpi;k^w zjmD!3F8RpD9MpP)WDIU-@a;Mz?tiDS@B%|%g}B%#%Zid$YzUQ*CThtPpveg>0?Wd- zqs&4r@v%hNZiEKkj)+$45I3|4ZSbuSm9U}&4BL*Xt`U*6Z(AtKh9D%PEL=+njX`Qd zyd{Efx5ZZ}XsgI=Q%fLKq$x+pkRct*KT$$UhK+=t4I87n%)~XH>#M{?>C}*oO--yP z>jpB8euqE=aiU|>glMezGjvSkA!(K%o!TMoyWoCdVF!^3$N2|*f~j{ z96x3M+N*i4XS(gt$57RRgi%@5F!$9He>#V~i#ypX)-Df@y6QpF>8L`Qh^=0_>MTM( z434_$LGGVEv&HS)!!utCm#i+=pH!4LPri~<4ms35{g?sz*S$aF)H^rpP~8Bn!{Dcv z-%6EVgWigR576b6Rg_n5Jyv;Z=l^-mvvh2maQpxI2LCGHAMivGo zzDHe@SwH8oaNOL9ytJsPV_^rO%gQUO4jO&^HV@4Bf&Kj3uLU1Dg?pPlDo_71Rc*^5k e3bYc+^Xj!*K`KH-9%JRWtS*=*j4SYhYA@k;ufRMTeOGl=aF#AQ*B z>Dfa(+K}pyWWWLW!PL3+o>w@ne?Rw6#~h*mG5e+9=BMW9S&LeXiPm>bpUx*0Yj}Uf zvgSKr=~r69nLj;D*LSDh3dyP`MvVz>nDQ@XFWJ;%a7z%8*qCbhxbmuM&VKD>e>~^g zsWv%WeOOO@?u^;rRut$_Q8n)W)&HwP-%3 zs?Ac`wJ9Zcbq?!K{d(1h4xqdVACIX>8Fpc<$lpo*wu zXB3bZ5wA_8$LhGcT$^|SQAApJRNf~lFrP&>iZqqjB&dodfe;Hfj)zE#MvEY>M)Evr zP;t4=HWUUOpgce_kg+Ya1%ZyFopi#2F#2B37a@+cMVlma?h4syd{&~_h_YNVu`@Cf zU+Ty}?96mf2x)2?Ea%2m?nHycl4>Lo1w^f>JTw}gT9PPgh)RIMhpa1TM>4Y~&MFIh zjo8tBXHACOnjGA`uB6o$XjYQ^*Jbl+R(0woNAzfI^x@~;mOko$=k&|(FKO(E z)6cy54!yhXVV87C1uwm|ibh70+B3g1x~@)6`SDMK3C}EQ96}~%4?4>3({0z_*SAh0 z(3Sdy`R}zj@!RI+sJ(XCUH9I%EweVIYPW>oj}PBRd1aGEu3N#D$+-Tz&0DcT%BzFm z&>=n=1%0~DYxm#^FLvGt>f*j7S+47 ztA1-tQccmXGkMiX#Ogt1|$Sak7C=h(`xJQvz!(Tt9?PHWi7b)UXmK4)@A5A>{~> zy=li4-6B<3qvJMHfDK|Aa5HsnHurfRneymUuYt+28E zT2z=s>J+|Hg^j_FtLV%v`4}uZra7Js3QmsSOygs zP*LhRp@D=z7`3&kEU-`;Z6r4&Egzz(CMv*haAM_I$Hnq>!@af}^n7naPt+QrV)uo> z#@H&Z!v_>OgoJVOOcYY+Q%ed(8XJc_@m6G`eS=t_!l-3cb(V$KQOLOKNb@mZU}N<& ze%`PVn}wn^hU+?N+T~|C?c3z04>24pLfaem)*SiCTzT}UW8DG29_O!`b)Vk- z)^Dt!{dYq{{#CdAoF2!H^{Zc<$UO@t>!;pd&W=bGjT<(O8q{CEyl`RTZXFGW&0W-> znMsf0F80q4+&j2xV$)K7Rq2}WKEUgNf0(z7Qu~AO$!e$z1nV@lNDSuaf<=y-lr2D^>-^d&PKA^QH;|0 z$l4G;6SV~LErU2VD4VLhwfHO{6Gs3*7EwRBD5f|QFYGRc4C}yp1C`eWRZ{@#AXo2> z+qn}Je1IDlaoyQ2!o zG$gXrhXoRMAE~#JH#z&PSW>Fr8D!x$EME2B*NzJpMKRq0wFE3g74C&o)&`Xpd>dR1 zo^Rj_jdW~BGPfIPmO+j+IJM!){K~e+oj^KhF^WO{G@!rJ_lS|1H4A6Tr9*q`iymv} zv8Nt8V-)-ERm8G2p9Md??h(CU+44;%iiK_41c45Idh4}ezaMnfGv+O8zWY^wKV_tJ z+biGidDe|vjlb`h%;hhGPvD*xmTr@ff8P55UixSOWo0|2E0&HhsDb(^s!gpxwVx>DsG?Vw=emzLX<~WyxM$N7h)R= zUx*3Mf|N~_yPSZ}V}h*T?rK^J(bRFvs2b|fEG5V;hwRwH$b5{)2y#w zGzlB+fTu55q>D%VWh;-+Cj5QoYuj~P3(zx{eIn)E`gn(qxWNC*jC+~8vh17g#rLfc zvOaUq!`yw3z0lt<`(KQI;|0R67W=1i`%8$ z^9ymZRr69GdeO3#`bTG8U7uZ~E*x@n*sV)@{rlUWCD7}2c||pVdi>94d58aYbTD$^ z)O6v{Er%Nc%75@3C#$%JkY#xkK}{09J`UG1(H0qFp*v~PvV>|@G-T3kt3;)ad%{Tr zU1!jIz>4;5X~$mJs||VU+v9i0qcZC=U}a470WJxId~(CxaMuW70O`=+*iqMuzyh%Z zEW^f*AvMm*sEj3bvCL6RHtm4+*d)kb-w}JGO+~>P-1Pz*G}1;v8%4M=Bn>!r9l3TE zfld&p0I?F-p-q6su@pLt+FvQlAVI8kM`b!9qHchJFvN~ysa0qp#wKlLaKbEHZIQ9- z@QvVx22nv2tQT77b_qOOa#k9`Ocvg51$gQ9;0l4PAkw;h(tL!EP}SMNp#Yb*NOdkw zEo8Jo>OevRL5N;ylX7+?Y}`;Ifen8{^_c^^R19h!7;K1}9D)0ZATYdE z{)WDP)^>^Ka{iE`^}pYJlf_H6T3FhBbmZwA+_RhCZN#;k5n*GQWBiH3)xd-H(_{bf zQ1IleCS7uaU;p*Cz!pPgRV^a698kK8errM0-n{+?J$b;vGJL>~9oNmu4Cp;Km^yny z{WYB0x|(3=tOs@VhH416SV>9+4=&73bS>35q$oz#yJTuYl!n045s`?+#=;tE_ynKo zIK|d(aOrIIp2b#lhUkIb6hX0$D(2#K>-u+ETIS46r~XVUgkG%k5zS5yU18{*qK zQdg}gOAG@lSEy{ejx?(gs?pRUgeW>;lY@hcTaiSCipq{F$(Rr~1KA|lm@6pX;D#=h zb`80r$Tm4>s}|qZ5N2WHgPlNhf`BMpn83uhIK3f#Hj-k1eOqVu<>wlHUeu6)w??6R_}?UvRLPq z;jm1M)LKVJU35A8|)k%`oP?az^#v(gype_qK z?na;tA!{AAZu+92UH_rbQTwnqUuZm!;Q#HEdQmC~=YgaBX9Ui5`NX2O-^ zxAXL}vM3T`Xy4xI!7*2AD_xkuM^i^g2IZv&XV<)NP*vL_`%)Er)cCW)J7@nV+~Z@9 zAl$0-peN3n%k=j@*enyUCD_;?;a1y8Eh=Bd-xs}4U+sqkmi%(x0{z(h4d0Z5?;9m# z>6+hOopsHEPiu6evZszaW5>s=W&(<@B(2?TOs2;^0$XW;6H@I;@AQjpKu7%&Rf(kx}z3qvH zm{gzISW?)sl^i|j#5!etdTOoN7Ef8=VpStPEl~kk({!GPq$jk_l-jm5>R^#())B>tGu4y&P<`)`&?^ zNiC^BqqIeu05Tf8&ZdS8*%7ysp%w{qqlHjvu|o$pv3m8yHDsuwiuWnc4smzuf?HRBS7sq~7OCnwlnoLXf=W=*fn-4^(pjs> zup&-R574!>D3b+9L)>?L4GbDhrh2(*6KMk^a5jV}ZIh-NO$}+5;&m(lE1&G@O>@Pr z(PV!i(0LCeD=H9LweE$5LAxWjNXmfC?}#c*!dL z!n~HFF#sly8pDKFo@DyGrGVbx(lQ$4=_X z%5=KtpDs@ybk6kzdaca3@Je_2-|nDqk0P{2FIw7!q&HnqEZ4lg(2*{sLKZ1X$XV;6 zGZq-|t;p*0b8V_RenABv#TCsINnD~*mIj+PNJC7-7VcTSvn%fJ<`6bG)*y?henl-+ zEF);E(N46@c0vo^jyhQ&Hok4B>{Q3fT~|<{-fD<>7CMro8+q$X@irEtuu;lF{D`Lg zHdf?_)E*fLus53YOs9M3R6R>It10jtelh}x@ zv(UyO?W74z0xTiOixN6?bq05>L2$8kF-da(!Y;UYXjYL@m85=b2c9iwc@ zX!6w(@HrJ7mSX2e_s9)nFF;01|3kyl9(iZ2_Pj9$3+Pr3N4UD}f}j%Q=G|k33pN_|?FN@)yo5cMm<_ z$L{4n8;FwJt<7uY*JWhyP8|{1xVwGk)^m+e<@;Rw_Urzve_hDx%9ZlF zo<*Am`}N`*BV_4Yyt_SgpM5owg>BpV(y8x#Sx27q*u9JWyMqUy>^56H&hxS)OJxNw z&tJOL^vmP=?(bcC(QWSN<4;D}P3oiigRZ~6s^kyn1~1J1Sc>x7s%e*xRObvmv`gsFRP;K4&X$Oz zEDLfI1lZ`%Lbp|bifE&QiuCKWrYa{+u1E)wBb5Lrtx*AFOMq9GMO4`+4PiEDVPgl4 zO%~Z36XdS2v1vn6?~BXc2)Sr#C}$o^3*M)4k18Y=(kjF@Aa&qaf~>IUytI(c;SX_Z z6xxK;5D{-pgA|mAcQ^pdD zQ2o|KuATen7SkrT1A5+)Wx)?eUs*5qOMYIGR4S?p-uSqxsv3XaKU~PH`JVzthW0x^ zJveeGO4>F#?wL97R*t;%m+2pzF$zB@$8#OY&uc^d{fRXv`_7Y3lf#EzF6RwB9c8B) zF7UuhuV~|C_~6yM{XgCN?-uKDh*+MPvk-glQlT@h*&S7xz|BC81~Jk0J2XIL9iA?t z9ec&a)&X4nIDXYd#Ss)+M}SXNTo^t(_U~(KG6)`fkzcz%-paOkz6}N(9il7?!KR`x zOXELO;Y=ukmof3vmgKb5}WR%1Pa;yh8WEcWsN6lC*8_9~o z#xxe9Acc!#Yyv0J#3i)JWCbW(G!|iY2q>h^#%~`rCe@jc>b63fI#{0}W1z;a#m!_v zXpu>5z#)N~uEWoV02{T|B7a2+MF)gJ96IBYA;S`uclwxM_kh5QiXQnUM2sN}Eu7C1 zP%B7a$VTB2)nM0+EM*7S$?El-?f2I@<^~*(f$rm6!)zLddeP z6A`gjSq3RHxHY@r&Q5C{&=?c%U@mRTyn|toOr}OXia_13+Z0e zMV&J6M~GzW^B@0LP;%(`AXWpu93F_*>Q%|?6!Y_goZ{Bi#JYb)8=rPXTC7lDg z`@c;x{IoXuj>&JupKH4>jXO*7bMn)tjK8gMSLty4OHVrmU6g<0lTQ-_6?m>g+&Vqj z@1!fYHb^&f-}@OVOC5H>GrOVI*{BSpjRA?;^r-fNuQE6r1b4NKPaa*|j`(fssIkfk zScXR!If}M=^Wx7W0dYoK6u-IwO&$g8i(W0L=s6}ZAsGu?Y^pnkq}AtS_yQrsAspcrpO z0ym7DrM6|kN{yZ03GoaPx;NFW;l0@gcf^4UiPM_so9QML6o zoAsX_{#&E!Z(Bup!IS?W2-a@vxTq6=5`4c&!TrY2^H!{&avgU6(=MjNEB7+#qYs(A ztVxf-osDnCsdskQ{&vaX=LXep|C4cZp5Lx8HyfM7OG=nKzj9jzM*QP$zNtQw4uJY} z=4LlK{QU#Br_(h)eozBZ3btO+tn8)hD(uj5yB>N{y6xll!~9JR9$$EKQTl~9uL6*M zJxbj1r~FFiCG-7bZ@Gqf^S7Asq=NevVs|OcrX#tg7}kNRjfN(1?S!DCp+Xj+Sp&J* zIJq6kH3hI1a#q?Xt217^T?n%_;IkZu4P>Z>I30LXje{_L@T~ZujLO?&@xY|bA*{pOw2Fi&%|Lvog;p*LBgAf$dAfAC55I+asU4u(oSPOIx@skO1 z)*3<_e5VFiIe0pUKmtNZUMW8Kg z1sP=sP$&x=TktVxOQTGz3EPp5tO0G=IChkVVH<Rn zLqH7ydF0^7ktR{|jx30K`nj0|1W?7gSc8rpfoN_7)OSdM3>o`f+%DbGD|smio}{BzF9 z6B(INnU%G6^+H3_fP$=ojEI9eDByyljLV1!w{V(_Z%bwd{(ipt07Td)Y7g+kdT; zTDf!(wox1!(_iKE2}d3r-FV@9Iqbj{YzbkkT|Yy;(FQVg?#qu4fBM1G!k@hVRJ5w~ z9~8$6$+O;jVZC(V60W@ZF7^B)4v22}`04tDqxNOd0w&*e>MXmdZk zMNw^j2RJYhajWR2e&_+4Xt^mRhfshq^Rj+*2=cFXGK)#hv07NnKuD z4-i;IQl3W=5vG!4%vbxBS&Qptq{SB64nQiAi3WBfWM2XXfms^d0~7P8A&Kd!?q#6T zjPVB|#uuJU$~cO0Zk_7#^Ca*Ad6oj+JGgZfPUwzuB1%K-v7w`Tk6Mb6>FxaIC}qs&^tF` zR4+RG;71EP*n1`?&GmnIB*k>)zDxGtS*yp`Ru1|b#os+4+c)j`jBxK4oNgQc^DX(& zU3UT5GQ!Wk<|O^U-t}feHMFD0xjP?TpI-I5-}1-1X4w&gqdq@xi?V1h`S~xlf;r-N zA>Ya%-+0vX!l%9HjNl7zKZ8(@^d4efeBp(iOTO@$^xSVE}?*d0w(h!`L^V7 zUqwV36;KX9qDva@nB*B4p(zlMdEIoUXwk(=0F4vmSa*?-41>ebCCU8INC}N{&W|;t zQJEl-U7QnynZy88K&!vfMO%$22x1)JdZa} zHKZva&~tua=%_Zyg2q@$Qfd;o5aSfdMBYf9P6@3bF11j$!pOP`+Ux^_SQcn<5B1s| z*xftm5+MB!AW;(aNXGca)eNyZAN0xcq^wc72!2Qf?F!fdPYtwrMZ7o`3mJJ4sRb+# z(plcd1{p?y5(1eC^aeqgtiVttWnmzk{mHdd^mA8+-~B>M{16yIN`#b%h)|nAC;ysz?eSFe@(X{ol{~|MVWi%3gfUPtDWMxnNtvC0oVK53Svyrp3ZP%6{^^T~6fhrao#tr`Nq zz5n+3Pe1!Y{Lk-uABmY%`>b5T$Vh~>nR&~_KQtF#@jJGmPZ2)+*~=K-~Aa6`mJ8-z6LXO##^jivEl%Cowv~pimZ?xerbtTI zOfp-VBc%XFV27bZNYpUsr~twcHYF;}=oIHrwgOg@Oh5@ib;?3lfSzT9y&3NwO2l5I zWYoEr*2E-sqTr{8^GUq0?Fb(npk@z7Q^RAzU3~IQffCjV&B0q{x?;kRy?QaL zL4Wi0Z_?+!^bPu+i#|lC$L-a(-jRrZUS+cf?@2J&ewC~}9F!DK@twW* zV~xLWg?#GnN9ui#Khw_L_8t4dpI`HMgy%O4r9^nmh5w;m{M0A0BinF^G(o$P-tp(V zux`8Wtq$LJ_v%xgdkW=nh{F%x>;f?7U-6S<-#4Dcjd!lqXPj`1{_)xG3V;8J4{_9y z+wJ7)TR(Dqw{7IpR$eoA6ROjKTtc#e zCB`yOlLuHYZf1S$k4#O}NtOtrc}uvV$jF9OjL-Z7;f5+Y@pL*1NCC+N#O1q*xd%v4 ztYRWN2yi&rMNNB-Z8DIcbVk@7z!F0-LpO5nYgK`O$X1C9ZH&$sS*VeSHnFyZ#?!s5 z$_SHyn3zO?N{ghlG0H+$V{+a{HI2Y|2aw1OQns4V3iSGbq$@C;E=>9De>Crq9p?q= zyID?=^Y%({0i1K51f6BrwnNQ1FXS+lVR8r|Tw6r8{M2EPl}R$6vz04BCP@n^p)C=1 zCCGV7-GI<4T4IjCgaloM5(_9dfU=S}molKU{!%ev5xFk zkZFPTiqx}ZW(2H*fDlC$=rYTFOqOmVUYSCe!w%MAoh0~cfl}v5ge;*%A*Z($bFF6q zqJzqrINLLcRec?1k3lO^I^s_->bctz|5Rl%)J8?r-GhJuK<*bl@{Lau>Sdd~ptYHK z=4lrv`@QW9Zn)8pIeSYe+)WSO%k<28?)mHei#;RVXK(&kh}q~Hl?j#Ll?^e z(Ra_fm70E{de;8?vU>R_AnkqYHkhZs_haVTTQ{4o-B!qEyF;Wm;b4y=?4|eJ!Ot&$ zubw#Kb^85J|GQPmf479JPCVowmQIuuUATGfR(`Xl&dwY%#z!jp3vYeVmbA33!rCl; z=36eY-@5jW9$2QvN2+YOY8h+oes4NEIpO@TVQfpSTsj>7?vrPz6OTE7MR>5i@y-Vu zN5ArU$+O>c2G`#(r4HF=Mfk-x{|o!C9%J!Uebn9uhkG6M8Y-0~m<@_;T=Dv6XP#3! z_>hxBs8(4`G+#oc!dviUo>In$WWBl@#aynY=J~G){tDAr0t!S#q;!yU2q+UWgcoG@ zbfo}CK${NtP*=ZZ!`Qu;i7qb4AkByn7zH-V2m{H~(n%)OA80U%qDH{pjLl9EZV;qM zCTm?NWJKvOkYFnk+3G?TkVGj2ppz<1(ZFhlZfX<;RhGzEPsvjQ1ys{B0#p^~SV|Od z6@_a0;RYQl!j>RRB6KRLObPUc3~RtzOIMwumx+6N)B= zk@{{dZ$FI^d*apMZl%6-1L<%^T*z{opdj4PWn^*>U@s5-umG+|U?mAH6kXC?xV3xu zt;gImWa^CsVox+dOMx^QdSe0Wmiiq;R6Sll{KXG%ms+NELErGn_k{Oc^hplff2lqH z%B#!~=bUT)`D0($41T!$<{K>{CfDdt2pk=MUh^B-0^#g`|4@JZ&2JBX{N6JNwWqyp zrx~YCIQ&q3=1ZU18w4>Q|M5?_bIs0K5lRWFk)M>>UNn-n{lNndD2l1ut+b41tsdp? zP$mEUD&$jF9T`30_%qVEo4;c|e%&v3r8>6t#=LpcXMeae(RrX}JL3TKxhEd4um8w< zIB@^*9X%!d{#(xo|KYeZ^(oK#NAwnxd)M81pS^v}M!?Dsz4(>ksc-vY__Ggvlu(cL z9%EkkiI2zcdhd(Pi$C~YZd|jGEivk9wWOZ?^jAV*Nb^K$of@hGxD1sE|6vCet-_yx z$(#idq(arR;5+>?kX)2<1UB2?QIpha4dgtHkbnx<}$6fI#~Atm;cca6+fG1Uz1GIUlZ zDW;fWMrf)j5mI>Xzo88^R2_mO!!{fVl301(u#tc(5DKp?Eb*A8 z&N8n>mys*F`R1L;3AxVe>f>FVGjRA3^!)Zp$Z*0xQA2Kg3QB=>5~Kp9kV<+S^%0AX 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

    }G02e~(bRESlSo8IIm{+)-*^ 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 IM6N<$f*ZU0a{vGU literal 0 HcmV?d00001 diff --git a/assets/assets/images/R-C green.png b/assets/assets/images/R-C green.png new file mode 100644 index 0000000000000000000000000000000000000000..c81abe01fb3f155a0c6ac3c0f865d9a1ee1aff50 GIT binary patch literal 177012 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®vi&vbguw+4{cCSN1JT6m9olzqqb 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

    +oMVeb9frPzqmtYP|9Nx0sQ!G3JXR{|YzlT0 z67QydfIdKy3yy$rxT_IjHuNHhy2v;?a)TsN=eaWyW60T=86|*uLbo_38Rt1`kLS6N zycNdr>H*X5VrB#)huF90)Xy;+yXrgjTAX52#0;@sv+{%XN3Q)_^}5Axm*Sj4c+30z zN6tN@zjFA~z>cXkFZ9RuyircanKD{QL)Me^-j4#jHAl8}Ll$;3-7- zrFGI-mZLT;yd8<0>Wcz7yyA#3BLi-~q~R|uaFF1uYez=(uTm;<=BwXa{5w`jxJ1q; z*#z;TXn(Qj=FUShGCnmP8LI00eZ$;L)PTFn$tqIig^YZN$CTK|KXTGux@aqY+E#V> za*6w0c6)8g>Y0aZhC&%iNMK>(5&qc3@jJJC%K6ake~Bl`Odu41y1(nx4|Gcx7eZoV z*i>e!jkWh!OUv^)#WQpkE@d(>Eovf13V8GC%}^gcKtqV=uyOA*Wqes-Pc+-LXfRfH zg-AUZ2{h6yt^;73So4BN6o%8a1g>b7M4wnB;WJCcFGLpIcvk$?Q2Jz2LVF6tKDtm+ z#f_4>u2rN4h7GU|zpxBB7#E!zwC5To%OO?7OT?QUi9Q!>$DeVjo4||?hJ_n$nnCoi z9W%a_SwXPnojG7YMPSr$cNwIC89ZwS;DZ5ivHy zUz3X?3o$I%2(Mix&P)!!jW-kku+bHK%#xfaYl*wa|1kg}%?9N`kRz|lyp#D%hRKnM zrZW@|``o3vBTK9kxFNxE#0NKUs=mhn@GNnZ%>{N6J zTN=gAPf2L!90~0OE`gGziO^w{op%>pbph&w%u zGk^}FcQ$>?|N7C-$#AMi2Dua;qSDfPSoaQbm@JP2NxI{x>D_4GM!eO>{yURKn@D~ z3c_5wDp5-d*4uBM^E&Sv4PRH^?|euPPjJYJ(ZiQ5V~GLX)PEMC7;v{%RP3lJWXN6{0Ehb{hqsE;35J?NyuprTSyEC9 zQ8&PPon%y0ez91C5!?d>ZZ8p!v)|^nN_yTnjGQ7MEFvl6E&JAMR=i*Cm~*Qx z@W8T>N9;_*yO~d3W(RHcmDca*uHmV939|`zzP8`6_FejLJK6KNj3@i0Y2=K=6Vu4! z%aD{#a(!f*8=&qVKdKvsVYpYW7??d*C-Xw{4K+l1{q{kQ?PGoU3l;xZ=T86cc6|cc zWfrHle`)ha?N=|lPbT7FwQSDy&g)mb!!EW9d3H(C;xTyLtY; z^FQ?ddCy)+g)-(tSDGZ zGuZKo&60*5q^>_LiH*owXp+6ZP@FyMBs7sH$#q9?jZ0@jHx7dx?^}-agW;?n5ygdo zU<7OjHse# z^8|7lAXtcLf4-cWGJ7UJ8KKesj}rpRE+*zzpG+X$c;;V*)Zsqpw5%4O=R0WbbR z*ff+4&nW`N$@1g-2q*yQ0Mt3!h2gP+#WO5BJZPE}pn@FH;CpGqtioj99l)<8X>oU) zMOoSsd7?(_lhD1Yn0WWVgI;-Ftlm-y{cw&r`w)O*Now~Xwz+ZZYc#F_jg%}!^0 zpND>rfLts}mCC$wE;uxmJw_&*JB@o0i1mgwAG6-G`46qPZuwp0b&>vA{nz~GM)ym~ zN|AgxY!x7Z;Akf3zL_}kz>;?%@23_Sqo`GLZnxjC={FgMIng1Y05^sYise4*P7o{Zf%sh!cSSR+mGV$4#ykiVr8gw0LF>Tc6 z7K$~23LfCk<^bioCW*`n>OMU)5*RaqWhh5tkE{@DI3nqrM#SBIQuJbgImbCWY{I}Z z?Wj0f@{!&sJk*V!L)xnu`{`ossC$e3+t+^5+Pv^~yeuYT0JyZIR5`~es}Ss<%m1|> z+-^V7j#>spA@fHYrOo@?8S4E7Z?^7Oal3WxAuJzxAW~U?W#oy6QpKx@V}-ukYY^#H5v#m2bVe_O-ewnJ;c0E&?!f zP^j4wv(Bq}zonb2#9b06-7#=RpBp@{cQri<#>`r822`jIFa9gFHa5qpUvFx4+k-L# zbjSkJD_X^?Y84#`5Xb-+3Z7iYv0zAGrIU6z^#g`shRPAVAkI*^*e}$GH4ekz&;?vi zY(6F)#~qL6BmB4s*Mb;>@jxBy^I1^RGD(*;iC@BNH!1h4Ibo}a-zNELpp^U*ak5o(O5GsRF zKp1$cUo|d%Q6J(pf@ey^Pk?DsH~PVt=YR|pC13{tW257E9V!f?Zm=0s;Uq&~<(t8( z0nV#OC3QnRyf^@38g|tT9d{9TL#>fgD<*p3fXK>7t^b*$Uj_lVut+_`T0iGD`yHEq zTSx7P-g*96eYW>WIni_2fBM{y5XNx(E0X{K|MW>jK~z+GuD@pfJ+dZiF6the9n=Km zpy>qf1oN=2S@K#Lc1QGyk*CdY*Y=?kdQbDu5XMU%?lxU$d=A*#6-HYq+li_-)x1d` z8$2q8cZf+ zz>F_UtL#`&=-oGbM7onbdU%xWG*=8u735V}OXe&IZCQJ_m7SZb&3H&CoIfG@O#F=g zY10pM&tRML`b{6O-n91Zl8pGet@pxM#_@?knMklAnDHJpziOR&-=epwSWZE7FBk=v z4TPAL*zhmC`3Ts;AOI>DV`cc#3k6qoiR24Wxn~jkOkZz)#uL9c%DPEn7*mM z;NeSUGMJe`{r@G*o5}Jv$L4HCW*h`El~??cxz6V~P8m3?hM=bOLZElXhhz9g&o0W~ z%zGz)b66VNW~r8JN2U()JeLL48=yB8{qW8z#eN@`Lw}tD@oKuoMnz&`MnZxgrt_N27hoHE zW&o5xYrnf#hY^=~THM=DgN=@wH0f-3d&f)Q(Xq*c&mg=}u=KiNaf_hK568cwyM|`A z^$sL^BzjfQ6S~src zth!(tJLFrR6vE#U;xAXvT0m|o5!#`FD*A9$%ev>4xYZJc)?>dkz&WS3pczAH@ z2E?0(SivAYyx+9(v7}g8WYRKIE~JwyyK(O|DT|4p4TGXFXN;Nv&+jRjV%yVXw&4Fi z6oS%B3G#P_%&@e~bs(QLfrpW|JQFmVa`a1Zj$)dZrscgk&ir;kOiYsoPLQEWUP$yR z=->Qa(E}yo{CJ*N2OQBApbU4x+gjcuRugpXiE6QqCq?H*#J$Fq^i8M5%N>@`o?3C9 zC=&Y|ym>Dy=`}58$Qqj=OcYK)NBXj$-vDSfl~7L@A6EW|duZ<(Q3r6Y!jaS+$HdPW z1Q@do91rIu#aoGQE*r{p<9V*pZFiK4<3_~()W*-lTjQ2ZQ=)r@>%A}U{xf~Lox3;( z?Yj_FlD9xr6)!}lao)CN)s~k#Au9xHF?nj6Dd2b>pwDyqw<_Q6_YSZGu8dpLFo$Bl zdgTYLEer3&dA4zj?i@I!+b;}4xEj&psX-azl87i_(~cZ8lUz<_L|`^ikx-VJms{wB zklqIG>c$_xi0EW$%>C*9e@Dp%Z8pdV%^rc~J~nA2RY}o&=L5HY%6a|v_W-5xr8Kw3 z%hh4GU;-{Yzzpua&(EphQ{GdDABR?qnfB*BjR(}3ku&c1_Iz7~LY`VyHs8K?%`ZE@ zy!JN`PN8|%H1Tgx*XVpd+v)%yn+?&}KFV>HQ1_Vt=5zpjMl!!m#mPg0B6Tlf!NY=Xt{wr3pu#>{fDf*7or_!h#of>& zc2}|3KP?mcD4qcjr+1_zb@M5a?4(3qSR&z{6^h*e0>Z`h$ANQWV7+<$;xBc@=0>lm z>>ZFzt6{F`w;<`z>`%b^>0((2=ScWDa4E3m)D0jVY?4D|!Db9IP8ho6*K|U6IhHxV zCpL?z#uD+9@YHVdRw3z^j7g?&WQEGl;Se-iaRH!vR=ml2U=7Gr(Hw^B9ceq|^>bh# zDhd!0jyR#{G%76Ew3Q9W%4FdT;pC2KSFG2s{zL1gWp6+R2Yd4UPdLR3Ar0{@kEELsIFuzxVu3 zJvd^fVym*k1=iBC<@)TvNlAD^_8V6}AlF4UN$y0%_99S-Ja~6u@xHw4Fa3_5dOTxl zKHWKZ)<4?(JTh>CO(tr7$tD?2w0IAleNeaca#8H5HfB{?p!R9z4OI6Qz?o~ z6m4MfC`KwI)EVEtxSQ(5EA29C9ox?VxW{Wna{9zw+6+)emRfKv`#f=)0P@2%BKh3p zv_YiQ0f=Xb)#!+71HdB{B<&m-VGqM#I-^_%NmTW?cm;TN3`R<0eGyP*+aLqdDON;? zE0c#m1IoB$G<8Z{C(qz>LSVHU*NycfEgcsNpy@Q`h;D#R0GeDIOgZg}6M>huANa!2{s_}uKPv9Z z2C-6M2_3A4rxiuz4v4JC61^ra>Gh3xKXe1v1^UmSZuVK|WgI$;Xj#buahJfcjk2vJ zXdbhhtHgN>Y-tSsifQW0=!%JTR#Kc}z}4}f6OxylVd!ezka&d?VtsGy zLEUZUB?O2HQH8m4z*HZwcFe!kKQnYp#^VEOe$iG{5Xq4<14s4n_<%mu{jB`B_i5|4 zn%i`d6!2Z94W9hOL@* zvpHgNw8zgQxshUZf6cveeDJ8=JGvKf;5yB-%8LW?{QPC=f$BG^T$Qi?q3w&hb&$(u zUN(~Uj^%Gs#f2rhd*I~{8yOny@}EEdgl_3RYcHE~ZRkT=J}l*a316$?x#Dx(>>&8nIoaoTs%HcRJ$WqKU^034Tsy;H!caJrsV)awS@%2`$%KR(){5$g!L0=Nw#3Bhs}Y?CU0HC}3}(03iQEOC zZGgko4-$}{G@z|=V_>rY_#~1}x`lU|NeFC@8w6Mn0hMDZ@v4$y4Rg6gRt16K(srjl zNIyRuXKjpZI(YL!=G*+7Jf^$|!2f?K(=(QbQ~zB?Ca>{+WT(Mn5=j0L;PS!%M^ygV zV0+`x8vrzOoxs8}G9Ae{<^n|CGT=oKJgYtslruOtm@?N$DS}EB)S?%_RGuZ?DtKGV z+ssVS@V*MMPDe$tS7lyA{55@&TG;{s4@>yydInnzshPM! zovJ`uN(aR*FJ0(AeD*QCh=T!)sGMlAT35AA^1}I2KX_UO$NKfz-WT+~wx{*rC^06m z`N8paxwGV5sy0$;h!g%z4$U*|-}kTh4J*5_ObYWV^x5uuT$qrw@93ufqf<+C#*;&4 z*2^zgl&7@y*4nqqeU-1%Kk9o_I!0%bX(6EFjP|uSZ~<)5&O24uk!ab9z`Y?>aQZG-GbHKkX=_6Yu%jN)b)#QwsNCc z+U2^cIGKw)qtA14=(zvrsYg|APIl;5ulrr=HOn9Hch>L6d&XYu9qNP2J}c{Eb3$iU z!<~bx#f9am$W#(50`Oe|H*5hIM44DEMI!Am5&$SY4sQWib6s2#OWMU<+bsT;a}wWr zK+;Q3iC1%8{PHfa+y$b#vspPy2>jh$4cBpQyI5oS)DW|3mnww!lFl}}Mp$hTFkJwB z4AHJSEB?HGfHzoi7mTVUia3Hr@V#KVV0&+P|f5eecek+Au|1i(!8Tn2I07cg^ELn|J=*}WItQIg03_?6 zdK=q80(#9bwa^O{AQ`YPvSm(GndgeG90c*10Kfu3&x1Im7$)DHC9-e;$04yFT_aW} zKz++FK20JKGG`M-1B9mU1Q~+r#Q>zz(AhKD@XDAb05o+lnj@;VNAwbBp8uD}{&~h| z3xZ@J_u^zdylv(9=NQd-@ zJthMq1lcP_UiS?&Ny==UVnjdL@E_hc4}MX+puO0B%a%WK{^0h{$mFy{Fk5SR-DYH{ zX*i!Dtm>+Z3+$+}eJ}+J_^QGHorhb0pr?dSBlm z>AR0e;+J;H_^*Cn#_#%;OlaP0yzb>XA~{^3@`Q!)l* zjx(ie+K^uX2r#CGz8WV(-lp83Bu(3n%mX zxTIbSovQ@-YzQ{r^|^m!nEFC80Ao4@-Gle%Jh4t3ZnV2J1#mwlehi-LbXLD`k_S!|`vl1A;MZk9nc}gm~XM^)21heGHlRb2YiDH8pnvYmjLf@%*3} z{f2++ExkF)5^v;I%deck)l z17ASN8GsJmyWxHI>zBQ4GJ&Q;?^T;00R1aa3#v9)Z&~wBuRsd9?kb1%Xr`qj+2MYD z=fC>BeVp6wdpl2j)8E-xoSQV*>8bzPEGuBwYcRaKZ_Pl~#A#XD7* zDpq62n^6uZhk&)Rw)SfylDzkTjQz^@0KDIn@$C;ua``TC=Yh2r_Q4<$DBJ+d2v{0G zPUEA}5%_30R#!D5g>PyvL3hP?umF-96BREq3|!jM5_&#gB9AYVP;aI9)h&{`6`s^q zD0Q(fc0KfSXRU-zu0)zgU@Uk?ECOXi1;Tf@f$K`ep8QM+%L~Fz7`Ebo9Es0GgIpLL z49hP8Fh_8bHi27b`@AAQzg!WNXS+l!GoPRU0(wCPmB>#E zCDH`ml!Xdn8%RMGaRm33vfFK%+0m8z!r1Og=wPlvn#BXbGPFmL)_G>mj0%?f7!3t zZ`}B6xWB+Z*!ifncl?Nz@KYQa$9I}#OOc+SBOcMp4fEMdrd>wpc1Gb{XYS*O4(r!; zd<+RI=P^YeYv(|M3+q~3O*`|DKMdUPr7Bc{thp>8vkJbfutQIMVe=QI#-5|U*8OjC z@)yvd7oQl?L!<1xGr6RP-C^lWwCavNv!#=L|LXT!E6bKi^Y|I7u6(g`Z`G^P#lu{S z(kyVov5wxso;~{6b5A29rg}ehbMG;fNB8cC@E9X2dx=_j*)571vksU;&@6f24x&O znHiScs!QeOh}~Ky*6|1!IK2MKuz0J6#oyc|I-A~CmDqdo#cGI%9*2Gv<9p2*h)BOk zPF&n@LY&iuq7q=b3UL@oi&Ykp^zFysMUUbwh!C3!@J7o86JWC({y6G^qeu9gzzD5} z9fZU>pN((mFM%2#orf^z4v4j?Y_0#LqchjGFdcB4-mBJ>ZL+FLYV_&OdaESAQVO$j zb;IyE-PFfTl-s-?o_)}N)ton4bE74+UFxyTW<9be>hy7|SsykF-@~{9;abZ8`yxEg zrdUtiy5!x?&5Q5w54M3x17G6FA$_c4pSWJo&P;hZ9er7m0{acM_vw>^$K~lBE(tu< ziZETS49GQki>>LZKn_rZSjQ0SH8}TaudVsSG`$PV*^GCRm zsl2M_CY3MQPy@UK#J(TQka2mnnpZ8c|DB8RUL=jcKxY_53ua5&~P0i1_Lm%%tvQL#H+aayuO zb(Vv{B0g0u;@0&c_!6<9F6M0>U5|2aY+HoECrI*LW+rlx+9pYw9h}}~nx)fLxb0u`7Qq(wz z5%iChL;@b2)N}_+wo=#G?8kM#@lHl9&{0|luHhH0haW!#Mtrnbvw>rF69dOoL;Ac7Cs+Yo0_;}?!2J!*GqS?<~8egR=mTC6cvUJREthJ zLGuF@sx&6)RR|&r41(j4Ex2AV3UiIm@-}{``1nWl;va?IROoQ)60zy#xq%|4*N%W? zoIz!hB~IHyfG!-+4)C7F0txlcgQ0~bUC;qT=@4B59mvZTdmtoEGwx|9l#reysvBT$ zMp=SsKsUHr95@nQ8pLDL5DhRJiw%+-7&FQRkIw+#Ntf9CKT}>|$Nx2AG-ay1rhO=r z-;_*Q8o^H$0qd-Sr=1@WH9~b}zXZNW044)5&&*P8I8RbwM&bDE+(YGG&J9Q_#Cf4W zgcFZAWqKh@WnG8(8+t?+kBc6N0jO*6DH6pcV=KnY*8hsr^}EB+5dtW5s|rS1)sNSt zKor1o*?$7yp zwr^|pc6ASNkjy2BK12HB9mt=lCJpD8w)~-e!@AcXL(J?u1C)8WTw&?T?}ey&mFuLo zv{ZR9%b$RoWjb#Go{x<@A+O>40(&rMvw|ieG9f6fEp8Q<0T*f~t8hZd!8FPo$sq`u zzl?xU^E?&Fv}+T@IE0K$yT1ms{6X{ZukH6@pl{SpwNYw-2CF_5xT-xa)lD&k z=bbnI{^YR{jweR)tocRDL-((Fi!QJWsD?r31YDu#`=56|^XSJXGt~dyvA=cyeCLPK zU)aOl1o~x3;d%|(+g3H(_sauapdONPK!F##^+BE$>MW0vXzfYz>c~W>dc?xBP`d3s> z5?)n8)ELMC%GcaNfHsgbU2x3uo%}$|o{(g$2959xJgf8uPZF)v0R$UA)<_=74Z!6wgEk*ihDQnjcAGsH@aHySD`4#>9GC^#d@fOJ>%pvciS- zn>M{qiVC+vzwR;nqc{IO47FVP#+voHv2&6#V^07F!Qcnl46)Lt4RhH> z*PRxjmnUj|*#-o9VPseU$VkZ*1OUcLN{X$ijaDy~%Lbrg0JPGqnAV_?-EKdke+j*Q zG0{yOhmadnjo1DoXTR)z>LahHV{1)AMhV~;mf+I&Fl)`f9KF=-H$%@+y3{?eiNE-!3~*| z>U4<}QjXP;FCI6bCWByYj{ED&+WQW-g(1ecvVcW(=T~s)C*S;PR3YOu#oWNbM%8TaX!C-Wj<3z1r-bUg$ zHPS)`#@IAVW*vxGlb7uySC9dBz;-Q96^HVe?9AC2GV4i-D$c30{%*rRsM?%4>g(PA zu743DED}iqGrUhW%-f)^x3}rMG%E$%43-!H z<1Da>tuyWk-OmcZ1DCV(JQ^tq0soaKk38SzyM=WLPpE`A^s&Cj=o>%{6sae-|Z z@T>_-ddX2J8`vxg&~#4l8G6<;Kw!T=fday2=+TFGnn-SPiB{_kfQ#76zM_vWcS%MzgF;#HuM$P1QI3}BpFd7G@snlE8)V8-kS;=}l=Ek#?@cly7hM<)hML?QNd3*ToS?E4p!DYR!oMD$z&VcluA9;aFlT@+WuxtzO_)`!;})%l|>s zd@C+?Nl~T5os|FdnO*jVMK{{Ny!l=B`r2*&z6LW)#adl^vxK8z869Wl&B!qO)+KMX zUR!#jq$^{geQ?q8^Tmp@W{2|38#B9us8E36bhpTo>0}VV*gV0e368O}xM3r=j{-~K z*kvwgPlgaWvQF%N4tIkqW&`9`H;Gr&FVWK*CHmX~v4`d%4ZgU=-I7|yz40bc@iDw? zxTXldH!Sw~JbYJ!wMS9UL_~(6x+2BeeD=j_Fff1jq|4^i0ogu4}GO zcI?IZ%XaKpi%Pev>+@Hss2^doqd@^S+wlWZXWenluc?x}8ol%U^8{RLLFrn(u((#g zVAjDI<1}o2ux%&eHP!q&+k0NBsHl^p9+>w_a&qvvKAkuzqlTc)jCLN zQy<5;Wj-O{@?tHUe=Q2jG_L>LQk-9t&hoWY{=CX-Krn%__qJm1Am9w zZ9uIk+7x>I=C`W3s640+JC?mky=M7qoOf>eEh#Ckz`2>~T@$H8fkf;PFwYc}xN}1M zJQNsyN^TF{0k6Xt1r)=SA^{iw1CUL@@|x!Xi<79;0iZa~+TQ{*5U%RhO|Qi@%4Ow6 zC0*1Ga0JsGW@m*Zx?@ZfT*Sz;^CiY9r%m&r{|QMhJtm2}PKvvu6Ch6TO+x9z5^78% z{ZMF*sz|{g@qXjBb|m0xf{`DHfI&mayuc-7(VBVt1aBz0Vaxnv*fACVa&q}AugHI= z7?7Kk$wFb_68os9R736v!dYLqH(m{}FjHqy0!VR?&{?QU~9kpQF)T%33 zf+$@=h%XPw*$Pw*TO?j)`}V~LOj}W-&sj-8a2JpMv3qe0{`S*c7`dj{{WZO7}yIZ zdf<<3i>9p%`8K1^hq-ViFg6Lj{PkDlzgGy#ruZhy5M@stGb1i4vqXyEJ(-!7C^Ot+ z%AFJ<44~!`ny9c9DsooL)D!MdZQ4=sVbg>&hzk`V@i(O;{pub`-g-*h$_`PZ@Vs^} zmCz##B)qdgtP?Py3D`pcbZ@aQP6}Y@x#BJ!0*LdC&^5%t>MMdS!n>P_FkVA-f=(-~Q^oPuU;7o*jE-5)0*8=f}_cyHu zN}%4~^@R7#v8ioR)TWA??Ryr#0X3SLB5l2K(?^^?x#u5{iDa?>snW&HE$i>c^?a2d zEAgXg$5#^)1_SWz6fzPX%BVj~9pL>GJv!d!eed}%>qgVollFde`0xGyIQlK`-;e$a zGCNpnd7AhosXQIFZ2Jrs>VZO1Nkf2M)TD0y5NcD@)&$=SIGGu4biYDToHNiXE;Wbe zpy+NSY-ah{?TaLOY>Q|vS;)>nDt`VTswX9(o;r#BY>h+@Y(ec`A%5<-B-S4n_pZ~D zyro_AI#+acSX56+>?2U>XR9Ul*b0C(>cb>}6`IYds%E+7jJ`8?-}rh^Wke?!XUh2E zJg#vjpSi{xDVZ-L7Xj~o0TFmbei1UADML(i697gJqeAZ-H_cE4JsaOFU(>;F^p($% zQ~-#`sG*O61RfUGx8V5P)Vx;lq7(4aY9#C7rQ$qUE%ts#LLKn_@*VM4+mgPvSG?D@ zOZv9+B6Fe7WBD*~=z9$J7_>+5h^O6O40>ciPuXMvn}R(N_|5M)*V5Q5;peMxDk7d}3y)+~6ov?nuuUI10c ziHgk;0+*4rmoS^2l1UZV`H0?20OUL?*AIEN9`M-~8|3~=5dTc`E@V*9&<^pwx%bc0 zpZ%#>42Z{SDA@;pW~zP2x})}OY6n2OqNGqN3k&^N+}1fsNrguY86=z48)NIO#S1vL z__B%iPBlI2pKU&bce4_i5*3Z)Sk+~gN`PUEaOjva3-M5~y(}b;?POFSoa1<3vQgTE z>1+TiFylV)G3*o?9qO);?0q*$&Uaofu^(&@>pTiNMF7Qhu<3MJ2f!Z58-=nWAgd!T z*2$2Bc9%=+M_>yttN>V7NjiH7?%N4T-gQdS*R|qzT)c7wGJ!Y&SdB_j=@Cx@w5S+3 ze3~;0>E==C4f{nr&ATbt@N1*UA_pgU?lPb|``K6I|0N;l@?#)tIK@#$#u{061VE2X z7|>5s%pey&kJ-c(0?Q1Z5*r}OH7ks+vk4Lpho7&;r%co-4`c+oz1))I4a1UnU90#v zpOs{Jqxf+Uj$?Ha`u;+(f6U!)D#4P$&P#`20`UIuXX=gKY}2&HW3%oJ=VRepjg?5` zXV**UV2Ut$y$>{>b_8U6- z{cj)rl78^yKjCFV{-Nea{4YNLXYRi~|5+RxLa4ik&Z@KHNkxOmjE*81Wj_#e&VSFc z_g&H)a?y}Am7i5%Ev}+RA2fyJ#7gX6z2*;rLl;I`l;v@q9JnnRaot2_fWhU(aJ-OM zIS#`O3TT>Kg3v}dO8lCNE%uEi*UOV5Pw73~`;m?r0QWM4Iy5EveD^{B*>jH~lYc--2!=x%G-{FS=7s||0v&=~-+me0FZy`}mMcDN!hda6qNlx+abB4|~Qnbp{| zlQfJJ9Kh849Lh$eW+xrlh238&k)}-&es;5j4#E9uK_#04Xu_S->)hUkMHJ~*yoDH8Lq~&VB*=R{|d*%>V`o9;8|o` zub47vV5ZZKOb9t@&d~_?YAP`fy;3lBuyfOXoQ6Wq$oW8wAzcQjUy=Vegk{TeqEp6l zr5>0f1DLV+%vfapU;&envb;S2E_B#*M&lYs1F`9kRl9Z^GdA6{tCobtTip+m0}NZx z1A+@(9pQQxl_LA|Bz(3&tS;yvH%sN(6vZ*oMOxCeZ6dj&5;{IdbOIh7bWRNei&nIY z0&}JwQa|mEY6(5G7z|vAw-DEF-7C6+%K!irfqk~|IKf$aOT=yok=zG_2nkHp4v8uT zL;k_QW4d*q2{#f+18L|xsP{BIp}U4IY-${=VLU^b^}0Ft$hw@lIs__Zf$<{HX4;NI@%fx!Axdh(EywcX46oiDs~rK(P8KbM`sv= z#k2UH{yU>mugL%7Vwx&4!ZHpt6FR{1!$rfO;V`14QLfYlCNjq&*}>+gK@bCm z=mS5<90`DmO!U}%u^wI^_A_%Oygx^*`m~t~<}D0Kdc(N5H}#2sU#p~UIVpZ+8@xb( zGy?YKl6WwXK=<@mzNAnYFdosf=uI&TaW zMbHs$JUxgr!l9#J=Xck>4!V8iF~gLQ6H}E%wFuDkVXsZk zr?bWXht_}czWUTZ(pB*uJ@#eyub%%S|KaoB#W5%)DKs1*4u2RL?*nMha2@o@to2TI zI7`O4sv4Lo%AV=7xLa;44&^c&*c6^lMkLg_L9%xLlEl7!r-YwcBDxU|Q~-pp>6FwP zo{{lez9s2J&*Iquu|{*?enC-D*c|fX7WJW=U2)>2LCxQug5m=}IlSnpMUwT?H4;9( zO4LM&NY03)79ElJZ3iTI%Xvv}2U96!WkIM#{75M9VMihvy_pn3K!vbb#jqwE8-<3l zbDA_&Mstt63_A|gJdi0ceuW+X&kzDi#!3mo#yi3v%h7mF_`&OhU+M@!j(W(ZH8=Ad zXO(hv5YKbuf$4J?gn1mtcS}lCbyTd?xaHxfPPJ*q;5JYk`K=ljMyRw+nmab zXirWZ$Qw4zES}8@B}k(h1t3$0Z!Nk7iOMyJm=q+!ddK#U*&n{?uP2)itkiW5Fl&WYQ{8Wc&W%5l$1!Lr7E-x}6?%RKKhyTYG@_I_{7AS6C|}Q)CwjS9k`tFykZ+hHPlq<;C7sdyl=Mj*CT`_7wY7>wY8j zjvGIO)U(kW1zxtyxqHi7aXeMqsp3NT{4>`nrl`vN1rkk%EqL}Gn=Bkp9DpVP#6Q+W ziXW`r=DI2G!Ds%_du%^zwNd|6)3e@p*r9jqtA2gUY2IP(o0Pd~z8CSrI-V<58VZZT z2|=+qG{=j;3vr>G9kmkOd$;8N$Gzh0S|aJ!)7^^&;xwCEj!V8c+}Dr6DCvJI}&5oGhT#S(pV zsl;|}l1R&PQK>MZ0wsd}(7@PcYzz_#Oc#~vZ`zF^WHQVbvk#j&69BX6s3YF;bJ?PQ zMgGT#sYM|fYc<0dQMP`z13e?>;||dam*oj z(8<0$3IA+|M0UgELt#n0`i!_c+C`!uR;UaB;jBjRKlGV#rA-r>bCb|nTtl2qnjD-P zfyYQ@Q7hHBg*Q%#D$bjyVoun4^@_LKJCzLbNzKx8_+Kk3t99gt&A7X5h>Qvx#b zi9atV?xRP(?43BzrUcU-;-Bd~;62~;6pjseT5GFsR9niBdBLu-_Qu6`hu*#Yeb&Oc z%W>!!z<&Sje_?H3b(dOJvCzu)LY^~$niFofg^$aX*HF8aV?O2>=lQg>!Z@y!yu$O5{fi#D20soI??@8(_XqARi``PxGwOFLoN?EeAqXGShj_1HgS792v{ zI26s#83XxXO~ME>Jb-(*Ef&{4&&woun&`gaMrj%B)eoKcig&bQ4+2j54;}lg_r=|x z(EHCn!N}=ka@76gWAC;04Yb+de5Q#e^XGG{G`ZT`a+1M|LjMJb!&zci2sh;?;F@de zqsu>L*W}gW%nS^k9grg`3jkr!txyR9GD`3zh^}wjZQV%;%kYU>o6 z!{$Eu+JBbv(s?*koS5R=f6cq3uz+sNB^kmN43&zAHH4&)QL-lH$O+uaop-tIxw|j{ z7we?N-~2;~U-Lsr)trRVp<>`|P;3r~O$zC{1}-b#&QtVagC{0s8Ukm4d+PfY`JW@1awd>U0=hg5 z=Gi$40|%Hn4%Co3jT`Wrnh=aiV>29;g^xpj44Hr!Mhg8M1~ybUl3EuR_r`un-Pt1U zedi@{&r$JKo)T3$1Tp~#?Wh)K_i~ATdj&kX?RbB-=n&X3VFBTA?7fZX=%t9x?N5uY z>VX~ta7i9u6I4$wR8OsBdh?@5|F!ac*aNv?hb;ZDX(3vpLdTc zFXE&#lX3QqOWtnXw46h8g9&ilMry^pt;k%|jv1M;ht(_+_r}2JJySuE_?iN`ATti8 zB-_c+4wphlfyUhzZL)Z&qWgzh-5>4YxMed|*gM(utox78e8zj?;KO=!D6B#@R10~) z5eq~f78V(yS*{7m&&@8e$_lce2x)6x=^~toSR2Z3bpG(BPlf*Ej=z~PGzFrH3u>I& zny^a8z%GOE2%Ki53*5fs_OmknhVM&q$Aglde^C5rFzcEnMa6YEcGIv6d;^3PJ|5eq zXb3tc{r(@oq+pR?}>ddU!3RWf}t!D z=ZRGkJFrEp=2ha4Ws6%e27~C9^kzJ_4sPWt0P$k5qH4rHl+ho=Yx2V{Dzn+93GX+| zg=xH4sNB5y75Sej#6RenN}LoDpItkTL~k z8w0b=1Gq*Iu3@~Mq&6QGuV~Z&b|BntX!SbZkm z{sf)_a7uOMC2sv}qN0(!=>V(dmabKEN@4*BBmK~OzKbI**f(Q8c-N1eKf3t~*4#2w zBY1lxl54$s)tl9lIqMLD0cC4J;c}T1^x$Nuw;5BV=NaQi0X`AaH2?w@FW0f7g{ zloy#|t&?sXyp9DucZoVHS zLnAb$0wx0EGoUAoWWQ-wfAP@eqFFP1&ZnM2(s!I-LT#>>x-h`RCROepO*F>ji%?x$RO@tVyX{`Zgmn?BQa2pJ4o4SW9X z;ZN&*^&FaOI{I`XH6roZclx+$NqH0c(Vg3QRQCaWV7g@IdOldcTK zuZZ}+Xz_BaJRM50Xo3PlE$PDX(EVz_Kih<=Ja9|A$B%y1`8h5xQ`EOq>IrgpTHj4Ul%u zqmD=PJO^<`BwS;Ri1-kceUQW55E+)(^im^5c}4!mO8{lGjz9ulLESZn_!ay%9eERg zyzXqVPvwcdA0*)*$ii`3oHJ>$S|&uNVOzCesB1v*b__}4wl+!MeOlu895Eez>FN%# zvRrY-qT;m7mFWI85`M5wR9iJn3~{gl^tM5YfQ2V>@nXK8gX`Gbz)?b(V=tZo0HDTCC!Gg7MQY~fzyp>GlP@ScYVNasdDHL6(&E)H0B&L8%S0N? zlU4yC9q#N(`M#yiV*WUE4aNq*%v?!*8r?EFm^pK+JfveVEkVuoUJ#O zV3fEdE*bp{44xH`m2CwB_^x7>o~kKdX>&w{ZB5O5vEH%$&&9DSGlyc|xcUKm(cCpA z^B`Q;!d|g(YOJs-%&)Q*&RwnY^Gd>%WvFyn=LQ8t7l!MpS}7Ie=;g$9Q@Xty{@2VI zdK6U_s{&evgxfU%xJ=j#9yPW^*v7B9R|2mry+v2rem=mCI+EUu#%LEAl^10sy`s1m8(8rVg88r^-MvoQ}At?zmXP&|%cm2FOV`rs)9z*N@G z0S4pcZVEOFon;#`Y$RwiW_KPPUtCArm<-0kj8+XJT*iyX_>a#>Dg+#giM70V#UxHl z$s_0f$^X)x&-hO?{s@LRuE!Gt-VaZF%m1f+pTNsV+Qfh8*r(-BPkq7f^M)9nnL>>> z_e?dk}tz)5@ zN6+G=7l5%QwpivAPc1~Rwp83^y>Zzuqm;}rIQyPu?~Z);9Xqog|6;Gcx%_q=Wltqy zN&o**%xph3FWT&b5z?lHrsS4FEa` z#i5Hwpk_M;&apbN$G}S5n3=Qhm2`?%b5auP_R7So_Q=HD2PJXGIdN}jmx*od;%?{{ ze+?9VF_b2Tu=tN1kER1LNCOwkH{+1m5lKdlNKnDpK|N_-WCOfrSPI8(zaszp#OMR{ zlRx<%Y{QTQsx&*Vpw+m{CJfWbm(dOO36n6;JDd{V6Xys3c2Bm*34q_pw5T5FVJ@Dl z%@Mr< zT@c3bQgOIH2ghbyTp!OO?BN_8oiT&Od-B+fg@(MZ@A+fzsYBn#y=H9-{cPL!-7mcG zN!-JBW6@pl*7O&5{nf;;fBZ(TbFk55APUjrWDNqGBt&P0bJWs8Q(Ics)xF+&^O|4N zJ1TBK3S!pUy4%&}xvQ-u`OB=0OF15TMvV&CF9GXzY%d#O0`#DjCgB7*Zkh_PrJndy z7$^u`DzmPu1EpX;BH1WiDK<+(k<5C>Zo;f1V)^-oRr7g*v5tCd853)?LhQr25_+yc zLQhmk=&8jL{potidT66$?c4|^yi%lljzlNQjk37e0OjId(IKWCtipgR{*ghv zSUNOBzMGW*L7Z`YMgI57B%pFv8ov-MwH!K{7j(Li6`N%?agS+3ei0!kx{G7t?idp9 z#uiDxre2b-JtoOpPe@|rQSmBZiiN{QzpSB{gxf16bZUh}PA>-dI-({BasX9a=eA;` zV6-7Fa{&Cn8$cM?2FSRDfPEnn9_T4;3@qAE3jDT0_>J2fH;6yi|CUr3yaL`{X{Zo4 z(xk2|G@4N8LI)s@t*whTs~kJa!zHufL~tdDLkM)|`ehqcX~A5aV(lPmLHP!2<=pMK z(Nq8`FT32jXYH>7K+Sv#oVT2}Uh_fIPMs08Vg5ampMPOCA&0$jt~M?OCuR{kzPucn zT+{c0%nr!eR+bgAf|cG_t^R_=Z)`uLyL#DP!}e+M9y|JF_aA@uaW#?ftVqN`ej(RT zvofyu$95-mGIh%3GMk>?VY$ujoBJyOFen42-wqyhm?Jwe_Ayj?Zid%D3_* z1Zs&w=Gw4qZ}nnKI+Q0niGmLn?q->?)Ch8>H<%RzK^j6}WP2AuJZJ~A%~nr-5*b9$ zhT`#YKZ{dA@qBbd^fFJgm>{XDU1W-NJhdB<3UnEZJu23!bAc>BbgFZ6tBqt4l(7*|5(lh!8pi4 z!dSRDXV@sdr|yG}Tux}-3KYreEfA-?!%r4T_=y@(&y|X^uNdSa zCeATnYJC!91EdBd#N$}xOby|I)p{wC7rdW<#D*OFjUB^Y{Hn1lRh0}=9IF18&*Ro2|kE|s>m)4fBw#I*}t>>&v17!!%*wWZ?W!N#9?h_Xstw@ zTveG{jeHG^66Di+_S}qpL-oPtAItDChuj6ibv4*Vb8$ka%ZN8>YMY2*=#0{o%wAfK zIIQV(dgk=w|8gnJssLg-D2bqV7I9^Vn)&s;zK5l|&kU2(ZQaM+Pygh@-oHNeIRNCK z-_mv5`=?!h<$mtzk9r-wt+?d^ia}JaonzT>>|72PgiA&6O?l$4$burUaV==GrSO}z zy8%KnUY?|aLD7t|XMVGgL-07b`jsK2Kt?K|1;pood|z>mj9&37o5WjiO47^rN#feQ zl6>_+aqkBExE1H_XfcyR+#OxwZ5tGKDJTYth$BGAfG!pT(0ISGGl+>R^2fw7bB^pD z3Wi^kDSAczH;TofZ{zq3rNssy6K+h|XZp3Mix-5yFV!dG*>wS6&*Jx4Hdmy?4uMTn zLZ|CMAeKR&SGbbcFe=Hd!_d_MN#EEj?!sU zZ%E9^wdRx(OdTDuWAG4NsmkYGcoE$fZ}-j)okV4oWc>I}3fC%Uq&zDnsXut)o!;N? z;qLWZV2JI`pLIX?)Q50vrc>*l;d<{&&+_`zR#IHv6MH1=9S&~iZ$>~T(`3Dujf)-}?$E=dX62^f%mwjt{X8Eq z&$V2G;cjsCY7urj9e|+eVKQV^#ul`Uu9jJH)0{-bKuy7;917>NBNq2_{D)4(phSU^ z5gf_3sft$`cHQMq3TQr%l*QZgFFMNVfZ%k?k7if>#qI=KF>?Wpx7SyUoBwJ#)SP~ z`p$H@P&$)>+_c`c^u4MiT4HkVMTC3U+1ISP3(uL^E2_M>&UxF7?*mISTl=e=tRjb< zZ_~E=x9{2T8}>>w%7Se^V&A>~H|%@1zExEg7IKa~JEvS!c4?Ia=mkBs>eVH8Beuqs zP>X7|gnsMxKe3nBZpOthM`<{3yZ-&o9h=^Sc;xb)>0+iFn?go%+4Qh9Exro|zt-}enzQ^W_!24iE(GxNIh0%jTHSRR875lt{`w+H+^JFKS!Nj(2_=0*4 z0J1s@N*xwI56?ge44W7Q8)+UFs~KrKhjXVxVx7zt)dE+L;Li6^H`zqNAD0o+N`ZK@ z*}~?wH!eO?MK<;0f-nzWk^k{xuogvWI&op61V1)g8KB`M>IAXyvO=9AkcLGKxDwq1 z;_%24i9EbQV&7RISr0E3=h1m$Jy|L0$wB}pKzMJi*oVM?k3jD`3IV>*P4X2+fx1e) zP6r@rVu5&ZcqnJtGFqmCk@tG=EKk%)_`&PNex?j|Xp6sbP|N@@ISV zxrRK>NZjn!&X@yuSYPlcIC&Wv81K-XgUz^$NXF-ExDFSXbtIClDzoO`muZLLLh<(e z(lS|Cwj7xf5yuIu+R_T=FK+vMCoL!My=7S8Aq1p;S1=OJ%WEF&Socp$O>U6HX zt@%j`@d&$ZE5mxnE*Wtrk6j+8xZ8N<^2@bCS5l z6}PNW(hCpE#H#(0+Ol8L*B+3GJD!*EyPlJYyKww!un?|iann(mxcMx;&x>9H7m(Za zQ+cQ5`Xn%449-;jKw)wFND9UUpdUdTX8`jn^1n||@&K6NC#@p`g!s+oDvq`wNWPe` zLbo_znG+?rsR6fjS{xF05zKxuzeE`VO)fs#E|!eXFuWhjI_Jktc_N_mBqH6VE7qa9#;2F zp-%U&4}4mNN4r#EVU?ep81i>_JfqLF9kKHBOH?X7qSJ2Lf9fn$_gYH| zN}Z7^@ka~99?SqRVw_%9FX`9_6o#c0G(A|R>4CK>-Vb1AmEgHaiN+U5_~?!QhrRaz zuhWBl+Oz*vF)VnOJST1t6T)_q#8wb-Nlq7^e2!TKd1PFYj5K0J1fCLgC6w_QV zZjxp7US=ds)%4!ymD~Qc&V6q*Bgw`z6ZpMHPw(A!?kRh(v-YVH+T9>BjI67M4gsvK z8P;3K3#fy$48WQZm*|em#XMFep))0-pDq@&xm>KKDhZ#d6|)l$_LPf0R4L|Ag;@OlKeghbprpWZ;A=0ek<|l z&GAI)_<4l)`5`VM)Gp3~0r87RL<&a5$)6C(ofJQtqnqH#nYQR*fGt3l%@Lp^;#Lg- z+-wOQt`$iD^B5M0kF%;>v?z!H&KPD?TsH=LE0EBxO=3P>A^rd&TyBed{b_M7Jta=& zC~OYlpQsTd7KVz`Lk58g(UWb*Hwexr8$X|B!b)Hi`a5p;E91t7d*saMDSs+9Zd|?i z0psPX?vrUr_=Ds9T4{cR`Tnc_R=+0eQa|ijY&OvW%&e@~cJ8^R=sDR7jfToq-o6el zLO-J~D&L~td&!&qgPkXFJk8ES?X6e*wH)efOk;|E>xw`2$NV;#nF+S0E6rOBqq8{= zg2#v(Y96>AYRJ~bMXSkLtlw32yT5mIuk0B*fDE0**9+=VEo?fncj4l-897v1#wG%#38aPWaE4yc!%{QXcn^@AK*$!k@Xx9w@`DBmJ+uIy zT8TVbBi5rJ5RVp!@kFs0+Y7~b5=3TKq3FAF#oPh*JOk6<1SkZ+YBD&9F0$ z#Kwh{XYAb~k#B4e>rf^D9zcF$m&EUS1{J_r!~y!xc8>@EowhxFBXLnF%qY`dx#ms!wGFo-;h9pGw^G|svDFDn26MzPINTLs zBYxaDP6xTMuB^YwFU#PTZ~-yRw2(LsnVKUpo4`vX2&8A~j0_KR7H}ZrGkw4ll22wk z1;+pUqbz*S_f*$Ua!yM^N-nToEhCa^?7C&ItS}b4e|+lQ{=XdKhM}CX_Zt`Ub(=q? zf3p4^PKlex_E>hVDWyR)jkk^bdGbG={8z+9t?2)Yi2lPXPU^Q;FN=KpW--R{R1F+7 zG3XL|#e?GIjVlFG3JU;MTioE!_W{K1t3*H4Al67&&1g!lIxF@PI1OM9th6$|cf07r zd2HoC)I{R1{E_%z7{&nUa|kecZsZ`FV5n@f9d>w#3dn_72&npaspylrU_D^vz+ttR zHg8koixCQHc5OT?dN)`DD-=A(^)ytR3H($Wrh}l&ckmgOFe8?h^t)e@-(5*nx_&m4 zj_t@H=+O`d0S919LZQl>6?qX@CmZpg^U5W}X*%s(6+wl9|J*F-D~Dsk))a6n_Y7c< z=S}D=cN`(1QM+$YPw`OV5;(Y7af$rzRxw)ucFoBDE9lgFkwn{Aa)a@$&Hv&4-I-7O|Jw8wl+|SF5~F}c zC=*xbe}j@<2#71pxncvMn0fdTjt@pQf;9WvN>ux?y1%k?nQ_+@Z%i+>sTCL0S#Q7b zgT~7*;~;J>Xgp7}pEwU&#~UVeJE|0xVLMzkjRUQr8LT;hZfaq8HD;0R);$X(`s7_= zJ-tG-sjwuL_RI8b4~xC#nbdj}sN7h>R8Ks|MN7Dw2X&bpl1Ard2{&z(%u_c?)~Rh0 zJ$<8CjaNZYua+pzhfi#g=yAAlO;H^eHGQKHhXD zYU>RAhB6bZp;*d5m_8Z_Ud-ssGUb=#_g=W+sWuK^g{K9rP@Wov6|~ZG(y$EZBscN3 zW^fL))`~-aaetT_D8$8!OpBH~CU)L{_=Tfl=l82MkKOz}(eehx!MC43C~o0^nwh8N z58<93;V$qb1YQ{Ke{|e19+SQJ{^Lg; z^oR6uM+1`wnsCX1^k@r>Qy06CaW66$D^YbCt2PB7^W;M71+u8xi<16+9^vBhdPOPs zvkE%xiVN$^TQ}d28dl9-;nJ7JJ8$?1YUp6Qe}Hf3PqzKFe#NR=@Jy7));q5Kfc5U1 zKdLP(DK*&6jd*e}Icsu)oohpJ7FadrO&hPmiA>|#y1PRkyz0}|d#?K!!Y$TsUGgUV zZI}I-d0qYW43qCsVwxenp=Oo8Yxui*Tji+kL=YV&&3h!VtVrnbAk5}z@mrwyXJYuw zh|v@mlVd%bp~&6Pfk8Yw&DlU(V zF4i&V&N1+sCLA{c295wYkHS2TLR*i7#CW_!!VlL<_@O$9KC}SeHDdj^UaW`f#QIUC zSP#|W{1UN#SSz828YHx1xfmb^x)%|v7sP}!>j2f^=a3h`KDefPh+_vh)D=ve#EH8; zAcO*%5QhCk7!G8hxMa+=jKN0Nmn(*V!BPYM@ zpBy|29Z1TVu_OLB_kYEooGS0rd zMeOTOO5&!YGPCV~#BSLm@!NJu?ABe9yk?KMR~;04-2pXWM6W(7$%a$nmd5Zn-ov!3 zwm7#GPTBpV8+J}6_lu`kK*x1flX2`Qb%hfNgtW+xvs zM73I^XL)+i2Q|i5nX``He4JhtZOavR?Tk2=Pl~f)O1w?BIO`K4>%l5l0SQ(ioMj*; z%b?>6EpZzF;N@X8w3A?$UQJES#?ug5r3nJlCh?bT7r&+(Dh!f>^QIobI}vFzVMLYe zkTGV{h??-ktE^ba8~F|9t+Y6RqWJ;?G2VRjhpa!l?o)bM5!cAkwM*-7*Z=Z{&+7GM zh_RSlAKCoVYd@veTjeT#>akQsKwD*AEvYGzXoOxjV;@MmcKc0A`VDl&&yx$PAI;EB z<4ud->J{rn+QTCc`v>|DA@1|1BF_=OcevT_9^l|=H9o~38awOlYk3;Eu6iLk%EH~< z40@Rw`QUjju5b4{`D#U27M)=iYovIS!G(K?ctTUyebya``7vOiU z=y35A<00cvt{T&hBEoy<9h`b2;_LBUj zB`8CBd&)b*ABiN7)ksxV$j}plUb?guaMIeLGwGRi9!DKez4FN%p*I%vi97U!VI-lr zxEbT9;A3Lv4~gWAiCZ=zPGOHY72V<$4#OTCv5r)W5eL{JK$3yPZBN3R?MHZOkiW8B zeu9y()M(lX0N4m4DkL9xzXPgx76xwPs^ z?VeR{mc#vf{j)=@`sS+J&DU&t8&D|b?Qc7vU$^+x=3Cdj%d2w=d~PL$U^xMd;O}z9 zw*ttJb{Mf2NJI@umps#vfk!VgJBcj=E5|qOGmD zSq3Hskc?ntL?oOoj%xM@43qM6KwYcMTA;nM>SeNhc!z&rcpkoWjDqU<|_Qd^lUNfj5vfWjbmLago0Ffs<`a{!{GC8}zJ zqS*vzL_Udody?XJ#zjT|t}}RVEcN~j+*uALu?XpehvzSI#9favU5v0eX%NQ44Jy^> zi4@CG6H>^W)i`OM4-Am^Cgb5hg}D$qNdr}q+<{|()qNVDO@P)i2KdjW zC2@u+BFmd`L9=i#SU4x3oGdDT_1LLG;)}0+~42-sQaZ|f9w4B-Y=jw z81uKc{*U`$>wo&Aj#?c_d6w+RM}+w{V@8kpUpV>+Z+pk=0`zipV7qp7m|(0%QTVQF zd;L@0_!ZP95Uny>?NF3DWQ#zZWJK6)s#1fvBk&6s4VovZ3<(I;e7Q(!aUX{q@;BQG zUPRH7+_=R+3|67$M6x9SDCTy;t3mQL2&Zup?}#_MKx zx;|fg2kuk^019AMi6a^1BJe{=ackoeyW<&&uYX9~oFUYpF(^XNG{L?7*i^yR8;`xs zV8#y1C)ISJhY%Qn63VWc85nnDv|V{dlAGEjc}=S%u01ZvYY)MdJ1Fs64@iRh=dIWy zZq0G9@KfSscZzSpU9Bx z*NjVY%aphqlj5xep;!t1Tb3d2LJ*Szc!yztS`^Q+9oWWOfIY#YKzIk68Sq1GUP^uh zAW3(k0rmrs#&c>ZTgDG@Q*l9J9M!5yUB)K@a0XdYo$ER$id-n}{?;Ek-`x9IyhyDo z>7N}q?0$XE-^=hs4-fsB_?YvVpS@Qb%IZ-~6)+f;AH+)9mF>IE7q@@S`|;7QAq+Kg z%Wv)9>wf;WTcUiE|WMI-^~+z)<@5V#3T| zLc^-xjme&s3jx{l9RCYV|L6|J1|{UPg>>EnzYgJaYJAOty}oYYO~$5`H)u6Q`Lk`v zEG!fq6-wu#>{ms$nAFZ0x-wR#OPljq0aRZKDJT9JMekvQVBo2UNRq9Cy~dON@)86 z3GZDX=AI(ak0X8w_$M}EMi(+AT#7SjQ%;>o#YHh4{3bXn!($;s!3oeW$?vzYxlJ+w zc6pX)@X|chE=(PSkQu959A{WrQytjfz-tg{k2*(P9tKlwEfsU1Ui8rl(PKG^VRJ%; z6i$g#(I;*lNW;n#VqbGo;x9ic@h!UmzSBzIbo$ejpH*#I@X3?Rz(X$>Bw$Kk7Z zm8vIbOUmQJy}>^fKb;dx@J>cqkuPpi#N8NR|6b5Ijn8>Pr2ct|PPA|4;*YR*EY`Infckd>~Nsl z!^N!?$SK9bqcwT;_z}{^oI&@;$G_!G*g@@hd|;>dtwUe+W)hQLPanth1@tv7!S)__ zJHx?;$^Zc4Z>Km0C2$cHDlt71!Zq8rn52v5*{o2tJPog7nCb(5AIspV$W_IcuHwyqgIj9-&H zF0L>~I8J$v=*y}vH}AdTZOClZRG{VMlZ!|utYHqxm>!H#m(hM;BL2uOg@?&2|g)!>>@Zjg%FYo`7 z{hsZoz|QKD#OgtDFYOoS^0Sh>=Cs&191-W* zT{!owBuj%Y_STx$mJ z0VEJieJc*tCFnCUWTdzkjM#*phKyjxdlDCt3R;l?E*CZd>UJ3MfxW{sB&p$&yE=#o z`)uqfpS|i#;;d*3i#M3}t$n8yMa#ubf{yEkwxVLG`Nm7%tFNwBixfy$W<$CiBZB0O8=A`gUxwCaXm6DPVJ%7yx*C0g_obj2prdiWR~ggQGBw@9_#T zI;+GwQ7z`_O0n8YMC-^At20-$!KfJh0M>DYuZ)TehLK@B_)S&9`xNjpp2!=p4%M84 zB4o|4Me$u45zgLXWhM#eFw>cqAliYX((sb}j*8L;h*Aywg32mYN$H513CFT06DEJ+ zHP}C4jTJrFp<2%YmAui9u-fy*=qnX1RwQOT6Tz_w#8$KFq+m?k(k^kAfmo~<6mKc; zv1(Yn>`~EX3dJ~+2XBy|3@E9c7O#3h?I+2~K&=O(Vg>BMi;1gj0whSQcvFu7klIjz zgqz_k+pqziNBq62NpUKBMQ@f4@4t?Li21XN!25mU&3@NRmvoGu@=u;Uj%#tfBy+hp z9`EtKz5iP{9@nZ1R%i=yD*Y-c(IOtI5PF_L4yC<}E&5vZWtKrhF>&p?~lw3X$dwQ5tV`(owd6Il(N_8tjSn= zDbZ`nSL#dZ*CCVCIWFO8{>{riuUD5Z#ZIEi>#0{kr-<+aQqP%LLXeSF_bTpq?G&ol)NOr)1m-3^_#_uvQMw7%O(qw7=j^nhMxcw z!J-_3U~rxbz_SyL%IGc57Of^*45*CJ0{uCG?|q zJ45Z9t|}6Q#(g5SD91R%4o*+BK$n9dW@&+edXFFbmiy>Yg0Gr(>^^exi|!|X_9yh1 zdF~87ZdU+e#g{?%t5B4db? zk~i*=qx4?khJh+bwaGeA5 zkvXdQ0xCwQMJetxGNLcZ@2)^6XcPRfeEChnk`~$ug}TF$4{ink z5#PK=>2KWCwAA?o$W7XdKE+_Q`+&!gwcjS9PNC<%*3sIL}CsY~UV}t~k6p z))Hi|N=J2ZLX-F(&m13vp`^U;xkBJe-Tj<07VGnE{PBGdMXK<}#gF9F*a^SAuU%{; zCMAByz+rz>O+KUXi{CTS=st7mhiTCFvGG zvOaj*Kj=%#7owI#IUqkA8-)qLAs`_hniq!~6RtokESX7;gOu8+EkyEi4el1=4Uc*L zPny2vK63i|%s}6^IhOETVv!M=q7Eu)fiPS<6JJy)9HzjQZCq>$;LYj`l{qC;Y&A8N zqwMkRcbAD_b4)T-4s67YsCYY2^kiAH_}K#p&=hmLO2RE`C9-`3SjT#aJh4(j+sh@g zFGr28&`-^X&i3CNlvN%Sy*{kk@0^t}aV{B^3$y#+&(Sa3oT*BzJSolWB0einc| z3_F|^q*SgJV$Z;!@Qn>Fo&jG6YtW&*D0rYaJ4q~W*PO`Rl?&2BcBcz=;- zPGC=LQsGQO_RX*pQkut`kg$0SS%2l)_nGgz_Wv30x&G4}WkuW8Z(s8|ecghs2qW;K z0oeMw>P=d$ms_13bzxCQw6Gasznei7u9jKYjh_He%c=%?R39;u7-($6+cxNxZ{FYJ&PkDLN~z zxuvP1JSP=Y#B<4bNq*M^our~8aiRM=wj|OB;1@W z{$wV~AJ?;|#aTECuWdw}%SOfBItVsADzXy#0evz~$HY8@3Vu(fgq|t~d8n80_m@cc zu~lL;E)=~l7yKdyGX!Av;r=+DV^aj<#l?dRFlWS*tXRc2g*R%!dj1A8Hrxy`PZvw% zsjDUWZ(Bt_ks}%)m(4B8Cdn_eq1#B8-!s()1DprQ%n9Sx<@bTOaEPm>Us8Wd=v~+R zt$z24*TaTkY)JhBTi&I8YTZBj6~G*J@PH(#*r?`EL-Z+U0z{L+y{Mu^%uIMKtbK$_ zMj%e}tddp7IRPCFf9r3L%5rU~L?=+lj+j%0;(X)azskte;5=lSBU)A@Pm-XtOfkfG z*^0O6B}IkanQl--Nopm93v@@1dB@HkLKt!BK&>~WP5Ed0)pfsZ;E2~WbjID?_@s7y z{_C`bS;fHuASe{NIcfRe=@0vT!)^HGvs2F>80o_A=XMX~h*pqOX>GgmKHbjFgTsas z08j=EW|>^jC|ZWC*aa1bz(w_Bdotgzb3CQ$wF4t(3a2wA^Z4BW#~igbvL6B~aPXlk z1m(0Bbix%(iZ#Amy!#==L-MSh$!71&*a`m!$G+xI#rh@TqK5DsuXD1^Ki+jv3x_OYP1Ppt z%DgRph8Gpi`a__q!g9gZV^J}-uDDyP%&Yef4D69ud=eLRZE4j88J^^%5MtSHM6}#U zvG)1}uk{O!0__W(|LXTnbl@~IKncxuj`+To8TSn>3*E6KO@tEU85(bhTI)T9!g)Q`2E8i z!JS|z99Ygl6I3lFV1F!R$%(M`o2^8&nzEHRRxXNOU%Afui`zbJzUyXg>pi=F->le9 z9921oO#(cFwky0yb%vQvhHArN?P;=S1g}!IB>BXYyV65Vl&7$+=o zt6Yg){v&bg2chYlZKNJWf+M2Yj@YYqiL>NcaVh}#SyO7nh1G+)?$lKh+OtW*kFODZ z#{x0-7l2tqF)bv&0lE<)zy?`;QAuAS8w!DyGkppOZBaETK`R4W=xo3{lOG#DYDvrMIzT<4ohbdrIRYe+YA{}}+~ z&nhMI;}sHlXswvX*Gg!x7HSg~yP#Lx<;Nv)%MqD=*)d7p1~Re!v}j?Fmzi9cs@jqP zuYnyEBR~rgaM`cHwg7l=c(*Z_C)VK&68Ya-#QNrHF}CN5F$Mc>fbHDUD)9$)f(%W= z{_rUNQ>}^&Cxi-tT&ou}{5(-hZ9aDFTi)Op37O{)Pn>oBb;n1&|JewI(n zzv_=pKCZ{jm}=)%9rvuNP*K<*R&E$f-wcUMdXMZXFIZw+Re!UT=FNKc`aSFZO0O+B zH-92O8!oTvoBHJ?WFW&~u_!|?=FT8W^U|kYd`>jYGbS~!s8t-c;kdSVr5zGq@`UKc zT0YaFZd3Cje>0+aVH8ffNU3bhL1TG0nG#91~jGh2SF+S&ZPapYh7nW11tkRwk*E>m%u22OE1?8lQ;E&+T)2yOl zOHMHSjGbEs$Kdi2XsowxNRnIo)hcgX(M^wnJ$ATa?2Cx;R1p9gO!j-rCG;pjx@nnc zBL(6`K`fMwa2IJ z1kIOV;^dL^EWD!=$C9^weS!P#@4pi4yIbAgGu-HYecwMx-)JWe1AIF*yw@9=;#6#v z)5g^c?$sI;2~=$zT1nnQt*V%7TbyhAQ0=bIBN;{(@<{hScJiarH^xQTo*R(0+Wcj1 z`Khq0qkz}~f#kA-N|CJP*~{^=U#)g{9^r1)dR5s%J+pGc^E8KU4hM6S#Rjt+5tkb? zuM6F`;SB)Je91M7tlQS!W7Ow!n49VE=z37Te)M0Yd%8=8hA(I=m&w=&fZpXidDWo- z#_IyWsOLsJPYmvb2yG{*szLO4B^fd~04MNSO`9dWeU+G#5pgf+kl4CMMT>y&BW`|V zKy-k;G7x~bJ_Cl4fTy5ANyif6m!LLYo|O2OKAFCuNn+cMiL>aKxEaG@P8CRI;~I(l zY@?VvmWpw(NQ_|w#5(Ue)eV9|QB5nT;8oKLT|WaK#$g&vV-ie-O(y!H3>ox;qtKNpTZ~3SLc8-sMqob#xAuCGWCWfVNDRC&KQk$M zXM=@+$qxWw#?C^EWuY zJpXz>+s`&Yj(pF8ZCH38ejgk=D4kuwq_jE0^)K)hfDObua`sV~o|zp%;e7wd|MQzV z_apz+xM6>Ayv6SxYEB<3VLJ_?85~?hGW0CZfUm+b9pgT4^JPAoFOIJAbImA0#T;pn zP|rpbD%hY6wtR`PQm@EkQ^51r054FCYgXTHT(Rb6l!}_sXKY*aK=`3I@6*;6ZqiVV zYetxLIBH-h1KbVPJ6;sI)i}UG+A;TA2R{{m&rjZB|IMSEtv8@%>wWqs@3%kx<9G8| zy=1P$;u8RQ*Ut)ieEFYRxP;m}m7|J*-DGTY;{Xm`=fy9yR&Iu(KuHyH3JSuYuyOkkGT0 zq94x?zY8g?h>E)+Chq25u{VuE(P#DIIYqV25nz>(;saJ~j^X{o(BU{vs2~u>G#I}m zzgse=+!WaIFm>)6=mx*}QEC94;2rdiRGTT>f7c>tf>@x!=Ady68-`cv z!!x!V5U|_{nz*=!r<&l6&+DMq%5v(BJ6FC=&y3`&6Q*J5o9i}d*Vo;q*Hv(BWK-X| z^bhne-1!6TmYPf9X_}6oK)AGZ{zL8z$A|HPc|iY52@|7`b&fa=<2(P{T*)-DxITQ~ zOW1$V=T3f8={ms~X*6cU zed^E&WI|kQJMKNU|2y8`FkOxdYMS!}Zd-EZ{hztl8|`l=h^03*Rc*?#JR~cO_tBlh zd)P^ad=4kdC4ArxF^+?^mgLCHHBU*b=8z;qaVRC2G?gC!Zsd}X!{th%xE-A1NDC(l zqlioB6ae^%H4@rcC)R;n(N2Lnk3%ubO>tMnCAk^OesiPPEB1-x4+|>?qputw8xD-` zf`U7DOeJQYj%p4EDyvygj62d4fHW@#_s&Wxyjg{~ApDo)|D2$V6!@|{X|c*>B?!Z{ zXFmZYeGmTF|G@TJhs_#zMh!*d(wjK1nz`_ZR|A53d9%cBJR{B)=-q0VbwNb5zNBc! z4Kbg|QzI-gezHQ0raE|CV7i6iIXOe>^=2DLO9J{%orC#t$fmbyMv}KT%FJsX1>4>! zUS$X32YsiFKq+U3WwKKeV9XA583P<}$R@ox#FwPV$cw4*)AHSpZ{pry<+YS}hua@b z{^57-vH$1rzsT75D9D%NVe7Dy+ej1ctO?B1_@~XVP ziDrLvg0o;eX&yV`K63KA;<#$*JMUEQUT;tH)7pTO&~GcdQP0)06)Rvx2A7I#S+n8( zfAaMF#j3Njio{ORW$=uf*1XAlVAC6nin4m|L?@?a^L!9j`fiz#BJ;*8?lYY1d^IWp zfX@QcGjhbPIt3t`gmOSx;6AZqBfRSxF}ne*Rklp8`=R)SeRu{u8H_+Ja?P@&@@rrW zu@$0m8-IjpK;i7lDRHyM#G0%WV<1D^@{stoQ(`ab6MI>UBrAH5`<|Fn#bUP9huib@#}zp<@4(IqQvX@8>7X>v`C1rvo>tnfM ztXz17@rqTimF}5tuc@aIp(l;oR{gPfR#HYMkpN`cZ%P(tuhCvseUtXc@K622!-x6q z)Dx&f_QyHKc?iEz}IU^TccFe%7DXrX7t-@7btTp@6O< zhR)$-5i#%I%FRv{t5&T012=r!Si5u!3O}q>X4M%lUvs~IW%;#88IUv;pR~Aeid2Id znI)8hJ=FxQuDED1c7MR7vqBQ;Vza_l(V-~r;t`qN{E+xiG?z_9P$ru|YH`>Q|KT|> zYd563}1g$hU}MAo4US{e04!sB_$#jd?1|EEOl zBoo7jURdgnLIYFm7#}ttkb$ypR6`G)`9X8*x|U*kM{ zm}_KAL-%zl&dJqtB6%vKAo~56eAIa0viHC~QcWXfSR!FEYGrZ1lyIG(tgs7i==v>uTV zsDquHl3fGay~eX#v}68&@|?_K{q`;Qn@(On+rFs4oDIa`Kz_xTcv({tZoX1NyB9*6 zLtv=sG^6? zYDo|YvSXANhl>TQn3~2BH`E2(gFhmN!Qq?)O4t(HnJwU-pBE9YcuKsAX7QGdfehe! zRz&m}GG{1UADCoko>-?!M0YCj5bQ4>pu7N1XU2?}oeco;Z0I`Qh45GOid#AaC<6#{ zXJ_cC^3Ldia<~~hPR5PL)Ia6Hp`y^o3&lEK3Y!n%9OBMVP_>r0OWRf3wD)&M=X=B4 zQt4HfyjkB;dyO{XP51-j16pxjjebepm44T7FA_S7KU#VIBJJLV_ersr#|%+Zv$<}~ z*IU2lePiF({hpB%V!LU4@ckoQJN({}HvCqsTZR*T-iiLb5=*ej#MduxxKF>P;YR;x z_es2G25B+1%A!Rw8DpivYVhYvG?Zh0lnTGdC#)U=84}udPe@W z_20a^kKg0oa_DyX(!iJfkDvUM*EQUZ%NHQ}uT!j>FL{%3)5d$Wr8U_E7%ohrMi4+$ z2OJbqFAnEu8R1NpxcBtg2faOmyPYpS_BnCAVQ+WS5A2Wp_>Y|LJ@X#`PSsR0PvZ8J z<%c{k3SdQ89J{HSE$~AhEtQPJcS>k~jksY;lACwIh1-p?M1FIrODaEtpzEhtH5JVU zyHHc=ahx+KUWkhaQ6a&#JIX~*M#K$uf(d{DfK|J-A#v8kBym-{B)1-b5}yK)hs0{W zRHED0i@C2#jFXla08xJ_ysr!w@55U;??0u?ECDhPjcW$fKzZxK;)Ib`a6^@A%G=mJ zo(slZ11BLL&#GNb7<)+io5FBtsB2?;R zq4-BVaoOt!@N=o>_;bPlrI8s4?aPwzV@t)_yBxZo3xMvG>8*z(d2PG+mnKB3f&SoL ztu-db;i!an)F{wow~*1ACoY>aNB|JAWWfL;0o}(teAp@DsrtI`;i`m65Em6ch}z$e zZN?+nIIxtBvuOpqNW6k^00C_5jLR+C0+%x_8Q~n?Fbt1F$Hr$y5Wb^dRd-M5)3<%q zxNXBdct@sMEBTH~UZ>x_>@LaDvN$-vNZGH?B{-)QE?fwp=XK6;9Sa$q;6g>}UT?>l zue<-g>*KQ(1R43n3_AyB!_q<_4p2B(Fz1Pu9m@AC8=!{YBgruYazQ-iGvu_`PC`1z z+ofgnv%0 z4(v)))CLrFJWF);7pk^oWF0$-tD^W!iCY1^h~WKGs7xkO?jb(l)T-8`a{FOa43nrJ zRObs$rgI}mb|8E%C9|MRNrm^4{1zq6j`0;VNzJK1c^b@*;KuRCYQztDMp;6f>Lgry zC`&jhS{zu1*CiMe+c9A|q!L8ex!nrB;07b%<&%1aXO+ zT`5KYCTVGLj zg*G~U)_bV&TmHoKpn3bsx0`={&EIG@m)xjD{S0<0>K43JFCk_;NBkdje9t?4b}z!6 z=RN-tf)H#Doug$1;=(-$tm~qpRc0>GUsH3R_l47+^B?a0vBYe(irieeI3WL;L@Ug% zmUx0->1xqPj`3$V{f$2C4Ee)jtYti7UENkq57}Ph*+wL0+V6{xxc{;H?==nxUoFce zlOr-%>M6I2ze}aS|M-b7&2wcCwm1%54d3{KO&>B|z41Q1u(;eid6vy6=Q7@LlN`rr z-Ezg zU$=|J7|2oX5hu6UWrN~o_loI9#XJQDe5?}8IY*2^q$CdID?!c#;NV2+K{a<$`}KN;Ntt_07A~`V~q6G%-g2 zyW?T;QCa)B6XKNtGYYv0UPSyDDrelL`z3JyU9l@V#a}WER&7I1!B)o++8`XNvzcNv z7lI7bB5aU}l3__U99JtCTK!e<=!!u)U<=SGcPTu`>K@pND;na#CNmYQG=oolt08x| zriduw9oE8P9bGB@FvGzqni2HaUe_W{F39f(n?B(8j?ks2fu578*swoxZY^~GWZzEr z*^bBk@hReg?@xQvUY3z*)E6)Ev-PkRvBlAuZrH?3rue)1cIsC*+ytg?`duR&p@oYt zj&f_Y*-PbBRj<&Fj2`kI>wOkQcCNBXNxIVdm4zFR>dP7~MdH*7ZdyTZh53dpZxcf+ z#uJ4JAK)LH8^MS9{rXTcWKvF-++SWY@YcNF*76sh>4(- z8wbX#vC~5=NiNzWcJ3HzYrK=|egJrbp=3D5E!=X18>7+~*!ItFwwE!UbPMf#C^)qX zO2{$EX736-pCxuAF8&CZhV6=1tpoH&B+jKcR~`V1oe;Bcg+zC3kjPH3=2Kv~SzH%j zRA#O_A>O6E;?{%F7`EumIbt5k6}<^cKSjoYL{QUi#VN_aH?4CK6fUXm9_yiDjcijm$JG*+Ec1R({&D0p>Fjs9WTCp|ISp&!SiVs#Wl zjRBl>!{V-wi@OGTG?5hjXoh4ywn)PJSBW;0C0=EV*w+Dcw{(iV3IRo6aou3O2t$7o zjCdl1IDkoy)QF?@=7cR+Bnv&_g_FUMGG!PL+KuWPJEt!M=|BzX#lb$NLn7Rfouez* zheI_DY2xI-ljm~s$J+Xkym?I)T6NJXeNEjJ2xPupJMid{3;d~;(EP-c@76np!U9wCXnxjRd=h{pxE27mFE?BnniW)}u=pFa9c(93z_ z3NI#ZWA|>ER&5p%LU2?(@?-Ya3J1J@bk#>B7z9pealsS}{i=mG;oaHZ>9HgJzwP~J z@2f}u6<20w*`&oEndy^+XVX365F8&2R8`uzW=@uYeNuJkW)ZR37{R6qfHrIJwBqY1 zWL&3WvBChmSNCiA{bF*b1sV1+8Qb(&QK-=uykFgihf=?pzduhdxFhx6m*h7n%;P}SP=5Fgo%eFX;^ndO4+N?U zy+!Fmb-0iaKNN)}_~Qr*CBq3ZPD9rZWQx^W2=>{pCO6sFwn5*33zKotPN1THVu2V3 z*8#u^;MuiH61u8gJuEtx>|BJf3MXJ2c>gKrJ-j(43CvNDQ{ZOiWneetdz7}u|U z83K!HxmjiUs#=b)nh(%nGwOsn!vuJqM0_WL5f2x#;gePN2Y&Qg@5vM2M0U>o*P@L5-oBK8;tbd9U&Q>pzP`shNPPCbC|@`pZ90vW;w42N{fOd{3&x<_oK_ zUrrp?7Tad8W{`0lY0=yrOxj4x&)W|BB0^@3aA(ZdEqJqEDn*KIa$O*>Wa=0dQHQ&s zJvF`4@91ln8EsN?E!X+R)Bj1Z_qzs9xx1U6@;m!m5M0n>I!93WuCw>>&x|dbZZxdy zJoXfGZoY@`RYzE1GxDFEX}A{}#LZ6Gj?FpyYQZ6%!yji55`@{dted7{CgM$t76&Vy z&R`!0t|I~!gW~5+B7a;7cWe~vAON@>tYZQU8jm;&;W{p96?egD6xbwKbb(mii^Mun z0nm;jP5}QHSUT8s&|@8dD?1KV909vC`%6s|pAO{sRFpl%6>>XIh$bH>FT zD3;LaO2h~Euuo+nfPXRcR_!avS0R=v&UoS6bWk@_$MoDdMmpNQ67KZuy9JIuRkG)>b-CcV`})H zsvMMZGfu&{PR2zI!dH3$BLhpJ9nv7#8y{dZ?xPEufeM6s){=E0ZTv%E_!k( z>TdOUNqz%DeVZc+jB!eJ9LJ%P?1Y92@f-^w-G)pLjb*IvQ=U-@jH#12r`R+qa&L89 z{N)H>A|at?vc!C3u|%5IvujN3+9Q&<{-`9b27#yr%N*R4i zK1aN-o%(k$9!}7h6@PMO$o-dRKH>iJGk+_6Lu$!N>c0DfV_)-jwmgQT8U2ps?+Sn8 zH9xaHf6dpWTr1Z&S|bcHWV&i+6L`m*M}Y`EzW^WlB%UN_GZV#s^yC+v&pq`a069UM zwjGw@oJu4{;g*u0vxAA28!6I1wCW>TS)@!GNFp50c)L)@nO;=Uva@Gr*74Z9f8+a% zYgSz2?QMY{g&Jvb@m2n*;r-%7e6QLq)53b}XaIMwaqNFJ8c@@Q&2Oe5jEV=rATLEDb9Zo(=b_TG&!oPT#iY-@Brl#2Tv;Z}dVYAE z`pGgzNvS`U4ew)fRB(Ul9Gj>349b*hrw9Uonp-*HPTYc%*@oDqz2enF2TO5>15gAZ z)z9XL*;)oquSlFM_E~g^T{k3J2}n?$CGL_FAPo^QpKK6)DvbA%3TR?)I0{_`Zow`{ z6gb0`ddoF3RE!x%5*Ngi>Ci!}_}iK)6l)he#p%=p5#AF8z+c)Zer8O(Pj-Ds28S=) zJ)R(tNOEKYQ!ajE|1NJ&$CLiV6v5lqD+(4%iIpvR*_9FnSZ2q>wUQtwAVl#@alU%w z^RQRPpH56EM)S)GpB+`B&(4MMbHdZAvKMOi*WBlQ=?q6$JS5Xe&MH*tm@A4v{U$|C zZ3gzF4#l`@t!EpMT2#nCGj`nD)4hW=9FN`q+VwZ~Km6oF-iM$4nBK1qsaltA z4gituV`QUL2xIf=Sq5z0yZJB74_yBVLTx%CngsO}##n_wP<2(uT*OuYi?BR)yE~V6=Y!*o&=lJj(HLW=w>{6 z2|T+p5Qt%kuYXn~BMG}Gf^Gtw)jJS=1ISB0=SLuTt`*K0Cg3sJ4)_7go$*2(xr8m# zz+rhV*)!A8Qx7|a?QkqTqE1iFX@Faqfpm36rlh&~0v4-ZzW5&f&h>9ZSm!nrr4ew5 zu6i4=i=p|4Q$-Tl|U1U=56#MIb9@zYPF@3{(?Bvsa*UWJli1&LBpL)>m9lD?`S#vzw*>mKl*5=JO`Qhw59j+i1 zih3(KIpP+dLCrdi%z^udQz%j;YS<3ja5;OBdVsvueN&<>+r(@v6>dH{v+jo?nYI`` zc~D?H&vrelSnT4{Vz^-mJ-ZZan3FaTsU@A_aQ6kg!0cZx=CKmdd!wq&(5sJ2d`+vk z1-)Pr#bOR+K(SC@s(Avh)&Q>jBg=)+sWwB#kL__xh=KIrkChmWS%=HZv7j8Drz#Z{ zNa{N!%CLhU!8c{@?>RDi?@RKlNh%-J|M-vj%Hd>A1he(40MJ-rlvyU zy6Vj3Qz&EVg4%0Qoq?@DCz6-8i4UF9Gcv{K^u+J7#Ox$1&Jd@#L%hX(qI35fEn7VJ zlSVH*@Ya0MYevM)9v8j4TFmxb)i*+Ya#r++SB{Sv56B_oq-+Dso1NewE9O*==!4~= zch*X{ZKYU^8zl6^Vti+bkpQVshQ)Zp_?NXIJUF~x9s3{er)PeQgv_?{8XFpJ4}J1w zpEGV>a=*8;?@_;Rq)V$VUZGbPFYt#Z$c|_2n{yDtcdmOt%MTS8HgGlpR_^AA|Ig3< zt@Hi|UnBc_w!1seJR-^D1ZV!~uiNye@RA+BcZ`hO(Xum&U?^O-;paAO{34>Q%ehQ{ zS;aR0@!_Xr&(MAp3@efg$eV|^iw;<9_`ubjg8MP*x?V2bpniM-HzuI z?f%+#=!0*v(lB{h(#gfFE;PP>|5YF^LB!Xdg z05=D$U5z`^CE9(3=tqFAk%%~#JSJX72P)@rvDzC@rV-VHtc{{#tmqRr4`rSYSFa9= zTsSP+M4nhD8$>$tL>oc)8DJobMxpGd#EVW#czB6~j#P-z4Mza3BdZOr4$D=uI3r5c z6o?adfna+zMNC3P+(bAP`izaC+p zo|ms`k_QUM%Q69+04&b9xUC^0LMhX4HJ?u|Wk3%2Hf>kAp6AGXiG}$T2R(VMv zl16X7NH`Oup;O!iLt^A*L+1dVJ-CO93?=H|g~7#N0D@2fL=H#At4@ehe-b*JDd9(# zz`Kh8fXRlT!3?|j zyY*ECn`rm`_|%A&5y{nZvkLXv;s)=whFAJ|ey(GIu`Am(#r^LS|KT5Q+wZpz9E1G_ z0}t2)(l*xWxAbu^f&xh6jun5TMKdhFcQgR#VD=rtKqP+!(H3Q`)^4x3QGPW16aU!o zF__vs0-Bcj8u3dAYa~AyZSgBbc&-@NuD)NEmem=rD!bd;XfO9I2WSM1qr&03S`Cdr z6#d`jlJpvbr!Ev@!_wQpW|Qvj<2&*Eyq;C9u3}B}vw!`dm8h@d9Db$509w}Y$&E)P zS$9Y+{v_Nrg>QuwsD1u8HiCZWMKVm-YQ_k_j1VvpFRjQ~nE(&`d9eV15A3Kgp* zbFkN+mgK^{;=}EWHr*~pGZ+YpM6vFQusEe>#VP6$V=7;azIxHSa4i7`u_`Lbigxky z`o-#Ai|1f)a6kz3Y@$%@)ig%_Ml@aSAC?az89?ArF}l5K$}8Iz3B`1EQ!JZ%0jdrm zghA%4zIl%dkUsYVbJSQ(>yXfFuIt)CE$eH)-fWZZ6*BW`V<8r5SA6^pch5KKU4 zl6W!j%WjB^U)mvVCHH=u6tj7)SUW34n}Y69C#n%<@u+ZvV51AMfv@XR4`C^MFDn5y zM`+bycz6@yW{!eTjKKRG7H_&h!jFN3OowONxTV~X__oJ@n@NED*Pqv>DOzrJx$){t z-y&rhWzOF`{1NDGpYh7I@3Y=}^`Cp$T7e!3ix-NC7q;OUM#P^6R^0pGHQwPf&*1S3 z3ECV1o<)IY1ZRb3`u*!a>Yo_-nGb@8#3xXGq(MmR3s-(EFIpZi)wJph|15g0u6XR`icoI{=7vhu3FSP;~lH=uo zg@KK!Q5OUX1q!L(DLMBG!t-;lrH|)+UXtgQi{y`T+o^MD^G@ZXHjOeIPKd|yrbY!6 z8N7h)u{e`yh_fIr+7eTo9O@|T0VPenVn-fXvnu)ETw?7B@h%&Jr-o|-VTn9lA)&)- zm0q|T!FD&pgR2Xy%s3Smqh&P+34or9yPqvXM^u8j|lc9hVP+G(dtUp>9wWYJxSrr3zEV}nf9R-f9?KT z+rN1yhPmk3bH-ynNWDm+*Hy03va+)L$!U&$@U+{OzDe6ywc2~4iQD{7`CZd3-cMV8 z;C%LpkLov9-R74FsAd2og6ym4~=mbk=cyal1|LsedICyn#;BsdRD$0@D4gqqKz5=%Pug;F~!CW zf-GL^dR$Bh$~2WL(LL9TKanBM%CnMeI3N;%@%U`lMHm1>FETFH;4;xCf{}On6w075 zDRyR`I2m9HWusuSL!wWXh<>70O_lbO0NN@%yP_8W-v}46P|RcXVzgy&;*B_qkc2V| z6$U^Q!BI`UFz&}QPF=qmK4*0mi`IoW&>=!TsWo(|_{cl8h5!whTgSsN{V1{{4wF^8 zi=+|ZA~N3|o?m{Ed;k9?bMpp2d89y-Sjy}Na4Nz^j)2Ch{>CqQ== zw2D(RBL?uzt2+x8+$H8fl^91#;JFdn5k7)-*AGi_J#_TaGm^aGq$F1y5VxiYVBal% z0rWZwuERn0ob9RvPqL}P$pnd6Cc+M8BqCU-3%)xyP6ZS9-qZBw{)ry2lXLF8wy=Do z^}xn=Y6~mZ`o}w)kUc?j1J{iRmhVN4g5O7a_DXZ2Ro2yPF$+Rj5``@yBfOa`(Z@^) zy=u$bwYtoDZ(sLr5UY8ku6`jIo9^|;rU>q+N?w>~OS9MM_f*{}M<)*X4|M|EMGauM zn6Q5Sjf?8&n*;v(H8pn|@7(-8D4^OM+W+dlk9hyMgDWYiv4{TfXs3JZ^d7%&@T}j~ z>nQJl%8YO7Ek7LH;Jq{Y7V}*<{V{6oe95$OCG1Ci-Br}qJ=*-Z_q}5ey8m_b%Wh*U z+lXchnL=joCv6aLoCa928-m%P+GxR+jlmk|6N2Jv**lz!ivgw5Y_Qel+eIJB5P$K6 zBo{+}43sa2zNwB!{Lx}ip?Y;aaMz$SG&uZc46GEByPIYWNO*Lqg!X_DAI=qX5};ZO zw`yIpxDES++mwg*trzn!3?TudTN#tYrUPKKlVBLQH>C=0X-M3qqi_qm#TYFW>r?@Z zi&;g(0RV?BFc4HO+|7Ya&WIoFg!}zT(h{Q|aUG}i;+Q}UVf``3cUm`H4*e6t$vS!V$9>dexpMemDUZJOd&D;)Y6?Ge!L> zfZdj6@h+K`&{R^a<9TB41}mN_5PQW*iC@(P#;1!l0v35FQzDNpR--GtYLJZTWANG% zVzw`W?sNBfRN&AlckQ6qYxYWV!BN%3CZQSVJ9P;5$hCFU=r3TT>hvbPf#M~vn!qQ0@}ChZR{eXG8@Xf5(9B&HcM?%4DO zeO1GiIOf=2C4MqFEn`!0t^lfm&1<8$G@L2cWK@k@^0I94vH{dtStmrc3v0UP*=H$$t`VS zFW3(SEtBw`OW_LUiI>pCZWx#NmV@GEcZt=!N<#YF)u5nOVqrz9&UXQ1~_BhzVe;c z2e0{*{<>A~Kt`w`a9UOADy^z)iB_DG15?wv?u$x5EFXjk!WD^SA2QuP`R+Z^ z+s9p`Mb=ks)9Ui-Rm3QWyuPevBfjTP!~PXTi(1)|6E@UcmcudWV@s4&q?e1&Yjtot&ZsgCp8_y%i4>z-w;l~81Sd> z*N?dmodh!aQ-0@QV`|FuY{8mamfdB%;?n!T1Sb$5GVs|9fpW&(y+?j#T)p`wUCYQ* z?3e~XAVbV;FaJkXG7jT`=Ta~%`c##K4>yR`1Kl8~) zVEhQmP?d@TMRpx<_+uKd32bU+=s5IkAPUdO6L(>o_+_@}-O!JYJh9vg5QI+g7W9jj zlP_i;z_$y}be4!jOx0W=71N?c3dLcwMpnOsPh29#S+H*?1=oG?RwTq;(kvP~yU$PG zMMUis0$^5S<`WqbdZI>+)F3nVERME->aK58m598j?F0Vdt{upl`J^mvPy6k|r~USR zwbhbT6fO40ruyXc_(|{B*#r98hU<*mmfUW9`pPeu*RH?U&(O0BkSf($0z0<<`H2sD zyPF@C__+xsN?HdG`p>pLhR7*Ku2mE+HMT8&xp%OWnyYCVL6UBGx>sOXDoHkkKs zc&+vNEB@Haw+bvX1NzL`6-ozCrb=_S3~2~+JD1r8b~cX~%Nj0$!bCX&MBh}qPJiR3 zKQiCBncJ}d+0F@9p!26^lA=!{IJQf(69bUNc2_G57i$@m3Jd|jrFX6o>sY1u(F}<% zdsG~5*`(7w3rcw|7*kZq965vX1#4Bn*aFr)1|x|M;vJq?yBCVJAB-evi(4y_ zys}jiwP!>hZV-J}JzP>4V;Q$n?*N-VEY?h}gpXYUV<|wi*?d7C2=TBzF=z0N_#14W zpb8;QYUq?wC$Rr83=2h0BWGOL*^_24GeF5u*`i&9()+fgS4c1t&xg6X{d~ocew~VP6XOp5zLMR?i~QZB!O`g!;v_ z`NbLHWg))FOmX)QbNVyqCd`T!31`D@W^sk$J#qYN?&o%V%=yMM|BU-bwd`=d#(Ov# z3M@m{?)UY=Ih;wax6H*b36@(bCT=y>H^{d}*+`REl)X=6o zFdp|FI`SR&K<@!O#@cSa#FJC5WqTftflNgCWwugotA8neN5$-KkjTCU@e^TjR&Pfp z6O3Jy9XNWbsp7fB$?Oz+5m_i+h>0H7~O;CaH?d0YdAL`pwfCoaehn<~^0 zJrbXUBjMwhihs@CZPIv#%yCwI1Oho<}W6}9WM{G3wUPAz{y!ij6nzit0`8lWlqmPH&1 zc5bHN3z2fG+>fACCS*zmCW(`Z9zB=Lt9@Q<;m|a{wZ9#u6XTku`oiMNWy0(C+I!o? z^Wxrt)@Qu7-bSt2n38KtH%p$L$tEAqo>3~H6czbyZe4eowtaZJKQ=j{udlgY@-s5D zP{{K3wH)-1bUy0u?%L_?IrS9Yb3yMW6y9@pA9>WgcGEUp&&lU@>C7@JxPk1`vMmW6 zUJl^Sl;kDH#I8LFBVfBQ?t@~@WyVypxyLjp*4&)JZ}e8Gby?{~8ACbZ(0$DB6}Mtc z{M;ch;!-f*Ix*;C;sIyTkR+EL1K`HshAx!wk#f;yP$4Yt61Tb)=c>i*Ks^Lj%r|n% ztlAJZ^?vS8#?D0@z{=rD%GCu36A;vrhk?c82U!^Ov?wHAHjHf=X_~96 zK-E=5nAI;>{LbMMc;Y$xqs|wtI(MnRI%lDEL*;ee5Bq=OA00l5=VzN!FD5T4AnP^d zEB%RS))I=g8<*GJp@nkee$Swq72_T0d>YL76n@W(wBOQySngZ$2CdXDV&f3orPPQ9 zb{s&Vy)vuZ7|Tz3&o=M(n+A8tgg)VX@7ezaeGS$_PA1uQeeula;?^0_0^|0}?$^D% zd>!t-!Zk1vF3YJ86pE1yiL<;*k_&f>2A7Qi(G3d>>72|1DF|6S&CSgm5i7X_pbI8K z*PoLyqHx!Wx}lhkM0Q;vRtGBH7>usL5NG8Hk-Pyl*4b=q5Uq<-t>fY>!+8lw%Wik^U}zC<3D62o5QF#>Nn4^4DcaqWH_oV zAC)$nBk1XHoC1MZJ%w`M&_&+Et^Ad~ah4_n;&nDRO**L5i%^k+!!GL-$qkD>2=?2S zA^LQM*m=Fsv3~Ii5#lgh`d-*kXR#UrnOsZ)Fd>nX>!EXbZ~_CM_ZAqETzeSd&jcOB zj5GfD&gT<#6}T5ZbBXv}TyzWRWLl6gPIU3gK_)_;*pKf0ybKKmE2*Vrc=D{YPBp=v zPxwt;O<=esk-xw9Uwz%SwXS%ZKQPv><>!`zNoQ+SB@O0H%U_8!#oU>^l#5k2n9oef0Qu#dgNIj*aogE$`DZGIRXSA!N|=1LQ9wT5)EL_KNB|Wli={ z^Mgx2>=l`1a&qj549kcNOwa4bI$vH?KsN7O^$rP_a+JfAQ&^vDUbN!Cx z_sXg9CVyf|y+62$>$+~Z&mMXxv}N;6x{;mF_E^=Et^T0cwG)z9_5@r)dP*<=0xdf% z7>DOkO1^+sX;>T+Y4#M07NeDcoebrRQ!yl34nCP+r)H^m%i6^$J1trq#?!u9wAKu` zZeTDg;6xM*i8-)JtP^>v*V|q;B3^AX7%kY&XqH-IK(QqnG~PvnAwkFgL0T9YSd(8C zPK`U}y{UV6jYbwnx)n+w&Ro?F=M*Tw2vetdBQFNORQlDAdEbG#@=qP4|NH%wbowtQ z0HE3Y1)%yls64}fSuUlCOl2OD2{WHrVREDc7rauyg?#g(C`%7|2%X_t$LT!hb# zmEq&#T{0|A?YLMI(1$KC$TqOEbL@{o)2j3-4;urUetJwh3R2*1Ir}W^tM8!0jDW(c9q~gdXJJnSw`&UUHgGPIU;K`~7QcVAGqtM-Pa^j6Uj*Omg+e3*zyMigtC$Eyh2t`Lua=?LA&@2sIJTT~)MIhGPBx(aA#+ zbJBwwE)eAEZ%)ix*S}?MqqzOmT_5&36a#+F8sdC0w=BOa^x-@H3AKBdF%_QC;Lfw4 zgVpZHQgz^R3}7;UhK;eh;Tm(x>g!<;nR;E>DnC=tp;Z{yuecq`1PAV%_+u0OG962} zSqX7DJINxm4GNac0Dcx&Xvh(r^Wqg4C&4Tk5B@#31miPZH73*;gUe<|R0pBjrwoc6 zZogc-xGAxUL*g!dO1#LVSbZDCI^r7&a+4;C`HAHRmSC7;xEQ`DasW($@6N}L3J-{${ZqoR2kqbR<0(NySxTWuFTMVd{Enf6aM>Osgzf zW^7%4hvZ~)us|R_MOe6r{Jp11eRqcSng5nxOS^30#orV=D+DpA~bQ^Mh2YWN%3u@r{Gs!Rq-#5xXJ zZeM^D!W;R((!bI+S6+jRogF`YzWiDNnQb}vnhn$W$$@`G=BddZFI2cly?Mo&o1tvk zJoY1I)HmUCZy$S7#_cI8VR{KprJz(A0FnQ>OTHwgR;|J)D{9bhU3!c5@`n424J$Ue zhfY83AMfpuF=xd7&nLbCWg^v`C%&nNB*WLZe!H0j7#q-V+6$D&=%@uN%~KtC3Swp%}j!bB1$C=*#JH@smU+>L%iiN3|&I zB$5y9D|IRg?LeU&I`Yk1hjQt2LGaBtXp)QarJ_$ zW!xX~2Sx_{w*JHZzO#GWohP5rwidij7DkH+gaiv!xOkn)?J}pps9jO#{iJa_YQMAk z!lEm*!t6|G8b0oI4|aMdyLWicocz_O@F76y z2}j&4fNstJ`wNh-T%!U2gX^;$D~ONdLcd@rAv054{8nxy3@D@VM$v|ICAO$h^s*=n z4PhgvST4G|SiI7+VBx)Zwpz5R7y!9h^r0Gw9H|1c26$IQ#a`72z@1PNM68Z%Fk}Gb z>Ndn{80S`qc@_m8VOug1!!~Nhoq$`5cvTL7nSr5q;Fz{ZyAJ+i%JC2JO#j3m+bAh+ zCe))828QeA5Yh+$QDdEX5yqwRKph1SsPidFg?OQ)PvhC&NlC|>U;Ge+nf$rwN&jU2 z@I1d$C)F{_p3M#F8C4R@PSsqYj&YtIi2|?~fGnOVUeS#Bc>wAOlp%`O#XTHDPGX|P zp(6z|VlVC$Kb$N2SznCqVw?joF6sg!050|6xlXS0T_zqFuU9*RaC5~icEwqE3~b$& zP~#R<000l}u7P-X3uh#`x>2-nT*aPoW@44yF-;&Htkjh-EsCJfHmO^NSY1m%M2djw zIHoP&&qo?Lk|+MD&)n@DZGJ`)3EE>y7C}}6qMqH^6LfUUqbZy%5~=3uKF`?cgu0m%PGHSs9A=RG52Ka zQDkD!qsiqmk#Hkc;%i$AH|p71rq5}bC}e^mwOJ`aUbskW&uaBgb)E4~5AF7k4;^wF z+qe%_(0&9lE?IPwURhS<_YQGw3sxY3IBrtQj24AoasB&ht8!T=By?Twj%fAfS!%FmqNvkaS(zV?4z(&Z=Djhf0X!XeJJ1)k zQX1|>c_mj&fzhIj+M{>^09$)n^g=MR0Yl98FkW0N_JTI?i=mTKIU@bOm~HTqB4CkA zT7pqSS>qCFUoPR@V6!no0^$rnOuZ(rNf-cQ?q=$~ji%rjbjVS_(o zk84Rk>7D6m)^c+S^@`$ptvJ6*t0<^6uUv7vml4h}V+7(nN&fkNzdHH1|NVM@Ix!)8 zx}Wu1`#JtMscl|(m!6lC=MRow&`k1t;`fZ6PE{O%m_{i4*^eG~kE22vAD;vv_g85U8(k~pthwzVeB1yer#Q{d7EZr=ff$4 zF~H4$A#o3EFBhMz9sns6Fr|EmvvM8PxJnw5qR=R7Hd(k~v5syPa~$k=*)!thcZg)p zh-MXuKA4NJ!LMPF+GMeKb-m(bj*1pD#X4I8MwBIqrAI`|n2}KHYSEk6Oag#i(JNYI z4;asK(avOpX@eK6YzBK8k#O58@wvk;fnd=LSkH)0nIq-mlnnrw$H1I( zQL+0HI$I=8u`Nk}wGjn#2Fo^kqT%ns-WkK08(tB;1#=i8N^X+Oo>)q#!5T{jVKggR+ho_pbTN(BI$r1?%3+{@A#B z!@Zmgrq=#O<)=B0IN#s@Wxu1p*+1CvbQ+8iu4dk|>D7q7>7VXBg>$H(khyr(FDyu= z`_L1g0~pU6s+SgR!0Gop;~oCv-H+?*i!YIXYW@fLcIP+!2M2#5BQt#F9Oj%S$e|Zm zOfzKu;q~u#zWCEGv2i|i_UDSRwC-|!X=Q`_UEL?Wg$}B6PbseN#K9H-DqK*-fZ|+t z`sMCZhd7lwAsnB0&z3jpreWIu_0)eF%j;JfFJJz0iJBSC4^MyB+k5gE+!wI$lo+cT zuF3evKmVFJTw6`1Nl?~37zK>OuZha!hW{4Hpsqkzm^45N!7km=k@_9(xKhj`O98Ia z5?}uiz%?eW3q5cmlDX>@B7NDaXbAe=Vq0RXzb9VCq(oY;M0zI08e1rG8npmiQoSq! zHggzh4vE>w>Daos)fwW}9fHzlz%{JIeIbB2fIYuQLQ~aZwiJp7gW!ZhPlr*{oY-hd z<%N)a5fD_nxC@Ymfhl*C@#mxi+)BWwhrnYpI}YFEnhKnNz~wuQktDzY*I6D)x%rz= zAB3fj(=v};rv&$2U>HRSmS;VwW(T86US;&Pd&aXd!Yl+gJu^V6qs|vSprv(#xQ^89z}~pa*TIu{h;}pRc|q* zB-e$FY9)j4>X64n1$bXXV)y?2YH991j@#!e2xqCdsNGWMjaROFpTztg_u(TCUhG}J zs%XVo)l!*RE>rfT-!d|9diL5KCuX4Y1?0aA(BLLT}`eiknq&!@uO&G)O z;nRC$C^6}unKcEeztF~;@tepH{D;$6k*9rhzG;*NqdBZpt zQ*Il=PzFQH3Y5`-@UfdXAJj4#Z`Fe5A#C(NS~qL`(l8HbBc|pZ@tJZ&nX0j`6l;^i+XqJ^IXD9 z7rig_n|a7TTw~f*ym*Yf*SJh3hq&PsFRAGAGQgOiO<-d_6U@}`L|juqjPr^qr$Cw@ zshYSr%xx4pQL2ek+Nj2}n=K)+CM(6MY84Mm*zC0c&Zwll3bp%5C)s zGtjFznDaF5p-wQ~yqT2_^NevX4Filn^>XiY$3dB%;g)XHJSAF5L4&cmezW$-0{->vmn$Hf*e~zg@Fs+MkJE$lQM!0hUPLbhnJe$lzu@_2-ip z1(5wyJ$sQE7tE4-J~1{fyUl#_m2cP1jGXc(rziX~gNJ3>m~p?c{j1uQx%bK9Ecjk1 zcq$B=2~g++8^6fUw(3{Zx<5L(-R~Vfs@E25(#v!5yeH2*;*U)Z`GaHae(&JLw|1hi zy*eke+qbFp=NzJP20AU|v-dLR4ac`^bpZohT~~Me{2_0z$f&tsKvca<1(Z z$w9faKwtXGL`uftN%esU6o@~7vg;{=O^l1X0M4jZDEct!_yxV zfKZOkGBDViAC<)AN5#JMge3XdbW&oQj*GLQQElCny!5!Zo0=rC;iS0hTa@l4FKrfo zeTO7Awu?1gE&jL(eMX9qJe4*AbcG|%p55Q|PPQCElIF9;>DZ_gW-iyp;+^*AcK?-3 zPW74hZ}^aL+lt#XJLLPF1LvACxgTfJ)2-_^-s9()`5KoAwKGMVED&=lON`eyyu+`| ztnr_2<}M%S+J4WMnZ!8s{~Qjisk%<@^LXP!l;EC+?r^2;4!={Hu9XzlS?{>!ea7u8U*$b@dOr|x9$Qzg;gipPKXlcWn{_iY zABC@m0Vx0`>&!I8$p+A-)|n=-xm;iat;aMq%NdFvJ*`j9n^jX^+@B9pV&^NysS&D~8)S1U8zD)U5#vj!a4DUZki;5hXot@i)~ zby~ga+~pS}4C95~`+TCpNq?|)J0ZgOpjuo zIHQ0X>EvhwuRa^#0=-~!1}j9|!9O)q6k#(DNj3;-CWpuYh~27~*h|`>Lj_`S*rZn? zUS*fK6*Gzzo2~icXGH+49b%X{V)P=cPJmS?Tik{-;#U%o4}k^y5~9kUfXj(h8wwU|eXz@Fiap|V0i zsv>bqz>Yur>ASs?t-HaFFS@3Ke`a8>x1;$HnVz1~a>rz1Pgh$kXERB&P}`@s7{mnE0o!zsF1W_f&Bnu#!YD{I{{@XIh>wjCgyR zp9UDu4&Y9Ue{^7{arff;^onpHM>){lqw*;C2udtb*Kl9^==)XY-bKW?V(FdMpKN`v zKQz&=nK_Q|2LcjBh`wTB9Pj_Gx4%i^x!4U|?WU(YGT0k#iAfLf` z1wi=r9YZot-v;)WDamDr)Lwb;>lKSsJ63acAwW>I%UY;+q98o|rEnKvTuEFT2LsA= z#LMc33YlUZSRwi(44}%B*rI)6#PY;EQ498LpyEl0yYM*T7L`!bQZYtCVlO=bcaZ z)bI1Zm89;UJ$^pnJLbmag5%UTf2en)(u*&?gOv~OXZyULfdm4WH8|GlR*n@$#0aoz zp&RuC;W@aDpSTBkRRWbO0tBOMJmsCxKLNQw-m2yb9J_4$hX>{r1N1Y&jL+h{m805> z{cr&)UFhR@x!C1>;@3}!KAtUFM+kYJCwAQ#kvs#eIE0EnB*sjo#Fv9KW>1LGQ7^{s zaxo@Y5#Sy~E4J|rbPD=va4Rx4$1$=gp%c8!^;qB&nA$E43Gd4 z6lMd`#1-mlaO#Pt|I0hwb_}QIb=d0*t2gPFExp!n=|Q4WYegiI(=y>EwGn&3J=%I$ z%gD$GfAx)z8h^O%U7@?Ty(e`0wQmJM$y0iX;C0s)_xroP`-eK8@pra83IOH+ zYTbC<<$tcPsJO&G*2N_}FKniKF6kO+1Q?%V*eta9x$(N2_#S8hpi=`L~1AzWcQF3J*d;Kz;3t*9S5=_-l{VRfBc{S6b>s(!#PBk%uh|!LA=R`y>dtuT>C)5jqYr$=}#y0r`G8NxxmapE+AN&ue)ibG&8h?y`#sq+tYhvd{Q30Y1Scxh2 zj4%j#Dsik7QEoM^I1Q+5jUu&62;3{RZIYgm2XMu`gQeoY<4QF2pfpRxY%|0dD;K}4 z8(umV#P@P z;qgu{wGJ}JC;NrrLRnt0Qg?DAF35~lJS1-Bq?qv>nSS6O*ZXHW;VQD-5}Buri7!9` zJ@^;9ntujxRcqU5ODea3MczS4y5`Sp46B#+bZRtGG zU$**fk#D{B(Qw|nTEm4a2IWT zHa!4n)%0m-3iCApW`3y20Bj&ML7gYuC{oBaRW^6f5to&l5a=-5nzZ7G zNOeT4Gn!bPb&_mo6?ZYh>-5EJT_<)~izL=ggZPf;42Ek?;qx=Fll zJU-$6^OGNT?)v6cayHo};VF1})8cc69&d=da2Giv>O283`-hvKot-L;g3xbRd7W02 zQ-SwVabLKkLH;)=zgUERMKNz*|8}oMZPgUifX#i1!K#bTA)HEW-Ld)A-l=Z5Gq|^V zvPFiIgUJv5=uhPOl5JA#7p9e;`|PQv1GbM+DVEi&lM_y(*V5Ib=~k{50#JVA>2E-j zW~WYbn47U>*;em#cL%~h&z;dUcjw-RLf2ltP1iH?xv``J_Qx%m$RNycog@lQAz=V) z=t8*jS_z*mgh7l;qLv$SWp{U-5%Rbkg$Ux^wvzZiGp3#s;0Z^eF!O>C-wrET1HYr zCoUE9Fu-$~vBe+sFn+~xajLlTAiXEX3-Npb!n+hkfl-H#ZxOvcSkaC8!H#35->=A! z*#G$JLLE(x3#yR6q zic*R0U4e%(WqS2b#mgR5ZKtX|&`rXS5FZ$8uxJmSrCUftPi+Rtp>CR0AjSZ<%t82| z%f>*i7@1jc%eutP?EpCU<2ksSXD@+E3U{*t6-4bJu|}7GJ!dPBODsDM`i_D*X6kp)@fiG8?X>*x5AjvIrLdEZNmA$VVHxomMvn`?GybY+ zg69}c@E)>jLLAdfmZ_Sy7)+3yKo}1^ryjyHC`@&o8mXHo&r*PLJgO#BcnhG?<@j_Y zp>qY2XlR4yl`k4_R@Y0#Z)jI-$yyiJ8!igZBbUREGP0dU@m|QjwGNJJvjBScR&@8nm(;%XBAnOt+>wX?C+DA#ISK` z?d6hXW%)fbJ>KyS8QB*L!yC+hfZIv79D4Yo?U$uOnJE&%~2Ija%CgHH4-dzKNAHr?nHX0!Cn@M z7YoVEie@pQA+b(#qtytWN8Ok`BSsqx9gK=Nh|6rWz4I165#)^v*J4f-&+M zV4NPOO5+Q_2)8ib@SmDprvC6d1Y^wsV;ct;C;0$AY4F9fk{1Gl1K@#Wt8+vuKFDkQ zsFSJR7aRxS%#(Tdp8KeZgTL@@#*B+9DKN%4$v`+!RJbwd64E~l#t1`o>T=92qsOvW z4^V=4Ft3QuxEQ>a2dQW&7RfMFTp;QO<{MbFqSiPbcf@1oU`b50Del^Wy0P*oaJ^8p zv(%F;u-sNWQzS+Q!gTV*sc%Mk=ZW5ncMcYbS3W9U)r4665z)I*L{7CN79SF~pdaDq zN#;-2iA*A&5ogtpumBbKhV9})2WUB}9|q}A-U)}}rK0;>!pj=CQ0TzrV)jBOajaM| zE+{*!4N2^iV8pAQ`dHRR& zBFFVjOYYLHtKX`>Yx4)9ue$F;#vRwbQ_qU#tBzB6bu(}Hn|1a-eeE6gSAXyk_nU{l z=sw&02%ei3%Z%vnxcaZPzId-cu4e4czWV|hpPIKuvA(I{PQPaqHQX=I0r+c@i)ixy z0ZF<^EkCOWzkpiE$;rtfWX=UHh#J1uS9wBaEN~2fLt5bh9BRo(b~t>#;uB(O6~P54 z=_^+Kk=)vFd+1NLy~p?5Ec>gwzvzFf@jspadHSmWb=BxUSA4iJej?#HMJ*D$=CC+< z2?UR_rJ(}!{eied8@Gwk1b3|{BzA41xZ${%yoNY=P#jB-;x~>s#0*h%y`=i^y5qy` zf+m|5fOKRr0Gr$CxBvpgm5avXfs9kz#2hcd`Ejuq?ht2nKiJO+vAQ`nIifb$O{_W& zqYaCBvIYlirsxufYb~Fw7k^w6cUhlUc?k1(DR@Xo5~~r<$`%-IftqMS0OZ;g%sYZA z8|3-LdVz7Fkt)C;@F4w81z8-2Q=u~9C=CTLOkMzT^ib6Dk^~zH(qeR=nApAy*MXIj z>gZ&fEbr$gpB!4qSKv>%%?MNd=D2Av*Yr8{NwMDG31lF{QrA*p;y2@uAL{?K_&ETi ze7F#}jiQa8qG3T$X)Gm@mqkV4mPuRY)d0psFa+a_&C$ zEF^dozj=(bsCzDe;ZF z0sNDyh*+i?mzPBx3D&cf$MXo2V>ZJpY-3*pj#%bU0zPkWiP4O4D7%~VN5=`avw%m@ z*H&I*+_UygdS*0JE6qj3wb^|!{pr|<1e+j>-#vC(n{p@QO9wv_f8!@N`D6X9c161y zGK!i#$V)Z75Hd2}FE%m)qD8~GhU2+jT#YGaUBP=%LO)-;-OZdOcn%9*;B&tY`9Hys z&DUM_5u>WQTs2AfFx`{gyS%P`IA_n@4#Y9b<^!AFY~8ZyZo7Cen+CuQP`LyqHQ)20 zq{v54z$zE4s&#ktJpvMXfaC|ook*Yw(5;^lVWoGV-pl};?RT`jz#Mk2uI z*$IL_synxf;_xCTHHJBQ<{B}-G*tB)Kj?zfXc>QGv0FI|#u&!?Xb{W`q>2`bL$XJvkLS6j zv`RP82+#5w^M>hF44Ro31}o3SF`20{!vJR0HGI5$*lHB-=QX~AlDZ~fm2PoJ4e4X4 z5hSIEfQT^2#1WEWxeSr_M-fj{BEtK54d-~8zsYKSwu94`LRdVlp5upJEKaK7U=*BU zC8k_^hOYwQ9eA)3m2Ehp7&R`cYs??jX&AgLcwTjeBJY?tCIA`n)k1}mtY{Ul0A5l{ zSPU~?y!x{UD;t1q!Li8|x2_f7isKIGlwE@37Ni$tF=PVB^TCMW4zAxVcGX!_@S21V z+#=TTY`FHU=!1NUZ#^Vl8Pwjw0Vjp9qZi+5)+xQW0HuStK8I)%xe|VArG!Squm^;} z$}RPryD%n+&wTNIXWz-6Nz%TcnbL0?I^rjETkD_dbss+T6Ro;*f%(QQ@6tEaU*qj> zpB-r-6Vn6U?v}^lVhy+$k5^L@(}W4ui4uRr`bnV#lCVe=(nPkZ~?pOR^{ z-=}B=IaT^wu6V!SG}M@0nEnMzy3Ae#p+>yuqM4|Q=M2*Jdt&WgOYccF1BV*=96}IQ z%qX6S`x8@xdUe62?$fP5GP82?v`W9sj~MLZN6?%_M*u-!WH>9F#a7UYKN~=}9DvMT-&DoG73tD@k0H$ppa`&v$>Y4*LD+Rb!VCa#H9)pjq%2cn z%byUxASPCC5nN?3E-)#5C<&s!K%D$GFt`c4CniR$T9OMJMNejmbqx2$46&CEiB~)* zp;L>+fT6hcU|gkbU|7q<7{>9UA%Jz4Sc5CY=#5Hp(Mi>rV~%7X-pFGhnrb7ZaC8By z4;Wh@01Q~OQ^U2FarrFLK@dq_r7`lu^x>Pw>?Go!N;ChVJQM(>UO^C4;16c!bE+{x zQN0H@r#>2I2C{BrlL3u>_6mZDAdUcK&KOkrOUVoXMFT76d+Owh{AK0c?tO2Te6Rjbp}5oySk;A{YBtZN@yo@KBZ>n@00SMV~-C)U;__=NGQ4 zkt;|)!CV16uCeLIS<@qaDHv=U#{d_ISKcm0C|~q5r~tT4e@(B*7(9|rfL~UYxV5N+ zWAJYJSy7dWS9b>NKS%r#H{*wvia7FQ!G%qD^{BEa_|e#tGJ;w)-H8LHY35kneT zCP)I~#mK4^+xUwffJy@11DjI)AIuLFNaV=%VCrD?0CMFe0qj*%TS-)6pZm;xUhhzw z-!sTgxp{5JN<7c?k96$vj+}iK@roI@EP1Q(wkzMMjm`|Zk2P|c-1!}Bzzi)M4x2Y! z_F5^*F3^W_K`!#detgH5^`+%&{gIg=u;b@$VsJcL24X$ZrG@Q80KW6bbsj zA-@$sHa9G}S+A|A^STDu(`n0eYz(y)JKLT&V~ji3yxq8K?aRHVn$+w%?|9cU-ieL_ z-h-#VYuvT?9=9-|b|>M^2J9G9#-dt1sAidl`;{ZAlK@~oZ@3*rUtfDe=#5vt*&Ur6 zaUVJUD8o-(QsN!xd`zpaxL#K4)sn3n`baU@36vBH$Uzrs_F5*`OMV}Wo(c=a

    Kf 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 literal 0 HcmV?d00001 diff --git a/assets/assets/images/R-C pink.png b/assets/assets/images/R-C pink.png new file mode 100644 index 0000000000000000000000000000000000000000..4724b68e0ff85525be2b5ccb7cc3428bddb664b0 GIT binary patch literal 167905 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�k0kWG;!py-O5_2ia3U;6)tsA2xXYKqkt2UDI zT7Ymrg}$pD^|KnrzTMNX4|yRcqbJaUCuaWy!KvB>x&VtqF15gWLDZsDCY!ut_F9sn zkAk%~rP^9*B6U^xBb4(z-s*O6$1}o_ax%}?~vu?`d@QlX*M*EtB zJO^n=ZzQTd%=sTW-hNo^N6SZooYM+mMV^%!HXvLb7S5Q4zgpLDy<0Z?$Tf z%mcGnok$q>;?LN%;$_rMf1Xr49gEA)!|V+Oh%e)J8IFdP11MYeG!BKW$Be*gEZ%eq zW^RhKB@(skuQVJLPK8%z(~KBa1wi&eX+B24yrt%&AZ^H0>X^p<-Os4_*nZVypnRe(gS9;Etd!FA=GfqB)#){@K_R%!AD z5wM_>u#8mYhL(T!DK3OW3gB88jAl+9rbEK)Mc3kBw+l_ z$fmKp1p1t?nnus?ADTCco?ts-eAAT{ZY*9yDF!#!U}&d%X^=hG8$T>)_FNy>+*ATZ z$O~=I&%dG6$IUhzO2w=3o<@v}P0DzyI0K3AbblI{b#6&JGQ44F3dd|D9%dIlEW+cV zPC5HQb*>p5Z)sG7NV!>S_qg~ms=s$HD#u9qiANFb(F7a#r-iekSe?zSegL^M#ed1ln_(V8~ITN8a({DUJ zij*64);2=qbn85`;WHH2s0wQT#aH8$Enmf&wy$F$ZpIwE6El5lDI^--trd(NYnKGl z28mO+)cgvP)ij~wAT}5QYOJTK>}eZfDKu%Ua$7MF+aZ2KPX@4eWi?6`JVtfB2I*ZV zqHx=(n6)tyBP7bsrA)h3>q*uxu+o@=xP1&82{wuaO9U)ag@kzg;XxuVX!e`ddeHP% ziHSPjwAE_pAqLs4w~Yk&?&RY*{(c;jh`mf254q>zReokO=CwLv)nPoyd^GanGr7@O zn4DdnEDW-dt%_DMn6^Cu%WKYucA(jn_za2{Y(mRI`p0L<+as}N*GVYo)SiW%*qrq+ z%9iX#Sy3r9=qhTFvyinZ#aZ-;(0KB7N%x?84iHOfTty1h)&){RY%K?QDg>wr+dl@# z7BUGU!WVuodC6fGZBB8b9W+=5i)z}IQ#9VkbB#u$h`6$m|>eiJc|8) zDnU)TjOtqZLI~jpWIgthIto7O?8gQ}8K%xZ_tMNEHzDV{?xo>*v`rYv!6bGgd~`IU zvrSXFXZtkLY$CjTJR;O7_Z6J^74?1|K-(J{AN+a{DKojpYPCOL-|rtm?O)wXd;)pb zEyRo^>X6GsbXFphL2Cy`PzP3xI?Q@!#2Fbo0V3j8FkmAkeuw&>{RB04)}ix2F-F#z zgK@YLYu+hC`5}~;kb7jMq@2}S#LSw_3n2v%|sYeRJOS$YQMYJyo|jG&y(U)v7-7M zYRB1#WQ8!84;)-pif*2z1>1-Xg@?b#6R)6e=}>U&;5}1DSS}R55sKD`OfNhe(ekjM zPXdMNIR26F^2tr}v11&@Us^>-fzhmYRk$)~DX(?NY+(y6u`(Wy@$UwN(&w;6^`%29L^aOUvmFvYL3$qz~k9cAeprNGg#NLArCQ^b%%#=4h6&04T{x^b+- zHog+Xw{XS;!V~y7X?SSK&?prl)>P_L z33BwgQf7zf&5u7 zL%!d7DktKw8{?6J7$&tcSgU~b9dnl4TSXZHTVBP`*g_pY#h&lIfCJBIq{M7Qr3EmR zVh~OqiDoE*)F=~h5f+_yKBC98=gB4qs_czlN9~Pwqv3Y<)=@&YZa(>bTsGzAfn zmS?2*{K`sdFit0e36>n#I7nSHxg^zu_L!4csrFa;h@N%s4IV-_wOHkpG;0-xG%T~H zyQcgCrTGt2fL>ypQnB#hWmvT7WTb6OwCN^2)Y$jKmX;*E!s#6**gOQ)8TvgoM~A^x2awH<5|JOrKONGBl`qEx^Hmt{O!;PZUFM-Q zS&b=ImdVa5Em(PKdF?nijQ=f|;Z%O}omLXBM!`&{*1NQL73Q~{MValux;YPF$AX<` zCJjlXW|mCD%92yDcJF1>fag*_eTESj#WYH>$kK`c1ER`)Wy9MM<(t79GQ#l&8AghU zLx5r%-c$JzSZ;K!BZX~T-BoK$c42Av2U4`E+9(!b>DY8)4|GCj!4dh;ZTnRN_o4Cb zAEN5Eb?6@3j)+Mz5Tdyg{HC+%0-=HMgjA+q;XU_Wjr5yON5a_3ZI>Y9$}5pMwzb;N zuef7c3A%(KhE4TpZ2CJ|FEdX=(!3NB`RXv%rgXC;NF(-O z0>{$Uj2BHI@MJG#LkcU9B$Dbu+wvyBqh)0`%9gG}dG=q}{HtJ$mSAb+MabK@3UQn0 z4Kjs;Kp9|G62vfP#|MII)xsd@2kL8gw@MFW9o^1?*g~2Th|DY>6fyd25_g zR#XAd-yZ6(Y8^`R)%ECz6ctbV94BxJhyvl3p~R3>#5D6KS)X^DRvH`WhvXki`1qk@ z9=?Oho9;oy9Z#d()_M_+M2^MSy_Oo?Dv}VdDPxStXyA=(>Uj{oV`~EoUqklY zs}OdYdwEQ9oQ%Z?SxX%_c1V6p`e z^XPYe9QmKSHJJBp=JBLP8}M$-`G_xk7;UIFJDbR93SCLdjN6mMLZA#}o$IHbJ4%s~ zQD4bq#!mVTDA&4~}%EV~0mdl969GKCbEvP-KL z5>!a$v2@vDL4-OAYkeDyY~{b$&S)>p$8tqsqxNjJV5-jnZ}2(c&9IwQKhtDV;ZoUC zW3!bCiEt%m+pyE|pwrRGv)&k#&?SgGkzch?Y0Pgo`nnv`h!Yl73ijK|?jK~$$L^T~8dM$8*0;RN5*SVf~X z*ztyzu6zyywhpj|KVt9iH;kLE{2}Cg>a)SjTii=rirA~JLCV;*;1TCy#4q^}=6-}J z$q*=6m7G32i|S|Z#6BApA>8RJ|KhFKaos(rvNcIpBjtoEG4q468KEqmzCL?)iK>b^0qiE-nJ5JsxP1-mWlluB|(;)%HN)8OWzZj z_iJfiHo1&~!vd5`XTf)w0jzZ>nN*03sTCe4;4@HYm5IubWL6y6j2%pq0R9W79I-_` z7h&^1hK!rZ5!OZcMa=vDeOUX_4aoVHuItcWS%!v6i?lrCw*^y{Q~*fIEV*I)ocrXh zV=>9!{b}GQrT0wE(Fq9nWTp0zgr}Nv>*1&`#ljyS9t@3OfZ06JHXUys+b4C3{SXy* ze#O;b1pt*mYQGU?D&oe5Y}|&dyKcukTT(6!F==W7#ZwGIC_Y+lPy1+e+G>}tp*@I} zU!vtZ-Uy7ZqUyREP;$+q<2w7sBNw?drI|L*?J%2^n)RBgBuvEuj08d{6ci1aB2+zl z2lLcmHL8+QBM|9Em&RZ|YS$$gpi>Q`*93^fEi#|Pp`VQrZDFs??FQ0;{YwvF&x#jO znf5rJA3{?530Sh}e9YdMg{kEf#)WjVdMip7K9272R!rYJjbuC%F~!U<>H<H zIP`$fGp#>C$%e0kzm<^;m&$?)zZK@=_+N(+v6q?NAz5=XS0+s@z^@jYpL6&1_2pnYi&kyNo#w#1{bWG#wnE<_?` z;(&i6o}c#!N(y$Na&ZH?u#e><9@ENL2higIjnrV6npn!!MimK*QA4GAdqPO)KI;tA zfXzyv2v7*)W%g5LLZ_y*@b}m}d&tpHTbDU!(4> zb_^LOXd=hwu=Pp}1#@P%68x6dxX=fJtRSwyY#VuXEQsXO#x2yt>&P3BJE6ny0EQ;) zHqWSQc(&@4qoO|8-mJc+>AqO9!E2bDk7JmQh~zKgj9WrO11!hgZ;6B_qd|is#^HMG z`RI)(|EPP(n%Nh@nkqylizx_;4n-;h7{hFgWJdd0{Y}M(vFa09fNfnbOg3*w`_=HZ zbr?QuRsIzSJ55~(0~8$zp0oo^dXO-L)v0<-GGdk9EmMRs);PPc>U)L5Qd(^&KGU@b zS?4xvGE!Fo;Z4%7Oc8$c@p~Bu&cuQ(XCwX9OiVAO8-90SCdqbjC$*4QP@4TH!`_6n zf#oRNNv5Yl2|fNm0dDX$o8*(0ztB; zypCjLJ!>bBvm+H#TN4nN+JU7+qx1nwj^TV))TO7|M`e!i9Z;=4(k^` zj9rWOpmj0*j3j}xC6!z!ciErYaw@1Sl$K=d(_vL74MZuc)vIa?O-+^>n*ym!zyyv!H!ClvmGijWGDVL;ZxbYEi9?~zA zr9n&eb+Dd`WBnXdn~X*FypDDDp4CsIX3moovNlZXFT%p&^D%GB63i}{ibz&*!z9c0l|86f zy%}Zm9wl+tnaRP-4iZpSH61Hhkrg$fdo~MEACR;q4ha?f77MGsXU$HAL)Qwv2wL0T zYk_vPMU9}x!J;_sIFA2aOeSK9qn#;#B0OE&EfEZvLHE>XvmLU@S|aM{wG@78y-E9% zFiijUXCK6Y#qBsm&844YKEU_#OXeeg|5+?i(KrzE3SM3GC~B5gp(Wowha~w?oQ7q^ zC!w%LL)da~5F1Uaj>jw~oRllc%)#094&m~iX~85Joy~-&a%3}3RDKz9hI1c^@o4ss z(98C3nEKpZ$eH9*opZt(#Eq?}=;6Dlx&A9CyXLR%v}55&opa?lRB3i$21=cTDuZUs zWVmAdiP(lyJ3fb;uRE?S=&XVw$Hwn!W6^J8&*$7r!;!x8X3-)ZC2xc>ws8p60;UEx zn-9lyL`|1HR2klhVVmZ6ES!k&33I;x9?V8amNxJlK{u1Gmw^@qhN2pKtN(~yzy2BO zz9)AlBJJe&VfqKBBZd?PybJN4I13r)U4!iF#@BQn3XobLLhV6~+1s>3ML1(7?IBLe zwW$$gJyy>e&*;HA-lUE2p3S~tvql;&9a0dP*?};Ive9PRX>lEmJC5c#hIOjm?akx` z(aB_QDq_QKeI@+g|Zis{32WY?XI1?$g1>c(`$Zg-aV?N~d6(OHhBV;wP!jVcfc zYX1xh>oWSav=e>mxKj}H0X{RslmuFCC5JkkpxUU2qv5sK9>@PCCJ?dmjPSJPoZM*el+Ls zKFh%Lt)W;za$Z?-0W!KyqPrk!5?;dkg%6>ua3@L&G_>EO6+yNlP0r|<)Fi*gz(>ssMv5dcD_$zh~@6{KF;gINmap-^yMuQ@r0=gg=_Cw+PnK>L4>cfte@0K^n2_{u*oE zPnnh?AX}@leTbwjGnxD_F`%*#LxporNfMS9pMYg`7a|t(&`uq4bLJx`Ui1?7Ej@^C zYR{4zAKSr6rJ+;~8t6qh=IqTd`O`N=qAi+vN_E{jsK;QXg^GjDqj)~}18ggDR)t)) zeI-uxea^n=ZBQ$Y6tTBzpF2j1WtFAlaGZsNcixDc@3L_ht?O%%{k1>glue&SwymBR zgOK<#H13iKLWO12tq@FGS7exQ_o4m=_oMzUx&K$9o677p!H2GqVwQl&*C*k4M8~RD z8(|i|ku@X!2Q8+ZdUymie;vP&`-RB3xbxxdRhnR+b|kOpTfSZr=9JK+!RfO zw!R8bKwm<|+NV%E=Lr(>K2~no$g4UBOE#T>%#HIfV=KSUhzz6v%`5s*xvUtaOP;`? zdBYY)jd-xbD|CeHXtqc^&#EIdDZ`dPVH_b(xKE6GbR7SOFoDkqT`RBq zS?TtYWJQ8zOJ<%c6GgISl9fhE($N%WRm!FX5+>_(WBUx!&Fpr~C<;f_)K{==`NP<= za2J}FQL!L3gi__2xz&fvEd^LpavD}2IG<%Q$C+Bpe^bfgn!PE=|3ldA1WtAn229O< z6&?nC72)nHfw2W3nk48^oG5OC|ffFEKx)J2Ag}6pf4=P z^p)>N#;c(D}Nih$CTg$JiH8b&WRQ zbT4HeX=IjDTpWBH`JY*i*=t$DMNLIGHQ_|oY6(of7}Bsauw^ZB*G~6Q9*%(*G5B~T zf)f_|5Y&OEX3hZXT20^8l6=KzovhhquQe0GQdR&fE3kXb6WE#l3`w~Hk-;3~ z*PdzSh_p@FNZ7*IvZ@(jlg&t$hq&KJR$=9}QcW6!G$3W55i!rY7Q*?xP`dF;_T-0i z`!F2s{&D=@fe|eaX0c5tR%ffVto4xjE7?*Xga}qs)FlHdD^ZjWxf3Mo>c^0*ODmSV zR2FSTIJS zSV3k46_W-nYOGp<|1}6p%Sj47!74nJ^mVjRr;R=coLTk>syeGMGNe+ZF%?m^3-o|A zbw!ZSHuQgYqxPq+pH+E%r0SD#PIN zua!#v7p}wNuQ|V7!{l!zA!PPKM2;;Gq_vKvfxDN6OiY>3`e&WjuPkvdkBC4p5Rjra z6;qg#4kmoqLj-(NPDa+rr(({@_haMlSlif+7k>|wfbLJj7WA%r9__Z)gV2Wd&H-k} z4h(MkGZwrO!r@e%B+qCaOYSQWO zXVqY&+&mqJlM#9DRXF8}e%9vAb9UK^P|_GAn~4=MNXDroJOxpk1yUj?Y|fQ*VRg#+ zaVSuVdi(*~^ZtgWtTJ?`4p@p$+XQqbQ7B2m8oncQL|*+R6v%K2a|mMV(-3nY98nFu z)M(kZU?sr%1${GuXisZHQ)&&m!fSwzPF6XYi0g<)M_Pwt(`6vM)wIk6!9(^lD_{Jr z0%|18-1oGn5LuoW25WukUH855FoK_S?>PQ%K_se{jghG<2c~dJF!fw{t9<0iBGC3-TN&@+QA zJrcjn4jN4n-JzwVPNGaFV$Y1{Eo|~{h&o+v;|T~2hEZmn4<8J!#}hffHFIBbi63Y7 zeGyZAGc8COH?KY(nJHTOwxDbFpwqzQt5Py%G|oZ1F9pBGix0G8bi&B2Vsx!rhqk8= zVRUQ;FQdrPJP~Ig;mS;3MxwM}bOjD@Si25+-#Hb@ z7rl&Dn+AO%63#sVGfvaDbls0&&n|Qn4^Yi5A8;a zDT|hOlM#!M_*+9xyG6O(i9RO(KOb8#^5O&N`h_%B(XIBp@TqR0?yBWM2GNIV94g(6 zdRr|10?fSpO3eO9ye(6r-qi53)*y8)8~NwWhhK{|Ou*?#Jxc;0LF;2OsuovMs+WS4 zz?xk)Bz=ywWQCw_Jd^udYSPmJAZO4>3&?WRiI6ic#!e zRgJ0@wN`K}jLadK8*CzmBEV~tb3PO4nmvv8t+1+q^3XOl(wK~dov7G(?6>?mPQd>b z@G4fpOij!;uXQ9PLY1&uU>dpL5t#{(-0C-(x1TZ@&fgl_J46Bwr)O-0G*Kw&K5*5NH=ZTt6&6$OCfw0GCttk zIW`#H=yZgRX{G9%OGRAln4MbV{Pj&Ho(zlAFg@aHD7yFEKM- z58p)9*g`%63H$FJs@sYF9%YYh8RtUTbQt0g9&Z6>s%VjR_x4f2GJnLqlimt)f}smz zSXYsANWn5i4>RLOm}TwE$|t_|M|A#N?tYAhJMTov7azwytGP73Slq(Q8)-elj;tpj z{{%l>bTfmkDNo1h=!#^DL}7;2%O<&ucRvNKKKMs$kGl!$m)=8S+-2s3DF>)MtfNpC ze;P$y-(aLKMYu14X|&IF*3isCUfrsp7B4SGz7Ye_$Z^^dpj^P$W z1!9EnxUE8qnFo)6$KN}S|GN-)xy_EG45&bxX+km}9fpwEO`5RT zUU`;#*?tc$8nh8TagyuZQ;@eY8_P;g#|dQ@BCCHD2{IfFC`0k=$MNdo$52+ZmDg4F z@z~yEQ)0Ajm%`FPg+m?QFXB5WF5GU<3bvn$)gd24m_Ll+9x+Ya?8S_T^|26|w4q-L ztNc+MJ6Ud|L0pIhmztw-pj-bfn0L>3)4=t}|K__f=VKZrq3d@c>*FzqNVWnXJ2j=< zT9G3>^HwOPQd535=T4M=M(%~D(ec1e46JuA|7oC7t7ZG$D+kK6!w?QXvyEVi^kV3B zHQ~!K<2~aiQ2ZBCZuu~h$Hv*^!@uMm?i#@!NK<^}aAYGgPm?oZe9;VCBooYO(vL9U zo6-A<>r6WG;N58c8g)#Y8TT>gdusB|zFmBMpm;#Y9$}acixMje5jSA%G;DwKGSeD*Z{NI%CJ%7P`_12phg7AB+-ltJU!(W99YmyZ6x^XJazXts_ zh}D=QK%P~jLs@n>Rv>ZBMqF=Gj`MK){0j83aq`BYp=n(hZ7)ZFwBwL+1`;wpi_#D2 zTKmSybZ{5;d`*NYl7268KJrIY-G3@(p7l+<_m)s!tRpoNnBV{tx{29-?J+pt9zY0_M9q5*^-0<;@i-mRd`l=aVaz+ePQlj5 z373BDtW4b&c0D>4(Ju=uR#t4roY`fm36qR9*mIb=;U9|bF!B`{D}I{9@vgeBFrc9< z12?%6`x-urIbYF?+Ha!b1`#Pg8xjLw{Nx3Gf+1h$$5;ty?6P}LG1XGF;ei{bFo_t` ze=L~v5y$d34{?jiag!}%o*4XMQoC)5e*{pKkI`98hF*-kX`8Tyrg;P`d>;+Bdju?O zL(hhtXx`~*tjP$Ssg$Pf8=a20G_A^DOG!%XC@~_u5I%hy=8g?<`!eR<^&RBj%X}ks zX)nC+bFad*PkGmqAwd|{Op#+<^WaTcMLKC0FGavU-j0V~wnL75KFF{chq%X?9OVg;(Sbmht?P@D4*>S7*Z zNOn=6gQVs{%sq4t=9OHCyiMmJYfCyJTbP-$#0ZpI6&m$$i+~jo>v%Eoav;IArW}8p zZJ1}hBTOLRN$2DE_kprg`7C19UVlXY4+f(kh zfP|BjCF6qh&k%+ubyoz=XuXvRNGjzpz(f5kqFVK}xB|&QStlV$NaZ?$E#7c^0qz{cj zyJ)yS4d-IomE(t@y&tL9o{YGQ+)GwRzNyO)HMZM_K(D>zJtBHAWaeG*MifGgXO9?5 zEg`A1>W^NG{=+-w$h_6}qkU|PqZcvs__uv~Zr89j&3;q%IP3E|&qGCi3=Qc}l|O|8 zGb0ej8fSDc2O$e}?>x-8@J=ka`*vg>HV9j$5AAZSWichh(lF(t_M#Hlmm{Pk8 z>6^0=|8hJMcaogz>5j?XJs)UX(Tv&^J5j#kW$aw^1gg>=W)ta2rgtZ%*Ct?QaXMyh znt`NE)StI9!)sZ)v{_IL3eVWVo7MzX7eHhT_AIf>R4Iz`FG2O=fn%Rus93UgErH&dwYI3O8IaCfz1Gdqq z5>DNBU}tJV(bS$jtzBhECbllLn?I~?+`@QlOocCDyj$%**H2B$c!Wxm2wxMew8Vfy zvJU5!Uyr;yJ(AUW67NCg$Ho(J5fY115iw>qeE{{p+>EZVmbi9l-h#dt+)D%fwu<3s zkWy=5;Sq%}8>Z%^#{|S+N{mwDt9bVIZdEe>0vyuj9Yhjh6IFK#rhT&MqRiZjLycea zm48w9HA$leZPjh)@7j&gExJddj<_F9KQBeQnNFA+7C|8!Qz&Jlq|kOp76dou@f65R zpTz*&}0TCkg)OdgG1_OoWIH!VQbgEZ8L25PM=B)y}pXpP^( zcFBHLx1mTFDnQ2mlQ6&d5-iwwHZnJ@!0b(#n7%0y)64k|zcsjc6s@Z}QMa-k`&QK9 z;JhYur}VMmMG|iGA*OPwt#%bv$M{m;HrO%Dzk= z8k(tfQB-bhIaoEtyT^Xf9bpLGR(PBijusQzov<+@bkYq;kTo6eHeTZ z-jK6i1Uv6T?T@sbk*&{xj>43vQ6|oa zZ*-VpX0rV25QpdlpO0aqbcqm0DNzbQGg@1;Y^CE0_&Hj>^G)m@oBZ(wlwSQ~?D?Md zn$tB~^ENw0$VGgCGJAwVqU;xODPy!t#T0e2xizILHT*|cQZEIwVbP&I_gOPawY7~Y z=I=fcyEIVx8BT$WI7mMzl*4F1cP`MnY7k8;TCsO!DRwTUu&?|p%JZH?d%`9R`1VqB z2q11K2QvYURU;YdU>KlxvhMJOE7IZ4IGG@?`H z2CES~Vh3U-;xc4HP-mFn`0PYJg0!!1={qCJD9Vt&CbNT|ZF0;oJlrX^(|>r3X(U3BW@Sdw36B^KQ93bBmy1tG%gruSlNNSt17W~ z?K)iEisT}hO*JmhIT(IFwHd8w;UAzNzMf=gXm^yBzG-!uxd#HGbUSp6lCZ7ZJQybaZy1^_va%W@j`AnT~ zG6#AZuvSMjqlC&GUk+z0R8f#jOPNtPWsCMx=$9Z-^Q$M|9+cnlGwl1;i>QA_*BuBp z{}#1B`yndFc<5WG`0U+y;$96OQQ7v}^ksTHqLBMA4O86Sp?^J8X^2v$*jOsY*X~Zj zFh+)?g)*^}F2@Ax#NuE1>P`Ffup6xtrVZyKc~L6D#+H}75LuVM2RXKDs&FmleengH zwC&ZPzjF>|y%UTX~b$$vsBAeL3g1cBI+O;W)v3s zC2m&FG)2(w0Ka8nDW5DDVPeoT30qcnAZkg>zVpAbsWckAejFmKIOG_zDW>xPnEGZ zSwqApIWqatb3)fvxsQ_z4TY><*^j!#jc8doi0(Xcl&Gnd%0vT@OqC{STO`s;Qn6rn zHjgD(vi&qR|JlUjN0K!vmGUNT4Wa)U?c*$6DQOj9lS3FTX}=<5r}b#MF~i|f3j-BF zozOa+>4z0TQ%?`^M+jCRZI$EjH8fzfRud`Kp=WH9PYpSfNx{7|{24XB(pOY&$Lt+U zJayFNAZ2XP_J1{48TrLCRCd+q^|ELp!uU`+9(BPZJ|7R|{dhBh@CzK8u$Ye)Zy&$S z(H~LytMB;sjO~P6jrQuVqT<%~0Lw#^b?OzBZOIZ%1G~dXmA=@;m}cVwuSEJs-i5S} zEJdni&{>GQJP*_J=3{!nk!H)yK+;Sxl}{v0!4!F^w^%Z&Z3WeYQpQNr)mKfj`2DeM zjTi>q74fQ4uzlw!AbxAwv|6vTe$g2s8B*DbHTt1`MF$S7If&}DrKno^Dk@ezf!%BW zit71KVt>+lG*2m`%l-UjD5i{NBJmJ|=@O}$Zo*_PwF2luGHuE^&$0>2@pvugIR5h> zf)%tbNJtx7a^$Mee*TtHp$eJzP3xU3I7fg+QpE1j*7y0CzjFnaY&;9gN-jlF^?Ar_ zJ{i-8mtZPV=`z5Qvmedj#i*G69QJAlW|pS`*@pR4a;Sch0cb=6DUU>KS|mO%PWTC$?z|iIw@*h{Qn)3V*o9G1 z&JfZ^x1+ZBPSjb)+(S6u?+{+{m(NT@SVJ3-WO%XIrxYM);k!C=% z()cW%PlqHKJd{b&eANap^-^IFvl0@135Xt9hk|t8VQIVrW;XV;;Yd=xQdPF*F~f?mLv*`4w)fT zP3kZOgs=*qaD?5#aeMH84osP(ASg>UN@9fa5^&8{x;JK;a@`$^jQdF5+AN^OSB3*| zn@~LaDQsHsAT|{~hFyzaL`4xvcVQKpS2W)+ba6OB;SZHoI6Sss z-M1pxw+MJ9+&bl-~Yz-<~g07REZ{ zJR~9}RxCLZ)?-2`O<4Szx?71BNaM#iSO zn6+*OrjW3$-r->@piP1zFHP4YSUFWVtzPAQyX0>TQ#(x7kK;cIvj5AHHcArJh)T(g zjgoNl-K&%Zv$I;EnusZUZ-6>O`y%QGY@83r0a28nh$bpxds%LFYIU`6By37R%H|o! z*f z*HJNKI7QZjAWuubx?nx;f(UF0kA%31%7YTK_)_$Dep|8*YjB{lw`-5Md`UK+Ne?`8L=fxbE(z6n?s zd3-~>_RB>WwR(S0^rD5))yMj;!&HRF`q(%z@>R|%ddxIwrUOi1$JLRcHHEu^tfG&A zcqAr>%!geqGmKSfJO!*(y9!W}B_l?-0@=@GiY#Wc1+j)o zau0%xx(MC-+|gi8^m$7k=Q@nd(r}i6Fjhe-jLO(?`FtGzL6BZz`hnz@B~+thoCfY| zIFkA_nT$nzAuKqBC8uH8*7LBEN=@-w9PZ`%v313 z7HyKlj|F)i07S;=$$ zS9w-wHlp`wZ4T->(IXWpe)yk@5mhq`OTby_z6 zt&OzA=fPOK6X{^APn;W=^Q4WN6Ug2$N$}QesUTAKs0n zw&1(45}~Kvg3NDcz?Z9Q?J4(Jq~3NW!(t95K@A=WgCI4+*Dz~N$&gmX zSGMXxCWUhlb-CWT9NAZV5}BX-1afT^q-&6M-L;r^%h|{{PuG(XrnWhoHogR4`lc|n zFJ~Od+!7FNr7!>02_TXRm2|Snq9HBnh*KwS!cNCB7zM zRNbv_%?O@`jDsg3z4|od?KuYpyU#=ZmbYQvmdjDFktGewNc8A}WI7!MUZx6ZJ=#75M|sF_rH_lP-r9RCTBIC~^3!ZiZpwMIs$$f#&b z7GDo)_G@gr#+Yj(fC%c8Qz(NGJAi35EGuj+CT#Js%tT`5wn!vzO~R~g$w+C=G|e_l zQ&~P{*7C$^xb`?ezaleE(mCXhcM*LW($6 z$D9HvkcMBEgi8@9uGYy#1%f+&h-TaGN!SlmUpH>uh~6N&zT&I6@lo{sLDw4J`&(50 zD$Dm=+}&usT^(0pWEZm>d1S=4`5^iSpF^J+#do85$8XU5ix;rpMqKR1q0&E~;TKk| z906K@M{TCqiU_nN4clxpbvbIm5X&MFG~Jnot0-%Lx4x~66C+a6hjpMO*s<&h>{|91cCY+1_N;sW6^kCmj=U#P zo%JmC&3PUTshhAbiGrEVa7lV8D~h{mG~>j?G~`J+rpxiUq3H%_+!hJ_%XvtC8Nn0%<)45hV9BORvHS zA)luTl*AGfZVSyzGash6GTRQZjH*03>exi^Q@&d<@19#Q?}yYqtR}b$sn_0w+;3+g z+>|?=zlT*nv%UEVv#TnQEFgYYEB-!~{_$GO8Pld$BIeAS#x0RadWifg=GzV)9zI3) z`o4RKx%>{@jWGZph*pkXa}b_#8{%5i45Vs{{G+;_3?J154SO4k z8N>*6@*#DiG5WH2`)tWfWeUO6u-ekDluZIS6XBXWE*= zp%j6kUJ4HdF@i}S8ltWFnb(>yLD*Pck*W^<)}h{PUp(KVX6{P``lyv_X52`ks|oWx z<+AL0I%MP3naRO0DU9;j38n6dn8#)uImvY#{~y5krGxqJj*gWan2bpVDC4>oq1hgU zlo_KlR|X~fTEss)qiSUh4ixRj z{^gCRD%4OPDJ~>W`lS&)lF^_${Xw%_ReE}c+OZwq!qba?j_x9UzZqCvdJfJTzQY+~ zOeIIV4J*7I?4G+xqRxlU611te%MHiPIti_4^`;c#pE3;Wz85q zKwtThF(|pmUmu21#gu8Jojr8z7U$OxkC4Q6+;K<&zbyEZcRq-kKe~_p>G&=R?!7kT zst-!@HA}E8{;Wwwk(c2sSN;_}_q$Ht6oU9hP)kicUwD%dq7fA{TLOB*MrYWc>`x*z zP1lxqImFyYP5wbt7wkl25>vJvNZqjrnRpvXFTx1=#bq}*J1jHh)iZs{X8K2oKQy{g zF<@@Imc(Hun#u%~9wokw!=M|*Ry%8z@{0}pEf=ysYcYF~t9o;Vg>YOh>)vtvd&A4l5UoDO4ApE(Z9Q-K&ioePD$hlX8b|E! z;XAzclNxm2v}dX_x~H-b-IYjLldNi~EWsvpQT9Savm^^iqB9FlA5_^`hHLGE4`$qm zVJQ#vN9K*ocYK}i^`jgQp*(*(e35)cEjPDp5w+9H=m&4OP(O@Q?t=JL-i?S9nbRLt zA~LJIeaF`r7na80;mcXR4bwlEjOf&#VBa13bQ1ijCnE9ehtYaJqdBOkU4rQ!_%l9z zuTKS35oZC>_f(cfNUu|IM-+psMy`t4zYG^6=d!o0zceP0m)>slRif8jk5u&#MO_&2ovN{`jSZ=LQUd{sd9?Gc$M zUUy^8e+I}L43II7;jkjhKv|>&Cz*~7t@)s}AKXhL#4E;4C)O0>+mLm)dufFGP2~P) z2}0I-*Ixoy;$#P)bou$UXF1*J_6F?Vw@D{D2vPSZOdMD9nvjwN?rhjg1O zehu<(_$20h?j+1IKRt+~wMNBHvE%M`yl8@==8kGxSsk1nS$@lGSfcwd^o;IAam3)8UX=x5PA-|eKkekP!~olCb$5ETjxBi#MTs`3CG>u?}TLFJouXdhA&CGIkWcjLnN*;qzDc`~_^|y*;a6LV3;$ zq(_y4egsnaP06DI!1L}EPokf4oUju(al;3&0-vGElEgAc)rN|T?VHXrB5m5h!Z^y> zLrR2Q@=(#zP)l`=Ywg3Mfl+tgIy$r!Z%DZ8)cQ6tqSTF!Ld>Y6&X^lf z9V(V0l)v`l7|2FsZu+?8=4K;2D;x0>mY<6lOJXO@+1OU4X&4G(kl8cRgOR=|tPh7r zU4o-zc})ks%x4h?Fl?hRx-r=IJJkQY8lBa;*5;qTK>d$HZS$7bz?yDw7Xn*)5$GCX zl%*Z0i6#M+9ZP{weW>2tQ8c3x-@^7)zeayP!`uYqY&aK71K(iHpXW&QxEXZbY>FT? z4P~kpb+UCH zEmJVP1h!LhVkPVT-9U6L-(!i3(~wIBK$7l#M?)*6&4$(h%S$f6>He=HF(jAnq~-+R z4|4*e#d|~o*7u^oD?IkZep>icsf3t5t6e!H>=QvJA-7@PJ=Y`q>t4s)1xUQ|4ix;i zH+e(r3x5lXe;IBcP$Jm~e|pJq@DQ)aEomTH?mh6+{Qu8}^9iPmqI~!Vqu`I}#n-x} zvR{s$z5PMdTIbil0zb!+-@hMMyi@imODsv1F^bkUzW0YWqtez76*Sasd$ptp4%;rFyM znra%GSi~@CHk3O1R8h#C?hP}%`nHlrDWX4;Efpkl#6tza3ZtCq?EZG^)G`x=_*2^*LLl@)aqCFTa zz5%)4{UFk=y#uA6{xur!{sb~^z8*_&pN%E_W;nl1&sp|Vb7)7LKD4mhm*aj^{pdE7 ze^UN_4q4w!Kt$q~Q2JqAi^#7>{${Ee1b%;UEUq*vq{<43{GB z^1t8%f4U6+Lw?=!fSXOPL5&7gMIxOk?%d{o6$UXpVi{*#sw`u4L|i=Ap<}N(axr;? z#nA{@kdLv_gn3p4Y`w-3QtHi{=6)M{SC^un*E2VzVAZZKkbtkCOGl~phieB7`Oh>l zmJG3GpN6ifNfp9Sc!DoY)uvk#Lvj3_0$WZn5YI5M$_~&=Q}VkREo!}?WzGUBiCck` zO%aHqo=-0Xsl3VYYpv^#=miMD`MZ1lB*t@a``+iguxL`EHag z*@*I$n^98q3aVDUfL$q%Sa}Gr2%5IdkBZR4+St_gQE^d|-^_}-?*vrT?vxnb*OcW^ z>Zoolp+(}=DQC>ZaH-QdoXUwh?A%3TC!iUl`!}KSg|DORvm#*KdmMFt`W~up`5hX6 zrtAAr_oKg}^1flRu2oiwHJh0_Ga0nbMeo;8{MjvN8C$gdc{Dy&hBoT|4u%mNI*8t} zIS@h~;wP+coPqFMChb@YoPMiLQf?d*PL<@~up-L`0aKkA@=#~M$iEDO(hDUh#wPr0 zqa*l}cM6a+Hp5O@@cD>-C-coZ^rrbR^LAw2^&w0f+roMxg3wC+LD`w;pGAJaiM)E1 zr)~g>Hhv5__%DR|V=-hV2W1s8qM>@uxJT8Zrd1B}kDG$zXomsBM9!u&v0&4MSh)FO=8zc^K@Wf*?61 zK@PD%Xj4&daRZeF1;)0srx2^mm+5KtIOt@7DJB{CqPzD*{i3l}Vkc>0JtT+cnXUUD+ z-yEFx?O$T;@4t+^Z|nN1;H*!43>lxv!L;019};wLJea2=)*maurI*qUBpezxIA_Zm zEW|fib))uBN@L|Q%6#Y!D?@Y4HZ-NY zjJ>%}qkPfB*tzm=)G8jsz7w8B?V3&4yQ~B)EBBybbqjiIm^neeoDqZ$q`jCdy1{V2 zZoxIP1HW$tllQ#BbsYcUpbUp(Tr7Ns!y>^jj&uZj$t1D?y}l+aZIo%p{|=NV7r2YB z3%dRe=KX9u@qRhD=q|1G;9lY^WS;vsocQeJNV&=k_+%6fCs9S+?;1{fO8C-1?+Vs?~QUCKW_(PAhh!1@*cd8I2pvr9ds^8jCRvmMUE6;9nuy(dF z%7T-PM@E3zIT&N@54~wy456Oy_<7!ko|UXh=Khm z5lG%R9kbTYLE^gU7B)qjK{G!kH!^=n>MZR1>BNR7o~7Y0$%fK)cp3p}aOP??dy7 z7E~|ZkIJQ$*t2X0%C+mu^5?Lz=n-sQ`T*+i1bqmSIvdRvZF|hozwltJiKfhUT1idc zm&rlDO*__1B(-oEI1!@mY2=gEQj-i1N*ks>8gm>GjIjo17dj`H9R=BhKaZ?CzJQ!> z%SYXNJCZ;4No3s23oFFrrRWQhc%>>7l}9bQrE)Gx(+f(2|1HELDn=YP>dYQ-0z4Tb ztVfl2D$_dL+lI;4Ct}K3AH?)AGr&wB?KI3j-MusdWV2;LbykLk;#bi;wrlAI99Z`O zY`o$=)cn}VMW-XohO3bbRkPOPP|JPjv>lqigZf*4gFU~v3Dwq7rx|x&MENzJJIahX zR;s-^%R6t!32TxmgS2YCZvGAMiKaeB zVKEY3NkHnB3~Jj8k+pFZ=50I&`NfwYhZ;q4!y3f(Ea3Yy`G!JKi>~BWXLu346B(-j zxt}xt)j6jCjX-k0X`K>StsHG*PLy7Xm*T_1;A5fC?eS119>;$Wl-CkX3W_EONtQ)k zwwSx}nlhozXUU01L8z#!O>1MxDI+3ZwV73kCv1zv^37+WX!GfqvwkJ!ZZ1ITrZi-f zBw+g1P{fw|R+O{A+Lr8H!mQZc%8BTvqqvmsGn<55?{;JICx56394~I&*(uHXf z5?CsEEZgDX+NZI@T65~7QQwEc8--|7b(_&`Wp_MQApYbJA?x#@2(<;&`T3B1BrduZ zdADaGEMIPJK>j!H#+kp-YH9kGnKp?LMp_D1F9rrL!}JfPAjI~m6SRdrlW@$w`_DqS za>K8sf{#MNydnDaYsIkdhI zHMviqYV}`Hb;2Xqx9U|?FWZIYHT!UAc{jSKg$$(Ir=7yWUvSg5NoFeHRUE_Ty$KokK^AM%6ny`oxQx(HGfN9RE$i<`P^h%a-@u> zyol%`*(%d0%jV_%*tpQTjFsCiLeZuZ zF_)^B%7Hei)zoLnUj)fmYiZlA#u8$c5B@cigRZ64y5-qhia;GH0V}w@R!Jx-dZede z{JJ#P7946Yx8v|A4*m8^*#7YisDGZ{kZv;CivGsmpzcSt7~U;6&FE{aLHBNNQb@q< zK~#k>G&;x@us`KaEV}nnq+V$bh%cewuA4A#Z0(4%k?_v(3&%5jA=-_@y?o2CY0Ck% zmK~#`;ynS%x9{W3d!*cjVydW1KmR4DXF`g6qz6lYEHumrV;a{eSBJL%$ zT;{is_cL|cxwpnJ5JcZ)7%I~29xuX9hk*n@x~l_gu88y{#U|aaK?H2I{5XVay*TZp zq2ClDk#Qf?xhhLmD-Nz{#-UY%=w8Y&rcjF2y z+H$_5v-8ucBUN@3PCN6S3X|4C7G$E(eUZNrGn=HNn(UFxIJwPJvl%nQxRTbEfA{#R?!r_9H6}jXk62W1Irt* zcf}r*t=@uNOP|H26@SClc@JTC^2_L^4y^Jpj6?Pf6&DrKP*R&_i<;CiU{Yjkt0R>w z-ct!u;MHNLI~Ew;)j+3yPjQeuGyKuofR_$-py{xka`?Hx@6r6zC($`JeD+7!_Z4rb znV?R(Tk!Jr>K>HpWG!nW7p?ymz+Kqzt+jYD{U@liZSsXbp!(kLVb9pIyS3=8comJ$ zyO$b{7JD92FLf^smm}$8?oR`0Ad=Bi(L5>?ex*ad?Mmq;!(^yaNr|ZBq>64M5dIZt zMsI_v?hy4N_}!_*JT%;89HL?9JYDL(NVLNMdi6r{bn0J$4Z=5ZnBRGfzy?W;^%)>zBos4}#qZNlyak7ASs zYLG;%plEEdT2U-prZEJi<9`t>Ri|VD|nKFu&w{EZ=e_ayKu> zoLA=}W%D$|ZXxkhkyxa!(T|ZB9ySe2nm`!acr`}kl2M(bq+haxsEkOFF*6@YPoyiT z9O<_h%2X#T7K&OG%z~`#``%LQfgT} zg(?&KF=SPb8|~LXvSEICEqgV${Zq8thI`{50!?#X>P}l0&Ozkm-$lXCrXnm>nI=}# zs%I7xNfCc&Kt~4RYtwtGB06NF%7JZ6jyVlQ4clYpFv2m@0UGC$i8b1=PQDFriwE_=`& zu?zcWzlicB52I|wV>oca1{_$kmzr`XIuraw{CP~xam$88Kp@xAMgAsSq0B64Jz_9qXCFi;CPiKVN%x9RId3ty55??`EhJP5rcID$%^q z%*&W+Aa!dDl8U2|v=x}D{SFV%2{m8!A4pzmmNa3{@>j5J$)ngY_h~dGY$n+pq*hD4 zHn0G*TTa4~o#$i4*7LD=%Nk^_&n4An!XG|}(P&Z@{V|gnzZ(rU!}x8HugZ+mf8u8m z)|E6-J$9&Ay>E_2+>T~3y%TKf3(;=N;p%Il+cI=+w}<2K1>}793z+xq>$T}R!B;}B z!mMlOBVxHZAVkuuG3^vHim12}R*o46&Dv|j5LKCfJop7g`ly%!f7D&L===KJi{Zmb zm=|V38dSiUv#Qm0qv$Z3%ZkM5m2nWJH0n zT9f~kU>a9wMCfMfbEthv?zKj-)*!wg)noh4eIDf>y&e@;YyUZ29|^Vu>NrSv2NRhN z{Dx_`{I1vW=BOJE#H0h*UU4htefJWizsq@!kn53i$G33N5BxHM%MNXUBy0#Q%P&ScmQ~bDIHS@sRhpH$jI4sb{G;6s+DcV@J{5s=fq&tS?(nhvUA^F zblEx&!Vge$=QG%6gev?uTEF*WRQ~X{==`|`kXYxOv`c2J8M7pL#B;vx$L$BP4WsKy zFuK9Ld|lAr2ra-apR99M1ja1rPtiTbR!k-hT#m)4gfdQtnn%WOYIiX#-N8mwrrd@$ z>hj_BbjLc?Yf1$uK!Z4h5dSDbsh>wy0*SANAa(OxWNuiCoL4SD-tLPqtK(b>?NUZF zgaT25gVB$mZtml#Sy+sgRSjrg-G^S*>qB$tpJv=SpSB3tIAC5|xEK!`eq;f6+=-YK zM~f_>g6YBg?G%yY_;-UUQcZo=YITYLQvgQ1X@=P z;K1T0)GyhOw)h6hK{x3x1E~Y&Vo~{pDBOG=3bvkvoUQXo(s78d<9FzfR%_E{pgqaM z6e}P4gU!x#eafGNDU8~+-^Ux84M*58Gh=s(GuKdTsl zJ!A@{3W5_Zaht{^KZuhz-HdrZVDgD+^nE|ut*4lyennqt?kar*t`@>8kHrYS5eyO8Sxq%Txf+fEzqOiMF?5@9%|S7(Q)8=Xtb@a$3vZXe}ZpY+j5elY^Sd9s5!M}%a=%8 z(Im1E3XjGoD{A~LfnpYo46sSX+>)KGg=tYe|9%9hjYe$)=Jiqk4*MqhG`c~}C<@Zz zS3b_f&SG53DB=ywewlZ=_`8KVz(I_pvnHmz`l(RJ`eJrFYBe!zDu(q;Mb`=4w(z`{ zJDzfG!E&K`LWRvpm0|R>Vma~b-J0tn8?l^t1ysMs2-`Uw$G-{2SD^M&GVDV4?4X?5 znSV?>=Cy`qY9Dspmwag4u;gEdwt?`*`AST+NKah%G{hiSj!SKp{e7%DGrlG}o?!!rcIR(pB`>F0|R}iUGDvMpH zW0>~fFKD~>ODO#)KNrYD_>#+z`QE!waWjjt4U4-K`S*Mu<+rgS(58AykvUBmtz#OF zOZhj4`G_yv<-f651vn;nQ(P}byI4$L17qu-ib98gsb0x0J0s)-%)!-+RH(bJuw|t3 z@}B|?+;%?TbdJe_Yh6vcUvu8*~82^z0pJNswb2Z|x*i%RXjs~W^ zl8C~-+YsrCN8E5ahUlk}DLw9GJ)yZiZ6x8U+{aO|{5e#eumw#g>?6UB*f!%+nkXo* zL?LZM9x~UTitO_95#O_zA!O63pMq$yoQTQh1k;H5O*LwGGWoZW7d*6(_fd1nO0e_J zas1zh^2y7qv5Hs(YC0UBxei3QYO;C+tg~cfSkHLqTGNbGsY_0?w&x;qQyyj&$0N3e z^2_@&ryW>+2&IL)P^JkQ%OAqFoCmQVPoR^3qe-3e$IlkB2vYtWGI>+E?GDzn z1l)(Gr{9DPOYcSP(i#jWvCLEf3pcLB*~Op7$su=8O*xIU-eY6qHU3@ZJoRx*VOXRs z_OL~HB*ep)%rY*$`KZt?%q(%mmQaKUSPY=?OzTmzsQ|C|zlhQgD=GAR4~B|=gvvWS z0v29H{qy5H>fVPrpO`gnT=5))%}+xJ+Xt_~ zgPe@0nO7qDgDHr$rR#o=s$boYeLwEPKo{l0>scHFGo?k5)%aM zR*OFdn6+3 z=nvfwQp`J61aWZr0TLsXBnny;9&-qvB~7ia7)(QL@KHP)b^~5q{XLW~---Tok`84* zck3dYvgyBYO5dHB>wBBYy%Zdo_oUjWWhMnivq=X?fm1u<`3)bn)w;v_qp}dT@N>w! z^?KxfO+M(}iHJGxR7}0d9E`)|SaPY%iD4{_+T}SoO6`W{^*FeWpB$g8hR#W*kEhZ3 z0F%^VapD`Oy8ZyD+Pm0`;nIT`9W%2EEdQ(@j*fUl#(MU0`mGW>#yy4=n7bmJ_hme9 zV?A&Pj~XfUGq|gK`O9M9KWq%{Tg3;E@Tt`ZwY4CGPhj3>w&IMc82Dx?1I!e_|C-vU zWYn-REwxvSuFZ1)Wna~GS7YmkZu3>#sB77X)iHNF_Fkv!$>{Q-U4*Vha+Gz_hBd%k zOHFpOhPOUj-K1b>ww&B*A)f##wLJ7os9&}p0m@(Ah6|Aveuag~JTdPw9NOohnMhqz zJNPun=F0-)uD=ko_n$_+Aq&GefR>prW7m==PJY1_ zR4c!2lqcmuHdoI)C8Co?EUi;xhcthpwUCcOUz>HJQ!t9Hti93k*V&*mXWA$^%h)+=$;V=t=O0rthvc@)}kL}RE9}IyS6;420 zkOIW?M@1~6VpSiG$AqHpS21Raj08GZUu?I`=)g`yk`Qn6pK)6P!V+DluM6tzx$aNH zT`0J>0IyB1C`9V=cOZ9cJEA7^G~9{Zw?2&Rf0gFzw5^p{I%}PI?YkNa&jzds7=J?d zFD5T(c{FJ8__t$ZwR)8$G=oenMP9<)k2(`h*@I;~l^{DAwjZ05zlz=!Kw>MfVE5IC z!)k_Y)JWPR6BsR)gOCR1y5XI8vny;%3OHM?((r^WJ)@rnYW}?Y#VB4(Gy-jGN zd`#QJrf2zS$lbIC>04(Zsho-c-S?-mEG`*D?TY`$-g^K@R#jWWtExKZoV%yf^yHiq zIn5w~iWoptR1^_~CkldqqA0=i#O%{&&H+Voo}6=@&N=7mROw%9S5?zJ0Z=i#|8vjW zt{cuh_k_LI*?XTC4=kJ-ULLajlnGhC@E=ZDNKTVmqzeP%xTTUACjk#4JZz~_XkN@>3iFWSn8#Mvg**LE-`NEZq3Bf7 zmPS`0@!HU(^zrDAV&-l74c#Jmb{^=paRfp791h<0aU33>-uw_6@A)!X?)?Lf{?2K= z3rvdukw0P5!qX>HhAmeSq#KZZ+m|r?dsiXpI$bk!A(qs;>YE671EH*I=9yd(2FSUZ zG9;jnFc4Eq-Gg1&JNujP)1-=}1~9eu4wgkR!HX~Wor=#|bz`zXG!klprk^%lRFM9_ zA>Q{PxlWyZysw!_FU6p6>nv1kUWX|S7g9Se#IWNCPRx1^RV!XV-LhKr65~htet?aH zKvoQE8V%zZKU6$C)B~<(5-gKcCPx)2Q&ePTD1TLy_Fkwgbx-skApZBJP<7dfu^M?o z3#Z#QR^$!cQ{9E@QT(EgUR{bO#2=$%RI!mpq>8t-t7Qavzmtl^zPZn%F?}<6c^FCV zg_yeMQq0`724#B+ka3VNQC76h_Sh_-XL%Q8;vo6UgZ97?)5L{p0(xyGdj5fXun3=^ zFfOKUA`>&HeOhX$P-!Mz(A6gx=ApzpJs3$Rq%bb&GhXIT6oVp#z;+CbuP-x^w!;04 zmXOrBibcNN&*JDub*_8AK+O;Sj8%2ed;d{H8=J|}Hlyy~!s8^RbDTEe*v7j(FWloN$fUW}&>(pebD_fXVMpND-XZwS zk$f@@I?&$-pA3B?0p2Y*{677LZs7-L|C-j72wiH5L@SF$RXK?^INVRGsn?2T+Dud0 zsX7RqOov=0Z$RAm3T@J^@4)nXE8wt2AS;kkaSif5K;y|Kf}9*b8yTOL{Sz38S+%2u z&Ij50`^e#{cvnOK&Hmq^a>egVW6j)|jX7iYBF>RQZCVw{c*yOxW`i*mBVbFP&{a6D zrAiCw)oda%Kmp#0>08&Kxb-}05qT{9BWRfMIBHfugU012(6^keb0Qh9iQ37wR1|Gq zj2Va5BC$Rg*DH~P&a_@8L+4>FC`@L)h7YDm;Z7#qx8LB;f9T(sY-k#JQc^2cGv$(` zD%80eUmN+Od#q56Hc$}ph$d!eRD?Cy1Jua2#3PO{p#2P67xkca>24fc{21y|HW*Z; z4$a5HV{gFx-Nb?IB}m*OSHuFw?IboIGS`7d-w5b4Yl{%&j19>H^-s!caJ+qxx#Uu` zb+*ksVa51ZMGik>Pk%01aU^!9NtKm8HMeO^e z77uV60LuxXp=krerV*TrjZ@!=Ef;M-|KkeJR6COqla>fqaBwo|KFs=`YmhU(lMjnE zMhpCeF8?M{75QX`Fr~d1KD{P<5QBSvi!Fcn9G<>c+ONj?-R*hyp1T}R-?as;8$-cP zq0RtWpTf}VvJFzV7Wy%VsC+mif}(@XzTc*DIPhL9y*@3pEG9!RJ5HRB3~SLgqWPs? zp#6t0g(h{JOvWVYvC>=Q0=2&8PviA4YWREvRo*Y7e&tRznke3}92L%62)-JWsYXBm z%SK6RsN$ggWE~9T_;^_kjL&v3AdT48^=iNpP+9gks#ZUbhLzPASnRiPo7xa1jf|bQ zr4;2`FGOzrxzqq+(UZ6nN9R9*{&HrWQJaf{1tFfcVRHPg1WBc#hD5vS+3+HgX-0e? zunoFb_>9bLc?|)v$N)KbYV;o<{`aMD-H5CaB@_AxRuoSOz_^>i8eHD82@j!nWC>}= zq}CUaMQK|g@j9AeqL75*`tvY<`#C7tRfyyRe1V`nTmdvM>O=LSz1Y9(FKEu#z|Zs| zV{{Sq)AN}I2f?vE=wIe5`eqhv;WB&Xr7UO>E1io0C3CVYm0V*&{@0;J;RgtpQdrE@ z!hC6A_m~qhpIsR8pE@!^+YMcZvYXzA(wj;VLH%5=hlptxAo)rQFoALqRiOF4QIx4s zO7|H5`Y6;tK;>7}xweJcG)0LL#PVW_K7%74(Fh59ne-D>e)G?0`$gyyS0d*F??KV{ zYLOJVNOcm1E?*NRA|mCRk(Yl{MbL-g(`&+_qi`Sm8lL~}OYpTz*9E?Q*)Or_H=hr@ z@cBXbUz6|k@1c(&>$Zy!bA?}vJTPgtIJ8o%D^{8+G#^Q+F#%fgq@Ux&k9VVa&$rR> zfUbX!fuH;r4!-YE43F;tHIbBu7*?Ppw!z#TxO@jRQCmcMm#NcEV3Jy=>>( zkn6m{Ot{E!BTIx+mz~ue@0;r)v_xNuwgG3d&D>*%u2~JnbP<@QW)@>?)}yMmesD61 zw=Tx?18+d$=mNIW&1fur26Zc6K>PA$49_DYGHlA$_+Y0>7<75qhzT;R?y1*0wwB-G zXS9r<+$$2a@FFfz)OMmYMOCIN!c={jucOh1Y>P_`7GSy>( zVl-c4=o89ZlExvfZt2jF4MJfzk$QfQpp1cg@+vg*1 z7on?z-yz@hQRi%@rd+*n7ouHBjARt;Gdj(8OLnwBNtn(LFmm#H&<{&l4YdTJBnLq` z>|10|4b$pGmGQQ@BKVqkFr$xVDW4xe<)rP*M2T=}+7g97GN}u`R^7V>B_I4BEc)#V z#9yfEEI13Vr3QNe@-EZYw2omkBMf%64-@!DPg!qV#IT{n1xec`O&p%~3$#A0MS((> z%9pPPzVVeIMFgc+)RfZ^o#FQc-7;Mm8F%ffx=tbaZl6K(<4>URFO?WR8oK>=6F+7R zVwk>+89!KqNSj%wt?vtwR`xTj_~VFrOnJ{VSLRl}TD_@KVqr#y-5R^$+w?Q^p5nY$ zT%prR)Z;)0VRcCiK}*A742bn19(6PKU|>F(xDr@&{3c{XE+C*r1gnpq7t?5=`QVzv z5yomRakW=|Yke>q(VCM_rk9o?vvDkNh)fVb(eAS`Ywtyv(s~Z#OGaCqwB5g;VeuaH zE*`;%rj*JZu{9Z`8&{#Q@?yr95?sTTOm3YPswt*9j+sy17Kzjyd59wmND-GN;gjjf z0*YpXqAb}0@=Ui+L)Dm1%O?NWFW)(x_8SIbk%bGM{)hfWG_D2n*L<*{YmJCdU7GJ- zfGqyxGj-BM5xO#VCLrYy<$!P_kW*)|NbU%Y-kGy!F*3GfBZ88xG3y=6hH!N0Zk$-~ zC^}>JQq&4iQhx#F?z#{~JBpFWxUzQ>fXN^o{wjDVT{c6MyctE9ibI}hz_z75!w6P@Spl0}Leudiq{Smd)@NhDL z>rc`At^IJ@LO<7|?3TMR>+82+%_p=3n2*fwVhTM}hx{0#4nJ6!u=@! z)>>p<7LT!%BN&@B#Dy3(Is=jO-Z0|3+RFx4zA~9ZrbUpc61F)p%Y7%JTtr2JtBc%W z4LAd7NSe~46nXeJQb^knwKD@ZzkjIM^E}eG?Z6ixO71MedZQ%vbxeJFsY4MaP>JcnmUZW z83PzB2!gC>Is#TpYf#vj1bAq+8UQP)s%eE&2KcM6mKmM%Crk#^JoLz}CmjEwe;%FU zh6r6-{jqXGie|80bS?Q{J^KpDhpA(55DpUB;*rpjfardT2KjB6f#tdyayBD&AO_i^ zi&4;2N(I0RpSvHUWc$$^hAZtsOJ+6P5!G<@JCNg@MOnTA5&n3zV+(qULrN0Amwz}L zxsGK)9+4pMX3z=21oHp*ueI<3=-?<>SCk8f@*c%V6#1LHsfI-^j*8~BhzukXOdq+< zjc_;m%S7O74{O1q_2_zP6FQ$~4(0r%0y)&5h=k-Bh?}Wda&gqtC9j(K;AZNdL(|h& zqVT$YxCdI{wVoG#R!RDY(_CcFe+L%6<8d5&Y&#mZg>D;uye^dBK$4~ohb{@0m~soI z-xj)rwjJ7uhOMoE(3lj`EjV%gBXIvbbcsFiZS4r4^*Pi$VXg?0Rhd%|$C`40!qN8WX3q2O!_a1zDA6`wF1Yo#tmmLFH9y?kdC_y}X?30rmB zjzvgDrV1JmN)PW!-4t1xSbG|NLlVX%VX;jE6~8&i70q!^@J&tINP;&j_`RqT)Kqrl zqHN=NC~nd)=~%R8tw-hJC(yB`9>Y_aMzUVU)@+n*p;5In8<{mZ7-O8xv)a+QWB~38 z#!pRGorBVl4S*SU*xIvBN2Xoru;)q-?~fm$aH7*`#G-K6iFESyf9Rh>PO4Z|m#lAd zHRzsx1-$$T1G4%f#;A>W$%CUaso^eiV{kf+X7Xaz(QFj%Nkqo3D0ry^v@GgE_3{lk zG37-@GmN6%HPn1BM*j9v#O!ALjIWoV+%mrhhZgN37mpcOc40HdhJ#=(4K@?Ym6N!u_ZP+wpX2w0%h9LsJH5^nl>{V(>2`IEMZSYe?nM^Ygy<{O`Pgzu* zubBcS(sGoyW6yP3BSJgY3~CAne@Cd`_?U}(kzpEkjHyXMx);;FaSoEkCwnOMN@eKs zb)zK2COBygbYpN*boGn%%36V(s=1jm1<>yxPkqm8Nz z4NX&zaReDjy}V*_H;(Z;f>V7lsNHIOa(F4e@YpZ%c<==s3}mcFrpv^90xlVg@#@}? z^;h&Ud>N+fnu}>WE<$PNSu86rsxqI)kp<7Ab$JuDW4=z|$=HyHqOE74sP2udunO8X zyU|tHhW3@Ma4%xKp`LL|ilQc|Jk;NzU)__BTcE2MeEbOx!&4ZZhdbx&T)*K+UV#*L zBAtBwAA0@C$~aWesx!6sk<@IR6kRpABI_SuUE5H_&>@nWKx`S_D0VoBHu5~6eqI{} ziw0=!FT#v{Yf-UlAriMbF`Oo!Zx;?P+JGbZPmynXk>g&8dAlyf%)KQx)j0kjknAXi z$JfWO{1$mjYnup&GpXN+nM@{(p`^Z$xirpyB5A#D%M`;f?cEw-L1jS=hw{MJkaj>y zl!GZ~!2tS)19F1|Nh2hFje$wP_gW`XOeATv9M)nvAIKm7%b>G~h76 z{|zdCwI5ykzmG24V(IsA|KwiO-M;Ij?T^CL%EPG(*}MD8)zC8G=U?25o^ zgKEfBP8*OJbU~=oO$;RRYeK$Scis;!IHdo{a31At3V?chrLFX{iX|A41l9W7r*VAc zdNi--u))<)tlbnEC51beqU^vGCLlhBZ%FwwYL;w3`-*NG-Jk_n)DaSzzhadp;S>|A zSY(PSS<+18c9YObNcDZ)H$hfjdEbCohcdx?XCgC!L!{FQmy^!_L$5ELT($xzkNo@U zc;%rw6bMRzu=*um$OUDGG)g{`MI>-Dz7U-09>We$1Fl-U1;-1YFtDA1i!go9r6}7q z18D?XxguJYcH`Kh%{V^&F+x`-at4=T`RI-On1hPdf$@jXy54~W7(k(0<2 z7(F9tiFbt=#7@S^S9#C)mhoo$iSVR9V)I|@WC97;;}MzkW7K}N5+fSLj1QvhmS17T z3uht0Mn^Fv$pYxJkiIS=*evi9W6bNI{T@NjA%04RqVRc~zK6yKI^b^#UE=$w{OT8R zbbRsl_o3+a8&Psc=u)|Hroutn_O(-#G;eB0D!vxc0eDb)F<1XJfNt8fNae3^{?djA0nfagX5moEOosqQ=K{K#Sk>Jcu(O%heSg>p?fma)L@GQ%I0h3 zJv-;UqTLxtCVZ(QxN2!NcF%hfEwPU=niv%KU5+`sF2R)Tg@~epA`QB8*#M3%-A-GM zraeE>PiZs$;~~W&Yjk`Kb^Abof+Suy&}EuMk`)^nAtJL$Ui5xlR;Q&&Ya>fe6eI;2 zbr!(aamW^HpGaK@wBCm!pZGee?hki>DefPm{;NANxIx#qV#XJq!1B!x-{{&QbJ&0V2O#);TmM2+K?=+!jkOho5=)A6Qn zstnrTetkgrZ>3Df%QM_Ww`1DfA4i^bv`M=b^nMYQ_iPBPXH&`A3UQ{Fnx`sPYf4mL zc7ffTKp7L_{VJw@??%k{_!m%i%0{JOa#2S&4N(k0u+l=(!^tZ7YTi)qE=jf@|7%Hk z8)mJc2%)9tZ5)_F=@y@RX{sG7`9557k}$Yt&xtfH*h8%&#x)DYTjru-$0f+_x(piq z(2S?iFy{$0Ek1xD@?Tm58>KCCP;!t7{!PAxV?g`9vVr@gMrk9 zP@Roqn(pyex8=k%{UH>_G*+I=->P%Dq}(+B(nl6z=HBy=w>{m4LiSQssamuL`{(}& z-FTjGRf2hSm!o3)Imq9ZjwBj~nUuHyVX$s~w|!6X3F~uk78Bq%{?zCpHU1h(s?Iml zHTg|lk88*_@k<`sMtG#GkY5##*fx@om(K4fM+Y!++I7OUy--hRSxM1-IDYE`IB`c9 zl$$Y7zZ3oqZffwdWaE&=xMK*AF}xn7CfvVIS#%ei|c)u;glemekBF!}Ob&>z%{&x%5 zneId^CAaKAQ^}*KS-A}ZD@JV`XWGtWg7bw)?Onn4`UvXgJ&x8T4e*yRzN0i1c22eN zotoBZE(m^88i|-!AgaCS#;ECr@nq8>F@qWF@Hzv{Bk@Z1sQ6IWAVjxYl8}F2pTj36D`?wa}(l(?c>ayea z+&t5o5r4s){g30EgDVh!e(()}qpL*47`pt2Q4W%G%#siI{j@7yAD{4G1o}*1 z`U4X?@E$?c?{+#orG!#j`ZAl8-z?n2(slAth9c*J|{j$fO$tXSJtb-_

    D;NChu^eX#E;w53VL~R|m)c3OsozU78r87)?87 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 LNkvXXu0mjfet{(z literal 0 HcmV?d00001 diff --git a/assets/assets/images/R-C.jpg b/assets/assets/images/R-C.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41c03fa590d4674dedc1ab6fe85a928c5374fbc0 GIT binary patch literal 1330305 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

    VWf6xE^%T*Xk#(8s+xotiTS61tw@fl>r;GcFa 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%0D^ROa^L|vR*HYJ>k`Fu<6^UBZTVV#6}t1am6 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 &+GS>0Z^JqO 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

    $a1f3 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

  • V*6QCQ($jWljYoP^{1C(><7c*N-UMqM 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�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
      LUs>}=wtfm<wqwVUn71l$Pg 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%0D%KYuuj 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%0Aitz2`>e-$G>T%d%xHJ?a> zX?5mmkg&qBQ;{Fr*~baRGcmQV?6dU`1@QEx4D_#TAplogi+S!EiIS~<*F7l0O z{&K9WajT2*_@MHp)}v!=H&#{r{sPIP`QmoI$23bUnrj>$9iD?DsOOEYY3=k!dLf`w zmUNn8N)9$c1q;M+KdsUU0H5&mza%5XYvY3CjM2p=8Pd+So8zC5zS>GpR8$&u|eZ@?}Wk;N?TU6K^=G=G!sAkDAGJ#9_-Xj56vp~?MYg_Dz zp;nwN1hYZQvP1Hif$doB>u?>~WEc0G`Xq_&=l8^S7Ara-;lI zX^`2B=^z5D_4SDYVRWRzkFmxOo`16Sl9Fp?=J9+7R1lx|O` zXzioz{Kl?60=O-&susl}zE4SVfKwUY(FM4a;5uI)!v4hJ_6Y8A?B)J}Nj3KpXiau77FFDqCXn2DNv!M=oEYO7Ki`D3!uf4Pl zZ8;7n<^Qpw{AeNF+@^S0&lXO-Kc9$eh)mx9FPtJJiT5APzZy%k``W&g%^6stC z7!Iq0d2r)M?FI}V&NT*<@PfYLz12?WC>tf9{WnFmj?NQ2XTTcR@}uy+JnF)aQDqY7 z@A@a+0u5_zXkR_gwySeV;jmR%hZNXB6|zd@TuI*?gWg^W-VTvtWjn3=EMaQyCOYfB z_R@aYWEdz0!y4*=ET)RsG(KkVeI6b6LcmyBTbVks&>t1>mzmg>hf?Fo&jjadTkG?}Dn|ZD&2cCIElDkC|ghy}3jTv>_H!_6B%DCW z-)1Cp3@BJ%Gk1s+gJuZ#YVW%!byID??`#9G)SW`Mukfw8a3AT)u)~(d7l-^)6C=50T=5HZ;;%}W44jD_aJrihink#$31di&W`#IOt;1Gaosacgw3`e7Z~

      cia8dYU-mA$$fegEN{7rUsTnsvsVukG?gt(x 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

      I7U~Ee=NHSCM4M!Ge;;CjS06R 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 B9mD_t literal 0 HcmV?d00001 diff --git a/assets/assets/images/R-C.png b/assets/assets/images/R-C.png new file mode 100644 index 0000000000000000000000000000000000000000..02f0b7d323e7bf22a4d9370b44c6af5722f775ce GIT binary patch literal 2072669 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

      +ZqosNEF?@AH>lH)mX9ZVw5(6 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 Z+#wLeVE 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

      8IRh+Rh-3h5ksY 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 z°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%0A_2UC6UME&S9T`k%zs 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�T$j@ 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 ir61^U?o~Wp-5CU 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

      6a%v+YEHrX0TdVTo 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⪻g*qb670HVJM)QS(!22K~n+wx?B4<+{VYBEEms$ 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

      Vhq2o_&)Lt3NkFDv8TwYF&O-j&BPj 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%0AU<)f) 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

      x*?BYiW4(RX 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

      RLc2?ed1 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 -rCssI< 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�qLUtrRo8XSR{((AP-71{E7j);pasyX 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�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 z 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:=}hNd%2BEj{= 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 z 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.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 z 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%0A8FcW5Lw_F!*xx(4T{{S+pvLZb&0RwZKa#IGL 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

      {6{=BawV%1ujUr0vq^p__Vf-NUD?xW-SnvWOPG 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 literal 0 HcmV?d00001 diff --git a/prototype/button.jpg b/assets/assets/images/button.jpg similarity index 100% rename from prototype/button.jpg rename to assets/assets/images/button.jpg diff --git a/prototype/cg.jpg b/assets/assets/images/cg.jpg similarity index 100% rename from prototype/cg.jpg rename to assets/assets/images/cg.jpg diff --git a/assets/assets/images/delete.png b/assets/assets/images/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..5a6f11a8a8e17f7234738438e3d6e29a69b86185 GIT binary patch literal 6218 zcmc&&XHXMdvksyXVj=WiLK6@W^`%3A5JKnz(xir7480>o2pXhUL8MBNUZq2n-n$^7 zNsaU_9WL+vcYl08?#!LJGka!tpR+rA&dhVlY}gBR#Rnh;5C8yppoD~L0RTiX{|+GW z4N{Bhyt+}hZRFJC0Dy|+9>Iqoeux`H_*4fq{Yk{{FGCv6YpTc?Ckvh{rjAp92^e!>({T-)6>6y|88t-ba!`KSXc-O3ewThJ$(4^ z?%lh@#KgC6-zFg;AtxtiVPSznp?-dTLqkJ5J3D7*XIEEOt*x#0_V#RSY(zvvH|xB0 z>lP^~DJ3Q4qeqW07|hhv)c*c{VPT=3o*n}O0~Z&Ui;GJ~M~9l48W;>_W@dJDbfl-J z&&tYLUteEdUJeTj6A%z6EiJ9Duh-VrzH{e}o15E*4lqY#l_;{qPe*_ zFE4L+c=*Z5iL$cty?ghptgM=wn`LEXXJ%&3&(9AJ538%IrKF_rczi`gg@lBJs;Vj( z8QFse4`^s;L`6k4H8s`M)ipFU6ciMemX_YUc~f3q{_fp7c6N3+9KO4|8xRn{%E}rT z7`U*ou)4asxw(08a45)u;f;>8PLVPOsq4iOQN_V)Je?d|F5 zX--Z~6BCoij~_pK_AE9w_U+rZ+}zwzQBl8t|Ni*#^rrS8 zF)^{?;^IGl{>aPA1A#z8L&LebIS>d$K|x_)U_c-cEG;c*X=(TN_P%`i^3Om23=a=e zQ&U4AkjBQwyu7@Ul9GgkgwLNpdwYBH^YcG{{#;U0l97=yK0bb8VnR+%?*9GzF)=Z( zU%$4qv-9=!jf;!>`t|Gg@88?n+M1f0CMPE=D=UqSjdgW(_4V~#U0pprJ-4>DJUl$s z*48>ZJCl-<3JMCIJb6-6Qxg#p!NlXgTWje926B5jf{*kGBVuV-N(nrb#!#1qoaTP_>q>DW@>6092}gRn`>=tO+`f| zBO_B+R~H%@y2Mzhal<`Btic@ zc1h`D0RXCpN^rTC-uSIFA0x`iv-c#iTlR*z?2ZuRJ$fz(Td7VVR)wFUT{bb(mU_eY zEePiD4XNNf>8JVhPWWQ*d8tQ{A+-w*ZM-o$f%iQsEV(MK-MTyqaAd~}aN2OUfA&f~ zK27Z>^!p^A4*CuDi{B4n0|x(Zq*dtQ5z~fb81`&Xu(bMoMyk{?&~A7)_hU!<<4A@^ z9KJoob0{^Zz@}p8U1UA2;qTe~WL`Y6+C0mONX7L9&zHJj6UMZSTgm?*p4CBVe*` zVL|^%Ah#hVz2qDlbS0dwME8{Fj<)}ldW4Nwbi#QJ@31(Dabd{oeLqS~Alt8HDymzgRJZQ`KZ+(PN*eFi0MA3#Pda!9y7=Ih3{zAT$B5h+!jv9(7O;V~yuVdJ8(guxU^vd{!_37OA}TfNxh z;Lre`_MnELdD+*hyhB&X<0hIw)MdXQznx8M8&U(84bCo@Ppl#32pl?+g{ZoQC{!!Z z88mS+hYIpJU&s{&jjD-bWJ4lMsx6XW%bEVN6)UO zebH?L$_cRFA^(}7|B1Q(Cpbg`!cYAIOD~ls!|Fb~t$HdZ8tHJagOhW6c%eQr%3aFd ztEC%SDMrqbGi3)_)I5vnJ83Nno*9W5?q&B_ zvhPxb=;Q?t=g5Wdex*AFr3soD7{fD4l-qyT9@vZO#$A`p^`g6R88UZ8#&$uH`) zije*s4S+)pZRab>uvj*Q@S!!?l;TdD2QJei(6 z!r+*$=EPh|K2n=K8{Aqxa3$wY!bcqUkts}#IuxAuCu9NOxhqH~86j37NC8nbi8kTG zLpj5f62OeT+_*;|$m_L+A6kXA0`=Q{D7)o}_0SWn9PrD-%k_-~WnU=hu4&z$E|i{7 z&DShkioAP?HjJ(lay%Ma5&q@Ee^Y($v@gD_&c?2;I?khx!4lD}XyBm&Z0pv-8SGDl zT3l`pXw4-B5Ff@KE*ipB?e00`!x1?)Ekx?Z{V_1C7l1$*VdM`PVQy5pPeI z$4auNO1`}El|#W28Y84A%bxjvhSq3yH!U)ZXT9du*JK+Neu6W=?_5f7(Be}?(}1a? zHdaTCu%gSo*B|IYg(4(&y22@27+l#{w0sjF>X1&2I=kA|+ve1_X#TG*-38JS&ivev zQ}*G%Kowx>ac4}T%vMXl*(eO|CHIU3_#PqA0YVzPA}&hj2FStE4dVSw|gT zhThipi2R-Wyvw5Gx@npRs59Qu;H9R!m?;PEH~i9yQfN?80Ol&F(?S*9>ZR%3}HIw&-(XsBp9S?I8pm z_HZX?wl!sLN958eOa6uJk4cJj$)(JK&6v@;sZpdfpy9gv|JeQ~aH0AZ$aLKGiRKUZTc5EYA$v?m)cdPAg zQQRu@Lxs7&Oi#+#8%L3Ws83T}iizIB;iggD!36GPyM+B;7I>)rlXj1D_M!>H!>dEK z=m4o{74ucGLiMtyA;l7?jA|*+lFh7NV7SHT|addJ%-&si>i{W>9~$EhZFta{IDXyufaZx3VWyue zEXh+>3%#TpUG8|P>uq4Kg&RT#SV5_iZ{ zHp=$d`{|jKkY=>)Oq3eO<%^G}lx3%Y@33lIfUQCW%QI(|otjmDuXI~WL;W`c)` zVfU-AsdX582hR#xRVI8$E1z9Tngm_$W5#$+<|wa<_kS zEq500GE==_3J2yiy3&CUq#W?;1&}fpDmYm%KtzFSSx8Y608oX1EDJa^uyzVn^@E--1y4a~zW#w_j>jnXQ~Y$MC@! zl}Z))iG^;0b+9O-a4{KkQlC!#7dOE_Ku^axG^I#ViZU6$WwC5g3WWvTd5x}~{iP`^jiUeqWW+F<)?AjS{*FPbGWP7YkTc(9U+{Ilsd1;L_rI0zp+H^n zUEl24?id8pkvD+R>)wlXx*ji`588r;L+M;GdeYftGT$Rjbrg1QcHNC&S$dUu&?d_a zZcT7aW_`MCxIJLNHq0Dn zz-1N=D&n-G)R+Zd$AY;<-}A%0EWlgVaRrPp%hQ9f9aH+%DFUK5Gvj3%xV02I7uV*N zWVABRm3-Cj&#D&TQUzJH*Z}O)CvN_u>S3kk-oi*JB@Y4PRvcc-1Gj06GnR+Z|4PNlnoAP!4IM;DA$9`+5JCRJoUc+&vU?^g&Pb2knC>Wunwg7|r6s$=BzB%y*kywK4}8K>ApT zzhZlSOjU?%K{hrTk7vx% z$7^(6sb+>aX|t8Gl}o1SIU$M8n&KlRE<$&%?&HJtQZ6yb<~eQm#z)Rs{*mKnMdF8s zz#mwndi!m6Bm%y+Bj{9u==$Ta>1a70;gTwa9-*8}0)cp$sDZ_Z-e-oX^RoPJd43xMR4m zL*sw#xtT^g(A2~}_+;9?ez}WBTSJwhc9k^8H^*#KsO2$w+5nrKX|)(`jbD+W>2#Yh ziub=D7MEdZNG;^OVeo5nX{}v67kG?gHS`y8&j$fT!kKG5Vmwznj4_ca!q~=I$~a9j zHJPK=>HY36v%DzK2xZK{l)yt~&1%=DYsdz^qb@guXN=pjj7;V$s@f=>cVsGAXZfT67=cf&4ncy=D6sljz*O5 z5@tZnKPIQ?!~I>xK)+~e&U(t0G94L5V0VP)%LNFb^oWJK; z$7o%>AERlFFcw_VJv?@HlIE=eWG#?>RHP#38NooJyZ<->`PmblGLN&~RbNALe6aqyYW3SZ zLvBs`g(i|=!XogJBgeLI;Z zIZqw;^mX!0eXAE|J;;;(yee>dD`Tuomd{1{l;^!kRK(1_JajV9qo#VG_t92>*5i88bUe8gy?UF%K9uHr!O=^$jU&?_dHKT#Z))d zWEtShj4;@b%Fp26-$^$!l{kIUy{-Ku#pbwDWJ_kE=6x0Ydh5557dY2*`n&rL|xiVQZW~_mzv-?iQwg+0cB4Nj~v6BN~bpab@NF@0~ z`UBN&2LO$F5?~ z_Iz+O)<>y zR(JJ_i}6D|crYAm1FIAmi-tq39JQFzsFA$HR|E#ZOoAjpIuxn@^OFwFfLas*P3+~z z7tA=(#xWMPcTYt03#FAlk|_ce0UP;6Mb(Nf5CM%`pDh*4m_DyXj#kX!Y0UCVx;Q5@ zHIe{f)n;6UuXME;sbb8&&wn-~Zzcn&3cR?QaNVkwG~feTGDK;baK28RO<%ns8)U6T z^*NM|_-aTb3y-!^*fFIaPQ+8y1bvX8)sXWUjUi%xlbjZu?_9|9lB!T7%|BXI#2v}i z9|lMmih?Xc#aMkY&K7O3G`aDxje1gWf^!K;goR%%I-xN^+!1`R2&VcfVMa^MDCWEc zVNAcTl%@mM?Z{lgF9WWFE3JyF3+LJ|M<|1A0JfI53?QgVYo0rZnE6-fp1aq&gavl-GHClKzX} z8cq$QRPYE2AhDL_OqzH|F1*oSDs17OrI+;Nhu3Z(2C4}QMWY%lVqD}_-S1gvHjhb| z#QIrmX+w?!JUk3imSHt-Kukf)?AgU6Y?l-`OY;?<_rk2mz+NF<9&41yO{5+m#dzt3 z9Dd*_%s9QGT^!6(vdt|Dx!g^~;CHV{J7Vf?#@9_SG1DnA1T2WUcCkSn)<2~(g|x>U zTsa;H9nfsN5}}%}5vbzn1ktw4}%H6RTyo+U+S10SE+Od2Ok$j4@Mq^^8wI(`x9Kd@YHy+FjIqM-E*Ps@G!$M1|j%{p;i4F=pulIWt(+ zspz23N?J#81u{@CB!*=wU_Y$K3y2D2=aG_faIOFqW*c$Pr+k zc){QP7;h8d%NMY(5sr{6_u4>u&WvB%1AvD7*cLu)q3gmK+8)NuV~LeK1+2 z`_l{O+&g4`+6)lA;T~Yur2w(!o+N@d?j}BTXXIbNR(sRYnnqViu+EaE;?d^reW7nb z6J!ty`&Wd zwaADt>x?&}+bKD)ZBlninuqfgyUKz+)W%(jn=*w?uiB@rH)4%vc(3O<8a{E3>15ei zH2j$p>`Ps)#98Ss29-IMsPL6(4@VOV({t=QI|&DszS(<9-R~Cug+xtBzcZ5`fN*HR zTOWw!uFviB_)I@9_A6m$K$K3{qR0C73k|rMS0=>qLXkwcquDnu$}!m!Ql1Gw(bpEY z$d~|2g3H@);egU1gbpm-jC=IZ%oyjlP+@)NbU3&wYQ@^Qtu&9n-Glw!cye@Uqn0u> zg|KVNV`F~g{y1Bz68>HW%zpN)cSRzvT)&jSM6Aggo@1sp5tnNC+%svB#8NkYE&35{ z*nUbpA}VP?%jY<;RAC^-6;QMkX&qgvG5zgc>BK12xJUfv-jFZ*6cD0o>ahL7_R6)c zAbdIs+Zz`iHIvX!ELrikk!ig+;4@UN7Uq$!%~Qv{aA#f)U9+MPf05yZUed(Zu<3x%<9w>nwq+0T=B+Kvs7KrjB4(KOrixeb zDFRdoK^x~Dbl1gUG;r0o@W+#`f2w+?qWxg<<;mzCA(NEvMtfX-pnGf%M!5F6^b=A$ z&5)OjiO;n2wD&H2jaxG3KKT%g^}Kv*WA;ut?>}CTYvS>St3U^vW&xxY3u>mx+2z=b#a|y;k zH0_#xl+%b#vxoi+m;LrP3-Q+=Y=M3SfD8xbY^05Em^HZ6rRv~YxMD=j>#)jCcUa$- z7jE}p6ND$oZ!F74!yYhtF{i3MPgLh0x?^ z)(je;zOAj_F^+iscuqlf=CokifVmRAr=3v=|KKaFF1r0Sw0uM@NQ`h=>S zg|vi4skkKBJ}1~eF@tcN-fk^a?&+1Wz;XoK%Zw_1Z$Q>~TMo9n!7J+bj`7Z739myn#KJ@fj>|y4}cAV*dv2rY*BW*k^tRI@| zADOby4UJnpvsyyR)ZV#>lByGM+2$T_%V|IN89Ser$wMI&4tcUIvimlRI75wF40&H1 zIk|2z=C$xn(aULZ3&{4s)9Z*JY0NM#PsH*g8{_#QmtT=r0!>=|Jl*3~z*CFairl!l z%fWMotMBq+RS0+Flc^n$t$m0UFh@$5L~%#Oup~j*M~jt5Ik`Pl3CQbe${vR*zepSA|W97WtE|= zCn_eEtZDC-UQ)c9<<*{t%qj1V3JU#!r=Z?_=yNWwL>@*%pyD^8C;4wO?o;!7tZ!8( znK%;#`U)yX&;QCX{mxC@|=gngjEZ4ru9DeXI5xMjVR-4n+mH5 z*ir;`?{3|4MS8m(cZ$W#?k4Y}X~ogVx#rsVE*F#IFB>%_In;<2MMHFpZT<^Fbej&; zHRH|qcZ?SE( zQJ(X>r*pzZEniD?=EgaDY>b@QG*H4O2d%SmM?XF+xu zL{ksbFRRfpQ8-M`PpW7t*=A3l%9XZb{ z8Ax90y%=TwJwBCT9p{|&sWI-M(vdr87e}r#fSg_0ECnNEcuX97lb%RTm}A(Z#1;A{1wFXIb_MK#xD*Jh;|mn zo9{}$ek|CWx(M%)^kV+x$r?X_+ILJSrX;YgANT13a^9AGq;5btNMR9qGwk8Ytd;Yw zByk;}L^q{jF?u}fGQ2&MEzPmE!xM*!YrFru#FaOyQrDCe@2IczBsgk~QB+d54-=N!Wgkgay!CoGCCJj-$=Z z(1+fB*qG97og(_GVK%oBI0L4g7~3f<+rYUjSya+jPYw5E*bc{31eWAKN|BXJ59oX$ zitc3o)YbdB?L*-n$0qW>wpQ+&*h$-PgeEP5(IIs$@b%{4SK3YOKwwf$E2Tir#71K% z^>qEyKg!z1Um01(yUckJdbD_=u1K9Y&+KDFSvwoB0r^EXg|$5YnHu};LT?Vy4~Xke zH1uX9B6#2AuY%Q@e&rh>IzF|gCQFInV5Xq)em&D-IWpKAPZh!yzmuv^x*-H!kV%_X z!3dFl#O`ZwF^68S5B|DyZThHWL~he}nu`~UjB32rgeV1|wg%g$O(8}Wrjq@goT-pu z63`fy{mvq%=E6F4qB}AAmaIp=AZ9n{4UDFhUObfy!pUVjpePFwxL*d#m47ge=h2O~ zKB>2a@>LD7nNf^CwM6HYAbC?fpmS*^U!1?)`Sx)^%S9^<&rZDFyA=Y$e26cE0;WZo z^mOE-QSdlP#K#}!)x!9q1U>@^=%pPSBbVD!^6;hR9YQ{5C)BuP1(xw;+Jbo91C~?! z6|rfFlzoB>olOf-);@0FVj8O|6e^4NogdEg<)X^*x><<}z_XV3 z(K0yLm`R)Ev6Db3-Q53sOh3Y*NHx|prijprr6j@z-JpX|I&Qlw;92fe@E}q1zDc({SGfwrTqtSEs(fcC4iLHN&wwCQqmoq_TM0)B?GM%`zY`Dz48 zQ&62QUUk(_8(&d$68Z3|T!}*`^!|0nAN6?r(;emul+4^OzvLdcXNV(nZJokL0y(S) zedR6qWLoh>k{1tM&6e*s%RyKW=V&Of-%j9J%A0i^G0=4zy)9#3)NW_`&PZj+_p?33 z+iqLIi`Ff{t1NEc8~`5~E-{%a{*{%2r^vR=6*(m%9)YY3u*roq7+WDXu!gY%|CcBD2ay#DUJT=D)dZBX+F|l@>sf<{)bu=K*Fz^-S{B@dmXl}dP9y8 zQ~5Bz^cGB!-ROagW+JG;%|59TJ__9x>m-vs3BRB_CeZVOmt3UGXK+lcQNlh!IaX0# zc1|;#$fx!ztDL_RXVToJDod6ekmw>k$=W>BReF1n7+>NMGUW2s#7|b4>B$lUBbHdO zlG;N}2_;xCUGu#B6b;f#=&6{~Zs4 zOJd4g@MEv}kg>-n?G3dt8WtDQvh?zM$pV zi%(VzOPpVp%imTejqIa3iDnb%P@ZNjl+bJHZgL#M^NJbQA#D)vo{YuiickFy7GvA| zk)(}ur4gv+g|@K<1ltlmk`lIRXV;t@x_0%7^?UHGbLyRbJZV!m=w{Wfq<(Fsv@@U5 z*hOngTOipJKlL83@p@jZtBe~Uqv+nQz4hPk7}F-8M@rV*%`r@7kLy>(#F0h%6B5n$ znaWMg$~$qFXJ#YhELux@e;Y3B_Zda3i1x%s_ux`_Jn~erIJx6r*!+%d|1dRmT9u5f zV+24f5#@y`d)e+14>F~3)kjc4dxKQpMtkW`U55GVw3cM@HOpx=5fIl&VH--x2=0Y# zs)pq9(yA@ggG@rSD~Iu1ytggIU+U@;1EH5-Y1HgyV=fPjli6qd-|geG@GZ$iG0U4R zr+p8MHSXF1^B0)L6;RaU9?WgxKr~|}AZ9ulZ~DP+_3Ev4{9q^4DzG~dDamS=B*d8up(YTs6Rw)h~hrkso zd4?GuVNdpb4ap|WPlL5q2qm+%ffr8*-b=bQ)7(WDlr~HWKv*zJisc(H;MoUY);Al+ zzq|Uxw?YXyDO2#2?jS4+TU4&GRJ#Ad1uzrgM_=yyHqL5wws)$E87vM%$)9#U4h&{e zTVY%oahc{`T5PoW^CBi2(2>u8j_%r5-Slx(0Gc58;Fx-mO@feB%vs{qQPv_4HC|dg z3tF~PKl&^iaR(7759`xHCtsjMxFX2Zoai69+}CmcU{hP6Y%^b2A*@s}Jdyt_;}O!Z zl+#{hSx!QVc@-QQ;a5Fg06utVU^!L=y9n?Gm)u!M$M0nfjSH(<>Q_-zMwp_d0L5UT zja*m!1>ir=DcUS$-s@I@w9tn>$BNw_U5DxbD;b6|frnFf?f#_0v$d^Dx#SFt5pfkQ=CxS+wPp#=TA4Fnub)o{ueq1D2l zC;{n?hIQqJLeRRiA24DU4NP>>e&okqCoR>{7j)Re{^QRW)-X_tW z2-o$;gYG{cI5FQ*H~|-jsq0HF<|f<;kUFluw8N2 z)LWYMNsibUs;j*nFg_jYcI~->72GXHw6Tg|xUTSr7t;wg^}&xs?<;0SVXs8g8Gf6- zdnD<<_m80Q_2Q8+HU)EW*9={L)HtiQJ}Y6mc$6W=)Uxb+`qXIr(ne!VccNr6i-qwq zr?;S}gzydOn+yd?CwTBTA(CkmSXkXHzMRJlwf0=L2A)L6^p~5mn6w4GtI)&ptL_}i zB8RW(tU2jLMJXlmiF*c1G>#O}1-AWGmNO>Ys*S%N_&Xt!e1&VznvRB4z{EhHe<=f< z!E~<@e@}{i1wK{X<+R%cff~ytXd*dk7|_%+V@G~yoLLgTB>wgCJ^g{ z@Y+FeObq{cZK!vU-N#7;!y^V0@+Z3Q9HeNJF%5}NY!9xtI}sHsZcvdQQ#&~acA3r# z<|i2PM6m4uD6N%s@D0+lA70Dl+ZeC0}I{u z6MR59v%G~&>cpW?H`Z2$vyxN!w~H$oL+nFShhPePatqAEkpd>OiEq7{*Y)L)eduwQ zfrGs*YRI)diHBQ?=2UH!%>7fD{Z5r|leJn#V^lvg?hhs(H8)0GtvX_C4=5SHu+rxJ zL~(j0)k3V*yfO};L?=e4d z)E41aaOQ8u^SQpkG9L5$pIN-4dGvz@UW0ic)17Et4-jU87WQul?TR^Szl}s+iv#_m z!L}5e_{br?)7Fp%)E+`46Qpr6brO5abm^OBdZa*~ACLMWgZ$fPk_t(ph!%}z%mwv) zeOUzWbdVLutj?|J87)aqZ(W<;D;qCg-E0w17TJ!0S*phQFu3Q=c zJ4;)4BSvsr9u8aGNwSDkjRmpcQqgC;>S>M{Tm=g+9X)X%ySPX%80B74=vK%LtKN_H z>&8Wok@Pie$I%MB<*mvd*F0aX72>tD8@vRNxl6OI-U7kqE8CuSk%NNlH=R|oZZD3Ft&QZ6!0EI;2$<*G`80L+jTy z1tt=y!4#3*9}tHsq~~$6@4Y>q&P7}C-4Tj;s~3^hG!kKcDkJEm8UkP+pAxCGsYIOZb~{vCR5S$)vcR-Z!f3NxhdWUBpgS8=fGnx z*32Dh(3qXDAKqsJRLZ<}vM4l2S;H7733hAT4N)R&LE8rkFOM?>W3%t2hpF!%hksbx z{jNn-N7|MRPPe}=FF%9#bhbzjm^gZ2I^QqtRE33r87Ian$kZwv z|EN?)h1NBwZ^73t6eT;P@e|4A$fUQxy1=d8hM&~PquZbABj7#07gX~|lmJ=pWd6Wp zCz)qQhC?`_R~rdZh&W~(#!@&gb$~C@U=x~RP;n{_plE~)NEz!Crc&mqnyJqS zMbonu0p6*N*l*QjnH|yx9zcdhAz15W7^vKn7T>-$gtx%l)JqHn{{@7XaewibeMb}n znplWR23>M4tdrTC7)%k8nSS;}Hbgi43AJDaOZGIcwnm3Bfk@?4v3tmkh{>82%s%Y(Pm7mhIkf17>yqYLa)HYN1GjQOdO9euqreY zh?~cEP1r*mDT*CL2!pexc^!W*Q1BH{rWVt%;npWX)qA;)4j{g9g7DQK7K?*?j#)P# zm52l-p+#ZoHBCsC7qReYQqwx`JD#7UoLV8Q(Qx-E*o^%pwn*7M6(wN6aurC)kd?km z(|`&3aek2yZ-eVeC)X$YTUS@6O{ca6f}-*+K2R0~3zncr37!gBiwrhJ#hR>yMyu~P z)~A$0W11=^z0tmP#ZNZP@d%Lu`OL4j5^XTFjWemuBn)G4=gELmQ5*IRi|j?SCK#tf zTF_dG6yKK<;RuW&^NdWZ)fz0iJep^TP&xyLcM#GX92wcaoqu1pCGel=-v0`gvAk#F$KW*D-D%V_`jJ3WsN6}XU&##LlsuzvgieT};FRQ! z3+-6rM*IVlJa3EUuZTZ7p@8h3o1ikmvsagrpO_F+xwVpe>*nCN0WLv;E=?%*e?>RI z;5N!5Tf?V^#2shZFK(S{LWmr({4q@H+}AfysP_)gWO5I_DT0YZaH8_J^{fhMN zz(4v&<#qShbY^K;FLctjsd&PBRcms5N5v8dYe*^yBEbLjCbY+Kt+wITBsug%RzD63 z6mG)u5>PNm@%61R8uq|&7X~+1r`)VbZhwkH6`+jy`lrVdGsphtPO86XaH|*%`AJ*Y zT3rW_1Hd&nut&&ta6tJsOIOwXuSZdW;8yjK(qW3&IxVM`$1B|obN30@l25YNKZ~*bxy2SzomxIHii{KqKT(N^wkRaq(Mdb#^ zpqj&tz&sjh+yQxks!LL)y30lue>%jvSPNV?_`qMGc04k`2_dp?7X(TAzqo7j-PJ#J zFJl&-7+_?6;&Frs9R(7;hbjZ#taSHWf<-W_#)c*Iu1E34WwP%Fp1bpLC-LcnP#Szl zx;1KkPV-kwLUG2IID`=vMDpzNvRAXvw5_8b3F1E4?Uz8>N8XwrJ^XD|KnN{0dZ6$o zsj|^+Z=s6*{0`v-yf<^(nDVvRZ>Oa%{^#1m}$3@+4g_qz&qd+!Nh5*)tXSB#F zAp7TFRx~Z&c~NfIcSSsx?p+>D`@P=U^?*~fP@>AF*@Q+Yj98=@;r+V!`+Y&4)#>=3WkvB<9x@136)(OpRAuX#4UJj;pFfth zQ9iYsd`<*vn}~u#7aIB6sxCWi*s57LlFWhO|d#7msIaAf`K*YMi#AH|d;?yh=;e$nGY3A9V6nvJ_ zQ#zWxwEDcYJ`@Tw%m}JLPsv(D{B$`$L->G;8$W{~IIj*m#{lZztrlz8Kvp$5JG=a# zM9g@z@7za8Rxsp|sAk+Xsy{v&mmbO>YDxz?Rd87Wf;x(ZQtC$M%mZ!KUq3Vy`aH)d@E#!u6wEr*7gMacrCvmv9q#cs=gUXAGYMWY8b7vrijX$o zKrUsM+VuG{ta}pyI!a}KKn6E7gS^5uinS0wiyF(9)2k>XlUzdZ)_!z6WV>YN6$H=G zFpX`9dn0I>I}YOtjYo#7QZ3^;t~RJ6nEvccKGgDxCX4DGR;#aB*ITe4(lFoFIH0NV z4R5;2vHfLQ(EOoXQxvB`r8HTS<)tyjxI3G&h*kXIb3h^s-p10q!cn7RUGtItLKdm_ z8rAAV^~w1L#d9u6o~sB9u0E{K3bgSxqan7Jp2@CKAtpF&S_tD9a#h+Ncy~{?f5Ih9 zsz6kwG1ShCEmd@r-FZ?EaDn9oT3<%AR&|>Gdubo;^jU7)n%uQ%IDHEjy904x)n;$; z{5d^HhPWAkIw!Cy>!jLkcJ;42%gNsUJ{H`Ra>+RHvi=Q%9JhD0!* zgu+SbkkwYQV2)3#t6$Yg5fS_UdLp@1eJ`fM+yA-~f8e+5UVXOC$~@J`{MoDu?td-=`eyRewHM_8YZE zZPK78e~IL++W6`wdXD65xTwQQ&(A8Pz_1=W-e2gZFwwcxvbR)}l5}N|bF-qzx-bVP z`F?G^x}2j|a}|b4GrA*lGylZfz`Nq(;PCB8OB&3+*tR7&Py1yVA7#4uc2s%Pn>~&V zvF6y68)@2g=8#|Gd(R{a(5GKYcAQ|L9jHN54_`g_n>Mg?LK@5tiZ7q_k-sf9;VdI`lpKAhOQ}50}A| zWllN6uJY|;+JRf)rYdgfr<2jnBZ01c{GJ;E2@)u%7xisv*1mRybAysdbuHGw#c0o! z<`nQLSGO0~8_YbG1taQ^+s`TcrCtJlv%rXyjbK~-&1HOM8=r8npx8sI9X*(V(|U1~ z3UN|&=rpiyMdf7HR5!_R!Z%k}$uvfA|%_N+#g$345GQQAx+uW!-J=)@-o9)=%e_7*cgAG;WkZf^l|3cnICWj7!z$ zKh2=F9~rY(Cq(u&b#>YiE6ROd=`3lE&{rs9FhlyLCr>$eVPl)z?sb>V|26lVB#crb6I?rGC(&ovG%kc=LjulscrzM` zV|8!Z77NEpga;o;r`v2@fH6X(w<($tIqp(wUIWL?iw7UjCN1MTT<|+dh1j#z=LL5O zF&2KuCOne98?bIx!Osx%>1M_EJ}H4hf<{`)mk?}k&%GuB;m#OUa%oa%#;}X&UxcX2 zDnM>SwOqAnM*^;!Iy8TTTeep5$D6cgUu7Z&xAn7@eKpgR1pHsd(!8Ke?!gX-6wNkW zb&Sah@aa1$U(jhb)bDEsd^9R%+<^kb!U^y?)tnXZw9K(ZB?EPy-g9CfR4uyDtkW_j zg94Y3+?tr5{2PIQbrFbG+H;F+v)p@E5CIw%P-*wd>-BP;uj%1CB7Cmf>NIbk&>7X3 zomi@6A2hwf$%94luX}{Oo$jdvk-~KR(-Tfh5(p7S$WweSppJcsUhk9_P3))XRVH$I z^O1Re%044$=AF6ix>{p?&KR>4;n82 z)-T+qcb20WEd|m(c{&;EiA`Vm+r}E_`s=GLxrWH>D(_WKVoEllq7HF2OF0$;iw@Wi zk3IP9jmR9^>N8F*)^tJ;JQ@eywIt!hF~T&iBAA=`o7%+#rPuI%V;mh^9LjAJmEVNL zP7G*$i3($0EsI+0PY#+6Qs^hAE3<>9&D|hVkhhP?+v6uX*&_$ZU|OedQ3a1;m>dmj zHW(o@$N-z7Y zdmp1~m>%;I2?|}p zAHmg?1t_w{J*JL|U^S!;dJV~K8nN!-PQI^?1S1`$Hbx&}{eOeE|L=fq5Gu`+;OnfN WQaau#)z>^Rn6$WpSha{@z<&V#qSovH literal 0 HcmV?d00001 diff --git a/assets/assets/images/logo.svg b/assets/assets/images/logo.svg new file mode 100644 index 0000000..ade3219 --- /dev/null +++ b/assets/assets/images/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/assets/images/nginx.gif b/assets/assets/images/nginx.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc78bb8409695671852b241ef17fa33fa8ccbf14 GIT binary patch literal 12532 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�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 PK=RL`{lo`pfcXCbgb}P8 literal 0 HcmV?d00001 diff --git a/assets/assets/js/data.json b/assets/assets/js/data.json new file mode 100644 index 0000000..ffd0733 --- /dev/null +++ b/assets/assets/js/data.json @@ -0,0 +1,20 @@ +[ + { + "server": "shanghai", + "stat": "busy", + "amount": 70, + "recentTime":70 + }, + { + "server": "changsha", + "stat": "busy", + "amount": 50, + "recentTime": 1300 + }, + { + "server": "beijing", + "stat": "busy", + "amount": 56, + "recentTime": 70 + } +] \ No newline at end of file diff --git a/assets/assets/js/jquery.js b/assets/assets/js/jquery.js new file mode 100644 index 0000000..200b54e --- /dev/null +++ b/assets/assets/js/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="

      ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 select all DOM elements + */ + +const tooltip = document.querySelector("[data-tooltip]"); +const chartBars = document.querySelectorAll("[data-chart-bar]"); + + + +/** + * add event on element + */ + +const addEventOnElem = function (elem, type, callback) { + if (elem.length > 1) { + for (let i = 0; i < elem.length; i++) { + elem[i].addEventListener(type, callback); + } + } else { + elem.addEventListener(type, callback); + } +} + + + +/** + * -> get the max day amount from data + */ + +let maxDayAmount = 0; + +for (let i = 0; i < data.length; i++) { + if (data[i].amount > maxDayAmount) { + maxDayAmount = data[i].amount; + } +} + + + +/** + * -> get chart bars height as array + * -> set the height of all bars in chart + */ + +const setChartBarsHeight = function (height) { + for (let i = 0; i < height.length; i++) { + chartBars[i].style.transform = `scaleY(${height[i] / 100})`; + } +} + + + +/** + * -> get the day amount from data + * -> find the percentage of every number + * -> push all number in chartBarsHeight + */ + +const charBarsHeight = []; + +for (let i = 0; i < data.length; i++) { + const dayAmount = data[i].amount; + const percentOfNum = dayAmount / maxDayAmount * 100; + charBarsHeight.push(percentOfNum); +} + +setChartBarsHeight(charBarsHeight); + + + +/** + * -> get top, left, and chart bar width + * -> get tooltip height + * -> set the gap between chart bar and tooltip + * -> set the tooltip position + */ + +const setTooltipPos = function (top, left, chartBarWidth) { + const tooltipHeight = tooltip.offsetHeight; + const gap = 8; + + tooltip.style.top = `${top - tooltipHeight - gap}px`; + tooltip.style.left = `${left + chartBarWidth / 2}px`; +} + + + +/** + * when chart bar is hover + * -> add active class in tooltip + * -> get chart bar top position from window + * -> get chart bar left position from window + * -> get chart bar width + * -> call setTooltipPos and pass the chart bar top, + * left position and width + */ + +const chartBarOnHover = function () { + tooltip.classList.add("active"); + + const barTopPos = this.getBoundingClientRect().top; + const barLeftPos = this.getBoundingClientRect().left; + const barWidth = this.offsetWidth; + + setTooltipPos(barTopPos, barLeftPos, barWidth); +} + +addEventOnElem(chartBars, "mouseover", chartBarOnHover); + + + +/** + * -> hide tooltip when leave cursor from chart bar + */ + +const hideTooltip = function () { + tooltip.classList.remove("active"); +} + +addEventOnElem(chartBars, "mouseleave", hideTooltip); + + + +/** + * -> add tooltip value when hover on any bar chart + */ + +const addTooltipValue = function () { + for (let i = 0; i < data.length; i++) { + if (data[i].server === this.dataset.chartBar) { + tooltip.innerHTML = data[i].amount.toString(); + break; + } + } +} + +addEventOnElem(chartBars, "mouseover", addTooltipValue); \ No newline at end of file diff --git a/assets/css/index.css b/assets/css/index.css new file mode 100644 index 0000000..9e447fb --- /dev/null +++ b/assets/css/index.css @@ -0,0 +1,235 @@ +@charset "utf-8"; + +/* 统一板块宽度和左右居中 */ + +.banner_con, +.news_con, +.case_con, +.links_con, +.footer_con { + width: 1002px; + margin: 0 auto; +} + +#banner { + height: 465px; + background: gray url("../images/banner1_02_02.jpg") no-repeat center; +} + +#banner .banner_con { + height: 465px; + /* background: pink; */ + margin: 0 auto; +} + +.news_con { + height: 243px; + background: white; +} + +.news_title { + /* background: cadetblue; */ + font-size: 18px; + color: #3f434f; + line-height: 18px; + padding-top: 36px; +} + +.news_list { + /* background: cornflowerblue; */ + margin-top: 23px; +} + +.news_list li { + width: 437px; + height: 25px; + background: url("../images/ico_05.jpg") no-repeat left; + padding-left: 14px; + /* margin-top: 23px;不能给li加哦 要给他爹,不然每个儿子顶部都会空出来*/ +} + +.news_list li a { + float: left; + font-size: 12px; + color: #565656; + line-height: 25px; +} + +.news_list li span { + float: right; + color: #9a9a9a; + font-size: 12px; +} + +.news_l { + width: 480px; + height: 243px; + /* background: rebeccapurple; */ + float: left; + padding-left: 21px; +} + +.news_c { + width: 194px; + height: 243px; + background: #f1f1f1; + float: left; + padding: 0 27px 0 20px; +} + +.news_c .txt1 { + font-size: 12px; + color: #555555; + line-height: 25px; + margin-top: 34px; + /* 行高自己去量哦 */ +} + +.news_c .txt2 { + font-size: 12px; + color: #979797; + line-height: 25px; + margin-top: 15 px; + /* 行高自己去量哦 */ +} + +.news_r { + width: 180px; + height: 243px; + background: #fbfbfb url("../images/ma_05.jpg") no-repeat right bottom; + float: left; + padding: 0 38px 0 24px; +} + +.news_r .txt3 { + font-size: 12px; + color: #585858; + line-height: 24px; + margin: 21px 0 22px 0; +} + +.case_con { + height: 304px; + /* background: goldenrod; */ +} + +.case_con h3 { + font-size: 18px; + color: #3f434f; + /* background: pink; */ + padding: 28px 0 18px 22px; +} + +.case_con .case_box { + height: 240px; + /* background: orange; */ +} + +.case_box dl { + width: 210px; + /* 这是由图片尺寸为210得出的,这样文本就会屈居于一处 */ + /* background: burlywood; */ + float: left; + margin: 0 20px; +} + + +/* 这里很重要!一定要设置宽高,也就是图片尺寸得出,这样以后图片更换,结构就不会乱! */ + +.case_box dl dt { + width: 190px; + height: 190px; +} + +.case_box dl dd { + font-size: 24px; + color: #4f4f4f; + line-height: 24px; + margin-top: 13px; + float: center; + left: 10px; +} + + +/* 上面给dt这个容器指定了宽高,现在让img跟随这个容器的宽高!! */ + +.case_box dl dt img { + width: 100%; + height: 100%; +} + +#links { + background: #e5e5e5; +} + +.links_con { + height: 250px; + /* */ +} + +.links_con .links_title { + color: #5d5d5d; + line-height: 16px; + border-bottom: 1px solid #c1c1c1; + padding: 31px 0 11px 13px; +} + +.links_con .links_l { + width: 452px; + height: 250px; + background: #e5e5e5; + float: left; + margin-left: 20px; +} + +.links_con .links_list { + /* background: cornsilk; */ + height: 170px; + padding-left: 5px; + padding-top: 15px; +} + +.links_con .links_list li { + width: 136px; + height: 24px; + background: url("../images/btn_img_13.jpg") no-repeat left center; + font-size: 12px; + line-height: 24px; + padding-left: 13px; + float: left; +} + +.links_con .links_list li a { + color: #5f5f5f; + white-space:nowrap; +} + +.links_con .links_c { + width: 153px; + height: 250px; + background: #e5e5e5; + float: left; + margin: 0 50px; +} +.links_con .links_a { + width: 265px; + height: 24px; + font-size: 14px; + color: #8f8585; +} + +.links_con .links_c .links_list li { + width: 130px; +} + +.links_con .links_r { + width: 256px; + height: 250px; + background: #e5e5e5; + float: left; +} + +.links_con .links_r .map { + text-align: center; + padding-top: 11px; +} \ No newline at end of file diff --git a/assets/css/msgList.css b/assets/css/msgList.css new file mode 100644 index 0000000..e69de29 diff --git a/assets/css/public.css b/assets/css/public.css new file mode 100644 index 0000000..2a97d43 --- /dev/null +++ b/assets/css/public.css @@ -0,0 +1,138 @@ +@charset "utf-8"; + +/* 公共区域版心宽度一样,左右居中 */ + + +/* .header-wrap { + width: 1100px; + height: 62px; + margin: 0 auto; +} */ + +.header_con { + width: 1002px; + height: 100px; + /* background: pink; */ + /* 左右居中 */ + margin: 0 auto; +} + +.header_con h1 { + width: 604px; + height: 66px; + /* background: orange; */ + float: left; + padding: 34px 0 0 20px; +} + +.header_con form { + width: 227px; + height: 61px; + /* background: orangered; */ + float: left; + padding-top: 39px; + padding-right: 21px; +} + +.header_con .search { + width: 195px; + height: 26px; + background: #f1f1f1; + border: 1px solid #e5e5e5; + /* 清除右侧边框 */ + border-right: none; + float: left; + color: #888888; +} + +.header_con .btn { + width: 30px; + height: 26px; + border: none; + background: #f1f1f1 url("../images/search_03.jpg") no-repeat center; +} + +.header_con form div { + width: 30px; + height: 26px; + border: 1px solid #e5e5e5; + border-left: none; + float: left; + /* 给btn套盒子的时候也要加浮动 */ +} + +#nav { + height: 58px; + background: black; +} + +#nav .nav_con { + width: 1002px; + height: 58px; + background: black; + margin: 0 auto; +} + + +/* 导航横向排列 */ + +#nav .nav_con li { + width: 498px; + height: 58px; + float: left; + background: black; + /* 左右居中 */ + text-align: center; + /* 上下居中 */ + line-height: 58px; + border-left: 1px solid #4a4a4a; + font-size: 12px; +} + +.nav_con li a { + color: white; +} + +.margin-left { + margin-left: 25px; + border-left: none!important; +} + + +/* 公共样式的footer */ + +.footer_con { + height: 82px; + /* background: #cccccc; */ +} + +.footer_con .footer_l { + height: 58px; + float: left; + /* background: red; */ + padding-top: 24px; +} + +.footer_con .footer_l a { + font-size: 12px; + float: left; + color: #868686; + border-right: 1px solid #868686; + /* padding:字体和边框的距离哈 */ + padding: 0 7px; + padding-left: 15px; +} + +.footer_con .footer_l .footer-right { + border-right: none!important; +} + +.footer_con .footer_r { + height: 57px; + color: #8a8a8a; + font-size: 12px; + padding-top: 25px; + /* background: pink; */ + padding-right: 21px; + float: right; +} \ No newline at end of file diff --git a/assets/css/rainbow.css b/assets/css/rainbow.css new file mode 100644 index 0000000..cba9f83 --- /dev/null +++ b/assets/css/rainbow.css @@ -0,0 +1,93 @@ +.loader { + background: #000; + background: radial-gradient(#222, #000); + bottom: 0; + left: 0; + overflow: hidden; + position: fixed; + right: 0; + top: 0; + z-index: 99999; +} + +.loader-inner { + bottom: 0; + height: 60px; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + width: 100px; +} + +.loader-line-wrap { + animation: + spin 2000ms cubic-bezier(.175, .885, .32, 1.275) infinite +; + box-sizing: border-box; + height: 50px; + left: 0; + overflow: hidden; + position: absolute; + top: 0; + transform-origin: 50% 100%; + width: 100px; +} +.loader-line { + border: 4px solid transparent; + border-radius: 100%; + box-sizing: border-box; + height: 100px; + left: 0; + margin: 0 auto; + position: absolute; + right: 0; + top: 0; + width: 100px; +} +.loader-line-wrap:nth-child(1) { animation-delay: -50ms; } +.loader-line-wrap:nth-child(2) { animation-delay: -100ms; } +.loader-line-wrap:nth-child(3) { animation-delay: -150ms; } +.loader-line-wrap:nth-child(4) { animation-delay: -200ms; } +.loader-line-wrap:nth-child(5) { animation-delay: -250ms; } + +.loader-line-wrap:nth-child(1) .loader-line { + border-color: hsl(0, 80%, 60%); + height: 90px; + width: 90px; + top: 7px; +} +.loader-line-wrap:nth-child(2) .loader-line { + border-color: hsl(60, 80%, 60%); + height: 76px; + width: 76px; + top: 14px; +} +.loader-line-wrap:nth-child(3) .loader-line { + border-color: hsl(120, 80%, 60%); + height: 62px; + width: 62px; + top: 21px; +} +.loader-line-wrap:nth-child(4) .loader-line { + border-color: hsl(180, 80%, 60%); + height: 48px; + width: 48px; + top: 28px; +} +.loader-line-wrap:nth-child(5) .loader-line { + border-color: hsl(240, 80%, 60%); + height: 34px; + width: 34px; + top: 35px; +} + +@keyframes spin { + 0%, 15% { + transform: rotate(0); +} +100% { + transform: rotate(360deg); +} +} \ No newline at end of file diff --git a/assets/css/reset.css b/assets/css/reset.css new file mode 100644 index 0000000..37f2257 --- /dev/null +++ b/assets/css/reset.css @@ -0,0 +1,76 @@ +@charset "utf-8"; + +/* 重置样式表 */ + +* { + margin: 0; + padding: 0; +} + + +/* 统一页面文本 */ + +body { + font-size: 16px; + font-family: "微软雅黑"; +} + + +/* 清除列表符号 */ + +ul, +ol, +li { + list-style: none; +} + + +/* 清除下划线 */ + +u, +a { + text-decoration: none; +} + + +/* 清除倾斜 */ + +i, +em { + font-style: normal; +} + + +/* 清除加粗 */ + +b, +strong { + font-weight: normal; +} + + +/* 清除文本默认大小和加粗 */ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 16px; + font-weight: normal; +} + + +/* 边框清零 */ + +img { + border: none; +} + + +/* 清除聚焦时候的边框 */ + +input { + outline: none; +} \ No newline at end of file diff --git a/assets/echarts.js b/assets/echarts.js new file mode 100644 index 0000000..f3d8bbf --- /dev/null +++ b/assets/echarts.js @@ -0,0 +1,85683 @@ + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.echarts = {})); +}(this, (function (exports) { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + 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. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var Browser = (function () { + function Browser() { + this.firefox = false; + this.ie = false; + this.edge = false; + this.newEdge = false; + this.weChat = false; + } + return Browser; + }()); + var Env = (function () { + function Env() { + this.browser = new Browser(); + this.node = false; + this.wxa = false; + this.worker = false; + this.svgSupported = false; + this.touchEventsSupported = false; + this.pointerEventsSupported = false; + this.domSupported = false; + this.transformSupported = false; + this.transform3dSupported = false; + this.hasGlobalWindow = typeof window !== 'undefined'; + } + return Env; + }()); + var env = new Env(); + if (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') { + env.wxa = true; + env.touchEventsSupported = true; + } + else if (typeof document === 'undefined' && typeof self !== 'undefined') { + env.worker = true; + } + else if (typeof navigator === 'undefined' + || navigator.userAgent.indexOf('Node.js') === 0) { + env.node = true; + env.svgSupported = true; + } + else { + detect(navigator.userAgent, env); + } + function detect(ua, env) { + var browser = env.browser; + var firefox = ua.match(/Firefox\/([\d.]+)/); + var ie = ua.match(/MSIE\s([\d.]+)/) + || ua.match(/Trident\/.+?rv:(([\d.]+))/); + var edge = ua.match(/Edge?\/([\d.]+)/); + var weChat = (/micromessenger/i).test(ua); + if (firefox) { + browser.firefox = true; + browser.version = firefox[1]; + } + if (ie) { + browser.ie = true; + browser.version = ie[1]; + } + if (edge) { + browser.edge = true; + browser.version = edge[1]; + browser.newEdge = +edge[1].split('.')[0] > 18; + } + if (weChat) { + browser.weChat = true; + } + env.svgSupported = typeof SVGRect !== 'undefined'; + env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge; + env.pointerEventsSupported = 'onpointerdown' in window + && (browser.edge || (browser.ie && +browser.version >= 11)); + env.domSupported = typeof document !== 'undefined'; + var style = document.documentElement.style; + env.transform3dSupported = ((browser.ie && 'transition' in style) + || browser.edge + || (('WebKitCSSMatrix' in window) && ('m11' in new WebKitCSSMatrix())) + || 'MozPerspective' in style) + && !('OTransition' in style); + env.transformSupported = env.transform3dSupported + || (browser.ie && +browser.version >= 9); + } + + var DEFAULT_FONT_SIZE = 12; + var DEFAULT_FONT_FAMILY = 'sans-serif'; + var DEFAULT_FONT = DEFAULT_FONT_SIZE + "px " + DEFAULT_FONT_FAMILY; + var OFFSET = 20; + var SCALE = 100; + var defaultWidthMapStr = "007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N"; + function getTextWidthMap(mapStr) { + var map = {}; + if (typeof JSON === 'undefined') { + return map; + } + for (var i = 0; i < mapStr.length; i++) { + var char = String.fromCharCode(i + 32); + var size = (mapStr.charCodeAt(i) - OFFSET) / SCALE; + map[char] = size; + } + return map; + } + var DEFAULT_TEXT_WIDTH_MAP = getTextWidthMap(defaultWidthMapStr); + var platformApi = { + createCanvas: function () { + return typeof document !== 'undefined' + && document.createElement('canvas'); + }, + measureText: (function () { + var _ctx; + var _cachedFont; + return function (text, font) { + if (!_ctx) { + var canvas = platformApi.createCanvas(); + _ctx = canvas && canvas.getContext('2d'); + } + if (_ctx) { + if (_cachedFont !== font) { + _cachedFont = _ctx.font = font || DEFAULT_FONT; + } + return _ctx.measureText(text); + } + else { + text = text || ''; + font = font || DEFAULT_FONT; + var res = /(\d+)px/.exec(font); + var fontSize = res && +res[1] || DEFAULT_FONT_SIZE; + var width = 0; + if (font.indexOf('mono') >= 0) { + width = fontSize * text.length; + } + else { + for (var i = 0; i < text.length; i++) { + var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP[text[i]]; + width += preCalcWidth == null ? fontSize : (preCalcWidth * fontSize); + } + } + return { width: width }; + } + }; + })(), + loadImage: function (src, onload, onerror) { + var image = new Image(); + image.onload = onload; + image.onerror = onerror; + image.src = src; + return image; + } + }; + function setPlatformAPI(newPlatformApis) { + for (var key in platformApi) { + if (newPlatformApis[key]) { + platformApi[key] = newPlatformApis[key]; + } + } + } + + var BUILTIN_OBJECT = reduce([ + 'Function', + 'RegExp', + 'Date', + 'Error', + 'CanvasGradient', + 'CanvasPattern', + 'Image', + 'Canvas' + ], function (obj, val) { + obj['[object ' + val + ']'] = true; + return obj; + }, {}); + var TYPED_ARRAY = reduce([ + 'Int8', + 'Uint8', + 'Uint8Clamped', + 'Int16', + 'Uint16', + 'Int32', + 'Uint32', + 'Float32', + 'Float64' + ], function (obj, val) { + obj['[object ' + val + 'Array]'] = true; + return obj; + }, {}); + var objToString = Object.prototype.toString; + var arrayProto = Array.prototype; + var nativeForEach = arrayProto.forEach; + var nativeFilter = arrayProto.filter; + var nativeSlice = arrayProto.slice; + var nativeMap = arrayProto.map; + var ctorFunction = function () { }.constructor; + var protoFunction = ctorFunction ? ctorFunction.prototype : null; + var protoKey = '__proto__'; + var idStart = 0x0907; + function guid() { + return idStart++; + } + function logError() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + if (typeof console !== 'undefined') { + console.error.apply(console, args); + } + } + function clone(source) { + if (source == null || typeof source !== 'object') { + return source; + } + var result = source; + var typeStr = objToString.call(source); + if (typeStr === '[object Array]') { + if (!isPrimitive(source)) { + result = []; + for (var i = 0, len = source.length; i < len; i++) { + result[i] = clone(source[i]); + } + } + } + else if (TYPED_ARRAY[typeStr]) { + if (!isPrimitive(source)) { + var Ctor = source.constructor; + if (Ctor.from) { + result = Ctor.from(source); + } + else { + result = new Ctor(source.length); + for (var i = 0, len = source.length; i < len; i++) { + result[i] = source[i]; + } + } + } + } + else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) { + result = {}; + for (var key in source) { + if (source.hasOwnProperty(key) && key !== protoKey) { + result[key] = clone(source[key]); + } + } + } + return result; + } + function merge(target, source, overwrite) { + if (!isObject(source) || !isObject(target)) { + return overwrite ? clone(source) : target; + } + for (var key in source) { + if (source.hasOwnProperty(key) && key !== protoKey) { + var targetProp = target[key]; + var sourceProp = source[key]; + if (isObject(sourceProp) + && isObject(targetProp) + && !isArray(sourceProp) + && !isArray(targetProp) + && !isDom(sourceProp) + && !isDom(targetProp) + && !isBuiltInObject(sourceProp) + && !isBuiltInObject(targetProp) + && !isPrimitive(sourceProp) + && !isPrimitive(targetProp)) { + merge(targetProp, sourceProp, overwrite); + } + else if (overwrite || !(key in target)) { + target[key] = clone(source[key]); + } + } + } + return target; + } + function mergeAll(targetAndSources, overwrite) { + var result = targetAndSources[0]; + for (var i = 1, len = targetAndSources.length; i < len; i++) { + result = merge(result, targetAndSources[i], overwrite); + } + return result; + } + function extend(target, source) { + if (Object.assign) { + Object.assign(target, source); + } + else { + for (var key in source) { + if (source.hasOwnProperty(key) && key !== protoKey) { + target[key] = source[key]; + } + } + } + return target; + } + function defaults(target, source, overlay) { + var keysArr = keys(source); + for (var i = 0; i < keysArr.length; i++) { + var key = keysArr[i]; + if ((overlay ? source[key] != null : target[key] == null)) { + target[key] = source[key]; + } + } + return target; + } + var createCanvas = platformApi.createCanvas; + function indexOf(array, value) { + if (array) { + if (array.indexOf) { + return array.indexOf(value); + } + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === value) { + return i; + } + } + } + return -1; + } + function inherits(clazz, baseClazz) { + var clazzPrototype = clazz.prototype; + function F() { } + F.prototype = baseClazz.prototype; + clazz.prototype = new F(); + for (var prop in clazzPrototype) { + if (clazzPrototype.hasOwnProperty(prop)) { + clazz.prototype[prop] = clazzPrototype[prop]; + } + } + clazz.prototype.constructor = clazz; + clazz.superClass = baseClazz; + } + function mixin(target, source, override) { + target = 'prototype' in target ? target.prototype : target; + source = 'prototype' in source ? source.prototype : source; + if (Object.getOwnPropertyNames) { + var keyList = Object.getOwnPropertyNames(source); + for (var i = 0; i < keyList.length; i++) { + var key = keyList[i]; + if (key !== 'constructor') { + if ((override ? source[key] != null : target[key] == null)) { + target[key] = source[key]; + } + } + } + } + else { + defaults(target, source, override); + } + } + function isArrayLike(data) { + if (!data) { + return false; + } + if (typeof data === 'string') { + return false; + } + return typeof data.length === 'number'; + } + function each(arr, cb, context) { + if (!(arr && cb)) { + return; + } + if (arr.forEach && arr.forEach === nativeForEach) { + arr.forEach(cb, context); + } + else if (arr.length === +arr.length) { + for (var i = 0, len = arr.length; i < len; i++) { + cb.call(context, arr[i], i, arr); + } + } + else { + for (var key in arr) { + if (arr.hasOwnProperty(key)) { + cb.call(context, arr[key], key, arr); + } + } + } + } + function map(arr, cb, context) { + if (!arr) { + return []; + } + if (!cb) { + return slice(arr); + } + if (arr.map && arr.map === nativeMap) { + return arr.map(cb, context); + } + else { + var result = []; + for (var i = 0, len = arr.length; i < len; i++) { + result.push(cb.call(context, arr[i], i, arr)); + } + return result; + } + } + function reduce(arr, cb, memo, context) { + if (!(arr && cb)) { + return; + } + for (var i = 0, len = arr.length; i < len; i++) { + memo = cb.call(context, memo, arr[i], i, arr); + } + return memo; + } + function filter(arr, cb, context) { + if (!arr) { + return []; + } + if (!cb) { + return slice(arr); + } + if (arr.filter && arr.filter === nativeFilter) { + return arr.filter(cb, context); + } + else { + var result = []; + for (var i = 0, len = arr.length; i < len; i++) { + if (cb.call(context, arr[i], i, arr)) { + result.push(arr[i]); + } + } + return result; + } + } + function find(arr, cb, context) { + if (!(arr && cb)) { + return; + } + for (var i = 0, len = arr.length; i < len; i++) { + if (cb.call(context, arr[i], i, arr)) { + return arr[i]; + } + } + } + function keys(obj) { + if (!obj) { + return []; + } + if (Object.keys) { + return Object.keys(obj); + } + var keyList = []; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + keyList.push(key); + } + } + return keyList; + } + function bindPolyfill(func, context) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + return function () { + return func.apply(context, args.concat(nativeSlice.call(arguments))); + }; + } + var bind = (protoFunction && isFunction(protoFunction.bind)) + ? protoFunction.call.bind(protoFunction.bind) + : bindPolyfill; + function curry(func) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + return function () { + return func.apply(this, args.concat(nativeSlice.call(arguments))); + }; + } + function isArray(value) { + if (Array.isArray) { + return Array.isArray(value); + } + return objToString.call(value) === '[object Array]'; + } + function isFunction(value) { + return typeof value === 'function'; + } + function isString(value) { + return typeof value === 'string'; + } + function isStringSafe(value) { + return objToString.call(value) === '[object String]'; + } + function isNumber(value) { + return typeof value === 'number'; + } + function isObject(value) { + var type = typeof value; + return type === 'function' || (!!value && type === 'object'); + } + function isBuiltInObject(value) { + return !!BUILTIN_OBJECT[objToString.call(value)]; + } + function isTypedArray(value) { + return !!TYPED_ARRAY[objToString.call(value)]; + } + function isDom(value) { + return typeof value === 'object' + && typeof value.nodeType === 'number' + && typeof value.ownerDocument === 'object'; + } + function isGradientObject(value) { + return value.colorStops != null; + } + function isImagePatternObject(value) { + return value.image != null; + } + function isRegExp(value) { + return objToString.call(value) === '[object RegExp]'; + } + function eqNaN(value) { + return value !== value; + } + function retrieve() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + for (var i = 0, len = args.length; i < len; i++) { + if (args[i] != null) { + return args[i]; + } + } + } + function retrieve2(value0, value1) { + return value0 != null + ? value0 + : value1; + } + function retrieve3(value0, value1, value2) { + return value0 != null + ? value0 + : value1 != null + ? value1 + : value2; + } + function slice(arr) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + return nativeSlice.apply(arr, args); + } + function normalizeCssArray(val) { + if (typeof (val) === 'number') { + return [val, val, val, val]; + } + var len = val.length; + if (len === 2) { + return [val[0], val[1], val[0], val[1]]; + } + else if (len === 3) { + return [val[0], val[1], val[2], val[1]]; + } + return val; + } + function assert(condition, message) { + if (!condition) { + throw new Error(message); + } + } + function trim(str) { + if (str == null) { + return null; + } + else if (typeof str.trim === 'function') { + return str.trim(); + } + else { + return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + } + } + var primitiveKey = '__ec_primitive__'; + function setAsPrimitive(obj) { + obj[primitiveKey] = true; + } + function isPrimitive(obj) { + return obj[primitiveKey]; + } + var MapPolyfill = (function () { + function MapPolyfill() { + this.data = {}; + } + MapPolyfill.prototype["delete"] = function (key) { + var existed = this.has(key); + if (existed) { + delete this.data[key]; + } + return existed; + }; + MapPolyfill.prototype.has = function (key) { + return this.data.hasOwnProperty(key); + }; + MapPolyfill.prototype.get = function (key) { + return this.data[key]; + }; + MapPolyfill.prototype.set = function (key, value) { + this.data[key] = value; + return this; + }; + MapPolyfill.prototype.keys = function () { + return keys(this.data); + }; + MapPolyfill.prototype.forEach = function (callback) { + var data = this.data; + for (var key in data) { + if (data.hasOwnProperty(key)) { + callback(data[key], key); + } + } + }; + return MapPolyfill; + }()); + var isNativeMapSupported = typeof Map === 'function'; + function maybeNativeMap() { + return (isNativeMapSupported ? new Map() : new MapPolyfill()); + } + var HashMap = (function () { + function HashMap(obj) { + var isArr = isArray(obj); + this.data = maybeNativeMap(); + var thisMap = this; + (obj instanceof HashMap) + ? obj.each(visit) + : (obj && each(obj, visit)); + function visit(value, key) { + isArr ? thisMap.set(value, key) : thisMap.set(key, value); + } + } + HashMap.prototype.hasKey = function (key) { + return this.data.has(key); + }; + HashMap.prototype.get = function (key) { + return this.data.get(key); + }; + HashMap.prototype.set = function (key, value) { + this.data.set(key, value); + return value; + }; + HashMap.prototype.each = function (cb, context) { + this.data.forEach(function (value, key) { + cb.call(context, value, key); + }); + }; + HashMap.prototype.keys = function () { + var keys = this.data.keys(); + return isNativeMapSupported + ? Array.from(keys) + : keys; + }; + HashMap.prototype.removeKey = function (key) { + this.data["delete"](key); + }; + return HashMap; + }()); + function createHashMap(obj) { + return new HashMap(obj); + } + function concatArray(a, b) { + var newArray = new a.constructor(a.length + b.length); + for (var i = 0; i < a.length; i++) { + newArray[i] = a[i]; + } + var offset = a.length; + for (var i = 0; i < b.length; i++) { + newArray[i + offset] = b[i]; + } + return newArray; + } + function createObject(proto, properties) { + var obj; + if (Object.create) { + obj = Object.create(proto); + } + else { + var StyleCtor = function () { }; + StyleCtor.prototype = proto; + obj = new StyleCtor(); + } + if (properties) { + extend(obj, properties); + } + return obj; + } + function disableUserSelect(dom) { + var domStyle = dom.style; + domStyle.webkitUserSelect = 'none'; + domStyle.userSelect = 'none'; + domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)'; + domStyle['-webkit-touch-callout'] = 'none'; + } + function hasOwn(own, prop) { + return own.hasOwnProperty(prop); + } + function noop() { } + var RADIAN_TO_DEGREE = 180 / Math.PI; + + var util = /*#__PURE__*/Object.freeze({ + __proto__: null, + guid: guid, + logError: logError, + clone: clone, + merge: merge, + mergeAll: mergeAll, + extend: extend, + defaults: defaults, + createCanvas: createCanvas, + indexOf: indexOf, + inherits: inherits, + mixin: mixin, + isArrayLike: isArrayLike, + each: each, + map: map, + reduce: reduce, + filter: filter, + find: find, + keys: keys, + bind: bind, + curry: curry, + isArray: isArray, + isFunction: isFunction, + isString: isString, + isStringSafe: isStringSafe, + isNumber: isNumber, + isObject: isObject, + isBuiltInObject: isBuiltInObject, + isTypedArray: isTypedArray, + isDom: isDom, + isGradientObject: isGradientObject, + isImagePatternObject: isImagePatternObject, + isRegExp: isRegExp, + eqNaN: eqNaN, + retrieve: retrieve, + retrieve2: retrieve2, + retrieve3: retrieve3, + slice: slice, + normalizeCssArray: normalizeCssArray, + assert: assert, + trim: trim, + setAsPrimitive: setAsPrimitive, + isPrimitive: isPrimitive, + HashMap: HashMap, + createHashMap: createHashMap, + concatArray: concatArray, + createObject: createObject, + disableUserSelect: disableUserSelect, + hasOwn: hasOwn, + noop: noop, + RADIAN_TO_DEGREE: RADIAN_TO_DEGREE + }); + + function create(x, y) { + if (x == null) { + x = 0; + } + if (y == null) { + y = 0; + } + return [x, y]; + } + function copy(out, v) { + out[0] = v[0]; + out[1] = v[1]; + return out; + } + function clone$1(v) { + return [v[0], v[1]]; + } + function set(out, a, b) { + out[0] = a; + out[1] = b; + return out; + } + function add(out, v1, v2) { + out[0] = v1[0] + v2[0]; + out[1] = v1[1] + v2[1]; + return out; + } + function scaleAndAdd(out, v1, v2, a) { + out[0] = v1[0] + v2[0] * a; + out[1] = v1[1] + v2[1] * a; + return out; + } + function sub(out, v1, v2) { + out[0] = v1[0] - v2[0]; + out[1] = v1[1] - v2[1]; + return out; + } + function len(v) { + return Math.sqrt(lenSquare(v)); + } + var length = len; + function lenSquare(v) { + return v[0] * v[0] + v[1] * v[1]; + } + var lengthSquare = lenSquare; + function mul(out, v1, v2) { + out[0] = v1[0] * v2[0]; + out[1] = v1[1] * v2[1]; + return out; + } + function div(out, v1, v2) { + out[0] = v1[0] / v2[0]; + out[1] = v1[1] / v2[1]; + return out; + } + function dot(v1, v2) { + return v1[0] * v2[0] + v1[1] * v2[1]; + } + function scale(out, v, s) { + out[0] = v[0] * s; + out[1] = v[1] * s; + return out; + } + function normalize(out, v) { + var d = len(v); + if (d === 0) { + out[0] = 0; + out[1] = 0; + } + else { + out[0] = v[0] / d; + out[1] = v[1] / d; + } + return out; + } + function distance(v1, v2) { + return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + + (v1[1] - v2[1]) * (v1[1] - v2[1])); + } + var dist = distance; + function distanceSquare(v1, v2) { + return (v1[0] - v2[0]) * (v1[0] - v2[0]) + + (v1[1] - v2[1]) * (v1[1] - v2[1]); + } + var distSquare = distanceSquare; + function negate(out, v) { + out[0] = -v[0]; + out[1] = -v[1]; + return out; + } + function lerp(out, v1, v2, t) { + out[0] = v1[0] + t * (v2[0] - v1[0]); + out[1] = v1[1] + t * (v2[1] - v1[1]); + return out; + } + function applyTransform(out, v, m) { + var x = v[0]; + var y = v[1]; + out[0] = m[0] * x + m[2] * y + m[4]; + out[1] = m[1] * x + m[3] * y + m[5]; + return out; + } + function min(out, v1, v2) { + out[0] = Math.min(v1[0], v2[0]); + out[1] = Math.min(v1[1], v2[1]); + return out; + } + function max(out, v1, v2) { + out[0] = Math.max(v1[0], v2[0]); + out[1] = Math.max(v1[1], v2[1]); + return out; + } + + var vector = /*#__PURE__*/Object.freeze({ + __proto__: null, + create: create, + copy: copy, + clone: clone$1, + set: set, + add: add, + scaleAndAdd: scaleAndAdd, + sub: sub, + len: len, + length: length, + lenSquare: lenSquare, + lengthSquare: lengthSquare, + mul: mul, + div: div, + dot: dot, + scale: scale, + normalize: normalize, + distance: distance, + dist: dist, + distanceSquare: distanceSquare, + distSquare: distSquare, + negate: negate, + lerp: lerp, + applyTransform: applyTransform, + min: min, + max: max + }); + + var Param = (function () { + function Param(target, e) { + this.target = target; + this.topTarget = e && e.topTarget; + } + return Param; + }()); + var Draggable = (function () { + function Draggable(handler) { + this.handler = handler; + handler.on('mousedown', this._dragStart, this); + handler.on('mousemove', this._drag, this); + handler.on('mouseup', this._dragEnd, this); + } + Draggable.prototype._dragStart = function (e) { + var draggingTarget = e.target; + while (draggingTarget && !draggingTarget.draggable) { + draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget; + } + if (draggingTarget) { + this._draggingTarget = draggingTarget; + draggingTarget.dragging = true; + this._x = e.offsetX; + this._y = e.offsetY; + this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event); + } + }; + Draggable.prototype._drag = function (e) { + var draggingTarget = this._draggingTarget; + if (draggingTarget) { + var x = e.offsetX; + var y = e.offsetY; + var dx = x - this._x; + var dy = y - this._y; + this._x = x; + this._y = y; + draggingTarget.drift(dx, dy, e); + this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event); + var dropTarget = this.handler.findHover(x, y, draggingTarget).target; + var lastDropTarget = this._dropTarget; + this._dropTarget = dropTarget; + if (draggingTarget !== dropTarget) { + if (lastDropTarget && dropTarget !== lastDropTarget) { + this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event); + } + if (dropTarget && dropTarget !== lastDropTarget) { + this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event); + } + } + } + }; + Draggable.prototype._dragEnd = function (e) { + var draggingTarget = this._draggingTarget; + if (draggingTarget) { + draggingTarget.dragging = false; + } + this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event); + if (this._dropTarget) { + this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event); + } + this._draggingTarget = null; + this._dropTarget = null; + }; + return Draggable; + }()); + + var Eventful = (function () { + function Eventful(eventProcessors) { + if (eventProcessors) { + this._$eventProcessor = eventProcessors; + } + } + Eventful.prototype.on = function (event, query, handler, context) { + if (!this._$handlers) { + this._$handlers = {}; + } + var _h = this._$handlers; + if (typeof query === 'function') { + context = handler; + handler = query; + query = null; + } + if (!handler || !event) { + return this; + } + var eventProcessor = this._$eventProcessor; + if (query != null && eventProcessor && eventProcessor.normalizeQuery) { + query = eventProcessor.normalizeQuery(query); + } + if (!_h[event]) { + _h[event] = []; + } + for (var i = 0; i < _h[event].length; i++) { + if (_h[event][i].h === handler) { + return this; + } + } + var wrap = { + h: handler, + query: query, + ctx: (context || this), + callAtLast: handler.zrEventfulCallAtLast + }; + var lastIndex = _h[event].length - 1; + var lastWrap = _h[event][lastIndex]; + (lastWrap && lastWrap.callAtLast) + ? _h[event].splice(lastIndex, 0, wrap) + : _h[event].push(wrap); + return this; + }; + Eventful.prototype.isSilent = function (eventName) { + var _h = this._$handlers; + return !_h || !_h[eventName] || !_h[eventName].length; + }; + Eventful.prototype.off = function (eventType, handler) { + var _h = this._$handlers; + if (!_h) { + return this; + } + if (!eventType) { + this._$handlers = {}; + return this; + } + if (handler) { + if (_h[eventType]) { + var newList = []; + for (var i = 0, l = _h[eventType].length; i < l; i++) { + if (_h[eventType][i].h !== handler) { + newList.push(_h[eventType][i]); + } + } + _h[eventType] = newList; + } + if (_h[eventType] && _h[eventType].length === 0) { + delete _h[eventType]; + } + } + else { + delete _h[eventType]; + } + return this; + }; + Eventful.prototype.trigger = function (eventType) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + if (!this._$handlers) { + return this; + } + var _h = this._$handlers[eventType]; + var eventProcessor = this._$eventProcessor; + if (_h) { + var argLen = args.length; + var len = _h.length; + for (var i = 0; i < len; i++) { + var hItem = _h[i]; + if (eventProcessor + && eventProcessor.filter + && hItem.query != null + && !eventProcessor.filter(eventType, hItem.query)) { + continue; + } + switch (argLen) { + case 0: + hItem.h.call(hItem.ctx); + break; + case 1: + hItem.h.call(hItem.ctx, args[0]); + break; + case 2: + hItem.h.call(hItem.ctx, args[0], args[1]); + break; + default: + hItem.h.apply(hItem.ctx, args); + break; + } + } + } + eventProcessor && eventProcessor.afterTrigger + && eventProcessor.afterTrigger(eventType); + return this; + }; + Eventful.prototype.triggerWithContext = function (type) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + if (!this._$handlers) { + return this; + } + var _h = this._$handlers[type]; + var eventProcessor = this._$eventProcessor; + if (_h) { + var argLen = args.length; + var ctx = args[argLen - 1]; + var len = _h.length; + for (var i = 0; i < len; i++) { + var hItem = _h[i]; + if (eventProcessor + && eventProcessor.filter + && hItem.query != null + && !eventProcessor.filter(type, hItem.query)) { + continue; + } + switch (argLen) { + case 0: + hItem.h.call(ctx); + break; + case 1: + hItem.h.call(ctx, args[0]); + break; + case 2: + hItem.h.call(ctx, args[0], args[1]); + break; + default: + hItem.h.apply(ctx, args.slice(1, argLen - 1)); + break; + } + } + } + eventProcessor && eventProcessor.afterTrigger + && eventProcessor.afterTrigger(type); + return this; + }; + return Eventful; + }()); + + var LN2 = Math.log(2); + function determinant(rows, rank, rowStart, rowMask, colMask, detCache) { + var cacheKey = rowMask + '-' + colMask; + var fullRank = rows.length; + if (detCache.hasOwnProperty(cacheKey)) { + return detCache[cacheKey]; + } + if (rank === 1) { + var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2); + return rows[rowStart][colStart]; + } + var subRowMask = rowMask | (1 << rowStart); + var subRowStart = rowStart + 1; + while (rowMask & (1 << subRowStart)) { + subRowStart++; + } + var sum = 0; + for (var j = 0, colLocalIdx = 0; j < fullRank; j++) { + var colTag = 1 << j; + if (!(colTag & colMask)) { + sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] + * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache); + colLocalIdx++; + } + } + detCache[cacheKey] = sum; + return sum; + } + function buildTransformer(src, dest) { + var mA = [ + [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]], + [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]], + [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]], + [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]], + [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]], + [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]], + [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]], + [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]] + ]; + var detCache = {}; + var det = determinant(mA, 8, 0, 0, 0, detCache); + if (det === 0) { + return; + } + var vh = []; + for (var i = 0; i < 8; i++) { + for (var j = 0; j < 8; j++) { + vh[j] == null && (vh[j] = 0); + vh[j] += ((i + j) % 2 ? -1 : 1) + * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) + / det * dest[i]; + } + } + return function (out, srcPointX, srcPointY) { + var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1; + out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk; + out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk; + }; + } + + var EVENT_SAVED_PROP = '___zrEVENTSAVED'; + var _calcOut = []; + function transformLocalCoord(out, elFrom, elTarget, inX, inY) { + return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true) + && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]); + } + function transformCoordWithViewport(out, el, inX, inY, inverse) { + if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) { + var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {}); + var markers = prepareCoordMarkers(el, saved); + var transformer = preparePointerTransformer(markers, saved, inverse); + if (transformer) { + transformer(out, inX, inY); + return true; + } + } + return false; + } + function prepareCoordMarkers(el, saved) { + var markers = saved.markers; + if (markers) { + return markers; + } + markers = saved.markers = []; + var propLR = ['left', 'right']; + var propTB = ['top', 'bottom']; + for (var i = 0; i < 4; i++) { + var marker = document.createElement('div'); + var stl = marker.style; + var idxLR = i % 2; + var idxTB = (i >> 1) % 2; + stl.cssText = [ + 'position: absolute', + 'visibility: hidden', + 'padding: 0', + 'margin: 0', + 'border-width: 0', + 'user-select: none', + 'width:0', + 'height:0', + propLR[idxLR] + ':0', + propTB[idxTB] + ':0', + propLR[1 - idxLR] + ':auto', + propTB[1 - idxTB] + ':auto', + '' + ].join('!important;'); + el.appendChild(marker); + markers.push(marker); + } + return markers; + } + function preparePointerTransformer(markers, saved, inverse) { + var transformerName = inverse ? 'invTrans' : 'trans'; + var transformer = saved[transformerName]; + var oldSrcCoords = saved.srcCoords; + var srcCoords = []; + var destCoords = []; + var oldCoordTheSame = true; + for (var i = 0; i < 4; i++) { + var rect = markers[i].getBoundingClientRect(); + var ii = 2 * i; + var x = rect.left; + var y = rect.top; + srcCoords.push(x, y); + oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1]; + destCoords.push(markers[i].offsetLeft, markers[i].offsetTop); + } + return (oldCoordTheSame && transformer) + ? transformer + : (saved.srcCoords = srcCoords, + saved[transformerName] = inverse + ? buildTransformer(destCoords, srcCoords) + : buildTransformer(srcCoords, destCoords)); + } + function isCanvasEl(el) { + return el.nodeName.toUpperCase() === 'CANVAS'; + } + var replaceReg = /([&<>"'])/g; + var replaceMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + '\'': ''' + }; + function encodeHTML(source) { + return source == null + ? '' + : (source + '').replace(replaceReg, function (str, c) { + return replaceMap[c]; + }); + } + + var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/; + var _calcOut$1 = []; + var firefoxNotSupportOffsetXY = env.browser.firefox + && +env.browser.version.split('.')[0] < 39; + function clientToLocal(el, e, out, calculate) { + out = out || {}; + if (calculate) { + calculateZrXY(el, e, out); + } + else if (firefoxNotSupportOffsetXY + && e.layerX != null + && e.layerX !== e.offsetX) { + out.zrX = e.layerX; + out.zrY = e.layerY; + } + else if (e.offsetX != null) { + out.zrX = e.offsetX; + out.zrY = e.offsetY; + } + else { + calculateZrXY(el, e, out); + } + return out; + } + function calculateZrXY(el, e, out) { + if (env.domSupported && el.getBoundingClientRect) { + var ex = e.clientX; + var ey = e.clientY; + if (isCanvasEl(el)) { + var box = el.getBoundingClientRect(); + out.zrX = ex - box.left; + out.zrY = ey - box.top; + return; + } + else { + if (transformCoordWithViewport(_calcOut$1, el, ex, ey)) { + out.zrX = _calcOut$1[0]; + out.zrY = _calcOut$1[1]; + return; + } + } + } + out.zrX = out.zrY = 0; + } + function getNativeEvent(e) { + return e + || window.event; + } + function normalizeEvent(el, e, calculate) { + e = getNativeEvent(e); + if (e.zrX != null) { + return e; + } + var eventType = e.type; + var isTouch = eventType && eventType.indexOf('touch') >= 0; + if (!isTouch) { + clientToLocal(el, e, e, calculate); + var wheelDelta = getWheelDeltaMayPolyfill(e); + e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3; + } + else { + var touch = eventType !== 'touchend' + ? e.targetTouches[0] + : e.changedTouches[0]; + touch && clientToLocal(el, touch, e, calculate); + } + var button = e.button; + if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) { + e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0))); + } + return e; + } + function getWheelDeltaMayPolyfill(e) { + var rawWheelDelta = e.wheelDelta; + if (rawWheelDelta) { + return rawWheelDelta; + } + var deltaX = e.deltaX; + var deltaY = e.deltaY; + if (deltaX == null || deltaY == null) { + return rawWheelDelta; + } + var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX); + var sign = deltaY > 0 ? -1 + : deltaY < 0 ? 1 + : deltaX > 0 ? -1 + : 1; + return 3 * delta * sign; + } + function addEventListener(el, name, handler, opt) { + el.addEventListener(name, handler, opt); + } + function removeEventListener(el, name, handler, opt) { + el.removeEventListener(name, handler, opt); + } + var stop = function (e) { + e.preventDefault(); + e.stopPropagation(); + e.cancelBubble = true; + }; + function isMiddleOrRightButtonOnMouseUpDown(e) { + return e.which === 2 || e.which === 3; + } + + var GestureMgr = (function () { + function GestureMgr() { + this._track = []; + } + GestureMgr.prototype.recognize = function (event, target, root) { + this._doTrack(event, target, root); + return this._recognize(event); + }; + GestureMgr.prototype.clear = function () { + this._track.length = 0; + return this; + }; + GestureMgr.prototype._doTrack = function (event, target, root) { + var touches = event.touches; + if (!touches) { + return; + } + var trackItem = { + points: [], + touches: [], + target: target, + event: event + }; + for (var i = 0, len = touches.length; i < len; i++) { + var touch = touches[i]; + var pos = clientToLocal(root, touch, {}); + trackItem.points.push([pos.zrX, pos.zrY]); + trackItem.touches.push(touch); + } + this._track.push(trackItem); + }; + GestureMgr.prototype._recognize = function (event) { + for (var eventName in recognizers) { + if (recognizers.hasOwnProperty(eventName)) { + var gestureInfo = recognizers[eventName](this._track, event); + if (gestureInfo) { + return gestureInfo; + } + } + } + }; + return GestureMgr; + }()); + function dist$1(pointPair) { + var dx = pointPair[1][0] - pointPair[0][0]; + var dy = pointPair[1][1] - pointPair[0][1]; + return Math.sqrt(dx * dx + dy * dy); + } + function center(pointPair) { + return [ + (pointPair[0][0] + pointPair[1][0]) / 2, + (pointPair[0][1] + pointPair[1][1]) / 2 + ]; + } + var recognizers = { + pinch: function (tracks, event) { + var trackLen = tracks.length; + if (!trackLen) { + return; + } + var pinchEnd = (tracks[trackLen - 1] || {}).points; + var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd; + if (pinchPre + && pinchPre.length > 1 + && pinchEnd + && pinchEnd.length > 1) { + var pinchScale = dist$1(pinchEnd) / dist$1(pinchPre); + !isFinite(pinchScale) && (pinchScale = 1); + event.pinchScale = pinchScale; + var pinchCenter = center(pinchEnd); + event.pinchX = pinchCenter[0]; + event.pinchY = pinchCenter[1]; + return { + type: 'pinch', + target: tracks[0].target, + event: event + }; + } + } + }; + + function create$1() { + return [1, 0, 0, 1, 0, 0]; + } + function identity(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 1; + out[4] = 0; + out[5] = 0; + return out; + } + function copy$1(out, m) { + out[0] = m[0]; + out[1] = m[1]; + out[2] = m[2]; + out[3] = m[3]; + out[4] = m[4]; + out[5] = m[5]; + return out; + } + function mul$1(out, m1, m2) { + var out0 = m1[0] * m2[0] + m1[2] * m2[1]; + var out1 = m1[1] * m2[0] + m1[3] * m2[1]; + var out2 = m1[0] * m2[2] + m1[2] * m2[3]; + var out3 = m1[1] * m2[2] + m1[3] * m2[3]; + var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4]; + var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5]; + out[0] = out0; + out[1] = out1; + out[2] = out2; + out[3] = out3; + out[4] = out4; + out[5] = out5; + return out; + } + function translate(out, a, v) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4] + v[0]; + out[5] = a[5] + v[1]; + return out; + } + function rotate(out, a, rad, pivot) { + if (pivot === void 0) { pivot = [0, 0]; } + var aa = a[0]; + var ac = a[2]; + var atx = a[4]; + var ab = a[1]; + var ad = a[3]; + var aty = a[5]; + var st = Math.sin(rad); + var ct = Math.cos(rad); + out[0] = aa * ct + ab * st; + out[1] = -aa * st + ab * ct; + out[2] = ac * ct + ad * st; + out[3] = -ac * st + ct * ad; + out[4] = ct * (atx - pivot[0]) + st * (aty - pivot[1]) + pivot[0]; + out[5] = ct * (aty - pivot[1]) - st * (atx - pivot[0]) + pivot[1]; + return out; + } + function scale$1(out, a, v) { + var vx = v[0]; + var vy = v[1]; + out[0] = a[0] * vx; + out[1] = a[1] * vy; + out[2] = a[2] * vx; + out[3] = a[3] * vy; + out[4] = a[4] * vx; + out[5] = a[5] * vy; + return out; + } + function invert(out, a) { + var aa = a[0]; + var ac = a[2]; + var atx = a[4]; + var ab = a[1]; + var ad = a[3]; + var aty = a[5]; + var det = aa * ad - ab * ac; + if (!det) { + return null; + } + det = 1.0 / det; + out[0] = ad * det; + out[1] = -ab * det; + out[2] = -ac * det; + out[3] = aa * det; + out[4] = (ac * aty - ad * atx) * det; + out[5] = (ab * atx - aa * aty) * det; + return out; + } + function clone$2(a) { + var b = create$1(); + copy$1(b, a); + return b; + } + + var matrix = /*#__PURE__*/Object.freeze({ + __proto__: null, + create: create$1, + identity: identity, + copy: copy$1, + mul: mul$1, + translate: translate, + rotate: rotate, + scale: scale$1, + invert: invert, + clone: clone$2 + }); + + var Point = (function () { + function Point(x, y) { + this.x = x || 0; + this.y = y || 0; + } + Point.prototype.copy = function (other) { + this.x = other.x; + this.y = other.y; + return this; + }; + Point.prototype.clone = function () { + return new Point(this.x, this.y); + }; + Point.prototype.set = function (x, y) { + this.x = x; + this.y = y; + return this; + }; + Point.prototype.equal = function (other) { + return other.x === this.x && other.y === this.y; + }; + Point.prototype.add = function (other) { + this.x += other.x; + this.y += other.y; + return this; + }; + Point.prototype.scale = function (scalar) { + this.x *= scalar; + this.y *= scalar; + }; + Point.prototype.scaleAndAdd = function (other, scalar) { + this.x += other.x * scalar; + this.y += other.y * scalar; + }; + Point.prototype.sub = function (other) { + this.x -= other.x; + this.y -= other.y; + return this; + }; + Point.prototype.dot = function (other) { + return this.x * other.x + this.y * other.y; + }; + Point.prototype.len = function () { + return Math.sqrt(this.x * this.x + this.y * this.y); + }; + Point.prototype.lenSquare = function () { + return this.x * this.x + this.y * this.y; + }; + Point.prototype.normalize = function () { + var len = this.len(); + this.x /= len; + this.y /= len; + return this; + }; + Point.prototype.distance = function (other) { + var dx = this.x - other.x; + var dy = this.y - other.y; + return Math.sqrt(dx * dx + dy * dy); + }; + Point.prototype.distanceSquare = function (other) { + var dx = this.x - other.x; + var dy = this.y - other.y; + return dx * dx + dy * dy; + }; + Point.prototype.negate = function () { + this.x = -this.x; + this.y = -this.y; + return this; + }; + Point.prototype.transform = function (m) { + if (!m) { + return; + } + var x = this.x; + var y = this.y; + this.x = m[0] * x + m[2] * y + m[4]; + this.y = m[1] * x + m[3] * y + m[5]; + return this; + }; + Point.prototype.toArray = function (out) { + out[0] = this.x; + out[1] = this.y; + return out; + }; + Point.prototype.fromArray = function (input) { + this.x = input[0]; + this.y = input[1]; + }; + Point.set = function (p, x, y) { + p.x = x; + p.y = y; + }; + Point.copy = function (p, p2) { + p.x = p2.x; + p.y = p2.y; + }; + Point.len = function (p) { + return Math.sqrt(p.x * p.x + p.y * p.y); + }; + Point.lenSquare = function (p) { + return p.x * p.x + p.y * p.y; + }; + Point.dot = function (p0, p1) { + return p0.x * p1.x + p0.y * p1.y; + }; + Point.add = function (out, p0, p1) { + out.x = p0.x + p1.x; + out.y = p0.y + p1.y; + }; + Point.sub = function (out, p0, p1) { + out.x = p0.x - p1.x; + out.y = p0.y - p1.y; + }; + Point.scale = function (out, p0, scalar) { + out.x = p0.x * scalar; + out.y = p0.y * scalar; + }; + Point.scaleAndAdd = function (out, p0, p1, scalar) { + out.x = p0.x + p1.x * scalar; + out.y = p0.y + p1.y * scalar; + }; + Point.lerp = function (out, p0, p1, t) { + var onet = 1 - t; + out.x = onet * p0.x + t * p1.x; + out.y = onet * p0.y + t * p1.y; + }; + return Point; + }()); + + var mathMin = Math.min; + var mathMax = Math.max; + var lt = new Point(); + var rb = new Point(); + var lb = new Point(); + var rt = new Point(); + var minTv = new Point(); + var maxTv = new Point(); + var BoundingRect = (function () { + function BoundingRect(x, y, width, height) { + if (width < 0) { + x = x + width; + width = -width; + } + if (height < 0) { + y = y + height; + height = -height; + } + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + BoundingRect.prototype.union = function (other) { + var x = mathMin(other.x, this.x); + var y = mathMin(other.y, this.y); + if (isFinite(this.x) && isFinite(this.width)) { + this.width = mathMax(other.x + other.width, this.x + this.width) - x; + } + else { + this.width = other.width; + } + if (isFinite(this.y) && isFinite(this.height)) { + this.height = mathMax(other.y + other.height, this.y + this.height) - y; + } + else { + this.height = other.height; + } + this.x = x; + this.y = y; + }; + BoundingRect.prototype.applyTransform = function (m) { + BoundingRect.applyTransform(this, this, m); + }; + BoundingRect.prototype.calculateTransform = function (b) { + var a = this; + var sx = b.width / a.width; + var sy = b.height / a.height; + var m = create$1(); + translate(m, m, [-a.x, -a.y]); + scale$1(m, m, [sx, sy]); + translate(m, m, [b.x, b.y]); + return m; + }; + BoundingRect.prototype.intersect = function (b, mtv) { + if (!b) { + return false; + } + if (!(b instanceof BoundingRect)) { + b = BoundingRect.create(b); + } + var a = this; + var ax0 = a.x; + var ax1 = a.x + a.width; + var ay0 = a.y; + var ay1 = a.y + a.height; + var bx0 = b.x; + var bx1 = b.x + b.width; + var by0 = b.y; + var by1 = b.y + b.height; + var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0); + if (mtv) { + var dMin = Infinity; + var dMax = 0; + var d0 = Math.abs(ax1 - bx0); + var d1 = Math.abs(bx1 - ax0); + var d2 = Math.abs(ay1 - by0); + var d3 = Math.abs(by1 - ay0); + var dx = Math.min(d0, d1); + var dy = Math.min(d2, d3); + if (ax1 < bx0 || bx1 < ax0) { + if (dx > dMax) { + dMax = dx; + if (d0 < d1) { + Point.set(maxTv, -d0, 0); + } + else { + Point.set(maxTv, d1, 0); + } + } + } + else { + if (dx < dMin) { + dMin = dx; + if (d0 < d1) { + Point.set(minTv, d0, 0); + } + else { + Point.set(minTv, -d1, 0); + } + } + } + if (ay1 < by0 || by1 < ay0) { + if (dy > dMax) { + dMax = dy; + if (d2 < d3) { + Point.set(maxTv, 0, -d2); + } + else { + Point.set(maxTv, 0, d3); + } + } + } + else { + if (dx < dMin) { + dMin = dx; + if (d2 < d3) { + Point.set(minTv, 0, d2); + } + else { + Point.set(minTv, 0, -d3); + } + } + } + } + if (mtv) { + Point.copy(mtv, overlap ? minTv : maxTv); + } + return overlap; + }; + BoundingRect.prototype.contain = function (x, y) { + var rect = this; + return x >= rect.x + && x <= (rect.x + rect.width) + && y >= rect.y + && y <= (rect.y + rect.height); + }; + BoundingRect.prototype.clone = function () { + return new BoundingRect(this.x, this.y, this.width, this.height); + }; + BoundingRect.prototype.copy = function (other) { + BoundingRect.copy(this, other); + }; + BoundingRect.prototype.plain = function () { + return { + x: this.x, + y: this.y, + width: this.width, + height: this.height + }; + }; + BoundingRect.prototype.isFinite = function () { + return isFinite(this.x) + && isFinite(this.y) + && isFinite(this.width) + && isFinite(this.height); + }; + BoundingRect.prototype.isZero = function () { + return this.width === 0 || this.height === 0; + }; + BoundingRect.create = function (rect) { + return new BoundingRect(rect.x, rect.y, rect.width, rect.height); + }; + BoundingRect.copy = function (target, source) { + target.x = source.x; + target.y = source.y; + target.width = source.width; + target.height = source.height; + }; + BoundingRect.applyTransform = function (target, source, m) { + if (!m) { + if (target !== source) { + BoundingRect.copy(target, source); + } + return; + } + if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) { + var sx = m[0]; + var sy = m[3]; + var tx = m[4]; + var ty = m[5]; + target.x = source.x * sx + tx; + target.y = source.y * sy + ty; + target.width = source.width * sx; + target.height = source.height * sy; + if (target.width < 0) { + target.x += target.width; + target.width = -target.width; + } + if (target.height < 0) { + target.y += target.height; + target.height = -target.height; + } + return; + } + lt.x = lb.x = source.x; + lt.y = rt.y = source.y; + rb.x = rt.x = source.x + source.width; + rb.y = lb.y = source.y + source.height; + lt.transform(m); + rt.transform(m); + rb.transform(m); + lb.transform(m); + target.x = mathMin(lt.x, rb.x, lb.x, rt.x); + target.y = mathMin(lt.y, rb.y, lb.y, rt.y); + var maxX = mathMax(lt.x, rb.x, lb.x, rt.x); + var maxY = mathMax(lt.y, rb.y, lb.y, rt.y); + target.width = maxX - target.x; + target.height = maxY - target.y; + }; + return BoundingRect; + }()); + + var SILENT = 'silent'; + function makeEventPacket(eveType, targetInfo, event) { + return { + type: eveType, + event: event, + target: targetInfo.target, + topTarget: targetInfo.topTarget, + cancelBubble: false, + offsetX: event.zrX, + offsetY: event.zrY, + gestureEvent: event.gestureEvent, + pinchX: event.pinchX, + pinchY: event.pinchY, + pinchScale: event.pinchScale, + wheelDelta: event.zrDelta, + zrByTouch: event.zrByTouch, + which: event.which, + stop: stopEvent + }; + } + function stopEvent() { + stop(this.event); + } + var EmptyProxy = (function (_super) { + __extends(EmptyProxy, _super); + function EmptyProxy() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.handler = null; + return _this; + } + EmptyProxy.prototype.dispose = function () { }; + EmptyProxy.prototype.setCursor = function () { }; + return EmptyProxy; + }(Eventful)); + var HoveredResult = (function () { + function HoveredResult(x, y) { + this.x = x; + this.y = y; + } + return HoveredResult; + }()); + var handlerNames = [ + 'click', 'dblclick', 'mousewheel', 'mouseout', + 'mouseup', 'mousedown', 'mousemove', 'contextmenu' + ]; + var tmpRect = new BoundingRect(0, 0, 0, 0); + var Handler = (function (_super) { + __extends(Handler, _super); + function Handler(storage, painter, proxy, painterRoot, pointerSize) { + var _this = _super.call(this) || this; + _this._hovered = new HoveredResult(0, 0); + _this.storage = storage; + _this.painter = painter; + _this.painterRoot = painterRoot; + _this._pointerSize = pointerSize; + proxy = proxy || new EmptyProxy(); + _this.proxy = null; + _this.setHandlerProxy(proxy); + _this._draggingMgr = new Draggable(_this); + return _this; + } + Handler.prototype.setHandlerProxy = function (proxy) { + if (this.proxy) { + this.proxy.dispose(); + } + if (proxy) { + each(handlerNames, function (name) { + proxy.on && proxy.on(name, this[name], this); + }, this); + proxy.handler = this; + } + this.proxy = proxy; + }; + Handler.prototype.mousemove = function (event) { + var x = event.zrX; + var y = event.zrY; + var isOutside = isOutsideBoundary(this, x, y); + var lastHovered = this._hovered; + var lastHoveredTarget = lastHovered.target; + if (lastHoveredTarget && !lastHoveredTarget.__zr) { + lastHovered = this.findHover(lastHovered.x, lastHovered.y); + lastHoveredTarget = lastHovered.target; + } + var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y); + var hoveredTarget = hovered.target; + var proxy = this.proxy; + proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default'); + if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) { + this.dispatchToElement(lastHovered, 'mouseout', event); + } + this.dispatchToElement(hovered, 'mousemove', event); + if (hoveredTarget && hoveredTarget !== lastHoveredTarget) { + this.dispatchToElement(hovered, 'mouseover', event); + } + }; + Handler.prototype.mouseout = function (event) { + var eventControl = event.zrEventControl; + if (eventControl !== 'only_globalout') { + this.dispatchToElement(this._hovered, 'mouseout', event); + } + if (eventControl !== 'no_globalout') { + this.trigger('globalout', { type: 'globalout', event: event }); + } + }; + Handler.prototype.resize = function () { + this._hovered = new HoveredResult(0, 0); + }; + Handler.prototype.dispatch = function (eventName, eventArgs) { + var handler = this[eventName]; + handler && handler.call(this, eventArgs); + }; + Handler.prototype.dispose = function () { + this.proxy.dispose(); + this.storage = null; + this.proxy = null; + this.painter = null; + }; + Handler.prototype.setCursorStyle = function (cursorStyle) { + var proxy = this.proxy; + proxy.setCursor && proxy.setCursor(cursorStyle); + }; + Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) { + targetInfo = targetInfo || {}; + var el = targetInfo.target; + if (el && el.silent) { + return; + } + var eventKey = ('on' + eventName); + var eventPacket = makeEventPacket(eventName, targetInfo, event); + while (el) { + el[eventKey] + && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket)); + el.trigger(eventName, eventPacket); + el = el.__hostTarget ? el.__hostTarget : el.parent; + if (eventPacket.cancelBubble) { + break; + } + } + if (!eventPacket.cancelBubble) { + this.trigger(eventName, eventPacket); + if (this.painter && this.painter.eachOtherLayer) { + this.painter.eachOtherLayer(function (layer) { + if (typeof (layer[eventKey]) === 'function') { + layer[eventKey].call(layer, eventPacket); + } + if (layer.trigger) { + layer.trigger(eventName, eventPacket); + } + }); + } + } + }; + Handler.prototype.findHover = function (x, y, exclude) { + var list = this.storage.getDisplayList(); + var out = new HoveredResult(x, y); + setHoverTarget(list, out, x, y, exclude); + if (this._pointerSize && !out.target) { + var candidates = []; + var pointerSize = this._pointerSize; + var targetSizeHalf = pointerSize / 2; + var pointerRect = new BoundingRect(x - targetSizeHalf, y - targetSizeHalf, pointerSize, pointerSize); + for (var i = list.length - 1; i >= 0; i--) { + var el = list[i]; + if (el !== exclude + && !el.ignore + && !el.ignoreCoarsePointer + && (!el.parent || !el.parent.ignoreCoarsePointer)) { + tmpRect.copy(el.getBoundingRect()); + if (el.transform) { + tmpRect.applyTransform(el.transform); + } + if (tmpRect.intersect(pointerRect)) { + candidates.push(el); + } + } + } + if (candidates.length) { + var rStep = 4; + var thetaStep = Math.PI / 12; + var PI2 = Math.PI * 2; + for (var r = 0; r < targetSizeHalf; r += rStep) { + for (var theta = 0; theta < PI2; theta += thetaStep) { + var x1 = x + r * Math.cos(theta); + var y1 = y + r * Math.sin(theta); + setHoverTarget(candidates, out, x1, y1, exclude); + if (out.target) { + return out; + } + } + } + } + } + return out; + }; + Handler.prototype.processGesture = function (event, stage) { + if (!this._gestureMgr) { + this._gestureMgr = new GestureMgr(); + } + var gestureMgr = this._gestureMgr; + stage === 'start' && gestureMgr.clear(); + var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom); + stage === 'end' && gestureMgr.clear(); + if (gestureInfo) { + var type = gestureInfo.type; + event.gestureEvent = type; + var res = new HoveredResult(); + res.target = gestureInfo.target; + this.dispatchToElement(res, type, gestureInfo.event); + } + }; + return Handler; + }(Eventful)); + each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) { + Handler.prototype[name] = function (event) { + var x = event.zrX; + var y = event.zrY; + var isOutside = isOutsideBoundary(this, x, y); + var hovered; + var hoveredTarget; + if (name !== 'mouseup' || !isOutside) { + hovered = this.findHover(x, y); + hoveredTarget = hovered.target; + } + if (name === 'mousedown') { + this._downEl = hoveredTarget; + this._downPoint = [event.zrX, event.zrY]; + this._upEl = hoveredTarget; + } + else if (name === 'mouseup') { + this._upEl = hoveredTarget; + } + else if (name === 'click') { + if (this._downEl !== this._upEl + || !this._downPoint + || dist(this._downPoint, [event.zrX, event.zrY]) > 4) { + return; + } + this._downPoint = null; + } + this.dispatchToElement(hovered, name, event); + }; + }); + function isHover(displayable, x, y) { + if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) { + var el = displayable; + var isSilent = void 0; + var ignoreClip = false; + while (el) { + if (el.ignoreClip) { + ignoreClip = true; + } + if (!ignoreClip) { + var clipPath = el.getClipPath(); + if (clipPath && !clipPath.contain(x, y)) { + return false; + } + } + if (el.silent) { + isSilent = true; + } + var hostEl = el.__hostTarget; + el = hostEl ? hostEl : el.parent; + } + return isSilent ? SILENT : true; + } + return false; + } + function setHoverTarget(list, out, x, y, exclude) { + for (var i = list.length - 1; i >= 0; i--) { + var el = list[i]; + var hoverCheckResult = void 0; + if (el !== exclude + && !el.ignore + && (hoverCheckResult = isHover(el, x, y))) { + !out.topTarget && (out.topTarget = el); + if (hoverCheckResult !== SILENT) { + out.target = el; + break; + } + } + } + } + function isOutsideBoundary(handlerInstance, x, y) { + var painter = handlerInstance.painter; + return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight(); + } + + var DEFAULT_MIN_MERGE = 32; + var DEFAULT_MIN_GALLOPING = 7; + function minRunLength(n) { + var r = 0; + while (n >= DEFAULT_MIN_MERGE) { + r |= n & 1; + n >>= 1; + } + return n + r; + } + function makeAscendingRun(array, lo, hi, compare) { + var runHi = lo + 1; + if (runHi === hi) { + return 1; + } + if (compare(array[runHi++], array[lo]) < 0) { + while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) { + runHi++; + } + reverseRun(array, lo, runHi); + } + else { + while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) { + runHi++; + } + } + return runHi - lo; + } + function reverseRun(array, lo, hi) { + hi--; + while (lo < hi) { + var t = array[lo]; + array[lo++] = array[hi]; + array[hi--] = t; + } + } + function binaryInsertionSort(array, lo, hi, start, compare) { + if (start === lo) { + start++; + } + for (; start < hi; start++) { + var pivot = array[start]; + var left = lo; + var right = start; + var mid; + while (left < right) { + mid = left + right >>> 1; + if (compare(pivot, array[mid]) < 0) { + right = mid; + } + else { + left = mid + 1; + } + } + var n = start - left; + switch (n) { + case 3: + array[left + 3] = array[left + 2]; + case 2: + array[left + 2] = array[left + 1]; + case 1: + array[left + 1] = array[left]; + break; + default: + while (n > 0) { + array[left + n] = array[left + n - 1]; + n--; + } + } + array[left] = pivot; + } + } + function gallopLeft(value, array, start, length, hint, compare) { + var lastOffset = 0; + var maxOffset = 0; + var offset = 1; + if (compare(value, array[start + hint]) > 0) { + maxOffset = length - hint; + while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) { + lastOffset = offset; + offset = (offset << 1) + 1; + if (offset <= 0) { + offset = maxOffset; + } + } + if (offset > maxOffset) { + offset = maxOffset; + } + lastOffset += hint; + offset += hint; + } + else { + maxOffset = hint + 1; + while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) { + lastOffset = offset; + offset = (offset << 1) + 1; + if (offset <= 0) { + offset = maxOffset; + } + } + if (offset > maxOffset) { + offset = maxOffset; + } + var tmp = lastOffset; + lastOffset = hint - offset; + offset = hint - tmp; + } + lastOffset++; + while (lastOffset < offset) { + var m = lastOffset + (offset - lastOffset >>> 1); + if (compare(value, array[start + m]) > 0) { + lastOffset = m + 1; + } + else { + offset = m; + } + } + return offset; + } + function gallopRight(value, array, start, length, hint, compare) { + var lastOffset = 0; + var maxOffset = 0; + var offset = 1; + if (compare(value, array[start + hint]) < 0) { + maxOffset = hint + 1; + while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) { + lastOffset = offset; + offset = (offset << 1) + 1; + if (offset <= 0) { + offset = maxOffset; + } + } + if (offset > maxOffset) { + offset = maxOffset; + } + var tmp = lastOffset; + lastOffset = hint - offset; + offset = hint - tmp; + } + else { + maxOffset = length - hint; + while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) { + lastOffset = offset; + offset = (offset << 1) + 1; + if (offset <= 0) { + offset = maxOffset; + } + } + if (offset > maxOffset) { + offset = maxOffset; + } + lastOffset += hint; + offset += hint; + } + lastOffset++; + while (lastOffset < offset) { + var m = lastOffset + (offset - lastOffset >>> 1); + if (compare(value, array[start + m]) < 0) { + offset = m; + } + else { + lastOffset = m + 1; + } + } + return offset; + } + function TimSort(array, compare) { + var minGallop = DEFAULT_MIN_GALLOPING; + var runStart; + var runLength; + var stackSize = 0; + var tmp = []; + runStart = []; + runLength = []; + function pushRun(_runStart, _runLength) { + runStart[stackSize] = _runStart; + runLength[stackSize] = _runLength; + stackSize += 1; + } + function mergeRuns() { + while (stackSize > 1) { + var n = stackSize - 2; + if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1]) + || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) { + if (runLength[n - 1] < runLength[n + 1]) { + n--; + } + } + else if (runLength[n] > runLength[n + 1]) { + break; + } + mergeAt(n); + } + } + function forceMergeRuns() { + while (stackSize > 1) { + var n = stackSize - 2; + if (n > 0 && runLength[n - 1] < runLength[n + 1]) { + n--; + } + mergeAt(n); + } + } + function mergeAt(i) { + var start1 = runStart[i]; + var length1 = runLength[i]; + var start2 = runStart[i + 1]; + var length2 = runLength[i + 1]; + runLength[i] = length1 + length2; + if (i === stackSize - 3) { + runStart[i + 1] = runStart[i + 2]; + runLength[i + 1] = runLength[i + 2]; + } + stackSize--; + var k = gallopRight(array[start2], array, start1, length1, 0, compare); + start1 += k; + length1 -= k; + if (length1 === 0) { + return; + } + length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare); + if (length2 === 0) { + return; + } + if (length1 <= length2) { + mergeLow(start1, length1, start2, length2); + } + else { + mergeHigh(start1, length1, start2, length2); + } + } + function mergeLow(start1, length1, start2, length2) { + var i = 0; + for (i = 0; i < length1; i++) { + tmp[i] = array[start1 + i]; + } + var cursor1 = 0; + var cursor2 = start2; + var dest = start1; + array[dest++] = array[cursor2++]; + if (--length2 === 0) { + for (i = 0; i < length1; i++) { + array[dest + i] = tmp[cursor1 + i]; + } + return; + } + if (length1 === 1) { + for (i = 0; i < length2; i++) { + array[dest + i] = array[cursor2 + i]; + } + array[dest + length2] = tmp[cursor1]; + return; + } + var _minGallop = minGallop; + var count1; + var count2; + var exit; + while (1) { + count1 = 0; + count2 = 0; + exit = false; + do { + if (compare(array[cursor2], tmp[cursor1]) < 0) { + array[dest++] = array[cursor2++]; + count2++; + count1 = 0; + if (--length2 === 0) { + exit = true; + break; + } + } + else { + array[dest++] = tmp[cursor1++]; + count1++; + count2 = 0; + if (--length1 === 1) { + exit = true; + break; + } + } + } while ((count1 | count2) < _minGallop); + if (exit) { + break; + } + do { + count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare); + if (count1 !== 0) { + for (i = 0; i < count1; i++) { + array[dest + i] = tmp[cursor1 + i]; + } + dest += count1; + cursor1 += count1; + length1 -= count1; + if (length1 <= 1) { + exit = true; + break; + } + } + array[dest++] = array[cursor2++]; + if (--length2 === 0) { + exit = true; + break; + } + count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare); + if (count2 !== 0) { + for (i = 0; i < count2; i++) { + array[dest + i] = array[cursor2 + i]; + } + dest += count2; + cursor2 += count2; + length2 -= count2; + if (length2 === 0) { + exit = true; + break; + } + } + array[dest++] = tmp[cursor1++]; + if (--length1 === 1) { + exit = true; + break; + } + _minGallop--; + } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); + if (exit) { + break; + } + if (_minGallop < 0) { + _minGallop = 0; + } + _minGallop += 2; + } + minGallop = _minGallop; + minGallop < 1 && (minGallop = 1); + if (length1 === 1) { + for (i = 0; i < length2; i++) { + array[dest + i] = array[cursor2 + i]; + } + array[dest + length2] = tmp[cursor1]; + } + else if (length1 === 0) { + throw new Error(); + } + else { + for (i = 0; i < length1; i++) { + array[dest + i] = tmp[cursor1 + i]; + } + } + } + function mergeHigh(start1, length1, start2, length2) { + var i = 0; + for (i = 0; i < length2; i++) { + tmp[i] = array[start2 + i]; + } + var cursor1 = start1 + length1 - 1; + var cursor2 = length2 - 1; + var dest = start2 + length2 - 1; + var customCursor = 0; + var customDest = 0; + array[dest--] = array[cursor1--]; + if (--length1 === 0) { + customCursor = dest - (length2 - 1); + for (i = 0; i < length2; i++) { + array[customCursor + i] = tmp[i]; + } + return; + } + if (length2 === 1) { + dest -= length1; + cursor1 -= length1; + customDest = dest + 1; + customCursor = cursor1 + 1; + for (i = length1 - 1; i >= 0; i--) { + array[customDest + i] = array[customCursor + i]; + } + array[dest] = tmp[cursor2]; + return; + } + var _minGallop = minGallop; + while (true) { + var count1 = 0; + var count2 = 0; + var exit = false; + do { + if (compare(tmp[cursor2], array[cursor1]) < 0) { + array[dest--] = array[cursor1--]; + count1++; + count2 = 0; + if (--length1 === 0) { + exit = true; + break; + } + } + else { + array[dest--] = tmp[cursor2--]; + count2++; + count1 = 0; + if (--length2 === 1) { + exit = true; + break; + } + } + } while ((count1 | count2) < _minGallop); + if (exit) { + break; + } + do { + count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare); + if (count1 !== 0) { + dest -= count1; + cursor1 -= count1; + length1 -= count1; + customDest = dest + 1; + customCursor = cursor1 + 1; + for (i = count1 - 1; i >= 0; i--) { + array[customDest + i] = array[customCursor + i]; + } + if (length1 === 0) { + exit = true; + break; + } + } + array[dest--] = tmp[cursor2--]; + if (--length2 === 1) { + exit = true; + break; + } + count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare); + if (count2 !== 0) { + dest -= count2; + cursor2 -= count2; + length2 -= count2; + customDest = dest + 1; + customCursor = cursor2 + 1; + for (i = 0; i < count2; i++) { + array[customDest + i] = tmp[customCursor + i]; + } + if (length2 <= 1) { + exit = true; + break; + } + } + array[dest--] = array[cursor1--]; + if (--length1 === 0) { + exit = true; + break; + } + _minGallop--; + } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); + if (exit) { + break; + } + if (_minGallop < 0) { + _minGallop = 0; + } + _minGallop += 2; + } + minGallop = _minGallop; + if (minGallop < 1) { + minGallop = 1; + } + if (length2 === 1) { + dest -= length1; + cursor1 -= length1; + customDest = dest + 1; + customCursor = cursor1 + 1; + for (i = length1 - 1; i >= 0; i--) { + array[customDest + i] = array[customCursor + i]; + } + array[dest] = tmp[cursor2]; + } + else if (length2 === 0) { + throw new Error(); + } + else { + customCursor = dest - (length2 - 1); + for (i = 0; i < length2; i++) { + array[customCursor + i] = tmp[i]; + } + } + } + return { + mergeRuns: mergeRuns, + forceMergeRuns: forceMergeRuns, + pushRun: pushRun + }; + } + function sort(array, compare, lo, hi) { + if (!lo) { + lo = 0; + } + if (!hi) { + hi = array.length; + } + var remaining = hi - lo; + if (remaining < 2) { + return; + } + var runLength = 0; + if (remaining < DEFAULT_MIN_MERGE) { + runLength = makeAscendingRun(array, lo, hi, compare); + binaryInsertionSort(array, lo, hi, lo + runLength, compare); + return; + } + var ts = TimSort(array, compare); + var minRun = minRunLength(remaining); + do { + runLength = makeAscendingRun(array, lo, hi, compare); + if (runLength < minRun) { + var force = remaining; + if (force > minRun) { + force = minRun; + } + binaryInsertionSort(array, lo, lo + force, lo + runLength, compare); + runLength = force; + } + ts.pushRun(lo, runLength); + ts.mergeRuns(); + remaining -= runLength; + lo += runLength; + } while (remaining !== 0); + ts.forceMergeRuns(); + } + + var REDRAW_BIT = 1; + var STYLE_CHANGED_BIT = 2; + var SHAPE_CHANGED_BIT = 4; + + var invalidZErrorLogged = false; + function logInvalidZError() { + if (invalidZErrorLogged) { + return; + } + invalidZErrorLogged = true; + console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors'); + } + function shapeCompareFunc(a, b) { + if (a.zlevel === b.zlevel) { + if (a.z === b.z) { + return a.z2 - b.z2; + } + return a.z - b.z; + } + return a.zlevel - b.zlevel; + } + var Storage = (function () { + function Storage() { + this._roots = []; + this._displayList = []; + this._displayListLen = 0; + this.displayableSortFunc = shapeCompareFunc; + } + Storage.prototype.traverse = function (cb, context) { + for (var i = 0; i < this._roots.length; i++) { + this._roots[i].traverse(cb, context); + } + }; + Storage.prototype.getDisplayList = function (update, includeIgnore) { + includeIgnore = includeIgnore || false; + var displayList = this._displayList; + if (update || !displayList.length) { + this.updateDisplayList(includeIgnore); + } + return displayList; + }; + Storage.prototype.updateDisplayList = function (includeIgnore) { + this._displayListLen = 0; + var roots = this._roots; + var displayList = this._displayList; + for (var i = 0, len = roots.length; i < len; i++) { + this._updateAndAddDisplayable(roots[i], null, includeIgnore); + } + displayList.length = this._displayListLen; + sort(displayList, shapeCompareFunc); + }; + Storage.prototype._updateAndAddDisplayable = function (el, clipPaths, includeIgnore) { + if (el.ignore && !includeIgnore) { + return; + } + el.beforeUpdate(); + el.update(); + el.afterUpdate(); + var userSetClipPath = el.getClipPath(); + if (el.ignoreClip) { + clipPaths = null; + } + else if (userSetClipPath) { + if (clipPaths) { + clipPaths = clipPaths.slice(); + } + else { + clipPaths = []; + } + var currentClipPath = userSetClipPath; + var parentClipPath = el; + while (currentClipPath) { + currentClipPath.parent = parentClipPath; + currentClipPath.updateTransform(); + clipPaths.push(currentClipPath); + parentClipPath = currentClipPath; + currentClipPath = currentClipPath.getClipPath(); + } + } + if (el.childrenRef) { + var children = el.childrenRef(); + for (var i = 0; i < children.length; i++) { + var child = children[i]; + if (el.__dirty) { + child.__dirty |= REDRAW_BIT; + } + this._updateAndAddDisplayable(child, clipPaths, includeIgnore); + } + el.__dirty = 0; + } + else { + var disp = el; + if (clipPaths && clipPaths.length) { + disp.__clipPaths = clipPaths; + } + else if (disp.__clipPaths && disp.__clipPaths.length > 0) { + disp.__clipPaths = []; + } + if (isNaN(disp.z)) { + logInvalidZError(); + disp.z = 0; + } + if (isNaN(disp.z2)) { + logInvalidZError(); + disp.z2 = 0; + } + if (isNaN(disp.zlevel)) { + logInvalidZError(); + disp.zlevel = 0; + } + this._displayList[this._displayListLen++] = disp; + } + var decalEl = el.getDecalElement && el.getDecalElement(); + if (decalEl) { + this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore); + } + var textGuide = el.getTextGuideLine(); + if (textGuide) { + this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore); + } + var textEl = el.getTextContent(); + if (textEl) { + this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore); + } + }; + Storage.prototype.addRoot = function (el) { + if (el.__zr && el.__zr.storage === this) { + return; + } + this._roots.push(el); + }; + Storage.prototype.delRoot = function (el) { + if (el instanceof Array) { + for (var i = 0, l = el.length; i < l; i++) { + this.delRoot(el[i]); + } + return; + } + var idx = indexOf(this._roots, el); + if (idx >= 0) { + this._roots.splice(idx, 1); + } + }; + Storage.prototype.delAllRoots = function () { + this._roots = []; + this._displayList = []; + this._displayListLen = 0; + return; + }; + Storage.prototype.getRoots = function () { + return this._roots; + }; + Storage.prototype.dispose = function () { + this._displayList = null; + this._roots = null; + }; + return Storage; + }()); + + var requestAnimationFrame; + requestAnimationFrame = (env.hasGlobalWindow + && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window)) + || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window)) + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame)) || function (func) { + return setTimeout(func, 16); + }; + var requestAnimationFrame$1 = requestAnimationFrame; + + var easingFuncs = { + linear: function (k) { + return k; + }, + quadraticIn: function (k) { + return k * k; + }, + quadraticOut: function (k) { + return k * (2 - k); + }, + quadraticInOut: function (k) { + if ((k *= 2) < 1) { + return 0.5 * k * k; + } + return -0.5 * (--k * (k - 2) - 1); + }, + cubicIn: function (k) { + return k * k * k; + }, + cubicOut: function (k) { + return --k * k * k + 1; + }, + cubicInOut: function (k) { + if ((k *= 2) < 1) { + return 0.5 * k * k * k; + } + return 0.5 * ((k -= 2) * k * k + 2); + }, + quarticIn: function (k) { + return k * k * k * k; + }, + quarticOut: function (k) { + return 1 - (--k * k * k * k); + }, + quarticInOut: function (k) { + if ((k *= 2) < 1) { + return 0.5 * k * k * k * k; + } + return -0.5 * ((k -= 2) * k * k * k - 2); + }, + quinticIn: function (k) { + return k * k * k * k * k; + }, + quinticOut: function (k) { + return --k * k * k * k * k + 1; + }, + quinticInOut: function (k) { + if ((k *= 2) < 1) { + return 0.5 * k * k * k * k * k; + } + return 0.5 * ((k -= 2) * k * k * k * k + 2); + }, + sinusoidalIn: function (k) { + return 1 - Math.cos(k * Math.PI / 2); + }, + sinusoidalOut: function (k) { + return Math.sin(k * Math.PI / 2); + }, + sinusoidalInOut: function (k) { + return 0.5 * (1 - Math.cos(Math.PI * k)); + }, + exponentialIn: function (k) { + return k === 0 ? 0 : Math.pow(1024, k - 1); + }, + exponentialOut: function (k) { + return k === 1 ? 1 : 1 - Math.pow(2, -10 * k); + }, + exponentialInOut: function (k) { + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if ((k *= 2) < 1) { + return 0.5 * Math.pow(1024, k - 1); + } + return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2); + }, + circularIn: function (k) { + return 1 - Math.sqrt(1 - k * k); + }, + circularOut: function (k) { + return Math.sqrt(1 - (--k * k)); + }, + circularInOut: function (k) { + if ((k *= 2) < 1) { + return -0.5 * (Math.sqrt(1 - k * k) - 1); + } + return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1); + }, + elasticIn: function (k) { + var s; + var a = 0.1; + var p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; + s = p / 4; + } + else { + s = p * Math.asin(1 / a) / (2 * Math.PI); + } + return -(a * Math.pow(2, 10 * (k -= 1)) + * Math.sin((k - s) * (2 * Math.PI) / p)); + }, + elasticOut: function (k) { + var s; + var a = 0.1; + var p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; + s = p / 4; + } + else { + s = p * Math.asin(1 / a) / (2 * Math.PI); + } + return (a * Math.pow(2, -10 * k) + * Math.sin((k - s) * (2 * Math.PI) / p) + 1); + }, + elasticInOut: function (k) { + var s; + var a = 0.1; + var p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; + s = p / 4; + } + else { + s = p * Math.asin(1 / a) / (2 * Math.PI); + } + if ((k *= 2) < 1) { + return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) + * Math.sin((k - s) * (2 * Math.PI) / p)); + } + return a * Math.pow(2, -10 * (k -= 1)) + * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1; + }, + backIn: function (k) { + var s = 1.70158; + return k * k * ((s + 1) * k - s); + }, + backOut: function (k) { + var s = 1.70158; + return --k * k * ((s + 1) * k + s) + 1; + }, + backInOut: function (k) { + var s = 1.70158 * 1.525; + if ((k *= 2) < 1) { + return 0.5 * (k * k * ((s + 1) * k - s)); + } + return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2); + }, + bounceIn: function (k) { + return 1 - easingFuncs.bounceOut(1 - k); + }, + bounceOut: function (k) { + if (k < (1 / 2.75)) { + return 7.5625 * k * k; + } + else if (k < (2 / 2.75)) { + return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75; + } + else if (k < (2.5 / 2.75)) { + return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375; + } + else { + return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375; + } + }, + bounceInOut: function (k) { + if (k < 0.5) { + return easingFuncs.bounceIn(k * 2) * 0.5; + } + return easingFuncs.bounceOut(k * 2 - 1) * 0.5 + 0.5; + } + }; + + var mathPow = Math.pow; + var mathSqrt = Math.sqrt; + var EPSILON = 1e-8; + var EPSILON_NUMERIC = 1e-4; + var THREE_SQRT = mathSqrt(3); + var ONE_THIRD = 1 / 3; + var _v0 = create(); + var _v1 = create(); + var _v2 = create(); + function isAroundZero(val) { + return val > -EPSILON && val < EPSILON; + } + function isNotAroundZero(val) { + return val > EPSILON || val < -EPSILON; + } + function cubicAt(p0, p1, p2, p3, t) { + var onet = 1 - t; + return onet * onet * (onet * p0 + 3 * t * p1) + + t * t * (t * p3 + 3 * onet * p2); + } + function cubicDerivativeAt(p0, p1, p2, p3, t) { + var onet = 1 - t; + return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + + (p3 - p2) * t * t); + } + function cubicRootAt(p0, p1, p2, p3, val, roots) { + var a = p3 + 3 * (p1 - p2) - p0; + var b = 3 * (p2 - p1 * 2 + p0); + var c = 3 * (p1 - p0); + var d = p0 - val; + var A = b * b - 3 * a * c; + var B = b * c - 9 * a * d; + var C = c * c - 3 * b * d; + var n = 0; + if (isAroundZero(A) && isAroundZero(B)) { + if (isAroundZero(b)) { + roots[0] = 0; + } + else { + var t1 = -c / b; + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + } + } + else { + var disc = B * B - 4 * A * C; + if (isAroundZero(disc)) { + var K = B / A; + var t1 = -b / a + K; + var t2 = -K / 2; + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + if (t2 >= 0 && t2 <= 1) { + roots[n++] = t2; + } + } + else if (disc > 0) { + var discSqrt = mathSqrt(disc); + var Y1 = A * b + 1.5 * a * (-B + discSqrt); + var Y2 = A * b + 1.5 * a * (-B - discSqrt); + if (Y1 < 0) { + Y1 = -mathPow(-Y1, ONE_THIRD); + } + else { + Y1 = mathPow(Y1, ONE_THIRD); + } + if (Y2 < 0) { + Y2 = -mathPow(-Y2, ONE_THIRD); + } + else { + Y2 = mathPow(Y2, ONE_THIRD); + } + var t1 = (-b - (Y1 + Y2)) / (3 * a); + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + } + else { + var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A)); + var theta = Math.acos(T) / 3; + var ASqrt = mathSqrt(A); + var tmp = Math.cos(theta); + var t1 = (-b - 2 * ASqrt * tmp) / (3 * a); + var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a); + var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a); + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + if (t2 >= 0 && t2 <= 1) { + roots[n++] = t2; + } + if (t3 >= 0 && t3 <= 1) { + roots[n++] = t3; + } + } + } + return n; + } + function cubicExtrema(p0, p1, p2, p3, extrema) { + var b = 6 * p2 - 12 * p1 + 6 * p0; + var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2; + var c = 3 * p1 - 3 * p0; + var n = 0; + if (isAroundZero(a)) { + if (isNotAroundZero(b)) { + var t1 = -c / b; + if (t1 >= 0 && t1 <= 1) { + extrema[n++] = t1; + } + } + } + else { + var disc = b * b - 4 * a * c; + if (isAroundZero(disc)) { + extrema[0] = -b / (2 * a); + } + else if (disc > 0) { + var discSqrt = mathSqrt(disc); + var t1 = (-b + discSqrt) / (2 * a); + var t2 = (-b - discSqrt) / (2 * a); + if (t1 >= 0 && t1 <= 1) { + extrema[n++] = t1; + } + if (t2 >= 0 && t2 <= 1) { + extrema[n++] = t2; + } + } + } + return n; + } + function cubicSubdivide(p0, p1, p2, p3, t, out) { + var p01 = (p1 - p0) * t + p0; + var p12 = (p2 - p1) * t + p1; + var p23 = (p3 - p2) * t + p2; + var p012 = (p12 - p01) * t + p01; + var p123 = (p23 - p12) * t + p12; + var p0123 = (p123 - p012) * t + p012; + out[0] = p0; + out[1] = p01; + out[2] = p012; + out[3] = p0123; + out[4] = p0123; + out[5] = p123; + out[6] = p23; + out[7] = p3; + } + function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) { + var t; + var interval = 0.005; + var d = Infinity; + var prev; + var next; + var d1; + var d2; + _v0[0] = x; + _v0[1] = y; + for (var _t = 0; _t < 1; _t += 0.05) { + _v1[0] = cubicAt(x0, x1, x2, x3, _t); + _v1[1] = cubicAt(y0, y1, y2, y3, _t); + d1 = distSquare(_v0, _v1); + if (d1 < d) { + t = _t; + d = d1; + } + } + d = Infinity; + for (var i = 0; i < 32; i++) { + if (interval < EPSILON_NUMERIC) { + break; + } + prev = t - interval; + next = t + interval; + _v1[0] = cubicAt(x0, x1, x2, x3, prev); + _v1[1] = cubicAt(y0, y1, y2, y3, prev); + d1 = distSquare(_v1, _v0); + if (prev >= 0 && d1 < d) { + t = prev; + d = d1; + } + else { + _v2[0] = cubicAt(x0, x1, x2, x3, next); + _v2[1] = cubicAt(y0, y1, y2, y3, next); + d2 = distSquare(_v2, _v0); + if (next <= 1 && d2 < d) { + t = next; + d = d2; + } + else { + interval *= 0.5; + } + } + } + if (out) { + out[0] = cubicAt(x0, x1, x2, x3, t); + out[1] = cubicAt(y0, y1, y2, y3, t); + } + return mathSqrt(d); + } + function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) { + var px = x0; + var py = y0; + var d = 0; + var step = 1 / iteration; + for (var i = 1; i <= iteration; i++) { + var t = i * step; + var x = cubicAt(x0, x1, x2, x3, t); + var y = cubicAt(y0, y1, y2, y3, t); + var dx = x - px; + var dy = y - py; + d += Math.sqrt(dx * dx + dy * dy); + px = x; + py = y; + } + return d; + } + function quadraticAt(p0, p1, p2, t) { + var onet = 1 - t; + return onet * (onet * p0 + 2 * t * p1) + t * t * p2; + } + function quadraticDerivativeAt(p0, p1, p2, t) { + return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1)); + } + function quadraticRootAt(p0, p1, p2, val, roots) { + var a = p0 - 2 * p1 + p2; + var b = 2 * (p1 - p0); + var c = p0 - val; + var n = 0; + if (isAroundZero(a)) { + if (isNotAroundZero(b)) { + var t1 = -c / b; + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + } + } + else { + var disc = b * b - 4 * a * c; + if (isAroundZero(disc)) { + var t1 = -b / (2 * a); + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + } + else if (disc > 0) { + var discSqrt = mathSqrt(disc); + var t1 = (-b + discSqrt) / (2 * a); + var t2 = (-b - discSqrt) / (2 * a); + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + if (t2 >= 0 && t2 <= 1) { + roots[n++] = t2; + } + } + } + return n; + } + function quadraticExtremum(p0, p1, p2) { + var divider = p0 + p2 - 2 * p1; + if (divider === 0) { + return 0.5; + } + else { + return (p0 - p1) / divider; + } + } + function quadraticSubdivide(p0, p1, p2, t, out) { + var p01 = (p1 - p0) * t + p0; + var p12 = (p2 - p1) * t + p1; + var p012 = (p12 - p01) * t + p01; + out[0] = p0; + out[1] = p01; + out[2] = p012; + out[3] = p012; + out[4] = p12; + out[5] = p2; + } + function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) { + var t; + var interval = 0.005; + var d = Infinity; + _v0[0] = x; + _v0[1] = y; + for (var _t = 0; _t < 1; _t += 0.05) { + _v1[0] = quadraticAt(x0, x1, x2, _t); + _v1[1] = quadraticAt(y0, y1, y2, _t); + var d1 = distSquare(_v0, _v1); + if (d1 < d) { + t = _t; + d = d1; + } + } + d = Infinity; + for (var i = 0; i < 32; i++) { + if (interval < EPSILON_NUMERIC) { + break; + } + var prev = t - interval; + var next = t + interval; + _v1[0] = quadraticAt(x0, x1, x2, prev); + _v1[1] = quadraticAt(y0, y1, y2, prev); + var d1 = distSquare(_v1, _v0); + if (prev >= 0 && d1 < d) { + t = prev; + d = d1; + } + else { + _v2[0] = quadraticAt(x0, x1, x2, next); + _v2[1] = quadraticAt(y0, y1, y2, next); + var d2 = distSquare(_v2, _v0); + if (next <= 1 && d2 < d) { + t = next; + d = d2; + } + else { + interval *= 0.5; + } + } + } + if (out) { + out[0] = quadraticAt(x0, x1, x2, t); + out[1] = quadraticAt(y0, y1, y2, t); + } + return mathSqrt(d); + } + function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) { + var px = x0; + var py = y0; + var d = 0; + var step = 1 / iteration; + for (var i = 1; i <= iteration; i++) { + var t = i * step; + var x = quadraticAt(x0, x1, x2, t); + var y = quadraticAt(y0, y1, y2, t); + var dx = x - px; + var dy = y - py; + d += Math.sqrt(dx * dx + dy * dy); + px = x; + py = y; + } + return d; + } + + var regexp = /cubic-bezier\(([0-9,\.e ]+)\)/; + function createCubicEasingFunc(cubicEasingStr) { + var cubic = cubicEasingStr && regexp.exec(cubicEasingStr); + if (cubic) { + var points = cubic[1].split(','); + var a_1 = +trim(points[0]); + var b_1 = +trim(points[1]); + var c_1 = +trim(points[2]); + var d_1 = +trim(points[3]); + if (isNaN(a_1 + b_1 + c_1 + d_1)) { + return; + } + var roots_1 = []; + return function (p) { + return p <= 0 + ? 0 : p >= 1 + ? 1 + : cubicRootAt(0, a_1, c_1, 1, p, roots_1) && cubicAt(0, b_1, d_1, 1, roots_1[0]); + }; + } + } + + var Clip = (function () { + function Clip(opts) { + this._inited = false; + this._startTime = 0; + this._pausedTime = 0; + this._paused = false; + this._life = opts.life || 1000; + this._delay = opts.delay || 0; + this.loop = opts.loop || false; + this.onframe = opts.onframe || noop; + this.ondestroy = opts.ondestroy || noop; + this.onrestart = opts.onrestart || noop; + opts.easing && this.setEasing(opts.easing); + } + Clip.prototype.step = function (globalTime, deltaTime) { + if (!this._inited) { + this._startTime = globalTime + this._delay; + this._inited = true; + } + if (this._paused) { + this._pausedTime += deltaTime; + return; + } + var life = this._life; + var elapsedTime = globalTime - this._startTime - this._pausedTime; + var percent = elapsedTime / life; + if (percent < 0) { + percent = 0; + } + percent = Math.min(percent, 1); + var easingFunc = this.easingFunc; + var schedule = easingFunc ? easingFunc(percent) : percent; + this.onframe(schedule); + if (percent === 1) { + if (this.loop) { + var remainder = elapsedTime % life; + this._startTime = globalTime - remainder; + this._pausedTime = 0; + this.onrestart(); + } + else { + return true; + } + } + return false; + }; + Clip.prototype.pause = function () { + this._paused = true; + }; + Clip.prototype.resume = function () { + this._paused = false; + }; + Clip.prototype.setEasing = function (easing) { + this.easing = easing; + this.easingFunc = isFunction(easing) + ? easing + : easingFuncs[easing] || createCubicEasingFunc(easing); + }; + return Clip; + }()); + + var Entry = (function () { + function Entry(val) { + this.value = val; + } + return Entry; + }()); + var LinkedList = (function () { + function LinkedList() { + this._len = 0; + } + LinkedList.prototype.insert = function (val) { + var entry = new Entry(val); + this.insertEntry(entry); + return entry; + }; + LinkedList.prototype.insertEntry = function (entry) { + if (!this.head) { + this.head = this.tail = entry; + } + else { + this.tail.next = entry; + entry.prev = this.tail; + entry.next = null; + this.tail = entry; + } + this._len++; + }; + LinkedList.prototype.remove = function (entry) { + var prev = entry.prev; + var next = entry.next; + if (prev) { + prev.next = next; + } + else { + this.head = next; + } + if (next) { + next.prev = prev; + } + else { + this.tail = prev; + } + entry.next = entry.prev = null; + this._len--; + }; + LinkedList.prototype.len = function () { + return this._len; + }; + LinkedList.prototype.clear = function () { + this.head = this.tail = null; + this._len = 0; + }; + return LinkedList; + }()); + var LRU = (function () { + function LRU(maxSize) { + this._list = new LinkedList(); + this._maxSize = 10; + this._map = {}; + this._maxSize = maxSize; + } + LRU.prototype.put = function (key, value) { + var list = this._list; + var map = this._map; + var removed = null; + if (map[key] == null) { + var len = list.len(); + var entry = this._lastRemovedEntry; + if (len >= this._maxSize && len > 0) { + var leastUsedEntry = list.head; + list.remove(leastUsedEntry); + delete map[leastUsedEntry.key]; + removed = leastUsedEntry.value; + this._lastRemovedEntry = leastUsedEntry; + } + if (entry) { + entry.value = value; + } + else { + entry = new Entry(value); + } + entry.key = key; + list.insertEntry(entry); + map[key] = entry; + } + return removed; + }; + LRU.prototype.get = function (key) { + var entry = this._map[key]; + var list = this._list; + if (entry != null) { + if (entry !== list.tail) { + list.remove(entry); + list.insertEntry(entry); + } + return entry.value; + } + }; + LRU.prototype.clear = function () { + this._list.clear(); + this._map = {}; + }; + LRU.prototype.len = function () { + return this._list.len(); + }; + return LRU; + }()); + + var kCSSColorTable = { + '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 clampCssByte(i) { + i = Math.round(i); + return i < 0 ? 0 : i > 255 ? 255 : i; + } + function clampCssAngle(i) { + i = Math.round(i); + return i < 0 ? 0 : i > 360 ? 360 : i; + } + function clampCssFloat(f) { + return f < 0 ? 0 : f > 1 ? 1 : f; + } + function parseCssInt(val) { + var str = val; + if (str.length && str.charAt(str.length - 1) === '%') { + return clampCssByte(parseFloat(str) / 100 * 255); + } + return clampCssByte(parseInt(str, 10)); + } + function parseCssFloat(val) { + var str = val; + if (str.length && str.charAt(str.length - 1) === '%') { + return clampCssFloat(parseFloat(str) / 100); + } + return clampCssFloat(parseFloat(str)); + } + function cssHueToRgb(m1, m2, h) { + if (h < 0) { + h += 1; + } + else if (h > 1) { + h -= 1; + } + if (h * 6 < 1) { + return m1 + (m2 - m1) * h * 6; + } + if (h * 2 < 1) { + return m2; + } + if (h * 3 < 2) { + return m1 + (m2 - m1) * (2 / 3 - h) * 6; + } + return m1; + } + function lerpNumber(a, b, p) { + return a + (b - a) * p; + } + function setRgba(out, r, g, b, a) { + out[0] = r; + out[1] = g; + out[2] = b; + out[3] = a; + return out; + } + function copyRgba(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + return out; + } + var colorCache = new LRU(20); + var lastRemovedArr = null; + function putToCache(colorStr, rgbaArr) { + if (lastRemovedArr) { + copyRgba(lastRemovedArr, rgbaArr); + } + lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice())); + } + function parse(colorStr, rgbaArr) { + if (!colorStr) { + return; + } + rgbaArr = rgbaArr || []; + var cached = colorCache.get(colorStr); + if (cached) { + return copyRgba(rgbaArr, cached); + } + colorStr = colorStr + ''; + var str = colorStr.replace(/ /g, '').toLowerCase(); + if (str in kCSSColorTable) { + copyRgba(rgbaArr, kCSSColorTable[str]); + putToCache(colorStr, rgbaArr); + return rgbaArr; + } + var strLen = str.length; + if (str.charAt(0) === '#') { + if (strLen === 4 || strLen === 5) { + var iv = parseInt(str.slice(1, 4), 16); + if (!(iv >= 0 && iv <= 0xfff)) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), strLen === 5 ? parseInt(str.slice(4), 16) / 0xf : 1); + putToCache(colorStr, rgbaArr); + return rgbaArr; + } + else if (strLen === 7 || strLen === 9) { + var iv = parseInt(str.slice(1, 7), 16); + if (!(iv >= 0 && iv <= 0xffffff)) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, strLen === 9 ? parseInt(str.slice(7), 16) / 0xff : 1); + putToCache(colorStr, rgbaArr); + return rgbaArr; + } + return; + } + var op = str.indexOf('('); + var ep = str.indexOf(')'); + if (op !== -1 && ep + 1 === strLen) { + var fname = str.substr(0, op); + var params = str.substr(op + 1, ep - (op + 1)).split(','); + var alpha = 1; + switch (fname) { + case 'rgba': + if (params.length !== 4) { + return params.length === 3 + ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1) + : setRgba(rgbaArr, 0, 0, 0, 1); + } + alpha = parseCssFloat(params.pop()); + case 'rgb': + if (params.length >= 3) { + setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), params.length === 3 ? alpha : parseCssFloat(params[3])); + putToCache(colorStr, rgbaArr); + return rgbaArr; + } + else { + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + case 'hsla': + if (params.length !== 4) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + params[3] = parseCssFloat(params[3]); + hsla2rgba(params, rgbaArr); + putToCache(colorStr, rgbaArr); + return rgbaArr; + case 'hsl': + if (params.length !== 3) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + hsla2rgba(params, rgbaArr); + putToCache(colorStr, rgbaArr); + return rgbaArr; + default: + return; + } + } + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + function hsla2rgba(hsla, rgba) { + var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360; + var s = parseCssFloat(hsla[1]); + var l = parseCssFloat(hsla[2]); + var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; + var m1 = l * 2 - m2; + rgba = rgba || []; + setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1); + if (hsla.length === 4) { + rgba[3] = hsla[3]; + } + return rgba; + } + function rgba2hsla(rgba) { + if (!rgba) { + return; + } + var R = rgba[0] / 255; + var G = rgba[1] / 255; + var B = rgba[2] / 255; + var vMin = Math.min(R, G, B); + var vMax = Math.max(R, G, B); + var delta = vMax - vMin; + var L = (vMax + vMin) / 2; + var H; + var S; + if (delta === 0) { + H = 0; + S = 0; + } + else { + if (L < 0.5) { + S = delta / (vMax + vMin); + } + else { + S = delta / (2 - vMax - vMin); + } + var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta; + var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta; + var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta; + if (R === vMax) { + H = deltaB - deltaG; + } + else if (G === vMax) { + H = (1 / 3) + deltaR - deltaB; + } + else if (B === vMax) { + H = (2 / 3) + deltaG - deltaR; + } + if (H < 0) { + H += 1; + } + if (H > 1) { + H -= 1; + } + } + var hsla = [H * 360, S, L]; + if (rgba[3] != null) { + hsla.push(rgba[3]); + } + return hsla; + } + function lift(color, level) { + var colorArr = parse(color); + if (colorArr) { + for (var i = 0; i < 3; i++) { + if (level < 0) { + colorArr[i] = colorArr[i] * (1 - level) | 0; + } + else { + colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0; + } + if (colorArr[i] > 255) { + colorArr[i] = 255; + } + else if (colorArr[i] < 0) { + colorArr[i] = 0; + } + } + return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb'); + } + } + function toHex(color) { + var colorArr = parse(color); + if (colorArr) { + return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1); + } + } + function fastLerp(normalizedValue, colors, out) { + if (!(colors && colors.length) + || !(normalizedValue >= 0 && normalizedValue <= 1)) { + return; + } + out = out || []; + var value = normalizedValue * (colors.length - 1); + var leftIndex = Math.floor(value); + var rightIndex = Math.ceil(value); + var leftColor = colors[leftIndex]; + var rightColor = colors[rightIndex]; + var dv = value - leftIndex; + out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)); + out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)); + out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)); + out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv)); + return out; + } + var fastMapToColor = fastLerp; + function lerp$1(normalizedValue, colors, fullOutput) { + if (!(colors && colors.length) + || !(normalizedValue >= 0 && normalizedValue <= 1)) { + return; + } + var value = normalizedValue * (colors.length - 1); + var leftIndex = Math.floor(value); + var rightIndex = Math.ceil(value); + var leftColor = parse(colors[leftIndex]); + var rightColor = parse(colors[rightIndex]); + var dv = value - leftIndex; + var color = stringify([ + clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), + clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), + clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), + clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv)) + ], 'rgba'); + return fullOutput + ? { + color: color, + leftIndex: leftIndex, + rightIndex: rightIndex, + value: value + } + : color; + } + var mapToColor = lerp$1; + function modifyHSL(color, h, s, l) { + var colorArr = parse(color); + if (color) { + colorArr = rgba2hsla(colorArr); + h != null && (colorArr[0] = clampCssAngle(h)); + s != null && (colorArr[1] = parseCssFloat(s)); + l != null && (colorArr[2] = parseCssFloat(l)); + return stringify(hsla2rgba(colorArr), 'rgba'); + } + } + function modifyAlpha(color, alpha) { + var colorArr = parse(color); + if (colorArr && alpha != null) { + colorArr[3] = clampCssFloat(alpha); + return stringify(colorArr, 'rgba'); + } + } + function stringify(arrColor, type) { + if (!arrColor || !arrColor.length) { + return; + } + var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2]; + if (type === 'rgba' || type === 'hsva' || type === 'hsla') { + colorStr += ',' + arrColor[3]; + } + return type + '(' + colorStr + ')'; + } + function lum(color, backgroundLum) { + var arr = parse(color); + return arr + ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255 + + (1 - arr[3]) * backgroundLum + : 0; + } + function random() { + return stringify([ + Math.round(Math.random() * 255), + Math.round(Math.random() * 255), + Math.round(Math.random() * 255) + ], 'rgb'); + } + var liftedColorCache = new LRU(100); + function liftColor(color) { + if (isString(color)) { + var liftedColor = liftedColorCache.get(color); + if (!liftedColor) { + liftedColor = lift(color, -0.1); + liftedColorCache.put(color, liftedColor); + } + return liftedColor; + } + else if (isGradientObject(color)) { + var ret = extend({}, color); + ret.colorStops = map(color.colorStops, function (stop) { return ({ + offset: stop.offset, + color: lift(stop.color, -0.1) + }); }); + return ret; + } + return color; + } + + var color = /*#__PURE__*/Object.freeze({ + __proto__: null, + parse: parse, + lift: lift, + toHex: toHex, + fastLerp: fastLerp, + fastMapToColor: fastMapToColor, + lerp: lerp$1, + mapToColor: mapToColor, + modifyHSL: modifyHSL, + modifyAlpha: modifyAlpha, + stringify: stringify, + lum: lum, + random: random, + liftColor: liftColor + }); + + var mathRound = Math.round; + function normalizeColor(color) { + var opacity; + if (!color || color === 'transparent') { + color = 'none'; + } + else if (typeof color === 'string' && color.indexOf('rgba') > -1) { + var arr = parse(color); + if (arr) { + color = 'rgb(' + arr[0] + ',' + arr[1] + ',' + arr[2] + ')'; + opacity = arr[3]; + } + } + return { + color: color, + opacity: opacity == null ? 1 : opacity + }; + } + var EPSILON$1 = 1e-4; + function isAroundZero$1(transform) { + return transform < EPSILON$1 && transform > -EPSILON$1; + } + function round3(transform) { + return mathRound(transform * 1e3) / 1e3; + } + function round4(transform) { + return mathRound(transform * 1e4) / 1e4; + } + function getMatrixStr(m) { + return 'matrix(' + + round3(m[0]) + ',' + + round3(m[1]) + ',' + + round3(m[2]) + ',' + + round3(m[3]) + ',' + + round4(m[4]) + ',' + + round4(m[5]) + + ')'; + } + var TEXT_ALIGN_TO_ANCHOR = { + left: 'start', + right: 'end', + center: 'middle', + middle: 'middle' + }; + function adjustTextY(y, lineHeight, textBaseline) { + if (textBaseline === 'top') { + y += lineHeight / 2; + } + else if (textBaseline === 'bottom') { + y -= lineHeight / 2; + } + return y; + } + function hasShadow(style) { + return style + && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY); + } + function getShadowKey(displayable) { + var style = displayable.style; + var globalScale = displayable.getGlobalScale(); + return [ + style.shadowColor, + (style.shadowBlur || 0).toFixed(2), + (style.shadowOffsetX || 0).toFixed(2), + (style.shadowOffsetY || 0).toFixed(2), + globalScale[0], + globalScale[1] + ].join(','); + } + function isImagePattern(val) { + return val && (!!val.image); + } + function isSVGPattern(val) { + return val && (!!val.svgElement); + } + function isPattern(val) { + return isImagePattern(val) || isSVGPattern(val); + } + function isLinearGradient(val) { + return val.type === 'linear'; + } + function isRadialGradient(val) { + return val.type === 'radial'; + } + function isGradient(val) { + return val && (val.type === 'linear' + || val.type === 'radial'); + } + function getIdURL(id) { + return "url(#" + id + ")"; + } + function getPathPrecision(el) { + var scale = el.getGlobalScale(); + var size = Math.max(scale[0], scale[1]); + return Math.max(Math.ceil(Math.log(size) / Math.log(10)), 1); + } + function getSRTTransformString(transform) { + var x = transform.x || 0; + var y = transform.y || 0; + var rotation = (transform.rotation || 0) * RADIAN_TO_DEGREE; + var scaleX = retrieve2(transform.scaleX, 1); + var scaleY = retrieve2(transform.scaleY, 1); + var skewX = transform.skewX || 0; + var skewY = transform.skewY || 0; + var res = []; + if (x || y) { + res.push("translate(" + x + "px," + y + "px)"); + } + if (rotation) { + res.push("rotate(" + rotation + ")"); + } + if (scaleX !== 1 || scaleY !== 1) { + res.push("scale(" + scaleX + "," + scaleY + ")"); + } + if (skewX || skewY) { + res.push("skew(" + mathRound(skewX * RADIAN_TO_DEGREE) + "deg, " + mathRound(skewY * RADIAN_TO_DEGREE) + "deg)"); + } + return res.join(' '); + } + var encodeBase64 = (function () { + if (env.hasGlobalWindow && isFunction(window.btoa)) { + return function (str) { + return window.btoa(unescape(encodeURIComponent(str))); + }; + } + if (typeof Buffer !== 'undefined') { + return function (str) { + return Buffer.from(str).toString('base64'); + }; + } + return function (str) { + if ("development" !== 'production') { + logError('Base64 isn\'t natively supported in the current environment.'); + } + return null; + }; + })(); + + var arraySlice = Array.prototype.slice; + function interpolateNumber(p0, p1, percent) { + return (p1 - p0) * percent + p0; + } + function interpolate1DArray(out, p0, p1, percent) { + var len = p0.length; + for (var i = 0; i < len; i++) { + out[i] = interpolateNumber(p0[i], p1[i], percent); + } + return out; + } + function interpolate2DArray(out, p0, p1, percent) { + var len = p0.length; + var len2 = len && p0[0].length; + for (var i = 0; i < len; i++) { + if (!out[i]) { + out[i] = []; + } + for (var j = 0; j < len2; j++) { + out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent); + } + } + return out; + } + function add1DArray(out, p0, p1, sign) { + var len = p0.length; + for (var i = 0; i < len; i++) { + out[i] = p0[i] + p1[i] * sign; + } + return out; + } + function add2DArray(out, p0, p1, sign) { + var len = p0.length; + var len2 = len && p0[0].length; + for (var i = 0; i < len; i++) { + if (!out[i]) { + out[i] = []; + } + for (var j = 0; j < len2; j++) { + out[i][j] = p0[i][j] + p1[i][j] * sign; + } + } + return out; + } + function fillColorStops(val0, val1) { + var len0 = val0.length; + var len1 = val1.length; + var shorterArr = len0 > len1 ? val1 : val0; + var shorterLen = Math.min(len0, len1); + var last = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 }; + for (var i = shorterLen; i < Math.max(len0, len1); i++) { + shorterArr.push({ + offset: last.offset, + color: last.color.slice() + }); + } + } + function fillArray(val0, val1, arrDim) { + var arr0 = val0; + var arr1 = val1; + if (!arr0.push || !arr1.push) { + return; + } + var arr0Len = arr0.length; + var arr1Len = arr1.length; + if (arr0Len !== arr1Len) { + var isPreviousLarger = arr0Len > arr1Len; + if (isPreviousLarger) { + arr0.length = arr1Len; + } + else { + for (var i = arr0Len; i < arr1Len; i++) { + arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i])); + } + } + } + var len2 = arr0[0] && arr0[0].length; + for (var i = 0; i < arr0.length; i++) { + if (arrDim === 1) { + if (isNaN(arr0[i])) { + arr0[i] = arr1[i]; + } + } + else { + for (var j = 0; j < len2; j++) { + if (isNaN(arr0[i][j])) { + arr0[i][j] = arr1[i][j]; + } + } + } + } + } + function cloneValue(value) { + if (isArrayLike(value)) { + var len = value.length; + if (isArrayLike(value[0])) { + var ret = []; + for (var i = 0; i < len; i++) { + ret.push(arraySlice.call(value[i])); + } + return ret; + } + return arraySlice.call(value); + } + return value; + } + function rgba2String(rgba) { + rgba[0] = Math.floor(rgba[0]) || 0; + rgba[1] = Math.floor(rgba[1]) || 0; + rgba[2] = Math.floor(rgba[2]) || 0; + rgba[3] = rgba[3] == null ? 1 : rgba[3]; + return 'rgba(' + rgba.join(',') + ')'; + } + function guessArrayDim(value) { + return isArrayLike(value && value[0]) ? 2 : 1; + } + var VALUE_TYPE_NUMBER = 0; + var VALUE_TYPE_1D_ARRAY = 1; + var VALUE_TYPE_2D_ARRAY = 2; + var VALUE_TYPE_COLOR = 3; + var VALUE_TYPE_LINEAR_GRADIENT = 4; + var VALUE_TYPE_RADIAL_GRADIENT = 5; + var VALUE_TYPE_UNKOWN = 6; + function isGradientValueType(valType) { + return valType === VALUE_TYPE_LINEAR_GRADIENT || valType === VALUE_TYPE_RADIAL_GRADIENT; + } + function isArrayValueType(valType) { + return valType === VALUE_TYPE_1D_ARRAY || valType === VALUE_TYPE_2D_ARRAY; + } + var tmpRgba = [0, 0, 0, 0]; + var Track = (function () { + function Track(propName) { + this.keyframes = []; + this.discrete = false; + this._invalid = false; + this._needsSort = false; + this._lastFr = 0; + this._lastFrP = 0; + this.propName = propName; + } + Track.prototype.isFinished = function () { + return this._finished; + }; + Track.prototype.setFinished = function () { + this._finished = true; + if (this._additiveTrack) { + this._additiveTrack.setFinished(); + } + }; + Track.prototype.needsAnimate = function () { + return this.keyframes.length >= 1; + }; + Track.prototype.getAdditiveTrack = function () { + return this._additiveTrack; + }; + Track.prototype.addKeyframe = function (time, rawValue, easing) { + this._needsSort = true; + var keyframes = this.keyframes; + var len = keyframes.length; + var discrete = false; + var valType = VALUE_TYPE_UNKOWN; + var value = rawValue; + if (isArrayLike(rawValue)) { + var arrayDim = guessArrayDim(rawValue); + valType = arrayDim; + if (arrayDim === 1 && !isNumber(rawValue[0]) + || arrayDim === 2 && !isNumber(rawValue[0][0])) { + discrete = true; + } + } + else { + if (isNumber(rawValue) && !eqNaN(rawValue)) { + valType = VALUE_TYPE_NUMBER; + } + else if (isString(rawValue)) { + if (!isNaN(+rawValue)) { + valType = VALUE_TYPE_NUMBER; + } + else { + var colorArray = parse(rawValue); + if (colorArray) { + value = colorArray; + valType = VALUE_TYPE_COLOR; + } + } + } + else if (isGradientObject(rawValue)) { + var parsedGradient = extend({}, value); + parsedGradient.colorStops = map(rawValue.colorStops, function (colorStop) { return ({ + offset: colorStop.offset, + color: parse(colorStop.color) + }); }); + if (isLinearGradient(rawValue)) { + valType = VALUE_TYPE_LINEAR_GRADIENT; + } + else if (isRadialGradient(rawValue)) { + valType = VALUE_TYPE_RADIAL_GRADIENT; + } + value = parsedGradient; + } + } + if (len === 0) { + this.valType = valType; + } + else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN) { + discrete = true; + } + this.discrete = this.discrete || discrete; + var kf = { + time: time, + value: value, + rawValue: rawValue, + percent: 0 + }; + if (easing) { + kf.easing = easing; + kf.easingFunc = isFunction(easing) + ? easing + : easingFuncs[easing] || createCubicEasingFunc(easing); + } + keyframes.push(kf); + return kf; + }; + Track.prototype.prepare = function (maxTime, additiveTrack) { + var kfs = this.keyframes; + if (this._needsSort) { + kfs.sort(function (a, b) { + return a.time - b.time; + }); + } + var valType = this.valType; + var kfsLen = kfs.length; + var lastKf = kfs[kfsLen - 1]; + var isDiscrete = this.discrete; + var isArr = isArrayValueType(valType); + var isGradient = isGradientValueType(valType); + for (var i = 0; i < kfsLen; i++) { + var kf = kfs[i]; + var value = kf.value; + var lastValue = lastKf.value; + kf.percent = kf.time / maxTime; + if (!isDiscrete) { + if (isArr && i !== kfsLen - 1) { + fillArray(value, lastValue, valType); + } + else if (isGradient) { + fillColorStops(value.colorStops, lastValue.colorStops); + } + } + } + if (!isDiscrete + && valType !== VALUE_TYPE_RADIAL_GRADIENT + && additiveTrack + && this.needsAnimate() + && additiveTrack.needsAnimate() + && valType === additiveTrack.valType + && !additiveTrack._finished) { + this._additiveTrack = additiveTrack; + var startValue = kfs[0].value; + for (var i = 0; i < kfsLen; i++) { + if (valType === VALUE_TYPE_NUMBER) { + kfs[i].additiveValue = kfs[i].value - startValue; + } + else if (valType === VALUE_TYPE_COLOR) { + kfs[i].additiveValue = + add1DArray([], kfs[i].value, startValue, -1); + } + else if (isArrayValueType(valType)) { + kfs[i].additiveValue = valType === VALUE_TYPE_1D_ARRAY + ? add1DArray([], kfs[i].value, startValue, -1) + : add2DArray([], kfs[i].value, startValue, -1); + } + } + } + }; + Track.prototype.step = function (target, percent) { + if (this._finished) { + return; + } + if (this._additiveTrack && this._additiveTrack._finished) { + this._additiveTrack = null; + } + var isAdditive = this._additiveTrack != null; + var valueKey = isAdditive ? 'additiveValue' : 'value'; + var valType = this.valType; + var keyframes = this.keyframes; + var kfsNum = keyframes.length; + var propName = this.propName; + var isValueColor = valType === VALUE_TYPE_COLOR; + var frameIdx; + var lastFrame = this._lastFr; + var mathMin = Math.min; + var frame; + var nextFrame; + if (kfsNum === 1) { + frame = nextFrame = keyframes[0]; + } + else { + if (percent < 0) { + frameIdx = 0; + } + else if (percent < this._lastFrP) { + var start = mathMin(lastFrame + 1, kfsNum - 1); + for (frameIdx = start; frameIdx >= 0; frameIdx--) { + if (keyframes[frameIdx].percent <= percent) { + break; + } + } + frameIdx = mathMin(frameIdx, kfsNum - 2); + } + else { + for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) { + if (keyframes[frameIdx].percent > percent) { + break; + } + } + frameIdx = mathMin(frameIdx - 1, kfsNum - 2); + } + nextFrame = keyframes[frameIdx + 1]; + frame = keyframes[frameIdx]; + } + if (!(frame && nextFrame)) { + return; + } + this._lastFr = frameIdx; + this._lastFrP = percent; + var interval = (nextFrame.percent - frame.percent); + var w = interval === 0 ? 1 : mathMin((percent - frame.percent) / interval, 1); + if (nextFrame.easingFunc) { + w = nextFrame.easingFunc(w); + } + var targetArr = isAdditive ? this._additiveValue + : (isValueColor ? tmpRgba : target[propName]); + if ((isArrayValueType(valType) || isValueColor) && !targetArr) { + targetArr = this._additiveValue = []; + } + if (this.discrete) { + target[propName] = w < 1 ? frame.rawValue : nextFrame.rawValue; + } + else if (isArrayValueType(valType)) { + valType === VALUE_TYPE_1D_ARRAY + ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w) + : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w); + } + else if (isGradientValueType(valType)) { + var val = frame[valueKey]; + var nextVal_1 = nextFrame[valueKey]; + var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT; + target[propName] = { + type: isLinearGradient_1 ? 'linear' : 'radial', + x: interpolateNumber(val.x, nextVal_1.x, w), + y: interpolateNumber(val.y, nextVal_1.y, w), + colorStops: map(val.colorStops, function (colorStop, idx) { + var nextColorStop = nextVal_1.colorStops[idx]; + return { + offset: interpolateNumber(colorStop.offset, nextColorStop.offset, w), + color: rgba2String(interpolate1DArray([], colorStop.color, nextColorStop.color, w)) + }; + }), + global: nextVal_1.global + }; + if (isLinearGradient_1) { + target[propName].x2 = interpolateNumber(val.x2, nextVal_1.x2, w); + target[propName].y2 = interpolateNumber(val.y2, nextVal_1.y2, w); + } + else { + target[propName].r = interpolateNumber(val.r, nextVal_1.r, w); + } + } + else if (isValueColor) { + interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w); + if (!isAdditive) { + target[propName] = rgba2String(targetArr); + } + } + else { + var value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w); + if (isAdditive) { + this._additiveValue = value; + } + else { + target[propName] = value; + } + } + if (isAdditive) { + this._addToTarget(target); + } + }; + Track.prototype._addToTarget = function (target) { + var valType = this.valType; + var propName = this.propName; + var additiveValue = this._additiveValue; + if (valType === VALUE_TYPE_NUMBER) { + target[propName] = target[propName] + additiveValue; + } + else if (valType === VALUE_TYPE_COLOR) { + parse(target[propName], tmpRgba); + add1DArray(tmpRgba, tmpRgba, additiveValue, 1); + target[propName] = rgba2String(tmpRgba); + } + else if (valType === VALUE_TYPE_1D_ARRAY) { + add1DArray(target[propName], target[propName], additiveValue, 1); + } + else if (valType === VALUE_TYPE_2D_ARRAY) { + add2DArray(target[propName], target[propName], additiveValue, 1); + } + }; + return Track; + }()); + var Animator = (function () { + function Animator(target, loop, allowDiscreteAnimation, additiveTo) { + this._tracks = {}; + this._trackKeys = []; + this._maxTime = 0; + this._started = 0; + this._clip = null; + this._target = target; + this._loop = loop; + if (loop && additiveTo) { + logError('Can\' use additive animation on looped animation.'); + return; + } + this._additiveAnimators = additiveTo; + this._allowDiscrete = allowDiscreteAnimation; + } + Animator.prototype.getMaxTime = function () { + return this._maxTime; + }; + Animator.prototype.getDelay = function () { + return this._delay; + }; + Animator.prototype.getLoop = function () { + return this._loop; + }; + Animator.prototype.getTarget = function () { + return this._target; + }; + Animator.prototype.changeTarget = function (target) { + this._target = target; + }; + Animator.prototype.when = function (time, props, easing) { + return this.whenWithKeys(time, props, keys(props), easing); + }; + Animator.prototype.whenWithKeys = function (time, props, propNames, easing) { + var tracks = this._tracks; + for (var i = 0; i < propNames.length; i++) { + var propName = propNames[i]; + var track = tracks[propName]; + if (!track) { + track = tracks[propName] = new Track(propName); + var initialValue = void 0; + var additiveTrack = this._getAdditiveTrack(propName); + if (additiveTrack) { + var addtiveTrackKfs = additiveTrack.keyframes; + var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1]; + initialValue = lastFinalKf && lastFinalKf.value; + if (additiveTrack.valType === VALUE_TYPE_COLOR && initialValue) { + initialValue = rgba2String(initialValue); + } + } + else { + initialValue = this._target[propName]; + } + if (initialValue == null) { + continue; + } + if (time > 0) { + track.addKeyframe(0, cloneValue(initialValue), easing); + } + this._trackKeys.push(propName); + } + track.addKeyframe(time, cloneValue(props[propName]), easing); + } + this._maxTime = Math.max(this._maxTime, time); + return this; + }; + Animator.prototype.pause = function () { + this._clip.pause(); + this._paused = true; + }; + Animator.prototype.resume = function () { + this._clip.resume(); + this._paused = false; + }; + Animator.prototype.isPaused = function () { + return !!this._paused; + }; + Animator.prototype.duration = function (duration) { + this._maxTime = duration; + this._force = true; + return this; + }; + Animator.prototype._doneCallback = function () { + this._setTracksFinished(); + this._clip = null; + var doneList = this._doneCbs; + if (doneList) { + var len = doneList.length; + for (var i = 0; i < len; i++) { + doneList[i].call(this); + } + } + }; + Animator.prototype._abortedCallback = function () { + this._setTracksFinished(); + var animation = this.animation; + var abortedList = this._abortedCbs; + if (animation) { + animation.removeClip(this._clip); + } + this._clip = null; + if (abortedList) { + for (var i = 0; i < abortedList.length; i++) { + abortedList[i].call(this); + } + } + }; + Animator.prototype._setTracksFinished = function () { + var tracks = this._tracks; + var tracksKeys = this._trackKeys; + for (var i = 0; i < tracksKeys.length; i++) { + tracks[tracksKeys[i]].setFinished(); + } + }; + Animator.prototype._getAdditiveTrack = function (trackName) { + var additiveTrack; + var additiveAnimators = this._additiveAnimators; + if (additiveAnimators) { + for (var i = 0; i < additiveAnimators.length; i++) { + var track = additiveAnimators[i].getTrack(trackName); + if (track) { + additiveTrack = track; + } + } + } + return additiveTrack; + }; + Animator.prototype.start = function (easing) { + if (this._started > 0) { + return; + } + this._started = 1; + var self = this; + var tracks = []; + var maxTime = this._maxTime || 0; + for (var i = 0; i < this._trackKeys.length; i++) { + var propName = this._trackKeys[i]; + var track = this._tracks[propName]; + var additiveTrack = this._getAdditiveTrack(propName); + var kfs = track.keyframes; + var kfsNum = kfs.length; + track.prepare(maxTime, additiveTrack); + if (track.needsAnimate()) { + if (!this._allowDiscrete && track.discrete) { + var lastKf = kfs[kfsNum - 1]; + if (lastKf) { + self._target[track.propName] = lastKf.rawValue; + } + track.setFinished(); + } + else { + tracks.push(track); + } + } + } + if (tracks.length || this._force) { + var clip = new Clip({ + life: maxTime, + loop: this._loop, + delay: this._delay || 0, + onframe: function (percent) { + self._started = 2; + var additiveAnimators = self._additiveAnimators; + if (additiveAnimators) { + var stillHasAdditiveAnimator = false; + for (var i = 0; i < additiveAnimators.length; i++) { + if (additiveAnimators[i]._clip) { + stillHasAdditiveAnimator = true; + break; + } + } + if (!stillHasAdditiveAnimator) { + self._additiveAnimators = null; + } + } + for (var i = 0; i < tracks.length; i++) { + tracks[i].step(self._target, percent); + } + var onframeList = self._onframeCbs; + if (onframeList) { + for (var i = 0; i < onframeList.length; i++) { + onframeList[i](self._target, percent); + } + } + }, + ondestroy: function () { + self._doneCallback(); + } + }); + this._clip = clip; + if (this.animation) { + this.animation.addClip(clip); + } + if (easing) { + clip.setEasing(easing); + } + } + else { + this._doneCallback(); + } + return this; + }; + Animator.prototype.stop = function (forwardToLast) { + if (!this._clip) { + return; + } + var clip = this._clip; + if (forwardToLast) { + clip.onframe(1); + } + this._abortedCallback(); + }; + Animator.prototype.delay = function (time) { + this._delay = time; + return this; + }; + Animator.prototype.during = function (cb) { + if (cb) { + if (!this._onframeCbs) { + this._onframeCbs = []; + } + this._onframeCbs.push(cb); + } + return this; + }; + Animator.prototype.done = function (cb) { + if (cb) { + if (!this._doneCbs) { + this._doneCbs = []; + } + this._doneCbs.push(cb); + } + return this; + }; + Animator.prototype.aborted = function (cb) { + if (cb) { + if (!this._abortedCbs) { + this._abortedCbs = []; + } + this._abortedCbs.push(cb); + } + return this; + }; + Animator.prototype.getClip = function () { + return this._clip; + }; + Animator.prototype.getTrack = function (propName) { + return this._tracks[propName]; + }; + Animator.prototype.getTracks = function () { + var _this = this; + return map(this._trackKeys, function (key) { return _this._tracks[key]; }); + }; + Animator.prototype.stopTracks = function (propNames, forwardToLast) { + if (!propNames.length || !this._clip) { + return true; + } + var tracks = this._tracks; + var tracksKeys = this._trackKeys; + for (var i = 0; i < propNames.length; i++) { + var track = tracks[propNames[i]]; + if (track && !track.isFinished()) { + if (forwardToLast) { + track.step(this._target, 1); + } + else if (this._started === 1) { + track.step(this._target, 0); + } + track.setFinished(); + } + } + var allAborted = true; + for (var i = 0; i < tracksKeys.length; i++) { + if (!tracks[tracksKeys[i]].isFinished()) { + allAborted = false; + break; + } + } + if (allAborted) { + this._abortedCallback(); + } + return allAborted; + }; + Animator.prototype.saveTo = function (target, trackKeys, firstOrLast) { + if (!target) { + return; + } + trackKeys = trackKeys || this._trackKeys; + for (var i = 0; i < trackKeys.length; i++) { + var propName = trackKeys[i]; + var track = this._tracks[propName]; + if (!track || track.isFinished()) { + continue; + } + var kfs = track.keyframes; + var kf = kfs[firstOrLast ? 0 : kfs.length - 1]; + if (kf) { + target[propName] = cloneValue(kf.rawValue); + } + } + }; + Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) { + trackKeys = trackKeys || keys(finalProps); + for (var i = 0; i < trackKeys.length; i++) { + var propName = trackKeys[i]; + var track = this._tracks[propName]; + if (!track) { + continue; + } + var kfs = track.keyframes; + if (kfs.length > 1) { + var lastKf = kfs.pop(); + track.addKeyframe(lastKf.time, finalProps[propName]); + track.prepare(this._maxTime, track.getAdditiveTrack()); + } + } + }; + return Animator; + }()); + + function getTime() { + return new Date().getTime(); + } + var Animation = (function (_super) { + __extends(Animation, _super); + function Animation(opts) { + var _this = _super.call(this) || this; + _this._running = false; + _this._time = 0; + _this._pausedTime = 0; + _this._pauseStart = 0; + _this._paused = false; + opts = opts || {}; + _this.stage = opts.stage || {}; + return _this; + } + Animation.prototype.addClip = function (clip) { + if (clip.animation) { + this.removeClip(clip); + } + if (!this._head) { + this._head = this._tail = clip; + } + else { + this._tail.next = clip; + clip.prev = this._tail; + clip.next = null; + this._tail = clip; + } + clip.animation = this; + }; + Animation.prototype.addAnimator = function (animator) { + animator.animation = this; + var clip = animator.getClip(); + if (clip) { + this.addClip(clip); + } + }; + Animation.prototype.removeClip = function (clip) { + if (!clip.animation) { + return; + } + var prev = clip.prev; + var next = clip.next; + if (prev) { + prev.next = next; + } + else { + this._head = next; + } + if (next) { + next.prev = prev; + } + else { + this._tail = prev; + } + clip.next = clip.prev = clip.animation = null; + }; + Animation.prototype.removeAnimator = function (animator) { + var clip = animator.getClip(); + if (clip) { + this.removeClip(clip); + } + animator.animation = null; + }; + Animation.prototype.update = function (notTriggerFrameAndStageUpdate) { + var time = getTime() - this._pausedTime; + var delta = time - this._time; + var clip = this._head; + while (clip) { + var nextClip = clip.next; + var finished = clip.step(time, delta); + if (finished) { + clip.ondestroy(); + this.removeClip(clip); + clip = nextClip; + } + else { + clip = nextClip; + } + } + this._time = time; + if (!notTriggerFrameAndStageUpdate) { + this.trigger('frame', delta); + this.stage.update && this.stage.update(); + } + }; + Animation.prototype._startLoop = function () { + var self = this; + this._running = true; + function step() { + if (self._running) { + requestAnimationFrame$1(step); + !self._paused && self.update(); + } + } + requestAnimationFrame$1(step); + }; + Animation.prototype.start = function () { + if (this._running) { + return; + } + this._time = getTime(); + this._pausedTime = 0; + this._startLoop(); + }; + Animation.prototype.stop = function () { + this._running = false; + }; + Animation.prototype.pause = function () { + if (!this._paused) { + this._pauseStart = getTime(); + this._paused = true; + } + }; + Animation.prototype.resume = function () { + if (this._paused) { + this._pausedTime += getTime() - this._pauseStart; + this._paused = false; + } + }; + Animation.prototype.clear = function () { + var clip = this._head; + while (clip) { + var nextClip = clip.next; + clip.prev = clip.next = clip.animation = null; + clip = nextClip; + } + this._head = this._tail = null; + }; + Animation.prototype.isFinished = function () { + return this._head == null; + }; + Animation.prototype.animate = function (target, options) { + options = options || {}; + this.start(); + var animator = new Animator(target, options.loop); + this.addAnimator(animator); + return animator; + }; + return Animation; + }(Eventful)); + + var TOUCH_CLICK_DELAY = 300; + var globalEventSupported = env.domSupported; + var localNativeListenerNames = (function () { + var mouseHandlerNames = [ + 'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout', + 'mouseup', 'mousedown', 'mousemove', 'contextmenu' + ]; + var touchHandlerNames = [ + 'touchstart', 'touchend', 'touchmove' + ]; + var pointerEventNameMap = { + pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1 + }; + var pointerHandlerNames = map(mouseHandlerNames, function (name) { + var nm = name.replace('mouse', 'pointer'); + return pointerEventNameMap.hasOwnProperty(nm) ? nm : name; + }); + return { + mouse: mouseHandlerNames, + touch: touchHandlerNames, + pointer: pointerHandlerNames + }; + })(); + var globalNativeListenerNames = { + mouse: ['mousemove', 'mouseup'], + pointer: ['pointermove', 'pointerup'] + }; + var wheelEventSupported = false; + function isPointerFromTouch(event) { + var pointerType = event.pointerType; + return pointerType === 'pen' || pointerType === 'touch'; + } + function setTouchTimer(scope) { + scope.touching = true; + if (scope.touchTimer != null) { + clearTimeout(scope.touchTimer); + scope.touchTimer = null; + } + scope.touchTimer = setTimeout(function () { + scope.touching = false; + scope.touchTimer = null; + }, 700); + } + function markTouch(event) { + event && (event.zrByTouch = true); + } + function normalizeGlobalEvent(instance, event) { + return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true); + } + function isLocalEl(instance, el) { + var elTmp = el; + var isLocal = false; + while (elTmp && elTmp.nodeType !== 9 + && !(isLocal = elTmp.domBelongToZr + || (elTmp !== el && elTmp === instance.painterRoot))) { + elTmp = elTmp.parentNode; + } + return isLocal; + } + var FakeGlobalEvent = (function () { + function FakeGlobalEvent(instance, event) { + this.stopPropagation = noop; + this.stopImmediatePropagation = noop; + this.preventDefault = noop; + this.type = event.type; + this.target = this.currentTarget = instance.dom; + this.pointerType = event.pointerType; + this.clientX = event.clientX; + this.clientY = event.clientY; + } + return FakeGlobalEvent; + }()); + var localDOMHandlers = { + mousedown: function (event) { + event = normalizeEvent(this.dom, event); + this.__mayPointerCapture = [event.zrX, event.zrY]; + this.trigger('mousedown', event); + }, + mousemove: function (event) { + event = normalizeEvent(this.dom, event); + var downPoint = this.__mayPointerCapture; + if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) { + this.__togglePointerCapture(true); + } + this.trigger('mousemove', event); + }, + mouseup: function (event) { + event = normalizeEvent(this.dom, event); + this.__togglePointerCapture(false); + this.trigger('mouseup', event); + }, + mouseout: function (event) { + event = normalizeEvent(this.dom, event); + var element = event.toElement || event.relatedTarget; + if (!isLocalEl(this, element)) { + if (this.__pointerCapturing) { + event.zrEventControl = 'no_globalout'; + } + this.trigger('mouseout', event); + } + }, + wheel: function (event) { + wheelEventSupported = true; + event = normalizeEvent(this.dom, event); + this.trigger('mousewheel', event); + }, + mousewheel: function (event) { + if (wheelEventSupported) { + return; + } + event = normalizeEvent(this.dom, event); + this.trigger('mousewheel', event); + }, + touchstart: function (event) { + event = normalizeEvent(this.dom, event); + markTouch(event); + this.__lastTouchMoment = new Date(); + this.handler.processGesture(event, 'start'); + localDOMHandlers.mousemove.call(this, event); + localDOMHandlers.mousedown.call(this, event); + }, + touchmove: function (event) { + event = normalizeEvent(this.dom, event); + markTouch(event); + this.handler.processGesture(event, 'change'); + localDOMHandlers.mousemove.call(this, event); + }, + touchend: function (event) { + event = normalizeEvent(this.dom, event); + markTouch(event); + this.handler.processGesture(event, 'end'); + localDOMHandlers.mouseup.call(this, event); + if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) { + localDOMHandlers.click.call(this, event); + } + }, + pointerdown: function (event) { + localDOMHandlers.mousedown.call(this, event); + }, + pointermove: function (event) { + if (!isPointerFromTouch(event)) { + localDOMHandlers.mousemove.call(this, event); + } + }, + pointerup: function (event) { + localDOMHandlers.mouseup.call(this, event); + }, + pointerout: function (event) { + if (!isPointerFromTouch(event)) { + localDOMHandlers.mouseout.call(this, event); + } + } + }; + each(['click', 'dblclick', 'contextmenu'], function (name) { + localDOMHandlers[name] = function (event) { + event = normalizeEvent(this.dom, event); + this.trigger(name, event); + }; + }); + var globalDOMHandlers = { + pointermove: function (event) { + if (!isPointerFromTouch(event)) { + globalDOMHandlers.mousemove.call(this, event); + } + }, + pointerup: function (event) { + globalDOMHandlers.mouseup.call(this, event); + }, + mousemove: function (event) { + this.trigger('mousemove', event); + }, + mouseup: function (event) { + var pointerCaptureReleasing = this.__pointerCapturing; + this.__togglePointerCapture(false); + this.trigger('mouseup', event); + if (pointerCaptureReleasing) { + event.zrEventControl = 'only_globalout'; + this.trigger('mouseout', event); + } + } + }; + function mountLocalDOMEventListeners(instance, scope) { + var domHandlers = scope.domHandlers; + if (env.pointerEventsSupported) { + each(localNativeListenerNames.pointer, function (nativeEventName) { + mountSingleDOMEventListener(scope, nativeEventName, function (event) { + domHandlers[nativeEventName].call(instance, event); + }); + }); + } + else { + if (env.touchEventsSupported) { + each(localNativeListenerNames.touch, function (nativeEventName) { + mountSingleDOMEventListener(scope, nativeEventName, function (event) { + domHandlers[nativeEventName].call(instance, event); + setTouchTimer(scope); + }); + }); + } + each(localNativeListenerNames.mouse, function (nativeEventName) { + mountSingleDOMEventListener(scope, nativeEventName, function (event) { + event = getNativeEvent(event); + if (!scope.touching) { + domHandlers[nativeEventName].call(instance, event); + } + }); + }); + } + } + function mountGlobalDOMEventListeners(instance, scope) { + if (env.pointerEventsSupported) { + each(globalNativeListenerNames.pointer, mount); + } + else if (!env.touchEventsSupported) { + each(globalNativeListenerNames.mouse, mount); + } + function mount(nativeEventName) { + function nativeEventListener(event) { + event = getNativeEvent(event); + if (!isLocalEl(instance, event.target)) { + event = normalizeGlobalEvent(instance, event); + scope.domHandlers[nativeEventName].call(instance, event); + } + } + mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true }); + } + } + function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) { + scope.mounted[nativeEventName] = listener; + scope.listenerOpts[nativeEventName] = opt; + addEventListener(scope.domTarget, nativeEventName, listener, opt); + } + function unmountDOMEventListeners(scope) { + var mounted = scope.mounted; + for (var nativeEventName in mounted) { + if (mounted.hasOwnProperty(nativeEventName)) { + removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]); + } + } + scope.mounted = {}; + } + var DOMHandlerScope = (function () { + function DOMHandlerScope(domTarget, domHandlers) { + this.mounted = {}; + this.listenerOpts = {}; + this.touching = false; + this.domTarget = domTarget; + this.domHandlers = domHandlers; + } + return DOMHandlerScope; + }()); + var HandlerDomProxy = (function (_super) { + __extends(HandlerDomProxy, _super); + function HandlerDomProxy(dom, painterRoot) { + var _this = _super.call(this) || this; + _this.__pointerCapturing = false; + _this.dom = dom; + _this.painterRoot = painterRoot; + _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers); + if (globalEventSupported) { + _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers); + } + mountLocalDOMEventListeners(_this, _this._localHandlerScope); + return _this; + } + HandlerDomProxy.prototype.dispose = function () { + unmountDOMEventListeners(this._localHandlerScope); + if (globalEventSupported) { + unmountDOMEventListeners(this._globalHandlerScope); + } + }; + HandlerDomProxy.prototype.setCursor = function (cursorStyle) { + this.dom.style && (this.dom.style.cursor = cursorStyle || 'default'); + }; + HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) { + this.__mayPointerCapture = null; + if (globalEventSupported + && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) { + this.__pointerCapturing = isPointerCapturing; + var globalHandlerScope = this._globalHandlerScope; + isPointerCapturing + ? mountGlobalDOMEventListeners(this, globalHandlerScope) + : unmountDOMEventListeners(globalHandlerScope); + } + }; + return HandlerDomProxy; + }(Eventful)); + + var dpr = 1; + if (env.hasGlobalWindow) { + dpr = Math.max(window.devicePixelRatio + || (window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI) + || 1, 1); + } + var devicePixelRatio = dpr; + var DARK_MODE_THRESHOLD = 0.4; + var DARK_LABEL_COLOR = '#333'; + var LIGHT_LABEL_COLOR = '#ccc'; + var LIGHTER_LABEL_COLOR = '#eee'; + + var mIdentity = identity; + var EPSILON$2 = 5e-5; + function isNotAroundZero$1(val) { + return val > EPSILON$2 || val < -EPSILON$2; + } + var scaleTmp = []; + var tmpTransform = []; + var originTransform = create$1(); + var abs = Math.abs; + var Transformable = (function () { + function Transformable() { + } + Transformable.prototype.getLocalTransform = function (m) { + return Transformable.getLocalTransform(this, m); + }; + Transformable.prototype.setPosition = function (arr) { + this.x = arr[0]; + this.y = arr[1]; + }; + Transformable.prototype.setScale = function (arr) { + this.scaleX = arr[0]; + this.scaleY = arr[1]; + }; + Transformable.prototype.setSkew = function (arr) { + this.skewX = arr[0]; + this.skewY = arr[1]; + }; + Transformable.prototype.setOrigin = function (arr) { + this.originX = arr[0]; + this.originY = arr[1]; + }; + Transformable.prototype.needLocalTransform = function () { + return isNotAroundZero$1(this.rotation) + || isNotAroundZero$1(this.x) + || isNotAroundZero$1(this.y) + || isNotAroundZero$1(this.scaleX - 1) + || isNotAroundZero$1(this.scaleY - 1) + || isNotAroundZero$1(this.skewX) + || isNotAroundZero$1(this.skewY); + }; + Transformable.prototype.updateTransform = function () { + var parentTransform = this.parent && this.parent.transform; + var needLocalTransform = this.needLocalTransform(); + var m = this.transform; + if (!(needLocalTransform || parentTransform)) { + if (m) { + mIdentity(m); + this.invTransform = null; + } + return; + } + m = m || create$1(); + if (needLocalTransform) { + this.getLocalTransform(m); + } + else { + mIdentity(m); + } + if (parentTransform) { + if (needLocalTransform) { + mul$1(m, parentTransform, m); + } + else { + copy$1(m, parentTransform); + } + } + this.transform = m; + this._resolveGlobalScaleRatio(m); + }; + Transformable.prototype._resolveGlobalScaleRatio = function (m) { + var globalScaleRatio = this.globalScaleRatio; + if (globalScaleRatio != null && globalScaleRatio !== 1) { + this.getGlobalScale(scaleTmp); + var relX = scaleTmp[0] < 0 ? -1 : 1; + var relY = scaleTmp[1] < 0 ? -1 : 1; + var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0; + var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0; + m[0] *= sx; + m[1] *= sx; + m[2] *= sy; + m[3] *= sy; + } + this.invTransform = this.invTransform || create$1(); + invert(this.invTransform, m); + }; + Transformable.prototype.getComputedTransform = function () { + var transformNode = this; + var ancestors = []; + while (transformNode) { + ancestors.push(transformNode); + transformNode = transformNode.parent; + } + while (transformNode = ancestors.pop()) { + transformNode.updateTransform(); + } + return this.transform; + }; + Transformable.prototype.setLocalTransform = function (m) { + if (!m) { + return; + } + var sx = m[0] * m[0] + m[1] * m[1]; + var sy = m[2] * m[2] + m[3] * m[3]; + var rotation = Math.atan2(m[1], m[0]); + var shearX = Math.PI / 2 + rotation - Math.atan2(m[3], m[2]); + sy = Math.sqrt(sy) * Math.cos(shearX); + sx = Math.sqrt(sx); + this.skewX = shearX; + this.skewY = 0; + this.rotation = -rotation; + this.x = +m[4]; + this.y = +m[5]; + this.scaleX = sx; + this.scaleY = sy; + this.originX = 0; + this.originY = 0; + }; + Transformable.prototype.decomposeTransform = function () { + if (!this.transform) { + return; + } + var parent = this.parent; + var m = this.transform; + if (parent && parent.transform) { + parent.invTransform = parent.invTransform || create$1(); + mul$1(tmpTransform, parent.invTransform, m); + m = tmpTransform; + } + var ox = this.originX; + var oy = this.originY; + if (ox || oy) { + originTransform[4] = ox; + originTransform[5] = oy; + mul$1(tmpTransform, m, originTransform); + tmpTransform[4] -= ox; + tmpTransform[5] -= oy; + m = tmpTransform; + } + this.setLocalTransform(m); + }; + Transformable.prototype.getGlobalScale = function (out) { + var m = this.transform; + out = out || []; + if (!m) { + out[0] = 1; + out[1] = 1; + return out; + } + out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]); + out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]); + if (m[0] < 0) { + out[0] = -out[0]; + } + if (m[3] < 0) { + out[1] = -out[1]; + } + return out; + }; + Transformable.prototype.transformCoordToLocal = function (x, y) { + var v2 = [x, y]; + var invTransform = this.invTransform; + if (invTransform) { + applyTransform(v2, v2, invTransform); + } + return v2; + }; + Transformable.prototype.transformCoordToGlobal = function (x, y) { + var v2 = [x, y]; + var transform = this.transform; + if (transform) { + applyTransform(v2, v2, transform); + } + return v2; + }; + Transformable.prototype.getLineScale = function () { + var m = this.transform; + return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10 + ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1])) + : 1; + }; + Transformable.prototype.copyTransform = function (source) { + copyTransform(this, source); + }; + Transformable.getLocalTransform = function (target, m) { + m = m || []; + var ox = target.originX || 0; + var oy = target.originY || 0; + var sx = target.scaleX; + var sy = target.scaleY; + var ax = target.anchorX; + var ay = target.anchorY; + var rotation = target.rotation || 0; + var x = target.x; + var y = target.y; + var skewX = target.skewX ? Math.tan(target.skewX) : 0; + var skewY = target.skewY ? Math.tan(-target.skewY) : 0; + if (ox || oy || ax || ay) { + var dx = ox + ax; + var dy = oy + ay; + m[4] = -dx * sx - skewX * dy * sy; + m[5] = -dy * sy - skewY * dx * sx; + } + else { + m[4] = m[5] = 0; + } + m[0] = sx; + m[3] = sy; + m[1] = skewY * sx; + m[2] = skewX * sy; + rotation && rotate(m, m, rotation); + m[4] += ox + x; + m[5] += oy + y; + return m; + }; + Transformable.initDefaultProps = (function () { + var proto = Transformable.prototype; + proto.scaleX = + proto.scaleY = + proto.globalScaleRatio = 1; + proto.x = + proto.y = + proto.originX = + proto.originY = + proto.skewX = + proto.skewY = + proto.rotation = + proto.anchorX = + proto.anchorY = 0; + })(); + return Transformable; + }()); + var TRANSFORMABLE_PROPS = [ + 'x', 'y', 'originX', 'originY', 'anchorX', 'anchorY', 'rotation', 'scaleX', 'scaleY', 'skewX', 'skewY' + ]; + function copyTransform(target, source) { + for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) { + var propName = TRANSFORMABLE_PROPS[i]; + target[propName] = source[propName]; + } + } + + var textWidthCache = {}; + function getWidth(text, font) { + font = font || DEFAULT_FONT; + var cacheOfFont = textWidthCache[font]; + if (!cacheOfFont) { + cacheOfFont = textWidthCache[font] = new LRU(500); + } + var width = cacheOfFont.get(text); + if (width == null) { + width = platformApi.measureText(text, font).width; + cacheOfFont.put(text, width); + } + return width; + } + function innerGetBoundingRect(text, font, textAlign, textBaseline) { + var width = getWidth(text, font); + var height = getLineHeight(font); + var x = adjustTextX(0, width, textAlign); + var y = adjustTextY$1(0, height, textBaseline); + var rect = new BoundingRect(x, y, width, height); + return rect; + } + function getBoundingRect(text, font, textAlign, textBaseline) { + var textLines = ((text || '') + '').split('\n'); + var len = textLines.length; + if (len === 1) { + return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline); + } + else { + var uniondRect = new BoundingRect(0, 0, 0, 0); + for (var i = 0; i < textLines.length; i++) { + var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline); + i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect); + } + return uniondRect; + } + } + function adjustTextX(x, width, textAlign) { + if (textAlign === 'right') { + x -= width; + } + else if (textAlign === 'center') { + x -= width / 2; + } + return x; + } + function adjustTextY$1(y, height, verticalAlign) { + if (verticalAlign === 'middle') { + y -= height / 2; + } + else if (verticalAlign === 'bottom') { + y -= height; + } + return y; + } + function getLineHeight(font) { + return getWidth('国', font); + } + function parsePercent(value, maxValue) { + if (typeof value === 'string') { + if (value.lastIndexOf('%') >= 0) { + return parseFloat(value) / 100 * maxValue; + } + return parseFloat(value); + } + return value; + } + function calculateTextPosition(out, opts, rect) { + var textPosition = opts.position || 'inside'; + var distance = opts.distance != null ? opts.distance : 5; + var height = rect.height; + var width = rect.width; + var halfHeight = height / 2; + var x = rect.x; + var y = rect.y; + var textAlign = 'left'; + var textVerticalAlign = 'top'; + if (textPosition instanceof Array) { + x += parsePercent(textPosition[0], rect.width); + y += parsePercent(textPosition[1], rect.height); + textAlign = null; + textVerticalAlign = null; + } + else { + switch (textPosition) { + case 'left': + x -= distance; + y += halfHeight; + textAlign = 'right'; + textVerticalAlign = 'middle'; + break; + case 'right': + x += distance + width; + y += halfHeight; + textVerticalAlign = 'middle'; + break; + case 'top': + x += width / 2; + y -= distance; + textAlign = 'center'; + textVerticalAlign = 'bottom'; + break; + case 'bottom': + x += width / 2; + y += height + distance; + textAlign = 'center'; + break; + case 'inside': + x += width / 2; + y += halfHeight; + textAlign = 'center'; + textVerticalAlign = 'middle'; + break; + case 'insideLeft': + x += distance; + y += halfHeight; + textVerticalAlign = 'middle'; + break; + case 'insideRight': + x += width - distance; + y += halfHeight; + textAlign = 'right'; + textVerticalAlign = 'middle'; + break; + case 'insideTop': + x += width / 2; + y += distance; + textAlign = 'center'; + break; + case 'insideBottom': + x += width / 2; + y += height - distance; + textAlign = 'center'; + textVerticalAlign = 'bottom'; + break; + case 'insideTopLeft': + x += distance; + y += distance; + break; + case 'insideTopRight': + x += width - distance; + y += distance; + textAlign = 'right'; + break; + case 'insideBottomLeft': + x += distance; + y += height - distance; + textVerticalAlign = 'bottom'; + break; + case 'insideBottomRight': + x += width - distance; + y += height - distance; + textAlign = 'right'; + textVerticalAlign = 'bottom'; + break; + } + } + out = out || {}; + out.x = x; + out.y = y; + out.align = textAlign; + out.verticalAlign = textVerticalAlign; + return out; + } + + var PRESERVED_NORMAL_STATE = '__zr_normal__'; + var PRIMARY_STATES_KEYS = TRANSFORMABLE_PROPS.concat(['ignore']); + var DEFAULT_ANIMATABLE_MAP = reduce(TRANSFORMABLE_PROPS, function (obj, key) { + obj[key] = true; + return obj; + }, { ignore: false }); + var tmpTextPosCalcRes = {}; + var tmpBoundingRect = new BoundingRect(0, 0, 0, 0); + var Element = (function () { + function Element(props) { + this.id = guid(); + this.animators = []; + this.currentStates = []; + this.states = {}; + this._init(props); + } + Element.prototype._init = function (props) { + this.attr(props); + }; + Element.prototype.drift = function (dx, dy, e) { + switch (this.draggable) { + case 'horizontal': + dy = 0; + break; + case 'vertical': + dx = 0; + break; + } + var m = this.transform; + if (!m) { + m = this.transform = [1, 0, 0, 1, 0, 0]; + } + m[4] += dx; + m[5] += dy; + this.decomposeTransform(); + this.markRedraw(); + }; + Element.prototype.beforeUpdate = function () { }; + Element.prototype.afterUpdate = function () { }; + Element.prototype.update = function () { + this.updateTransform(); + if (this.__dirty) { + this.updateInnerText(); + } + }; + Element.prototype.updateInnerText = function (forceUpdate) { + var textEl = this._textContent; + if (textEl && (!textEl.ignore || forceUpdate)) { + if (!this.textConfig) { + this.textConfig = {}; + } + var textConfig = this.textConfig; + var isLocal = textConfig.local; + var innerTransformable = textEl.innerTransformable; + var textAlign = void 0; + var textVerticalAlign = void 0; + var textStyleChanged = false; + innerTransformable.parent = isLocal ? this : null; + var innerOrigin = false; + innerTransformable.copyTransform(textEl); + if (textConfig.position != null) { + var layoutRect = tmpBoundingRect; + if (textConfig.layoutRect) { + layoutRect.copy(textConfig.layoutRect); + } + else { + layoutRect.copy(this.getBoundingRect()); + } + if (!isLocal) { + layoutRect.applyTransform(this.transform); + } + if (this.calculateTextPosition) { + this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect); + } + else { + calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect); + } + innerTransformable.x = tmpTextPosCalcRes.x; + innerTransformable.y = tmpTextPosCalcRes.y; + textAlign = tmpTextPosCalcRes.align; + textVerticalAlign = tmpTextPosCalcRes.verticalAlign; + var textOrigin = textConfig.origin; + if (textOrigin && textConfig.rotation != null) { + var relOriginX = void 0; + var relOriginY = void 0; + if (textOrigin === 'center') { + relOriginX = layoutRect.width * 0.5; + relOriginY = layoutRect.height * 0.5; + } + else { + relOriginX = parsePercent(textOrigin[0], layoutRect.width); + relOriginY = parsePercent(textOrigin[1], layoutRect.height); + } + innerOrigin = true; + innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x); + innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y); + } + } + if (textConfig.rotation != null) { + innerTransformable.rotation = textConfig.rotation; + } + var textOffset = textConfig.offset; + if (textOffset) { + innerTransformable.x += textOffset[0]; + innerTransformable.y += textOffset[1]; + if (!innerOrigin) { + innerTransformable.originX = -textOffset[0]; + innerTransformable.originY = -textOffset[1]; + } + } + var isInside = textConfig.inside == null + ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0) + : textConfig.inside; + var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {}); + var textFill = void 0; + var textStroke = void 0; + var autoStroke = void 0; + if (isInside && this.canBeInsideText()) { + textFill = textConfig.insideFill; + textStroke = textConfig.insideStroke; + if (textFill == null || textFill === 'auto') { + textFill = this.getInsideTextFill(); + } + if (textStroke == null || textStroke === 'auto') { + textStroke = this.getInsideTextStroke(textFill); + autoStroke = true; + } + } + else { + textFill = textConfig.outsideFill; + textStroke = textConfig.outsideStroke; + if (textFill == null || textFill === 'auto') { + textFill = this.getOutsideFill(); + } + if (textStroke == null || textStroke === 'auto') { + textStroke = this.getOutsideStroke(textFill); + autoStroke = true; + } + } + textFill = textFill || '#000'; + if (textFill !== innerTextDefaultStyle.fill + || textStroke !== innerTextDefaultStyle.stroke + || autoStroke !== innerTextDefaultStyle.autoStroke + || textAlign !== innerTextDefaultStyle.align + || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) { + textStyleChanged = true; + innerTextDefaultStyle.fill = textFill; + innerTextDefaultStyle.stroke = textStroke; + innerTextDefaultStyle.autoStroke = autoStroke; + innerTextDefaultStyle.align = textAlign; + innerTextDefaultStyle.verticalAlign = textVerticalAlign; + textEl.setDefaultTextStyle(innerTextDefaultStyle); + } + textEl.__dirty |= REDRAW_BIT; + if (textStyleChanged) { + textEl.dirtyStyle(true); + } + } + }; + Element.prototype.canBeInsideText = function () { + return true; + }; + Element.prototype.getInsideTextFill = function () { + return '#fff'; + }; + Element.prototype.getInsideTextStroke = function (textFill) { + return '#000'; + }; + Element.prototype.getOutsideFill = function () { + return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR; + }; + Element.prototype.getOutsideStroke = function (textFill) { + var backgroundColor = this.__zr && this.__zr.getBackgroundColor(); + var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor); + if (!colorArr) { + colorArr = [255, 255, 255, 1]; + } + var alpha = colorArr[3]; + var isDark = this.__zr.isDarkMode(); + for (var i = 0; i < 3; i++) { + colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha); + } + colorArr[3] = 1; + return stringify(colorArr, 'rgba'); + }; + Element.prototype.traverse = function (cb, context) { }; + Element.prototype.attrKV = function (key, value) { + if (key === 'textConfig') { + this.setTextConfig(value); + } + else if (key === 'textContent') { + this.setTextContent(value); + } + else if (key === 'clipPath') { + this.setClipPath(value); + } + else if (key === 'extra') { + this.extra = this.extra || {}; + extend(this.extra, value); + } + else { + this[key] = value; + } + }; + Element.prototype.hide = function () { + this.ignore = true; + this.markRedraw(); + }; + Element.prototype.show = function () { + this.ignore = false; + this.markRedraw(); + }; + Element.prototype.attr = function (keyOrObj, value) { + if (typeof keyOrObj === 'string') { + this.attrKV(keyOrObj, value); + } + else if (isObject(keyOrObj)) { + var obj = keyOrObj; + var keysArr = keys(obj); + for (var i = 0; i < keysArr.length; i++) { + var key = keysArr[i]; + this.attrKV(key, keyOrObj[key]); + } + } + this.markRedraw(); + return this; + }; + Element.prototype.saveCurrentToNormalState = function (toState) { + this._innerSaveToNormal(toState); + var normalState = this._normalState; + for (var i = 0; i < this.animators.length; i++) { + var animator = this.animators[i]; + var fromStateTransition = animator.__fromStateTransition; + if (animator.getLoop() || fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) { + continue; + } + var targetName = animator.targetName; + var target = targetName + ? normalState[targetName] : normalState; + animator.saveTo(target); + } + }; + Element.prototype._innerSaveToNormal = function (toState) { + var normalState = this._normalState; + if (!normalState) { + normalState = this._normalState = {}; + } + if (toState.textConfig && !normalState.textConfig) { + normalState.textConfig = this.textConfig; + } + this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS); + }; + Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) { + for (var i = 0; i < primaryKeys.length; i++) { + var key = primaryKeys[i]; + if (toState[key] != null && !(key in normalState)) { + normalState[key] = this[key]; + } + } + }; + Element.prototype.hasState = function () { + return this.currentStates.length > 0; + }; + Element.prototype.getState = function (name) { + return this.states[name]; + }; + Element.prototype.ensureState = function (name) { + var states = this.states; + if (!states[name]) { + states[name] = {}; + } + return states[name]; + }; + Element.prototype.clearStates = function (noAnimation) { + this.useState(PRESERVED_NORMAL_STATE, false, noAnimation); + }; + Element.prototype.useState = function (stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) { + var toNormalState = stateName === PRESERVED_NORMAL_STATE; + var hasStates = this.hasState(); + if (!hasStates && toNormalState) { + return; + } + var currentStates = this.currentStates; + var animationCfg = this.stateTransition; + if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) { + return; + } + var state; + if (this.stateProxy && !toNormalState) { + state = this.stateProxy(stateName); + } + if (!state) { + state = (this.states && this.states[stateName]); + } + if (!state && !toNormalState) { + logError("State " + stateName + " not exists."); + return; + } + if (!toNormalState) { + this.saveCurrentToNormalState(state); + } + var useHoverLayer = !!((state && state.hoverLayer) || forceUseHoverLayer); + if (useHoverLayer) { + this._toggleHoverLayerFlag(true); + } + this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg); + var textContent = this._textContent; + var textGuide = this._textGuide; + if (textContent) { + textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer); + } + if (textGuide) { + textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer); + } + if (toNormalState) { + this.currentStates = []; + this._normalState = {}; + } + else { + if (!keepCurrentStates) { + this.currentStates = [stateName]; + } + else { + this.currentStates.push(stateName); + } + } + this._updateAnimationTargets(); + this.markRedraw(); + if (!useHoverLayer && this.__inHover) { + this._toggleHoverLayerFlag(false); + this.__dirty &= ~REDRAW_BIT; + } + return state; + }; + Element.prototype.useStates = function (states, noAnimation, forceUseHoverLayer) { + if (!states.length) { + this.clearStates(); + } + else { + var stateObjects = []; + var currentStates = this.currentStates; + var len = states.length; + var notChange = len === currentStates.length; + if (notChange) { + for (var i = 0; i < len; i++) { + if (states[i] !== currentStates[i]) { + notChange = false; + break; + } + } + } + if (notChange) { + return; + } + for (var i = 0; i < len; i++) { + var stateName = states[i]; + var stateObj = void 0; + if (this.stateProxy) { + stateObj = this.stateProxy(stateName, states); + } + if (!stateObj) { + stateObj = this.states[stateName]; + } + if (stateObj) { + stateObjects.push(stateObj); + } + } + var lastStateObj = stateObjects[len - 1]; + var useHoverLayer = !!((lastStateObj && lastStateObj.hoverLayer) || forceUseHoverLayer); + if (useHoverLayer) { + this._toggleHoverLayerFlag(true); + } + var mergedState = this._mergeStates(stateObjects); + var animationCfg = this.stateTransition; + this.saveCurrentToNormalState(mergedState); + this._applyStateObj(states.join(','), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg); + var textContent = this._textContent; + var textGuide = this._textGuide; + if (textContent) { + textContent.useStates(states, noAnimation, useHoverLayer); + } + if (textGuide) { + textGuide.useStates(states, noAnimation, useHoverLayer); + } + this._updateAnimationTargets(); + this.currentStates = states.slice(); + this.markRedraw(); + if (!useHoverLayer && this.__inHover) { + this._toggleHoverLayerFlag(false); + this.__dirty &= ~REDRAW_BIT; + } + } + }; + Element.prototype.isSilent = function () { + var isSilent = this.silent; + var ancestor = this.parent; + while (!isSilent && ancestor) { + if (ancestor.silent) { + isSilent = true; + break; + } + ancestor = ancestor.parent; + } + return isSilent; + }; + Element.prototype._updateAnimationTargets = function () { + for (var i = 0; i < this.animators.length; i++) { + var animator = this.animators[i]; + if (animator.targetName) { + animator.changeTarget(this[animator.targetName]); + } + } + }; + Element.prototype.removeState = function (state) { + var idx = indexOf(this.currentStates, state); + if (idx >= 0) { + var currentStates = this.currentStates.slice(); + currentStates.splice(idx, 1); + this.useStates(currentStates); + } + }; + Element.prototype.replaceState = function (oldState, newState, forceAdd) { + var currentStates = this.currentStates.slice(); + var idx = indexOf(currentStates, oldState); + var newStateExists = indexOf(currentStates, newState) >= 0; + if (idx >= 0) { + if (!newStateExists) { + currentStates[idx] = newState; + } + else { + currentStates.splice(idx, 1); + } + } + else if (forceAdd && !newStateExists) { + currentStates.push(newState); + } + this.useStates(currentStates); + }; + Element.prototype.toggleState = function (state, enable) { + if (enable) { + this.useState(state, true); + } + else { + this.removeState(state); + } + }; + Element.prototype._mergeStates = function (states) { + var mergedState = {}; + var mergedTextConfig; + for (var i = 0; i < states.length; i++) { + var state = states[i]; + extend(mergedState, state); + if (state.textConfig) { + mergedTextConfig = mergedTextConfig || {}; + extend(mergedTextConfig, state.textConfig); + } + } + if (mergedTextConfig) { + mergedState.textConfig = mergedTextConfig; + } + return mergedState; + }; + Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) { + var needsRestoreToNormal = !(state && keepCurrentStates); + if (state && state.textConfig) { + this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig); + extend(this.textConfig, state.textConfig); + } + else if (needsRestoreToNormal) { + if (normalState.textConfig) { + this.textConfig = normalState.textConfig; + } + } + var transitionTarget = {}; + var hasTransition = false; + for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) { + var key = PRIMARY_STATES_KEYS[i]; + var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key]; + if (state && state[key] != null) { + if (propNeedsTransition) { + hasTransition = true; + transitionTarget[key] = state[key]; + } + else { + this[key] = state[key]; + } + } + else if (needsRestoreToNormal) { + if (normalState[key] != null) { + if (propNeedsTransition) { + hasTransition = true; + transitionTarget[key] = normalState[key]; + } + else { + this[key] = normalState[key]; + } + } + } + } + if (!transition) { + for (var i = 0; i < this.animators.length; i++) { + var animator = this.animators[i]; + var targetName = animator.targetName; + if (!animator.getLoop()) { + animator.__changeFinalValue(targetName + ? (state || normalState)[targetName] + : (state || normalState)); + } + } + } + if (hasTransition) { + this._transitionState(stateName, transitionTarget, animationCfg); + } + }; + Element.prototype._attachComponent = function (componentEl) { + if (componentEl.__zr && !componentEl.__hostTarget) { + if ("development" !== 'production') { + throw new Error('Text element has been added to zrender.'); + } + return; + } + if (componentEl === this) { + if ("development" !== 'production') { + throw new Error('Recursive component attachment.'); + } + return; + } + var zr = this.__zr; + if (zr) { + componentEl.addSelfToZr(zr); + } + componentEl.__zr = zr; + componentEl.__hostTarget = this; + }; + Element.prototype._detachComponent = function (componentEl) { + if (componentEl.__zr) { + componentEl.removeSelfFromZr(componentEl.__zr); + } + componentEl.__zr = null; + componentEl.__hostTarget = null; + }; + Element.prototype.getClipPath = function () { + return this._clipPath; + }; + Element.prototype.setClipPath = function (clipPath) { + if (this._clipPath && this._clipPath !== clipPath) { + this.removeClipPath(); + } + this._attachComponent(clipPath); + this._clipPath = clipPath; + this.markRedraw(); + }; + Element.prototype.removeClipPath = function () { + var clipPath = this._clipPath; + if (clipPath) { + this._detachComponent(clipPath); + this._clipPath = null; + this.markRedraw(); + } + }; + Element.prototype.getTextContent = function () { + return this._textContent; + }; + Element.prototype.setTextContent = function (textEl) { + var previousTextContent = this._textContent; + if (previousTextContent === textEl) { + return; + } + if (previousTextContent && previousTextContent !== textEl) { + this.removeTextContent(); + } + if ("development" !== 'production') { + if (textEl.__zr && !textEl.__hostTarget) { + throw new Error('Text element has been added to zrender.'); + } + } + textEl.innerTransformable = new Transformable(); + this._attachComponent(textEl); + this._textContent = textEl; + this.markRedraw(); + }; + Element.prototype.setTextConfig = function (cfg) { + if (!this.textConfig) { + this.textConfig = {}; + } + extend(this.textConfig, cfg); + this.markRedraw(); + }; + Element.prototype.removeTextConfig = function () { + this.textConfig = null; + this.markRedraw(); + }; + Element.prototype.removeTextContent = function () { + var textEl = this._textContent; + if (textEl) { + textEl.innerTransformable = null; + this._detachComponent(textEl); + this._textContent = null; + this._innerTextDefaultStyle = null; + this.markRedraw(); + } + }; + Element.prototype.getTextGuideLine = function () { + return this._textGuide; + }; + Element.prototype.setTextGuideLine = function (guideLine) { + if (this._textGuide && this._textGuide !== guideLine) { + this.removeTextGuideLine(); + } + this._attachComponent(guideLine); + this._textGuide = guideLine; + this.markRedraw(); + }; + Element.prototype.removeTextGuideLine = function () { + var textGuide = this._textGuide; + if (textGuide) { + this._detachComponent(textGuide); + this._textGuide = null; + this.markRedraw(); + } + }; + Element.prototype.markRedraw = function () { + this.__dirty |= REDRAW_BIT; + var zr = this.__zr; + if (zr) { + if (this.__inHover) { + zr.refreshHover(); + } + else { + zr.refresh(); + } + } + if (this.__hostTarget) { + this.__hostTarget.markRedraw(); + } + }; + Element.prototype.dirty = function () { + this.markRedraw(); + }; + Element.prototype._toggleHoverLayerFlag = function (inHover) { + this.__inHover = inHover; + var textContent = this._textContent; + var textGuide = this._textGuide; + if (textContent) { + textContent.__inHover = inHover; + } + if (textGuide) { + textGuide.__inHover = inHover; + } + }; + Element.prototype.addSelfToZr = function (zr) { + if (this.__zr === zr) { + return; + } + this.__zr = zr; + var animators = this.animators; + if (animators) { + for (var i = 0; i < animators.length; i++) { + zr.animation.addAnimator(animators[i]); + } + } + if (this._clipPath) { + this._clipPath.addSelfToZr(zr); + } + if (this._textContent) { + this._textContent.addSelfToZr(zr); + } + if (this._textGuide) { + this._textGuide.addSelfToZr(zr); + } + }; + Element.prototype.removeSelfFromZr = function (zr) { + if (!this.__zr) { + return; + } + this.__zr = null; + var animators = this.animators; + if (animators) { + for (var i = 0; i < animators.length; i++) { + zr.animation.removeAnimator(animators[i]); + } + } + if (this._clipPath) { + this._clipPath.removeSelfFromZr(zr); + } + if (this._textContent) { + this._textContent.removeSelfFromZr(zr); + } + if (this._textGuide) { + this._textGuide.removeSelfFromZr(zr); + } + }; + Element.prototype.animate = function (key, loop, allowDiscreteAnimation) { + var target = key ? this[key] : this; + if ("development" !== 'production') { + if (!target) { + logError('Property "' + + key + + '" is not existed in element ' + + this.id); + return; + } + } + var animator = new Animator(target, loop, allowDiscreteAnimation); + key && (animator.targetName = key); + this.addAnimator(animator, key); + return animator; + }; + Element.prototype.addAnimator = function (animator, key) { + var zr = this.__zr; + var el = this; + animator.during(function () { + el.updateDuringAnimation(key); + }).done(function () { + var animators = el.animators; + var idx = indexOf(animators, animator); + if (idx >= 0) { + animators.splice(idx, 1); + } + }); + this.animators.push(animator); + if (zr) { + zr.animation.addAnimator(animator); + } + zr && zr.wakeUp(); + }; + Element.prototype.updateDuringAnimation = function (key) { + this.markRedraw(); + }; + Element.prototype.stopAnimation = function (scope, forwardToLast) { + var animators = this.animators; + var len = animators.length; + var leftAnimators = []; + for (var i = 0; i < len; i++) { + var animator = animators[i]; + if (!scope || scope === animator.scope) { + animator.stop(forwardToLast); + } + else { + leftAnimators.push(animator); + } + } + this.animators = leftAnimators; + return this; + }; + Element.prototype.animateTo = function (target, cfg, animationProps) { + animateTo(this, target, cfg, animationProps); + }; + Element.prototype.animateFrom = function (target, cfg, animationProps) { + animateTo(this, target, cfg, animationProps, true); + }; + Element.prototype._transitionState = function (stateName, target, cfg, animationProps) { + var animators = animateTo(this, target, cfg, animationProps); + for (var i = 0; i < animators.length; i++) { + animators[i].__fromStateTransition = stateName; + } + }; + Element.prototype.getBoundingRect = function () { + return null; + }; + Element.prototype.getPaintRect = function () { + return null; + }; + Element.initDefaultProps = (function () { + var elProto = Element.prototype; + elProto.type = 'element'; + elProto.name = ''; + elProto.ignore = + elProto.silent = + elProto.isGroup = + elProto.draggable = + elProto.dragging = + elProto.ignoreClip = + elProto.__inHover = false; + elProto.__dirty = REDRAW_BIT; + var logs = {}; + function logDeprecatedError(key, xKey, yKey) { + if (!logs[key + xKey + yKey]) { + console.warn("DEPRECATED: '" + key + "' has been deprecated. use '" + xKey + "', '" + yKey + "' instead"); + logs[key + xKey + yKey] = true; + } + } + function createLegacyProperty(key, privateKey, xKey, yKey) { + Object.defineProperty(elProto, key, { + get: function () { + if ("development" !== 'production') { + logDeprecatedError(key, xKey, yKey); + } + if (!this[privateKey]) { + var pos = this[privateKey] = []; + enhanceArray(this, pos); + } + return this[privateKey]; + }, + set: function (pos) { + if ("development" !== 'production') { + logDeprecatedError(key, xKey, yKey); + } + this[xKey] = pos[0]; + this[yKey] = pos[1]; + this[privateKey] = pos; + enhanceArray(this, pos); + } + }); + function enhanceArray(self, pos) { + Object.defineProperty(pos, 0, { + get: function () { + return self[xKey]; + }, + set: function (val) { + self[xKey] = val; + } + }); + Object.defineProperty(pos, 1, { + get: function () { + return self[yKey]; + }, + set: function (val) { + self[yKey] = val; + } + }); + } + } + if (Object.defineProperty) { + createLegacyProperty('position', '_legacyPos', 'x', 'y'); + createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY'); + createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY'); + } + })(); + return Element; + }()); + mixin(Element, Eventful); + mixin(Element, Transformable); + function animateTo(animatable, target, cfg, animationProps, reverse) { + cfg = cfg || {}; + var animators = []; + animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse); + var finishCount = animators.length; + var doneHappened = false; + var cfgDone = cfg.done; + var cfgAborted = cfg.aborted; + var doneCb = function () { + doneHappened = true; + finishCount--; + if (finishCount <= 0) { + doneHappened + ? (cfgDone && cfgDone()) + : (cfgAborted && cfgAborted()); + } + }; + var abortedCb = function () { + finishCount--; + if (finishCount <= 0) { + doneHappened + ? (cfgDone && cfgDone()) + : (cfgAborted && cfgAborted()); + } + }; + if (!finishCount) { + cfgDone && cfgDone(); + } + if (animators.length > 0 && cfg.during) { + animators[0].during(function (target, percent) { + cfg.during(percent); + }); + } + for (var i = 0; i < animators.length; i++) { + var animator = animators[i]; + if (doneCb) { + animator.done(doneCb); + } + if (abortedCb) { + animator.aborted(abortedCb); + } + if (cfg.force) { + animator.duration(cfg.duration); + } + animator.start(cfg.easing); + } + return animators; + } + function copyArrShallow(source, target, len) { + for (var i = 0; i < len; i++) { + source[i] = target[i]; + } + } + function is2DArray(value) { + return isArrayLike(value[0]); + } + function copyValue(target, source, key) { + if (isArrayLike(source[key])) { + if (!isArrayLike(target[key])) { + target[key] = []; + } + if (isTypedArray(source[key])) { + var len = source[key].length; + if (target[key].length !== len) { + target[key] = new (source[key].constructor)(len); + copyArrShallow(target[key], source[key], len); + } + } + else { + var sourceArr = source[key]; + var targetArr = target[key]; + var len0 = sourceArr.length; + if (is2DArray(sourceArr)) { + var len1 = sourceArr[0].length; + for (var i = 0; i < len0; i++) { + if (!targetArr[i]) { + targetArr[i] = Array.prototype.slice.call(sourceArr[i]); + } + else { + copyArrShallow(targetArr[i], sourceArr[i], len1); + } + } + } + else { + copyArrShallow(targetArr, sourceArr, len0); + } + targetArr.length = sourceArr.length; + } + } + else { + target[key] = source[key]; + } + } + function isValueSame(val1, val2) { + return val1 === val2 + || isArrayLike(val1) && isArrayLike(val2) && is1DArraySame(val1, val2); + } + function is1DArraySame(arr0, arr1) { + var len = arr0.length; + if (len !== arr1.length) { + return false; + } + for (var i = 0; i < len; i++) { + if (arr0[i] !== arr1[i]) { + return false; + } + } + return true; + } + function animateToShallow(animatable, topKey, animateObj, target, cfg, animationProps, animators, reverse) { + var targetKeys = keys(target); + var duration = cfg.duration; + var delay = cfg.delay; + var additive = cfg.additive; + var setToFinal = cfg.setToFinal; + var animateAll = !isObject(animationProps); + var existsAnimators = animatable.animators; + var animationKeys = []; + for (var k = 0; k < targetKeys.length; k++) { + var innerKey = targetKeys[k]; + var targetVal = target[innerKey]; + if (targetVal != null && animateObj[innerKey] != null + && (animateAll || animationProps[innerKey])) { + if (isObject(targetVal) + && !isArrayLike(targetVal) + && !isGradientObject(targetVal)) { + if (topKey) { + if (!reverse) { + animateObj[innerKey] = targetVal; + animatable.updateDuringAnimation(topKey); + } + continue; + } + animateToShallow(animatable, innerKey, animateObj[innerKey], targetVal, cfg, animationProps && animationProps[innerKey], animators, reverse); + } + else { + animationKeys.push(innerKey); + } + } + else if (!reverse) { + animateObj[innerKey] = targetVal; + animatable.updateDuringAnimation(topKey); + animationKeys.push(innerKey); + } + } + var keyLen = animationKeys.length; + if (!additive && keyLen) { + for (var i = 0; i < existsAnimators.length; i++) { + var animator = existsAnimators[i]; + if (animator.targetName === topKey) { + var allAborted = animator.stopTracks(animationKeys); + if (allAborted) { + var idx = indexOf(existsAnimators, animator); + existsAnimators.splice(idx, 1); + } + } + } + } + if (!cfg.force) { + animationKeys = filter(animationKeys, function (key) { return !isValueSame(target[key], animateObj[key]); }); + keyLen = animationKeys.length; + } + if (keyLen > 0 + || (cfg.force && !animators.length)) { + var revertedSource = void 0; + var reversedTarget = void 0; + var sourceClone = void 0; + if (reverse) { + reversedTarget = {}; + if (setToFinal) { + revertedSource = {}; + } + for (var i = 0; i < keyLen; i++) { + var innerKey = animationKeys[i]; + reversedTarget[innerKey] = animateObj[innerKey]; + if (setToFinal) { + revertedSource[innerKey] = target[innerKey]; + } + else { + animateObj[innerKey] = target[innerKey]; + } + } + } + else if (setToFinal) { + sourceClone = {}; + for (var i = 0; i < keyLen; i++) { + var innerKey = animationKeys[i]; + sourceClone[innerKey] = cloneValue(animateObj[innerKey]); + copyValue(animateObj, target, innerKey); + } + } + var animator = new Animator(animateObj, false, false, additive ? filter(existsAnimators, function (animator) { return animator.targetName === topKey; }) : null); + animator.targetName = topKey; + if (cfg.scope) { + animator.scope = cfg.scope; + } + if (setToFinal && revertedSource) { + animator.whenWithKeys(0, revertedSource, animationKeys); + } + if (sourceClone) { + animator.whenWithKeys(0, sourceClone, animationKeys); + } + animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animationKeys).delay(delay || 0); + animatable.addAnimator(animator, topKey); + animators.push(animator); + } + } + + var Group = (function (_super) { + __extends(Group, _super); + function Group(opts) { + var _this = _super.call(this) || this; + _this.isGroup = true; + _this._children = []; + _this.attr(opts); + return _this; + } + Group.prototype.childrenRef = function () { + return this._children; + }; + Group.prototype.children = function () { + return this._children.slice(); + }; + Group.prototype.childAt = function (idx) { + return this._children[idx]; + }; + Group.prototype.childOfName = function (name) { + var children = this._children; + for (var i = 0; i < children.length; i++) { + if (children[i].name === name) { + return children[i]; + } + } + }; + Group.prototype.childCount = function () { + return this._children.length; + }; + Group.prototype.add = function (child) { + if (child) { + if (child !== this && child.parent !== this) { + this._children.push(child); + this._doAdd(child); + } + if ("development" !== 'production') { + if (child.__hostTarget) { + throw 'This elemenet has been used as an attachment'; + } + } + } + return this; + }; + Group.prototype.addBefore = function (child, nextSibling) { + if (child && child !== this && child.parent !== this + && nextSibling && nextSibling.parent === this) { + var children = this._children; + var idx = children.indexOf(nextSibling); + if (idx >= 0) { + children.splice(idx, 0, child); + this._doAdd(child); + } + } + return this; + }; + Group.prototype.replace = function (oldChild, newChild) { + var idx = indexOf(this._children, oldChild); + if (idx >= 0) { + this.replaceAt(newChild, idx); + } + return this; + }; + Group.prototype.replaceAt = function (child, index) { + var children = this._children; + var old = children[index]; + if (child && child !== this && child.parent !== this && child !== old) { + children[index] = child; + old.parent = null; + var zr = this.__zr; + if (zr) { + old.removeSelfFromZr(zr); + } + this._doAdd(child); + } + return this; + }; + Group.prototype._doAdd = function (child) { + if (child.parent) { + child.parent.remove(child); + } + child.parent = this; + var zr = this.__zr; + if (zr && zr !== child.__zr) { + child.addSelfToZr(zr); + } + zr && zr.refresh(); + }; + Group.prototype.remove = function (child) { + var zr = this.__zr; + var children = this._children; + var idx = indexOf(children, child); + if (idx < 0) { + return this; + } + children.splice(idx, 1); + child.parent = null; + if (zr) { + child.removeSelfFromZr(zr); + } + zr && zr.refresh(); + return this; + }; + Group.prototype.removeAll = function () { + var children = this._children; + var zr = this.__zr; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + if (zr) { + child.removeSelfFromZr(zr); + } + child.parent = null; + } + children.length = 0; + return this; + }; + Group.prototype.eachChild = function (cb, context) { + var children = this._children; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + cb.call(context, child, i); + } + return this; + }; + Group.prototype.traverse = function (cb, context) { + for (var i = 0; i < this._children.length; i++) { + var child = this._children[i]; + var stopped = cb.call(context, child); + if (child.isGroup && !stopped) { + child.traverse(cb, context); + } + } + return this; + }; + Group.prototype.addSelfToZr = function (zr) { + _super.prototype.addSelfToZr.call(this, zr); + for (var i = 0; i < this._children.length; i++) { + var child = this._children[i]; + child.addSelfToZr(zr); + } + }; + Group.prototype.removeSelfFromZr = function (zr) { + _super.prototype.removeSelfFromZr.call(this, zr); + for (var i = 0; i < this._children.length; i++) { + var child = this._children[i]; + child.removeSelfFromZr(zr); + } + }; + Group.prototype.getBoundingRect = function (includeChildren) { + var tmpRect = new BoundingRect(0, 0, 0, 0); + var children = includeChildren || this._children; + var tmpMat = []; + var rect = null; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + if (child.ignore || child.invisible) { + continue; + } + var childRect = child.getBoundingRect(); + var transform = child.getLocalTransform(tmpMat); + if (transform) { + BoundingRect.applyTransform(tmpRect, childRect, transform); + rect = rect || tmpRect.clone(); + rect.union(tmpRect); + } + else { + rect = rect || childRect.clone(); + rect.union(childRect); + } + } + return rect || tmpRect; + }; + return Group; + }(Element)); + Group.prototype.type = 'group'; + + /*! + * ZRender, a high performance 2d drawing library. + * + * Copyright (c) 2013, Baidu Inc. + * All rights reserved. + * + * LICENSE + * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt + */ + var painterCtors = {}; + var instances = {}; + function delInstance(id) { + delete instances[id]; + } + function isDarkMode(backgroundColor) { + if (!backgroundColor) { + return false; + } + if (typeof backgroundColor === 'string') { + return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD; + } + else if (backgroundColor.colorStops) { + var colorStops = backgroundColor.colorStops; + var totalLum = 0; + var len = colorStops.length; + for (var i = 0; i < len; i++) { + totalLum += lum(colorStops[i].color, 1); + } + totalLum /= len; + return totalLum < DARK_MODE_THRESHOLD; + } + return false; + } + var ZRender = (function () { + function ZRender(id, dom, opts) { + var _this = this; + this._sleepAfterStill = 10; + this._stillFrameAccum = 0; + this._needsRefresh = true; + this._needsRefreshHover = true; + this._darkMode = false; + opts = opts || {}; + this.dom = dom; + this.id = id; + var storage = new Storage(); + var rendererType = opts.renderer || 'canvas'; + if (!painterCtors[rendererType]) { + rendererType = keys(painterCtors)[0]; + } + if ("development" !== 'production') { + if (!painterCtors[rendererType]) { + throw new Error("Renderer '" + rendererType + "' is not imported. Please import it first."); + } + } + opts.useDirtyRect = opts.useDirtyRect == null + ? false + : opts.useDirtyRect; + var painter = new painterCtors[rendererType](dom, storage, opts, id); + var ssrMode = opts.ssr || painter.ssrOnly; + this.storage = storage; + this.painter = painter; + var handlerProxy = (!env.node && !env.worker && !ssrMode) + ? new HandlerDomProxy(painter.getViewportRoot(), painter.root) + : null; + var useCoarsePointer = opts.useCoarsePointer; + var usePointerSize = (useCoarsePointer == null || useCoarsePointer === 'auto') + ? env.touchEventsSupported + : !!useCoarsePointer; + var defaultPointerSize = 44; + var pointerSize; + if (usePointerSize) { + pointerSize = retrieve2(opts.pointerSize, defaultPointerSize); + } + this.handler = new Handler(storage, painter, handlerProxy, painter.root, pointerSize); + this.animation = new Animation({ + stage: { + update: ssrMode ? null : function () { return _this._flush(true); } + } + }); + if (!ssrMode) { + this.animation.start(); + } + } + ZRender.prototype.add = function (el) { + if (this._disposed || !el) { + return; + } + this.storage.addRoot(el); + el.addSelfToZr(this); + this.refresh(); + }; + ZRender.prototype.remove = function (el) { + if (this._disposed || !el) { + return; + } + this.storage.delRoot(el); + el.removeSelfFromZr(this); + this.refresh(); + }; + ZRender.prototype.configLayer = function (zLevel, config) { + if (this._disposed) { + return; + } + if (this.painter.configLayer) { + this.painter.configLayer(zLevel, config); + } + this.refresh(); + }; + ZRender.prototype.setBackgroundColor = function (backgroundColor) { + if (this._disposed) { + return; + } + if (this.painter.setBackgroundColor) { + this.painter.setBackgroundColor(backgroundColor); + } + this.refresh(); + this._backgroundColor = backgroundColor; + this._darkMode = isDarkMode(backgroundColor); + }; + ZRender.prototype.getBackgroundColor = function () { + return this._backgroundColor; + }; + ZRender.prototype.setDarkMode = function (darkMode) { + this._darkMode = darkMode; + }; + ZRender.prototype.isDarkMode = function () { + return this._darkMode; + }; + ZRender.prototype.refreshImmediately = function (fromInside) { + if (this._disposed) { + return; + } + if (!fromInside) { + this.animation.update(true); + } + this._needsRefresh = false; + this.painter.refresh(); + this._needsRefresh = false; + }; + ZRender.prototype.refresh = function () { + if (this._disposed) { + return; + } + this._needsRefresh = true; + this.animation.start(); + }; + ZRender.prototype.flush = function () { + if (this._disposed) { + return; + } + this._flush(false); + }; + ZRender.prototype._flush = function (fromInside) { + var triggerRendered; + var start = getTime(); + if (this._needsRefresh) { + triggerRendered = true; + this.refreshImmediately(fromInside); + } + if (this._needsRefreshHover) { + triggerRendered = true; + this.refreshHoverImmediately(); + } + var end = getTime(); + if (triggerRendered) { + this._stillFrameAccum = 0; + this.trigger('rendered', { + elapsedTime: end - start + }); + } + else if (this._sleepAfterStill > 0) { + this._stillFrameAccum++; + if (this._stillFrameAccum > this._sleepAfterStill) { + this.animation.stop(); + } + } + }; + ZRender.prototype.setSleepAfterStill = function (stillFramesCount) { + this._sleepAfterStill = stillFramesCount; + }; + ZRender.prototype.wakeUp = function () { + if (this._disposed) { + return; + } + this.animation.start(); + this._stillFrameAccum = 0; + }; + ZRender.prototype.refreshHover = function () { + this._needsRefreshHover = true; + }; + ZRender.prototype.refreshHoverImmediately = function () { + if (this._disposed) { + return; + } + this._needsRefreshHover = false; + if (this.painter.refreshHover && this.painter.getType() === 'canvas') { + this.painter.refreshHover(); + } + }; + ZRender.prototype.resize = function (opts) { + if (this._disposed) { + return; + } + opts = opts || {}; + this.painter.resize(opts.width, opts.height); + this.handler.resize(); + }; + ZRender.prototype.clearAnimation = function () { + if (this._disposed) { + return; + } + this.animation.clear(); + }; + ZRender.prototype.getWidth = function () { + if (this._disposed) { + return; + } + return this.painter.getWidth(); + }; + ZRender.prototype.getHeight = function () { + if (this._disposed) { + return; + } + return this.painter.getHeight(); + }; + ZRender.prototype.setCursorStyle = function (cursorStyle) { + if (this._disposed) { + return; + } + this.handler.setCursorStyle(cursorStyle); + }; + ZRender.prototype.findHover = function (x, y) { + if (this._disposed) { + return; + } + return this.handler.findHover(x, y); + }; + ZRender.prototype.on = function (eventName, eventHandler, context) { + if (!this._disposed) { + this.handler.on(eventName, eventHandler, context); + } + return this; + }; + ZRender.prototype.off = function (eventName, eventHandler) { + if (this._disposed) { + return; + } + this.handler.off(eventName, eventHandler); + }; + ZRender.prototype.trigger = function (eventName, event) { + if (this._disposed) { + return; + } + this.handler.trigger(eventName, event); + }; + ZRender.prototype.clear = function () { + if (this._disposed) { + return; + } + var roots = this.storage.getRoots(); + for (var i = 0; i < roots.length; i++) { + if (roots[i] instanceof Group) { + roots[i].removeSelfFromZr(this); + } + } + this.storage.delAllRoots(); + this.painter.clear(); + }; + ZRender.prototype.dispose = function () { + if (this._disposed) { + return; + } + this.animation.stop(); + this.clear(); + this.storage.dispose(); + this.painter.dispose(); + this.handler.dispose(); + this.animation = + this.storage = + this.painter = + this.handler = null; + this._disposed = true; + delInstance(this.id); + }; + return ZRender; + }()); + function init(dom, opts) { + var zr = new ZRender(guid(), dom, opts); + instances[zr.id] = zr; + return zr; + } + function dispose(zr) { + zr.dispose(); + } + function disposeAll() { + for (var key in instances) { + if (instances.hasOwnProperty(key)) { + instances[key].dispose(); + } + } + instances = {}; + } + function getInstance(id) { + return instances[id]; + } + function registerPainter(name, Ctor) { + painterCtors[name] = Ctor; + } + var ssrDataGetter; + function getElementSSRData(el) { + if (typeof ssrDataGetter === 'function') { + return ssrDataGetter(el); + } + } + function registerSSRDataGetter(getter) { + ssrDataGetter = getter; + } + var version = '5.5.0'; + + var zrender = /*#__PURE__*/Object.freeze({ + __proto__: null, + init: init, + dispose: dispose, + disposeAll: disposeAll, + getInstance: getInstance, + registerPainter: registerPainter, + getElementSSRData: getElementSSRData, + registerSSRDataGetter: registerSSRDataGetter, + version: version + }); + + var RADIAN_EPSILON = 1e-4; + // Although chrome already enlarge this number to 100 for `toFixed`, but + // we sill follow the spec for compatibility. + var ROUND_SUPPORTED_PRECISION_MAX = 20; + function _trim(str) { + return str.replace(/^\s+|\s+$/g, ''); + } + /** + * Linear mapping a value from domain to range + * @param val + * @param domain Domain extent domain[0] can be bigger than domain[1] + * @param range Range extent range[0] can be bigger than range[1] + * @param clamp Default to be false + */ + function linearMap(val, domain, range, clamp) { + var d0 = domain[0]; + var d1 = domain[1]; + var r0 = range[0]; + var r1 = range[1]; + var subDomain = d1 - d0; + var subRange = r1 - r0; + if (subDomain === 0) { + return subRange === 0 ? r0 : (r0 + r1) / 2; + } + // Avoid accuracy problem in edge, such as + // 146.39 - 62.83 === 83.55999999999999. + // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError + // It is a little verbose for efficiency considering this method + // is a hotspot. + if (clamp) { + if (subDomain > 0) { + if (val <= d0) { + return r0; + } else if (val >= d1) { + return r1; + } + } else { + if (val >= d0) { + return r0; + } else if (val <= d1) { + return r1; + } + } + } else { + if (val === d0) { + return r0; + } + if (val === d1) { + return r1; + } + } + return (val - d0) / subDomain * subRange + r0; + } + /** + * Convert a percent string to absolute number. + * Returns NaN if percent is not a valid string or number + */ + function parsePercent$1(percent, all) { + switch (percent) { + case 'center': + case 'middle': + percent = '50%'; + break; + case 'left': + case 'top': + percent = '0%'; + break; + case 'right': + case 'bottom': + percent = '100%'; + break; + } + if (isString(percent)) { + if (_trim(percent).match(/%$/)) { + return parseFloat(percent) / 100 * all; + } + return parseFloat(percent); + } + return percent == null ? NaN : +percent; + } + function round(x, precision, returnStr) { + if (precision == null) { + precision = 10; + } + // Avoid range error + precision = Math.min(Math.max(0, precision), ROUND_SUPPORTED_PRECISION_MAX); + // PENDING: 1.005.toFixed(2) is '1.00' rather than '1.01' + x = (+x).toFixed(precision); + return returnStr ? x : +x; + } + /** + * Inplacd asc sort arr. + * The input arr will be modified. + */ + function asc(arr) { + arr.sort(function (a, b) { + return a - b; + }); + return arr; + } + /** + * Get precision. + */ + function getPrecision(val) { + val = +val; + if (isNaN(val)) { + return 0; + } + // It is much faster than methods converting number to string as follows + // let tmp = val.toString(); + // return tmp.length - 1 - tmp.indexOf('.'); + // especially when precision is low + // Notice: + // (1) If the loop count is over about 20, it is slower than `getPrecisionSafe`. + // (see https://jsbench.me/2vkpcekkvw/1) + // (2) If the val is less than for example 1e-15, the result may be incorrect. + // (see test/ut/spec/util/number.test.ts `getPrecision_equal_random`) + if (val > 1e-14) { + var e = 1; + for (var i = 0; i < 15; i++, e *= 10) { + if (Math.round(val * e) / e === val) { + return i; + } + } + } + return getPrecisionSafe(val); + } + /** + * Get precision with slow but safe method + */ + function getPrecisionSafe(val) { + // toLowerCase for: '3.4E-12' + var str = val.toString().toLowerCase(); + // Consider scientific notation: '3.4e-12' '3.4e+12' + var eIndex = str.indexOf('e'); + var exp = eIndex > 0 ? +str.slice(eIndex + 1) : 0; + var significandPartLen = eIndex > 0 ? eIndex : str.length; + var dotIndex = str.indexOf('.'); + var decimalPartLen = dotIndex < 0 ? 0 : significandPartLen - 1 - dotIndex; + return Math.max(0, decimalPartLen - exp); + } + /** + * Minimal dicernible data precisioin according to a single pixel. + */ + function getPixelPrecision(dataExtent, pixelExtent) { + var log = Math.log; + var LN10 = Math.LN10; + var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10); + var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); + // toFixed() digits argument must be between 0 and 20. + var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20); + return !isFinite(precision) ? 20 : precision; + } + /** + * Get a data of given precision, assuring the sum of percentages + * in valueList is 1. + * The largest remainder method is used. + * https://en.wikipedia.org/wiki/Largest_remainder_method + * + * @param valueList a list of all data + * @param idx index of the data to be processed in valueList + * @param precision integer number showing digits of precision + * @return percent ranging from 0 to 100 + */ + function getPercentWithPrecision(valueList, idx, precision) { + if (!valueList[idx]) { + return 0; + } + var seats = getPercentSeats(valueList, precision); + return seats[idx] || 0; + } + /** + * Get a data of given precision, assuring the sum of percentages + * in valueList is 1. + * The largest remainder method is used. + * https://en.wikipedia.org/wiki/Largest_remainder_method + * + * @param valueList a list of all data + * @param precision integer number showing digits of precision + * @return {Array} + */ + function getPercentSeats(valueList, precision) { + var sum = reduce(valueList, function (acc, val) { + return acc + (isNaN(val) ? 0 : val); + }, 0); + if (sum === 0) { + return []; + } + var digits = Math.pow(10, precision); + var votesPerQuota = map(valueList, function (val) { + return (isNaN(val) ? 0 : val) / sum * digits * 100; + }); + var targetSeats = digits * 100; + var seats = map(votesPerQuota, function (votes) { + // Assign automatic seats. + return Math.floor(votes); + }); + var currentSum = reduce(seats, function (acc, val) { + return acc + val; + }, 0); + var remainder = map(votesPerQuota, function (votes, idx) { + return votes - seats[idx]; + }); + // Has remainding votes. + while (currentSum < targetSeats) { + // Find next largest remainder. + var max = Number.NEGATIVE_INFINITY; + var maxId = null; + for (var i = 0, len = remainder.length; i < len; ++i) { + if (remainder[i] > max) { + max = remainder[i]; + maxId = i; + } + } + // Add a vote to max remainder. + ++seats[maxId]; + remainder[maxId] = 0; + ++currentSum; + } + return map(seats, function (seat) { + return seat / digits; + }); + } + /** + * Solve the floating point adding problem like 0.1 + 0.2 === 0.30000000000000004 + * See + */ + function addSafe(val0, val1) { + var maxPrecision = Math.max(getPrecision(val0), getPrecision(val1)); + // const multiplier = Math.pow(10, maxPrecision); + // return (Math.round(val0 * multiplier) + Math.round(val1 * multiplier)) / multiplier; + var sum = val0 + val1; + // // PENDING: support more? + return maxPrecision > ROUND_SUPPORTED_PRECISION_MAX ? sum : round(sum, maxPrecision); + } + // Number.MAX_SAFE_INTEGER, ie do not support. + var MAX_SAFE_INTEGER = 9007199254740991; + /** + * To 0 - 2 * PI, considering negative radian. + */ + function remRadian(radian) { + var pi2 = Math.PI * 2; + return (radian % pi2 + pi2) % pi2; + } + /** + * @param {type} radian + * @return {boolean} + */ + function isRadianAroundZero(val) { + return val > -RADIAN_EPSILON && val < RADIAN_EPSILON; + } + // eslint-disable-next-line + var TIME_REG = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/; // jshint ignore:line + /** + * @param value valid type: number | string | Date, otherwise return `new Date(NaN)` + * These values can be accepted: + * + An instance of Date, represent a time in its own time zone. + * + Or string in a subset of ISO 8601, only including: + * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06', + * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123', + * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00', + * all of which will be treated as local time if time zone is not specified + * (see ). + * + Or other string format, including (all of which will be treated as local time): + * '2012', '2012-3-1', '2012/3/1', '2012/03/01', + * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123' + * + a timestamp, which represent a time in UTC. + * @return date Never be null/undefined. If invalid, return `new Date(NaN)`. + */ + function parseDate(value) { + if (value instanceof Date) { + return value; + } else if (isString(value)) { + // Different browsers parse date in different way, so we parse it manually. + // Some other issues: + // new Date('1970-01-01') is UTC, + // new Date('1970/01/01') and new Date('1970-1-01') is local. + // See issue #3623 + var match = TIME_REG.exec(value); + if (!match) { + // return Invalid Date. + return new Date(NaN); + } + // Use local time when no timezone offset is specified. + if (!match[8]) { + // match[n] can only be string or undefined. + // But take care of '12' + 1 => '121'. + return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0); + } + // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time, + // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment). + // For example, system timezone is set as "Time Zone: America/Toronto", + // then these code will get different result: + // `new Date(1478411999999).getTimezoneOffset(); // get 240` + // `new Date(1478412000000).getTimezoneOffset(); // get 300` + // So we should not use `new Date`, but use `Date.UTC`. + else { + var hour = +match[4] || 0; + if (match[8].toUpperCase() !== 'Z') { + hour -= +match[8].slice(0, 3); + } + return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0)); + } + } else if (value == null) { + return new Date(NaN); + } + return new Date(Math.round(value)); + } + /** + * Quantity of a number. e.g. 0.1, 1, 10, 100 + * + * @param val + * @return + */ + function quantity(val) { + return Math.pow(10, quantityExponent(val)); + } + /** + * Exponent of the quantity of a number + * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3 + * + * @param val non-negative value + * @return + */ + function quantityExponent(val) { + if (val === 0) { + return 0; + } + var exp = Math.floor(Math.log(val) / Math.LN10); + /** + * exp is expected to be the rounded-down result of the base-10 log of val. + * But due to the precision loss with Math.log(val), we need to restore it + * using 10^exp to make sure we can get val back from exp. #11249 + */ + if (val / Math.pow(10, exp) >= 10) { + exp++; + } + return exp; + } + /** + * find a “nice” number approximately equal to x. Round the number if round = true, + * take ceiling if round = false. The primary observation is that the “nicest” + * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers. + * + * See "Nice Numbers for Graph Labels" of Graphic Gems. + * + * @param val Non-negative value. + * @param round + * @return Niced number + */ + function nice(val, round) { + var exponent = quantityExponent(val); + var exp10 = Math.pow(10, exponent); + var f = val / exp10; // 1 <= f < 10 + var nf; + if (round) { + if (f < 1.5) { + nf = 1; + } else if (f < 2.5) { + nf = 2; + } else if (f < 4) { + nf = 3; + } else if (f < 7) { + nf = 5; + } else { + nf = 10; + } + } else { + if (f < 1) { + nf = 1; + } else if (f < 2) { + nf = 2; + } else if (f < 3) { + nf = 3; + } else if (f < 5) { + nf = 5; + } else { + nf = 10; + } + } + val = nf * exp10; + // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754). + // 20 is the uppper bound of toFixed. + return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val; + } + /** + * This code was copied from "d3.js" + * . + * See the license statement at the head of this file. + * @param ascArr + */ + function quantile(ascArr, p) { + var H = (ascArr.length - 1) * p + 1; + var h = Math.floor(H); + var v = +ascArr[h - 1]; + var e = H - h; + return e ? v + e * (ascArr[h] - v) : v; + } + /** + * Order intervals asc, and split them when overlap. + * expect(numberUtil.reformIntervals([ + * {interval: [18, 62], close: [1, 1]}, + * {interval: [-Infinity, -70], close: [0, 0]}, + * {interval: [-70, -26], close: [1, 1]}, + * {interval: [-26, 18], close: [1, 1]}, + * {interval: [62, 150], close: [1, 1]}, + * {interval: [106, 150], close: [1, 1]}, + * {interval: [150, Infinity], close: [0, 0]} + * ])).toEqual([ + * {interval: [-Infinity, -70], close: [0, 0]}, + * {interval: [-70, -26], close: [1, 1]}, + * {interval: [-26, 18], close: [0, 1]}, + * {interval: [18, 62], close: [0, 1]}, + * {interval: [62, 150], close: [0, 1]}, + * {interval: [150, Infinity], close: [0, 0]} + * ]); + * @param list, where `close` mean open or close + * of the interval, and Infinity can be used. + * @return The origin list, which has been reformed. + */ + function reformIntervals(list) { + list.sort(function (a, b) { + return littleThan(a, b, 0) ? -1 : 1; + }); + var curr = -Infinity; + var currClose = 1; + for (var i = 0; i < list.length;) { + var interval = list[i].interval; + var close_1 = list[i].close; + for (var lg = 0; lg < 2; lg++) { + if (interval[lg] <= curr) { + interval[lg] = curr; + close_1[lg] = !lg ? 1 - currClose : 1; + } + curr = interval[lg]; + currClose = close_1[lg]; + } + if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) { + list.splice(i, 1); + } else { + i++; + } + } + return list; + function littleThan(a, b, lg) { + return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1)); + } + } + /** + * [Numeric is defined as]: + * `parseFloat(val) == val` + * For example: + * numeric: + * typeof number except NaN, '-123', '123', '2e3', '-2e3', '011', 'Infinity', Infinity, + * and they rounded by white-spaces or line-terminal like ' -123 \n ' (see es spec) + * not-numeric: + * null, undefined, [], {}, true, false, 'NaN', NaN, '123ab', + * empty string, string with only white-spaces or line-terminal (see es spec), + * 0x12, '0x12', '-0x12', 012, '012', '-012', + * non-string, ... + * + * @test See full test cases in `test/ut/spec/util/number.js`. + * @return Must be a typeof number. If not numeric, return NaN. + */ + function numericToNumber(val) { + var valFloat = parseFloat(val); + return valFloat == val // eslint-disable-line eqeqeq + && (valFloat !== 0 || !isString(val) || val.indexOf('x') <= 0) // For case ' 0x0 '. + ? valFloat : NaN; + } + /** + * Definition of "numeric": see `numericToNumber`. + */ + function isNumeric(val) { + return !isNaN(numericToNumber(val)); + } + /** + * Use random base to prevent users hard code depending on + * this auto generated marker id. + * @return An positive integer. + */ + function getRandomIdBase() { + return Math.round(Math.random() * 9); + } + /** + * Get the greatest common divisor. + * + * @param {number} a one number + * @param {number} b the other number + */ + function getGreatestCommonDividor(a, b) { + if (b === 0) { + return a; + } + return getGreatestCommonDividor(b, a % b); + } + /** + * Get the least common multiple. + * + * @param {number} a one number + * @param {number} b the other number + */ + function getLeastCommonMultiple(a, b) { + if (a == null) { + return b; + } + if (b == null) { + return a; + } + return a * b / getGreatestCommonDividor(a, b); + } + + var ECHARTS_PREFIX = '[ECharts] '; + var storedLogs = {}; + var hasConsole = typeof console !== 'undefined' + // eslint-disable-next-line + && console.warn && console.log; + function outputLog(type, str, onlyOnce) { + if (hasConsole) { + if (onlyOnce) { + if (storedLogs[str]) { + return; + } + storedLogs[str] = true; + } + // eslint-disable-next-line + console[type](ECHARTS_PREFIX + str); + } + } + function log(str, onlyOnce) { + outputLog('log', str, onlyOnce); + } + function warn(str, onlyOnce) { + outputLog('warn', str, onlyOnce); + } + function error(str, onlyOnce) { + outputLog('error', str, onlyOnce); + } + function deprecateLog(str) { + if ("development" !== 'production') { + // Not display duplicate message. + outputLog('warn', 'DEPRECATED: ' + str, true); + } + } + function deprecateReplaceLog(oldOpt, newOpt, scope) { + if ("development" !== 'production') { + deprecateLog((scope ? "[" + scope + "]" : '') + (oldOpt + " is deprecated, use " + newOpt + " instead.")); + } + } + /** + * If in __DEV__ environment, get console printable message for users hint. + * Parameters are separated by ' '. + * @usage + * makePrintable('This is an error on', someVar, someObj); + * + * @param hintInfo anything about the current execution context to hint users. + * @throws Error + */ + function makePrintable() { + var hintInfo = []; + for (var _i = 0; _i < arguments.length; _i++) { + hintInfo[_i] = arguments[_i]; + } + var msg = ''; + if ("development" !== 'production') { + // Fuzzy stringify for print. + // This code only exist in dev environment. + var makePrintableStringIfPossible_1 = function (val) { + return val === void 0 ? 'undefined' : val === Infinity ? 'Infinity' : val === -Infinity ? '-Infinity' : eqNaN(val) ? 'NaN' : val instanceof Date ? 'Date(' + val.toISOString() + ')' : isFunction(val) ? 'function () { ... }' : isRegExp(val) ? val + '' : null; + }; + msg = map(hintInfo, function (arg) { + if (isString(arg)) { + // Print without quotation mark for some statement. + return arg; + } else { + var printableStr = makePrintableStringIfPossible_1(arg); + if (printableStr != null) { + return printableStr; + } else if (typeof JSON !== 'undefined' && JSON.stringify) { + try { + return JSON.stringify(arg, function (n, val) { + var printableStr = makePrintableStringIfPossible_1(val); + return printableStr == null ? val : printableStr; + }); + // In most cases the info object is small, so do not line break. + } catch (err) { + return '?'; + } + } else { + return '?'; + } + } + }).join(' '); + } + return msg; + } + /** + * @throws Error + */ + function throwError(msg) { + throw new Error(msg); + } + + function interpolateNumber$1(p0, p1, percent) { + return (p1 - p0) * percent + p0; + } + /** + * Make the name displayable. But we should + * make sure it is not duplicated with user + * specified name, so use '\0'; + */ + var DUMMY_COMPONENT_NAME_PREFIX = 'series\0'; + var INTERNAL_COMPONENT_ID_PREFIX = '\0_ec_\0'; + /** + * If value is not array, then translate it to array. + * @param {*} value + * @return {Array} [value] or value + */ + function normalizeToArray(value) { + return value instanceof Array ? value : value == null ? [] : [value]; + } + /** + * Sync default option between normal and emphasis like `position` and `show` + * In case some one will write code like + * label: { + * show: false, + * position: 'outside', + * fontSize: 18 + * }, + * emphasis: { + * label: { show: true } + * } + */ + function defaultEmphasis(opt, key, subOpts) { + // Caution: performance sensitive. + if (opt) { + opt[key] = opt[key] || {}; + opt.emphasis = opt.emphasis || {}; + opt.emphasis[key] = opt.emphasis[key] || {}; + // Default emphasis option from normal + for (var i = 0, len = subOpts.length; i < len; i++) { + var subOptName = subOpts[i]; + if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) { + opt.emphasis[key][subOptName] = opt[key][subOptName]; + } + } + } + } + var TEXT_STYLE_OPTIONS = ['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']; + // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([ + // 'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter', + // 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily', + // // FIXME: deprecated, check and remove it. + // 'textStyle' + // ]); + /** + * The method does not ensure performance. + * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}] + * This helper method retrieves value from data. + */ + function getDataItemValue(dataItem) { + return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem; + } + /** + * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}] + * This helper method determine if dataItem has extra option besides value + */ + function isDataItemOption(dataItem) { + return isObject(dataItem) && !(dataItem instanceof Array); + // // markLine data can be array + // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array)); + } + /** + * Mapping to existings for merge. + * + * Mode "normalMege": + * The mapping result (merge result) will keep the order of the existing + * component, rather than the order of new option. Because we should ensure + * some specified index reference (like xAxisIndex) keep work. + * And in most cases, "merge option" is used to update partial option but not + * be expected to change the order. + * + * Mode "replaceMege": + * (1) Only the id mapped components will be merged. + * (2) Other existing components (except internal components) will be removed. + * (3) Other new options will be used to create new component. + * (4) The index of the existing components will not be modified. + * That means their might be "hole" after the removal. + * The new components are created first at those available index. + * + * Mode "replaceAll": + * This mode try to support that reproduce an echarts instance from another + * echarts instance (via `getOption`) in some simple cases. + * In this scenario, the `result` index are exactly the consistent with the `newCmptOptions`, + * which ensures the component index referring (like `xAxisIndex: ?`) corrent. That is, + * the "hole" in `newCmptOptions` will also be kept. + * On the contrary, other modes try best to eliminate holes. + * PENDING: This is an experimental mode yet. + * + * @return See the comment of . + */ + function mappingToExists(existings, newCmptOptions, mode) { + var isNormalMergeMode = mode === 'normalMerge'; + var isReplaceMergeMode = mode === 'replaceMerge'; + var isReplaceAllMode = mode === 'replaceAll'; + existings = existings || []; + newCmptOptions = (newCmptOptions || []).slice(); + var existingIdIdxMap = createHashMap(); + // Validate id and name on user input option. + each(newCmptOptions, function (cmptOption, index) { + if (!isObject(cmptOption)) { + newCmptOptions[index] = null; + return; + } + if ("development" !== 'production') { + // There is some legacy case that name is set as `false`. + // But should work normally rather than throw error. + if (cmptOption.id != null && !isValidIdOrName(cmptOption.id)) { + warnInvalidateIdOrName(cmptOption.id); + } + if (cmptOption.name != null && !isValidIdOrName(cmptOption.name)) { + warnInvalidateIdOrName(cmptOption.name); + } + } + }); + var result = prepareResult(existings, existingIdIdxMap, mode); + if (isNormalMergeMode || isReplaceMergeMode) { + mappingById(result, existings, existingIdIdxMap, newCmptOptions); + } + if (isNormalMergeMode) { + mappingByName(result, newCmptOptions); + } + if (isNormalMergeMode || isReplaceMergeMode) { + mappingByIndex(result, newCmptOptions, isReplaceMergeMode); + } else if (isReplaceAllMode) { + mappingInReplaceAllMode(result, newCmptOptions); + } + makeIdAndName(result); + // The array `result` MUST NOT contain elided items, otherwise the + // forEach will omit those items and result in incorrect result. + return result; + } + function prepareResult(existings, existingIdIdxMap, mode) { + var result = []; + if (mode === 'replaceAll') { + return result; + } + // Do not use native `map` to in case that the array `existings` + // contains elided items, which will be omitted. + for (var index = 0; index < existings.length; index++) { + var existing = existings[index]; + // Because of replaceMerge, `existing` may be null/undefined. + if (existing && existing.id != null) { + existingIdIdxMap.set(existing.id, index); + } + // For non-internal-componnets: + // Mode "normalMerge": all existings kept. + // Mode "replaceMerge": all existing removed unless mapped by id. + // For internal-components: + // go with "replaceMerge" approach in both mode. + result.push({ + existing: mode === 'replaceMerge' || isComponentIdInternal(existing) ? null : existing, + newOption: null, + keyInfo: null, + brandNew: null + }); + } + return result; + } + function mappingById(result, existings, existingIdIdxMap, newCmptOptions) { + // Mapping by id if specified. + each(newCmptOptions, function (cmptOption, index) { + if (!cmptOption || cmptOption.id == null) { + return; + } + var optionId = makeComparableKey(cmptOption.id); + var existingIdx = existingIdIdxMap.get(optionId); + if (existingIdx != null) { + var resultItem = result[existingIdx]; + assert(!resultItem.newOption, 'Duplicated option on id "' + optionId + '".'); + resultItem.newOption = cmptOption; + // In both mode, if id matched, new option will be merged to + // the existings rather than creating new component model. + resultItem.existing = existings[existingIdx]; + newCmptOptions[index] = null; + } + }); + } + function mappingByName(result, newCmptOptions) { + // Mapping by name if specified. + each(newCmptOptions, function (cmptOption, index) { + if (!cmptOption || cmptOption.name == null) { + return; + } + for (var i = 0; i < result.length; i++) { + var existing = result[i].existing; + if (!result[i].newOption // Consider name: two map to one. + // Can not match when both ids existing but different. + && existing && (existing.id == null || cmptOption.id == null) && !isComponentIdInternal(cmptOption) && !isComponentIdInternal(existing) && keyExistAndEqual('name', existing, cmptOption)) { + result[i].newOption = cmptOption; + newCmptOptions[index] = null; + return; + } + } + }); + } + function mappingByIndex(result, newCmptOptions, brandNew) { + each(newCmptOptions, function (cmptOption) { + if (!cmptOption) { + return; + } + // Find the first place that not mapped by id and not internal component (consider the "hole"). + var resultItem; + var nextIdx = 0; + while ( + // Be `!resultItem` only when `nextIdx >= result.length`. + (resultItem = result[nextIdx] + // (1) Existing models that already have id should be able to mapped to. Because + // after mapping performed, model will always be assigned with an id if user not given. + // After that all models have id. + // (2) If new option has id, it can only set to a hole or append to the last. It should + // not be merged to the existings with different id. Because id should not be overwritten. + // (3) Name can be overwritten, because axis use name as 'show label text'. + ) && (resultItem.newOption || isComponentIdInternal(resultItem.existing) || + // In mode "replaceMerge", here no not-mapped-non-internal-existing. + resultItem.existing && cmptOption.id != null && !keyExistAndEqual('id', cmptOption, resultItem.existing))) { + nextIdx++; + } + if (resultItem) { + resultItem.newOption = cmptOption; + resultItem.brandNew = brandNew; + } else { + result.push({ + newOption: cmptOption, + brandNew: brandNew, + existing: null, + keyInfo: null + }); + } + nextIdx++; + }); + } + function mappingInReplaceAllMode(result, newCmptOptions) { + each(newCmptOptions, function (cmptOption) { + // The feature "reproduce" requires "hole" will also reproduced + // in case that component index referring are broken. + result.push({ + newOption: cmptOption, + brandNew: true, + existing: null, + keyInfo: null + }); + }); + } + /** + * Make id and name for mapping result (result of mappingToExists) + * into `keyInfo` field. + */ + function makeIdAndName(mapResult) { + // We use this id to hash component models and view instances + // in echarts. id can be specified by user, or auto generated. + // The id generation rule ensures new view instance are able + // to mapped to old instance when setOption are called in + // no-merge mode. So we generate model id by name and plus + // type in view id. + // name can be duplicated among components, which is convenient + // to specify multi components (like series) by one name. + // Ensure that each id is distinct. + var idMap = createHashMap(); + each(mapResult, function (item) { + var existing = item.existing; + existing && idMap.set(existing.id, item); + }); + each(mapResult, function (item) { + var opt = item.newOption; + // Force ensure id not duplicated. + assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id)); + opt && opt.id != null && idMap.set(opt.id, item); + !item.keyInfo && (item.keyInfo = {}); + }); + // Make name and id. + each(mapResult, function (item, index) { + var existing = item.existing; + var opt = item.newOption; + var keyInfo = item.keyInfo; + if (!isObject(opt)) { + return; + } + // Name can be overwritten. Consider case: axis.name = '20km'. + // But id generated by name will not be changed, which affect + // only in that case: setOption with 'not merge mode' and view + // instance will be recreated, which can be accepted. + keyInfo.name = opt.name != null ? makeComparableKey(opt.name) : existing ? existing.name + // Avoid that different series has the same name, + // because name may be used like in color pallet. + : DUMMY_COMPONENT_NAME_PREFIX + index; + if (existing) { + keyInfo.id = makeComparableKey(existing.id); + } else if (opt.id != null) { + keyInfo.id = makeComparableKey(opt.id); + } else { + // Consider this situatoin: + // optionA: [{name: 'a'}, {name: 'a'}, {..}] + // optionB [{..}, {name: 'a'}, {name: 'a'}] + // Series with the same name between optionA and optionB + // should be mapped. + var idNum = 0; + do { + keyInfo.id = '\0' + keyInfo.name + '\0' + idNum++; + } while (idMap.get(keyInfo.id)); + } + idMap.set(keyInfo.id, item); + }); + } + function keyExistAndEqual(attr, obj1, obj2) { + var key1 = convertOptionIdName(obj1[attr], null); + var key2 = convertOptionIdName(obj2[attr], null); + // See `MappingExistingItem`. `id` and `name` trade string equals to number. + return key1 != null && key2 != null && key1 === key2; + } + /** + * @return return null if not exist. + */ + function makeComparableKey(val) { + if ("development" !== 'production') { + if (val == null) { + throw new Error(); + } + } + return convertOptionIdName(val, ''); + } + function convertOptionIdName(idOrName, defaultValue) { + if (idOrName == null) { + return defaultValue; + } + return isString(idOrName) ? idOrName : isNumber(idOrName) || isStringSafe(idOrName) ? idOrName + '' : defaultValue; + } + function warnInvalidateIdOrName(idOrName) { + if ("development" !== 'production') { + warn('`' + idOrName + '` is invalid id or name. Must be a string or number.'); + } + } + function isValidIdOrName(idOrName) { + return isStringSafe(idOrName) || isNumeric(idOrName); + } + function isNameSpecified(componentModel) { + var name = componentModel.name; + // Is specified when `indexOf` get -1 or > 0. + return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX)); + } + /** + * @public + * @param {Object} cmptOption + * @return {boolean} + */ + function isComponentIdInternal(cmptOption) { + return cmptOption && cmptOption.id != null && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0; + } + function makeInternalComponentId(idSuffix) { + return INTERNAL_COMPONENT_ID_PREFIX + idSuffix; + } + function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) { + // Set mainType and complete subType. + each(mappingResult, function (item) { + var newOption = item.newOption; + if (isObject(newOption)) { + item.keyInfo.mainType = mainType; + item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor); + } + }); + } + function determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) { + var subType = newCmptOption.type ? newCmptOption.type : existComponent ? existComponent.subType + // Use determineSubType only when there is no existComponent. + : componentModelCtor.determineSubType(mainType, newCmptOption); + // tooltip, markline, markpoint may always has no subType + return subType; + } + /** + * A helper for removing duplicate items between batchA and batchB, + * and in themselves, and categorize by series. + * + * @param batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...] + * @param batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...] + * @return result: [resultBatchA, resultBatchB] + */ + function compressBatches(batchA, batchB) { + var mapA = {}; + var mapB = {}; + makeMap(batchA || [], mapA); + makeMap(batchB || [], mapB, mapA); + return [mapToArray(mapA), mapToArray(mapB)]; + function makeMap(sourceBatch, map, otherMap) { + for (var i = 0, len = sourceBatch.length; i < len; i++) { + var seriesId = convertOptionIdName(sourceBatch[i].seriesId, null); + if (seriesId == null) { + return; + } + var dataIndices = normalizeToArray(sourceBatch[i].dataIndex); + var otherDataIndices = otherMap && otherMap[seriesId]; + for (var j = 0, lenj = dataIndices.length; j < lenj; j++) { + var dataIndex = dataIndices[j]; + if (otherDataIndices && otherDataIndices[dataIndex]) { + otherDataIndices[dataIndex] = null; + } else { + (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1; + } + } + } + } + function mapToArray(map, isData) { + var result = []; + for (var i in map) { + if (map.hasOwnProperty(i) && map[i] != null) { + if (isData) { + result.push(+i); + } else { + var dataIndices = mapToArray(map[i], true); + dataIndices.length && result.push({ + seriesId: i, + dataIndex: dataIndices + }); + } + } + } + return result; + } + } + /** + * @param payload Contains dataIndex (means rawIndex) / dataIndexInside / name + * each of which can be Array or primary type. + * @return dataIndex If not found, return undefined/null. + */ + function queryDataIndex(data, payload) { + if (payload.dataIndexInside != null) { + return payload.dataIndexInside; + } else if (payload.dataIndex != null) { + return isArray(payload.dataIndex) ? map(payload.dataIndex, function (value) { + return data.indexOfRawIndex(value); + }) : data.indexOfRawIndex(payload.dataIndex); + } else if (payload.name != null) { + return isArray(payload.name) ? map(payload.name, function (value) { + return data.indexOfName(value); + }) : data.indexOfName(payload.name); + } + } + /** + * Enable property storage to any host object. + * Notice: Serialization is not supported. + * + * For example: + * let inner = zrUitl.makeInner(); + * + * function some1(hostObj) { + * inner(hostObj).someProperty = 1212; + * ... + * } + * function some2() { + * let fields = inner(this); + * fields.someProperty1 = 1212; + * fields.someProperty2 = 'xx'; + * ... + * } + * + * @return {Function} + */ + function makeInner() { + var key = '__ec_inner_' + innerUniqueIndex++; + return function (hostObj) { + return hostObj[key] || (hostObj[key] = {}); + }; + } + var innerUniqueIndex = getRandomIdBase(); + /** + * The same behavior as `component.getReferringComponents`. + */ + function parseFinder(ecModel, finderInput, opt) { + var _a = preParseFinder(finderInput, opt), + mainTypeSpecified = _a.mainTypeSpecified, + queryOptionMap = _a.queryOptionMap, + others = _a.others; + var result = others; + var defaultMainType = opt ? opt.defaultMainType : null; + if (!mainTypeSpecified && defaultMainType) { + queryOptionMap.set(defaultMainType, {}); + } + queryOptionMap.each(function (queryOption, mainType) { + var queryResult = queryReferringComponents(ecModel, mainType, queryOption, { + useDefault: defaultMainType === mainType, + enableAll: opt && opt.enableAll != null ? opt.enableAll : true, + enableNone: opt && opt.enableNone != null ? opt.enableNone : true + }); + result[mainType + 'Models'] = queryResult.models; + result[mainType + 'Model'] = queryResult.models[0]; + }); + return result; + } + function preParseFinder(finderInput, opt) { + var finder; + if (isString(finderInput)) { + var obj = {}; + obj[finderInput + 'Index'] = 0; + finder = obj; + } else { + finder = finderInput; + } + var queryOptionMap = createHashMap(); + var others = {}; + var mainTypeSpecified = false; + each(finder, function (value, key) { + // Exclude 'dataIndex' and other illgal keys. + if (key === 'dataIndex' || key === 'dataIndexInside') { + others[key] = value; + return; + } + var parsedKey = key.match(/^(\w+)(Index|Id|Name)$/) || []; + var mainType = parsedKey[1]; + var queryType = (parsedKey[2] || '').toLowerCase(); + if (!mainType || !queryType || opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0) { + return; + } + mainTypeSpecified = mainTypeSpecified || !!mainType; + var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {}); + queryOption[queryType] = value; + }); + return { + mainTypeSpecified: mainTypeSpecified, + queryOptionMap: queryOptionMap, + others: others + }; + } + var SINGLE_REFERRING = { + useDefault: true, + enableAll: false, + enableNone: false + }; + var MULTIPLE_REFERRING = { + useDefault: false, + enableAll: true, + enableNone: true + }; + function queryReferringComponents(ecModel, mainType, userOption, opt) { + opt = opt || SINGLE_REFERRING; + var indexOption = userOption.index; + var idOption = userOption.id; + var nameOption = userOption.name; + var result = { + models: null, + specified: indexOption != null || idOption != null || nameOption != null + }; + if (!result.specified) { + // Use the first as default if `useDefault`. + var firstCmpt = void 0; + result.models = opt.useDefault && (firstCmpt = ecModel.getComponent(mainType)) ? [firstCmpt] : []; + return result; + } + if (indexOption === 'none' || indexOption === false) { + assert(opt.enableNone, '`"none"` or `false` is not a valid value on index option.'); + result.models = []; + return result; + } + // `queryComponents` will return all components if + // both all of index/id/name are null/undefined. + if (indexOption === 'all') { + assert(opt.enableAll, '`"all"` is not a valid value on index option.'); + indexOption = idOption = nameOption = null; + } + result.models = ecModel.queryComponents({ + mainType: mainType, + index: indexOption, + id: idOption, + name: nameOption + }); + return result; + } + function setAttribute(dom, key, value) { + dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value; + } + function getAttribute(dom, key) { + return dom.getAttribute ? dom.getAttribute(key) : dom[key]; + } + function getTooltipRenderMode(renderModeOption) { + if (renderModeOption === 'auto') { + // Using html when `document` exists, use richText otherwise + return env.domSupported ? 'html' : 'richText'; + } else { + return renderModeOption || 'html'; + } + } + /** + * Group a list by key. + */ + function groupData(array, getKey // return key + ) { + var buckets = createHashMap(); + var keys = []; + each(array, function (item) { + var key = getKey(item); + (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item); + }); + return { + keys: keys, + buckets: buckets + }; + } + /** + * Interpolate raw values of a series with percent + * + * @param data data + * @param labelModel label model of the text element + * @param sourceValue start value. May be null/undefined when init. + * @param targetValue end value + * @param percent 0~1 percentage; 0 uses start value while 1 uses end value + * @return interpolated values + * If `sourceValue` and `targetValue` are `number`, return `number`. + * If `sourceValue` and `targetValue` are `string`, return `string`. + * If `sourceValue` and `targetValue` are `(string | number)[]`, return `(string | number)[]`. + * Other cases do not supported. + */ + function interpolateRawValues(data, precision, sourceValue, targetValue, percent) { + var isAutoPrecision = precision == null || precision === 'auto'; + if (targetValue == null) { + return targetValue; + } + if (isNumber(targetValue)) { + var value = interpolateNumber$1(sourceValue || 0, targetValue, percent); + return round(value, isAutoPrecision ? Math.max(getPrecision(sourceValue || 0), getPrecision(targetValue)) : precision); + } else if (isString(targetValue)) { + return percent < 1 ? sourceValue : targetValue; + } else { + var interpolated = []; + var leftArr = sourceValue; + var rightArr = targetValue; + var length_1 = Math.max(leftArr ? leftArr.length : 0, rightArr.length); + for (var i = 0; i < length_1; ++i) { + var info = data.getDimensionInfo(i); + // Don't interpolate ordinal dims + if (info && info.type === 'ordinal') { + // In init, there is no `sourceValue`, but should better not to get undefined result. + interpolated[i] = (percent < 1 && leftArr ? leftArr : rightArr)[i]; + } else { + var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0; + var rightVal = rightArr[i]; + var value = interpolateNumber$1(leftVal, rightVal, percent); + interpolated[i] = round(value, isAutoPrecision ? Math.max(getPrecision(leftVal), getPrecision(rightVal)) : precision); + } + } + return interpolated; + } + } + + var TYPE_DELIMITER = '.'; + var IS_CONTAINER = '___EC__COMPONENT__CONTAINER___'; + var IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___'; + /** + * Notice, parseClassType('') should returns {main: '', sub: ''} + * @public + */ + function parseClassType(componentType) { + var ret = { + main: '', + sub: '' + }; + if (componentType) { + var typeArr = componentType.split(TYPE_DELIMITER); + ret.main = typeArr[0] || ''; + ret.sub = typeArr[1] || ''; + } + return ret; + } + /** + * @public + */ + function checkClassType(componentType) { + assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType "' + componentType + '" illegal'); + } + function isExtendedClass(clz) { + return !!(clz && clz[IS_EXTENDED_CLASS]); + } + /** + * Implements `ExtendableConstructor` for `rootClz`. + * + * @usage + * ```ts + * class Xxx {} + * type XxxConstructor = typeof Xxx & ExtendableConstructor + * enableClassExtend(Xxx as XxxConstructor); + * ``` + */ + function enableClassExtend(rootClz, mandatoryMethods) { + rootClz.$constructor = rootClz; // FIXME: not necessary? + rootClz.extend = function (proto) { + if ("development" !== 'production') { + each(mandatoryMethods, function (method) { + if (!proto[method]) { + console.warn('Method `' + method + '` should be implemented' + (proto.type ? ' in ' + proto.type : '') + '.'); + } + }); + } + var superClass = this; + var ExtendedClass; + if (isESClass(superClass)) { + ExtendedClass = /** @class */function (_super) { + __extends(class_1, _super); + function class_1() { + return _super.apply(this, arguments) || this; + } + return class_1; + }(superClass); + } else { + // For backward compat, we both support ts class inheritance and this + // "extend" approach. + // The constructor should keep the same behavior as ts class inheritance: + // If this constructor/$constructor is not declared, auto invoke the super + // constructor. + // If this constructor/$constructor is declared, it is responsible for + // calling the super constructor. + ExtendedClass = function () { + (proto.$constructor || superClass).apply(this, arguments); + }; + inherits(ExtendedClass, this); + } + extend(ExtendedClass.prototype, proto); + ExtendedClass[IS_EXTENDED_CLASS] = true; + ExtendedClass.extend = this.extend; + ExtendedClass.superCall = superCall; + ExtendedClass.superApply = superApply; + ExtendedClass.superClass = superClass; + return ExtendedClass; + }; + } + function isESClass(fn) { + return isFunction(fn) && /^class\s/.test(Function.prototype.toString.call(fn)); + } + /** + * A work around to both support ts extend and this extend mechanism. + * on sub-class. + * @usage + * ```ts + * class Component { ... } + * classUtil.enableClassExtend(Component); + * classUtil.enableClassManagement(Component, {registerWhenExtend: true}); + * + * class Series extends Component { ... } + * // Without calling `markExtend`, `registerWhenExtend` will not work. + * Component.markExtend(Series); + * ``` + */ + function mountExtend(SubClz, SupperClz) { + SubClz.extend = SupperClz.extend; + } + // A random offset. + var classBase = Math.round(Math.random() * 10); + /** + * Implements `CheckableConstructor` for `target`. + * Can not use instanceof, consider different scope by + * cross domain or es module import in ec extensions. + * Mount a method "isInstance()" to Clz. + * + * @usage + * ```ts + * class Xxx {} + * type XxxConstructor = typeof Xxx & CheckableConstructor; + * enableClassCheck(Xxx as XxxConstructor) + * ``` + */ + function enableClassCheck(target) { + var classAttr = ['__\0is_clz', classBase++].join('_'); + target.prototype[classAttr] = true; + if ("development" !== 'production') { + assert(!target.isInstance, 'The method "is" can not be defined.'); + } + target.isInstance = function (obj) { + return !!(obj && obj[classAttr]); + }; + } + // superCall should have class info, which can not be fetched from 'this'. + // Consider this case: + // class A has method f, + // class B inherits class A, overrides method f, f call superApply('f'), + // class C inherits class B, does not override method f, + // then when method of class C is called, dead loop occurred. + function superCall(context, methodName) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + return this.superClass.prototype[methodName].apply(context, args); + } + function superApply(context, methodName, args) { + return this.superClass.prototype[methodName].apply(context, args); + } + /** + * Implements `ClassManager` for `target` + * + * @usage + * ```ts + * class Xxx {} + * type XxxConstructor = typeof Xxx & ClassManager + * enableClassManagement(Xxx as XxxConstructor); + * ``` + */ + function enableClassManagement(target) { + /** + * Component model classes + * key: componentType, + * value: + * componentClass, when componentType is 'a' + * or Object., when componentType is 'a.b' + */ + var storage = {}; + target.registerClass = function (clz) { + // `type` should not be a "instance member". + // If using TS class, should better declared as `static type = 'series.pie'`. + // otherwise users have to mount `type` on prototype manually. + // For backward compat and enable instance visit type via `this.type`, + // we still support fetch `type` from prototype. + var componentFullType = clz.type || clz.prototype.type; + if (componentFullType) { + checkClassType(componentFullType); + // If only static type declared, we assign it to prototype mandatorily. + clz.prototype.type = componentFullType; + var componentTypeInfo = parseClassType(componentFullType); + if (!componentTypeInfo.sub) { + if ("development" !== 'production') { + if (storage[componentTypeInfo.main]) { + console.warn(componentTypeInfo.main + ' exists.'); + } + } + storage[componentTypeInfo.main] = clz; + } else if (componentTypeInfo.sub !== IS_CONTAINER) { + var container = makeContainer(componentTypeInfo); + container[componentTypeInfo.sub] = clz; + } + } + return clz; + }; + target.getClass = function (mainType, subType, throwWhenNotFound) { + var clz = storage[mainType]; + if (clz && clz[IS_CONTAINER]) { + clz = subType ? clz[subType] : null; + } + if (throwWhenNotFound && !clz) { + throw new Error(!subType ? mainType + '.' + 'type should be specified.' : 'Component ' + mainType + '.' + (subType || '') + ' is used but not imported.'); + } + return clz; + }; + target.getClassesByMainType = function (componentType) { + var componentTypeInfo = parseClassType(componentType); + var result = []; + var obj = storage[componentTypeInfo.main]; + if (obj && obj[IS_CONTAINER]) { + each(obj, function (o, type) { + type !== IS_CONTAINER && result.push(o); + }); + } else { + result.push(obj); + } + return result; + }; + target.hasClass = function (componentType) { + // Just consider componentType.main. + var componentTypeInfo = parseClassType(componentType); + return !!storage[componentTypeInfo.main]; + }; + /** + * @return Like ['aa', 'bb'], but can not be ['aa.xx'] + */ + target.getAllClassMainTypes = function () { + var types = []; + each(storage, function (obj, type) { + types.push(type); + }); + return types; + }; + /** + * If a main type is container and has sub types + */ + target.hasSubTypes = function (componentType) { + var componentTypeInfo = parseClassType(componentType); + var obj = storage[componentTypeInfo.main]; + return obj && obj[IS_CONTAINER]; + }; + function makeContainer(componentTypeInfo) { + var container = storage[componentTypeInfo.main]; + if (!container || !container[IS_CONTAINER]) { + container = storage[componentTypeInfo.main] = {}; + container[IS_CONTAINER] = true; + } + return container; + } + } + // /** + // * @param {string|Array.} properties + // */ + // export function setReadOnly(obj, properties) { + // FIXME It seems broken in IE8 simulation of IE11 + // if (!zrUtil.isArray(properties)) { + // properties = properties != null ? [properties] : []; + // } + // zrUtil.each(properties, function (prop) { + // let value = obj[prop]; + // Object.defineProperty + // && Object.defineProperty(obj, prop, { + // value: value, writable: false + // }); + // zrUtil.isArray(obj[prop]) + // && Object.freeze + // && Object.freeze(obj[prop]); + // }); + // } + + function makeStyleMapper(properties, ignoreParent) { + // Normalize + for (var i = 0; i < properties.length; i++) { + if (!properties[i][1]) { + properties[i][1] = properties[i][0]; + } + } + ignoreParent = ignoreParent || false; + return function (model, excludes, includes) { + var style = {}; + for (var i = 0; i < properties.length; i++) { + var propName = properties[i][1]; + if (excludes && indexOf(excludes, propName) >= 0 || includes && indexOf(includes, propName) < 0) { + continue; + } + var val = model.getShallow(propName, ignoreParent); + if (val != null) { + style[properties[i][0]] = val; + } + } + // TODO Text or image? + return style; + }; + } + + var AREA_STYLE_KEY_MAP = [['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor'] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. + ]; + + var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP); + var AreaStyleMixin = /** @class */function () { + function AreaStyleMixin() {} + AreaStyleMixin.prototype.getAreaStyle = function (excludes, includes) { + return getAreaStyle(this, excludes, includes); + }; + return AreaStyleMixin; + }(); + + var globalImageCache = new LRU(50); + function findExistImage(newImageOrSrc) { + if (typeof newImageOrSrc === 'string') { + var cachedImgObj = globalImageCache.get(newImageOrSrc); + return cachedImgObj && cachedImgObj.image; + } + else { + return newImageOrSrc; + } + } + function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) { + if (!newImageOrSrc) { + return image; + } + else if (typeof newImageOrSrc === 'string') { + if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) { + return image; + } + var cachedImgObj = globalImageCache.get(newImageOrSrc); + var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload }; + if (cachedImgObj) { + image = cachedImgObj.image; + !isImageReady(image) && cachedImgObj.pending.push(pendingWrap); + } + else { + image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad); + image.__zrImageSrc = newImageOrSrc; + globalImageCache.put(newImageOrSrc, image.__cachedImgObj = { + image: image, + pending: [pendingWrap] + }); + } + return image; + } + else { + return newImageOrSrc; + } + } + function imageOnLoad() { + var cachedImgObj = this.__cachedImgObj; + this.onload = this.onerror = this.__cachedImgObj = null; + for (var i = 0; i < cachedImgObj.pending.length; i++) { + var pendingWrap = cachedImgObj.pending[i]; + var cb = pendingWrap.cb; + cb && cb(this, pendingWrap.cbPayload); + pendingWrap.hostEl.dirty(); + } + cachedImgObj.pending.length = 0; + } + function isImageReady(image) { + return image && image.width && image.height; + } + + var STYLE_REG = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g; + function truncateText(text, containerWidth, font, ellipsis, options) { + if (!containerWidth) { + return ''; + } + var textLines = (text + '').split('\n'); + options = prepareTruncateOptions(containerWidth, font, ellipsis, options); + for (var i = 0, len = textLines.length; i < len; i++) { + textLines[i] = truncateSingleLine(textLines[i], options); + } + return textLines.join('\n'); + } + function prepareTruncateOptions(containerWidth, font, ellipsis, options) { + options = options || {}; + var preparedOpts = extend({}, options); + preparedOpts.font = font; + ellipsis = retrieve2(ellipsis, '...'); + preparedOpts.maxIterations = retrieve2(options.maxIterations, 2); + var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0); + preparedOpts.cnCharWidth = getWidth('国', font); + var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font); + preparedOpts.placeholder = retrieve2(options.placeholder, ''); + var contentWidth = containerWidth = Math.max(0, containerWidth - 1); + for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) { + contentWidth -= ascCharWidth; + } + var ellipsisWidth = getWidth(ellipsis, font); + if (ellipsisWidth > contentWidth) { + ellipsis = ''; + ellipsisWidth = 0; + } + contentWidth = containerWidth - ellipsisWidth; + preparedOpts.ellipsis = ellipsis; + preparedOpts.ellipsisWidth = ellipsisWidth; + preparedOpts.contentWidth = contentWidth; + preparedOpts.containerWidth = containerWidth; + return preparedOpts; + } + function truncateSingleLine(textLine, options) { + var containerWidth = options.containerWidth; + var font = options.font; + var contentWidth = options.contentWidth; + if (!containerWidth) { + return ''; + } + var lineWidth = getWidth(textLine, font); + if (lineWidth <= containerWidth) { + return textLine; + } + for (var j = 0;; j++) { + if (lineWidth <= contentWidth || j >= options.maxIterations) { + textLine += options.ellipsis; + break; + } + var subLength = j === 0 + ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) + : lineWidth > 0 + ? Math.floor(textLine.length * contentWidth / lineWidth) + : 0; + textLine = textLine.substr(0, subLength); + lineWidth = getWidth(textLine, font); + } + if (textLine === '') { + textLine = options.placeholder; + } + return textLine; + } + function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) { + var width = 0; + var i = 0; + for (var len = text.length; i < len && width < contentWidth; i++) { + var charCode = text.charCodeAt(i); + width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth; + } + return i; + } + function parsePlainText(text, style) { + text != null && (text += ''); + var overflow = style.overflow; + var padding = style.padding; + var font = style.font; + var truncate = overflow === 'truncate'; + var calculatedLineHeight = getLineHeight(font); + var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight); + var bgColorDrawn = !!(style.backgroundColor); + var truncateLineOverflow = style.lineOverflow === 'truncate'; + var width = style.width; + var lines; + if (width != null && (overflow === 'break' || overflow === 'breakAll')) { + lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : []; + } + else { + lines = text ? text.split('\n') : []; + } + var contentHeight = lines.length * lineHeight; + var height = retrieve2(style.height, contentHeight); + if (contentHeight > height && truncateLineOverflow) { + var lineCount = Math.floor(height / lineHeight); + lines = lines.slice(0, lineCount); + } + if (text && truncate && width != null) { + var options = prepareTruncateOptions(width, font, style.ellipsis, { + minChar: style.truncateMinChar, + placeholder: style.placeholder + }); + for (var i = 0; i < lines.length; i++) { + lines[i] = truncateSingleLine(lines[i], options); + } + } + var outerHeight = height; + var contentWidth = 0; + for (var i = 0; i < lines.length; i++) { + contentWidth = Math.max(getWidth(lines[i], font), contentWidth); + } + if (width == null) { + width = contentWidth; + } + var outerWidth = contentWidth; + if (padding) { + outerHeight += padding[0] + padding[2]; + outerWidth += padding[1] + padding[3]; + width += padding[1] + padding[3]; + } + if (bgColorDrawn) { + outerWidth = width; + } + return { + lines: lines, + height: height, + outerWidth: outerWidth, + outerHeight: outerHeight, + lineHeight: lineHeight, + calculatedLineHeight: calculatedLineHeight, + contentWidth: contentWidth, + contentHeight: contentHeight, + width: width + }; + } + var RichTextToken = (function () { + function RichTextToken() { + } + return RichTextToken; + }()); + var RichTextLine = (function () { + function RichTextLine(tokens) { + this.tokens = []; + if (tokens) { + this.tokens = tokens; + } + } + return RichTextLine; + }()); + var RichTextContentBlock = (function () { + function RichTextContentBlock() { + this.width = 0; + this.height = 0; + this.contentWidth = 0; + this.contentHeight = 0; + this.outerWidth = 0; + this.outerHeight = 0; + this.lines = []; + } + return RichTextContentBlock; + }()); + function parseRichText(text, style) { + var contentBlock = new RichTextContentBlock(); + text != null && (text += ''); + if (!text) { + return contentBlock; + } + var topWidth = style.width; + var topHeight = style.height; + var overflow = style.overflow; + var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null + ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' } + : null; + var lastIndex = STYLE_REG.lastIndex = 0; + var result; + while ((result = STYLE_REG.exec(text)) != null) { + var matchedIndex = result.index; + if (matchedIndex > lastIndex) { + pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo); + } + pushTokens(contentBlock, result[2], style, wrapInfo, result[1]); + lastIndex = STYLE_REG.lastIndex; + } + if (lastIndex < text.length) { + pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo); + } + var pendingList = []; + var calculatedHeight = 0; + var calculatedWidth = 0; + var stlPadding = style.padding; + var truncate = overflow === 'truncate'; + var truncateLine = style.lineOverflow === 'truncate'; + function finishLine(line, lineWidth, lineHeight) { + line.width = lineWidth; + line.lineHeight = lineHeight; + calculatedHeight += lineHeight; + calculatedWidth = Math.max(calculatedWidth, lineWidth); + } + outer: for (var i = 0; i < contentBlock.lines.length; i++) { + var line = contentBlock.lines[i]; + var lineHeight = 0; + var lineWidth = 0; + for (var j = 0; j < line.tokens.length; j++) { + var token = line.tokens[j]; + var tokenStyle = token.styleName && style.rich[token.styleName] || {}; + var textPadding = token.textPadding = tokenStyle.padding; + var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0; + var font = token.font = tokenStyle.font || style.font; + token.contentHeight = getLineHeight(font); + var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight); + token.innerHeight = tokenHeight; + textPadding && (tokenHeight += textPadding[0] + textPadding[2]); + token.height = tokenHeight; + token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight); + token.align = tokenStyle && tokenStyle.align || style.align; + token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle'; + if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) { + if (j > 0) { + line.tokens = line.tokens.slice(0, j); + finishLine(line, lineWidth, lineHeight); + contentBlock.lines = contentBlock.lines.slice(0, i + 1); + } + else { + contentBlock.lines = contentBlock.lines.slice(0, i); + } + break outer; + } + var styleTokenWidth = tokenStyle.width; + var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto'; + if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') { + token.percentWidth = styleTokenWidth; + pendingList.push(token); + token.contentWidth = getWidth(token.text, font); + } + else { + if (tokenWidthNotSpecified) { + var textBackgroundColor = tokenStyle.backgroundColor; + var bgImg = textBackgroundColor && textBackgroundColor.image; + if (bgImg) { + bgImg = findExistImage(bgImg); + if (isImageReady(bgImg)) { + token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height); + } + } + } + var remainTruncWidth = truncate && topWidth != null + ? topWidth - lineWidth : null; + if (remainTruncWidth != null && remainTruncWidth < token.width) { + if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) { + token.text = ''; + token.width = token.contentWidth = 0; + } + else { + token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar }); + token.width = token.contentWidth = getWidth(token.text, font); + } + } + else { + token.contentWidth = getWidth(token.text, font); + } + } + token.width += paddingH; + lineWidth += token.width; + tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight)); + } + finishLine(line, lineWidth, lineHeight); + } + contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth); + contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight); + contentBlock.contentHeight = calculatedHeight; + contentBlock.contentWidth = calculatedWidth; + if (stlPadding) { + contentBlock.outerWidth += stlPadding[1] + stlPadding[3]; + contentBlock.outerHeight += stlPadding[0] + stlPadding[2]; + } + for (var i = 0; i < pendingList.length; i++) { + var token = pendingList[i]; + var percentWidth = token.percentWidth; + token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width; + } + return contentBlock; + } + function pushTokens(block, str, style, wrapInfo, styleName) { + var isEmptyStr = str === ''; + var tokenStyle = styleName && style.rich[styleName] || {}; + var lines = block.lines; + var font = tokenStyle.font || style.font; + var newLine = false; + var strLines; + var linesWidths; + if (wrapInfo) { + var tokenPadding = tokenStyle.padding; + var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0; + if (tokenStyle.width != null && tokenStyle.width !== 'auto') { + var outerWidth_1 = parsePercent(tokenStyle.width, wrapInfo.width) + tokenPaddingH; + if (lines.length > 0) { + if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) { + strLines = str.split('\n'); + newLine = true; + } + } + wrapInfo.accumWidth = outerWidth_1; + } + else { + var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth); + wrapInfo.accumWidth = res.accumWidth + tokenPaddingH; + linesWidths = res.linesWidths; + strLines = res.lines; + } + } + else { + strLines = str.split('\n'); + } + for (var i = 0; i < strLines.length; i++) { + var text = strLines[i]; + var token = new RichTextToken(); + token.styleName = styleName; + token.text = text; + token.isLineHolder = !text && !isEmptyStr; + if (typeof tokenStyle.width === 'number') { + token.width = tokenStyle.width; + } + else { + token.width = linesWidths + ? linesWidths[i] + : getWidth(text, font); + } + if (!i && !newLine) { + var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens; + var tokensLen = tokens.length; + (tokensLen === 1 && tokens[0].isLineHolder) + ? (tokens[0] = token) + : ((text || !tokensLen || isEmptyStr) && tokens.push(token)); + } + else { + lines.push(new RichTextLine([token])); + } + } + } + function isAlphabeticLetter(ch) { + var code = ch.charCodeAt(0); + return code >= 0x20 && code <= 0x24F + || code >= 0x370 && code <= 0x10FF + || code >= 0x1200 && code <= 0x13FF + || code >= 0x1E00 && code <= 0x206F; + } + var breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) { + obj[ch] = true; + return obj; + }, {}); + function isWordBreakChar(ch) { + if (isAlphabeticLetter(ch)) { + if (breakCharMap[ch]) { + return true; + } + return false; + } + return true; + } + function wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) { + var lines = []; + var linesWidths = []; + var line = ''; + var currentWord = ''; + var currentWordWidth = 0; + var accumWidth = 0; + for (var i = 0; i < text.length; i++) { + var ch = text.charAt(i); + if (ch === '\n') { + if (currentWord) { + line += currentWord; + accumWidth += currentWordWidth; + } + lines.push(line); + linesWidths.push(accumWidth); + line = ''; + currentWord = ''; + currentWordWidth = 0; + accumWidth = 0; + continue; + } + var chWidth = getWidth(ch, font); + var inWord = isBreakAll ? false : !isWordBreakChar(ch); + if (!lines.length + ? lastAccumWidth + accumWidth + chWidth > lineWidth + : accumWidth + chWidth > lineWidth) { + if (!accumWidth) { + if (inWord) { + lines.push(currentWord); + linesWidths.push(currentWordWidth); + currentWord = ch; + currentWordWidth = chWidth; + } + else { + lines.push(ch); + linesWidths.push(chWidth); + } + } + else if (line || currentWord) { + if (inWord) { + if (!line) { + line = currentWord; + currentWord = ''; + currentWordWidth = 0; + accumWidth = currentWordWidth; + } + lines.push(line); + linesWidths.push(accumWidth - currentWordWidth); + currentWord += ch; + currentWordWidth += chWidth; + line = ''; + accumWidth = currentWordWidth; + } + else { + if (currentWord) { + line += currentWord; + currentWord = ''; + currentWordWidth = 0; + } + lines.push(line); + linesWidths.push(accumWidth); + line = ch; + accumWidth = chWidth; + } + } + continue; + } + accumWidth += chWidth; + if (inWord) { + currentWord += ch; + currentWordWidth += chWidth; + } + else { + if (currentWord) { + line += currentWord; + currentWord = ''; + currentWordWidth = 0; + } + line += ch; + } + } + if (!lines.length && !line) { + line = text; + currentWord = ''; + currentWordWidth = 0; + } + if (currentWord) { + line += currentWord; + } + if (line) { + lines.push(line); + linesWidths.push(accumWidth); + } + if (lines.length === 1) { + accumWidth += lastAccumWidth; + } + return { + accumWidth: accumWidth, + lines: lines, + linesWidths: linesWidths + }; + } + + var STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10)); + var DEFAULT_COMMON_STYLE = { + shadowBlur: 0, + shadowOffsetX: 0, + shadowOffsetY: 0, + shadowColor: '#000', + opacity: 1, + blend: 'source-over' + }; + var DEFAULT_COMMON_ANIMATION_PROPS = { + style: { + shadowBlur: true, + shadowOffsetX: true, + shadowOffsetY: true, + shadowColor: true, + opacity: true + } + }; + DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true; + var PRIMARY_STATES_KEYS$1 = ['z', 'z2', 'invisible']; + var PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ['invisible']; + var Displayable = (function (_super) { + __extends(Displayable, _super); + function Displayable(props) { + return _super.call(this, props) || this; + } + Displayable.prototype._init = function (props) { + var keysArr = keys(props); + for (var i = 0; i < keysArr.length; i++) { + var key = keysArr[i]; + if (key === 'style') { + this.useStyle(props[key]); + } + else { + _super.prototype.attrKV.call(this, key, props[key]); + } + } + if (!this.style) { + this.useStyle({}); + } + }; + Displayable.prototype.beforeBrush = function () { }; + Displayable.prototype.afterBrush = function () { }; + Displayable.prototype.innerBeforeBrush = function () { }; + Displayable.prototype.innerAfterBrush = function () { }; + Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) { + var m = this.transform; + if (this.ignore + || this.invisible + || this.style.opacity === 0 + || (this.culling + && isDisplayableCulled(this, viewWidth, viewHeight)) + || (m && !m[0] && !m[3])) { + return false; + } + if (considerClipPath && this.__clipPaths) { + for (var i = 0; i < this.__clipPaths.length; ++i) { + if (this.__clipPaths[i].isZeroArea()) { + return false; + } + } + } + if (considerAncestors && this.parent) { + var parent_1 = this.parent; + while (parent_1) { + if (parent_1.ignore) { + return false; + } + parent_1 = parent_1.parent; + } + } + return true; + }; + Displayable.prototype.contain = function (x, y) { + return this.rectContain(x, y); + }; + Displayable.prototype.traverse = function (cb, context) { + cb.call(context, this); + }; + Displayable.prototype.rectContain = function (x, y) { + var coord = this.transformCoordToLocal(x, y); + var rect = this.getBoundingRect(); + return rect.contain(coord[0], coord[1]); + }; + Displayable.prototype.getPaintRect = function () { + var rect = this._paintRect; + if (!this._paintRect || this.__dirty) { + var transform = this.transform; + var elRect = this.getBoundingRect(); + var style = this.style; + var shadowSize = style.shadowBlur || 0; + var shadowOffsetX = style.shadowOffsetX || 0; + var shadowOffsetY = style.shadowOffsetY || 0; + rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0)); + if (transform) { + BoundingRect.applyTransform(rect, elRect, transform); + } + else { + rect.copy(elRect); + } + if (shadowSize || shadowOffsetX || shadowOffsetY) { + rect.width += shadowSize * 2 + Math.abs(shadowOffsetX); + rect.height += shadowSize * 2 + Math.abs(shadowOffsetY); + rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize); + rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize); + } + var tolerance = this.dirtyRectTolerance; + if (!rect.isZero()) { + rect.x = Math.floor(rect.x - tolerance); + rect.y = Math.floor(rect.y - tolerance); + rect.width = Math.ceil(rect.width + 1 + tolerance * 2); + rect.height = Math.ceil(rect.height + 1 + tolerance * 2); + } + } + return rect; + }; + Displayable.prototype.setPrevPaintRect = function (paintRect) { + if (paintRect) { + this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0); + this._prevPaintRect.copy(paintRect); + } + else { + this._prevPaintRect = null; + } + }; + Displayable.prototype.getPrevPaintRect = function () { + return this._prevPaintRect; + }; + Displayable.prototype.animateStyle = function (loop) { + return this.animate('style', loop); + }; + Displayable.prototype.updateDuringAnimation = function (targetKey) { + if (targetKey === 'style') { + this.dirtyStyle(); + } + else { + this.markRedraw(); + } + }; + Displayable.prototype.attrKV = function (key, value) { + if (key !== 'style') { + _super.prototype.attrKV.call(this, key, value); + } + else { + if (!this.style) { + this.useStyle(value); + } + else { + this.setStyle(value); + } + } + }; + Displayable.prototype.setStyle = function (keyOrObj, value) { + if (typeof keyOrObj === 'string') { + this.style[keyOrObj] = value; + } + else { + extend(this.style, keyOrObj); + } + this.dirtyStyle(); + return this; + }; + Displayable.prototype.dirtyStyle = function (notRedraw) { + if (!notRedraw) { + this.markRedraw(); + } + this.__dirty |= STYLE_CHANGED_BIT; + if (this._rect) { + this._rect = null; + } + }; + Displayable.prototype.dirty = function () { + this.dirtyStyle(); + }; + Displayable.prototype.styleChanged = function () { + return !!(this.__dirty & STYLE_CHANGED_BIT); + }; + Displayable.prototype.styleUpdated = function () { + this.__dirty &= ~STYLE_CHANGED_BIT; + }; + Displayable.prototype.createStyle = function (obj) { + return createObject(DEFAULT_COMMON_STYLE, obj); + }; + Displayable.prototype.useStyle = function (obj) { + if (!obj[STYLE_MAGIC_KEY]) { + obj = this.createStyle(obj); + } + if (this.__inHover) { + this.__hoverStyle = obj; + } + else { + this.style = obj; + } + this.dirtyStyle(); + }; + Displayable.prototype.isStyleObject = function (obj) { + return obj[STYLE_MAGIC_KEY]; + }; + Displayable.prototype._innerSaveToNormal = function (toState) { + _super.prototype._innerSaveToNormal.call(this, toState); + var normalState = this._normalState; + if (toState.style && !normalState.style) { + normalState.style = this._mergeStyle(this.createStyle(), this.style); + } + this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1); + }; + Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) { + _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg); + var needsRestoreToNormal = !(state && keepCurrentStates); + var targetStyle; + if (state && state.style) { + if (transition) { + if (keepCurrentStates) { + targetStyle = state.style; + } + else { + targetStyle = this._mergeStyle(this.createStyle(), normalState.style); + this._mergeStyle(targetStyle, state.style); + } + } + else { + targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style); + this._mergeStyle(targetStyle, state.style); + } + } + else if (needsRestoreToNormal) { + targetStyle = normalState.style; + } + if (targetStyle) { + if (transition) { + var sourceStyle = this.style; + this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle); + if (needsRestoreToNormal) { + var changedKeys = keys(sourceStyle); + for (var i = 0; i < changedKeys.length; i++) { + var key = changedKeys[i]; + if (key in targetStyle) { + targetStyle[key] = targetStyle[key]; + this.style[key] = sourceStyle[key]; + } + } + } + var targetKeys = keys(targetStyle); + for (var i = 0; i < targetKeys.length; i++) { + var key = targetKeys[i]; + this.style[key] = this.style[key]; + } + this._transitionState(stateName, { + style: targetStyle + }, animationCfg, this.getAnimationStyleProps()); + } + else { + this.useStyle(targetStyle); + } + } + var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER : PRIMARY_STATES_KEYS$1; + for (var i = 0; i < statesKeys.length; i++) { + var key = statesKeys[i]; + if (state && state[key] != null) { + this[key] = state[key]; + } + else if (needsRestoreToNormal) { + if (normalState[key] != null) { + this[key] = normalState[key]; + } + } + } + }; + Displayable.prototype._mergeStates = function (states) { + var mergedState = _super.prototype._mergeStates.call(this, states); + var mergedStyle; + for (var i = 0; i < states.length; i++) { + var state = states[i]; + if (state.style) { + mergedStyle = mergedStyle || {}; + this._mergeStyle(mergedStyle, state.style); + } + } + if (mergedStyle) { + mergedState.style = mergedStyle; + } + return mergedState; + }; + Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) { + extend(targetStyle, sourceStyle); + return targetStyle; + }; + Displayable.prototype.getAnimationStyleProps = function () { + return DEFAULT_COMMON_ANIMATION_PROPS; + }; + Displayable.initDefaultProps = (function () { + var dispProto = Displayable.prototype; + dispProto.type = 'displayable'; + dispProto.invisible = false; + dispProto.z = 0; + dispProto.z2 = 0; + dispProto.zlevel = 0; + dispProto.culling = false; + dispProto.cursor = 'pointer'; + dispProto.rectHover = false; + dispProto.incremental = false; + dispProto._rect = null; + dispProto.dirtyRectTolerance = 0; + dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT; + })(); + return Displayable; + }(Element)); + var tmpRect$1 = new BoundingRect(0, 0, 0, 0); + var viewRect = new BoundingRect(0, 0, 0, 0); + function isDisplayableCulled(el, width, height) { + tmpRect$1.copy(el.getBoundingRect()); + if (el.transform) { + tmpRect$1.applyTransform(el.transform); + } + viewRect.width = width; + viewRect.height = height; + return !tmpRect$1.intersect(viewRect); + } + + var mathMin$1 = Math.min; + var mathMax$1 = Math.max; + var mathSin = Math.sin; + var mathCos = Math.cos; + var PI2 = Math.PI * 2; + var start = create(); + var end = create(); + var extremity = create(); + function fromPoints(points, min, max) { + if (points.length === 0) { + return; + } + var p = points[0]; + var left = p[0]; + var right = p[0]; + var top = p[1]; + var bottom = p[1]; + for (var i = 1; i < points.length; i++) { + p = points[i]; + left = mathMin$1(left, p[0]); + right = mathMax$1(right, p[0]); + top = mathMin$1(top, p[1]); + bottom = mathMax$1(bottom, p[1]); + } + min[0] = left; + min[1] = top; + max[0] = right; + max[1] = bottom; + } + function fromLine(x0, y0, x1, y1, min, max) { + min[0] = mathMin$1(x0, x1); + min[1] = mathMin$1(y0, y1); + max[0] = mathMax$1(x0, x1); + max[1] = mathMax$1(y0, y1); + } + var xDim = []; + var yDim = []; + function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) { + var cubicExtrema$1 = cubicExtrema; + var cubicAt$1 = cubicAt; + var n = cubicExtrema$1(x0, x1, x2, x3, xDim); + min[0] = Infinity; + min[1] = Infinity; + max[0] = -Infinity; + max[1] = -Infinity; + for (var i = 0; i < n; i++) { + var x = cubicAt$1(x0, x1, x2, x3, xDim[i]); + min[0] = mathMin$1(x, min[0]); + max[0] = mathMax$1(x, max[0]); + } + n = cubicExtrema$1(y0, y1, y2, y3, yDim); + for (var i = 0; i < n; i++) { + var y = cubicAt$1(y0, y1, y2, y3, yDim[i]); + min[1] = mathMin$1(y, min[1]); + max[1] = mathMax$1(y, max[1]); + } + min[0] = mathMin$1(x0, min[0]); + max[0] = mathMax$1(x0, max[0]); + min[0] = mathMin$1(x3, min[0]); + max[0] = mathMax$1(x3, max[0]); + min[1] = mathMin$1(y0, min[1]); + max[1] = mathMax$1(y0, max[1]); + min[1] = mathMin$1(y3, min[1]); + max[1] = mathMax$1(y3, max[1]); + } + function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) { + var quadraticExtremum$1 = quadraticExtremum; + var quadraticAt$1 = quadraticAt; + var tx = mathMax$1(mathMin$1(quadraticExtremum$1(x0, x1, x2), 1), 0); + var ty = mathMax$1(mathMin$1(quadraticExtremum$1(y0, y1, y2), 1), 0); + var x = quadraticAt$1(x0, x1, x2, tx); + var y = quadraticAt$1(y0, y1, y2, ty); + min[0] = mathMin$1(x0, x2, x); + min[1] = mathMin$1(y0, y2, y); + max[0] = mathMax$1(x0, x2, x); + max[1] = mathMax$1(y0, y2, y); + } + function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min$1, max$1) { + var vec2Min = min; + var vec2Max = max; + var diff = Math.abs(startAngle - endAngle); + if (diff % PI2 < 1e-4 && diff > 1e-4) { + min$1[0] = x - rx; + min$1[1] = y - ry; + max$1[0] = x + rx; + max$1[1] = y + ry; + return; + } + start[0] = mathCos(startAngle) * rx + x; + start[1] = mathSin(startAngle) * ry + y; + end[0] = mathCos(endAngle) * rx + x; + end[1] = mathSin(endAngle) * ry + y; + vec2Min(min$1, start, end); + vec2Max(max$1, start, end); + startAngle = startAngle % (PI2); + if (startAngle < 0) { + startAngle = startAngle + PI2; + } + endAngle = endAngle % (PI2); + if (endAngle < 0) { + endAngle = endAngle + PI2; + } + if (startAngle > endAngle && !anticlockwise) { + endAngle += PI2; + } + else if (startAngle < endAngle && anticlockwise) { + startAngle += PI2; + } + if (anticlockwise) { + var tmp = endAngle; + endAngle = startAngle; + startAngle = tmp; + } + for (var angle = 0; angle < endAngle; angle += Math.PI / 2) { + if (angle > startAngle) { + extremity[0] = mathCos(angle) * rx + x; + extremity[1] = mathSin(angle) * ry + y; + vec2Min(min$1, extremity, min$1); + vec2Max(max$1, extremity, max$1); + } + } + } + + var CMD = { + M: 1, + L: 2, + C: 3, + Q: 4, + A: 5, + Z: 6, + R: 7 + }; + var tmpOutX = []; + var tmpOutY = []; + var min$1 = []; + var max$1 = []; + var min2 = []; + var max2 = []; + var mathMin$2 = Math.min; + var mathMax$2 = Math.max; + var mathCos$1 = Math.cos; + var mathSin$1 = Math.sin; + var mathAbs = Math.abs; + var PI = Math.PI; + var PI2$1 = PI * 2; + var hasTypedArray = typeof Float32Array !== 'undefined'; + var tmpAngles = []; + function modPI2(radian) { + var n = Math.round(radian / PI * 1e8) / 1e8; + return (n % 2) * PI; + } + function normalizeArcAngles(angles, anticlockwise) { + var newStartAngle = modPI2(angles[0]); + if (newStartAngle < 0) { + newStartAngle += PI2$1; + } + var delta = newStartAngle - angles[0]; + var newEndAngle = angles[1]; + newEndAngle += delta; + if (!anticlockwise && newEndAngle - newStartAngle >= PI2$1) { + newEndAngle = newStartAngle + PI2$1; + } + else if (anticlockwise && newStartAngle - newEndAngle >= PI2$1) { + newEndAngle = newStartAngle - PI2$1; + } + else if (!anticlockwise && newStartAngle > newEndAngle) { + newEndAngle = newStartAngle + (PI2$1 - modPI2(newStartAngle - newEndAngle)); + } + else if (anticlockwise && newStartAngle < newEndAngle) { + newEndAngle = newStartAngle - (PI2$1 - modPI2(newEndAngle - newStartAngle)); + } + angles[0] = newStartAngle; + angles[1] = newEndAngle; + } + var PathProxy = (function () { + function PathProxy(notSaveData) { + this.dpr = 1; + this._xi = 0; + this._yi = 0; + this._x0 = 0; + this._y0 = 0; + this._len = 0; + if (notSaveData) { + this._saveData = false; + } + if (this._saveData) { + this.data = []; + } + } + PathProxy.prototype.increaseVersion = function () { + this._version++; + }; + PathProxy.prototype.getVersion = function () { + return this._version; + }; + PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) { + segmentIgnoreThreshold = segmentIgnoreThreshold || 0; + if (segmentIgnoreThreshold > 0) { + this._ux = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sx) || 0; + this._uy = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sy) || 0; + } + }; + PathProxy.prototype.setDPR = function (dpr) { + this.dpr = dpr; + }; + PathProxy.prototype.setContext = function (ctx) { + this._ctx = ctx; + }; + PathProxy.prototype.getContext = function () { + return this._ctx; + }; + PathProxy.prototype.beginPath = function () { + this._ctx && this._ctx.beginPath(); + this.reset(); + return this; + }; + PathProxy.prototype.reset = function () { + if (this._saveData) { + this._len = 0; + } + if (this._pathSegLen) { + this._pathSegLen = null; + this._pathLen = 0; + } + this._version++; + }; + PathProxy.prototype.moveTo = function (x, y) { + this._drawPendingPt(); + this.addData(CMD.M, x, y); + this._ctx && this._ctx.moveTo(x, y); + this._x0 = x; + this._y0 = y; + this._xi = x; + this._yi = y; + return this; + }; + PathProxy.prototype.lineTo = function (x, y) { + var dx = mathAbs(x - this._xi); + var dy = mathAbs(y - this._yi); + var exceedUnit = dx > this._ux || dy > this._uy; + this.addData(CMD.L, x, y); + if (this._ctx && exceedUnit) { + this._ctx.lineTo(x, y); + } + if (exceedUnit) { + this._xi = x; + this._yi = y; + this._pendingPtDist = 0; + } + else { + var d2 = dx * dx + dy * dy; + if (d2 > this._pendingPtDist) { + this._pendingPtX = x; + this._pendingPtY = y; + this._pendingPtDist = d2; + } + } + return this; + }; + PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) { + this._drawPendingPt(); + this.addData(CMD.C, x1, y1, x2, y2, x3, y3); + if (this._ctx) { + this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); + } + this._xi = x3; + this._yi = y3; + return this; + }; + PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) { + this._drawPendingPt(); + this.addData(CMD.Q, x1, y1, x2, y2); + if (this._ctx) { + this._ctx.quadraticCurveTo(x1, y1, x2, y2); + } + this._xi = x2; + this._yi = y2; + return this; + }; + PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) { + this._drawPendingPt(); + tmpAngles[0] = startAngle; + tmpAngles[1] = endAngle; + normalizeArcAngles(tmpAngles, anticlockwise); + startAngle = tmpAngles[0]; + endAngle = tmpAngles[1]; + var delta = endAngle - startAngle; + this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1); + this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise); + this._xi = mathCos$1(endAngle) * r + cx; + this._yi = mathSin$1(endAngle) * r + cy; + return this; + }; + PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) { + this._drawPendingPt(); + if (this._ctx) { + this._ctx.arcTo(x1, y1, x2, y2, radius); + } + return this; + }; + PathProxy.prototype.rect = function (x, y, w, h) { + this._drawPendingPt(); + this._ctx && this._ctx.rect(x, y, w, h); + this.addData(CMD.R, x, y, w, h); + return this; + }; + PathProxy.prototype.closePath = function () { + this._drawPendingPt(); + this.addData(CMD.Z); + var ctx = this._ctx; + var x0 = this._x0; + var y0 = this._y0; + if (ctx) { + ctx.closePath(); + } + this._xi = x0; + this._yi = y0; + return this; + }; + PathProxy.prototype.fill = function (ctx) { + ctx && ctx.fill(); + this.toStatic(); + }; + PathProxy.prototype.stroke = function (ctx) { + ctx && ctx.stroke(); + this.toStatic(); + }; + PathProxy.prototype.len = function () { + return this._len; + }; + PathProxy.prototype.setData = function (data) { + var len = data.length; + if (!(this.data && this.data.length === len) && hasTypedArray) { + this.data = new Float32Array(len); + } + for (var i = 0; i < len; i++) { + this.data[i] = data[i]; + } + this._len = len; + }; + PathProxy.prototype.appendPath = function (path) { + if (!(path instanceof Array)) { + path = [path]; + } + var len = path.length; + var appendSize = 0; + var offset = this._len; + for (var i = 0; i < len; i++) { + appendSize += path[i].len(); + } + if (hasTypedArray && (this.data instanceof Float32Array)) { + this.data = new Float32Array(offset + appendSize); + } + for (var i = 0; i < len; i++) { + var appendPathData = path[i].data; + for (var k = 0; k < appendPathData.length; k++) { + this.data[offset++] = appendPathData[k]; + } + } + this._len = offset; + }; + PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) { + if (!this._saveData) { + return; + } + var data = this.data; + if (this._len + arguments.length > data.length) { + this._expandData(); + data = this.data; + } + for (var i = 0; i < arguments.length; i++) { + data[this._len++] = arguments[i]; + } + }; + PathProxy.prototype._drawPendingPt = function () { + if (this._pendingPtDist > 0) { + this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY); + this._pendingPtDist = 0; + } + }; + PathProxy.prototype._expandData = function () { + if (!(this.data instanceof Array)) { + var newData = []; + for (var i = 0; i < this._len; i++) { + newData[i] = this.data[i]; + } + this.data = newData; + } + }; + PathProxy.prototype.toStatic = function () { + if (!this._saveData) { + return; + } + this._drawPendingPt(); + var data = this.data; + if (data instanceof Array) { + data.length = this._len; + if (hasTypedArray && this._len > 11) { + this.data = new Float32Array(data); + } + } + }; + PathProxy.prototype.getBoundingRect = function () { + min$1[0] = min$1[1] = min2[0] = min2[1] = Number.MAX_VALUE; + max$1[0] = max$1[1] = max2[0] = max2[1] = -Number.MAX_VALUE; + var data = this.data; + var xi = 0; + var yi = 0; + var x0 = 0; + var y0 = 0; + var i; + for (i = 0; i < this._len;) { + var cmd = data[i++]; + var isFirst = i === 1; + if (isFirst) { + xi = data[i]; + yi = data[i + 1]; + x0 = xi; + y0 = yi; + } + switch (cmd) { + case CMD.M: + xi = x0 = data[i++]; + yi = y0 = data[i++]; + min2[0] = x0; + min2[1] = y0; + max2[0] = x0; + max2[1] = y0; + break; + case CMD.L: + fromLine(xi, yi, data[i], data[i + 1], min2, max2); + xi = data[i++]; + yi = data[i++]; + break; + case CMD.C: + fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2); + xi = data[i++]; + yi = data[i++]; + break; + case CMD.Q: + fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2); + xi = data[i++]; + yi = data[i++]; + break; + case CMD.A: + var cx = data[i++]; + var cy = data[i++]; + var rx = data[i++]; + var ry = data[i++]; + var startAngle = data[i++]; + var endAngle = data[i++] + startAngle; + i += 1; + var anticlockwise = !data[i++]; + if (isFirst) { + x0 = mathCos$1(startAngle) * rx + cx; + y0 = mathSin$1(startAngle) * ry + cy; + } + fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2); + xi = mathCos$1(endAngle) * rx + cx; + yi = mathSin$1(endAngle) * ry + cy; + break; + case CMD.R: + x0 = xi = data[i++]; + y0 = yi = data[i++]; + var width = data[i++]; + var height = data[i++]; + fromLine(x0, y0, x0 + width, y0 + height, min2, max2); + break; + case CMD.Z: + xi = x0; + yi = y0; + break; + } + min(min$1, min$1, min2); + max(max$1, max$1, max2); + } + if (i === 0) { + min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0; + } + return new BoundingRect(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]); + }; + PathProxy.prototype._calculateLength = function () { + var data = this.data; + var len = this._len; + var ux = this._ux; + var uy = this._uy; + var xi = 0; + var yi = 0; + var x0 = 0; + var y0 = 0; + if (!this._pathSegLen) { + this._pathSegLen = []; + } + var pathSegLen = this._pathSegLen; + var pathTotalLen = 0; + var segCount = 0; + for (var i = 0; i < len;) { + var cmd = data[i++]; + var isFirst = i === 1; + if (isFirst) { + xi = data[i]; + yi = data[i + 1]; + x0 = xi; + y0 = yi; + } + var l = -1; + switch (cmd) { + case CMD.M: + xi = x0 = data[i++]; + yi = y0 = data[i++]; + break; + case CMD.L: { + var x2 = data[i++]; + var y2 = data[i++]; + var dx = x2 - xi; + var dy = y2 - yi; + if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) { + l = Math.sqrt(dx * dx + dy * dy); + xi = x2; + yi = y2; + } + break; + } + case CMD.C: { + var x1 = data[i++]; + var y1 = data[i++]; + var x2 = data[i++]; + var y2 = data[i++]; + var x3 = data[i++]; + var y3 = data[i++]; + l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10); + xi = x3; + yi = y3; + break; + } + case CMD.Q: { + var x1 = data[i++]; + var y1 = data[i++]; + var x2 = data[i++]; + var y2 = data[i++]; + l = quadraticLength(xi, yi, x1, y1, x2, y2, 10); + xi = x2; + yi = y2; + break; + } + case CMD.A: + var cx = data[i++]; + var cy = data[i++]; + var rx = data[i++]; + var ry = data[i++]; + var startAngle = data[i++]; + var delta = data[i++]; + var endAngle = delta + startAngle; + i += 1; + if (isFirst) { + x0 = mathCos$1(startAngle) * rx + cx; + y0 = mathSin$1(startAngle) * ry + cy; + } + l = mathMax$2(rx, ry) * mathMin$2(PI2$1, Math.abs(delta)); + xi = mathCos$1(endAngle) * rx + cx; + yi = mathSin$1(endAngle) * ry + cy; + break; + case CMD.R: { + x0 = xi = data[i++]; + y0 = yi = data[i++]; + var width = data[i++]; + var height = data[i++]; + l = width * 2 + height * 2; + break; + } + case CMD.Z: { + var dx = x0 - xi; + var dy = y0 - yi; + l = Math.sqrt(dx * dx + dy * dy); + xi = x0; + yi = y0; + break; + } + } + if (l >= 0) { + pathSegLen[segCount++] = l; + pathTotalLen += l; + } + } + this._pathLen = pathTotalLen; + return pathTotalLen; + }; + PathProxy.prototype.rebuildPath = function (ctx, percent) { + var d = this.data; + var ux = this._ux; + var uy = this._uy; + var len = this._len; + var x0; + var y0; + var xi; + var yi; + var x; + var y; + var drawPart = percent < 1; + var pathSegLen; + var pathTotalLen; + var accumLength = 0; + var segCount = 0; + var displayedLength; + var pendingPtDist = 0; + var pendingPtX; + var pendingPtY; + if (drawPart) { + if (!this._pathSegLen) { + this._calculateLength(); + } + pathSegLen = this._pathSegLen; + pathTotalLen = this._pathLen; + displayedLength = percent * pathTotalLen; + if (!displayedLength) { + return; + } + } + lo: for (var i = 0; i < len;) { + var cmd = d[i++]; + var isFirst = i === 1; + if (isFirst) { + xi = d[i]; + yi = d[i + 1]; + x0 = xi; + y0 = yi; + } + if (cmd !== CMD.L && pendingPtDist > 0) { + ctx.lineTo(pendingPtX, pendingPtY); + pendingPtDist = 0; + } + switch (cmd) { + case CMD.M: + x0 = xi = d[i++]; + y0 = yi = d[i++]; + ctx.moveTo(xi, yi); + break; + case CMD.L: { + x = d[i++]; + y = d[i++]; + var dx = mathAbs(x - xi); + var dy = mathAbs(y - yi); + if (dx > ux || dy > uy) { + if (drawPart) { + var l = pathSegLen[segCount++]; + if (accumLength + l > displayedLength) { + var t = (displayedLength - accumLength) / l; + ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t); + break lo; + } + accumLength += l; + } + ctx.lineTo(x, y); + xi = x; + yi = y; + pendingPtDist = 0; + } + else { + var d2 = dx * dx + dy * dy; + if (d2 > pendingPtDist) { + pendingPtX = x; + pendingPtY = y; + pendingPtDist = d2; + } + } + break; + } + case CMD.C: { + var x1 = d[i++]; + var y1 = d[i++]; + var x2 = d[i++]; + var y2 = d[i++]; + var x3 = d[i++]; + var y3 = d[i++]; + if (drawPart) { + var l = pathSegLen[segCount++]; + if (accumLength + l > displayedLength) { + var t = (displayedLength - accumLength) / l; + cubicSubdivide(xi, x1, x2, x3, t, tmpOutX); + cubicSubdivide(yi, y1, y2, y3, t, tmpOutY); + ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]); + break lo; + } + accumLength += l; + } + ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); + xi = x3; + yi = y3; + break; + } + case CMD.Q: { + var x1 = d[i++]; + var y1 = d[i++]; + var x2 = d[i++]; + var y2 = d[i++]; + if (drawPart) { + var l = pathSegLen[segCount++]; + if (accumLength + l > displayedLength) { + var t = (displayedLength - accumLength) / l; + quadraticSubdivide(xi, x1, x2, t, tmpOutX); + quadraticSubdivide(yi, y1, y2, t, tmpOutY); + ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]); + break lo; + } + accumLength += l; + } + ctx.quadraticCurveTo(x1, y1, x2, y2); + xi = x2; + yi = y2; + break; + } + case CMD.A: + var cx = d[i++]; + var cy = d[i++]; + var rx = d[i++]; + var ry = d[i++]; + var startAngle = d[i++]; + var delta = d[i++]; + var psi = d[i++]; + var anticlockwise = !d[i++]; + var r = (rx > ry) ? rx : ry; + var isEllipse = mathAbs(rx - ry) > 1e-3; + var endAngle = startAngle + delta; + var breakBuild = false; + if (drawPart) { + var l = pathSegLen[segCount++]; + if (accumLength + l > displayedLength) { + endAngle = startAngle + delta * (displayedLength - accumLength) / l; + breakBuild = true; + } + accumLength += l; + } + if (isEllipse && ctx.ellipse) { + ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise); + } + else { + ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise); + } + if (breakBuild) { + break lo; + } + if (isFirst) { + x0 = mathCos$1(startAngle) * rx + cx; + y0 = mathSin$1(startAngle) * ry + cy; + } + xi = mathCos$1(endAngle) * rx + cx; + yi = mathSin$1(endAngle) * ry + cy; + break; + case CMD.R: + x0 = xi = d[i]; + y0 = yi = d[i + 1]; + x = d[i++]; + y = d[i++]; + var width = d[i++]; + var height = d[i++]; + if (drawPart) { + var l = pathSegLen[segCount++]; + if (accumLength + l > displayedLength) { + var d_1 = displayedLength - accumLength; + ctx.moveTo(x, y); + ctx.lineTo(x + mathMin$2(d_1, width), y); + d_1 -= width; + if (d_1 > 0) { + ctx.lineTo(x + width, y + mathMin$2(d_1, height)); + } + d_1 -= height; + if (d_1 > 0) { + ctx.lineTo(x + mathMax$2(width - d_1, 0), y + height); + } + d_1 -= width; + if (d_1 > 0) { + ctx.lineTo(x, y + mathMax$2(height - d_1, 0)); + } + break lo; + } + accumLength += l; + } + ctx.rect(x, y, width, height); + break; + case CMD.Z: + if (drawPart) { + var l = pathSegLen[segCount++]; + if (accumLength + l > displayedLength) { + var t = (displayedLength - accumLength) / l; + ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t); + break lo; + } + accumLength += l; + } + ctx.closePath(); + xi = x0; + yi = y0; + } + } + }; + PathProxy.prototype.clone = function () { + var newProxy = new PathProxy(); + var data = this.data; + newProxy.data = data.slice ? data.slice() + : Array.prototype.slice.call(data); + newProxy._len = this._len; + return newProxy; + }; + PathProxy.CMD = CMD; + PathProxy.initDefaultProps = (function () { + var proto = PathProxy.prototype; + proto._saveData = true; + proto._ux = 0; + proto._uy = 0; + proto._pendingPtDist = 0; + proto._version = 0; + })(); + return PathProxy; + }()); + + function containStroke(x0, y0, x1, y1, lineWidth, x, y) { + if (lineWidth === 0) { + return false; + } + var _l = lineWidth; + var _a = 0; + var _b = x0; + if ((y > y0 + _l && y > y1 + _l) + || (y < y0 - _l && y < y1 - _l) + || (x > x0 + _l && x > x1 + _l) + || (x < x0 - _l && x < x1 - _l)) { + return false; + } + if (x0 !== x1) { + _a = (y0 - y1) / (x0 - x1); + _b = (x0 * y1 - x1 * y0) / (x0 - x1); + } + else { + return Math.abs(x - x0) <= _l / 2; + } + var tmp = _a * x - y + _b; + var _s = tmp * tmp / (_a * _a + 1); + return _s <= _l / 2 * _l / 2; + } + + function containStroke$1(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) { + if (lineWidth === 0) { + return false; + } + var _l = lineWidth; + if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l) + || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l) + || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l) + || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) { + return false; + } + var d = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null); + return d <= _l / 2; + } + + function containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x, y) { + if (lineWidth === 0) { + return false; + } + var _l = lineWidth; + if ((y > y0 + _l && y > y1 + _l && y > y2 + _l) + || (y < y0 - _l && y < y1 - _l && y < y2 - _l) + || (x > x0 + _l && x > x1 + _l && x > x2 + _l) + || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) { + return false; + } + var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null); + return d <= _l / 2; + } + + var PI2$2 = Math.PI * 2; + function normalizeRadian(angle) { + angle %= PI2$2; + if (angle < 0) { + angle += PI2$2; + } + return angle; + } + + var PI2$3 = Math.PI * 2; + function containStroke$3(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) { + if (lineWidth === 0) { + return false; + } + var _l = lineWidth; + x -= cx; + y -= cy; + var d = Math.sqrt(x * x + y * y); + if ((d - _l > r) || (d + _l < r)) { + return false; + } + if (Math.abs(startAngle - endAngle) % PI2$3 < 1e-4) { + return true; + } + if (anticlockwise) { + var tmp = startAngle; + startAngle = normalizeRadian(endAngle); + endAngle = normalizeRadian(tmp); + } + else { + startAngle = normalizeRadian(startAngle); + endAngle = normalizeRadian(endAngle); + } + if (startAngle > endAngle) { + endAngle += PI2$3; + } + var angle = Math.atan2(y, x); + if (angle < 0) { + angle += PI2$3; + } + return (angle >= startAngle && angle <= endAngle) + || (angle + PI2$3 >= startAngle && angle + PI2$3 <= endAngle); + } + + function windingLine(x0, y0, x1, y1, x, y) { + if ((y > y0 && y > y1) || (y < y0 && y < y1)) { + return 0; + } + if (y1 === y0) { + return 0; + } + var t = (y - y0) / (y1 - y0); + var dir = y1 < y0 ? 1 : -1; + if (t === 1 || t === 0) { + dir = y1 < y0 ? 0.5 : -0.5; + } + var x_ = t * (x1 - x0) + x0; + return x_ === x ? Infinity : x_ > x ? dir : 0; + } + + var CMD$1 = PathProxy.CMD; + var PI2$4 = Math.PI * 2; + var EPSILON$3 = 1e-4; + function isAroundEqual(a, b) { + return Math.abs(a - b) < EPSILON$3; + } + var roots = [-1, -1, -1]; + var extrema = [-1, -1]; + function swapExtrema() { + var tmp = extrema[0]; + extrema[0] = extrema[1]; + extrema[1] = tmp; + } + function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) { + if ((y > y0 && y > y1 && y > y2 && y > y3) + || (y < y0 && y < y1 && y < y2 && y < y3)) { + return 0; + } + var nRoots = cubicRootAt(y0, y1, y2, y3, y, roots); + if (nRoots === 0) { + return 0; + } + else { + var w = 0; + var nExtrema = -1; + var y0_ = void 0; + var y1_ = void 0; + for (var i = 0; i < nRoots; i++) { + var t = roots[i]; + var unit = (t === 0 || t === 1) ? 0.5 : 1; + var x_ = cubicAt(x0, x1, x2, x3, t); + if (x_ < x) { + continue; + } + if (nExtrema < 0) { + nExtrema = cubicExtrema(y0, y1, y2, y3, extrema); + if (extrema[1] < extrema[0] && nExtrema > 1) { + swapExtrema(); + } + y0_ = cubicAt(y0, y1, y2, y3, extrema[0]); + if (nExtrema > 1) { + y1_ = cubicAt(y0, y1, y2, y3, extrema[1]); + } + } + if (nExtrema === 2) { + if (t < extrema[0]) { + w += y0_ < y0 ? unit : -unit; + } + else if (t < extrema[1]) { + w += y1_ < y0_ ? unit : -unit; + } + else { + w += y3 < y1_ ? unit : -unit; + } + } + else { + if (t < extrema[0]) { + w += y0_ < y0 ? unit : -unit; + } + else { + w += y3 < y0_ ? unit : -unit; + } + } + } + return w; + } + } + function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) { + if ((y > y0 && y > y1 && y > y2) + || (y < y0 && y < y1 && y < y2)) { + return 0; + } + var nRoots = quadraticRootAt(y0, y1, y2, y, roots); + if (nRoots === 0) { + return 0; + } + else { + var t = quadraticExtremum(y0, y1, y2); + if (t >= 0 && t <= 1) { + var w = 0; + var y_ = quadraticAt(y0, y1, y2, t); + for (var i = 0; i < nRoots; i++) { + var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1; + var x_ = quadraticAt(x0, x1, x2, roots[i]); + if (x_ < x) { + continue; + } + if (roots[i] < t) { + w += y_ < y0 ? unit : -unit; + } + else { + w += y2 < y_ ? unit : -unit; + } + } + return w; + } + else { + var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1; + var x_ = quadraticAt(x0, x1, x2, roots[0]); + if (x_ < x) { + return 0; + } + return y2 < y0 ? unit : -unit; + } + } + } + function windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) { + y -= cy; + if (y > r || y < -r) { + return 0; + } + var tmp = Math.sqrt(r * r - y * y); + roots[0] = -tmp; + roots[1] = tmp; + var dTheta = Math.abs(startAngle - endAngle); + if (dTheta < 1e-4) { + return 0; + } + if (dTheta >= PI2$4 - 1e-4) { + startAngle = 0; + endAngle = PI2$4; + var dir = anticlockwise ? 1 : -1; + if (x >= roots[0] + cx && x <= roots[1] + cx) { + return dir; + } + else { + return 0; + } + } + if (startAngle > endAngle) { + var tmp_1 = startAngle; + startAngle = endAngle; + endAngle = tmp_1; + } + if (startAngle < 0) { + startAngle += PI2$4; + endAngle += PI2$4; + } + var w = 0; + for (var i = 0; i < 2; i++) { + var x_ = roots[i]; + if (x_ + cx > x) { + var angle = Math.atan2(y, x_); + var dir = anticlockwise ? 1 : -1; + if (angle < 0) { + angle = PI2$4 + angle; + } + if ((angle >= startAngle && angle <= endAngle) + || (angle + PI2$4 >= startAngle && angle + PI2$4 <= endAngle)) { + if (angle > Math.PI / 2 && angle < Math.PI * 1.5) { + dir = -dir; + } + w += dir; + } + } + } + return w; + } + function containPath(path, lineWidth, isStroke, x, y) { + var data = path.data; + var len = path.len(); + var w = 0; + var xi = 0; + var yi = 0; + var x0 = 0; + var y0 = 0; + var x1; + var y1; + for (var i = 0; i < len;) { + var cmd = data[i++]; + var isFirst = i === 1; + if (cmd === CMD$1.M && i > 1) { + if (!isStroke) { + w += windingLine(xi, yi, x0, y0, x, y); + } + } + if (isFirst) { + xi = data[i]; + yi = data[i + 1]; + x0 = xi; + y0 = yi; + } + switch (cmd) { + case CMD$1.M: + x0 = data[i++]; + y0 = data[i++]; + xi = x0; + yi = y0; + break; + case CMD$1.L: + if (isStroke) { + if (containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) { + return true; + } + } + else { + w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0; + } + xi = data[i++]; + yi = data[i++]; + break; + case CMD$1.C: + if (isStroke) { + if (containStroke$1(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) { + return true; + } + } + else { + w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0; + } + xi = data[i++]; + yi = data[i++]; + break; + case CMD$1.Q: + if (isStroke) { + if (containStroke$2(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) { + return true; + } + } + else { + w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0; + } + xi = data[i++]; + yi = data[i++]; + break; + case CMD$1.A: + var cx = data[i++]; + var cy = data[i++]; + var rx = data[i++]; + var ry = data[i++]; + var theta = data[i++]; + var dTheta = data[i++]; + i += 1; + var anticlockwise = !!(1 - data[i++]); + x1 = Math.cos(theta) * rx + cx; + y1 = Math.sin(theta) * ry + cy; + if (!isFirst) { + w += windingLine(xi, yi, x1, y1, x, y); + } + else { + x0 = x1; + y0 = y1; + } + var _x = (x - cx) * ry / rx + cx; + if (isStroke) { + if (containStroke$3(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) { + return true; + } + } + else { + w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y); + } + xi = Math.cos(theta + dTheta) * rx + cx; + yi = Math.sin(theta + dTheta) * ry + cy; + break; + case CMD$1.R: + x0 = xi = data[i++]; + y0 = yi = data[i++]; + var width = data[i++]; + var height = data[i++]; + x1 = x0 + width; + y1 = y0 + height; + if (isStroke) { + if (containStroke(x0, y0, x1, y0, lineWidth, x, y) + || containStroke(x1, y0, x1, y1, lineWidth, x, y) + || containStroke(x1, y1, x0, y1, lineWidth, x, y) + || containStroke(x0, y1, x0, y0, lineWidth, x, y)) { + return true; + } + } + else { + w += windingLine(x1, y0, x1, y1, x, y); + w += windingLine(x0, y1, x0, y0, x, y); + } + break; + case CMD$1.Z: + if (isStroke) { + if (containStroke(xi, yi, x0, y0, lineWidth, x, y)) { + return true; + } + } + else { + w += windingLine(xi, yi, x0, y0, x, y); + } + xi = x0; + yi = y0; + break; + } + } + if (!isStroke && !isAroundEqual(yi, y0)) { + w += windingLine(xi, yi, x0, y0, x, y) || 0; + } + return w !== 0; + } + function contain(pathProxy, x, y) { + return containPath(pathProxy, 0, false, x, y); + } + function containStroke$4(pathProxy, lineWidth, x, y) { + return containPath(pathProxy, lineWidth, true, x, y); + } + + var DEFAULT_PATH_STYLE = defaults({ + fill: '#000', + stroke: null, + strokePercent: 1, + fillOpacity: 1, + strokeOpacity: 1, + lineDashOffset: 0, + lineWidth: 1, + lineCap: 'butt', + miterLimit: 10, + strokeNoScale: false, + strokeFirst: false + }, DEFAULT_COMMON_STYLE); + var DEFAULT_PATH_ANIMATION_PROPS = { + style: defaults({ + fill: true, + stroke: true, + strokePercent: true, + fillOpacity: true, + strokeOpacity: true, + lineDashOffset: true, + lineWidth: true, + miterLimit: true + }, DEFAULT_COMMON_ANIMATION_PROPS.style) + }; + var pathCopyParams = TRANSFORMABLE_PROPS.concat(['invisible', + 'culling', 'z', 'z2', 'zlevel', 'parent' + ]); + var Path = (function (_super) { + __extends(Path, _super); + function Path(opts) { + return _super.call(this, opts) || this; + } + Path.prototype.update = function () { + var _this = this; + _super.prototype.update.call(this); + var style = this.style; + if (style.decal) { + var decalEl = this._decalEl = this._decalEl || new Path(); + if (decalEl.buildPath === Path.prototype.buildPath) { + decalEl.buildPath = function (ctx) { + _this.buildPath(ctx, _this.shape); + }; + } + decalEl.silent = true; + var decalElStyle = decalEl.style; + for (var key in style) { + if (decalElStyle[key] !== style[key]) { + decalElStyle[key] = style[key]; + } + } + decalElStyle.fill = style.fill ? style.decal : null; + decalElStyle.decal = null; + decalElStyle.shadowColor = null; + style.strokeFirst && (decalElStyle.stroke = null); + for (var i = 0; i < pathCopyParams.length; ++i) { + decalEl[pathCopyParams[i]] = this[pathCopyParams[i]]; + } + decalEl.__dirty |= REDRAW_BIT; + } + else if (this._decalEl) { + this._decalEl = null; + } + }; + Path.prototype.getDecalElement = function () { + return this._decalEl; + }; + Path.prototype._init = function (props) { + var keysArr = keys(props); + this.shape = this.getDefaultShape(); + var defaultStyle = this.getDefaultStyle(); + if (defaultStyle) { + this.useStyle(defaultStyle); + } + for (var i = 0; i < keysArr.length; i++) { + var key = keysArr[i]; + var value = props[key]; + if (key === 'style') { + if (!this.style) { + this.useStyle(value); + } + else { + extend(this.style, value); + } + } + else if (key === 'shape') { + extend(this.shape, value); + } + else { + _super.prototype.attrKV.call(this, key, value); + } + } + if (!this.style) { + this.useStyle({}); + } + }; + Path.prototype.getDefaultStyle = function () { + return null; + }; + Path.prototype.getDefaultShape = function () { + return {}; + }; + Path.prototype.canBeInsideText = function () { + return this.hasFill(); + }; + Path.prototype.getInsideTextFill = function () { + var pathFill = this.style.fill; + if (pathFill !== 'none') { + if (isString(pathFill)) { + var fillLum = lum(pathFill, 0); + if (fillLum > 0.5) { + return DARK_LABEL_COLOR; + } + else if (fillLum > 0.2) { + return LIGHTER_LABEL_COLOR; + } + return LIGHT_LABEL_COLOR; + } + else if (pathFill) { + return LIGHT_LABEL_COLOR; + } + } + return DARK_LABEL_COLOR; + }; + Path.prototype.getInsideTextStroke = function (textFill) { + var pathFill = this.style.fill; + if (isString(pathFill)) { + var zr = this.__zr; + var isDarkMode = !!(zr && zr.isDarkMode()); + var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD; + if (isDarkMode === isDarkLabel) { + return pathFill; + } + } + }; + Path.prototype.buildPath = function (ctx, shapeCfg, inBatch) { }; + Path.prototype.pathUpdated = function () { + this.__dirty &= ~SHAPE_CHANGED_BIT; + }; + Path.prototype.getUpdatedPathProxy = function (inBatch) { + !this.path && this.createPathProxy(); + this.path.beginPath(); + this.buildPath(this.path, this.shape, inBatch); + return this.path; + }; + Path.prototype.createPathProxy = function () { + this.path = new PathProxy(false); + }; + Path.prototype.hasStroke = function () { + var style = this.style; + var stroke = style.stroke; + return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0)); + }; + Path.prototype.hasFill = function () { + var style = this.style; + var fill = style.fill; + return fill != null && fill !== 'none'; + }; + Path.prototype.getBoundingRect = function () { + var rect = this._rect; + var style = this.style; + var needsUpdateRect = !rect; + if (needsUpdateRect) { + var firstInvoke = false; + if (!this.path) { + firstInvoke = true; + this.createPathProxy(); + } + var path = this.path; + if (firstInvoke || (this.__dirty & SHAPE_CHANGED_BIT)) { + path.beginPath(); + this.buildPath(path, this.shape, false); + this.pathUpdated(); + } + rect = path.getBoundingRect(); + } + this._rect = rect; + if (this.hasStroke() && this.path && this.path.len() > 0) { + var rectStroke = this._rectStroke || (this._rectStroke = rect.clone()); + if (this.__dirty || needsUpdateRect) { + rectStroke.copy(rect); + var lineScale = style.strokeNoScale ? this.getLineScale() : 1; + var w = style.lineWidth; + if (!this.hasFill()) { + var strokeContainThreshold = this.strokeContainThreshold; + w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold); + } + if (lineScale > 1e-10) { + rectStroke.width += w / lineScale; + rectStroke.height += w / lineScale; + rectStroke.x -= w / lineScale / 2; + rectStroke.y -= w / lineScale / 2; + } + } + return rectStroke; + } + return rect; + }; + Path.prototype.contain = function (x, y) { + var localPos = this.transformCoordToLocal(x, y); + var rect = this.getBoundingRect(); + var style = this.style; + x = localPos[0]; + y = localPos[1]; + if (rect.contain(x, y)) { + var pathProxy = this.path; + if (this.hasStroke()) { + var lineWidth = style.lineWidth; + var lineScale = style.strokeNoScale ? this.getLineScale() : 1; + if (lineScale > 1e-10) { + if (!this.hasFill()) { + lineWidth = Math.max(lineWidth, this.strokeContainThreshold); + } + if (containStroke$4(pathProxy, lineWidth / lineScale, x, y)) { + return true; + } + } + } + if (this.hasFill()) { + return contain(pathProxy, x, y); + } + } + return false; + }; + Path.prototype.dirtyShape = function () { + this.__dirty |= SHAPE_CHANGED_BIT; + if (this._rect) { + this._rect = null; + } + if (this._decalEl) { + this._decalEl.dirtyShape(); + } + this.markRedraw(); + }; + Path.prototype.dirty = function () { + this.dirtyStyle(); + this.dirtyShape(); + }; + Path.prototype.animateShape = function (loop) { + return this.animate('shape', loop); + }; + Path.prototype.updateDuringAnimation = function (targetKey) { + if (targetKey === 'style') { + this.dirtyStyle(); + } + else if (targetKey === 'shape') { + this.dirtyShape(); + } + else { + this.markRedraw(); + } + }; + Path.prototype.attrKV = function (key, value) { + if (key === 'shape') { + this.setShape(value); + } + else { + _super.prototype.attrKV.call(this, key, value); + } + }; + Path.prototype.setShape = function (keyOrObj, value) { + var shape = this.shape; + if (!shape) { + shape = this.shape = {}; + } + if (typeof keyOrObj === 'string') { + shape[keyOrObj] = value; + } + else { + extend(shape, keyOrObj); + } + this.dirtyShape(); + return this; + }; + Path.prototype.shapeChanged = function () { + return !!(this.__dirty & SHAPE_CHANGED_BIT); + }; + Path.prototype.createStyle = function (obj) { + return createObject(DEFAULT_PATH_STYLE, obj); + }; + Path.prototype._innerSaveToNormal = function (toState) { + _super.prototype._innerSaveToNormal.call(this, toState); + var normalState = this._normalState; + if (toState.shape && !normalState.shape) { + normalState.shape = extend({}, this.shape); + } + }; + Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) { + _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg); + var needsRestoreToNormal = !(state && keepCurrentStates); + var targetShape; + if (state && state.shape) { + if (transition) { + if (keepCurrentStates) { + targetShape = state.shape; + } + else { + targetShape = extend({}, normalState.shape); + extend(targetShape, state.shape); + } + } + else { + targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape); + extend(targetShape, state.shape); + } + } + else if (needsRestoreToNormal) { + targetShape = normalState.shape; + } + if (targetShape) { + if (transition) { + this.shape = extend({}, this.shape); + var targetShapePrimaryProps = {}; + var shapeKeys = keys(targetShape); + for (var i = 0; i < shapeKeys.length; i++) { + var key = shapeKeys[i]; + if (typeof targetShape[key] === 'object') { + this.shape[key] = targetShape[key]; + } + else { + targetShapePrimaryProps[key] = targetShape[key]; + } + } + this._transitionState(stateName, { + shape: targetShapePrimaryProps + }, animationCfg); + } + else { + this.shape = targetShape; + this.dirtyShape(); + } + } + }; + Path.prototype._mergeStates = function (states) { + var mergedState = _super.prototype._mergeStates.call(this, states); + var mergedShape; + for (var i = 0; i < states.length; i++) { + var state = states[i]; + if (state.shape) { + mergedShape = mergedShape || {}; + this._mergeStyle(mergedShape, state.shape); + } + } + if (mergedShape) { + mergedState.shape = mergedShape; + } + return mergedState; + }; + Path.prototype.getAnimationStyleProps = function () { + return DEFAULT_PATH_ANIMATION_PROPS; + }; + Path.prototype.isZeroArea = function () { + return false; + }; + Path.extend = function (defaultProps) { + var Sub = (function (_super) { + __extends(Sub, _super); + function Sub(opts) { + var _this = _super.call(this, opts) || this; + defaultProps.init && defaultProps.init.call(_this, opts); + return _this; + } + Sub.prototype.getDefaultStyle = function () { + return clone(defaultProps.style); + }; + Sub.prototype.getDefaultShape = function () { + return clone(defaultProps.shape); + }; + return Sub; + }(Path)); + for (var key in defaultProps) { + if (typeof defaultProps[key] === 'function') { + Sub.prototype[key] = defaultProps[key]; + } + } + return Sub; + }; + Path.initDefaultProps = (function () { + var pathProto = Path.prototype; + pathProto.type = 'path'; + pathProto.strokeContainThreshold = 5; + pathProto.segmentIgnoreThreshold = 0; + pathProto.subPixelOptimize = false; + pathProto.autoBatch = false; + pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT; + })(); + return Path; + }(Displayable)); + + var DEFAULT_TSPAN_STYLE = defaults({ + strokeFirst: true, + font: DEFAULT_FONT, + x: 0, + y: 0, + textAlign: 'left', + textBaseline: 'top', + miterLimit: 2 + }, DEFAULT_PATH_STYLE); + var TSpan = (function (_super) { + __extends(TSpan, _super); + function TSpan() { + return _super !== null && _super.apply(this, arguments) || this; + } + TSpan.prototype.hasStroke = function () { + var style = this.style; + var stroke = style.stroke; + return stroke != null && stroke !== 'none' && style.lineWidth > 0; + }; + TSpan.prototype.hasFill = function () { + var style = this.style; + var fill = style.fill; + return fill != null && fill !== 'none'; + }; + TSpan.prototype.createStyle = function (obj) { + return createObject(DEFAULT_TSPAN_STYLE, obj); + }; + TSpan.prototype.setBoundingRect = function (rect) { + this._rect = rect; + }; + TSpan.prototype.getBoundingRect = function () { + var style = this.style; + if (!this._rect) { + var text = style.text; + text != null ? (text += '') : (text = ''); + var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline); + rect.x += style.x || 0; + rect.y += style.y || 0; + if (this.hasStroke()) { + var w = style.lineWidth; + rect.x -= w / 2; + rect.y -= w / 2; + rect.width += w; + rect.height += w; + } + this._rect = rect; + } + return this._rect; + }; + TSpan.initDefaultProps = (function () { + var tspanProto = TSpan.prototype; + tspanProto.dirtyRectTolerance = 10; + })(); + return TSpan; + }(Displayable)); + TSpan.prototype.type = 'tspan'; + + var DEFAULT_IMAGE_STYLE = defaults({ + x: 0, + y: 0 + }, DEFAULT_COMMON_STYLE); + var DEFAULT_IMAGE_ANIMATION_PROPS = { + style: defaults({ + x: true, + y: true, + width: true, + height: true, + sx: true, + sy: true, + sWidth: true, + sHeight: true + }, DEFAULT_COMMON_ANIMATION_PROPS.style) + }; + function isImageLike(source) { + return !!(source + && typeof source !== 'string' + && source.width && source.height); + } + var ZRImage = (function (_super) { + __extends(ZRImage, _super); + function ZRImage() { + return _super !== null && _super.apply(this, arguments) || this; + } + ZRImage.prototype.createStyle = function (obj) { + return createObject(DEFAULT_IMAGE_STYLE, obj); + }; + ZRImage.prototype._getSize = function (dim) { + var style = this.style; + var size = style[dim]; + if (size != null) { + return size; + } + var imageSource = isImageLike(style.image) + ? style.image : this.__image; + if (!imageSource) { + return 0; + } + var otherDim = dim === 'width' ? 'height' : 'width'; + var otherDimSize = style[otherDim]; + if (otherDimSize == null) { + return imageSource[dim]; + } + else { + return imageSource[dim] / imageSource[otherDim] * otherDimSize; + } + }; + ZRImage.prototype.getWidth = function () { + return this._getSize('width'); + }; + ZRImage.prototype.getHeight = function () { + return this._getSize('height'); + }; + ZRImage.prototype.getAnimationStyleProps = function () { + return DEFAULT_IMAGE_ANIMATION_PROPS; + }; + ZRImage.prototype.getBoundingRect = function () { + var style = this.style; + if (!this._rect) { + this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight()); + } + return this._rect; + }; + return ZRImage; + }(Displayable)); + ZRImage.prototype.type = 'image'; + + function buildPath(ctx, shape) { + var x = shape.x; + var y = shape.y; + var width = shape.width; + var height = shape.height; + var r = shape.r; + var r1; + var r2; + var r3; + var r4; + if (width < 0) { + x = x + width; + width = -width; + } + if (height < 0) { + y = y + height; + height = -height; + } + if (typeof r === 'number') { + r1 = r2 = r3 = r4 = r; + } + else if (r instanceof Array) { + if (r.length === 1) { + r1 = r2 = r3 = r4 = r[0]; + } + else if (r.length === 2) { + r1 = r3 = r[0]; + r2 = r4 = r[1]; + } + else if (r.length === 3) { + r1 = r[0]; + r2 = r4 = r[1]; + r3 = r[2]; + } + else { + r1 = r[0]; + r2 = r[1]; + r3 = r[2]; + r4 = r[3]; + } + } + else { + r1 = r2 = r3 = r4 = 0; + } + var total; + if (r1 + r2 > width) { + total = r1 + r2; + r1 *= width / total; + r2 *= width / total; + } + if (r3 + r4 > width) { + total = r3 + r4; + r3 *= width / total; + r4 *= width / total; + } + if (r2 + r3 > height) { + total = r2 + r3; + r2 *= height / total; + r3 *= height / total; + } + if (r1 + r4 > height) { + total = r1 + r4; + r1 *= height / total; + r4 *= height / total; + } + ctx.moveTo(x + r1, y); + ctx.lineTo(x + width - r2, y); + r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0); + ctx.lineTo(x + width, y + height - r3); + r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2); + ctx.lineTo(x + r4, y + height); + r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI); + ctx.lineTo(x, y + r1); + r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5); + } + + var round$1 = Math.round; + function subPixelOptimizeLine(outputShape, inputShape, style) { + if (!inputShape) { + return; + } + var x1 = inputShape.x1; + var x2 = inputShape.x2; + var y1 = inputShape.y1; + var y2 = inputShape.y2; + outputShape.x1 = x1; + outputShape.x2 = x2; + outputShape.y1 = y1; + outputShape.y2 = y2; + var lineWidth = style && style.lineWidth; + if (!lineWidth) { + return outputShape; + } + if (round$1(x1 * 2) === round$1(x2 * 2)) { + outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true); + } + if (round$1(y1 * 2) === round$1(y2 * 2)) { + outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true); + } + return outputShape; + } + function subPixelOptimizeRect(outputShape, inputShape, style) { + if (!inputShape) { + return; + } + var originX = inputShape.x; + var originY = inputShape.y; + var originWidth = inputShape.width; + var originHeight = inputShape.height; + outputShape.x = originX; + outputShape.y = originY; + outputShape.width = originWidth; + outputShape.height = originHeight; + var lineWidth = style && style.lineWidth; + if (!lineWidth) { + return outputShape; + } + outputShape.x = subPixelOptimize(originX, lineWidth, true); + outputShape.y = subPixelOptimize(originY, lineWidth, true); + outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1); + outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1); + return outputShape; + } + function subPixelOptimize(position, lineWidth, positiveOrNegative) { + if (!lineWidth) { + return position; + } + var doubledPosition = round$1(position * 2); + return (doubledPosition + round$1(lineWidth)) % 2 === 0 + ? doubledPosition / 2 + : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2; + } + + var RectShape = (function () { + function RectShape() { + this.x = 0; + this.y = 0; + this.width = 0; + this.height = 0; + } + return RectShape; + }()); + var subPixelOptimizeOutputShape = {}; + var Rect = (function (_super) { + __extends(Rect, _super); + function Rect(opts) { + return _super.call(this, opts) || this; + } + Rect.prototype.getDefaultShape = function () { + return new RectShape(); + }; + Rect.prototype.buildPath = function (ctx, shape) { + var x; + var y; + var width; + var height; + if (this.subPixelOptimize) { + var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style); + x = optimizedShape.x; + y = optimizedShape.y; + width = optimizedShape.width; + height = optimizedShape.height; + optimizedShape.r = shape.r; + shape = optimizedShape; + } + else { + x = shape.x; + y = shape.y; + width = shape.width; + height = shape.height; + } + if (!shape.r) { + ctx.rect(x, y, width, height); + } + else { + buildPath(ctx, shape); + } + }; + Rect.prototype.isZeroArea = function () { + return !this.shape.width || !this.shape.height; + }; + return Rect; + }(Path)); + Rect.prototype.type = 'rect'; + + var DEFAULT_RICH_TEXT_COLOR = { + fill: '#000' + }; + var DEFAULT_STROKE_LINE_WIDTH = 2; + var DEFAULT_TEXT_ANIMATION_PROPS = { + style: defaults({ + fill: true, + stroke: true, + fillOpacity: true, + strokeOpacity: true, + lineWidth: true, + fontSize: true, + lineHeight: true, + width: true, + height: true, + textShadowColor: true, + textShadowBlur: true, + textShadowOffsetX: true, + textShadowOffsetY: true, + backgroundColor: true, + padding: true, + borderColor: true, + borderWidth: true, + borderRadius: true + }, DEFAULT_COMMON_ANIMATION_PROPS.style) + }; + var ZRText = (function (_super) { + __extends(ZRText, _super); + function ZRText(opts) { + var _this = _super.call(this) || this; + _this.type = 'text'; + _this._children = []; + _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR; + _this.attr(opts); + return _this; + } + ZRText.prototype.childrenRef = function () { + return this._children; + }; + ZRText.prototype.update = function () { + _super.prototype.update.call(this); + if (this.styleChanged()) { + this._updateSubTexts(); + } + for (var i = 0; i < this._children.length; i++) { + var child = this._children[i]; + child.zlevel = this.zlevel; + child.z = this.z; + child.z2 = this.z2; + child.culling = this.culling; + child.cursor = this.cursor; + child.invisible = this.invisible; + } + }; + ZRText.prototype.updateTransform = function () { + var innerTransformable = this.innerTransformable; + if (innerTransformable) { + innerTransformable.updateTransform(); + if (innerTransformable.transform) { + this.transform = innerTransformable.transform; + } + } + else { + _super.prototype.updateTransform.call(this); + } + }; + ZRText.prototype.getLocalTransform = function (m) { + var innerTransformable = this.innerTransformable; + return innerTransformable + ? innerTransformable.getLocalTransform(m) + : _super.prototype.getLocalTransform.call(this, m); + }; + ZRText.prototype.getComputedTransform = function () { + if (this.__hostTarget) { + this.__hostTarget.getComputedTransform(); + this.__hostTarget.updateInnerText(true); + } + return _super.prototype.getComputedTransform.call(this); + }; + ZRText.prototype._updateSubTexts = function () { + this._childCursor = 0; + normalizeTextStyle(this.style); + this.style.rich + ? this._updateRichTexts() + : this._updatePlainTexts(); + this._children.length = this._childCursor; + this.styleUpdated(); + }; + ZRText.prototype.addSelfToZr = function (zr) { + _super.prototype.addSelfToZr.call(this, zr); + for (var i = 0; i < this._children.length; i++) { + this._children[i].__zr = zr; + } + }; + ZRText.prototype.removeSelfFromZr = function (zr) { + _super.prototype.removeSelfFromZr.call(this, zr); + for (var i = 0; i < this._children.length; i++) { + this._children[i].__zr = null; + } + }; + ZRText.prototype.getBoundingRect = function () { + if (this.styleChanged()) { + this._updateSubTexts(); + } + if (!this._rect) { + var tmpRect = new BoundingRect(0, 0, 0, 0); + var children = this._children; + var tmpMat = []; + var rect = null; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + var childRect = child.getBoundingRect(); + var transform = child.getLocalTransform(tmpMat); + if (transform) { + tmpRect.copy(childRect); + tmpRect.applyTransform(transform); + rect = rect || tmpRect.clone(); + rect.union(tmpRect); + } + else { + rect = rect || childRect.clone(); + rect.union(childRect); + } + } + this._rect = rect || tmpRect; + } + return this._rect; + }; + ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) { + this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR; + }; + ZRText.prototype.setTextContent = function (textContent) { + if ("development" !== 'production') { + throw new Error('Can\'t attach text on another text'); + } + }; + ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) { + if (!sourceStyle) { + return targetStyle; + } + var sourceRich = sourceStyle.rich; + var targetRich = targetStyle.rich || (sourceRich && {}); + extend(targetStyle, sourceStyle); + if (sourceRich && targetRich) { + this._mergeRich(targetRich, sourceRich); + targetStyle.rich = targetRich; + } + else if (targetRich) { + targetStyle.rich = targetRich; + } + return targetStyle; + }; + ZRText.prototype._mergeRich = function (targetRich, sourceRich) { + var richNames = keys(sourceRich); + for (var i = 0; i < richNames.length; i++) { + var richName = richNames[i]; + targetRich[richName] = targetRich[richName] || {}; + extend(targetRich[richName], sourceRich[richName]); + } + }; + ZRText.prototype.getAnimationStyleProps = function () { + return DEFAULT_TEXT_ANIMATION_PROPS; + }; + ZRText.prototype._getOrCreateChild = function (Ctor) { + var child = this._children[this._childCursor]; + if (!child || !(child instanceof Ctor)) { + child = new Ctor(); + } + this._children[this._childCursor++] = child; + child.__zr = this.__zr; + child.parent = this; + return child; + }; + ZRText.prototype._updatePlainTexts = function () { + var style = this.style; + var textFont = style.font || DEFAULT_FONT; + var textPadding = style.padding; + var text = getStyleText(style); + var contentBlock = parsePlainText(text, style); + var needDrawBg = needDrawBackground(style); + var bgColorDrawn = !!(style.backgroundColor); + var outerHeight = contentBlock.outerHeight; + var outerWidth = contentBlock.outerWidth; + var contentWidth = contentBlock.contentWidth; + var textLines = contentBlock.lines; + var lineHeight = contentBlock.lineHeight; + var defaultStyle = this._defaultStyle; + var baseX = style.x || 0; + var baseY = style.y || 0; + var textAlign = style.align || defaultStyle.align || 'left'; + var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top'; + var textX = baseX; + var textY = adjustTextY$1(baseY, contentBlock.contentHeight, verticalAlign); + if (needDrawBg || textPadding) { + var boxX = adjustTextX(baseX, outerWidth, textAlign); + var boxY = adjustTextY$1(baseY, outerHeight, verticalAlign); + needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight); + } + textY += lineHeight / 2; + if (textPadding) { + textX = getTextXForPadding(baseX, textAlign, textPadding); + if (verticalAlign === 'top') { + textY += textPadding[0]; + } + else if (verticalAlign === 'bottom') { + textY -= textPadding[2]; + } + } + var defaultLineWidth = 0; + var useDefaultFill = false; + var textFill = getFill('fill' in style + ? style.fill + : (useDefaultFill = true, defaultStyle.fill)); + var textStroke = getStroke('stroke' in style + ? style.stroke + : (!bgColorDrawn + && (!defaultStyle.autoStroke || useDefaultFill)) + ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) + : null); + var hasShadow = style.textShadowBlur > 0; + var fixedBoundingRect = style.width != null + && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll'); + var calculatedLineHeight = contentBlock.calculatedLineHeight; + for (var i = 0; i < textLines.length; i++) { + var el = this._getOrCreateChild(TSpan); + var subElStyle = el.createStyle(); + el.useStyle(subElStyle); + subElStyle.text = textLines[i]; + subElStyle.x = textX; + subElStyle.y = textY; + if (textAlign) { + subElStyle.textAlign = textAlign; + } + subElStyle.textBaseline = 'middle'; + subElStyle.opacity = style.opacity; + subElStyle.strokeFirst = true; + if (hasShadow) { + subElStyle.shadowBlur = style.textShadowBlur || 0; + subElStyle.shadowColor = style.textShadowColor || 'transparent'; + subElStyle.shadowOffsetX = style.textShadowOffsetX || 0; + subElStyle.shadowOffsetY = style.textShadowOffsetY || 0; + } + subElStyle.stroke = textStroke; + subElStyle.fill = textFill; + if (textStroke) { + subElStyle.lineWidth = style.lineWidth || defaultLineWidth; + subElStyle.lineDash = style.lineDash; + subElStyle.lineDashOffset = style.lineDashOffset || 0; + } + subElStyle.font = textFont; + setSeparateFont(subElStyle, style); + textY += lineHeight; + if (fixedBoundingRect) { + el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY$1(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), contentWidth, calculatedLineHeight)); + } + } + }; + ZRText.prototype._updateRichTexts = function () { + var style = this.style; + var text = getStyleText(style); + var contentBlock = parseRichText(text, style); + var contentWidth = contentBlock.width; + var outerWidth = contentBlock.outerWidth; + var outerHeight = contentBlock.outerHeight; + var textPadding = style.padding; + var baseX = style.x || 0; + var baseY = style.y || 0; + var defaultStyle = this._defaultStyle; + var textAlign = style.align || defaultStyle.align; + var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign; + var boxX = adjustTextX(baseX, outerWidth, textAlign); + var boxY = adjustTextY$1(baseY, outerHeight, verticalAlign); + var xLeft = boxX; + var lineTop = boxY; + if (textPadding) { + xLeft += textPadding[3]; + lineTop += textPadding[0]; + } + var xRight = xLeft + contentWidth; + if (needDrawBackground(style)) { + this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight); + } + var bgColorDrawn = !!(style.backgroundColor); + for (var i = 0; i < contentBlock.lines.length; i++) { + var line = contentBlock.lines[i]; + var tokens = line.tokens; + var tokenCount = tokens.length; + var lineHeight = line.lineHeight; + var remainedWidth = line.width; + var leftIndex = 0; + var lineXLeft = xLeft; + var lineXRight = xRight; + var rightIndex = tokenCount - 1; + var token = void 0; + while (leftIndex < tokenCount + && (token = tokens[leftIndex], !token.align || token.align === 'left')) { + this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn); + remainedWidth -= token.width; + lineXLeft += token.width; + leftIndex++; + } + while (rightIndex >= 0 + && (token = tokens[rightIndex], token.align === 'right')) { + this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn); + remainedWidth -= token.width; + lineXRight -= token.width; + rightIndex--; + } + lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2; + while (leftIndex <= rightIndex) { + token = tokens[leftIndex]; + this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn); + lineXLeft += token.width; + leftIndex++; + } + lineTop += lineHeight; + } + }; + ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) { + var tokenStyle = style.rich[token.styleName] || {}; + tokenStyle.text = token.text; + var verticalAlign = token.verticalAlign; + var y = lineTop + lineHeight / 2; + if (verticalAlign === 'top') { + y = lineTop + token.height / 2; + } + else if (verticalAlign === 'bottom') { + y = lineTop + lineHeight - token.height / 2; + } + var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle); + needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right' + ? x - token.width + : textAlign === 'center' + ? x - token.width / 2 + : x, y - token.height / 2, token.width, token.height); + var bgColorDrawn = !!tokenStyle.backgroundColor; + var textPadding = token.textPadding; + if (textPadding) { + x = getTextXForPadding(x, textAlign, textPadding); + y -= token.height / 2 - textPadding[0] - token.innerHeight / 2; + } + var el = this._getOrCreateChild(TSpan); + var subElStyle = el.createStyle(); + el.useStyle(subElStyle); + var defaultStyle = this._defaultStyle; + var useDefaultFill = false; + var defaultLineWidth = 0; + var textFill = getFill('fill' in tokenStyle ? tokenStyle.fill + : 'fill' in style ? style.fill + : (useDefaultFill = true, defaultStyle.fill)); + var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke + : 'stroke' in style ? style.stroke + : (!bgColorDrawn + && !parentBgColorDrawn + && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) + : null); + var hasShadow = tokenStyle.textShadowBlur > 0 + || style.textShadowBlur > 0; + subElStyle.text = token.text; + subElStyle.x = x; + subElStyle.y = y; + if (hasShadow) { + subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0; + subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent'; + subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0; + subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0; + } + subElStyle.textAlign = textAlign; + subElStyle.textBaseline = 'middle'; + subElStyle.font = token.font || DEFAULT_FONT; + subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1); + setSeparateFont(subElStyle, tokenStyle); + if (textStroke) { + subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth); + subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash); + subElStyle.lineDashOffset = style.lineDashOffset || 0; + subElStyle.stroke = textStroke; + } + if (textFill) { + subElStyle.fill = textFill; + } + var textWidth = token.contentWidth; + var textHeight = token.contentHeight; + el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY$1(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight)); + }; + ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) { + var textBackgroundColor = style.backgroundColor; + var textBorderWidth = style.borderWidth; + var textBorderColor = style.borderColor; + var isImageBg = textBackgroundColor && textBackgroundColor.image; + var isPlainOrGradientBg = textBackgroundColor && !isImageBg; + var textBorderRadius = style.borderRadius; + var self = this; + var rectEl; + var imgEl; + if (isPlainOrGradientBg || style.lineHeight || (textBorderWidth && textBorderColor)) { + rectEl = this._getOrCreateChild(Rect); + rectEl.useStyle(rectEl.createStyle()); + rectEl.style.fill = null; + var rectShape = rectEl.shape; + rectShape.x = x; + rectShape.y = y; + rectShape.width = width; + rectShape.height = height; + rectShape.r = textBorderRadius; + rectEl.dirtyShape(); + } + if (isPlainOrGradientBg) { + var rectStyle = rectEl.style; + rectStyle.fill = textBackgroundColor || null; + rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1); + } + else if (isImageBg) { + imgEl = this._getOrCreateChild(ZRImage); + imgEl.onload = function () { + self.dirtyStyle(); + }; + var imgStyle = imgEl.style; + imgStyle.image = textBackgroundColor.image; + imgStyle.x = x; + imgStyle.y = y; + imgStyle.width = width; + imgStyle.height = height; + } + if (textBorderWidth && textBorderColor) { + var rectStyle = rectEl.style; + rectStyle.lineWidth = textBorderWidth; + rectStyle.stroke = textBorderColor; + rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1); + rectStyle.lineDash = style.borderDash; + rectStyle.lineDashOffset = style.borderDashOffset || 0; + rectEl.strokeContainThreshold = 0; + if (rectEl.hasFill() && rectEl.hasStroke()) { + rectStyle.strokeFirst = true; + rectStyle.lineWidth *= 2; + } + } + var commonStyle = (rectEl || imgEl).style; + commonStyle.shadowBlur = style.shadowBlur || 0; + commonStyle.shadowColor = style.shadowColor || 'transparent'; + commonStyle.shadowOffsetX = style.shadowOffsetX || 0; + commonStyle.shadowOffsetY = style.shadowOffsetY || 0; + commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1); + }; + ZRText.makeFont = function (style) { + var font = ''; + if (hasSeparateFont(style)) { + font = [ + style.fontStyle, + style.fontWeight, + parseFontSize(style.fontSize), + style.fontFamily || 'sans-serif' + ].join(' '); + } + return font && trim(font) || style.textFont || style.font; + }; + return ZRText; + }(Displayable)); + var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 }; + var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 }; + var FONT_PARTS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily']; + function parseFontSize(fontSize) { + if (typeof fontSize === 'string' + && (fontSize.indexOf('px') !== -1 + || fontSize.indexOf('rem') !== -1 + || fontSize.indexOf('em') !== -1)) { + return fontSize; + } + else if (!isNaN(+fontSize)) { + return fontSize + 'px'; + } + else { + return DEFAULT_FONT_SIZE + 'px'; + } + } + function setSeparateFont(targetStyle, sourceStyle) { + for (var i = 0; i < FONT_PARTS.length; i++) { + var fontProp = FONT_PARTS[i]; + var val = sourceStyle[fontProp]; + if (val != null) { + targetStyle[fontProp] = val; + } + } + } + function hasSeparateFont(style) { + return style.fontSize != null || style.fontFamily || style.fontWeight; + } + function normalizeTextStyle(style) { + normalizeStyle(style); + each(style.rich, normalizeStyle); + return style; + } + function normalizeStyle(style) { + if (style) { + style.font = ZRText.makeFont(style); + var textAlign = style.align; + textAlign === 'middle' && (textAlign = 'center'); + style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left'; + var verticalAlign = style.verticalAlign; + verticalAlign === 'center' && (verticalAlign = 'middle'); + style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top'; + var textPadding = style.padding; + if (textPadding) { + style.padding = normalizeCssArray(style.padding); + } + } + } + function getStroke(stroke, lineWidth) { + return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none') + ? null + : (stroke.image || stroke.colorStops) + ? '#000' + : stroke; + } + function getFill(fill) { + return (fill == null || fill === 'none') + ? null + : (fill.image || fill.colorStops) + ? '#000' + : fill; + } + function getTextXForPadding(x, textAlign, textPadding) { + return textAlign === 'right' + ? (x - textPadding[1]) + : textAlign === 'center' + ? (x + textPadding[3] / 2 - textPadding[1] / 2) + : (x + textPadding[3]); + } + function getStyleText(style) { + var text = style.text; + text != null && (text += ''); + return text; + } + function needDrawBackground(style) { + return !!(style.backgroundColor + || style.lineHeight + || (style.borderWidth && style.borderColor)); + } + + var getECData = makeInner(); + var setCommonECData = function (seriesIndex, dataType, dataIdx, el) { + if (el) { + var ecData = getECData(el); + // Add data index and series index for indexing the data by element + // Useful in tooltip + ecData.dataIndex = dataIdx; + ecData.dataType = dataType; + ecData.seriesIndex = seriesIndex; + ecData.ssrType = 'chart'; + // TODO: not store dataIndex on children. + if (el.type === 'group') { + el.traverse(function (child) { + var childECData = getECData(child); + childECData.seriesIndex = seriesIndex; + childECData.dataIndex = dataIdx; + childECData.dataType = dataType; + childECData.ssrType = 'chart'; + }); + } + } + }; + + // Reserve 0 as default. + var _highlightNextDigit = 1; + var _highlightKeyMap = {}; + var getSavedStates = makeInner(); + var getComponentStates = makeInner(); + var HOVER_STATE_NORMAL = 0; + var HOVER_STATE_BLUR = 1; + var HOVER_STATE_EMPHASIS = 2; + var SPECIAL_STATES = ['emphasis', 'blur', 'select']; + var DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select']; + var Z2_EMPHASIS_LIFT = 10; + var Z2_SELECT_LIFT = 9; + var HIGHLIGHT_ACTION_TYPE = 'highlight'; + var DOWNPLAY_ACTION_TYPE = 'downplay'; + var SELECT_ACTION_TYPE = 'select'; + var UNSELECT_ACTION_TYPE = 'unselect'; + var TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect'; + function hasFillOrStroke(fillOrStroke) { + return fillOrStroke != null && fillOrStroke !== 'none'; + } + function doChangeHoverState(el, stateName, hoverStateEnum) { + if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) { + el.onHoverStateChange(stateName); + } + el.hoverState = hoverStateEnum; + } + function singleEnterEmphasis(el) { + // Only mark the flag. + // States will be applied in the echarts.ts in next frame. + doChangeHoverState(el, 'emphasis', HOVER_STATE_EMPHASIS); + } + function singleLeaveEmphasis(el) { + // Only mark the flag. + // States will be applied in the echarts.ts in next frame. + if (el.hoverState === HOVER_STATE_EMPHASIS) { + doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL); + } + } + function singleEnterBlur(el) { + doChangeHoverState(el, 'blur', HOVER_STATE_BLUR); + } + function singleLeaveBlur(el) { + if (el.hoverState === HOVER_STATE_BLUR) { + doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL); + } + } + function singleEnterSelect(el) { + el.selected = true; + } + function singleLeaveSelect(el) { + el.selected = false; + } + function updateElementState(el, updater, commonParam) { + updater(el, commonParam); + } + function traverseUpdateState(el, updater, commonParam) { + updateElementState(el, updater, commonParam); + el.isGroup && el.traverse(function (child) { + updateElementState(child, updater, commonParam); + }); + } + function setStatesFlag(el, stateName) { + switch (stateName) { + case 'emphasis': + el.hoverState = HOVER_STATE_EMPHASIS; + break; + case 'normal': + el.hoverState = HOVER_STATE_NORMAL; + break; + case 'blur': + el.hoverState = HOVER_STATE_BLUR; + break; + case 'select': + el.selected = true; + } + } + function getFromStateStyle(el, props, toStateName, defaultValue) { + var style = el.style; + var fromState = {}; + for (var i = 0; i < props.length; i++) { + var propName = props[i]; + var val = style[propName]; + fromState[propName] = val == null ? defaultValue && defaultValue[propName] : val; + } + for (var i = 0; i < el.animators.length; i++) { + var animator = el.animators[i]; + if (animator.__fromStateTransition + // Don't consider the animation to emphasis state. + && animator.__fromStateTransition.indexOf(toStateName) < 0 && animator.targetName === 'style') { + animator.saveTo(fromState, props); + } + } + return fromState; + } + function createEmphasisDefaultState(el, stateName, targetStates, state) { + var hasSelect = targetStates && indexOf(targetStates, 'select') >= 0; + var cloned = false; + if (el instanceof Path) { + var store = getSavedStates(el); + var fromFill = hasSelect ? store.selectFill || store.normalFill : store.normalFill; + var fromStroke = hasSelect ? store.selectStroke || store.normalStroke : store.normalStroke; + if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) { + state = state || {}; + var emphasisStyle = state.style || {}; + // inherit case + if (emphasisStyle.fill === 'inherit') { + cloned = true; + state = extend({}, state); + emphasisStyle = extend({}, emphasisStyle); + emphasisStyle.fill = fromFill; + } + // Apply default color lift + else if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) { + cloned = true; + // Not modify the original value. + state = extend({}, state); + emphasisStyle = extend({}, emphasisStyle); + // Already being applied 'emphasis'. DON'T lift color multiple times. + emphasisStyle.fill = liftColor(fromFill); + } + // Not highlight stroke if fill has been highlighted. + else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) { + if (!cloned) { + state = extend({}, state); + emphasisStyle = extend({}, emphasisStyle); + } + emphasisStyle.stroke = liftColor(fromStroke); + } + state.style = emphasisStyle; + } + } + if (state) { + // TODO Share with textContent? + if (state.z2 == null) { + if (!cloned) { + state = extend({}, state); + } + var z2EmphasisLift = el.z2EmphasisLift; + state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT); + } + } + return state; + } + function createSelectDefaultState(el, stateName, state) { + // const hasSelect = indexOf(el.currentStates, stateName) >= 0; + if (state) { + // TODO Share with textContent? + if (state.z2 == null) { + state = extend({}, state); + var z2SelectLift = el.z2SelectLift; + state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT); + } + } + return state; + } + function createBlurDefaultState(el, stateName, state) { + var hasBlur = indexOf(el.currentStates, stateName) >= 0; + var currentOpacity = el.style.opacity; + var fromState = !hasBlur ? getFromStateStyle(el, ['opacity'], stateName, { + opacity: 1 + }) : null; + state = state || {}; + var blurStyle = state.style || {}; + if (blurStyle.opacity == null) { + // clone state + state = extend({}, state); + blurStyle = extend({ + // Already being applied 'emphasis'. DON'T mul opacity multiple times. + opacity: hasBlur ? currentOpacity : fromState.opacity * 0.1 + }, blurStyle); + state.style = blurStyle; + } + return state; + } + function elementStateProxy(stateName, targetStates) { + var state = this.states[stateName]; + if (this.style) { + if (stateName === 'emphasis') { + return createEmphasisDefaultState(this, stateName, targetStates, state); + } else if (stateName === 'blur') { + return createBlurDefaultState(this, stateName, state); + } else if (stateName === 'select') { + return createSelectDefaultState(this, stateName, state); + } + } + return state; + } + /** + * Set hover style (namely "emphasis style") of element. + * @param el Should not be `zrender/graphic/Group`. + * @param focus 'self' | 'selfInSeries' | 'series' + */ + function setDefaultStateProxy(el) { + el.stateProxy = elementStateProxy; + var textContent = el.getTextContent(); + var textGuide = el.getTextGuideLine(); + if (textContent) { + textContent.stateProxy = elementStateProxy; + } + if (textGuide) { + textGuide.stateProxy = elementStateProxy; + } + } + function enterEmphasisWhenMouseOver(el, e) { + !shouldSilent(el, e) + // "emphasis" event highlight has higher priority than mouse highlight. + && !el.__highByOuter && traverseUpdateState(el, singleEnterEmphasis); + } + function leaveEmphasisWhenMouseOut(el, e) { + !shouldSilent(el, e) + // "emphasis" event highlight has higher priority than mouse highlight. + && !el.__highByOuter && traverseUpdateState(el, singleLeaveEmphasis); + } + function enterEmphasis(el, highlightDigit) { + el.__highByOuter |= 1 << (highlightDigit || 0); + traverseUpdateState(el, singleEnterEmphasis); + } + function leaveEmphasis(el, highlightDigit) { + !(el.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdateState(el, singleLeaveEmphasis); + } + function enterBlur(el) { + traverseUpdateState(el, singleEnterBlur); + } + function leaveBlur(el) { + traverseUpdateState(el, singleLeaveBlur); + } + function enterSelect(el) { + traverseUpdateState(el, singleEnterSelect); + } + function leaveSelect(el) { + traverseUpdateState(el, singleLeaveSelect); + } + function shouldSilent(el, e) { + return el.__highDownSilentOnTouch && e.zrByTouch; + } + function allLeaveBlur(api) { + var model = api.getModel(); + var leaveBlurredSeries = []; + var allComponentViews = []; + model.eachComponent(function (componentType, componentModel) { + var componentStates = getComponentStates(componentModel); + var isSeries = componentType === 'series'; + var view = isSeries ? api.getViewOfSeriesModel(componentModel) : api.getViewOfComponentModel(componentModel); + !isSeries && allComponentViews.push(view); + if (componentStates.isBlured) { + // Leave blur anyway + view.group.traverse(function (child) { + singleLeaveBlur(child); + }); + isSeries && leaveBlurredSeries.push(componentModel); + } + componentStates.isBlured = false; + }); + each(allComponentViews, function (view) { + if (view && view.toggleBlurSeries) { + view.toggleBlurSeries(leaveBlurredSeries, false, model); + } + }); + } + function blurSeries(targetSeriesIndex, focus, blurScope, api) { + var ecModel = api.getModel(); + blurScope = blurScope || 'coordinateSystem'; + function leaveBlurOfIndices(data, dataIndices) { + for (var i = 0; i < dataIndices.length; i++) { + var itemEl = data.getItemGraphicEl(dataIndices[i]); + itemEl && leaveBlur(itemEl); + } + } + if (targetSeriesIndex == null) { + return; + } + if (!focus || focus === 'none') { + return; + } + var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex); + var targetCoordSys = targetSeriesModel.coordinateSystem; + if (targetCoordSys && targetCoordSys.master) { + targetCoordSys = targetCoordSys.master; + } + var blurredSeries = []; + ecModel.eachSeries(function (seriesModel) { + var sameSeries = targetSeriesModel === seriesModel; + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.master) { + coordSys = coordSys.master; + } + var sameCoordSys = coordSys && targetCoordSys ? coordSys === targetCoordSys : sameSeries; // If there is no coordinate system. use sameSeries instead. + if (!( + // Not blur other series if blurScope series + blurScope === 'series' && !sameSeries + // Not blur other coordinate system if blurScope is coordinateSystem + || blurScope === 'coordinateSystem' && !sameCoordSys + // Not blur self series if focus is series. + || focus === 'series' && sameSeries + // TODO blurScope: coordinate system + )) { + var view = api.getViewOfSeriesModel(seriesModel); + view.group.traverse(function (child) { + // For the elements that have been triggered by other components, + // and are still required to be highlighted, + // because the current is directly forced to blur the element, + // it will cause the focus self to be unable to highlight, so skip the blur of this element. + if (child.__highByOuter && sameSeries && focus === 'self') { + return; + } + singleEnterBlur(child); + }); + if (isArrayLike(focus)) { + leaveBlurOfIndices(seriesModel.getData(), focus); + } else if (isObject(focus)) { + var dataTypes = keys(focus); + for (var d = 0; d < dataTypes.length; d++) { + leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]); + } + } + blurredSeries.push(seriesModel); + getComponentStates(seriesModel).isBlured = true; + } + }); + ecModel.eachComponent(function (componentType, componentModel) { + if (componentType === 'series') { + return; + } + var view = api.getViewOfComponentModel(componentModel); + if (view && view.toggleBlurSeries) { + view.toggleBlurSeries(blurredSeries, true, ecModel); + } + }); + } + function blurComponent(componentMainType, componentIndex, api) { + if (componentMainType == null || componentIndex == null) { + return; + } + var componentModel = api.getModel().getComponent(componentMainType, componentIndex); + if (!componentModel) { + return; + } + getComponentStates(componentModel).isBlured = true; + var view = api.getViewOfComponentModel(componentModel); + if (!view || !view.focusBlurEnabled) { + return; + } + view.group.traverse(function (child) { + singleEnterBlur(child); + }); + } + function blurSeriesFromHighlightPayload(seriesModel, payload, api) { + var seriesIndex = seriesModel.seriesIndex; + var data = seriesModel.getData(payload.dataType); + if (!data) { + if ("development" !== 'production') { + error("Unknown dataType " + payload.dataType); + } + return; + } + var dataIndex = queryDataIndex(data, payload); + // Pick the first one if there is multiple/none exists. + dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0; + var el = data.getItemGraphicEl(dataIndex); + if (!el) { + var count = data.count(); + var current = 0; + // If data on dataIndex is NaN. + while (!el && current < count) { + el = data.getItemGraphicEl(current++); + } + } + if (el) { + var ecData = getECData(el); + blurSeries(seriesIndex, ecData.focus, ecData.blurScope, api); + } else { + // If there is no element put on the data. Try getting it from raw option + // TODO Should put it on seriesModel? + var focus_1 = seriesModel.get(['emphasis', 'focus']); + var blurScope = seriesModel.get(['emphasis', 'blurScope']); + if (focus_1 != null) { + blurSeries(seriesIndex, focus_1, blurScope, api); + } + } + } + function findComponentHighDownDispatchers(componentMainType, componentIndex, name, api) { + var ret = { + focusSelf: false, + dispatchers: null + }; + if (componentMainType == null || componentMainType === 'series' || componentIndex == null || name == null) { + return ret; + } + var componentModel = api.getModel().getComponent(componentMainType, componentIndex); + if (!componentModel) { + return ret; + } + var view = api.getViewOfComponentModel(componentModel); + if (!view || !view.findHighDownDispatchers) { + return ret; + } + var dispatchers = view.findHighDownDispatchers(name); + // At presnet, the component (like Geo) only blur inside itself. + // So we do not use `blurScope` in component. + var focusSelf; + for (var i = 0; i < dispatchers.length; i++) { + if ("development" !== 'production' && !isHighDownDispatcher(dispatchers[i])) { + error('param should be highDownDispatcher'); + } + if (getECData(dispatchers[i]).focus === 'self') { + focusSelf = true; + break; + } + } + return { + focusSelf: focusSelf, + dispatchers: dispatchers + }; + } + function handleGlobalMouseOverForHighDown(dispatcher, e, api) { + if ("development" !== 'production' && !isHighDownDispatcher(dispatcher)) { + error('param should be highDownDispatcher'); + } + var ecData = getECData(dispatcher); + var _a = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api), + dispatchers = _a.dispatchers, + focusSelf = _a.focusSelf; + // If `findHighDownDispatchers` is supported on the component, + // highlight/downplay elements with the same name. + if (dispatchers) { + if (focusSelf) { + blurComponent(ecData.componentMainType, ecData.componentIndex, api); + } + each(dispatchers, function (dispatcher) { + return enterEmphasisWhenMouseOver(dispatcher, e); + }); + } else { + // Try blur all in the related series. Then emphasis the hoverred. + // TODO. progressive mode. + blurSeries(ecData.seriesIndex, ecData.focus, ecData.blurScope, api); + if (ecData.focus === 'self') { + blurComponent(ecData.componentMainType, ecData.componentIndex, api); + } + // Other than series, component that not support `findHighDownDispatcher` will + // also use it. But in this case, highlight/downplay are only supported in + // mouse hover but not in dispatchAction. + enterEmphasisWhenMouseOver(dispatcher, e); + } + } + function handleGlobalMouseOutForHighDown(dispatcher, e, api) { + if ("development" !== 'production' && !isHighDownDispatcher(dispatcher)) { + error('param should be highDownDispatcher'); + } + allLeaveBlur(api); + var ecData = getECData(dispatcher); + var dispatchers = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api).dispatchers; + if (dispatchers) { + each(dispatchers, function (dispatcher) { + return leaveEmphasisWhenMouseOut(dispatcher, e); + }); + } else { + leaveEmphasisWhenMouseOut(dispatcher, e); + } + } + function toggleSelectionFromPayload(seriesModel, payload, api) { + if (!isSelectChangePayload(payload)) { + return; + } + var dataType = payload.dataType; + var data = seriesModel.getData(dataType); + var dataIndex = queryDataIndex(data, payload); + if (!isArray(dataIndex)) { + dataIndex = [dataIndex]; + } + seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? 'toggleSelect' : payload.type === SELECT_ACTION_TYPE ? 'select' : 'unselect'](dataIndex, dataType); + } + function updateSeriesElementSelection(seriesModel) { + var allData = seriesModel.getAllData(); + each(allData, function (_a) { + var data = _a.data, + type = _a.type; + data.eachItemGraphicEl(function (el, idx) { + seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el); + }); + }); + } + function getAllSelectedIndices(ecModel) { + var ret = []; + ecModel.eachSeries(function (seriesModel) { + var allData = seriesModel.getAllData(); + each(allData, function (_a) { + var data = _a.data, + type = _a.type; + var dataIndices = seriesModel.getSelectedDataIndices(); + if (dataIndices.length > 0) { + var item = { + dataIndex: dataIndices, + seriesIndex: seriesModel.seriesIndex + }; + if (type != null) { + item.dataType = type; + } + ret.push(item); + } + }); + }); + return ret; + } + /** + * Enable the function that mouseover will trigger the emphasis state. + * + * NOTE: + * This function should be used on the element with dataIndex, seriesIndex. + * + */ + function enableHoverEmphasis(el, focus, blurScope) { + setAsHighDownDispatcher(el, true); + traverseUpdateState(el, setDefaultStateProxy); + enableHoverFocus(el, focus, blurScope); + } + function disableHoverEmphasis(el) { + setAsHighDownDispatcher(el, false); + } + function toggleHoverEmphasis(el, focus, blurScope, isDisabled) { + isDisabled ? disableHoverEmphasis(el) : enableHoverEmphasis(el, focus, blurScope); + } + function enableHoverFocus(el, focus, blurScope) { + var ecData = getECData(el); + if (focus != null) { + // TODO dataIndex may be set after this function. This check is not useful. + // if (ecData.dataIndex == null) { + // if (__DEV__) { + // console.warn('focus can only been set on element with dataIndex'); + // } + // } + // else { + ecData.focus = focus; + ecData.blurScope = blurScope; + // } + } else if (ecData.focus) { + ecData.focus = null; + } + } + var OTHER_STATES = ['emphasis', 'blur', 'select']; + var defaultStyleGetterMap = { + itemStyle: 'getItemStyle', + lineStyle: 'getLineStyle', + areaStyle: 'getAreaStyle' + }; + /** + * Set emphasis/blur/selected states of element. + */ + function setStatesStylesFromModel(el, itemModel, styleType, + // default itemStyle + getter) { + styleType = styleType || 'itemStyle'; + for (var i = 0; i < OTHER_STATES.length; i++) { + var stateName = OTHER_STATES[i]; + var model = itemModel.getModel([stateName, styleType]); + var state = el.ensureState(stateName); + // Let it throw error if getterType is not found. + state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]](); + } + } + /** + * + * Set element as highlight / downplay dispatcher. + * It will be checked when element received mouseover event or from highlight action. + * It's in change of all highlight/downplay behavior of it's children. + * + * @param el + * @param el.highDownSilentOnTouch + * In touch device, mouseover event will be trigger on touchstart event + * (see module:zrender/dom/HandlerProxy). By this mechanism, we can + * conveniently use hoverStyle when tap on touch screen without additional + * code for compatibility. + * But if the chart/component has select feature, which usually also use + * hoverStyle, there might be conflict between 'select-highlight' and + * 'hover-highlight' especially when roam is enabled (see geo for example). + * In this case, `highDownSilentOnTouch` should be used to disable + * hover-highlight on touch device. + * @param asDispatcher If `false`, do not set as "highDownDispatcher". + */ + function setAsHighDownDispatcher(el, asDispatcher) { + var disable = asDispatcher === false; + var extendedEl = el; + // Make `highDownSilentOnTouch` and `onStateChange` only work after + // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly. + if (el.highDownSilentOnTouch) { + extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch; + } + // Simple optimize, since this method might be + // called for each elements of a group in some cases. + if (!disable || extendedEl.__highDownDispatcher) { + // Emphasis, normal can be triggered manually by API or other components like hover link. + // el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent); + // Also keep previous record. + extendedEl.__highByOuter = extendedEl.__highByOuter || 0; + extendedEl.__highDownDispatcher = !disable; + } + } + function isHighDownDispatcher(el) { + return !!(el && el.__highDownDispatcher); + } + /** + * Enable component highlight/downplay features: + * + hover link (within the same name) + * + focus blur in component + */ + function enableComponentHighDownFeatures(el, componentModel, componentHighDownName) { + var ecData = getECData(el); + ecData.componentMainType = componentModel.mainType; + ecData.componentIndex = componentModel.componentIndex; + ecData.componentHighDownName = componentHighDownName; + } + /** + * Support highlight/downplay record on each elements. + * For the case: hover highlight/downplay (legend, visualMap, ...) and + * user triggered highlight/downplay should not conflict. + * Only all of the highlightDigit cleared, return to normal. + * @param {string} highlightKey + * @return {number} highlightDigit + */ + function getHighlightDigit(highlightKey) { + var highlightDigit = _highlightKeyMap[highlightKey]; + if (highlightDigit == null && _highlightNextDigit <= 32) { + highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++; + } + return highlightDigit; + } + function isSelectChangePayload(payload) { + var payloadType = payload.type; + return payloadType === SELECT_ACTION_TYPE || payloadType === UNSELECT_ACTION_TYPE || payloadType === TOGGLE_SELECT_ACTION_TYPE; + } + function isHighDownPayload(payload) { + var payloadType = payload.type; + return payloadType === HIGHLIGHT_ACTION_TYPE || payloadType === DOWNPLAY_ACTION_TYPE; + } + function savePathStates(el) { + var store = getSavedStates(el); + store.normalFill = el.style.fill; + store.normalStroke = el.style.stroke; + var selectState = el.states.select || {}; + store.selectFill = selectState.style && selectState.style.fill || null; + store.selectStroke = selectState.style && selectState.style.stroke || null; + } + + var CMD$2 = PathProxy.CMD; + var points = [[], [], []]; + var mathSqrt$1 = Math.sqrt; + var mathAtan2 = Math.atan2; + function transformPath(path, m) { + if (!m) { + return; + } + var data = path.data; + var len = path.len(); + var cmd; + var nPoint; + var i; + var j; + var k; + var p; + var M = CMD$2.M; + var C = CMD$2.C; + var L = CMD$2.L; + var R = CMD$2.R; + var A = CMD$2.A; + var Q = CMD$2.Q; + for (i = 0, j = 0; i < len;) { + cmd = data[i++]; + j = i; + nPoint = 0; + switch (cmd) { + case M: + nPoint = 1; + break; + case L: + nPoint = 1; + break; + case C: + nPoint = 3; + break; + case Q: + nPoint = 2; + break; + case A: + var x = m[4]; + var y = m[5]; + var sx = mathSqrt$1(m[0] * m[0] + m[1] * m[1]); + var sy = mathSqrt$1(m[2] * m[2] + m[3] * m[3]); + var angle = mathAtan2(-m[1] / sy, m[0] / sx); + data[i] *= sx; + data[i++] += x; + data[i] *= sy; + data[i++] += y; + data[i++] *= sx; + data[i++] *= sy; + data[i++] += angle; + data[i++] += angle; + i += 2; + j = i; + break; + case R: + p[0] = data[i++]; + p[1] = data[i++]; + applyTransform(p, p, m); + data[j++] = p[0]; + data[j++] = p[1]; + p[0] += data[i++]; + p[1] += data[i++]; + applyTransform(p, p, m); + data[j++] = p[0]; + data[j++] = p[1]; + } + for (k = 0; k < nPoint; k++) { + var p_1 = points[k]; + p_1[0] = data[i++]; + p_1[1] = data[i++]; + applyTransform(p_1, p_1, m); + data[j++] = p_1[0]; + data[j++] = p_1[1]; + } + } + path.increaseVersion(); + } + + var mathSqrt$2 = Math.sqrt; + var mathSin$2 = Math.sin; + var mathCos$2 = Math.cos; + var PI$1 = Math.PI; + function vMag(v) { + return Math.sqrt(v[0] * v[0] + v[1] * v[1]); + } + function vRatio(u, v) { + return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)); + } + function vAngle(u, v) { + return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) + * Math.acos(vRatio(u, v)); + } + function processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) { + var psi = psiDeg * (PI$1 / 180.0); + var xp = mathCos$2(psi) * (x1 - x2) / 2.0 + + mathSin$2(psi) * (y1 - y2) / 2.0; + var yp = -1 * mathSin$2(psi) * (x1 - x2) / 2.0 + + mathCos$2(psi) * (y1 - y2) / 2.0; + var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry); + if (lambda > 1) { + rx *= mathSqrt$2(lambda); + ry *= mathSqrt$2(lambda); + } + var f = (fa === fs ? -1 : 1) + * mathSqrt$2((((rx * rx) * (ry * ry)) + - ((rx * rx) * (yp * yp)) + - ((ry * ry) * (xp * xp))) / ((rx * rx) * (yp * yp) + + (ry * ry) * (xp * xp))) || 0; + var cxp = f * rx * yp / ry; + var cyp = f * -ry * xp / rx; + var cx = (x1 + x2) / 2.0 + + mathCos$2(psi) * cxp + - mathSin$2(psi) * cyp; + var cy = (y1 + y2) / 2.0 + + mathSin$2(psi) * cxp + + mathCos$2(psi) * cyp; + var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]); + var u = [(xp - cxp) / rx, (yp - cyp) / ry]; + var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry]; + var dTheta = vAngle(u, v); + if (vRatio(u, v) <= -1) { + dTheta = PI$1; + } + if (vRatio(u, v) >= 1) { + dTheta = 0; + } + if (dTheta < 0) { + var n = Math.round(dTheta / PI$1 * 1e6) / 1e6; + dTheta = PI$1 * 2 + (n % 2) * PI$1; + } + path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs); + } + var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; + var numberReg = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; + function createPathProxyFromString(data) { + var path = new PathProxy(); + if (!data) { + return path; + } + var cpx = 0; + var cpy = 0; + var subpathX = cpx; + var subpathY = cpy; + var prevCmd; + var CMD = PathProxy.CMD; + var cmdList = data.match(commandReg); + if (!cmdList) { + return path; + } + for (var l = 0; l < cmdList.length; l++) { + var cmdText = cmdList[l]; + var cmdStr = cmdText.charAt(0); + var cmd = void 0; + var p = cmdText.match(numberReg) || []; + var pLen = p.length; + for (var i = 0; i < pLen; i++) { + p[i] = parseFloat(p[i]); + } + var off = 0; + while (off < pLen) { + var ctlPtx = void 0; + var ctlPty = void 0; + var rx = void 0; + var ry = void 0; + var psi = void 0; + var fa = void 0; + var fs = void 0; + var x1 = cpx; + var y1 = cpy; + var len = void 0; + var pathData = void 0; + switch (cmdStr) { + case 'l': + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'L': + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'm': + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.M; + path.addData(cmd, cpx, cpy); + subpathX = cpx; + subpathY = cpy; + cmdStr = 'l'; + break; + case 'M': + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.M; + path.addData(cmd, cpx, cpy); + subpathX = cpx; + subpathY = cpy; + cmdStr = 'L'; + break; + case 'h': + cpx += p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'H': + cpx = p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'v': + cpy += p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'V': + cpy = p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'C': + cmd = CMD.C; + path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]); + cpx = p[off - 2]; + cpy = p[off - 1]; + break; + case 'c': + cmd = CMD.C; + path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy); + cpx += p[off - 2]; + cpy += p[off - 1]; + break; + case 'S': + ctlPtx = cpx; + ctlPty = cpy; + len = path.len(); + pathData = path.data; + if (prevCmd === CMD.C) { + ctlPtx += cpx - pathData[len - 4]; + ctlPty += cpy - pathData[len - 3]; + } + cmd = CMD.C; + x1 = p[off++]; + y1 = p[off++]; + cpx = p[off++]; + cpy = p[off++]; + path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); + break; + case 's': + ctlPtx = cpx; + ctlPty = cpy; + len = path.len(); + pathData = path.data; + if (prevCmd === CMD.C) { + ctlPtx += cpx - pathData[len - 4]; + ctlPty += cpy - pathData[len - 3]; + } + cmd = CMD.C; + x1 = cpx + p[off++]; + y1 = cpy + p[off++]; + cpx += p[off++]; + cpy += p[off++]; + path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); + break; + case 'Q': + x1 = p[off++]; + y1 = p[off++]; + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.Q; + path.addData(cmd, x1, y1, cpx, cpy); + break; + case 'q': + x1 = p[off++] + cpx; + y1 = p[off++] + cpy; + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.Q; + path.addData(cmd, x1, y1, cpx, cpy); + break; + case 'T': + ctlPtx = cpx; + ctlPty = cpy; + len = path.len(); + pathData = path.data; + if (prevCmd === CMD.Q) { + ctlPtx += cpx - pathData[len - 4]; + ctlPty += cpy - pathData[len - 3]; + } + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.Q; + path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); + break; + case 't': + ctlPtx = cpx; + ctlPty = cpy; + len = path.len(); + pathData = path.data; + if (prevCmd === CMD.Q) { + ctlPtx += cpx - pathData[len - 4]; + ctlPty += cpy - pathData[len - 3]; + } + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.Q; + path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); + break; + case 'A': + rx = p[off++]; + ry = p[off++]; + psi = p[off++]; + fa = p[off++]; + fs = p[off++]; + x1 = cpx, y1 = cpy; + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.A; + processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path); + break; + case 'a': + rx = p[off++]; + ry = p[off++]; + psi = p[off++]; + fa = p[off++]; + fs = p[off++]; + x1 = cpx, y1 = cpy; + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.A; + processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path); + break; + } + } + if (cmdStr === 'z' || cmdStr === 'Z') { + cmd = CMD.Z; + path.addData(cmd); + cpx = subpathX; + cpy = subpathY; + } + prevCmd = cmd; + } + path.toStatic(); + return path; + } + var SVGPath = (function (_super) { + __extends(SVGPath, _super); + function SVGPath() { + return _super !== null && _super.apply(this, arguments) || this; + } + SVGPath.prototype.applyTransform = function (m) { }; + return SVGPath; + }(Path)); + function isPathProxy(path) { + return path.setData != null; + } + function createPathOptions(str, opts) { + var pathProxy = createPathProxyFromString(str); + var innerOpts = extend({}, opts); + innerOpts.buildPath = function (path) { + if (isPathProxy(path)) { + path.setData(pathProxy.data); + var ctx = path.getContext(); + if (ctx) { + path.rebuildPath(ctx, 1); + } + } + else { + var ctx = path; + pathProxy.rebuildPath(ctx, 1); + } + }; + innerOpts.applyTransform = function (m) { + transformPath(pathProxy, m); + this.dirtyShape(); + }; + return innerOpts; + } + function createFromString(str, opts) { + return new SVGPath(createPathOptions(str, opts)); + } + function extendFromString(str, defaultOpts) { + var innerOpts = createPathOptions(str, defaultOpts); + var Sub = (function (_super) { + __extends(Sub, _super); + function Sub(opts) { + var _this = _super.call(this, opts) || this; + _this.applyTransform = innerOpts.applyTransform; + _this.buildPath = innerOpts.buildPath; + return _this; + } + return Sub; + }(SVGPath)); + return Sub; + } + function mergePath(pathEls, opts) { + var pathList = []; + var len = pathEls.length; + for (var i = 0; i < len; i++) { + var pathEl = pathEls[i]; + pathList.push(pathEl.getUpdatedPathProxy(true)); + } + var pathBundle = new Path(opts); + pathBundle.createPathProxy(); + pathBundle.buildPath = function (path) { + if (isPathProxy(path)) { + path.appendPath(pathList); + var ctx = path.getContext(); + if (ctx) { + path.rebuildPath(ctx, 1); + } + } + }; + return pathBundle; + } + function clonePath(sourcePath, opts) { + opts = opts || {}; + var path = new Path(); + if (sourcePath.shape) { + path.setShape(sourcePath.shape); + } + path.setStyle(sourcePath.style); + if (opts.bakeTransform) { + transformPath(path.path, sourcePath.getComputedTransform()); + } + else { + if (opts.toLocal) { + path.setLocalTransform(sourcePath.getComputedTransform()); + } + else { + path.copyTransform(sourcePath); + } + } + path.buildPath = sourcePath.buildPath; + path.applyTransform = path.applyTransform; + path.z = sourcePath.z; + path.z2 = sourcePath.z2; + path.zlevel = sourcePath.zlevel; + return path; + } + + var CircleShape = (function () { + function CircleShape() { + this.cx = 0; + this.cy = 0; + this.r = 0; + } + return CircleShape; + }()); + var Circle = (function (_super) { + __extends(Circle, _super); + function Circle(opts) { + return _super.call(this, opts) || this; + } + Circle.prototype.getDefaultShape = function () { + return new CircleShape(); + }; + Circle.prototype.buildPath = function (ctx, shape) { + ctx.moveTo(shape.cx + shape.r, shape.cy); + ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2); + }; + return Circle; + }(Path)); + Circle.prototype.type = 'circle'; + + var EllipseShape = (function () { + function EllipseShape() { + this.cx = 0; + this.cy = 0; + this.rx = 0; + this.ry = 0; + } + return EllipseShape; + }()); + var Ellipse = (function (_super) { + __extends(Ellipse, _super); + function Ellipse(opts) { + return _super.call(this, opts) || this; + } + Ellipse.prototype.getDefaultShape = function () { + return new EllipseShape(); + }; + Ellipse.prototype.buildPath = function (ctx, shape) { + var k = 0.5522848; + var x = shape.cx; + var y = shape.cy; + var a = shape.rx; + var b = shape.ry; + var ox = a * k; + var oy = b * k; + ctx.moveTo(x - a, y); + ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b); + ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y); + ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b); + ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y); + ctx.closePath(); + }; + return Ellipse; + }(Path)); + Ellipse.prototype.type = 'ellipse'; + + var PI$2 = Math.PI; + var PI2$5 = PI$2 * 2; + var mathSin$3 = Math.sin; + var mathCos$3 = Math.cos; + var mathACos = Math.acos; + var mathATan2 = Math.atan2; + var mathAbs$1 = Math.abs; + var mathSqrt$3 = Math.sqrt; + var mathMax$3 = Math.max; + var mathMin$3 = Math.min; + var e = 1e-4; + function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { + var dx10 = x1 - x0; + var dy10 = y1 - y0; + var dx32 = x3 - x2; + var dy32 = y3 - y2; + var t = dy32 * dx10 - dx32 * dy10; + if (t * t < e) { + return; + } + t = (dx32 * (y0 - y2) - dy32 * (x0 - x2)) / t; + return [x0 + t * dx10, y0 + t * dy10]; + } + function computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) { + var x01 = x0 - x1; + var y01 = y0 - y1; + var lo = (clockwise ? cr : -cr) / mathSqrt$3(x01 * x01 + y01 * y01); + var ox = lo * y01; + var oy = -lo * x01; + var x11 = x0 + ox; + var y11 = y0 + oy; + var x10 = x1 + ox; + var y10 = y1 + oy; + var x00 = (x11 + x10) / 2; + var y00 = (y11 + y10) / 2; + var dx = x10 - x11; + var dy = y10 - y11; + var d2 = dx * dx + dy * dy; + var r = radius - cr; + var s = x11 * y10 - x10 * y11; + var d = (dy < 0 ? -1 : 1) * mathSqrt$3(mathMax$3(0, r * r * d2 - s * s)); + var cx0 = (s * dy - dx * d) / d2; + var cy0 = (-s * dx - dy * d) / d2; + var cx1 = (s * dy + dx * d) / d2; + var cy1 = (-s * dx + dy * d) / d2; + var dx0 = cx0 - x00; + var dy0 = cy0 - y00; + var dx1 = cx1 - x00; + var dy1 = cy1 - y00; + if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) { + cx0 = cx1; + cy0 = cy1; + } + return { + cx: cx0, + cy: cy0, + x0: -ox, + y0: -oy, + x1: cx0 * (radius / r - 1), + y1: cy0 * (radius / r - 1) + }; + } + function normalizeCornerRadius(cr) { + var arr; + if (isArray(cr)) { + var len = cr.length; + if (!len) { + return cr; + } + if (len === 1) { + arr = [cr[0], cr[0], 0, 0]; + } + else if (len === 2) { + arr = [cr[0], cr[0], cr[1], cr[1]]; + } + else if (len === 3) { + arr = cr.concat(cr[2]); + } + else { + arr = cr; + } + } + else { + arr = [cr, cr, cr, cr]; + } + return arr; + } + function buildPath$1(ctx, shape) { + var _a; + var radius = mathMax$3(shape.r, 0); + var innerRadius = mathMax$3(shape.r0 || 0, 0); + var hasRadius = radius > 0; + var hasInnerRadius = innerRadius > 0; + if (!hasRadius && !hasInnerRadius) { + return; + } + if (!hasRadius) { + radius = innerRadius; + innerRadius = 0; + } + if (innerRadius > radius) { + var tmp = radius; + radius = innerRadius; + innerRadius = tmp; + } + var startAngle = shape.startAngle, endAngle = shape.endAngle; + if (isNaN(startAngle) || isNaN(endAngle)) { + return; + } + var cx = shape.cx, cy = shape.cy; + var clockwise = !!shape.clockwise; + var arc = mathAbs$1(endAngle - startAngle); + var mod = arc > PI2$5 && arc % PI2$5; + mod > e && (arc = mod); + if (!(radius > e)) { + ctx.moveTo(cx, cy); + } + else if (arc > PI2$5 - e) { + ctx.moveTo(cx + radius * mathCos$3(startAngle), cy + radius * mathSin$3(startAngle)); + ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise); + if (innerRadius > e) { + ctx.moveTo(cx + innerRadius * mathCos$3(endAngle), cy + innerRadius * mathSin$3(endAngle)); + ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise); + } + } + else { + var icrStart = void 0; + var icrEnd = void 0; + var ocrStart = void 0; + var ocrEnd = void 0; + var ocrs = void 0; + var ocre = void 0; + var icrs = void 0; + var icre = void 0; + var ocrMax = void 0; + var icrMax = void 0; + var limitedOcrMax = void 0; + var limitedIcrMax = void 0; + var xre = void 0; + var yre = void 0; + var xirs = void 0; + var yirs = void 0; + var xrs = radius * mathCos$3(startAngle); + var yrs = radius * mathSin$3(startAngle); + var xire = innerRadius * mathCos$3(endAngle); + var yire = innerRadius * mathSin$3(endAngle); + var hasArc = arc > e; + if (hasArc) { + var cornerRadius = shape.cornerRadius; + if (cornerRadius) { + _a = normalizeCornerRadius(cornerRadius), icrStart = _a[0], icrEnd = _a[1], ocrStart = _a[2], ocrEnd = _a[3]; + } + var halfRd = mathAbs$1(radius - innerRadius) / 2; + ocrs = mathMin$3(halfRd, ocrStart); + ocre = mathMin$3(halfRd, ocrEnd); + icrs = mathMin$3(halfRd, icrStart); + icre = mathMin$3(halfRd, icrEnd); + limitedOcrMax = ocrMax = mathMax$3(ocrs, ocre); + limitedIcrMax = icrMax = mathMax$3(icrs, icre); + if (ocrMax > e || icrMax > e) { + xre = radius * mathCos$3(endAngle); + yre = radius * mathSin$3(endAngle); + xirs = innerRadius * mathCos$3(startAngle); + yirs = innerRadius * mathSin$3(startAngle); + if (arc < PI$2) { + var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire); + if (it_1) { + var x0 = xrs - it_1[0]; + var y0 = yrs - it_1[1]; + var x1 = xre - it_1[0]; + var y1 = yre - it_1[1]; + var a = 1 / mathSin$3(mathACos((x0 * x1 + y0 * y1) / (mathSqrt$3(x0 * x0 + y0 * y0) * mathSqrt$3(x1 * x1 + y1 * y1))) / 2); + var b = mathSqrt$3(it_1[0] * it_1[0] + it_1[1] * it_1[1]); + limitedOcrMax = mathMin$3(ocrMax, (radius - b) / (a + 1)); + limitedIcrMax = mathMin$3(icrMax, (innerRadius - b) / (a - 1)); + } + } + } + } + if (!hasArc) { + ctx.moveTo(cx + xrs, cy + yrs); + } + else if (limitedOcrMax > e) { + var crStart = mathMin$3(ocrStart, limitedOcrMax); + var crEnd = mathMin$3(ocrEnd, limitedOcrMax); + var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, crStart, clockwise); + var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, crEnd, clockwise); + ctx.moveTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0); + if (limitedOcrMax < ocrMax && crStart === crEnd) { + ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedOcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise); + } + else { + crStart > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crStart, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise); + ctx.arc(cx, cy, radius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), !clockwise); + crEnd > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crEnd, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise); + } + } + else { + ctx.moveTo(cx + xrs, cy + yrs); + ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise); + } + if (!(innerRadius > e) || !hasArc) { + ctx.lineTo(cx + xire, cy + yire); + } + else if (limitedIcrMax > e) { + var crStart = mathMin$3(icrStart, limitedIcrMax); + var crEnd = mathMin$3(icrEnd, limitedIcrMax); + var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -crEnd, clockwise); + var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -crStart, clockwise); + ctx.lineTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0); + if (limitedIcrMax < icrMax && crStart === crEnd) { + ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedIcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise); + } + else { + crEnd > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crEnd, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise); + ctx.arc(cx, cy, innerRadius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), clockwise); + crStart > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crStart, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise); + } + } + else { + ctx.lineTo(cx + xire, cy + yire); + ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise); + } + } + ctx.closePath(); + } + + var SectorShape = (function () { + function SectorShape() { + this.cx = 0; + this.cy = 0; + this.r0 = 0; + this.r = 0; + this.startAngle = 0; + this.endAngle = Math.PI * 2; + this.clockwise = true; + this.cornerRadius = 0; + } + return SectorShape; + }()); + var Sector = (function (_super) { + __extends(Sector, _super); + function Sector(opts) { + return _super.call(this, opts) || this; + } + Sector.prototype.getDefaultShape = function () { + return new SectorShape(); + }; + Sector.prototype.buildPath = function (ctx, shape) { + buildPath$1(ctx, shape); + }; + Sector.prototype.isZeroArea = function () { + return this.shape.startAngle === this.shape.endAngle + || this.shape.r === this.shape.r0; + }; + return Sector; + }(Path)); + Sector.prototype.type = 'sector'; + + var RingShape = (function () { + function RingShape() { + this.cx = 0; + this.cy = 0; + this.r = 0; + this.r0 = 0; + } + return RingShape; + }()); + var Ring = (function (_super) { + __extends(Ring, _super); + function Ring(opts) { + return _super.call(this, opts) || this; + } + Ring.prototype.getDefaultShape = function () { + return new RingShape(); + }; + Ring.prototype.buildPath = function (ctx, shape) { + var x = shape.cx; + var y = shape.cy; + var PI2 = Math.PI * 2; + ctx.moveTo(x + shape.r, y); + ctx.arc(x, y, shape.r, 0, PI2, false); + ctx.moveTo(x + shape.r0, y); + ctx.arc(x, y, shape.r0, 0, PI2, true); + }; + return Ring; + }(Path)); + Ring.prototype.type = 'ring'; + + function smoothBezier(points, smooth, isLoop, constraint) { + var cps = []; + var v = []; + var v1 = []; + var v2 = []; + var prevPoint; + var nextPoint; + var min$1; + var max$1; + if (constraint) { + min$1 = [Infinity, Infinity]; + max$1 = [-Infinity, -Infinity]; + for (var i = 0, len = points.length; i < len; i++) { + min(min$1, min$1, points[i]); + max(max$1, max$1, points[i]); + } + min(min$1, min$1, constraint[0]); + max(max$1, max$1, constraint[1]); + } + for (var i = 0, len = points.length; i < len; i++) { + var point = points[i]; + if (isLoop) { + prevPoint = points[i ? i - 1 : len - 1]; + nextPoint = points[(i + 1) % len]; + } + else { + if (i === 0 || i === len - 1) { + cps.push(clone$1(points[i])); + continue; + } + else { + prevPoint = points[i - 1]; + nextPoint = points[i + 1]; + } + } + sub(v, nextPoint, prevPoint); + scale(v, v, smooth); + var d0 = distance(point, prevPoint); + var d1 = distance(point, nextPoint); + var sum = d0 + d1; + if (sum !== 0) { + d0 /= sum; + d1 /= sum; + } + scale(v1, v, -d0); + scale(v2, v, d1); + var cp0 = add([], point, v1); + var cp1 = add([], point, v2); + if (constraint) { + max(cp0, cp0, min$1); + min(cp0, cp0, max$1); + max(cp1, cp1, min$1); + min(cp1, cp1, max$1); + } + cps.push(cp0); + cps.push(cp1); + } + if (isLoop) { + cps.push(cps.shift()); + } + return cps; + } + + function buildPath$2(ctx, shape, closePath) { + var smooth = shape.smooth; + var points = shape.points; + if (points && points.length >= 2) { + if (smooth) { + var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint); + ctx.moveTo(points[0][0], points[0][1]); + var len = points.length; + for (var i = 0; i < (closePath ? len : len - 1); i++) { + var cp1 = controlPoints[i * 2]; + var cp2 = controlPoints[i * 2 + 1]; + var p = points[(i + 1) % len]; + ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]); + } + } + else { + ctx.moveTo(points[0][0], points[0][1]); + for (var i = 1, l = points.length; i < l; i++) { + ctx.lineTo(points[i][0], points[i][1]); + } + } + closePath && ctx.closePath(); + } + } + + var PolygonShape = (function () { + function PolygonShape() { + this.points = null; + this.smooth = 0; + this.smoothConstraint = null; + } + return PolygonShape; + }()); + var Polygon = (function (_super) { + __extends(Polygon, _super); + function Polygon(opts) { + return _super.call(this, opts) || this; + } + Polygon.prototype.getDefaultShape = function () { + return new PolygonShape(); + }; + Polygon.prototype.buildPath = function (ctx, shape) { + buildPath$2(ctx, shape, true); + }; + return Polygon; + }(Path)); + Polygon.prototype.type = 'polygon'; + + var PolylineShape = (function () { + function PolylineShape() { + this.points = null; + this.percent = 1; + this.smooth = 0; + this.smoothConstraint = null; + } + return PolylineShape; + }()); + var Polyline = (function (_super) { + __extends(Polyline, _super); + function Polyline(opts) { + return _super.call(this, opts) || this; + } + Polyline.prototype.getDefaultStyle = function () { + return { + stroke: '#000', + fill: null + }; + }; + Polyline.prototype.getDefaultShape = function () { + return new PolylineShape(); + }; + Polyline.prototype.buildPath = function (ctx, shape) { + buildPath$2(ctx, shape, false); + }; + return Polyline; + }(Path)); + Polyline.prototype.type = 'polyline'; + + var subPixelOptimizeOutputShape$1 = {}; + var LineShape = (function () { + function LineShape() { + this.x1 = 0; + this.y1 = 0; + this.x2 = 0; + this.y2 = 0; + this.percent = 1; + } + return LineShape; + }()); + var Line = (function (_super) { + __extends(Line, _super); + function Line(opts) { + return _super.call(this, opts) || this; + } + Line.prototype.getDefaultStyle = function () { + return { + stroke: '#000', + fill: null + }; + }; + Line.prototype.getDefaultShape = function () { + return new LineShape(); + }; + Line.prototype.buildPath = function (ctx, shape) { + var x1; + var y1; + var x2; + var y2; + if (this.subPixelOptimize) { + var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape$1, shape, this.style); + x1 = optimizedShape.x1; + y1 = optimizedShape.y1; + x2 = optimizedShape.x2; + y2 = optimizedShape.y2; + } + else { + x1 = shape.x1; + y1 = shape.y1; + x2 = shape.x2; + y2 = shape.y2; + } + var percent = shape.percent; + if (percent === 0) { + return; + } + ctx.moveTo(x1, y1); + if (percent < 1) { + x2 = x1 * (1 - percent) + x2 * percent; + y2 = y1 * (1 - percent) + y2 * percent; + } + ctx.lineTo(x2, y2); + }; + Line.prototype.pointAt = function (p) { + var shape = this.shape; + return [ + shape.x1 * (1 - p) + shape.x2 * p, + shape.y1 * (1 - p) + shape.y2 * p + ]; + }; + return Line; + }(Path)); + Line.prototype.type = 'line'; + + var out = []; + var BezierCurveShape = (function () { + function BezierCurveShape() { + this.x1 = 0; + this.y1 = 0; + this.x2 = 0; + this.y2 = 0; + this.cpx1 = 0; + this.cpy1 = 0; + this.percent = 1; + } + return BezierCurveShape; + }()); + function someVectorAt(shape, t, isTangent) { + var cpx2 = shape.cpx2; + var cpy2 = shape.cpy2; + if (cpx2 != null || cpy2 != null) { + return [ + (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t), + (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t) + ]; + } + else { + return [ + (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t), + (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t) + ]; + } + } + var BezierCurve = (function (_super) { + __extends(BezierCurve, _super); + function BezierCurve(opts) { + return _super.call(this, opts) || this; + } + BezierCurve.prototype.getDefaultStyle = function () { + return { + stroke: '#000', + fill: null + }; + }; + BezierCurve.prototype.getDefaultShape = function () { + return new BezierCurveShape(); + }; + BezierCurve.prototype.buildPath = function (ctx, shape) { + var x1 = shape.x1; + var y1 = shape.y1; + var x2 = shape.x2; + var y2 = shape.y2; + var cpx1 = shape.cpx1; + var cpy1 = shape.cpy1; + var cpx2 = shape.cpx2; + var cpy2 = shape.cpy2; + var percent = shape.percent; + if (percent === 0) { + return; + } + ctx.moveTo(x1, y1); + if (cpx2 == null || cpy2 == null) { + if (percent < 1) { + quadraticSubdivide(x1, cpx1, x2, percent, out); + cpx1 = out[1]; + x2 = out[2]; + quadraticSubdivide(y1, cpy1, y2, percent, out); + cpy1 = out[1]; + y2 = out[2]; + } + ctx.quadraticCurveTo(cpx1, cpy1, x2, y2); + } + else { + if (percent < 1) { + cubicSubdivide(x1, cpx1, cpx2, x2, percent, out); + cpx1 = out[1]; + cpx2 = out[2]; + x2 = out[3]; + cubicSubdivide(y1, cpy1, cpy2, y2, percent, out); + cpy1 = out[1]; + cpy2 = out[2]; + y2 = out[3]; + } + ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2); + } + }; + BezierCurve.prototype.pointAt = function (t) { + return someVectorAt(this.shape, t, false); + }; + BezierCurve.prototype.tangentAt = function (t) { + var p = someVectorAt(this.shape, t, true); + return normalize(p, p); + }; + return BezierCurve; + }(Path)); + BezierCurve.prototype.type = 'bezier-curve'; + + var ArcShape = (function () { + function ArcShape() { + this.cx = 0; + this.cy = 0; + this.r = 0; + this.startAngle = 0; + this.endAngle = Math.PI * 2; + this.clockwise = true; + } + return ArcShape; + }()); + var Arc = (function (_super) { + __extends(Arc, _super); + function Arc(opts) { + return _super.call(this, opts) || this; + } + Arc.prototype.getDefaultStyle = function () { + return { + stroke: '#000', + fill: null + }; + }; + Arc.prototype.getDefaultShape = function () { + return new ArcShape(); + }; + Arc.prototype.buildPath = function (ctx, shape) { + var x = shape.cx; + var y = shape.cy; + var r = Math.max(shape.r, 0); + var startAngle = shape.startAngle; + var endAngle = shape.endAngle; + var clockwise = shape.clockwise; + var unitX = Math.cos(startAngle); + var unitY = Math.sin(startAngle); + ctx.moveTo(unitX * r + x, unitY * r + y); + ctx.arc(x, y, r, startAngle, endAngle, !clockwise); + }; + return Arc; + }(Path)); + Arc.prototype.type = 'arc'; + + var CompoundPath = (function (_super) { + __extends(CompoundPath, _super); + function CompoundPath() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = 'compound'; + return _this; + } + CompoundPath.prototype._updatePathDirty = function () { + var paths = this.shape.paths; + var dirtyPath = this.shapeChanged(); + for (var i = 0; i < paths.length; i++) { + dirtyPath = dirtyPath || paths[i].shapeChanged(); + } + if (dirtyPath) { + this.dirtyShape(); + } + }; + CompoundPath.prototype.beforeBrush = function () { + this._updatePathDirty(); + var paths = this.shape.paths || []; + var scale = this.getGlobalScale(); + for (var i = 0; i < paths.length; i++) { + if (!paths[i].path) { + paths[i].createPathProxy(); + } + paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold); + } + }; + CompoundPath.prototype.buildPath = function (ctx, shape) { + var paths = shape.paths || []; + for (var i = 0; i < paths.length; i++) { + paths[i].buildPath(ctx, paths[i].shape, true); + } + }; + CompoundPath.prototype.afterBrush = function () { + var paths = this.shape.paths || []; + for (var i = 0; i < paths.length; i++) { + paths[i].pathUpdated(); + } + }; + CompoundPath.prototype.getBoundingRect = function () { + this._updatePathDirty.call(this); + return Path.prototype.getBoundingRect.call(this); + }; + return CompoundPath; + }(Path)); + + var Gradient = (function () { + function Gradient(colorStops) { + this.colorStops = colorStops || []; + } + Gradient.prototype.addColorStop = function (offset, color) { + this.colorStops.push({ + offset: offset, + color: color + }); + }; + return Gradient; + }()); + + var LinearGradient = (function (_super) { + __extends(LinearGradient, _super); + function LinearGradient(x, y, x2, y2, colorStops, globalCoord) { + var _this = _super.call(this, colorStops) || this; + _this.x = x == null ? 0 : x; + _this.y = y == null ? 0 : y; + _this.x2 = x2 == null ? 1 : x2; + _this.y2 = y2 == null ? 0 : y2; + _this.type = 'linear'; + _this.global = globalCoord || false; + return _this; + } + return LinearGradient; + }(Gradient)); + + var RadialGradient = (function (_super) { + __extends(RadialGradient, _super); + function RadialGradient(x, y, r, colorStops, globalCoord) { + var _this = _super.call(this, colorStops) || this; + _this.x = x == null ? 0.5 : x; + _this.y = y == null ? 0.5 : y; + _this.r = r == null ? 0.5 : r; + _this.type = 'radial'; + _this.global = globalCoord || false; + return _this; + } + return RadialGradient; + }(Gradient)); + + var extent = [0, 0]; + var extent2 = [0, 0]; + var minTv$1 = new Point(); + var maxTv$1 = new Point(); + var OrientedBoundingRect = (function () { + function OrientedBoundingRect(rect, transform) { + this._corners = []; + this._axes = []; + this._origin = [0, 0]; + for (var i = 0; i < 4; i++) { + this._corners[i] = new Point(); + } + for (var i = 0; i < 2; i++) { + this._axes[i] = new Point(); + } + if (rect) { + this.fromBoundingRect(rect, transform); + } + } + OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) { + var corners = this._corners; + var axes = this._axes; + var x = rect.x; + var y = rect.y; + var x2 = x + rect.width; + var y2 = y + rect.height; + corners[0].set(x, y); + corners[1].set(x2, y); + corners[2].set(x2, y2); + corners[3].set(x, y2); + if (transform) { + for (var i = 0; i < 4; i++) { + corners[i].transform(transform); + } + } + Point.sub(axes[0], corners[1], corners[0]); + Point.sub(axes[1], corners[3], corners[0]); + axes[0].normalize(); + axes[1].normalize(); + for (var i = 0; i < 2; i++) { + this._origin[i] = axes[i].dot(corners[0]); + } + }; + OrientedBoundingRect.prototype.intersect = function (other, mtv) { + var overlapped = true; + var noMtv = !mtv; + minTv$1.set(Infinity, Infinity); + maxTv$1.set(0, 0); + if (!this._intersectCheckOneSide(this, other, minTv$1, maxTv$1, noMtv, 1)) { + overlapped = false; + if (noMtv) { + return overlapped; + } + } + if (!this._intersectCheckOneSide(other, this, minTv$1, maxTv$1, noMtv, -1)) { + overlapped = false; + if (noMtv) { + return overlapped; + } + } + if (!noMtv) { + Point.copy(mtv, overlapped ? minTv$1 : maxTv$1); + } + return overlapped; + }; + OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) { + var overlapped = true; + for (var i = 0; i < 2; i++) { + var axis = this._axes[i]; + this._getProjMinMaxOnAxis(i, self._corners, extent); + this._getProjMinMaxOnAxis(i, other._corners, extent2); + if (extent[1] < extent2[0] || extent[0] > extent2[1]) { + overlapped = false; + if (noMtv) { + return overlapped; + } + var dist0 = Math.abs(extent2[0] - extent[1]); + var dist1 = Math.abs(extent[0] - extent2[1]); + if (Math.min(dist0, dist1) > maxTv.len()) { + if (dist0 < dist1) { + Point.scale(maxTv, axis, -dist0 * inverse); + } + else { + Point.scale(maxTv, axis, dist1 * inverse); + } + } + } + else if (minTv) { + var dist0 = Math.abs(extent2[0] - extent[1]); + var dist1 = Math.abs(extent[0] - extent2[1]); + if (Math.min(dist0, dist1) < minTv.len()) { + if (dist0 < dist1) { + Point.scale(minTv, axis, dist0 * inverse); + } + else { + Point.scale(minTv, axis, -dist1 * inverse); + } + } + } + } + return overlapped; + }; + OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) { + var axis = this._axes[dim]; + var origin = this._origin; + var proj = corners[0].dot(axis) + origin[dim]; + var min = proj; + var max = proj; + for (var i = 1; i < corners.length; i++) { + var proj_1 = corners[i].dot(axis) + origin[dim]; + min = Math.min(proj_1, min); + max = Math.max(proj_1, max); + } + out[0] = min; + out[1] = max; + }; + return OrientedBoundingRect; + }()); + + var m = []; + var IncrementalDisplayable = (function (_super) { + __extends(IncrementalDisplayable, _super); + function IncrementalDisplayable() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.notClear = true; + _this.incremental = true; + _this._displayables = []; + _this._temporaryDisplayables = []; + _this._cursor = 0; + return _this; + } + IncrementalDisplayable.prototype.traverse = function (cb, context) { + cb.call(context, this); + }; + IncrementalDisplayable.prototype.useStyle = function () { + this.style = {}; + }; + IncrementalDisplayable.prototype.getCursor = function () { + return this._cursor; + }; + IncrementalDisplayable.prototype.innerAfterBrush = function () { + this._cursor = this._displayables.length; + }; + IncrementalDisplayable.prototype.clearDisplaybles = function () { + this._displayables = []; + this._temporaryDisplayables = []; + this._cursor = 0; + this.markRedraw(); + this.notClear = false; + }; + IncrementalDisplayable.prototype.clearTemporalDisplayables = function () { + this._temporaryDisplayables = []; + }; + IncrementalDisplayable.prototype.addDisplayable = function (displayable, notPersistent) { + if (notPersistent) { + this._temporaryDisplayables.push(displayable); + } + else { + this._displayables.push(displayable); + } + this.markRedraw(); + }; + IncrementalDisplayable.prototype.addDisplayables = function (displayables, notPersistent) { + notPersistent = notPersistent || false; + for (var i = 0; i < displayables.length; i++) { + this.addDisplayable(displayables[i], notPersistent); + } + }; + IncrementalDisplayable.prototype.getDisplayables = function () { + return this._displayables; + }; + IncrementalDisplayable.prototype.getTemporalDisplayables = function () { + return this._temporaryDisplayables; + }; + IncrementalDisplayable.prototype.eachPendingDisplayable = function (cb) { + for (var i = this._cursor; i < this._displayables.length; i++) { + cb && cb(this._displayables[i]); + } + for (var i = 0; i < this._temporaryDisplayables.length; i++) { + cb && cb(this._temporaryDisplayables[i]); + } + }; + IncrementalDisplayable.prototype.update = function () { + this.updateTransform(); + for (var i = this._cursor; i < this._displayables.length; i++) { + var displayable = this._displayables[i]; + displayable.parent = this; + displayable.update(); + displayable.parent = null; + } + for (var i = 0; i < this._temporaryDisplayables.length; i++) { + var displayable = this._temporaryDisplayables[i]; + displayable.parent = this; + displayable.update(); + displayable.parent = null; + } + }; + IncrementalDisplayable.prototype.getBoundingRect = function () { + if (!this._rect) { + var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity); + for (var i = 0; i < this._displayables.length; i++) { + var displayable = this._displayables[i]; + var childRect = displayable.getBoundingRect().clone(); + if (displayable.needLocalTransform()) { + childRect.applyTransform(displayable.getLocalTransform(m)); + } + rect.union(childRect); + } + this._rect = rect; + } + return this._rect; + }; + IncrementalDisplayable.prototype.contain = function (x, y) { + var localPos = this.transformCoordToLocal(x, y); + var rect = this.getBoundingRect(); + if (rect.contain(localPos[0], localPos[1])) { + for (var i = 0; i < this._displayables.length; i++) { + var displayable = this._displayables[i]; + if (displayable.contain(x, y)) { + return true; + } + } + } + return false; + }; + return IncrementalDisplayable; + }(Displayable)); + + // Stored properties for further transition. + var transitionStore = makeInner(); + /** + * Return null if animation is disabled. + */ + function getAnimationConfig(animationType, animatableModel, dataIndex, + // Extra opts can override the option in animatable model. + extraOpts, + // TODO It's only for pictorial bar now. + extraDelayParams) { + var animationPayload; + // Check if there is global animation configuration from dataZoom/resize can override the config in option. + // If animation is enabled. Will use this animation config in payload. + // If animation is disabled. Just ignore it. + if (animatableModel && animatableModel.ecModel) { + var updatePayload = animatableModel.ecModel.getUpdatePayload(); + animationPayload = updatePayload && updatePayload.animation; + } + var animationEnabled = animatableModel && animatableModel.isAnimationEnabled(); + var isUpdate = animationType === 'update'; + if (animationEnabled) { + var duration = void 0; + var easing = void 0; + var delay = void 0; + if (extraOpts) { + duration = retrieve2(extraOpts.duration, 200); + easing = retrieve2(extraOpts.easing, 'cubicOut'); + delay = 0; + } else { + duration = animatableModel.getShallow(isUpdate ? 'animationDurationUpdate' : 'animationDuration'); + easing = animatableModel.getShallow(isUpdate ? 'animationEasingUpdate' : 'animationEasing'); + delay = animatableModel.getShallow(isUpdate ? 'animationDelayUpdate' : 'animationDelay'); + } + // animation from payload has highest priority. + if (animationPayload) { + animationPayload.duration != null && (duration = animationPayload.duration); + animationPayload.easing != null && (easing = animationPayload.easing); + animationPayload.delay != null && (delay = animationPayload.delay); + } + if (isFunction(delay)) { + delay = delay(dataIndex, extraDelayParams); + } + if (isFunction(duration)) { + duration = duration(dataIndex); + } + var config = { + duration: duration || 0, + delay: delay, + easing: easing + }; + return config; + } else { + return null; + } + } + function animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) { + var isFrom = false; + var removeOpt; + if (isFunction(dataIndex)) { + during = cb; + cb = dataIndex; + dataIndex = null; + } else if (isObject(dataIndex)) { + cb = dataIndex.cb; + during = dataIndex.during; + isFrom = dataIndex.isFrom; + removeOpt = dataIndex.removeOpt; + dataIndex = dataIndex.dataIndex; + } + var isRemove = animationType === 'leave'; + if (!isRemove) { + // Must stop the remove animation. + el.stopAnimation('leave'); + } + var animationConfig = getAnimationConfig(animationType, animatableModel, dataIndex, isRemove ? removeOpt || {} : null, animatableModel && animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null); + if (animationConfig && animationConfig.duration > 0) { + var duration = animationConfig.duration; + var animationDelay = animationConfig.delay; + var animationEasing = animationConfig.easing; + var animateConfig = { + duration: duration, + delay: animationDelay || 0, + easing: animationEasing, + done: cb, + force: !!cb || !!during, + // Set to final state in update/init animation. + // So the post processing based on the path shape can be done correctly. + setToFinal: !isRemove, + scope: animationType, + during: during + }; + isFrom ? el.animateFrom(props, animateConfig) : el.animateTo(props, animateConfig); + } else { + el.stopAnimation(); + // If `isFrom`, the props is the "from" props. + !isFrom && el.attr(props); + // Call during at least once. + during && during(1); + cb && cb(); + } + } + /** + * Update graphic element properties with or without animation according to the + * configuration in series. + * + * Caution: this method will stop previous animation. + * So do not use this method to one element twice before + * animation starts, unless you know what you are doing. + * @example + * graphic.updateProps(el, { + * position: [100, 100] + * }, seriesModel, dataIndex, function () { console.log('Animation done!'); }); + * // Or + * graphic.updateProps(el, { + * position: [100, 100] + * }, seriesModel, function () { console.log('Animation done!'); }); + */ + function updateProps(el, props, + // TODO: TYPE AnimatableModel + animatableModel, dataIndex, cb, during) { + animateOrSetProps('update', el, props, animatableModel, dataIndex, cb, during); + } + /** + * Init graphic element properties with or without animation according to the + * configuration in series. + * + * Caution: this method will stop previous animation. + * So do not use this method to one element twice before + * animation starts, unless you know what you are doing. + */ + function initProps(el, props, animatableModel, dataIndex, cb, during) { + animateOrSetProps('enter', el, props, animatableModel, dataIndex, cb, during); + } + /** + * If element is removed. + * It can determine if element is having remove animation. + */ + function isElementRemoved(el) { + if (!el.__zr) { + return true; + } + for (var i = 0; i < el.animators.length; i++) { + var animator = el.animators[i]; + if (animator.scope === 'leave') { + return true; + } + } + return false; + } + /** + * Remove graphic element + */ + function removeElement(el, props, animatableModel, dataIndex, cb, during) { + // Don't do remove animation twice. + if (isElementRemoved(el)) { + return; + } + animateOrSetProps('leave', el, props, animatableModel, dataIndex, cb, during); + } + function fadeOutDisplayable(el, animatableModel, dataIndex, done) { + el.removeTextContent(); + el.removeTextGuideLine(); + removeElement(el, { + style: { + opacity: 0 + } + }, animatableModel, dataIndex, done); + } + function removeElementWithFadeOut(el, animatableModel, dataIndex) { + function doRemove() { + el.parent && el.parent.remove(el); + } + // Hide label and labelLine first + // TODO Also use fade out animation? + if (!el.isGroup) { + fadeOutDisplayable(el, animatableModel, dataIndex, doRemove); + } else { + el.traverse(function (disp) { + if (!disp.isGroup) { + // Can invoke doRemove multiple times. + fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove); + } + }); + } + } + /** + * Save old style for style transition in universalTransition module. + * It's used when element will be reused in each render. + * For chart like map, heatmap, which will always create new element. + * We don't need to save this because universalTransition can get old style from the old element + */ + function saveOldStyle(el) { + transitionStore(el).oldStyle = el.style; + } + function getOldStyle(el) { + return transitionStore(el).oldStyle; + } + + var mathMax$4 = Math.max; + var mathMin$4 = Math.min; + var _customShapeMap = {}; + /** + * Extend shape with parameters + */ + function extendShape(opts) { + return Path.extend(opts); + } + var extendPathFromString = extendFromString; + /** + * Extend path + */ + function extendPath(pathData, opts) { + return extendPathFromString(pathData, opts); + } + /** + * Register a user defined shape. + * The shape class can be fetched by `getShapeClass` + * This method will overwrite the registered shapes, including + * the registered built-in shapes, if using the same `name`. + * The shape can be used in `custom series` and + * `graphic component` by declaring `{type: name}`. + * + * @param name + * @param ShapeClass Can be generated by `extendShape`. + */ + function registerShape(name, ShapeClass) { + _customShapeMap[name] = ShapeClass; + } + /** + * Find shape class registered by `registerShape`. Usually used in + * fetching user defined shape. + * + * [Caution]: + * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared + * to use user registered shapes. + * Because the built-in shape (see `getBuiltInShape`) will be registered by + * `registerShape` by default. That enables users to get both built-in + * shapes as well as the shapes belonging to themsleves. But users can overwrite + * the built-in shapes by using names like 'circle', 'rect' via calling + * `registerShape`. So the echarts inner featrues should not fetch shapes from here + * in case that it is overwritten by users, except that some features, like + * `custom series`, `graphic component`, do it deliberately. + * + * (2) In the features like `custom series`, `graphic component`, the user input + * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic + * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names + * are reserved names, that is, if some user registers a shape named `'image'`, + * the shape will not be used. If we intending to add some more reserved names + * in feature, that might bring break changes (disable some existing user shape + * names). But that case probably rarely happens. So we don't make more mechanism + * to resolve this issue here. + * + * @param name + * @return The shape class. If not found, return nothing. + */ + function getShapeClass(name) { + if (_customShapeMap.hasOwnProperty(name)) { + return _customShapeMap[name]; + } + } + /** + * Create a path element from path data string + * @param pathData + * @param opts + * @param rect + * @param layout 'center' or 'cover' default to be cover + */ + function makePath(pathData, opts, rect, layout) { + var path = createFromString(pathData, opts); + if (rect) { + if (layout === 'center') { + rect = centerGraphic(rect, path.getBoundingRect()); + } + resizePath(path, rect); + } + return path; + } + /** + * Create a image element from image url + * @param imageUrl image url + * @param opts options + * @param rect constrain rect + * @param layout 'center' or 'cover'. Default to be 'cover' + */ + function makeImage(imageUrl, rect, layout) { + var zrImg = new ZRImage({ + style: { + image: imageUrl, + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height + }, + onload: function (img) { + if (layout === 'center') { + var boundingRect = { + width: img.width, + height: img.height + }; + zrImg.setStyle(centerGraphic(rect, boundingRect)); + } + } + }); + return zrImg; + } + /** + * Get position of centered element in bounding box. + * + * @param rect element local bounding box + * @param boundingRect constraint bounding box + * @return element position containing x, y, width, and height + */ + function centerGraphic(rect, boundingRect) { + // Set rect to center, keep width / height ratio. + var aspect = boundingRect.width / boundingRect.height; + var width = rect.height * aspect; + var height; + if (width <= rect.width) { + height = rect.height; + } else { + width = rect.width; + height = width / aspect; + } + var cx = rect.x + rect.width / 2; + var cy = rect.y + rect.height / 2; + return { + x: cx - width / 2, + y: cy - height / 2, + width: width, + height: height + }; + } + var mergePath$1 = mergePath; + /** + * Resize a path to fit the rect + * @param path + * @param rect + */ + function resizePath(path, rect) { + if (!path.applyTransform) { + return; + } + var pathRect = path.getBoundingRect(); + var m = pathRect.calculateTransform(rect); + path.applyTransform(m); + } + /** + * Sub pixel optimize line for canvas + */ + function subPixelOptimizeLine$1(shape, lineWidth) { + subPixelOptimizeLine(shape, shape, { + lineWidth: lineWidth + }); + return shape; + } + /** + * Sub pixel optimize rect for canvas + */ + function subPixelOptimizeRect$1(param) { + subPixelOptimizeRect(param.shape, param.shape, param.style); + return param; + } + /** + * Sub pixel optimize for canvas + * + * @param position Coordinate, such as x, y + * @param lineWidth Should be nonnegative integer. + * @param positiveOrNegative Default false (negative). + * @return Optimized position. + */ + var subPixelOptimize$1 = subPixelOptimize; + /** + * Get transform matrix of target (param target), + * in coordinate of its ancestor (param ancestor) + * + * @param target + * @param [ancestor] + */ + function getTransform(target, ancestor) { + var mat = identity([]); + while (target && target !== ancestor) { + mul$1(mat, target.getLocalTransform(), mat); + target = target.parent; + } + return mat; + } + /** + * Apply transform to an vertex. + * @param target [x, y] + * @param transform Can be: + * + Transform matrix: like [1, 0, 0, 1, 0, 0] + * + {position, rotation, scale}, the same as `zrender/Transformable`. + * @param invert Whether use invert matrix. + * @return [x, y] + */ + function applyTransform$1(target, transform, invert$1) { + if (transform && !isArrayLike(transform)) { + transform = Transformable.getLocalTransform(transform); + } + if (invert$1) { + transform = invert([], transform); + } + return applyTransform([], target, transform); + } + /** + * @param direction 'left' 'right' 'top' 'bottom' + * @param transform Transform matrix: like [1, 0, 0, 1, 0, 0] + * @param invert Whether use invert matrix. + * @return Transformed direction. 'left' 'right' 'top' 'bottom' + */ + function transformDirection(direction, transform, invert) { + // Pick a base, ensure that transform result will not be (0, 0). + var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]); + var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]); + var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0]; + vertex = applyTransform$1(vertex, transform, invert); + return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top'; + } + function isNotGroup(el) { + return !el.isGroup; + } + function isPath(el) { + return el.shape != null; + } + /** + * Apply group transition animation from g1 to g2. + * If no animatableModel, no animation. + */ + function groupTransition(g1, g2, animatableModel) { + if (!g1 || !g2) { + return; + } + function getElMap(g) { + var elMap = {}; + g.traverse(function (el) { + if (isNotGroup(el) && el.anid) { + elMap[el.anid] = el; + } + }); + return elMap; + } + function getAnimatableProps(el) { + var obj = { + x: el.x, + y: el.y, + rotation: el.rotation + }; + if (isPath(el)) { + obj.shape = extend({}, el.shape); + } + return obj; + } + var elMap1 = getElMap(g1); + g2.traverse(function (el) { + if (isNotGroup(el) && el.anid) { + var oldEl = elMap1[el.anid]; + if (oldEl) { + var newProp = getAnimatableProps(el); + el.attr(getAnimatableProps(oldEl)); + updateProps(el, newProp, animatableModel, getECData(el).dataIndex); + } + } + }); + } + function clipPointsByRect(points, rect) { + // FIXME: This way might be incorrect when graphic clipped by a corner + // and when element has a border. + return map(points, function (point) { + var x = point[0]; + x = mathMax$4(x, rect.x); + x = mathMin$4(x, rect.x + rect.width); + var y = point[1]; + y = mathMax$4(y, rect.y); + y = mathMin$4(y, rect.y + rect.height); + return [x, y]; + }); + } + /** + * Return a new clipped rect. If rect size are negative, return undefined. + */ + function clipRectByRect(targetRect, rect) { + var x = mathMax$4(targetRect.x, rect.x); + var x2 = mathMin$4(targetRect.x + targetRect.width, rect.x + rect.width); + var y = mathMax$4(targetRect.y, rect.y); + var y2 = mathMin$4(targetRect.y + targetRect.height, rect.y + rect.height); + // If the total rect is cliped, nothing, including the border, + // should be painted. So return undefined. + if (x2 >= x && y2 >= y) { + return { + x: x, + y: y, + width: x2 - x, + height: y2 - y + }; + } + } + function createIcon(iconStr, + // Support 'image://' or 'path://' or direct svg path. + opt, rect) { + var innerOpts = extend({ + rectHover: true + }, opt); + var style = innerOpts.style = { + strokeNoScale: true + }; + rect = rect || { + x: -1, + y: -1, + width: 2, + height: 2 + }; + if (iconStr) { + return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), defaults(style, rect), new ZRImage(innerOpts)) : makePath(iconStr.replace('path://', ''), innerOpts, rect, 'center'); + } + } + /** + * Return `true` if the given line (line `a`) and the given polygon + * are intersect. + * Note that we do not count colinear as intersect here because no + * requirement for that. We could do that if required in future. + */ + function linePolygonIntersect(a1x, a1y, a2x, a2y, points) { + for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) { + var p = points[i]; + if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) { + return true; + } + p2 = p; + } + } + /** + * Return `true` if the given two lines (line `a` and line `b`) + * are intersect. + * Note that we do not count colinear as intersect here because no + * requirement for that. We could do that if required in future. + */ + function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) { + // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`. + var mx = a2x - a1x; + var my = a2y - a1y; + var nx = b2x - b1x; + var ny = b2y - b1y; + // `vec_m` and `vec_n` are parallel iff + // existing `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`. + var nmCrossProduct = crossProduct2d(nx, ny, mx, my); + if (nearZero(nmCrossProduct)) { + return false; + } + // `vec_m` and `vec_n` are intersect iff + // existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`, + // such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)` + // and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`. + var b1a1x = a1x - b1x; + var b1a1y = a1y - b1y; + var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct; + if (q < 0 || q > 1) { + return false; + } + var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct; + if (p < 0 || p > 1) { + return false; + } + return true; + } + /** + * Cross product of 2-dimension vector. + */ + function crossProduct2d(x1, y1, x2, y2) { + return x1 * y2 - x2 * y1; + } + function nearZero(val) { + return val <= 1e-6 && val >= -1e-6; + } + function setTooltipConfig(opt) { + var itemTooltipOption = opt.itemTooltipOption; + var componentModel = opt.componentModel; + var itemName = opt.itemName; + var itemTooltipOptionObj = isString(itemTooltipOption) ? { + formatter: itemTooltipOption + } : itemTooltipOption; + var mainType = componentModel.mainType; + var componentIndex = componentModel.componentIndex; + var formatterParams = { + componentType: mainType, + name: itemName, + $vars: ['name'] + }; + formatterParams[mainType + 'Index'] = componentIndex; + var formatterParamsExtra = opt.formatterParamsExtra; + if (formatterParamsExtra) { + each(keys(formatterParamsExtra), function (key) { + if (!hasOwn(formatterParams, key)) { + formatterParams[key] = formatterParamsExtra[key]; + formatterParams.$vars.push(key); + } + }); + } + var ecData = getECData(opt.el); + ecData.componentMainType = mainType; + ecData.componentIndex = componentIndex; + ecData.tooltipConfig = { + name: itemName, + option: defaults({ + content: itemName, + formatterParams: formatterParams + }, itemTooltipOptionObj) + }; + } + function traverseElement(el, cb) { + var stopped; + // TODO + // Polyfill for fixing zrender group traverse don't visit it's root issue. + if (el.isGroup) { + stopped = cb(el); + } + if (!stopped) { + el.traverse(cb); + } + } + function traverseElements(els, cb) { + if (els) { + if (isArray(els)) { + for (var i = 0; i < els.length; i++) { + traverseElement(els[i], cb); + } + } else { + traverseElement(els, cb); + } + } + } + // Register built-in shapes. These shapes might be overwritten + // by users, although we do not recommend that. + registerShape('circle', Circle); + registerShape('ellipse', Ellipse); + registerShape('sector', Sector); + registerShape('ring', Ring); + registerShape('polygon', Polygon); + registerShape('polyline', Polyline); + registerShape('rect', Rect); + registerShape('line', Line); + registerShape('bezierCurve', BezierCurve); + registerShape('arc', Arc); + + var graphic = /*#__PURE__*/Object.freeze({ + __proto__: null, + updateProps: updateProps, + initProps: initProps, + removeElement: removeElement, + removeElementWithFadeOut: removeElementWithFadeOut, + isElementRemoved: isElementRemoved, + extendShape: extendShape, + extendPath: extendPath, + registerShape: registerShape, + getShapeClass: getShapeClass, + makePath: makePath, + makeImage: makeImage, + mergePath: mergePath$1, + resizePath: resizePath, + subPixelOptimizeLine: subPixelOptimizeLine$1, + subPixelOptimizeRect: subPixelOptimizeRect$1, + subPixelOptimize: subPixelOptimize$1, + getTransform: getTransform, + applyTransform: applyTransform$1, + transformDirection: transformDirection, + groupTransition: groupTransition, + clipPointsByRect: clipPointsByRect, + clipRectByRect: clipRectByRect, + createIcon: createIcon, + linePolygonIntersect: linePolygonIntersect, + lineLineIntersect: lineLineIntersect, + setTooltipConfig: setTooltipConfig, + traverseElements: traverseElements, + Group: Group, + Image: ZRImage, + Text: ZRText, + Circle: Circle, + Ellipse: Ellipse, + Sector: Sector, + Ring: Ring, + Polygon: Polygon, + Polyline: Polyline, + Rect: Rect, + Line: Line, + BezierCurve: BezierCurve, + Arc: Arc, + IncrementalDisplayable: IncrementalDisplayable, + CompoundPath: CompoundPath, + LinearGradient: LinearGradient, + RadialGradient: RadialGradient, + BoundingRect: BoundingRect, + OrientedBoundingRect: OrientedBoundingRect, + Point: Point, + Path: Path + }); + + var EMPTY_OBJ = {}; + function setLabelText(label, labelTexts) { + for (var i = 0; i < SPECIAL_STATES.length; i++) { + var stateName = SPECIAL_STATES[i]; + var text = labelTexts[stateName]; + var state = label.ensureState(stateName); + state.style = state.style || {}; + state.style.text = text; + } + var oldStates = label.currentStates.slice(); + label.clearStates(true); + label.setStyle({ + text: labelTexts.normal + }); + label.useStates(oldStates, true); + } + function getLabelText(opt, stateModels, interpolatedValue) { + var labelFetcher = opt.labelFetcher; + var labelDataIndex = opt.labelDataIndex; + var labelDimIndex = opt.labelDimIndex; + var normalModel = stateModels.normal; + var baseText; + if (labelFetcher) { + baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, normalModel && normalModel.get('formatter'), interpolatedValue != null ? { + interpolatedValue: interpolatedValue + } : null); + } + if (baseText == null) { + baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, interpolatedValue) : opt.defaultText; + } + var statesText = { + normal: baseText + }; + for (var i = 0; i < SPECIAL_STATES.length; i++) { + var stateName = SPECIAL_STATES[i]; + var stateModel = stateModels[stateName]; + statesText[stateName] = retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get('formatter')) : null, baseText); + } + return statesText; + } + function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified + // TODO specified position? + ) { + opt = opt || EMPTY_OBJ; + var isSetOnText = targetEl instanceof ZRText; + var needsCreateText = false; + for (var i = 0; i < DISPLAY_STATES.length; i++) { + var stateModel = labelStatesModels[DISPLAY_STATES[i]]; + if (stateModel && stateModel.getShallow('show')) { + needsCreateText = true; + break; + } + } + var textContent = isSetOnText ? targetEl : targetEl.getTextContent(); + if (needsCreateText) { + if (!isSetOnText) { + // Reuse the previous + if (!textContent) { + textContent = new ZRText(); + targetEl.setTextContent(textContent); + } + // Use same state proxy + if (targetEl.stateProxy) { + textContent.stateProxy = targetEl.stateProxy; + } + } + var labelStatesTexts = getLabelText(opt, labelStatesModels); + var normalModel = labelStatesModels.normal; + var showNormal = !!normalModel.getShallow('show'); + var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText); + normalStyle.text = labelStatesTexts.normal; + if (!isSetOnText) { + // Always create new + targetEl.setTextConfig(createTextConfig(normalModel, opt, false)); + } + for (var i = 0; i < SPECIAL_STATES.length; i++) { + var stateName = SPECIAL_STATES[i]; + var stateModel = labelStatesModels[stateName]; + if (stateModel) { + var stateObj = textContent.ensureState(stateName); + var stateShow = !!retrieve2(stateModel.getShallow('show'), showNormal); + if (stateShow !== showNormal) { + stateObj.ignore = !stateShow; + } + stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText); + stateObj.style.text = labelStatesTexts[stateName]; + if (!isSetOnText) { + var targetElEmphasisState = targetEl.ensureState(stateName); + targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true); + } + } + } + // PENDING: if there is many requirements that emphasis position + // need to be different from normal position, we might consider + // auto silent is those cases. + textContent.silent = !!normalModel.getShallow('silent'); + // Keep x and y + if (textContent.style.x != null) { + normalStyle.x = textContent.style.x; + } + if (textContent.style.y != null) { + normalStyle.y = textContent.style.y; + } + textContent.ignore = !showNormal; + // Always create new style. + textContent.useStyle(normalStyle); + textContent.dirty(); + if (opt.enableTextSetter) { + labelInner(textContent).setLabelText = function (interpolatedValue) { + var labelStatesTexts = getLabelText(opt, labelStatesModels, interpolatedValue); + setLabelText(textContent, labelStatesTexts); + }; + } + } else if (textContent) { + // Not display rich text. + textContent.ignore = true; + } + targetEl.dirty(); + } + function getLabelStatesModels(itemModel, labelName) { + labelName = labelName || 'label'; + var statesModels = { + normal: itemModel.getModel(labelName) + }; + for (var i = 0; i < SPECIAL_STATES.length; i++) { + var stateName = SPECIAL_STATES[i]; + statesModels[stateName] = itemModel.getModel([stateName, labelName]); + } + return statesModels; + } + /** + * Set basic textStyle properties. + */ + function createTextStyle(textStyleModel, specifiedTextStyle, + // Fixed style in the code. Can't be set by model. + opt, isNotNormal, isAttached // If text is attached on an element. If so, auto color will handling in zrender. + ) { + var textStyle = {}; + setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached); + specifiedTextStyle && extend(textStyle, specifiedTextStyle); + // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false); + return textStyle; + } + function createTextConfig(textStyleModel, opt, isNotNormal) { + opt = opt || {}; + var textConfig = {}; + var labelPosition; + var labelRotate = textStyleModel.getShallow('rotate'); + var labelDistance = retrieve2(textStyleModel.getShallow('distance'), isNotNormal ? null : 5); + var labelOffset = textStyleModel.getShallow('offset'); + labelPosition = textStyleModel.getShallow('position') || (isNotNormal ? null : 'inside'); + // 'outside' is not a valid zr textPostion value, but used + // in bar series, and magric type should be considered. + labelPosition === 'outside' && (labelPosition = opt.defaultOutsidePosition || 'top'); + if (labelPosition != null) { + textConfig.position = labelPosition; + } + if (labelOffset != null) { + textConfig.offset = labelOffset; + } + if (labelRotate != null) { + labelRotate *= Math.PI / 180; + textConfig.rotation = labelRotate; + } + if (labelDistance != null) { + textConfig.distance = labelDistance; + } + // fill and auto is determined by the color of path fill if it's not specified by developers. + textConfig.outsideFill = textStyleModel.get('color') === 'inherit' ? opt.inheritColor || null : 'auto'; + return textConfig; + } + /** + * The uniform entry of set text style, that is, retrieve style definitions + * from `model` and set to `textStyle` object. + * + * Never in merge mode, but in overwrite mode, that is, all of the text style + * properties will be set. (Consider the states of normal and emphasis and + * default value can be adopted, merge would make the logic too complicated + * to manage.) + */ + function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) { + // Consider there will be abnormal when merge hover style to normal style if given default value. + opt = opt || EMPTY_OBJ; + var ecModel = textStyleModel.ecModel; + var globalTextStyle = ecModel && ecModel.option.textStyle; + // Consider case: + // { + // data: [{ + // value: 12, + // label: { + // rich: { + // // no 'a' here but using parent 'a'. + // } + // } + // }], + // rich: { + // a: { ... } + // } + // } + var richItemNames = getRichItemNames(textStyleModel); + var richResult; + if (richItemNames) { + richResult = {}; + for (var name_1 in richItemNames) { + if (richItemNames.hasOwnProperty(name_1)) { + // Cascade is supported in rich. + var richTextStyle = textStyleModel.getModel(['rich', name_1]); + // In rich, never `disableBox`. + // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`, + // the default color `'blue'` will not be adopted if no color declared in `rich`. + // That might confuses users. So probably we should put `textStyleModel` as the + // root ancestor of the `richTextStyle`. But that would be a break change. + setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true); + } + } + } + if (richResult) { + textStyle.rich = richResult; + } + var overflow = textStyleModel.get('overflow'); + if (overflow) { + textStyle.overflow = overflow; + } + var margin = textStyleModel.get('minMargin'); + if (margin != null) { + textStyle.margin = margin; + } + setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false); + } + // Consider case: + // { + // data: [{ + // value: 12, + // label: { + // rich: { + // // no 'a' here but using parent 'a'. + // } + // } + // }], + // rich: { + // a: { ... } + // } + // } + // TODO TextStyleModel + function getRichItemNames(textStyleModel) { + // Use object to remove duplicated names. + var richItemNameMap; + while (textStyleModel && textStyleModel !== textStyleModel.ecModel) { + var rich = (textStyleModel.option || EMPTY_OBJ).rich; + if (rich) { + richItemNameMap = richItemNameMap || {}; + var richKeys = keys(rich); + for (var i = 0; i < richKeys.length; i++) { + var richKey = richKeys[i]; + richItemNameMap[richKey] = 1; + } + } + textStyleModel = textStyleModel.parentModel; + } + return richItemNameMap; + } + var TEXT_PROPS_WITH_GLOBAL = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY']; + var TEXT_PROPS_SELF = ['align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign', 'ellipsis']; + var TEXT_PROPS_BOX = ['padding', 'borderWidth', 'borderRadius', 'borderDashOffset', 'backgroundColor', 'borderColor', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY']; + function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) { + // In merge mode, default value should not be given. + globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ; + var inheritColor = opt && opt.inheritColor; + var fillColor = textStyleModel.getShallow('color'); + var strokeColor = textStyleModel.getShallow('textBorderColor'); + var opacity = retrieve2(textStyleModel.getShallow('opacity'), globalTextStyle.opacity); + if (fillColor === 'inherit' || fillColor === 'auto') { + if ("development" !== 'production') { + if (fillColor === 'auto') { + deprecateReplaceLog('color: \'auto\'', 'color: \'inherit\''); + } + } + if (inheritColor) { + fillColor = inheritColor; + } else { + fillColor = null; + } + } + if (strokeColor === 'inherit' || strokeColor === 'auto') { + if ("development" !== 'production') { + if (strokeColor === 'auto') { + deprecateReplaceLog('color: \'auto\'', 'color: \'inherit\''); + } + } + if (inheritColor) { + strokeColor = inheritColor; + } else { + strokeColor = null; + } + } + if (!isAttached) { + // Only use default global textStyle.color if text is individual. + // Otherwise it will use the strategy of attached text color because text may be on a path. + fillColor = fillColor || globalTextStyle.color; + strokeColor = strokeColor || globalTextStyle.textBorderColor; + } + if (fillColor != null) { + textStyle.fill = fillColor; + } + if (strokeColor != null) { + textStyle.stroke = strokeColor; + } + var textBorderWidth = retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth); + if (textBorderWidth != null) { + textStyle.lineWidth = textBorderWidth; + } + var textBorderType = retrieve2(textStyleModel.getShallow('textBorderType'), globalTextStyle.textBorderType); + if (textBorderType != null) { + textStyle.lineDash = textBorderType; + } + var textBorderDashOffset = retrieve2(textStyleModel.getShallow('textBorderDashOffset'), globalTextStyle.textBorderDashOffset); + if (textBorderDashOffset != null) { + textStyle.lineDashOffset = textBorderDashOffset; + } + if (!isNotNormal && opacity == null && !inRich) { + opacity = opt && opt.defaultOpacity; + } + if (opacity != null) { + textStyle.opacity = opacity; + } + // TODO + if (!isNotNormal && !isAttached) { + // Set default finally. + if (textStyle.fill == null && opt.inheritColor) { + textStyle.fill = opt.inheritColor; + } + } + // Do not use `getFont` here, because merge should be supported, where + // part of these properties may be changed in emphasis style, and the + // others should remain their original value got from normal style. + for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) { + var key = TEXT_PROPS_WITH_GLOBAL[i]; + var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]); + if (val != null) { + textStyle[key] = val; + } + } + for (var i = 0; i < TEXT_PROPS_SELF.length; i++) { + var key = TEXT_PROPS_SELF[i]; + var val = textStyleModel.getShallow(key); + if (val != null) { + textStyle[key] = val; + } + } + if (textStyle.verticalAlign == null) { + var baseline = textStyleModel.getShallow('baseline'); + if (baseline != null) { + textStyle.verticalAlign = baseline; + } + } + if (!isBlock || !opt.disableBox) { + for (var i = 0; i < TEXT_PROPS_BOX.length; i++) { + var key = TEXT_PROPS_BOX[i]; + var val = textStyleModel.getShallow(key); + if (val != null) { + textStyle[key] = val; + } + } + var borderType = textStyleModel.getShallow('borderType'); + if (borderType != null) { + textStyle.borderDash = borderType; + } + if ((textStyle.backgroundColor === 'auto' || textStyle.backgroundColor === 'inherit') && inheritColor) { + if ("development" !== 'production') { + if (textStyle.backgroundColor === 'auto') { + deprecateReplaceLog('backgroundColor: \'auto\'', 'backgroundColor: \'inherit\''); + } + } + textStyle.backgroundColor = inheritColor; + } + if ((textStyle.borderColor === 'auto' || textStyle.borderColor === 'inherit') && inheritColor) { + if ("development" !== 'production') { + if (textStyle.borderColor === 'auto') { + deprecateReplaceLog('borderColor: \'auto\'', 'borderColor: \'inherit\''); + } + } + textStyle.borderColor = inheritColor; + } + } + } + function getFont(opt, ecModel) { + var gTextStyleModel = ecModel && ecModel.getModel('textStyle'); + return trim([ + // FIXME in node-canvas fontWeight is before fontStyle + opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' ')); + } + var labelInner = makeInner(); + function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) { + if (!label) { + return; + } + var obj = labelInner(label); + obj.prevValue = obj.value; + obj.value = value; + var normalLabelModel = labelStatesModels.normal; + obj.valueAnimation = normalLabelModel.get('valueAnimation'); + if (obj.valueAnimation) { + obj.precision = normalLabelModel.get('precision'); + obj.defaultInterpolatedText = getDefaultText; + obj.statesModels = labelStatesModels; + } + } + function animateLabelValue(textEl, dataIndex, data, animatableModel, labelFetcher) { + var labelInnerStore = labelInner(textEl); + if (!labelInnerStore.valueAnimation || labelInnerStore.prevValue === labelInnerStore.value) { + // Value not changed, no new label animation + return; + } + var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText; + // Consider the case that being animating, do not use the `obj.value`, + // Otherwise it will jump to the `obj.value` when this new animation started. + var currValue = retrieve2(labelInnerStore.interpolatedValue, labelInnerStore.prevValue); + var targetValue = labelInnerStore.value; + function during(percent) { + var interpolated = interpolateRawValues(data, labelInnerStore.precision, currValue, targetValue, percent); + labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated; + var labelText = getLabelText({ + labelDataIndex: dataIndex, + labelFetcher: labelFetcher, + defaultText: defaultInterpolatedText ? defaultInterpolatedText(interpolated) : interpolated + '' + }, labelInnerStore.statesModels, interpolated); + setLabelText(textEl, labelText); + } + textEl.percent = 0; + (labelInnerStore.prevValue == null ? initProps : updateProps)(textEl, { + // percent is used to prevent animation from being aborted #15916 + percent: 1 + }, animatableModel, dataIndex, null, during); + } + + var PATH_COLOR = ['textStyle', 'color']; + var textStyleParams = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'padding', 'lineHeight', 'rich', 'width', 'height', 'overflow']; + // TODO Performance improvement? + var tmpText = new ZRText(); + var TextStyleMixin = /** @class */function () { + function TextStyleMixin() {} + /** + * Get color property or get color from option.textStyle.color + */ + // TODO Callback + TextStyleMixin.prototype.getTextColor = function (isEmphasis) { + var ecModel = this.ecModel; + return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null); + }; + /** + * Create font string from fontStyle, fontWeight, fontSize, fontFamily + * @return {string} + */ + TextStyleMixin.prototype.getFont = function () { + return getFont({ + fontStyle: this.getShallow('fontStyle'), + fontWeight: this.getShallow('fontWeight'), + fontSize: this.getShallow('fontSize'), + fontFamily: this.getShallow('fontFamily') + }, this.ecModel); + }; + TextStyleMixin.prototype.getTextRect = function (text) { + var style = { + text: text, + verticalAlign: this.getShallow('verticalAlign') || this.getShallow('baseline') + }; + for (var i = 0; i < textStyleParams.length; i++) { + style[textStyleParams[i]] = this.getShallow(textStyleParams[i]); + } + tmpText.useStyle(style); + tmpText.update(); + return tmpText.getBoundingRect(); + }; + return TextStyleMixin; + }(); + + var LINE_STYLE_KEY_MAP = [['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['lineDash', 'type'], ['lineDashOffset', 'dashOffset'], ['lineCap', 'cap'], ['lineJoin', 'join'], ['miterLimit'] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. + ]; + + var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP); + var LineStyleMixin = /** @class */function () { + function LineStyleMixin() {} + LineStyleMixin.prototype.getLineStyle = function (excludes) { + return getLineStyle(this, excludes); + }; + return LineStyleMixin; + }(); + + var ITEM_STYLE_KEY_MAP = [['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['lineDash', 'borderType'], ['lineDashOffset', 'borderDashOffset'], ['lineCap', 'borderCap'], ['lineJoin', 'borderJoin'], ['miterLimit', 'borderMiterLimit'] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. + ]; + + var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP); + var ItemStyleMixin = /** @class */function () { + function ItemStyleMixin() {} + ItemStyleMixin.prototype.getItemStyle = function (excludes, includes) { + return getItemStyle(this, excludes, includes); + }; + return ItemStyleMixin; + }(); + + var Model = /** @class */function () { + function Model(option, parentModel, ecModel) { + this.parentModel = parentModel; + this.ecModel = ecModel; + this.option = option; + // Simple optimization + // if (this.init) { + // if (arguments.length <= 4) { + // this.init(option, parentModel, ecModel, extraOpt); + // } + // else { + // this.init.apply(this, arguments); + // } + // } + } + + Model.prototype.init = function (option, parentModel, ecModel) { + var rest = []; + for (var _i = 3; _i < arguments.length; _i++) { + rest[_i - 3] = arguments[_i]; + } + }; + /** + * Merge the input option to me. + */ + Model.prototype.mergeOption = function (option, ecModel) { + merge(this.option, option, true); + }; + // `path` can be 'a.b.c', so the return value type have to be `ModelOption` + // TODO: TYPE strict key check? + // get(path: string | string[], ignoreParent?: boolean): ModelOption; + Model.prototype.get = function (path, ignoreParent) { + if (path == null) { + return this.option; + } + return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel); + }; + Model.prototype.getShallow = function (key, ignoreParent) { + var option = this.option; + var val = option == null ? option : option[key]; + if (val == null && !ignoreParent) { + var parentModel = this.parentModel; + if (parentModel) { + // FIXME:TS do not know how to make it works + val = parentModel.getShallow(key); + } + } + return val; + }; + // `path` can be 'a.b.c', so the return value type have to be `Model` + // getModel(path: string | string[], parentModel?: Model): Model; + // TODO 'a.b.c' is deprecated + Model.prototype.getModel = function (path, parentModel) { + var hasPath = path != null; + var pathFinal = hasPath ? this.parsePath(path) : null; + var obj = hasPath ? this._doGet(pathFinal) : this.option; + parentModel = parentModel || this.parentModel && this.parentModel.getModel(this.resolveParentPath(pathFinal)); + return new Model(obj, parentModel, this.ecModel); + }; + /** + * If model has option + */ + Model.prototype.isEmpty = function () { + return this.option == null; + }; + Model.prototype.restoreData = function () {}; + // Pending + Model.prototype.clone = function () { + var Ctor = this.constructor; + return new Ctor(clone(this.option)); + }; + // setReadOnly(properties): void { + // clazzUtil.setReadOnly(this, properties); + // } + // If path is null/undefined, return null/undefined. + Model.prototype.parsePath = function (path) { + if (typeof path === 'string') { + return path.split('.'); + } + return path; + }; + // Resolve path for parent. Perhaps useful when parent use a different property. + // Default to be a identity resolver. + // Can be modified to a different resolver. + Model.prototype.resolveParentPath = function (path) { + return path; + }; + // FIXME:TS check whether put this method here + Model.prototype.isAnimationEnabled = function () { + if (!env.node && this.option) { + if (this.option.animation != null) { + return !!this.option.animation; + } else if (this.parentModel) { + return this.parentModel.isAnimationEnabled(); + } + } + }; + Model.prototype._doGet = function (pathArr, parentModel) { + var obj = this.option; + if (!pathArr) { + return obj; + } + for (var i = 0; i < pathArr.length; i++) { + // Ignore empty + if (!pathArr[i]) { + continue; + } + // obj could be number/string/... (like 0) + obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null; + if (obj == null) { + break; + } + } + if (obj == null && parentModel) { + obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel); + } + return obj; + }; + return Model; + }(); + // Enable Model.extend. + enableClassExtend(Model); + enableClassCheck(Model); + mixin(Model, LineStyleMixin); + mixin(Model, ItemStyleMixin); + mixin(Model, AreaStyleMixin); + mixin(Model, TextStyleMixin); + + // A random offset + var base = Math.round(Math.random() * 10); + /** + * @public + * @param {string} type + * @return {string} + */ + function getUID(type) { + // Considering the case of crossing js context, + // use Math.random to make id as unique as possible. + return [type || '', base++].join('_'); + } + /** + * Implements `SubTypeDefaulterManager` for `target`. + */ + function enableSubTypeDefaulter(target) { + var subTypeDefaulters = {}; + target.registerSubTypeDefaulter = function (componentType, defaulter) { + var componentTypeInfo = parseClassType(componentType); + subTypeDefaulters[componentTypeInfo.main] = defaulter; + }; + target.determineSubType = function (componentType, option) { + var type = option.type; + if (!type) { + var componentTypeMain = parseClassType(componentType).main; + if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) { + type = subTypeDefaulters[componentTypeMain](option); + } + } + return type; + }; + } + /** + * Implements `TopologicalTravelable` for `entity`. + * + * Topological travel on Activity Network (Activity On Vertices). + * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis']. + * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology. + * If there is circular dependencey, Error will be thrown. + */ + function enableTopologicalTravel(entity, dependencyGetter) { + /** + * @param targetNameList Target Component type list. + * Can be ['aa', 'bb', 'aa.xx'] + * @param fullNameList By which we can build dependency graph. + * @param callback Params: componentType, dependencies. + * @param context Scope of callback. + */ + entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) { + if (!targetNameList.length) { + return; + } + var result = makeDepndencyGraph(fullNameList); + var graph = result.graph; + var noEntryList = result.noEntryList; + var targetNameSet = {}; + each(targetNameList, function (name) { + targetNameSet[name] = true; + }); + while (noEntryList.length) { + var currComponentType = noEntryList.pop(); + var currVertex = graph[currComponentType]; + var isInTargetNameSet = !!targetNameSet[currComponentType]; + if (isInTargetNameSet) { + callback.call(context, currComponentType, currVertex.originalDeps.slice()); + delete targetNameSet[currComponentType]; + } + each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge); + } + each(targetNameSet, function () { + var errMsg = ''; + if ("development" !== 'production') { + errMsg = makePrintable('Circular dependency may exists: ', targetNameSet, targetNameList, fullNameList); + } + throw new Error(errMsg); + }); + function removeEdge(succComponentType) { + graph[succComponentType].entryCount--; + if (graph[succComponentType].entryCount === 0) { + noEntryList.push(succComponentType); + } + } + // Consider this case: legend depends on series, and we call + // chart.setOption({series: [...]}), where only series is in option. + // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will + // not be called, but only sereis.mergeOption is called. Thus legend + // have no chance to update its local record about series (like which + // name of series is available in legend). + function removeEdgeAndAdd(succComponentType) { + targetNameSet[succComponentType] = true; + removeEdge(succComponentType); + } + }; + function makeDepndencyGraph(fullNameList) { + var graph = {}; + var noEntryList = []; + each(fullNameList, function (name) { + var thisItem = createDependencyGraphItem(graph, name); + var originalDeps = thisItem.originalDeps = dependencyGetter(name); + var availableDeps = getAvailableDependencies(originalDeps, fullNameList); + thisItem.entryCount = availableDeps.length; + if (thisItem.entryCount === 0) { + noEntryList.push(name); + } + each(availableDeps, function (dependentName) { + if (indexOf(thisItem.predecessor, dependentName) < 0) { + thisItem.predecessor.push(dependentName); + } + var thatItem = createDependencyGraphItem(graph, dependentName); + if (indexOf(thatItem.successor, dependentName) < 0) { + thatItem.successor.push(name); + } + }); + }); + return { + graph: graph, + noEntryList: noEntryList + }; + } + function createDependencyGraphItem(graph, name) { + if (!graph[name]) { + graph[name] = { + predecessor: [], + successor: [] + }; + } + return graph[name]; + } + function getAvailableDependencies(originalDeps, fullNameList) { + var availableDeps = []; + each(originalDeps, function (dep) { + indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep); + }); + return availableDeps; + } + } + function inheritDefaultOption(superOption, subOption) { + // See also `model/Component.ts#getDefaultOption` + return merge(merge({}, superOption, true), subOption, true); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /** + * Language: English. + */ + var langEN = { + 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', + custom: 'Custom chart', + chart: 'Chart' + } + }, + 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: '. ' + } + } + } + }; + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var langZH = { + 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: '旭日图', + custom: '自定义图表', + chart: '图表' + } + }, + 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 LOCALE_ZH = 'ZH'; + var LOCALE_EN = 'EN'; + var DEFAULT_LOCALE = LOCALE_EN; + var localeStorage = {}; + var localeModels = {}; + var SYSTEM_LANG = !env.domSupported ? DEFAULT_LOCALE : function () { + var langStr = ( /* eslint-disable-next-line */ + document.documentElement.lang || navigator.language || navigator.browserLanguage || DEFAULT_LOCALE).toUpperCase(); + return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE; + }(); + function registerLocale(locale, localeObj) { + locale = locale.toUpperCase(); + localeModels[locale] = new Model(localeObj); + localeStorage[locale] = localeObj; + } + // export function getLocale(locale: string) { + // return localeStorage[locale]; + // } + function createLocaleObject(locale) { + if (isString(locale)) { + var localeObj = localeStorage[locale.toUpperCase()] || {}; + if (locale === LOCALE_ZH || locale === LOCALE_EN) { + return clone(localeObj); + } else { + return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false); + } + } else { + return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false); + } + } + function getLocaleModel(lang) { + return localeModels[lang]; + } + function getDefaultLocaleModel() { + return localeModels[DEFAULT_LOCALE]; + } + // Default locale + registerLocale(LOCALE_EN, langEN); + registerLocale(LOCALE_ZH, langZH); + + var ONE_SECOND = 1000; + var ONE_MINUTE = ONE_SECOND * 60; + var ONE_HOUR = ONE_MINUTE * 60; + var ONE_DAY = ONE_HOUR * 24; + var ONE_YEAR = ONE_DAY * 365; + var defaultLeveledFormatter = { + 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}' + }; + var fullDayFormatter = '{yyyy}-{MM}-{dd}'; + var fullLeveledFormatter = { + year: '{yyyy}', + month: '{yyyy}-{MM}', + day: fullDayFormatter, + hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour, + minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute, + second: fullDayFormatter + ' ' + defaultLeveledFormatter.second, + millisecond: defaultLeveledFormatter.none + }; + var primaryTimeUnits = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond']; + var timeUnits = ['year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day', 'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond']; + function pad(str, len) { + str += ''; + return '0000'.substr(0, len - str.length) + str; + } + function getPrimaryTimeUnit(timeUnit) { + switch (timeUnit) { + case 'half-year': + case 'quarter': + return 'month'; + case 'week': + case 'half-week': + return 'day'; + case 'half-day': + case 'quarter-day': + return 'hour'; + default: + // year, minutes, second, milliseconds + return timeUnit; + } + } + function isPrimaryTimeUnit(timeUnit) { + return timeUnit === getPrimaryTimeUnit(timeUnit); + } + function getDefaultFormatPrecisionOfInterval(timeUnit) { + switch (timeUnit) { + case 'year': + case 'month': + return 'day'; + case 'millisecond': + return 'millisecond'; + default: + // Also for day, hour, minute, second + return 'second'; + } + } + function format( + // Note: The result based on `isUTC` are totally different, which can not be just simply + // substituted by the result without `isUTC`. So we make the param `isUTC` mandatory. + time, template, isUTC, lang) { + var date = parseDate(time); + var y = date[fullYearGetterName(isUTC)](); + var M = date[monthGetterName(isUTC)]() + 1; + var q = Math.floor((M - 1) / 3) + 1; + var d = date[dateGetterName(isUTC)](); + var e = date['get' + (isUTC ? 'UTC' : '') + 'Day'](); + var H = date[hoursGetterName(isUTC)](); + var h = (H - 1) % 12 + 1; + var m = date[minutesGetterName(isUTC)](); + var s = date[secondsGetterName(isUTC)](); + var S = date[millisecondsGetterName(isUTC)](); + var localeModel = lang instanceof Model ? lang : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel(); + var timeModel = localeModel.getModel('time'); + var month = timeModel.get('month'); + var monthAbbr = timeModel.get('monthAbbr'); + var dayOfWeek = timeModel.get('dayOfWeek'); + var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr'); + return (template || '').replace(/{yyyy}/g, y + '').replace(/{yy}/g, pad(y % 100 + '', 2)).replace(/{Q}/g, q + '').replace(/{MMMM}/g, month[M - 1]).replace(/{MMM}/g, monthAbbr[M - 1]).replace(/{MM}/g, pad(M, 2)).replace(/{M}/g, M + '').replace(/{dd}/g, pad(d, 2)).replace(/{d}/g, d + '').replace(/{eeee}/g, dayOfWeek[e]).replace(/{ee}/g, dayOfWeekAbbr[e]).replace(/{e}/g, e + '').replace(/{HH}/g, pad(H, 2)).replace(/{H}/g, H + '').replace(/{hh}/g, pad(h + '', 2)).replace(/{h}/g, h + '').replace(/{mm}/g, pad(m, 2)).replace(/{m}/g, m + '').replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + '').replace(/{SSS}/g, pad(S, 3)).replace(/{S}/g, S + ''); + } + function leveledFormat(tick, idx, formatter, lang, isUTC) { + var template = null; + if (isString(formatter)) { + // Single formatter for all units at all levels + template = formatter; + } else if (isFunction(formatter)) { + // Callback formatter + template = formatter(tick.value, idx, { + level: tick.level + }); + } else { + var defaults$1 = extend({}, defaultLeveledFormatter); + if (tick.level > 0) { + for (var i = 0; i < primaryTimeUnits.length; ++i) { + defaults$1[primaryTimeUnits[i]] = "{primary|" + defaults$1[primaryTimeUnits[i]] + "}"; + } + } + var mergedFormatter = formatter ? formatter.inherit === false ? formatter // Use formatter with bigger units + : defaults(formatter, defaults$1) : defaults$1; + var unit = getUnitFromValue(tick.value, isUTC); + if (mergedFormatter[unit]) { + template = mergedFormatter[unit]; + } else if (mergedFormatter.inherit) { + // Unit formatter is not defined and should inherit from bigger units + var targetId = timeUnits.indexOf(unit); + for (var i = targetId - 1; i >= 0; --i) { + if (mergedFormatter[unit]) { + template = mergedFormatter[unit]; + break; + } + } + template = template || defaults$1.none; + } + if (isArray(template)) { + var levelId = tick.level == null ? 0 : tick.level >= 0 ? tick.level : template.length + tick.level; + levelId = Math.min(levelId, template.length - 1); + template = template[levelId]; + } + } + return format(new Date(tick.value), template, isUTC, lang); + } + function getUnitFromValue(value, isUTC) { + var date = parseDate(value); + var M = date[monthGetterName(isUTC)]() + 1; + var d = date[dateGetterName(isUTC)](); + var h = date[hoursGetterName(isUTC)](); + var m = date[minutesGetterName(isUTC)](); + var s = date[secondsGetterName(isUTC)](); + var S = date[millisecondsGetterName(isUTC)](); + var isSecond = S === 0; + var isMinute = isSecond && s === 0; + var isHour = isMinute && m === 0; + var isDay = isHour && h === 0; + var isMonth = isDay && d === 1; + var isYear = isMonth && M === 1; + if (isYear) { + return 'year'; + } else if (isMonth) { + return 'month'; + } else if (isDay) { + return 'day'; + } else if (isHour) { + return 'hour'; + } else if (isMinute) { + return 'minute'; + } else if (isSecond) { + return 'second'; + } else { + return 'millisecond'; + } + } + function getUnitValue(value, unit, isUTC) { + var date = isNumber(value) ? parseDate(value) : value; + unit = unit || getUnitFromValue(value, isUTC); + switch (unit) { + case 'year': + return date[fullYearGetterName(isUTC)](); + case 'half-year': + return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0; + case 'quarter': + return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4); + case 'month': + return date[monthGetterName(isUTC)](); + case 'day': + return date[dateGetterName(isUTC)](); + case 'half-day': + return date[hoursGetterName(isUTC)]() / 24; + case 'hour': + return date[hoursGetterName(isUTC)](); + case 'minute': + return date[minutesGetterName(isUTC)](); + case 'second': + return date[secondsGetterName(isUTC)](); + case 'millisecond': + return date[millisecondsGetterName(isUTC)](); + } + } + function fullYearGetterName(isUTC) { + return isUTC ? 'getUTCFullYear' : 'getFullYear'; + } + function monthGetterName(isUTC) { + return isUTC ? 'getUTCMonth' : 'getMonth'; + } + function dateGetterName(isUTC) { + return isUTC ? 'getUTCDate' : 'getDate'; + } + function hoursGetterName(isUTC) { + return isUTC ? 'getUTCHours' : 'getHours'; + } + function minutesGetterName(isUTC) { + return isUTC ? 'getUTCMinutes' : 'getMinutes'; + } + function secondsGetterName(isUTC) { + return isUTC ? 'getUTCSeconds' : 'getSeconds'; + } + function millisecondsGetterName(isUTC) { + return isUTC ? 'getUTCMilliseconds' : 'getMilliseconds'; + } + function fullYearSetterName(isUTC) { + return isUTC ? 'setUTCFullYear' : 'setFullYear'; + } + function monthSetterName(isUTC) { + return isUTC ? 'setUTCMonth' : 'setMonth'; + } + function dateSetterName(isUTC) { + return isUTC ? 'setUTCDate' : 'setDate'; + } + function hoursSetterName(isUTC) { + return isUTC ? 'setUTCHours' : 'setHours'; + } + function minutesSetterName(isUTC) { + return isUTC ? 'setUTCMinutes' : 'setMinutes'; + } + function secondsSetterName(isUTC) { + return isUTC ? 'setUTCSeconds' : 'setSeconds'; + } + function millisecondsSetterName(isUTC) { + return isUTC ? 'setUTCMilliseconds' : 'setMilliseconds'; + } + + function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) { + var textEl = new ZRText({ + style: { + text: text, + font: font, + align: align, + verticalAlign: verticalAlign, + padding: padding, + rich: rich, + overflow: truncate ? 'truncate' : null, + lineHeight: lineHeight + } + }); + return textEl.getBoundingRect(); + } + + /** + * Add a comma each three digit. + */ + function addCommas(x) { + if (!isNumeric(x)) { + return isString(x) ? x : '-'; + } + var parts = (x + '').split('.'); + return parts[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') + (parts.length > 1 ? '.' + parts[1] : ''); + } + function toCamelCase(str, upperCaseFirst) { + str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) { + return group1.toUpperCase(); + }); + if (upperCaseFirst && str) { + str = str.charAt(0).toUpperCase() + str.slice(1); + } + return str; + } + var normalizeCssArray$1 = normalizeCssArray; + /** + * Make value user readable for tooltip and label. + * "User readable": + * Try to not print programmer-specific text like NaN, Infinity, null, undefined. + * Avoid to display an empty string, which users can not recognize there is + * a value and it might look like a bug. + */ + function makeValueReadable(value, valueType, useUTC) { + var USER_READABLE_DEFUALT_TIME_PATTERN = '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}'; + function stringToUserReadable(str) { + return str && trim(str) ? str : '-'; + } + function isNumberUserReadable(num) { + return !!(num != null && !isNaN(num) && isFinite(num)); + } + var isTypeTime = valueType === 'time'; + var isValueDate = value instanceof Date; + if (isTypeTime || isValueDate) { + var date = isTypeTime ? parseDate(value) : value; + if (!isNaN(+date)) { + return format(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC); + } else if (isValueDate) { + return '-'; + } + // In other cases, continue to try to display the value in the following code. + } + + if (valueType === 'ordinal') { + return isStringSafe(value) ? stringToUserReadable(value) : isNumber(value) ? isNumberUserReadable(value) ? value + '' : '-' : '-'; + } + // By default. + var numericResult = numericToNumber(value); + return isNumberUserReadable(numericResult) ? addCommas(numericResult) : isStringSafe(value) ? stringToUserReadable(value) : typeof value === 'boolean' ? value + '' : '-'; + } + var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g']; + var wrapVar = function (varName, seriesIdx) { + return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}'; + }; + /** + * Template formatter + * @param {Array.|Object} paramsList + */ + function formatTpl(tpl, paramsList, encode) { + if (!isArray(paramsList)) { + paramsList = [paramsList]; + } + var seriesLen = paramsList.length; + if (!seriesLen) { + return ''; + } + var $vars = paramsList[0].$vars || []; + for (var i = 0; i < $vars.length; i++) { + var alias = TPL_VAR_ALIAS[i]; + tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0)); + } + for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) { + for (var k = 0; k < $vars.length; k++) { + var val = paramsList[seriesIdx][$vars[k]]; + tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val); + } + } + return tpl; + } + /** + * simple Template formatter + */ + function formatTplSimple(tpl, param, encode) { + each(param, function (value, key) { + tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value); + }); + return tpl; + } + function getTooltipMarker(inOpt, extraCssText) { + var opt = isString(inOpt) ? { + color: inOpt, + extraCssText: extraCssText + } : inOpt || {}; + var color = opt.color; + var type = opt.type; + extraCssText = opt.extraCssText; + var renderMode = opt.renderMode || 'html'; + if (!color) { + return ''; + } + if (renderMode === 'html') { + return type === 'subItem' ? '' : ''; + } else { + // Should better not to auto generate style name by auto-increment number here. + // Because this util is usually called in tooltip formatter, which is probably + // called repeatedly when mouse move and the auto-increment number increases fast. + // Users can make their own style name by theirselves, make it unique and readable. + var markerId = opt.markerId || 'markerX'; + return { + renderMode: renderMode, + content: '{' + markerId + '|} ', + style: type === 'subItem' ? { + width: 4, + height: 4, + borderRadius: 2, + backgroundColor: color + } : { + width: 10, + height: 10, + borderRadius: 5, + backgroundColor: color + } + }; + } + } + /** + * @deprecated Use `time/format` instead. + * ISO Date format + * @param {string} tpl + * @param {number} value + * @param {boolean} [isUTC=false] Default in local time. + * see `module:echarts/scale/Time` + * and `module:echarts/util/number#parseDate`. + * @inner + */ + function formatTime(tpl, value, isUTC) { + if ("development" !== 'production') { + deprecateReplaceLog('echarts.format.formatTime', 'echarts.time.format'); + } + if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') { + tpl = 'MM-dd\nyyyy'; + } + var date = parseDate(value); + var getUTC = isUTC ? 'getUTC' : 'get'; + var y = date[getUTC + 'FullYear'](); + var M = date[getUTC + 'Month']() + 1; + var d = date[getUTC + 'Date'](); + var h = date[getUTC + 'Hours'](); + var m = date[getUTC + 'Minutes'](); + var s = date[getUTC + 'Seconds'](); + var S = date[getUTC + 'Milliseconds'](); + tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', pad(y % 100 + '', 2)).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3)); + return tpl; + } + /** + * Capital first + * @param {string} str + * @return {string} + */ + function capitalFirst(str) { + return str ? str.charAt(0).toUpperCase() + str.substr(1) : str; + } + /** + * @return Never be null/undefined. + */ + function convertToColorString(color, defaultColor) { + defaultColor = defaultColor || 'transparent'; + return isString(color) ? color : isObject(color) ? color.colorStops && (color.colorStops[0] || {}).color || defaultColor : defaultColor; + } + /** + * open new tab + * @param link url + * @param target blank or self + */ + function windowOpen(link, target) { + /* global window */ + if (target === '_blank' || target === 'blank') { + var blank = window.open(); + blank.opener = null; + blank.location.href = link; + } else { + window.open(link, target); + } + } + + var each$1 = each; + /** + * @public + */ + var LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height']; + /** + * @public + */ + var HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']]; + function boxLayout(orient, group, gap, maxWidth, maxHeight) { + var x = 0; + var y = 0; + if (maxWidth == null) { + maxWidth = Infinity; + } + if (maxHeight == null) { + maxHeight = Infinity; + } + var currentLineMaxSize = 0; + group.eachChild(function (child, idx) { + var rect = child.getBoundingRect(); + var nextChild = group.childAt(idx + 1); + var nextChildRect = nextChild && nextChild.getBoundingRect(); + var nextX; + var nextY; + if (orient === 'horizontal') { + var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0); + nextX = x + moveX; + // Wrap when width exceeds maxWidth or meet a `newline` group + // FIXME compare before adding gap? + if (nextX > maxWidth || child.newline) { + x = 0; + nextX = moveX; + y += currentLineMaxSize + gap; + currentLineMaxSize = rect.height; + } else { + // FIXME: consider rect.y is not `0`? + currentLineMaxSize = Math.max(currentLineMaxSize, rect.height); + } + } else { + var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0); + nextY = y + moveY; + // Wrap when width exceeds maxHeight or meet a `newline` group + if (nextY > maxHeight || child.newline) { + x += currentLineMaxSize + gap; + y = 0; + nextY = moveY; + currentLineMaxSize = rect.width; + } else { + currentLineMaxSize = Math.max(currentLineMaxSize, rect.width); + } + } + if (child.newline) { + return; + } + child.x = x; + child.y = y; + child.markRedraw(); + orient === 'horizontal' ? x = nextX + gap : y = nextY + gap; + }); + } + /** + * VBox or HBox layouting + * @param {string} orient + * @param {module:zrender/graphic/Group} group + * @param {number} gap + * @param {number} [width=Infinity] + * @param {number} [height=Infinity] + */ + var box = boxLayout; + /** + * VBox layouting + * @param {module:zrender/graphic/Group} group + * @param {number} gap + * @param {number} [width=Infinity] + * @param {number} [height=Infinity] + */ + var vbox = curry(boxLayout, 'vertical'); + /** + * HBox layouting + * @param {module:zrender/graphic/Group} group + * @param {number} gap + * @param {number} [width=Infinity] + * @param {number} [height=Infinity] + */ + var hbox = curry(boxLayout, 'horizontal'); + /** + * If x or x2 is not specified or 'center' 'left' 'right', + * the width would be as long as possible. + * If y or y2 is not specified or 'middle' 'top' 'bottom', + * the height would be as long as possible. + */ + function getAvailableSize(positionInfo, containerRect, margin) { + var containerWidth = containerRect.width; + var containerHeight = containerRect.height; + var x = parsePercent$1(positionInfo.left, containerWidth); + var y = parsePercent$1(positionInfo.top, containerHeight); + var x2 = parsePercent$1(positionInfo.right, containerWidth); + var y2 = parsePercent$1(positionInfo.bottom, containerHeight); + (isNaN(x) || isNaN(parseFloat(positionInfo.left))) && (x = 0); + (isNaN(x2) || isNaN(parseFloat(positionInfo.right))) && (x2 = containerWidth); + (isNaN(y) || isNaN(parseFloat(positionInfo.top))) && (y = 0); + (isNaN(y2) || isNaN(parseFloat(positionInfo.bottom))) && (y2 = containerHeight); + margin = normalizeCssArray$1(margin || 0); + return { + width: Math.max(x2 - x - margin[1] - margin[3], 0), + height: Math.max(y2 - y - margin[0] - margin[2], 0) + }; + } + /** + * Parse position info. + */ + function getLayoutRect(positionInfo, containerRect, margin) { + margin = normalizeCssArray$1(margin || 0); + var containerWidth = containerRect.width; + var containerHeight = containerRect.height; + var left = parsePercent$1(positionInfo.left, containerWidth); + var top = parsePercent$1(positionInfo.top, containerHeight); + var right = parsePercent$1(positionInfo.right, containerWidth); + var bottom = parsePercent$1(positionInfo.bottom, containerHeight); + var width = parsePercent$1(positionInfo.width, containerWidth); + var height = parsePercent$1(positionInfo.height, containerHeight); + var verticalMargin = margin[2] + margin[0]; + var horizontalMargin = margin[1] + margin[3]; + var aspect = positionInfo.aspect; + // If width is not specified, calculate width from left and right + if (isNaN(width)) { + width = containerWidth - right - horizontalMargin - left; + } + if (isNaN(height)) { + height = containerHeight - bottom - verticalMargin - top; + } + if (aspect != null) { + // If width and height are not given + // 1. Graph should not exceeds the container + // 2. Aspect must be keeped + // 3. Graph should take the space as more as possible + // FIXME + // Margin is not considered, because there is no case that both + // using margin and aspect so far. + if (isNaN(width) && isNaN(height)) { + if (aspect > containerWidth / containerHeight) { + width = containerWidth * 0.8; + } else { + height = containerHeight * 0.8; + } + } + // Calculate width or height with given aspect + if (isNaN(width)) { + width = aspect * height; + } + if (isNaN(height)) { + height = width / aspect; + } + } + // If left is not specified, calculate left from right and width + if (isNaN(left)) { + left = containerWidth - right - width - horizontalMargin; + } + if (isNaN(top)) { + top = containerHeight - bottom - height - verticalMargin; + } + // Align left and top + switch (positionInfo.left || positionInfo.right) { + case 'center': + left = containerWidth / 2 - width / 2 - margin[3]; + break; + case 'right': + left = containerWidth - width - horizontalMargin; + break; + } + switch (positionInfo.top || positionInfo.bottom) { + case 'middle': + case 'center': + top = containerHeight / 2 - height / 2 - margin[0]; + break; + case 'bottom': + top = containerHeight - height - verticalMargin; + break; + } + // If something is wrong and left, top, width, height are calculated as NaN + left = left || 0; + top = top || 0; + if (isNaN(width)) { + // Width may be NaN if only one value is given except width + width = containerWidth - horizontalMargin - left - (right || 0); + } + if (isNaN(height)) { + // Height may be NaN if only one value is given except height + height = containerHeight - verticalMargin - top - (bottom || 0); + } + var rect = new BoundingRect(left + margin[3], top + margin[0], width, height); + rect.margin = margin; + return rect; + } + /** + * Position a zr element in viewport + * Group position is specified by either + * {left, top}, {right, bottom} + * If all properties exists, right and bottom will be igonred. + * + * Logic: + * 1. Scale (against origin point in parent coord) + * 2. Rotate (against origin point in parent coord) + * 3. Translate (with el.position by this method) + * So this method only fixes the last step 'Translate', which does not affect + * scaling and rotating. + * + * If be called repeatedly with the same input el, the same result will be gotten. + * + * Return true if the layout happened. + * + * @param el Should have `getBoundingRect` method. + * @param positionInfo + * @param positionInfo.left + * @param positionInfo.top + * @param positionInfo.right + * @param positionInfo.bottom + * @param positionInfo.width Only for opt.boundingModel: 'raw' + * @param positionInfo.height Only for opt.boundingModel: 'raw' + * @param containerRect + * @param margin + * @param opt + * @param opt.hv Only horizontal or only vertical. Default to be [1, 1] + * @param opt.boundingMode + * Specify how to calculate boundingRect when locating. + * 'all': Position the boundingRect that is transformed and uioned + * both itself and its descendants. + * This mode simplies confine the elements in the bounding + * of their container (e.g., using 'right: 0'). + * 'raw': Position the boundingRect that is not transformed and only itself. + * This mode is useful when you want a element can overflow its + * container. (Consider a rotated circle needs to be located in a corner.) + * In this mode positionInfo.width/height can only be number. + */ + function positionElement(el, positionInfo, containerRect, margin, opt, out) { + var h = !opt || !opt.hv || opt.hv[0]; + var v = !opt || !opt.hv || opt.hv[1]; + var boundingMode = opt && opt.boundingMode || 'all'; + out = out || el; + out.x = el.x; + out.y = el.y; + if (!h && !v) { + return false; + } + var rect; + if (boundingMode === 'raw') { + rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect(); + } else { + rect = el.getBoundingRect(); + if (el.needLocalTransform()) { + var transform = el.getLocalTransform(); + // Notice: raw rect may be inner object of el, + // which should not be modified. + rect = rect.clone(); + rect.applyTransform(transform); + } + } + // The real width and height can not be specified but calculated by the given el. + var layoutRect = getLayoutRect(defaults({ + width: rect.width, + height: rect.height + }, positionInfo), containerRect, margin); + // Because 'tranlate' is the last step in transform + // (see zrender/core/Transformable#getLocalTransform), + // we can just only modify el.position to get final result. + var dx = h ? layoutRect.x - rect.x : 0; + var dy = v ? layoutRect.y - rect.y : 0; + if (boundingMode === 'raw') { + out.x = dx; + out.y = dy; + } else { + out.x += dx; + out.y += dy; + } + if (out === el) { + el.markRedraw(); + } + return true; + } + /** + * @param option Contains some of the properties in HV_NAMES. + * @param hvIdx 0: horizontal; 1: vertical. + */ + function sizeCalculable(option, hvIdx) { + return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null; + } + function fetchLayoutMode(ins) { + var layoutMode = ins.layoutMode || ins.constructor.layoutMode; + return isObject(layoutMode) ? layoutMode : layoutMode ? { + type: layoutMode + } : null; + } + /** + * Consider Case: + * When default option has {left: 0, width: 100}, and we set {right: 0} + * through setOption or media query, using normal zrUtil.merge will cause + * {right: 0} does not take effect. + * + * @example + * ComponentModel.extend({ + * init: function () { + * ... + * let inputPositionParams = layout.getLayoutParams(option); + * this.mergeOption(inputPositionParams); + * }, + * mergeOption: function (newOption) { + * newOption && zrUtil.merge(thisOption, newOption, true); + * layout.mergeLayoutParam(thisOption, newOption); + * } + * }); + * + * @param targetOption + * @param newOption + * @param opt + */ + function mergeLayoutParam(targetOption, newOption, opt) { + var ignoreSize = opt && opt.ignoreSize; + !isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]); + var hResult = merge(HV_NAMES[0], 0); + var vResult = merge(HV_NAMES[1], 1); + copy(HV_NAMES[0], targetOption, hResult); + copy(HV_NAMES[1], targetOption, vResult); + function merge(names, hvIdx) { + var newParams = {}; + var newValueCount = 0; + var merged = {}; + var mergedValueCount = 0; + var enoughParamNumber = 2; + each$1(names, function (name) { + merged[name] = targetOption[name]; + }); + each$1(names, function (name) { + // Consider case: newOption.width is null, which is + // set by user for removing width setting. + hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]); + hasValue(newParams, name) && newValueCount++; + hasValue(merged, name) && mergedValueCount++; + }); + if (ignoreSize[hvIdx]) { + // Only one of left/right is premitted to exist. + if (hasValue(newOption, names[1])) { + merged[names[2]] = null; + } else if (hasValue(newOption, names[2])) { + merged[names[1]] = null; + } + return merged; + } + // Case: newOption: {width: ..., right: ...}, + // or targetOption: {right: ...} and newOption: {width: ...}, + // There is no conflict when merged only has params count + // little than enoughParamNumber. + if (mergedValueCount === enoughParamNumber || !newValueCount) { + return merged; + } + // Case: newOption: {width: ..., right: ...}, + // Than we can make sure user only want those two, and ignore + // all origin params in targetOption. + else if (newValueCount >= enoughParamNumber) { + return newParams; + } else { + // Chose another param from targetOption by priority. + for (var i = 0; i < names.length; i++) { + var name_1 = names[i]; + if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) { + newParams[name_1] = targetOption[name_1]; + break; + } + } + return newParams; + } + } + function hasProp(obj, name) { + return obj.hasOwnProperty(name); + } + function hasValue(obj, name) { + return obj[name] != null && obj[name] !== 'auto'; + } + function copy(names, target, source) { + each$1(names, function (name) { + target[name] = source[name]; + }); + } + } + /** + * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object. + */ + function getLayoutParams(source) { + return copyLayoutParams({}, source); + } + /** + * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object. + * @param {Object} source + * @return {Object} Result contains those props. + */ + function copyLayoutParams(target, source) { + source && target && each$1(LOCATION_PARAMS, function (name) { + source.hasOwnProperty(name) && (target[name] = source[name]); + }); + return target; + } + + var inner = makeInner(); + var ComponentModel = /** @class */function (_super) { + __extends(ComponentModel, _super); + function ComponentModel(option, parentModel, ecModel) { + var _this = _super.call(this, option, parentModel, ecModel) || this; + _this.uid = getUID('ec_cpt_model'); + return _this; + } + ComponentModel.prototype.init = function (option, parentModel, ecModel) { + this.mergeDefaultAndTheme(option, ecModel); + }; + ComponentModel.prototype.mergeDefaultAndTheme = function (option, ecModel) { + var layoutMode = fetchLayoutMode(this); + var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; + var themeModel = ecModel.getTheme(); + merge(option, themeModel.get(this.mainType)); + merge(option, this.getDefaultOption()); + if (layoutMode) { + mergeLayoutParam(option, inputPositionParams, layoutMode); + } + }; + ComponentModel.prototype.mergeOption = function (option, ecModel) { + merge(this.option, option, true); + var layoutMode = fetchLayoutMode(this); + if (layoutMode) { + mergeLayoutParam(this.option, option, layoutMode); + } + }; + /** + * Called immediately after `init` or `mergeOption` of this instance called. + */ + ComponentModel.prototype.optionUpdated = function (newCptOption, isInit) {}; + /** + * [How to declare defaultOption]: + * + * (A) If using class declaration in typescript (since echarts 5): + * ```ts + * import {ComponentOption} from '../model/option.js'; + * export interface XxxOption extends ComponentOption { + * aaa: number + * } + * export class XxxModel extends Component { + * static type = 'xxx'; + * static defaultOption: XxxOption = { + * aaa: 123 + * } + * } + * Component.registerClass(XxxModel); + * ``` + * ```ts + * import {inheritDefaultOption} from '../util/component.js'; + * import {XxxModel, XxxOption} from './XxxModel.js'; + * export interface XxxSubOption extends XxxOption { + * bbb: number + * } + * class XxxSubModel extends XxxModel { + * static defaultOption: XxxSubOption = inheritDefaultOption(XxxModel.defaultOption, { + * bbb: 456 + * }) + * fn() { + * let opt = this.getDefaultOption(); + * // opt is {aaa: 123, bbb: 456} + * } + * } + * ``` + * + * (B) If using class extend (previous approach in echarts 3 & 4): + * ```js + * let XxxComponent = Component.extend({ + * defaultOption: { + * xx: 123 + * } + * }) + * ``` + * ```js + * let XxxSubComponent = XxxComponent.extend({ + * defaultOption: { + * yy: 456 + * }, + * fn: function () { + * let opt = this.getDefaultOption(); + * // opt is {xx: 123, yy: 456} + * } + * }) + * ``` + */ + ComponentModel.prototype.getDefaultOption = function () { + var ctor = this.constructor; + // If using class declaration, it is different to travel super class + // in legacy env and auto merge defaultOption. So if using class + // declaration, defaultOption should be merged manually. + if (!isExtendedClass(ctor)) { + // When using ts class, defaultOption must be declared as static. + return ctor.defaultOption; + } + // FIXME: remove this approach? + var fields = inner(this); + if (!fields.defaultOption) { + var optList = []; + var clz = ctor; + while (clz) { + var opt = clz.prototype.defaultOption; + opt && optList.push(opt); + clz = clz.superClass; + } + var defaultOption = {}; + for (var i = optList.length - 1; i >= 0; i--) { + defaultOption = merge(defaultOption, optList[i], true); + } + fields.defaultOption = defaultOption; + } + return fields.defaultOption; + }; + /** + * Notice: always force to input param `useDefault` in case that forget to consider it. + * The same behavior as `modelUtil.parseFinder`. + * + * @param useDefault In many cases like series refer axis and axis refer grid, + * If axis index / axis id not specified, use the first target as default. + * In other cases like dataZoom refer axis, if not specified, measn no refer. + */ + ComponentModel.prototype.getReferringComponents = function (mainType, opt) { + var indexKey = mainType + 'Index'; + var idKey = mainType + 'Id'; + return queryReferringComponents(this.ecModel, mainType, { + index: this.get(indexKey, true), + id: this.get(idKey, true) + }, opt); + }; + ComponentModel.prototype.getBoxLayoutParams = function () { + // Consider itself having box layout configs. + var boxLayoutModel = this; + return { + left: boxLayoutModel.get('left'), + top: boxLayoutModel.get('top'), + right: boxLayoutModel.get('right'), + bottom: boxLayoutModel.get('bottom'), + width: boxLayoutModel.get('width'), + height: boxLayoutModel.get('height') + }; + }; + /** + * Get key for zlevel. + * If developers don't configure zlevel. We will assign zlevel to series based on the key. + * For example, lines with trail effect and progressive series will in an individual zlevel. + */ + ComponentModel.prototype.getZLevelKey = function () { + return ''; + }; + ComponentModel.prototype.setZLevel = function (zlevel) { + this.option.zlevel = zlevel; + }; + ComponentModel.protoInitialize = function () { + var proto = ComponentModel.prototype; + proto.type = 'component'; + proto.id = ''; + proto.name = ''; + proto.mainType = ''; + proto.subType = ''; + proto.componentIndex = 0; + }(); + return ComponentModel; + }(Model); + mountExtend(ComponentModel, Model); + enableClassManagement(ComponentModel); + enableSubTypeDefaulter(ComponentModel); + enableTopologicalTravel(ComponentModel, getDependencies); + function getDependencies(componentType) { + var deps = []; + each(ComponentModel.getClassesByMainType(componentType), function (clz) { + deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []); + }); + // Ensure main type. + deps = map(deps, function (type) { + return parseClassType(type).main; + }); + // Hack dataset for convenience. + if (componentType !== 'dataset' && indexOf(deps, 'dataset') <= 0) { + deps.unshift('dataset'); + } + return deps; + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var platform = ''; + // Navigator not exists in node + if (typeof navigator !== 'undefined') { + /* global navigator */ + platform = navigator.platform || ''; + } + var decalColor = 'rgba(0, 0, 0, 0.2)'; + var globalDefault = { + darkMode: 'auto', + // backgroundColor: 'rgba(0,0,0,0)', + colorBy: 'series', + color: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'], + gradientColor: ['#f6efa6', '#d88273', '#bf444c'], + aria: { + decal: { + decals: [{ + color: decalColor, + dashArrayX: [1, 0], + dashArrayY: [2, 5], + symbolSize: 1, + rotation: Math.PI / 6 + }, { + color: decalColor, + symbol: 'circle', + dashArrayX: [[8, 8], [0, 8, 8, 0]], + dashArrayY: [6, 0], + symbolSize: 0.8 + }, { + color: decalColor, + dashArrayX: [1, 0], + dashArrayY: [4, 3], + rotation: -Math.PI / 4 + }, { + color: decalColor, + dashArrayX: [[6, 6], [0, 6, 6, 0]], + dashArrayY: [6, 0] + }, { + color: decalColor, + dashArrayX: [[1, 0], [1, 6]], + dashArrayY: [1, 0, 6, 0], + rotation: Math.PI / 4 + }, { + color: decalColor, + symbol: 'triangle', + dashArrayX: [[9, 9], [0, 9, 9, 0]], + dashArrayY: [7, 2], + symbolSize: 0.75 + }] + } + }, + // If xAxis and yAxis declared, grid is created by default. + // grid: {}, + textStyle: { + // color: '#000', + // decoration: 'none', + // PENDING + fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif', + // fontFamily: 'Arial, Verdana, sans-serif', + fontSize: 12, + fontStyle: 'normal', + fontWeight: 'normal' + }, + // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/ + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation + // Default is source-over + blendMode: null, + stateAnimation: { + duration: 300, + easing: 'cubicOut' + }, + animation: 'auto', + animationDuration: 1000, + animationDurationUpdate: 500, + animationEasing: 'cubicInOut', + animationEasingUpdate: 'cubicInOut', + animationThreshold: 2000, + // Configuration for progressive/incremental rendering + progressiveThreshold: 3000, + progressive: 400, + // Threshold of if use single hover layer to optimize. + // It is recommended that `hoverLayerThreshold` is equivalent to or less than + // `progressiveThreshold`, otherwise hover will cause restart of progressive, + // which is unexpected. + // see example . + hoverLayerThreshold: 3000, + // See: module:echarts/scale/Time + useUTC: false + }; + + var VISUAL_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'itemGroupId', 'itemChildGroupId', 'seriesName']); + var SOURCE_FORMAT_ORIGINAL = 'original'; + var SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows'; + var SOURCE_FORMAT_OBJECT_ROWS = 'objectRows'; + var SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns'; + var SOURCE_FORMAT_TYPED_ARRAY = 'typedArray'; + var SOURCE_FORMAT_UNKNOWN = 'unknown'; + var SERIES_LAYOUT_BY_COLUMN = 'column'; + var SERIES_LAYOUT_BY_ROW = 'row'; + + // The result of `guessOrdinal`. + var BE_ORDINAL = { + Must: 1, + Might: 2, + Not: 3 // Other cases + }; + + var innerGlobalModel = makeInner(); + /** + * MUST be called before mergeOption of all series. + */ + function resetSourceDefaulter(ecModel) { + // `datasetMap` is used to make default encode. + innerGlobalModel(ecModel).datasetMap = createHashMap(); + } + /** + * [The strategy of the arrengment of data dimensions for dataset]: + * "value way": all axes are non-category axes. So series one by one take + * several (the number is coordSysDims.length) dimensions from dataset. + * The result of data arrengment of data dimensions like: + * | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y | + * "category way": at least one axis is category axis. So the the first data + * dimension is always mapped to the first category axis and shared by + * all of the series. The other data dimensions are taken by series like + * "value way" does. + * The result of data arrengment of data dimensions like: + * | ser_shared_x | ser0_y | ser1_y | ser2_y | + * + * @return encode Never be `null/undefined`. + */ + function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) { + var encode = {}; + var datasetModel = querySeriesUpstreamDatasetModel(seriesModel); + // Currently only make default when using dataset, util more reqirements occur. + if (!datasetModel || !coordDimensions) { + return encode; + } + var encodeItemName = []; + var encodeSeriesName = []; + var ecModel = seriesModel.ecModel; + var datasetMap = innerGlobalModel(ecModel).datasetMap; + var key = datasetModel.uid + '_' + source.seriesLayoutBy; + var baseCategoryDimIndex; + var categoryWayValueDimStart; + coordDimensions = coordDimensions.slice(); + each(coordDimensions, function (coordDimInfoLoose, coordDimIdx) { + var coordDimInfo = isObject(coordDimInfoLoose) ? coordDimInfoLoose : coordDimensions[coordDimIdx] = { + name: coordDimInfoLoose + }; + if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) { + baseCategoryDimIndex = coordDimIdx; + categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo); + } + encode[coordDimInfo.name] = []; + }); + var datasetRecord = datasetMap.get(key) || datasetMap.set(key, { + categoryWayDim: categoryWayValueDimStart, + valueWayDim: 0 + }); + // TODO + // Auto detect first time axis and do arrangement. + each(coordDimensions, function (coordDimInfo, coordDimIdx) { + var coordDimName = coordDimInfo.name; + var count = getDataDimCountOnCoordDim(coordDimInfo); + // In value way. + if (baseCategoryDimIndex == null) { + var start = datasetRecord.valueWayDim; + pushDim(encode[coordDimName], start, count); + pushDim(encodeSeriesName, start, count); + datasetRecord.valueWayDim += count; + // ??? TODO give a better default series name rule? + // especially when encode x y specified. + // consider: when multiple series share one dimension + // category axis, series name should better use + // the other dimension name. On the other hand, use + // both dimensions name. + } + // In category way, the first category axis. + else if (baseCategoryDimIndex === coordDimIdx) { + pushDim(encode[coordDimName], 0, count); + pushDim(encodeItemName, 0, count); + } + // In category way, the other axis. + else { + var start = datasetRecord.categoryWayDim; + pushDim(encode[coordDimName], start, count); + pushDim(encodeSeriesName, start, count); + datasetRecord.categoryWayDim += count; + } + }); + function pushDim(dimIdxArr, idxFrom, idxCount) { + for (var i = 0; i < idxCount; i++) { + dimIdxArr.push(idxFrom + i); + } + } + function getDataDimCountOnCoordDim(coordDimInfo) { + var dimsDef = coordDimInfo.dimsDef; + return dimsDef ? dimsDef.length : 1; + } + encodeItemName.length && (encode.itemName = encodeItemName); + encodeSeriesName.length && (encode.seriesName = encodeSeriesName); + return encode; + } + /** + * Work for data like [{name: ..., value: ...}, ...]. + * + * @return encode Never be `null/undefined`. + */ + function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) { + var encode = {}; + var datasetModel = querySeriesUpstreamDatasetModel(seriesModel); + // Currently only make default when using dataset, util more reqirements occur. + if (!datasetModel) { + return encode; + } + var sourceFormat = source.sourceFormat; + var dimensionsDefine = source.dimensionsDefine; + var potentialNameDimIndex; + if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) { + each(dimensionsDefine, function (dim, idx) { + if ((isObject(dim) ? dim.name : dim) === 'name') { + potentialNameDimIndex = idx; + } + }); + } + var idxResult = function () { + var idxRes0 = {}; + var idxRes1 = {}; + var guessRecords = []; + // 5 is an experience value. + for (var i = 0, len = Math.min(5, dimCount); i < len; i++) { + var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i); + guessRecords.push(guessResult); + var isPureNumber = guessResult === BE_ORDINAL.Not; + // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim, + // and then find a name dim with the priority: + // "BE_ORDINAL.Might|BE_ORDINAL.Must" > "other dim" > "the value dim itself". + if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) { + idxRes0.v = i; + } + if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) { + idxRes0.n = i; + } + if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) { + return idxRes0; + } + // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not), + // find the first BE_ORDINAL.Might as the value dim, + // and then find a name dim with the priority: + // "other dim" > "the value dim itself". + // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be + // treated as number. + if (!isPureNumber) { + if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) { + idxRes1.v = i; + } + if (idxRes1.n == null || idxRes1.n === idxRes1.v) { + idxRes1.n = i; + } + } + } + function fulfilled(idxResult) { + return idxResult.v != null && idxResult.n != null; + } + return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null; + }(); + if (idxResult) { + encode.value = [idxResult.v]; + // `potentialNameDimIndex` has highest priority. + var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; + // By default, label uses itemName in charts. + // So we don't set encodeLabel here. + encode.itemName = [nameDimIndex]; + encode.seriesName = [nameDimIndex]; + } + return encode; + } + /** + * @return If return null/undefined, indicate that should not use datasetModel. + */ + function querySeriesUpstreamDatasetModel(seriesModel) { + // Caution: consider the scenario: + // A dataset is declared and a series is not expected to use the dataset, + // and at the beginning `setOption({series: { noData })` (just prepare other + // option but no data), then `setOption({series: {data: [...]}); In this case, + // the user should set an empty array to avoid that dataset is used by default. + var thisData = seriesModel.get('data', true); + if (!thisData) { + return queryReferringComponents(seriesModel.ecModel, 'dataset', { + index: seriesModel.get('datasetIndex', true), + id: seriesModel.get('datasetId', true) + }, SINGLE_REFERRING).models[0]; + } + } + /** + * @return Always return an array event empty. + */ + function queryDatasetUpstreamDatasetModels(datasetModel) { + // Only these attributes declared, we by default reference to `datasetIndex: 0`. + // Otherwise, no reference. + if (!datasetModel.get('transform', true) && !datasetModel.get('fromTransformResult', true)) { + return []; + } + return queryReferringComponents(datasetModel.ecModel, 'dataset', { + index: datasetModel.get('fromDatasetIndex', true), + id: datasetModel.get('fromDatasetId', true) + }, SINGLE_REFERRING).models; + } + /** + * The rule should not be complex, otherwise user might not + * be able to known where the data is wrong. + * The code is ugly, but how to make it neat? + */ + function guessOrdinal(source, dimIndex) { + return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex); + } + // dimIndex may be overflow source data. + // return {BE_ORDINAL} + function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) { + var result; + // Experience value. + var maxLoop = 5; + if (isTypedArray(data)) { + return BE_ORDINAL.Not; + } + // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine + // always exists in source. + var dimName; + var dimType; + if (dimensionsDefine) { + var dimDefItem = dimensionsDefine[dimIndex]; + if (isObject(dimDefItem)) { + dimName = dimDefItem.name; + dimType = dimDefItem.type; + } else if (isString(dimDefItem)) { + dimName = dimDefItem; + } + } + if (dimType != null) { + return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not; + } + if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) { + var dataArrayRows = data; + if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) { + var sample = dataArrayRows[dimIndex]; + for (var i = 0; i < (sample || []).length && i < maxLoop; i++) { + if ((result = detectValue(sample[startIndex + i])) != null) { + return result; + } + } + } else { + for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) { + var row = dataArrayRows[startIndex + i]; + if (row && (result = detectValue(row[dimIndex])) != null) { + return result; + } + } + } + } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) { + var dataObjectRows = data; + if (!dimName) { + return BE_ORDINAL.Not; + } + for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) { + var item = dataObjectRows[i]; + if (item && (result = detectValue(item[dimName])) != null) { + return result; + } + } + } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) { + var dataKeyedColumns = data; + if (!dimName) { + return BE_ORDINAL.Not; + } + var sample = dataKeyedColumns[dimName]; + if (!sample || isTypedArray(sample)) { + return BE_ORDINAL.Not; + } + for (var i = 0; i < sample.length && i < maxLoop; i++) { + if ((result = detectValue(sample[i])) != null) { + return result; + } + } + } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) { + var dataOriginal = data; + for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) { + var item = dataOriginal[i]; + var val = getDataItemValue(item); + if (!isArray(val)) { + return BE_ORDINAL.Not; + } + if ((result = detectValue(val[dimIndex])) != null) { + return result; + } + } + } + function detectValue(val) { + var beStr = isString(val); + // Consider usage convenience, '1', '2' will be treated as "number". + // `isFinit('')` get `true`. + if (val != null && isFinite(val) && val !== '') { + return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not; + } else if (beStr && val !== '-') { + return BE_ORDINAL.Must; + } + } + return BE_ORDINAL.Not; + } + + var internalOptionCreatorMap = createHashMap(); + function registerInternalOptionCreator(mainType, creator) { + assert(internalOptionCreatorMap.get(mainType) == null && creator); + internalOptionCreatorMap.set(mainType, creator); + } + function concatInternalOptions(ecModel, mainType, newCmptOptionList) { + var internalOptionCreator = internalOptionCreatorMap.get(mainType); + if (!internalOptionCreator) { + return newCmptOptionList; + } + var internalOptions = internalOptionCreator(ecModel); + if (!internalOptions) { + return newCmptOptionList; + } + if ("development" !== 'production') { + for (var i = 0; i < internalOptions.length; i++) { + assert(isComponentIdInternal(internalOptions[i])); + } + } + return newCmptOptionList.concat(internalOptions); + } + + var innerColor = makeInner(); + var innerDecal = makeInner(); + var PaletteMixin = /** @class */function () { + function PaletteMixin() {} + PaletteMixin.prototype.getColorFromPalette = function (name, scope, requestNum) { + var defaultPalette = normalizeToArray(this.get('color', true)); + var layeredPalette = this.get('colorLayer', true); + return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum); + }; + PaletteMixin.prototype.clearColorPalette = function () { + clearPalette(this, innerColor); + }; + return PaletteMixin; + }(); + function getDecalFromPalette(ecModel, name, scope, requestNum) { + var defaultDecals = normalizeToArray(ecModel.get(['aria', 'decal', 'decals'])); + return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum); + } + function getNearestPalette(palettes, requestColorNum) { + var paletteNum = palettes.length; + // TODO palettes must be in order + for (var i = 0; i < paletteNum; i++) { + if (palettes[i].length > requestColorNum) { + return palettes[i]; + } + } + return palettes[paletteNum - 1]; + } + /** + * @param name MUST NOT be null/undefined. Otherwise call this function + * twise with the same parameters will get different result. + * @param scope default this. + * @return Can be null/undefined + */ + function getFromPalette(that, inner, defaultPalette, layeredPalette, name, scope, requestNum) { + scope = scope || that; + var scopeFields = inner(scope); + var paletteIdx = scopeFields.paletteIdx || 0; + var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {}; + // Use `hasOwnProperty` to avoid conflict with Object.prototype. + if (paletteNameMap.hasOwnProperty(name)) { + return paletteNameMap[name]; + } + var palette = requestNum == null || !layeredPalette ? defaultPalette : getNearestPalette(layeredPalette, requestNum); + // In case can't find in layered color palette. + palette = palette || defaultPalette; + if (!palette || !palette.length) { + return; + } + var pickedPaletteItem = palette[paletteIdx]; + if (name) { + paletteNameMap[name] = pickedPaletteItem; + } + scopeFields.paletteIdx = (paletteIdx + 1) % palette.length; + return pickedPaletteItem; + } + function clearPalette(that, inner) { + inner(that).paletteIdx = 0; + inner(that).paletteNameMap = {}; + } + + // ----------------------- + // Internal method names: + // ----------------------- + var reCreateSeriesIndices; + var assertSeriesInitialized; + var initBase; + var OPTION_INNER_KEY = '\0_ec_inner'; + var OPTION_INNER_VALUE = 1; + var BUITIN_COMPONENTS_MAP = { + grid: 'GridComponent', + polar: 'PolarComponent', + geo: 'GeoComponent', + singleAxis: 'SingleAxisComponent', + parallel: 'ParallelComponent', + calendar: 'CalendarComponent', + graphic: 'GraphicComponent', + toolbox: 'ToolboxComponent', + tooltip: 'TooltipComponent', + axisPointer: 'AxisPointerComponent', + brush: 'BrushComponent', + title: 'TitleComponent', + timeline: 'TimelineComponent', + markPoint: 'MarkPointComponent', + markLine: 'MarkLineComponent', + markArea: 'MarkAreaComponent', + legend: 'LegendComponent', + dataZoom: 'DataZoomComponent', + visualMap: 'VisualMapComponent', + // aria: 'AriaComponent', + // dataset: 'DatasetComponent', + // Dependencies + xAxis: 'GridComponent', + yAxis: 'GridComponent', + angleAxis: 'PolarComponent', + radiusAxis: 'PolarComponent' + }; + var BUILTIN_CHARTS_MAP = { + line: 'LineChart', + bar: 'BarChart', + pie: 'PieChart', + scatter: 'ScatterChart', + radar: 'RadarChart', + map: 'MapChart', + tree: 'TreeChart', + treemap: 'TreemapChart', + graph: 'GraphChart', + gauge: 'GaugeChart', + funnel: 'FunnelChart', + parallel: 'ParallelChart', + sankey: 'SankeyChart', + boxplot: 'BoxplotChart', + candlestick: 'CandlestickChart', + effectScatter: 'EffectScatterChart', + lines: 'LinesChart', + heatmap: 'HeatmapChart', + pictorialBar: 'PictorialBarChart', + themeRiver: 'ThemeRiverChart', + sunburst: 'SunburstChart', + custom: 'CustomChart' + }; + var componetsMissingLogPrinted = {}; + function checkMissingComponents(option) { + each(option, function (componentOption, mainType) { + if (!ComponentModel.hasClass(mainType)) { + var componentImportName = BUITIN_COMPONENTS_MAP[mainType]; + if (componentImportName && !componetsMissingLogPrinted[componentImportName]) { + error("Component " + mainType + " is used but not imported.\nimport { " + componentImportName + " } from 'echarts/components';\necharts.use([" + componentImportName + "]);"); + componetsMissingLogPrinted[componentImportName] = true; + } + } + }); + } + var GlobalModel = /** @class */function (_super) { + __extends(GlobalModel, _super); + function GlobalModel() { + return _super !== null && _super.apply(this, arguments) || this; + } + GlobalModel.prototype.init = function (option, parentModel, ecModel, theme, locale, optionManager) { + theme = theme || {}; + this.option = null; // Mark as not initialized. + this._theme = new Model(theme); + this._locale = new Model(locale); + this._optionManager = optionManager; + }; + GlobalModel.prototype.setOption = function (option, opts, optionPreprocessorFuncs) { + if ("development" !== 'production') { + assert(option != null, 'option is null/undefined'); + assert(option[OPTION_INNER_KEY] !== OPTION_INNER_VALUE, 'please use chart.getOption()'); + } + var innerOpt = normalizeSetOptionInput(opts); + this._optionManager.setOption(option, optionPreprocessorFuncs, innerOpt); + this._resetOption(null, innerOpt); + }; + /** + * @param type null/undefined: reset all. + * 'recreate': force recreate all. + * 'timeline': only reset timeline option + * 'media': only reset media query option + * @return Whether option changed. + */ + GlobalModel.prototype.resetOption = function (type, opt) { + return this._resetOption(type, normalizeSetOptionInput(opt)); + }; + GlobalModel.prototype._resetOption = function (type, opt) { + var optionChanged = false; + var optionManager = this._optionManager; + if (!type || type === 'recreate') { + var baseOption = optionManager.mountOption(type === 'recreate'); + if ("development" !== 'production') { + checkMissingComponents(baseOption); + } + if (!this.option || type === 'recreate') { + initBase(this, baseOption); + } else { + this.restoreData(); + this._mergeOption(baseOption, opt); + } + optionChanged = true; + } + if (type === 'timeline' || type === 'media') { + this.restoreData(); + } + // By design, if `setOption(option2)` at the second time, and `option2` is a `ECUnitOption`, + // it should better not have the same props with `MediaUnit['option']`. + // Because either `option2` or `MediaUnit['option']` will be always merged to "current option" + // rather than original "baseOption". If they both override a prop, the result might be + // unexpected when media state changed after `setOption` called. + // If we really need to modify a props in each `MediaUnit['option']`, use the full version + // (`{baseOption, media}`) in `setOption`. + // For `timeline`, the case is the same. + if (!type || type === 'recreate' || type === 'timeline') { + var timelineOption = optionManager.getTimelineOption(this); + if (timelineOption) { + optionChanged = true; + this._mergeOption(timelineOption, opt); + } + } + if (!type || type === 'recreate' || type === 'media') { + var mediaOptions = optionManager.getMediaOption(this); + if (mediaOptions.length) { + each(mediaOptions, function (mediaOption) { + optionChanged = true; + this._mergeOption(mediaOption, opt); + }, this); + } + } + return optionChanged; + }; + GlobalModel.prototype.mergeOption = function (option) { + this._mergeOption(option, null); + }; + GlobalModel.prototype._mergeOption = function (newOption, opt) { + var option = this.option; + var componentsMap = this._componentsMap; + var componentsCount = this._componentsCount; + var newCmptTypes = []; + var newCmptTypeMap = createHashMap(); + var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap; + resetSourceDefaulter(this); + // If no component class, merge directly. + // For example: color, animaiton options, etc. + each(newOption, function (componentOption, mainType) { + if (componentOption == null) { + return; + } + if (!ComponentModel.hasClass(mainType)) { + // globalSettingTask.dirty(); + option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true); + } else if (mainType) { + newCmptTypes.push(mainType); + newCmptTypeMap.set(mainType, true); + } + }); + if (replaceMergeMainTypeMap) { + // If there is a mainType `xxx` in `replaceMerge` but not declared in option, + // we trade it as it is declared in option as `{xxx: []}`. Because: + // (1) for normal merge, `{xxx: null/undefined}` are the same meaning as `{xxx: []}`. + // (2) some preprocessor may convert some of `{xxx: null/undefined}` to `{xxx: []}`. + replaceMergeMainTypeMap.each(function (val, mainTypeInReplaceMerge) { + if (ComponentModel.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) { + newCmptTypes.push(mainTypeInReplaceMerge); + newCmptTypeMap.set(mainTypeInReplaceMerge, true); + } + }); + } + ComponentModel.topologicalTravel(newCmptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this); + function visitComponent(mainType) { + var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType])); + var oldCmptList = componentsMap.get(mainType); + var mergeMode = + // `!oldCmptList` means init. See the comment in `mappingToExists` + !oldCmptList ? 'replaceAll' : replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType) ? 'replaceMerge' : 'normalMerge'; + var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode); + // Set mainType and complete subType. + setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel); + // Empty it before the travel, in order to prevent `this._componentsMap` + // from being used in the `init`/`mergeOption`/`optionUpdated` of some + // components, which is probably incorrect logic. + option[mainType] = null; + componentsMap.set(mainType, null); + componentsCount.set(mainType, 0); + var optionsByMainType = []; + var cmptsByMainType = []; + var cmptsCountByMainType = 0; + var tooltipExists; + var tooltipWarningLogged; + each(mappingResult, function (resultItem, index) { + var componentModel = resultItem.existing; + var newCmptOption = resultItem.newOption; + if (!newCmptOption) { + if (componentModel) { + // Consider where is no new option and should be merged using {}, + // see removeEdgeAndAdd in topologicalTravel and + // ComponentModel.getAllClassMainTypes. + componentModel.mergeOption({}, this); + componentModel.optionUpdated({}, false); + } + // If no both `resultItem.exist` and `resultItem.option`, + // either it is in `replaceMerge` and not matched by any id, + // or it has been removed in previous `replaceMerge` and left a "hole" in this component index. + } else { + var isSeriesType = mainType === 'series'; + var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, !isSeriesType // Give a more detailed warn later if series don't exists + ); + + if (!ComponentModelClass) { + if ("development" !== 'production') { + var subType = resultItem.keyInfo.subType; + var seriesImportName = BUILTIN_CHARTS_MAP[subType]; + if (!componetsMissingLogPrinted[subType]) { + componetsMissingLogPrinted[subType] = true; + if (seriesImportName) { + error("Series " + subType + " is used but not imported.\nimport { " + seriesImportName + " } from 'echarts/charts';\necharts.use([" + seriesImportName + "]);"); + } else { + error("Unknown series " + subType); + } + } + } + return; + } + // TODO Before multiple tooltips get supported, we do this check to avoid unexpected exception. + if (mainType === 'tooltip') { + if (tooltipExists) { + if ("development" !== 'production') { + if (!tooltipWarningLogged) { + warn('Currently only one tooltip component is allowed.'); + tooltipWarningLogged = true; + } + } + return; + } + tooltipExists = true; + } + if (componentModel && componentModel.constructor === ComponentModelClass) { + componentModel.name = resultItem.keyInfo.name; + // componentModel.settingTask && componentModel.settingTask.dirty(); + componentModel.mergeOption(newCmptOption, this); + componentModel.optionUpdated(newCmptOption, false); + } else { + // PENDING Global as parent ? + var extraOpt = extend({ + componentIndex: index + }, resultItem.keyInfo); + componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt); + // Assign `keyInfo` + extend(componentModel, extraOpt); + if (resultItem.brandNew) { + componentModel.__requireNewView = true; + } + componentModel.init(newCmptOption, this, this); + // Call optionUpdated after init. + // newCmptOption has been used as componentModel.option + // and may be merged with theme and default, so pass null + // to avoid confusion. + componentModel.optionUpdated(null, true); + } + } + if (componentModel) { + optionsByMainType.push(componentModel.option); + cmptsByMainType.push(componentModel); + cmptsCountByMainType++; + } else { + // Always do assign to avoid elided item in array. + optionsByMainType.push(void 0); + cmptsByMainType.push(void 0); + } + }, this); + option[mainType] = optionsByMainType; + componentsMap.set(mainType, cmptsByMainType); + componentsCount.set(mainType, cmptsCountByMainType); + // Backup series for filtering. + if (mainType === 'series') { + reCreateSeriesIndices(this); + } + } + // If no series declared, ensure `_seriesIndices` initialized. + if (!this._seriesIndices) { + reCreateSeriesIndices(this); + } + }; + /** + * Get option for output (cloned option and inner info removed) + */ + GlobalModel.prototype.getOption = function () { + var option = clone(this.option); + each(option, function (optInMainType, mainType) { + if (ComponentModel.hasClass(mainType)) { + var opts = normalizeToArray(optInMainType); + // Inner cmpts need to be removed. + // Inner cmpts might not be at last since ec5.0, but still + // compatible for users: if inner cmpt at last, splice the returned array. + var realLen = opts.length; + var metNonInner = false; + for (var i = realLen - 1; i >= 0; i--) { + // Remove options with inner id. + if (opts[i] && !isComponentIdInternal(opts[i])) { + metNonInner = true; + } else { + opts[i] = null; + !metNonInner && realLen--; + } + } + opts.length = realLen; + option[mainType] = opts; + } + }); + delete option[OPTION_INNER_KEY]; + return option; + }; + GlobalModel.prototype.getTheme = function () { + return this._theme; + }; + GlobalModel.prototype.getLocaleModel = function () { + return this._locale; + }; + GlobalModel.prototype.setUpdatePayload = function (payload) { + this._payload = payload; + }; + GlobalModel.prototype.getUpdatePayload = function () { + return this._payload; + }; + /** + * @param idx If not specified, return the first one. + */ + GlobalModel.prototype.getComponent = function (mainType, idx) { + var list = this._componentsMap.get(mainType); + if (list) { + var cmpt = list[idx || 0]; + if (cmpt) { + return cmpt; + } else if (idx == null) { + for (var i = 0; i < list.length; i++) { + if (list[i]) { + return list[i]; + } + } + } + } + }; + /** + * @return Never be null/undefined. + */ + GlobalModel.prototype.queryComponents = function (condition) { + var mainType = condition.mainType; + if (!mainType) { + return []; + } + var index = condition.index; + var id = condition.id; + var name = condition.name; + var cmpts = this._componentsMap.get(mainType); + if (!cmpts || !cmpts.length) { + return []; + } + var result; + if (index != null) { + result = []; + each(normalizeToArray(index), function (idx) { + cmpts[idx] && result.push(cmpts[idx]); + }); + } else if (id != null) { + result = queryByIdOrName('id', id, cmpts); + } else if (name != null) { + result = queryByIdOrName('name', name, cmpts); + } else { + // Return all non-empty components in that mainType + result = filter(cmpts, function (cmpt) { + return !!cmpt; + }); + } + return filterBySubType(result, condition); + }; + /** + * The interface is different from queryComponents, + * which is convenient for inner usage. + * + * @usage + * let result = findComponents( + * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}} + * ); + * let result = findComponents( + * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}} + * ); + * let result = findComponents( + * {mainType: 'series', + * filter: function (model, index) {...}} + * ); + * // result like [component0, componnet1, ...] + */ + GlobalModel.prototype.findComponents = function (condition) { + var query = condition.query; + var mainType = condition.mainType; + var queryCond = getQueryCond(query); + var result = queryCond ? this.queryComponents(queryCond) + // Retrieve all non-empty components. + : filter(this._componentsMap.get(mainType), function (cmpt) { + return !!cmpt; + }); + return doFilter(filterBySubType(result, condition)); + function getQueryCond(q) { + var indexAttr = mainType + 'Index'; + var idAttr = mainType + 'Id'; + var nameAttr = mainType + 'Name'; + return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? { + mainType: mainType, + // subType will be filtered finally. + index: q[indexAttr], + id: q[idAttr], + name: q[nameAttr] + } : null; + } + function doFilter(res) { + return condition.filter ? filter(res, condition.filter) : res; + } + }; + GlobalModel.prototype.eachComponent = function (mainType, cb, context) { + var componentsMap = this._componentsMap; + if (isFunction(mainType)) { + var ctxForAll_1 = cb; + var cbForAll_1 = mainType; + componentsMap.each(function (cmpts, componentType) { + for (var i = 0; cmpts && i < cmpts.length; i++) { + var cmpt = cmpts[i]; + cmpt && cbForAll_1.call(ctxForAll_1, componentType, cmpt, cmpt.componentIndex); + } + }); + } else { + var cmpts = isString(mainType) ? componentsMap.get(mainType) : isObject(mainType) ? this.findComponents(mainType) : null; + for (var i = 0; cmpts && i < cmpts.length; i++) { + var cmpt = cmpts[i]; + cmpt && cb.call(context, cmpt, cmpt.componentIndex); + } + } + }; + /** + * Get series list before filtered by name. + */ + GlobalModel.prototype.getSeriesByName = function (name) { + var nameStr = convertOptionIdName(name, null); + return filter(this._componentsMap.get('series'), function (oneSeries) { + return !!oneSeries && nameStr != null && oneSeries.name === nameStr; + }); + }; + /** + * Get series list before filtered by index. + */ + GlobalModel.prototype.getSeriesByIndex = function (seriesIndex) { + return this._componentsMap.get('series')[seriesIndex]; + }; + /** + * Get series list before filtered by type. + * FIXME: rename to getRawSeriesByType? + */ + GlobalModel.prototype.getSeriesByType = function (subType) { + return filter(this._componentsMap.get('series'), function (oneSeries) { + return !!oneSeries && oneSeries.subType === subType; + }); + }; + /** + * Get all series before filtered. + */ + GlobalModel.prototype.getSeries = function () { + return filter(this._componentsMap.get('series'), function (oneSeries) { + return !!oneSeries; + }); + }; + /** + * Count series before filtered. + */ + GlobalModel.prototype.getSeriesCount = function () { + return this._componentsCount.get('series'); + }; + /** + * After filtering, series may be different + * from raw series. + */ + GlobalModel.prototype.eachSeries = function (cb, context) { + assertSeriesInitialized(this); + each(this._seriesIndices, function (rawSeriesIndex) { + var series = this._componentsMap.get('series')[rawSeriesIndex]; + cb.call(context, series, rawSeriesIndex); + }, this); + }; + /** + * Iterate raw series before filtered. + * + * @param {Function} cb + * @param {*} context + */ + GlobalModel.prototype.eachRawSeries = function (cb, context) { + each(this._componentsMap.get('series'), function (series) { + series && cb.call(context, series, series.componentIndex); + }); + }; + /** + * After filtering, series may be different. + * from raw series. + */ + GlobalModel.prototype.eachSeriesByType = function (subType, cb, context) { + assertSeriesInitialized(this); + each(this._seriesIndices, function (rawSeriesIndex) { + var series = this._componentsMap.get('series')[rawSeriesIndex]; + if (series.subType === subType) { + cb.call(context, series, rawSeriesIndex); + } + }, this); + }; + /** + * Iterate raw series before filtered of given type. + */ + GlobalModel.prototype.eachRawSeriesByType = function (subType, cb, context) { + return each(this.getSeriesByType(subType), cb, context); + }; + GlobalModel.prototype.isSeriesFiltered = function (seriesModel) { + assertSeriesInitialized(this); + return this._seriesIndicesMap.get(seriesModel.componentIndex) == null; + }; + GlobalModel.prototype.getCurrentSeriesIndices = function () { + return (this._seriesIndices || []).slice(); + }; + GlobalModel.prototype.filterSeries = function (cb, context) { + assertSeriesInitialized(this); + var newSeriesIndices = []; + each(this._seriesIndices, function (seriesRawIdx) { + var series = this._componentsMap.get('series')[seriesRawIdx]; + cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx); + }, this); + this._seriesIndices = newSeriesIndices; + this._seriesIndicesMap = createHashMap(newSeriesIndices); + }; + GlobalModel.prototype.restoreData = function (payload) { + reCreateSeriesIndices(this); + var componentsMap = this._componentsMap; + var componentTypes = []; + componentsMap.each(function (components, componentType) { + if (ComponentModel.hasClass(componentType)) { + componentTypes.push(componentType); + } + }); + ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType) { + each(componentsMap.get(componentType), function (component) { + if (component && (componentType !== 'series' || !isNotTargetSeries(component, payload))) { + component.restoreData(); + } + }); + }); + }; + GlobalModel.internalField = function () { + reCreateSeriesIndices = function (ecModel) { + var seriesIndices = ecModel._seriesIndices = []; + each(ecModel._componentsMap.get('series'), function (series) { + // series may have been removed by `replaceMerge`. + series && seriesIndices.push(series.componentIndex); + }); + ecModel._seriesIndicesMap = createHashMap(seriesIndices); + }; + assertSeriesInitialized = function (ecModel) { + // Components that use _seriesIndices should depends on series component, + // which make sure that their initialization is after series. + if ("development" !== 'production') { + if (!ecModel._seriesIndices) { + throw new Error('Option should contains series.'); + } + } + }; + initBase = function (ecModel, baseOption) { + // Using OPTION_INNER_KEY to mark that this option cannot be used outside, + // i.e. `chart.setOption(chart.getModel().option);` is forbidden. + ecModel.option = {}; + ecModel.option[OPTION_INNER_KEY] = OPTION_INNER_VALUE; + // Init with series: [], in case of calling findSeries method + // before series initialized. + ecModel._componentsMap = createHashMap({ + series: [] + }); + ecModel._componentsCount = createHashMap(); + // If user spefied `option.aria`, aria will be enable. This detection should be + // performed before theme and globalDefault merge. + var airaOption = baseOption.aria; + if (isObject(airaOption) && airaOption.enabled == null) { + airaOption.enabled = true; + } + mergeTheme(baseOption, ecModel._theme.option); + // TODO Needs clone when merging to the unexisted property + merge(baseOption, globalDefault, false); + ecModel._mergeOption(baseOption, null); + }; + }(); + return GlobalModel; + }(Model); + function isNotTargetSeries(seriesModel, payload) { + if (payload) { + var index = payload.seriesIndex; + var id = payload.seriesId; + var name_1 = payload.seriesName; + return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name_1 != null && seriesModel.name !== name_1; + } + } + function mergeTheme(option, theme) { + // PENDING + // NOT use `colorLayer` in theme if option has `color` + var notMergeColorLayer = option.color && !option.colorLayer; + each(theme, function (themeItem, name) { + if (name === 'colorLayer' && notMergeColorLayer) { + return; + } + // If it is component model mainType, the model handles that merge later. + // otherwise, merge them here. + if (!ComponentModel.hasClass(name)) { + if (typeof themeItem === 'object') { + option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false); + } else { + if (option[name] == null) { + option[name] = themeItem; + } + } + } + }); + } + function queryByIdOrName(attr, idOrName, cmpts) { + // Here is a break from echarts4: string and number are + // treated as equal. + if (isArray(idOrName)) { + var keyMap_1 = createHashMap(); + each(idOrName, function (idOrNameItem) { + if (idOrNameItem != null) { + var idName = convertOptionIdName(idOrNameItem, null); + idName != null && keyMap_1.set(idOrNameItem, true); + } + }); + return filter(cmpts, function (cmpt) { + return cmpt && keyMap_1.get(cmpt[attr]); + }); + } else { + var idName_1 = convertOptionIdName(idOrName, null); + return filter(cmpts, function (cmpt) { + return cmpt && idName_1 != null && cmpt[attr] === idName_1; + }); + } + } + function filterBySubType(components, condition) { + // Using hasOwnProperty for restrict. Consider + // subType is undefined in user payload. + return condition.hasOwnProperty('subType') ? filter(components, function (cmpt) { + return cmpt && cmpt.subType === condition.subType; + }) : components; + } + function normalizeSetOptionInput(opts) { + var replaceMergeMainTypeMap = createHashMap(); + opts && each(normalizeToArray(opts.replaceMerge), function (mainType) { + if ("development" !== 'production') { + assert(ComponentModel.hasClass(mainType), '"' + mainType + '" is not valid component main type in "replaceMerge"'); + } + replaceMergeMainTypeMap.set(mainType, true); + }); + return { + replaceMergeMainTypeMap: replaceMergeMainTypeMap + }; + } + mixin(GlobalModel, PaletteMixin); + + var availableMethods = ['getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isSSR', 'isDisposed', 'on', 'off', 'getDataURL', 'getConnectedDataURL', + // 'getModel', + 'getOption', + // 'getViewOfComponentModel', + // 'getViewOfSeriesModel', + 'getId', 'updateLabelLayout']; + var ExtensionAPI = /** @class */function () { + function ExtensionAPI(ecInstance) { + each(availableMethods, function (methodName) { + this[methodName] = bind(ecInstance[methodName], ecInstance); + }, this); + } + return ExtensionAPI; + }(); + + var coordinateSystemCreators = {}; + var CoordinateSystemManager = /** @class */function () { + function CoordinateSystemManager() { + this._coordinateSystems = []; + } + CoordinateSystemManager.prototype.create = function (ecModel, api) { + var coordinateSystems = []; + each(coordinateSystemCreators, function (creator, type) { + var list = creator.create(ecModel, api); + coordinateSystems = coordinateSystems.concat(list || []); + }); + this._coordinateSystems = coordinateSystems; + }; + CoordinateSystemManager.prototype.update = function (ecModel, api) { + each(this._coordinateSystems, function (coordSys) { + coordSys.update && coordSys.update(ecModel, api); + }); + }; + CoordinateSystemManager.prototype.getCoordinateSystems = function () { + return this._coordinateSystems.slice(); + }; + CoordinateSystemManager.register = function (type, creator) { + coordinateSystemCreators[type] = creator; + }; + CoordinateSystemManager.get = function (type) { + return coordinateSystemCreators[type]; + }; + return CoordinateSystemManager; + }(); + + var QUERY_REG = /^(min|max)?(.+)$/; + // Key: mainType + // type FakeComponentsMap = HashMap<(MappingExistingItem & { subType: string })[]>; + /** + * TERM EXPLANATIONS: + * See `ECOption` and `ECUnitOption` in `src/util/types.ts`. + */ + var OptionManager = /** @class */function () { + // timeline.notMerge is not supported in ec3. Firstly there is rearly + // case that notMerge is needed. Secondly supporting 'notMerge' requires + // rawOption cloned and backuped when timeline changed, which does no + // good to performance. What's more, that both timeline and setOption + // method supply 'notMerge' brings complex and some problems. + // Consider this case: + // (step1) chart.setOption({timeline: {notMerge: false}, ...}, false); + // (step2) chart.setOption({timeline: {notMerge: true}, ...}, false); + function OptionManager(api) { + this._timelineOptions = []; + this._mediaList = []; + /** + * -1, means default. + * empty means no media. + */ + this._currentMediaIndices = []; + this._api = api; + } + OptionManager.prototype.setOption = function (rawOption, optionPreprocessorFuncs, opt) { + if (rawOption) { + // That set dat primitive is dangerous if user reuse the data when setOption again. + each(normalizeToArray(rawOption.series), function (series) { + series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data); + }); + each(normalizeToArray(rawOption.dataset), function (dataset) { + dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source); + }); + } + // Caution: some series modify option data, if do not clone, + // it should ensure that the repeat modify correctly + // (create a new object when modify itself). + rawOption = clone(rawOption); + // FIXME + // If some property is set in timeline options or media option but + // not set in baseOption, a warning should be given. + var optionBackup = this._optionBackup; + var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs, !optionBackup); + this._newBaseOption = newParsedOption.baseOption; + // For setOption at second time (using merge mode); + if (optionBackup) { + // FIXME + // the restore merge solution is essentially incorrect. + // the mapping can not be 100% consistent with ecModel, which probably brings + // potential bug! + // The first merge is delayed, because in most cases, users do not call `setOption` twice. + // let fakeCmptsMap = this._fakeCmptsMap; + // if (!fakeCmptsMap) { + // fakeCmptsMap = this._fakeCmptsMap = createHashMap(); + // mergeToBackupOption(fakeCmptsMap, null, optionBackup.baseOption, null); + // } + // mergeToBackupOption( + // fakeCmptsMap, optionBackup.baseOption, newParsedOption.baseOption, opt + // ); + // For simplicity, timeline options and media options do not support merge, + // that is, if you `setOption` twice and both has timeline options, the latter + // timeline options will not be merged to the former, but just substitute them. + if (newParsedOption.timelineOptions.length) { + optionBackup.timelineOptions = newParsedOption.timelineOptions; + } + if (newParsedOption.mediaList.length) { + optionBackup.mediaList = newParsedOption.mediaList; + } + if (newParsedOption.mediaDefault) { + optionBackup.mediaDefault = newParsedOption.mediaDefault; + } + } else { + this._optionBackup = newParsedOption; + } + }; + OptionManager.prototype.mountOption = function (isRecreate) { + var optionBackup = this._optionBackup; + this._timelineOptions = optionBackup.timelineOptions; + this._mediaList = optionBackup.mediaList; + this._mediaDefault = optionBackup.mediaDefault; + this._currentMediaIndices = []; + return clone(isRecreate + // this._optionBackup.baseOption, which is created at the first `setOption` + // called, and is merged into every new option by inner method `mergeToBackupOption` + // each time `setOption` called, can be only used in `isRecreate`, because + // its reliability is under suspicion. In other cases option merge is + // performed by `model.mergeOption`. + ? optionBackup.baseOption : this._newBaseOption); + }; + OptionManager.prototype.getTimelineOption = function (ecModel) { + var option; + var timelineOptions = this._timelineOptions; + if (timelineOptions.length) { + // getTimelineOption can only be called after ecModel inited, + // so we can get currentIndex from timelineModel. + var timelineModel = ecModel.getComponent('timeline'); + if (timelineModel) { + option = clone( + // FIXME:TS as TimelineModel or quivlant interface + timelineOptions[timelineModel.getCurrentIndex()]); + } + } + return option; + }; + OptionManager.prototype.getMediaOption = function (ecModel) { + var ecWidth = this._api.getWidth(); + var ecHeight = this._api.getHeight(); + var mediaList = this._mediaList; + var mediaDefault = this._mediaDefault; + var indices = []; + var result = []; + // No media defined. + if (!mediaList.length && !mediaDefault) { + return result; + } + // Multi media may be applied, the latter defined media has higher priority. + for (var i = 0, len = mediaList.length; i < len; i++) { + if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) { + indices.push(i); + } + } + // FIXME + // Whether mediaDefault should force users to provide? Otherwise + // the change by media query can not be recorvered. + if (!indices.length && mediaDefault) { + indices = [-1]; + } + if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) { + result = map(indices, function (index) { + return clone(index === -1 ? mediaDefault.option : mediaList[index].option); + }); + } + // Otherwise return nothing. + this._currentMediaIndices = indices; + return result; + }; + return OptionManager; + }(); + /** + * [RAW_OPTION_PATTERNS] + * (Note: "series: []" represents all other props in `ECUnitOption`) + * + * (1) No prop "baseOption" declared: + * Root option is used as "baseOption" (except prop "options" and "media"). + * ```js + * option = { + * series: [], + * timeline: {}, + * options: [], + * }; + * option = { + * series: [], + * media: {}, + * }; + * option = { + * series: [], + * timeline: {}, + * options: [], + * media: {}, + * } + * ``` + * + * (2) Prop "baseOption" declared: + * If "baseOption" declared, `ECUnitOption` props can only be declared + * inside "baseOption" except prop "timeline" (compat ec2). + * ```js + * option = { + * baseOption: { + * timeline: {}, + * series: [], + * }, + * options: [] + * }; + * option = { + * baseOption: { + * series: [], + * }, + * media: [] + * }; + * option = { + * baseOption: { + * timeline: {}, + * series: [], + * }, + * options: [] + * media: [] + * }; + * option = { + * // ec3 compat ec2: allow (only) `timeline` declared + * // outside baseOption. Keep this setting for compat. + * timeline: {}, + * baseOption: { + * series: [], + * }, + * options: [], + * media: [] + * }; + * ``` + */ + function parseRawOption( + // `rawOption` May be modified + rawOption, optionPreprocessorFuncs, isNew) { + var mediaList = []; + var mediaDefault; + var baseOption; + var declaredBaseOption = rawOption.baseOption; + // Compatible with ec2, [RAW_OPTION_PATTERNS] above. + var timelineOnRoot = rawOption.timeline; + var timelineOptionsOnRoot = rawOption.options; + var mediaOnRoot = rawOption.media; + var hasMedia = !!rawOption.media; + var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || declaredBaseOption && declaredBaseOption.timeline); + if (declaredBaseOption) { + baseOption = declaredBaseOption; + // For merge option. + if (!baseOption.timeline) { + baseOption.timeline = timelineOnRoot; + } + } + // For convenience, enable to use the root option as the `baseOption`: + // `{ ...normalOptionProps, media: [{ ... }, { ... }] }` + else { + if (hasTimeline || hasMedia) { + rawOption.options = rawOption.media = null; + } + baseOption = rawOption; + } + if (hasMedia) { + if (isArray(mediaOnRoot)) { + each(mediaOnRoot, function (singleMedia) { + if ("development" !== 'production') { + // Real case of wrong config. + if (singleMedia && !singleMedia.option && isObject(singleMedia.query) && isObject(singleMedia.query.option)) { + error('Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }'); + } + } + if (singleMedia && singleMedia.option) { + if (singleMedia.query) { + mediaList.push(singleMedia); + } else if (!mediaDefault) { + // Use the first media default. + mediaDefault = singleMedia; + } + } + }); + } else { + if ("development" !== 'production') { + // Real case of wrong config. + error('Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }'); + } + } + } + doPreprocess(baseOption); + each(timelineOptionsOnRoot, function (option) { + return doPreprocess(option); + }); + each(mediaList, function (media) { + return doPreprocess(media.option); + }); + function doPreprocess(option) { + each(optionPreprocessorFuncs, function (preProcess) { + preProcess(option, isNew); + }); + } + return { + baseOption: baseOption, + timelineOptions: timelineOptionsOnRoot || [], + mediaDefault: mediaDefault, + mediaList: mediaList + }; + } + /** + * @see + * Support: width, height, aspectRatio + * Can use max or min as prefix. + */ + function applyMediaQuery(query, ecWidth, ecHeight) { + var realMap = { + width: ecWidth, + height: ecHeight, + aspectratio: ecWidth / ecHeight // lower case for convenience. + }; + + var applicable = true; + each(query, function (value, attr) { + var matched = attr.match(QUERY_REG); + if (!matched || !matched[1] || !matched[2]) { + return; + } + var operator = matched[1]; + var realAttr = matched[2].toLowerCase(); + if (!compare(realMap[realAttr], value, operator)) { + applicable = false; + } + }); + return applicable; + } + function compare(real, expect, operator) { + if (operator === 'min') { + return real >= expect; + } else if (operator === 'max') { + return real <= expect; + } else { + // Equals + return real === expect; + } + } + function indicesEquals(indices1, indices2) { + // indices is always order by asc and has only finite number. + return indices1.join(',') === indices2.join(','); + } + + var each$2 = each; + var isObject$1 = isObject; + var POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine']; + function compatEC2ItemStyle(opt) { + var itemStyleOpt = opt && opt.itemStyle; + if (!itemStyleOpt) { + return; + } + for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) { + var styleName = POSSIBLE_STYLES[i]; + var normalItemStyleOpt = itemStyleOpt.normal; + var emphasisItemStyleOpt = itemStyleOpt.emphasis; + if (normalItemStyleOpt && normalItemStyleOpt[styleName]) { + if ("development" !== 'production') { + deprecateReplaceLog("itemStyle.normal." + styleName, styleName); + } + opt[styleName] = opt[styleName] || {}; + if (!opt[styleName].normal) { + opt[styleName].normal = normalItemStyleOpt[styleName]; + } else { + merge(opt[styleName].normal, normalItemStyleOpt[styleName]); + } + normalItemStyleOpt[styleName] = null; + } + if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) { + if ("development" !== 'production') { + deprecateReplaceLog("itemStyle.emphasis." + styleName, "emphasis." + styleName); + } + opt[styleName] = opt[styleName] || {}; + if (!opt[styleName].emphasis) { + opt[styleName].emphasis = emphasisItemStyleOpt[styleName]; + } else { + merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]); + } + emphasisItemStyleOpt[styleName] = null; + } + } + } + function convertNormalEmphasis(opt, optType, useExtend) { + if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) { + var normalOpt = opt[optType].normal; + var emphasisOpt = opt[optType].emphasis; + if (normalOpt) { + if ("development" !== 'production') { + // eslint-disable-next-line max-len + deprecateLog("'normal' hierarchy in " + optType + " has been removed since 4.0. All style properties are configured in " + optType + " directly now."); + } + // Timeline controlStyle has other properties besides normal and emphasis + if (useExtend) { + opt[optType].normal = opt[optType].emphasis = null; + defaults(opt[optType], normalOpt); + } else { + opt[optType] = normalOpt; + } + } + if (emphasisOpt) { + if ("development" !== 'production') { + deprecateLog(optType + ".emphasis has been changed to emphasis." + optType + " since 4.0"); + } + opt.emphasis = opt.emphasis || {}; + opt.emphasis[optType] = emphasisOpt; + // Also compat the case user mix the style and focus together in ec3 style + // for example: { itemStyle: { normal: {}, emphasis: {focus, shadowBlur} } } + if (emphasisOpt.focus) { + opt.emphasis.focus = emphasisOpt.focus; + } + if (emphasisOpt.blurScope) { + opt.emphasis.blurScope = emphasisOpt.blurScope; + } + } + } + } + function removeEC3NormalStatus(opt) { + convertNormalEmphasis(opt, 'itemStyle'); + convertNormalEmphasis(opt, 'lineStyle'); + convertNormalEmphasis(opt, 'areaStyle'); + convertNormalEmphasis(opt, 'label'); + convertNormalEmphasis(opt, 'labelLine'); + // treemap + convertNormalEmphasis(opt, 'upperLabel'); + // graph + convertNormalEmphasis(opt, 'edgeLabel'); + } + function compatTextStyle(opt, propName) { + // Check whether is not object (string\null\undefined ...) + var labelOptSingle = isObject$1(opt) && opt[propName]; + var textStyle = isObject$1(labelOptSingle) && labelOptSingle.textStyle; + if (textStyle) { + if ("development" !== 'production') { + // eslint-disable-next-line max-len + deprecateLog("textStyle hierarchy in " + propName + " has been removed since 4.0. All textStyle properties are configured in " + propName + " directly now."); + } + for (var i = 0, len = TEXT_STYLE_OPTIONS.length; i < len; i++) { + var textPropName = TEXT_STYLE_OPTIONS[i]; + if (textStyle.hasOwnProperty(textPropName)) { + labelOptSingle[textPropName] = textStyle[textPropName]; + } + } + } + } + function compatEC3CommonStyles(opt) { + if (opt) { + removeEC3NormalStatus(opt); + compatTextStyle(opt, 'label'); + opt.emphasis && compatTextStyle(opt.emphasis, 'label'); + } + } + function processSeries(seriesOpt) { + if (!isObject$1(seriesOpt)) { + return; + } + compatEC2ItemStyle(seriesOpt); + removeEC3NormalStatus(seriesOpt); + compatTextStyle(seriesOpt, 'label'); + // treemap + compatTextStyle(seriesOpt, 'upperLabel'); + // graph + compatTextStyle(seriesOpt, 'edgeLabel'); + if (seriesOpt.emphasis) { + compatTextStyle(seriesOpt.emphasis, 'label'); + // treemap + compatTextStyle(seriesOpt.emphasis, 'upperLabel'); + // graph + compatTextStyle(seriesOpt.emphasis, 'edgeLabel'); + } + var markPoint = seriesOpt.markPoint; + if (markPoint) { + compatEC2ItemStyle(markPoint); + compatEC3CommonStyles(markPoint); + } + var markLine = seriesOpt.markLine; + if (markLine) { + compatEC2ItemStyle(markLine); + compatEC3CommonStyles(markLine); + } + var markArea = seriesOpt.markArea; + if (markArea) { + compatEC3CommonStyles(markArea); + } + var data = seriesOpt.data; + // Break with ec3: if `setOption` again, there may be no `type` in option, + // then the backward compat based on option type will not be performed. + if (seriesOpt.type === 'graph') { + data = data || seriesOpt.nodes; + var edgeData = seriesOpt.links || seriesOpt.edges; + if (edgeData && !isTypedArray(edgeData)) { + for (var i = 0; i < edgeData.length; i++) { + compatEC3CommonStyles(edgeData[i]); + } + } + each(seriesOpt.categories, function (opt) { + removeEC3NormalStatus(opt); + }); + } + if (data && !isTypedArray(data)) { + for (var i = 0; i < data.length; i++) { + compatEC3CommonStyles(data[i]); + } + } + // mark point data + markPoint = seriesOpt.markPoint; + if (markPoint && markPoint.data) { + var mpData = markPoint.data; + for (var i = 0; i < mpData.length; i++) { + compatEC3CommonStyles(mpData[i]); + } + } + // mark line data + markLine = seriesOpt.markLine; + if (markLine && markLine.data) { + var mlData = markLine.data; + for (var i = 0; i < mlData.length; i++) { + if (isArray(mlData[i])) { + compatEC3CommonStyles(mlData[i][0]); + compatEC3CommonStyles(mlData[i][1]); + } else { + compatEC3CommonStyles(mlData[i]); + } + } + } + // Series + if (seriesOpt.type === 'gauge') { + compatTextStyle(seriesOpt, 'axisLabel'); + compatTextStyle(seriesOpt, 'title'); + compatTextStyle(seriesOpt, 'detail'); + } else if (seriesOpt.type === 'treemap') { + convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle'); + each(seriesOpt.levels, function (opt) { + removeEC3NormalStatus(opt); + }); + } else if (seriesOpt.type === 'tree') { + removeEC3NormalStatus(seriesOpt.leaves); + } + // sunburst starts from ec4, so it does not need to compat levels. + } + + function toArr(o) { + return isArray(o) ? o : o ? [o] : []; + } + function toObj(o) { + return (isArray(o) ? o[0] : o) || {}; + } + function globalCompatStyle(option, isTheme) { + each$2(toArr(option.series), function (seriesOpt) { + isObject$1(seriesOpt) && processSeries(seriesOpt); + }); + var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar']; + isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis'); + each$2(axes, function (axisName) { + each$2(toArr(option[axisName]), function (axisOpt) { + if (axisOpt) { + compatTextStyle(axisOpt, 'axisLabel'); + compatTextStyle(axisOpt.axisPointer, 'label'); + } + }); + }); + each$2(toArr(option.parallel), function (parallelOpt) { + var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault; + compatTextStyle(parallelAxisDefault, 'axisLabel'); + compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label'); + }); + each$2(toArr(option.calendar), function (calendarOpt) { + convertNormalEmphasis(calendarOpt, 'itemStyle'); + compatTextStyle(calendarOpt, 'dayLabel'); + compatTextStyle(calendarOpt, 'monthLabel'); + compatTextStyle(calendarOpt, 'yearLabel'); + }); + // radar.name.textStyle + each$2(toArr(option.radar), function (radarOpt) { + compatTextStyle(radarOpt, 'name'); + // Use axisName instead of name because component has name property + if (radarOpt.name && radarOpt.axisName == null) { + radarOpt.axisName = radarOpt.name; + delete radarOpt.name; + if ("development" !== 'production') { + deprecateLog('name property in radar component has been changed to axisName'); + } + } + if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) { + radarOpt.axisNameGap = radarOpt.nameGap; + delete radarOpt.nameGap; + if ("development" !== 'production') { + deprecateLog('nameGap property in radar component has been changed to axisNameGap'); + } + } + if ("development" !== 'production') { + each$2(radarOpt.indicator, function (indicatorOpt) { + if (indicatorOpt.text) { + deprecateReplaceLog('text', 'name', 'radar.indicator'); + } + }); + } + }); + each$2(toArr(option.geo), function (geoOpt) { + if (isObject$1(geoOpt)) { + compatEC3CommonStyles(geoOpt); + each$2(toArr(geoOpt.regions), function (regionObj) { + compatEC3CommonStyles(regionObj); + }); + } + }); + each$2(toArr(option.timeline), function (timelineOpt) { + compatEC3CommonStyles(timelineOpt); + convertNormalEmphasis(timelineOpt, 'label'); + convertNormalEmphasis(timelineOpt, 'itemStyle'); + convertNormalEmphasis(timelineOpt, 'controlStyle', true); + var data = timelineOpt.data; + isArray(data) && each(data, function (item) { + if (isObject(item)) { + convertNormalEmphasis(item, 'label'); + convertNormalEmphasis(item, 'itemStyle'); + } + }); + }); + each$2(toArr(option.toolbox), function (toolboxOpt) { + convertNormalEmphasis(toolboxOpt, 'iconStyle'); + each$2(toolboxOpt.feature, function (featureOpt) { + convertNormalEmphasis(featureOpt, 'iconStyle'); + }); + }); + compatTextStyle(toObj(option.axisPointer), 'label'); + compatTextStyle(toObj(option.tooltip).axisPointer, 'label'); + // Clean logs + // storedLogs = {}; + } + + function get(opt, path) { + var pathArr = path.split(','); + var obj = opt; + for (var i = 0; i < pathArr.length; i++) { + obj = obj && obj[pathArr[i]]; + if (obj == null) { + break; + } + } + return obj; + } + function set$1(opt, path, val, overwrite) { + var pathArr = path.split(','); + var obj = opt; + var key; + var i = 0; + for (; i < pathArr.length - 1; i++) { + key = pathArr[i]; + if (obj[key] == null) { + obj[key] = {}; + } + obj = obj[key]; + } + if (overwrite || obj[pathArr[i]] == null) { + obj[pathArr[i]] = val; + } + } + function compatLayoutProperties(option) { + option && each(LAYOUT_PROPERTIES, function (prop) { + if (prop[0] in option && !(prop[1] in option)) { + option[prop[1]] = option[prop[0]]; + } + }); + } + var LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']]; + var COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline']; + var BAR_ITEM_STYLE_MAP = [['borderRadius', 'barBorderRadius'], ['borderColor', 'barBorderColor'], ['borderWidth', 'barBorderWidth']]; + function compatBarItemStyle(option) { + var itemStyle = option && option.itemStyle; + if (itemStyle) { + for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) { + var oldName = BAR_ITEM_STYLE_MAP[i][1]; + var newName = BAR_ITEM_STYLE_MAP[i][0]; + if (itemStyle[oldName] != null) { + itemStyle[newName] = itemStyle[oldName]; + if ("development" !== 'production') { + deprecateReplaceLog(oldName, newName); + } + } + } + } + } + function compatPieLabel(option) { + if (!option) { + return; + } + if (option.alignTo === 'edge' && option.margin != null && option.edgeDistance == null) { + if ("development" !== 'production') { + deprecateReplaceLog('label.margin', 'label.edgeDistance', 'pie'); + } + option.edgeDistance = option.margin; + } + } + function compatSunburstState(option) { + if (!option) { + return; + } + if (option.downplay && !option.blur) { + option.blur = option.downplay; + if ("development" !== 'production') { + deprecateReplaceLog('downplay', 'blur', 'sunburst'); + } + } + } + function compatGraphFocus(option) { + if (!option) { + return; + } + if (option.focusNodeAdjacency != null) { + option.emphasis = option.emphasis || {}; + if (option.emphasis.focus == null) { + if ("development" !== 'production') { + deprecateReplaceLog('focusNodeAdjacency', 'emphasis: { focus: \'adjacency\'}', 'graph/sankey'); + } + option.emphasis.focus = 'adjacency'; + } + } + } + function traverseTree(data, cb) { + if (data) { + for (var i = 0; i < data.length; i++) { + cb(data[i]); + data[i] && traverseTree(data[i].children, cb); + } + } + } + function globalBackwardCompat(option, isTheme) { + globalCompatStyle(option, isTheme); + // Make sure series array for model initialization. + option.series = normalizeToArray(option.series); + each(option.series, function (seriesOpt) { + if (!isObject(seriesOpt)) { + return; + } + var seriesType = seriesOpt.type; + if (seriesType === 'line') { + if (seriesOpt.clipOverflow != null) { + seriesOpt.clip = seriesOpt.clipOverflow; + if ("development" !== 'production') { + deprecateReplaceLog('clipOverflow', 'clip', 'line'); + } + } + } else if (seriesType === 'pie' || seriesType === 'gauge') { + if (seriesOpt.clockWise != null) { + seriesOpt.clockwise = seriesOpt.clockWise; + if ("development" !== 'production') { + deprecateReplaceLog('clockWise', 'clockwise'); + } + } + compatPieLabel(seriesOpt.label); + var data = seriesOpt.data; + if (data && !isTypedArray(data)) { + for (var i = 0; i < data.length; i++) { + compatPieLabel(data[i]); + } + } + if (seriesOpt.hoverOffset != null) { + seriesOpt.emphasis = seriesOpt.emphasis || {}; + if (seriesOpt.emphasis.scaleSize = null) { + if ("development" !== 'production') { + deprecateReplaceLog('hoverOffset', 'emphasis.scaleSize'); + } + seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset; + } + } + } else if (seriesType === 'gauge') { + var pointerColor = get(seriesOpt, 'pointer.color'); + pointerColor != null && set$1(seriesOpt, 'itemStyle.color', pointerColor); + } else if (seriesType === 'bar') { + compatBarItemStyle(seriesOpt); + compatBarItemStyle(seriesOpt.backgroundStyle); + compatBarItemStyle(seriesOpt.emphasis); + var data = seriesOpt.data; + if (data && !isTypedArray(data)) { + for (var i = 0; i < data.length; i++) { + if (typeof data[i] === 'object') { + compatBarItemStyle(data[i]); + compatBarItemStyle(data[i] && data[i].emphasis); + } + } + } + } else if (seriesType === 'sunburst') { + var highlightPolicy = seriesOpt.highlightPolicy; + if (highlightPolicy) { + seriesOpt.emphasis = seriesOpt.emphasis || {}; + if (!seriesOpt.emphasis.focus) { + seriesOpt.emphasis.focus = highlightPolicy; + if ("development" !== 'production') { + deprecateReplaceLog('highlightPolicy', 'emphasis.focus', 'sunburst'); + } + } + } + compatSunburstState(seriesOpt); + traverseTree(seriesOpt.data, compatSunburstState); + } else if (seriesType === 'graph' || seriesType === 'sankey') { + compatGraphFocus(seriesOpt); + // TODO nodes, edges? + } else if (seriesType === 'map') { + if (seriesOpt.mapType && !seriesOpt.map) { + if ("development" !== 'production') { + deprecateReplaceLog('mapType', 'map', 'map'); + } + seriesOpt.map = seriesOpt.mapType; + } + if (seriesOpt.mapLocation) { + if ("development" !== 'production') { + deprecateLog('`mapLocation` is not used anymore.'); + } + defaults(seriesOpt, seriesOpt.mapLocation); + } + } + if (seriesOpt.hoverAnimation != null) { + seriesOpt.emphasis = seriesOpt.emphasis || {}; + if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) { + if ("development" !== 'production') { + deprecateReplaceLog('hoverAnimation', 'emphasis.scale'); + } + seriesOpt.emphasis.scale = seriesOpt.hoverAnimation; + } + } + compatLayoutProperties(seriesOpt); + }); + // dataRange has changed to visualMap + if (option.dataRange) { + option.visualMap = option.dataRange; + } + each(COMPATITABLE_COMPONENTS, function (componentName) { + var options = option[componentName]; + if (options) { + if (!isArray(options)) { + options = [options]; + } + each(options, function (option) { + compatLayoutProperties(option); + }); + } + }); + } + + // (1) [Caution]: the logic is correct based on the premises: + // data processing stage is blocked in stream. + // See + // (2) Only register once when import repeatedly. + // Should be executed after series is filtered and before stack calculation. + function dataStack(ecModel) { + var stackInfoMap = createHashMap(); + ecModel.eachSeries(function (seriesModel) { + var stack = seriesModel.get('stack'); + // Compatible: when `stack` is set as '', do not stack. + if (stack) { + var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []); + var data = seriesModel.getData(); + var stackInfo = { + // Used for calculate axis extent automatically. + // TODO: Type getCalculationInfo return more specific type? + stackResultDimension: data.getCalculationInfo('stackResultDimension'), + stackedOverDimension: data.getCalculationInfo('stackedOverDimension'), + stackedDimension: data.getCalculationInfo('stackedDimension'), + stackedByDimension: data.getCalculationInfo('stackedByDimension'), + isStackedByIndex: data.getCalculationInfo('isStackedByIndex'), + data: data, + seriesModel: seriesModel + }; + // If stacked on axis that do not support data stack. + if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) { + return; + } + stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel); + stackInfoList.push(stackInfo); + } + }); + stackInfoMap.each(calculateStack); + } + function calculateStack(stackInfoList) { + each(stackInfoList, function (targetStackInfo, idxInStack) { + var resultVal = []; + var resultNaN = [NaN, NaN]; + var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension]; + var targetData = targetStackInfo.data; + var isStackedByIndex = targetStackInfo.isStackedByIndex; + var stackStrategy = targetStackInfo.seriesModel.get('stackStrategy') || 'samesign'; + // Should not write on raw data, because stack series model list changes + // depending on legend selection. + targetData.modify(dims, function (v0, v1, dataIndex) { + var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex); + // Consider `connectNulls` of line area, if value is NaN, stackedOver + // should also be NaN, to draw a appropriate belt area. + if (isNaN(sum)) { + return resultNaN; + } + var byValue; + var stackedDataRawIndex; + if (isStackedByIndex) { + stackedDataRawIndex = targetData.getRawIndex(dataIndex); + } else { + byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex); + } + // If stackOver is NaN, chart view will render point on value start. + var stackedOver = NaN; + for (var j = idxInStack - 1; j >= 0; j--) { + var stackInfo = stackInfoList[j]; + // Has been optimized by inverted indices on `stackedByDimension`. + if (!isStackedByIndex) { + stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue); + } + if (stackedDataRawIndex >= 0) { + var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); + // Considering positive stack, negative stack and empty data + if (stackStrategy === 'all' // single stack group + || stackStrategy === 'positive' && val > 0 || stackStrategy === 'negative' && val < 0 || stackStrategy === 'samesign' && sum >= 0 && val > 0 // All positive stack + || stackStrategy === 'samesign' && sum <= 0 && val < 0 // All negative stack + ) { + // The sum has to be very small to be affected by the + // floating arithmetic problem. An incorrect result will probably + // cause axis min/max to be filtered incorrectly. + sum = addSafe(sum, val); + stackedOver = val; + break; + } + } + } + resultVal[0] = sum; + resultVal[1] = stackedOver; + return resultVal; + }); + }); + } + + // @inner + var SourceImpl = /** @class */function () { + function SourceImpl(fields) { + this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []); + this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN; + // Visit config + this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN; + this.startIndex = fields.startIndex || 0; + this.dimensionsDetectedCount = fields.dimensionsDetectedCount; + this.metaRawOption = fields.metaRawOption; + var dimensionsDefine = this.dimensionsDefine = fields.dimensionsDefine; + if (dimensionsDefine) { + for (var i = 0; i < dimensionsDefine.length; i++) { + var dim = dimensionsDefine[i]; + if (dim.type == null) { + if (guessOrdinal(this, i) === BE_ORDINAL.Must) { + dim.type = 'ordinal'; + } + } + } + } + } + return SourceImpl; + }(); + function isSourceInstance(val) { + return val instanceof SourceImpl; + } + /** + * Create a source from option. + * NOTE: Created source is immutable. Don't change any properties in it. + */ + function createSource(sourceData, thisMetaRawOption, + // can be null. If not provided, auto detect it from `sourceData`. + sourceFormat) { + sourceFormat = sourceFormat || detectSourceFormat(sourceData); + var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy; + var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions); + var source = new SourceImpl({ + data: sourceData, + sourceFormat: sourceFormat, + seriesLayoutBy: seriesLayoutBy, + dimensionsDefine: determined.dimensionsDefine, + startIndex: determined.startIndex, + dimensionsDetectedCount: determined.dimensionsDetectedCount, + metaRawOption: clone(thisMetaRawOption) + }); + return source; + } + /** + * Wrap original series data for some compatibility cases. + */ + function createSourceFromSeriesDataOption(data) { + return new SourceImpl({ + data: data, + sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL + }); + } + /** + * Clone source but excludes source data. + */ + function cloneSourceShallow(source) { + return new SourceImpl({ + data: source.data, + sourceFormat: source.sourceFormat, + seriesLayoutBy: source.seriesLayoutBy, + dimensionsDefine: clone(source.dimensionsDefine), + startIndex: source.startIndex, + dimensionsDetectedCount: source.dimensionsDetectedCount + }); + } + /** + * Note: An empty array will be detected as `SOURCE_FORMAT_ARRAY_ROWS`. + */ + function detectSourceFormat(data) { + var sourceFormat = SOURCE_FORMAT_UNKNOWN; + if (isTypedArray(data)) { + sourceFormat = SOURCE_FORMAT_TYPED_ARRAY; + } else if (isArray(data)) { + // FIXME Whether tolerate null in top level array? + if (data.length === 0) { + sourceFormat = SOURCE_FORMAT_ARRAY_ROWS; + } + for (var i = 0, len = data.length; i < len; i++) { + var item = data[i]; + if (item == null) { + continue; + } else if (isArray(item) || isTypedArray(item)) { + sourceFormat = SOURCE_FORMAT_ARRAY_ROWS; + break; + } else if (isObject(item)) { + sourceFormat = SOURCE_FORMAT_OBJECT_ROWS; + break; + } + } + } else if (isObject(data)) { + for (var key in data) { + if (hasOwn(data, key) && isArrayLike(data[key])) { + sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS; + break; + } + } + } + return sourceFormat; + } + /** + * Determine the source definitions from data standalone dimensions definitions + * are not specified. + */ + function determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, + // standalone raw dimensions definition, like: + // { + // dimensions: ['aa', 'bb', { name: 'cc', type: 'time' }] + // } + // in `dataset` or `series` + dimensionsDefine) { + var dimensionsDetectedCount; + var startIndex; + // PENDING: Could data be null/undefined here? + // currently, if `dataset.source` not specified, error thrown. + // if `series.data` not specified, nothing rendered without error thrown. + // Should test these cases. + if (!data) { + return { + dimensionsDefine: normalizeDimensionsOption(dimensionsDefine), + startIndex: startIndex, + dimensionsDetectedCount: dimensionsDetectedCount + }; + } + if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) { + var dataArrayRows = data; + // Rule: Most of the first line are string: it is header. + // Caution: consider a line with 5 string and 1 number, + // it still can not be sure it is a head, because the + // 5 string may be 5 values of category columns. + if (sourceHeader === 'auto' || sourceHeader == null) { + arrayRowsTravelFirst(function (val) { + // '-' is regarded as null/undefined. + if (val != null && val !== '-') { + if (isString(val)) { + startIndex == null && (startIndex = 1); + } else { + startIndex = 0; + } + } + // 10 is an experience number, avoid long loop. + }, seriesLayoutBy, dataArrayRows, 10); + } else { + startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0; + } + if (!dimensionsDefine && startIndex === 1) { + dimensionsDefine = []; + arrayRowsTravelFirst(function (val, index) { + dimensionsDefine[index] = val != null ? val + '' : ''; + }, seriesLayoutBy, dataArrayRows, Infinity); + } + dimensionsDetectedCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? dataArrayRows.length : dataArrayRows[0] ? dataArrayRows[0].length : null; + } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) { + if (!dimensionsDefine) { + dimensionsDefine = objectRowsCollectDimensions(data); + } + } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) { + if (!dimensionsDefine) { + dimensionsDefine = []; + each(data, function (colArr, key) { + dimensionsDefine.push(key); + }); + } + } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) { + var value0 = getDataItemValue(data[0]); + dimensionsDetectedCount = isArray(value0) && value0.length || 1; + } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) { + if ("development" !== 'production') { + assert(!!dimensionsDefine, 'dimensions must be given if data is TypedArray.'); + } + } + return { + startIndex: startIndex, + dimensionsDefine: normalizeDimensionsOption(dimensionsDefine), + dimensionsDetectedCount: dimensionsDetectedCount + }; + } + function objectRowsCollectDimensions(data) { + var firstIndex = 0; + var obj; + while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line + if (obj) { + return keys(obj); + } + } + // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'], + // which is reasonable. But dimension name is duplicated. + // Returns undefined or an array contains only object without null/undefined or string. + function normalizeDimensionsOption(dimensionsDefine) { + if (!dimensionsDefine) { + // The meaning of null/undefined is different from empty array. + return; + } + var nameMap = createHashMap(); + return map(dimensionsDefine, function (rawItem, index) { + rawItem = isObject(rawItem) ? rawItem : { + name: rawItem + }; + // Other fields will be discarded. + var item = { + name: rawItem.name, + displayName: rawItem.displayName, + type: rawItem.type + }; + // User can set null in dimensions. + // We don't auto specify name, otherwise a given name may + // cause it to be referred unexpectedly. + if (item.name == null) { + return item; + } + // Also consider number form like 2012. + item.name += ''; + // User may also specify displayName. + // displayName will always exists except user not + // specified or dim name is not specified or detected. + // (A auto generated dim name will not be used as + // displayName). + if (item.displayName == null) { + item.displayName = item.name; + } + var exist = nameMap.get(item.name); + if (!exist) { + nameMap.set(item.name, { + count: 1 + }); + } else { + item.name += '-' + exist.count++; + } + return item; + }); + } + function arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) { + if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) { + for (var i = 0; i < data.length && i < maxLoop; i++) { + cb(data[i] ? data[i][0] : null, i); + } + } else { + var value0 = data[0] || []; + for (var i = 0; i < value0.length && i < maxLoop; i++) { + cb(value0[i], i); + } + } + } + function shouldRetrieveDataByName(source) { + var sourceFormat = source.sourceFormat; + return sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS; + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var _a, _b, _c; + var providerMethods; + var mountMethods; + /** + * If normal array used, mutable chunk size is supported. + * If typed array used, chunk size must be fixed. + */ + var DefaultDataProvider = /** @class */function () { + function DefaultDataProvider(sourceParam, dimSize) { + // let source: Source; + var source = !isSourceInstance(sourceParam) ? createSourceFromSeriesDataOption(sourceParam) : sourceParam; + // declare source is Source; + this._source = source; + var data = this._data = source.data; + // Typed array. TODO IE10+? + if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) { + if ("development" !== 'production') { + if (dimSize == null) { + throw new Error('Typed array data must specify dimension size'); + } + } + this._offset = 0; + this._dimSize = dimSize; + this._data = data; + } + mountMethods(this, data, source); + } + DefaultDataProvider.prototype.getSource = function () { + return this._source; + }; + DefaultDataProvider.prototype.count = function () { + return 0; + }; + DefaultDataProvider.prototype.getItem = function (idx, out) { + return; + }; + DefaultDataProvider.prototype.appendData = function (newData) {}; + DefaultDataProvider.prototype.clean = function () {}; + DefaultDataProvider.protoInitialize = function () { + // PENDING: To avoid potential incompat (e.g., prototype + // is visited somewhere), still init them on prototype. + var proto = DefaultDataProvider.prototype; + proto.pure = false; + proto.persistent = true; + }(); + DefaultDataProvider.internalField = function () { + var _a; + mountMethods = function (provider, data, source) { + var sourceFormat = source.sourceFormat; + var seriesLayoutBy = source.seriesLayoutBy; + var startIndex = source.startIndex; + var dimsDef = source.dimensionsDefine; + var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)]; + if ("development" !== 'production') { + assert(methods, 'Invalide sourceFormat: ' + sourceFormat); + } + extend(provider, methods); + if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) { + provider.getItem = getItemForTypedArray; + provider.count = countForTypedArray; + provider.fillStorage = fillStorageForTypedArray; + } else { + var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy); + provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef); + var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy); + provider.count = bind(rawCounter, null, data, startIndex, dimsDef); + } + }; + var getItemForTypedArray = function (idx, out) { + idx = idx - this._offset; + out = out || []; + var data = this._data; + var dimSize = this._dimSize; + var offset = dimSize * idx; + for (var i = 0; i < dimSize; i++) { + out[i] = data[offset + i]; + } + return out; + }; + var fillStorageForTypedArray = function (start, end, storage, extent) { + var data = this._data; + var dimSize = this._dimSize; + for (var dim = 0; dim < dimSize; dim++) { + var dimExtent = extent[dim]; + var min = dimExtent[0] == null ? Infinity : dimExtent[0]; + var max = dimExtent[1] == null ? -Infinity : dimExtent[1]; + var count = end - start; + var arr = storage[dim]; + for (var i = 0; i < count; i++) { + // appendData with TypedArray will always do replace in provider. + var val = data[i * dimSize + dim]; + arr[start + i] = val; + val < min && (min = val); + val > max && (max = val); + } + dimExtent[0] = min; + dimExtent[1] = max; + } + }; + var countForTypedArray = function () { + return this._data ? this._data.length / this._dimSize : 0; + }; + providerMethods = (_a = {}, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = { + pure: true, + appendData: appendDataSimply + }, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = { + pure: true, + appendData: function () { + throw new Error('Do not support appendData when set seriesLayoutBy: "row".'); + } + }, _a[SOURCE_FORMAT_OBJECT_ROWS] = { + pure: true, + appendData: appendDataSimply + }, _a[SOURCE_FORMAT_KEYED_COLUMNS] = { + pure: true, + appendData: function (newData) { + var data = this._data; + each(newData, function (newCol, key) { + var oldCol = data[key] || (data[key] = []); + for (var i = 0; i < (newCol || []).length; i++) { + oldCol.push(newCol[i]); + } + }); + } + }, _a[SOURCE_FORMAT_ORIGINAL] = { + appendData: appendDataSimply + }, _a[SOURCE_FORMAT_TYPED_ARRAY] = { + persistent: false, + pure: true, + appendData: function (newData) { + if ("development" !== 'production') { + assert(isTypedArray(newData), 'Added data must be TypedArray if data in initialization is TypedArray'); + } + this._data = newData; + }, + // Clean self if data is already used. + clean: function () { + // PENDING + this._offset += this.count(); + this._data = null; + } + }, _a); + function appendDataSimply(newData) { + for (var i = 0; i < newData.length; i++) { + this._data.push(newData[i]); + } + } + }(); + return DefaultDataProvider; + }(); + var getItemSimply = function (rawData, startIndex, dimsDef, idx) { + return rawData[idx]; + }; + var rawSourceItemGetterMap = (_a = {}, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef, idx) { + return rawData[idx + startIndex]; + }, _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef, idx, out) { + idx += startIndex; + var item = out || []; + var data = rawData; + for (var i = 0; i < data.length; i++) { + var row = data[i]; + item[i] = row ? row[idx] : null; + } + return item; + }, _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply, _a[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef, idx, out) { + var item = out || []; + for (var i = 0; i < dimsDef.length; i++) { + var dimName = dimsDef[i].name; + if ("development" !== 'production') { + if (dimName == null) { + throw new Error(); + } + } + var col = rawData[dimName]; + item[i] = col ? col[idx] : null; + } + return item; + }, _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply, _a); + function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) { + var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)]; + if ("development" !== 'production') { + assert(method, 'Do not support get item on "' + sourceFormat + '", "' + seriesLayoutBy + '".'); + } + return method; + } + var countSimply = function (rawData, startIndex, dimsDef) { + return rawData.length; + }; + var rawSourceDataCounterMap = (_b = {}, _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef) { + return Math.max(0, rawData.length - startIndex); + }, _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef) { + var row = rawData[0]; + return row ? Math.max(0, row.length - startIndex) : 0; + }, _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply, _b[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef) { + var dimName = dimsDef[0].name; + if ("development" !== 'production') { + if (dimName == null) { + throw new Error(); + } + } + var col = rawData[dimName]; + return col ? col.length : 0; + }, _b[SOURCE_FORMAT_ORIGINAL] = countSimply, _b); + function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) { + var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)]; + if ("development" !== 'production') { + assert(method, 'Do not support count on "' + sourceFormat + '", "' + seriesLayoutBy + '".'); + } + return method; + } + var getRawValueSimply = function (dataItem, dimIndex, property) { + return dataItem[dimIndex]; + }; + var rawSourceValueGetterMap = (_c = {}, _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply, _c[SOURCE_FORMAT_OBJECT_ROWS] = function (dataItem, dimIndex, property) { + return dataItem[property]; + }, _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply, _c[SOURCE_FORMAT_ORIGINAL] = function (dataItem, dimIndex, property) { + // FIXME: In some case (markpoint in geo (geo-map.html)), + // dataItem is {coord: [...]} + var value = getDataItemValue(dataItem); + return !(value instanceof Array) ? value : value[dimIndex]; + }, _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply, _c); + function getRawSourceValueGetter(sourceFormat) { + var method = rawSourceValueGetterMap[sourceFormat]; + if ("development" !== 'production') { + assert(method, 'Do not support get value on "' + sourceFormat + '".'); + } + return method; + } + function getMethodMapKey(sourceFormat, seriesLayoutBy) { + return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + seriesLayoutBy : sourceFormat; + } + // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem, + // Consider persistent. + // Caution: why use raw value to display on label or tooltip? + // A reason is to avoid format. For example time value we do not know + // how to format is expected. More over, if stack is used, calculated + // value may be 0.91000000001, which have brings trouble to display. + // TODO: consider how to treat null/undefined/NaN when display? + function retrieveRawValue(data, dataIndex, + // If dimIndex is null/undefined, return OptionDataItem. + // Otherwise, return OptionDataValue. + dim) { + if (!data) { + return; + } + // Consider data may be not persistent. + var dataItem = data.getRawDataItem(dataIndex); + if (dataItem == null) { + return; + } + var store = data.getStore(); + var sourceFormat = store.getSource().sourceFormat; + if (dim != null) { + var dimIndex = data.getDimensionIndex(dim); + var property = store.getDimensionProperty(dimIndex); + return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, property); + } else { + var result = dataItem; + if (sourceFormat === SOURCE_FORMAT_ORIGINAL) { + result = getDataItemValue(dataItem); + } + return result; + } + } + + var DIMENSION_LABEL_REG = /\{@(.+?)\}/g; + var DataFormatMixin = /** @class */function () { + function DataFormatMixin() {} + /** + * Get params for formatter + */ + DataFormatMixin.prototype.getDataParams = function (dataIndex, dataType) { + var data = this.getData(dataType); + var rawValue = this.getRawValue(dataIndex, dataType); + var rawDataIndex = data.getRawIndex(dataIndex); + var name = data.getName(dataIndex); + var itemOpt = data.getRawDataItem(dataIndex); + var style = data.getItemVisual(dataIndex, 'style'); + var color = style && style[data.getItemVisual(dataIndex, 'drawType') || 'fill']; + var borderColor = style && style.stroke; + var mainType = this.mainType; + var isSeries = mainType === 'series'; + var userOutput = data.userOutput && data.userOutput.get(); + return { + componentType: mainType, + componentSubType: this.subType, + componentIndex: this.componentIndex, + seriesType: isSeries ? this.subType : null, + seriesIndex: this.seriesIndex, + seriesId: isSeries ? this.id : null, + seriesName: isSeries ? this.name : null, + name: name, + dataIndex: rawDataIndex, + data: itemOpt, + dataType: dataType, + value: rawValue, + color: color, + borderColor: borderColor, + dimensionNames: userOutput ? userOutput.fullDimensions : null, + encode: userOutput ? userOutput.encode : null, + // Param name list for mapping `a`, `b`, `c`, `d`, `e` + $vars: ['seriesName', 'name', 'value'] + }; + }; + /** + * Format label + * @param dataIndex + * @param status 'normal' by default + * @param dataType + * @param labelDimIndex Only used in some chart that + * use formatter in different dimensions, like radar. + * @param formatter Formatter given outside. + * @return return null/undefined if no formatter + */ + DataFormatMixin.prototype.getFormattedLabel = function (dataIndex, status, dataType, labelDimIndex, formatter, extendParams) { + status = status || 'normal'; + var data = this.getData(dataType); + var params = this.getDataParams(dataIndex, dataType); + if (extendParams) { + params.value = extendParams.interpolatedValue; + } + if (labelDimIndex != null && isArray(params.value)) { + params.value = params.value[labelDimIndex]; + } + if (!formatter) { + var itemModel = data.getItemModel(dataIndex); + // @ts-ignore + formatter = itemModel.get(status === 'normal' ? ['label', 'formatter'] : [status, 'label', 'formatter']); + } + if (isFunction(formatter)) { + params.status = status; + params.dimensionIndex = labelDimIndex; + return formatter(params); + } else if (isString(formatter)) { + var str = formatTpl(formatter, params); + // Support 'aaa{@[3]}bbb{@product}ccc'. + // Do not support '}' in dim name util have to. + return str.replace(DIMENSION_LABEL_REG, function (origin, dimStr) { + var len = dimStr.length; + var dimLoose = dimStr; + if (dimLoose.charAt(0) === '[' && dimLoose.charAt(len - 1) === ']') { + dimLoose = +dimLoose.slice(1, len - 1); // Also support: '[]' => 0 + if ("development" !== 'production') { + if (isNaN(dimLoose)) { + error("Invalide label formatter: @" + dimStr + ", only support @[0], @[1], @[2], ..."); + } + } + } + var val = retrieveRawValue(data, dataIndex, dimLoose); + if (extendParams && isArray(extendParams.interpolatedValue)) { + var dimIndex = data.getDimensionIndex(dimLoose); + if (dimIndex >= 0) { + val = extendParams.interpolatedValue[dimIndex]; + } + } + return val != null ? val + '' : ''; + }); + } + }; + /** + * Get raw value in option + */ + DataFormatMixin.prototype.getRawValue = function (idx, dataType) { + return retrieveRawValue(this.getData(dataType), idx); + }; + /** + * Should be implemented. + * @param {number} dataIndex + * @param {boolean} [multipleSeries=false] + * @param {string} [dataType] + */ + DataFormatMixin.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + // Empty function + return; + }; + return DataFormatMixin; + }(); + // PENDING: previously we accept this type when calling `formatTooltip`, + // but guess little chance has been used outside. Do we need to backward + // compat it? + // type TooltipFormatResultLegacyObject = { + // // `html` means the markup language text, either in 'html' or 'richText'. + // // The name `html` is not appropriate because in 'richText' it is not a HTML + // // string. But still support it for backward compatibility. + // html: string; + // markers: Dictionary; + // }; + /** + * For backward compat, normalize the return from `formatTooltip`. + */ + function normalizeTooltipFormatResult(result) { + var markupText; + // let markers: Dictionary; + var markupFragment; + if (isObject(result)) { + if (result.type) { + markupFragment = result; + } else { + if ("development" !== 'production') { + console.warn('The return type of `formatTooltip` is not supported: ' + makePrintable(result)); + } + } + // else { + // markupText = (result as TooltipFormatResultLegacyObject).html; + // markers = (result as TooltipFormatResultLegacyObject).markers; + // if (markersExisting) { + // markers = zrUtil.merge(markersExisting, markers); + // } + // } + } else { + markupText = result; + } + return { + text: markupText, + // markers: markers || markersExisting, + frag: markupFragment + }; + } + + /** + * @param {Object} define + * @return See the return of `createTask`. + */ + function createTask(define) { + return new Task(define); + } + var Task = /** @class */function () { + function Task(define) { + define = define || {}; + this._reset = define.reset; + this._plan = define.plan; + this._count = define.count; + this._onDirty = define.onDirty; + this._dirty = true; + } + /** + * @param step Specified step. + * @param skip Skip customer perform call. + * @param modBy Sampling window size. + * @param modDataCount Sampling count. + * @return whether unfinished. + */ + Task.prototype.perform = function (performArgs) { + var upTask = this._upstream; + var skip = performArgs && performArgs.skip; + // TODO some refactor. + // Pull data. Must pull data each time, because context.data + // may be updated by Series.setData. + if (this._dirty && upTask) { + var context = this.context; + context.data = context.outputData = upTask.context.outputData; + } + if (this.__pipeline) { + this.__pipeline.currentTask = this; + } + var planResult; + if (this._plan && !skip) { + planResult = this._plan(this.context); + } + // Support sharding by mod, which changes the render sequence and makes the rendered graphic + // elements uniformed distributed when progress, especially when moving or zooming. + var lastModBy = normalizeModBy(this._modBy); + var lastModDataCount = this._modDataCount || 0; + var modBy = normalizeModBy(performArgs && performArgs.modBy); + var modDataCount = performArgs && performArgs.modDataCount || 0; + if (lastModBy !== modBy || lastModDataCount !== modDataCount) { + planResult = 'reset'; + } + function normalizeModBy(val) { + !(val >= 1) && (val = 1); // jshint ignore:line + return val; + } + var forceFirstProgress; + if (this._dirty || planResult === 'reset') { + this._dirty = false; + forceFirstProgress = this._doReset(skip); + } + this._modBy = modBy; + this._modDataCount = modDataCount; + var step = performArgs && performArgs.step; + if (upTask) { + if ("development" !== 'production') { + assert(upTask._outputDueEnd != null); + } + this._dueEnd = upTask._outputDueEnd; + } + // DataTask or overallTask + else { + if ("development" !== 'production') { + assert(!this._progress || this._count); + } + this._dueEnd = this._count ? this._count(this.context) : Infinity; + } + // Note: Stubs, that its host overall task let it has progress, has progress. + // If no progress, pass index from upstream to downstream each time plan called. + if (this._progress) { + var start = this._dueIndex; + var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd); + if (!skip && (forceFirstProgress || start < end)) { + var progress = this._progress; + if (isArray(progress)) { + for (var i = 0; i < progress.length; i++) { + this._doProgress(progress[i], start, end, modBy, modDataCount); + } + } else { + this._doProgress(progress, start, end, modBy, modDataCount); + } + } + this._dueIndex = end; + // If no `outputDueEnd`, assume that output data and + // input data is the same, so use `dueIndex` as `outputDueEnd`. + var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end; + if ("development" !== 'production') { + // ??? Can not rollback. + assert(outputDueEnd >= this._outputDueEnd); + } + this._outputDueEnd = outputDueEnd; + } else { + // (1) Some overall task has no progress. + // (2) Stubs, that its host overall task do not let it has progress, has no progress. + // This should always be performed so it can be passed to downstream. + this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd; + } + return this.unfinished(); + }; + Task.prototype.dirty = function () { + this._dirty = true; + this._onDirty && this._onDirty(this.context); + }; + Task.prototype._doProgress = function (progress, start, end, modBy, modDataCount) { + iterator.reset(start, end, modBy, modDataCount); + this._callingProgress = progress; + this._callingProgress({ + start: start, + end: end, + count: end - start, + next: iterator.next + }, this.context); + }; + Task.prototype._doReset = function (skip) { + this._dueIndex = this._outputDueEnd = this._dueEnd = 0; + this._settedOutputEnd = null; + var progress; + var forceFirstProgress; + if (!skip && this._reset) { + progress = this._reset(this.context); + if (progress && progress.progress) { + forceFirstProgress = progress.forceFirstProgress; + progress = progress.progress; + } + // To simplify no progress checking, array must has item. + if (isArray(progress) && !progress.length) { + progress = null; + } + } + this._progress = progress; + this._modBy = this._modDataCount = null; + var downstream = this._downstream; + downstream && downstream.dirty(); + return forceFirstProgress; + }; + Task.prototype.unfinished = function () { + return this._progress && this._dueIndex < this._dueEnd; + }; + /** + * @param downTask The downstream task. + * @return The downstream task. + */ + Task.prototype.pipe = function (downTask) { + if ("development" !== 'production') { + assert(downTask && !downTask._disposed && downTask !== this); + } + // If already downstream, do not dirty downTask. + if (this._downstream !== downTask || this._dirty) { + this._downstream = downTask; + downTask._upstream = this; + downTask.dirty(); + } + }; + Task.prototype.dispose = function () { + if (this._disposed) { + return; + } + this._upstream && (this._upstream._downstream = null); + this._downstream && (this._downstream._upstream = null); + this._dirty = false; + this._disposed = true; + }; + Task.prototype.getUpstream = function () { + return this._upstream; + }; + Task.prototype.getDownstream = function () { + return this._downstream; + }; + Task.prototype.setOutputEnd = function (end) { + // This only happens in dataTask, dataZoom, map, currently. + // where dataZoom do not set end each time, but only set + // when reset. So we should record the set end, in case + // that the stub of dataZoom perform again and earse the + // set end by upstream. + this._outputDueEnd = this._settedOutputEnd = end; + }; + return Task; + }(); + var iterator = function () { + var end; + var current; + var modBy; + var modDataCount; + var winCount; + var it = { + reset: function (s, e, sStep, sCount) { + current = s; + end = e; + modBy = sStep; + modDataCount = sCount; + winCount = Math.ceil(modDataCount / modBy); + it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext; + } + }; + return it; + function sequentialNext() { + return current < end ? current++ : null; + } + function modNext() { + var dataIndex = current % winCount * modBy + Math.ceil(current / winCount); + var result = current >= end ? null : dataIndex < modDataCount ? dataIndex + // If modDataCount is smaller than data.count() (consider `appendData` case), + // Use normal linear rendering mode. + : current; + current++; + return result; + } + }(); + // ----------------------------------------------------------------------------- + // For stream debug (Should be commented out after used!) + // @usage: printTask(this, 'begin'); + // @usage: printTask(this, null, {someExtraProp}); + // @usage: Use `__idxInPipeline` as conditional breakpiont. + // + // window.printTask = function (task: any, prefix: string, extra: { [key: string]: unknown }): void { + // window.ecTaskUID == null && (window.ecTaskUID = 0); + // task.uidDebug == null && (task.uidDebug = `task_${window.ecTaskUID++}`); + // task.agent && task.agent.uidDebug == null && (task.agent.uidDebug = `task_${window.ecTaskUID++}`); + // let props = []; + // if (task.__pipeline) { + // let val = `${task.__idxInPipeline}/${task.__pipeline.tail.__idxInPipeline} ${task.agent ? '(stub)' : ''}`; + // props.push({text: '__idxInPipeline/total', value: val}); + // } else { + // let stubCount = 0; + // task.agentStubMap.each(() => stubCount++); + // props.push({text: 'idx', value: `overall (stubs: ${stubCount})`}); + // } + // props.push({text: 'uid', value: task.uidDebug}); + // if (task.__pipeline) { + // props.push({text: 'pipelineId', value: task.__pipeline.id}); + // task.agent && props.push( + // {text: 'stubFor', value: task.agent.uidDebug} + // ); + // } + // props.push( + // {text: 'dirty', value: task._dirty}, + // {text: 'dueIndex', value: task._dueIndex}, + // {text: 'dueEnd', value: task._dueEnd}, + // {text: 'outputDueEnd', value: task._outputDueEnd} + // ); + // if (extra) { + // Object.keys(extra).forEach(key => { + // props.push({text: key, value: extra[key]}); + // }); + // } + // let args = ['color: blue']; + // let msg = `%c[${prefix || 'T'}] %c` + props.map(item => ( + // args.push('color: green', 'color: red'), + // `${item.text}: %c${item.value}` + // )).join('%c, '); + // console.log.apply(console, [msg].concat(args)); + // // console.log(this); + // }; + // window.printPipeline = function (task: any, prefix: string) { + // const pipeline = task.__pipeline; + // let currTask = pipeline.head; + // while (currTask) { + // window.printTask(currTask, prefix); + // currTask = currTask._downstream; + // } + // }; + // window.showChain = function (chainHeadTask) { + // var chain = []; + // var task = chainHeadTask; + // while (task) { + // chain.push({ + // task: task, + // up: task._upstream, + // down: task._downstream, + // idxInPipeline: task.__idxInPipeline + // }); + // task = task._downstream; + // } + // return chain; + // }; + // window.findTaskInChain = function (task, chainHeadTask) { + // let chain = window.showChain(chainHeadTask); + // let result = []; + // for (let i = 0; i < chain.length; i++) { + // let chainItem = chain[i]; + // if (chainItem.task === task) { + // result.push(i); + // } + // } + // return result; + // }; + // window.printChainAEachInChainB = function (chainHeadTaskA, chainHeadTaskB) { + // let chainA = window.showChain(chainHeadTaskA); + // for (let i = 0; i < chainA.length; i++) { + // console.log('chainAIdx:', i, 'inChainB:', window.findTaskInChain(chainA[i].task, chainHeadTaskB)); + // } + // }; + + /** + * Convert raw the value in to inner value in List. + * + * [Performance sensitive] + * + * [Caution]: this is the key logic of user value parser. + * For backward compatibility, do not modify it until you have to! + */ + function parseDataValue(value, + // For high performance, do not omit the second param. + opt) { + // Performance sensitive. + var dimType = opt && opt.type; + if (dimType === 'ordinal') { + // If given value is a category string + return value; + } + if (dimType === 'time' + // spead up when using timestamp + && !isNumber(value) && value != null && value !== '-') { + value = +parseDate(value); + } + // dimType defaults 'number'. + // If dimType is not ordinal and value is null or undefined or NaN or '-', + // parse to NaN. + // number-like string (like ' 123 ') can be converted to a number. + // where null/undefined or other string will be converted to NaN. + return value == null || value === '' ? NaN + // If string (like '-'), using '+' parse to NaN + // If object, also parse to NaN + : +value; + } + var valueParserMap = createHashMap({ + 'number': function (val) { + // Do not use `numericToNumber` here. We have `numericToNumber` by default. + // Here the number parser can have loose rule: + // enable to cut suffix: "120px" => 120, "14%" => 14. + return parseFloat(val); + }, + 'time': function (val) { + // return timestamp. + return +parseDate(val); + }, + 'trim': function (val) { + return isString(val) ? trim(val) : val; + } + }); + function getRawValueParser(type) { + return valueParserMap.get(type); + } + var ORDER_COMPARISON_OP_MAP = { + lt: function (lval, rval) { + return lval < rval; + }, + lte: function (lval, rval) { + return lval <= rval; + }, + gt: function (lval, rval) { + return lval > rval; + }, + gte: function (lval, rval) { + return lval >= rval; + } + }; + var FilterOrderComparator = /** @class */function () { + function FilterOrderComparator(op, rval) { + if (!isNumber(rval)) { + var errMsg = ''; + if ("development" !== 'production') { + errMsg = 'rvalue of "<", ">", "<=", ">=" can only be number in filter.'; + } + throwError(errMsg); + } + this._opFn = ORDER_COMPARISON_OP_MAP[op]; + this._rvalFloat = numericToNumber(rval); + } + // Performance sensitive. + FilterOrderComparator.prototype.evaluate = function (lval) { + // Most cases is 'number', and typeof maybe 10 times faseter than parseFloat. + return isNumber(lval) ? this._opFn(lval, this._rvalFloat) : this._opFn(numericToNumber(lval), this._rvalFloat); + }; + return FilterOrderComparator; + }(); + var SortOrderComparator = /** @class */function () { + /** + * @param order by default: 'asc' + * @param incomparable by default: Always on the tail. + * That is, if 'asc' => 'max', if 'desc' => 'min' + * See the definition of "incomparable" in [SORT_COMPARISON_RULE]. + */ + function SortOrderComparator(order, incomparable) { + var isDesc = order === 'desc'; + this._resultLT = isDesc ? 1 : -1; + if (incomparable == null) { + incomparable = isDesc ? 'min' : 'max'; + } + this._incomparable = incomparable === 'min' ? -Infinity : Infinity; + } + // See [SORT_COMPARISON_RULE]. + // Performance sensitive. + SortOrderComparator.prototype.evaluate = function (lval, rval) { + // Most cases is 'number', and typeof maybe 10 times faseter than parseFloat. + var lvalFloat = isNumber(lval) ? lval : numericToNumber(lval); + var rvalFloat = isNumber(rval) ? rval : numericToNumber(rval); + var lvalNotNumeric = isNaN(lvalFloat); + var rvalNotNumeric = isNaN(rvalFloat); + if (lvalNotNumeric) { + lvalFloat = this._incomparable; + } + if (rvalNotNumeric) { + rvalFloat = this._incomparable; + } + if (lvalNotNumeric && rvalNotNumeric) { + var lvalIsStr = isString(lval); + var rvalIsStr = isString(rval); + if (lvalIsStr) { + lvalFloat = rvalIsStr ? lval : 0; + } + if (rvalIsStr) { + rvalFloat = lvalIsStr ? rval : 0; + } + } + return lvalFloat < rvalFloat ? this._resultLT : lvalFloat > rvalFloat ? -this._resultLT : 0; + }; + return SortOrderComparator; + }(); + var FilterEqualityComparator = /** @class */function () { + function FilterEqualityComparator(isEq, rval) { + this._rval = rval; + this._isEQ = isEq; + this._rvalTypeof = typeof rval; + this._rvalFloat = numericToNumber(rval); + } + // Performance sensitive. + FilterEqualityComparator.prototype.evaluate = function (lval) { + var eqResult = lval === this._rval; + if (!eqResult) { + var lvalTypeof = typeof lval; + if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === 'number' || this._rvalTypeof === 'number')) { + eqResult = numericToNumber(lval) === this._rvalFloat; + } + } + return this._isEQ ? eqResult : !eqResult; + }; + return FilterEqualityComparator; + }(); + /** + * [FILTER_COMPARISON_RULE] + * `lt`|`lte`|`gt`|`gte`: + * + rval must be a number. And lval will be converted to number (`numericToNumber`) to compare. + * `eq`: + * + If same type, compare with `===`. + * + If there is one number, convert to number (`numericToNumber`) to compare. + * + Else return `false`. + * `ne`: + * + Not `eq`. + * + * + * [SORT_COMPARISON_RULE] + * All the values are grouped into three categories: + * + "numeric" (number and numeric string) + * + "non-numeric-string" (string that excluding numeric string) + * + "others" + * "numeric" vs "numeric": values are ordered by number order. + * "non-numeric-string" vs "non-numeric-string": values are ordered by ES spec (#sec-abstract-relational-comparison). + * "others" vs "others": do not change order (always return 0). + * "numeric" vs "non-numeric-string": "non-numeric-string" is treated as "incomparable". + * "number" vs "others": "others" is treated as "incomparable". + * "non-numeric-string" vs "others": "others" is treated as "incomparable". + * "incomparable" will be seen as -Infinity or Infinity (depends on the settings). + * MEMO: + * Non-numeric string sort makes sense when we need to put the items with the same tag together. + * But if we support string sort, we still need to avoid the misleading like `'2' > '12'`, + * So we treat "numeric-string" sorted by number order rather than string comparison. + * + * + * [CHECK_LIST_OF_THE_RULE_DESIGN] + * + Do not support string comparison until required. And also need to + * avoid the misleading of "2" > "12". + * + Should avoid the misleading case: + * `" 22 " gte "22"` is `true` but `" 22 " eq "22"` is `false`. + * + JS bad case should be avoided: null <= 0, [] <= 0, ' ' <= 0, ... + * + Only "numeric" can be converted to comparable number, otherwise converted to NaN. + * See `util/number.ts#numericToNumber`. + * + * @return If `op` is not `RelationalOperator`, return null; + */ + function createFilterComparator(op, rval) { + return op === 'eq' || op === 'ne' ? new FilterEqualityComparator(op === 'eq', rval) : hasOwn(ORDER_COMPARISON_OP_MAP, op) ? new FilterOrderComparator(op, rval) : null; + } + + /** + * TODO: disable writable. + * This structure will be exposed to users. + */ + var ExternalSource = /** @class */function () { + function ExternalSource() {} + ExternalSource.prototype.getRawData = function () { + // Only built-in transform available. + throw new Error('not supported'); + }; + ExternalSource.prototype.getRawDataItem = function (dataIndex) { + // Only built-in transform available. + throw new Error('not supported'); + }; + ExternalSource.prototype.cloneRawData = function () { + return; + }; + /** + * @return If dimension not found, return null/undefined. + */ + ExternalSource.prototype.getDimensionInfo = function (dim) { + return; + }; + /** + * dimensions defined if and only if either: + * (a) dataset.dimensions are declared. + * (b) dataset data include dimensions definitions in data (detected or via specified `sourceHeader`). + * If dimensions are defined, `dimensionInfoAll` is corresponding to + * the defined dimensions. + * Otherwise, `dimensionInfoAll` is determined by data columns. + * @return Always return an array (even empty array). + */ + ExternalSource.prototype.cloneAllDimensionInfo = function () { + return; + }; + ExternalSource.prototype.count = function () { + return; + }; + /** + * Only support by dimension index. + * No need to support by dimension name in transform function, + * because transform function is not case-specific, no need to use name literally. + */ + ExternalSource.prototype.retrieveValue = function (dataIndex, dimIndex) { + return; + }; + ExternalSource.prototype.retrieveValueFromItem = function (dataItem, dimIndex) { + return; + }; + ExternalSource.prototype.convertValue = function (rawVal, dimInfo) { + return parseDataValue(rawVal, dimInfo); + }; + return ExternalSource; + }(); + function createExternalSource(internalSource, externalTransform) { + var extSource = new ExternalSource(); + var data = internalSource.data; + var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat; + var sourceHeaderCount = internalSource.startIndex; + var errMsg = ''; + if (internalSource.seriesLayoutBy !== SERIES_LAYOUT_BY_COLUMN) { + // For the logic simplicity in transformer, only 'culumn' is + // supported in data transform. Otherwise, the `dimensionsDefine` + // might be detected by 'row', which probably confuses users. + if ("development" !== 'production') { + errMsg = '`seriesLayoutBy` of upstream dataset can only be "column" in data transform.'; + } + throwError(errMsg); + } + // [MEMO] + // Create a new dimensions structure for exposing. + // Do not expose all dimension info to users directly. + // Because the dimension is probably auto detected from data and not might reliable. + // Should not lead the transformers to think that is reliable and return it. + // See [DIMENSION_INHERIT_RULE] in `sourceManager.ts`. + var dimensions = []; + var dimsByName = {}; + var dimsDef = internalSource.dimensionsDefine; + if (dimsDef) { + each(dimsDef, function (dimDef, idx) { + var name = dimDef.name; + var dimDefExt = { + index: idx, + name: name, + displayName: dimDef.displayName + }; + dimensions.push(dimDefExt); + // Users probably do not specify dimension name. For simplicity, data transform + // does not generate dimension name. + if (name != null) { + // Dimension name should not be duplicated. + // For simplicity, data transform forbids name duplication, do not generate + // new name like module `completeDimensions.ts` did, but just tell users. + var errMsg_1 = ''; + if (hasOwn(dimsByName, name)) { + if ("development" !== 'production') { + errMsg_1 = 'dimension name "' + name + '" duplicated.'; + } + throwError(errMsg_1); + } + dimsByName[name] = dimDefExt; + } + }); + } + // If dimension definitions are not defined and can not be detected. + // e.g., pure data `[[11, 22], ...]`. + else { + for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) { + // Do not generete name or anything others. The consequence process in + // `transform` or `series` probably have there own name generation strategry. + dimensions.push({ + index: i + }); + } + } + // Implement public methods: + var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN); + if (externalTransform.__isBuiltIn) { + extSource.getRawDataItem = function (dataIndex) { + return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex); + }; + extSource.getRawData = bind(getRawData, null, internalSource); + } + extSource.cloneRawData = bind(cloneRawData, null, internalSource); + var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN); + extSource.count = bind(rawCounter, null, data, sourceHeaderCount, dimensions); + var rawValueGetter = getRawSourceValueGetter(sourceFormat); + extSource.retrieveValue = function (dataIndex, dimIndex) { + var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex); + return retrieveValueFromItem(rawItem, dimIndex); + }; + var retrieveValueFromItem = extSource.retrieveValueFromItem = function (dataItem, dimIndex) { + if (dataItem == null) { + return; + } + var dimDef = dimensions[dimIndex]; + // When `dimIndex` is `null`, `rawValueGetter` return the whole item. + if (dimDef) { + return rawValueGetter(dataItem, dimIndex, dimDef.name); + } + }; + extSource.getDimensionInfo = bind(getDimensionInfo, null, dimensions, dimsByName); + extSource.cloneAllDimensionInfo = bind(cloneAllDimensionInfo, null, dimensions); + return extSource; + } + function getRawData(upstream) { + var sourceFormat = upstream.sourceFormat; + if (!isSupportedSourceFormat(sourceFormat)) { + var errMsg = ''; + if ("development" !== 'production') { + errMsg = '`getRawData` is not supported in source format ' + sourceFormat; + } + throwError(errMsg); + } + return upstream.data; + } + function cloneRawData(upstream) { + var sourceFormat = upstream.sourceFormat; + var data = upstream.data; + if (!isSupportedSourceFormat(sourceFormat)) { + var errMsg = ''; + if ("development" !== 'production') { + errMsg = '`cloneRawData` is not supported in source format ' + sourceFormat; + } + throwError(errMsg); + } + if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) { + var result = []; + for (var i = 0, len = data.length; i < len; i++) { + // Not strictly clone for performance + result.push(data[i].slice()); + } + return result; + } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) { + var result = []; + for (var i = 0, len = data.length; i < len; i++) { + // Not strictly clone for performance + result.push(extend({}, data[i])); + } + return result; + } + } + function getDimensionInfo(dimensions, dimsByName, dim) { + if (dim == null) { + return; + } + // Keep the same logic as `List::getDimension` did. + if (isNumber(dim) + // If being a number-like string but not being defined a dimension name. + || !isNaN(dim) && !hasOwn(dimsByName, dim)) { + return dimensions[dim]; + } else if (hasOwn(dimsByName, dim)) { + return dimsByName[dim]; + } + } + function cloneAllDimensionInfo(dimensions) { + return clone(dimensions); + } + var externalTransformMap = createHashMap(); + function registerExternalTransform(externalTransform) { + externalTransform = clone(externalTransform); + var type = externalTransform.type; + var errMsg = ''; + if (!type) { + if ("development" !== 'production') { + errMsg = 'Must have a `type` when `registerTransform`.'; + } + throwError(errMsg); + } + var typeParsed = type.split(':'); + if (typeParsed.length !== 2) { + if ("development" !== 'production') { + errMsg = 'Name must include namespace like "ns:regression".'; + } + throwError(errMsg); + } + // Namespace 'echarts:xxx' is official namespace, where the transforms should + // be called directly via 'xxx' rather than 'echarts:xxx'. + var isBuiltIn = false; + if (typeParsed[0] === 'echarts') { + type = typeParsed[1]; + isBuiltIn = true; + } + externalTransform.__isBuiltIn = isBuiltIn; + externalTransformMap.set(type, externalTransform); + } + function applyDataTransform(rawTransOption, sourceList, infoForPrint) { + var pipedTransOption = normalizeToArray(rawTransOption); + var pipeLen = pipedTransOption.length; + var errMsg = ''; + if (!pipeLen) { + if ("development" !== 'production') { + errMsg = 'If `transform` declared, it should at least contain one transform.'; + } + throwError(errMsg); + } + for (var i = 0, len = pipeLen; i < len; i++) { + var transOption = pipedTransOption[i]; + sourceList = applySingleDataTransform(transOption, sourceList, infoForPrint, pipeLen === 1 ? null : i); + // piped transform only support single input, except the fist one. + // piped transform only support single output, except the last one. + if (i !== len - 1) { + sourceList.length = Math.max(sourceList.length, 1); + } + } + return sourceList; + } + function applySingleDataTransform(transOption, upSourceList, infoForPrint, + // If `pipeIndex` is null/undefined, no piped transform. + pipeIndex) { + var errMsg = ''; + if (!upSourceList.length) { + if ("development" !== 'production') { + errMsg = 'Must have at least one upstream dataset.'; + } + throwError(errMsg); + } + if (!isObject(transOption)) { + if ("development" !== 'production') { + errMsg = 'transform declaration must be an object rather than ' + typeof transOption + '.'; + } + throwError(errMsg); + } + var transType = transOption.type; + var externalTransform = externalTransformMap.get(transType); + if (!externalTransform) { + if ("development" !== 'production') { + errMsg = 'Can not find transform on type "' + transType + '".'; + } + throwError(errMsg); + } + // Prepare source + var extUpSourceList = map(upSourceList, function (upSource) { + return createExternalSource(upSource, externalTransform); + }); + var resultList = normalizeToArray(externalTransform.transform({ + upstream: extUpSourceList[0], + upstreamList: extUpSourceList, + config: clone(transOption.config) + })); + if ("development" !== 'production') { + if (transOption.print) { + var printStrArr = map(resultList, function (extSource) { + var pipeIndexStr = pipeIndex != null ? ' === pipe index: ' + pipeIndex : ''; + return ['=== dataset index: ' + infoForPrint.datasetIndex + pipeIndexStr + ' ===', '- transform result data:', makePrintable(extSource.data), '- transform result dimensions:', makePrintable(extSource.dimensions)].join('\n'); + }).join('\n'); + log(printStrArr); + } + } + return map(resultList, function (result, resultIndex) { + var errMsg = ''; + if (!isObject(result)) { + if ("development" !== 'production') { + errMsg = 'A transform should not return some empty results.'; + } + throwError(errMsg); + } + if (!result.data) { + if ("development" !== 'production') { + errMsg = 'Transform result data should be not be null or undefined'; + } + throwError(errMsg); + } + var sourceFormat = detectSourceFormat(result.data); + if (!isSupportedSourceFormat(sourceFormat)) { + if ("development" !== 'production') { + errMsg = 'Transform result data should be array rows or object rows.'; + } + throwError(errMsg); + } + var resultMetaRawOption; + var firstUpSource = upSourceList[0]; + /** + * Intuitively, the end users known the content of the original `dataset.source`, + * calucating the transform result in mind. + * Suppose the original `dataset.source` is: + * ```js + * [ + * ['product', '2012', '2013', '2014', '2015'], + * ['AAA', 41.1, 30.4, 65.1, 53.3], + * ['BBB', 86.5, 92.1, 85.7, 83.1], + * ['CCC', 24.1, 67.2, 79.5, 86.4] + * ] + * ``` + * The dimension info have to be detected from the source data. + * Some of the transformers (like filter, sort) will follow the dimension info + * of upstream, while others use new dimensions (like aggregate). + * Transformer can output a field `dimensions` to define the its own output dimensions. + * We also allow transformers to ignore the output `dimensions` field, and + * inherit the upstream dimensions definition. It can reduce the burden of handling + * dimensions in transformers. + * + * See also [DIMENSION_INHERIT_RULE] in `sourceManager.ts`. + */ + if (firstUpSource && resultIndex === 0 + // If transformer returns `dimensions`, it means that the transformer has different + // dimensions definitions. We do not inherit anything from upstream. + && !result.dimensions) { + var startIndex = firstUpSource.startIndex; + // We copy the header of upstream to the result, because: + // (1) The returned data always does not contain header line and can not be used + // as dimension-detection. In this case we can not use "detected dimensions" of + // upstream directly, because it might be detected based on different `seriesLayoutBy`. + // (2) We should support that the series read the upstream source in `seriesLayoutBy: 'row'`. + // So the original detected header should be add to the result, otherwise they can not be read. + if (startIndex) { + result.data = firstUpSource.data.slice(0, startIndex).concat(result.data); + } + resultMetaRawOption = { + seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN, + sourceHeader: startIndex, + dimensions: firstUpSource.metaRawOption.dimensions + }; + } else { + resultMetaRawOption = { + seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN, + sourceHeader: 0, + dimensions: result.dimensions + }; + } + return createSource(result.data, resultMetaRawOption, null); + }); + } + function isSupportedSourceFormat(sourceFormat) { + return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS; + } + + var UNDEFINED = 'undefined'; + /* global Float64Array, Int32Array, Uint32Array, Uint16Array */ + // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is + // different from the Ctor of typed array. + var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array; + var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array; + var CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array; + var CtorFloat64Array = typeof Float64Array === UNDEFINED ? Array : Float64Array; + /** + * Multi dimensional data store + */ + var dataCtors = { + 'float': CtorFloat64Array, + 'int': CtorInt32Array, + // Ordinal data type can be string or int + 'ordinal': Array, + 'number': Array, + 'time': CtorFloat64Array + }; + var defaultDimValueGetters; + function getIndicesCtor(rawCount) { + // The possible max value in this._indicies is always this._rawCount despite of filtering. + return rawCount > 65535 ? CtorUint32Array : CtorUint16Array; + } + function getInitialExtent() { + return [Infinity, -Infinity]; + } + function cloneChunk(originalChunk) { + var Ctor = originalChunk.constructor; + // Only shallow clone is enough when Array. + return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk); + } + function prepareStore(store, dimIdx, dimType, end, append) { + var DataCtor = dataCtors[dimType || 'float']; + if (append) { + var oldStore = store[dimIdx]; + var oldLen = oldStore && oldStore.length; + if (!(oldLen === end)) { + var newStore = new DataCtor(end); + // The cost of the copy is probably inconsiderable + // within the initial chunkSize. + for (var j = 0; j < oldLen; j++) { + newStore[j] = oldStore[j]; + } + store[dimIdx] = newStore; + } + } else { + store[dimIdx] = new DataCtor(end); + } + } + /** + * Basically, DataStore API keep immutable. + */ + var DataStore = /** @class */function () { + function DataStore() { + this._chunks = []; + // It will not be calculated until needed. + this._rawExtent = []; + this._extent = []; + this._count = 0; + this._rawCount = 0; + this._calcDimNameToIdx = createHashMap(); + } + /** + * Initialize from data + */ + DataStore.prototype.initData = function (provider, inputDimensions, dimValueGetter) { + if ("development" !== 'production') { + assert(isFunction(provider.getItem) && isFunction(provider.count), 'Invalid data provider.'); + } + this._provider = provider; + // Clear + this._chunks = []; + this._indices = null; + this.getRawIndex = this._getRawIdxIdentity; + var source = provider.getSource(); + var defaultGetter = this.defaultDimValueGetter = defaultDimValueGetters[source.sourceFormat]; + // Default dim value getter + this._dimValueGetter = dimValueGetter || defaultGetter; + // Reset raw extent. + this._rawExtent = []; + var willRetrieveDataByName = shouldRetrieveDataByName(source); + this._dimensions = map(inputDimensions, function (dim) { + if ("development" !== 'production') { + if (willRetrieveDataByName) { + assert(dim.property != null); + } + } + return { + // Only pick these two props. Not leak other properties like orderMeta. + type: dim.type, + property: dim.property + }; + }); + this._initDataFromProvider(0, provider.count()); + }; + DataStore.prototype.getProvider = function () { + return this._provider; + }; + /** + * Caution: even when a `source` instance owned by a series, the created data store + * may still be shared by different sereis (the source hash does not use all `source` + * props, see `sourceManager`). In this case, the `source` props that are not used in + * hash (like `source.dimensionDefine`) probably only belongs to a certain series and + * thus should not be fetch here. + */ + DataStore.prototype.getSource = function () { + return this._provider.getSource(); + }; + /** + * @caution Only used in dataStack. + */ + DataStore.prototype.ensureCalculationDimension = function (dimName, type) { + var calcDimNameToIdx = this._calcDimNameToIdx; + var dimensions = this._dimensions; + var calcDimIdx = calcDimNameToIdx.get(dimName); + if (calcDimIdx != null) { + if (dimensions[calcDimIdx].type === type) { + return calcDimIdx; + } + } else { + calcDimIdx = dimensions.length; + } + dimensions[calcDimIdx] = { + type: type + }; + calcDimNameToIdx.set(dimName, calcDimIdx); + this._chunks[calcDimIdx] = new dataCtors[type || 'float'](this._rawCount); + this._rawExtent[calcDimIdx] = getInitialExtent(); + return calcDimIdx; + }; + DataStore.prototype.collectOrdinalMeta = function (dimIdx, ordinalMeta) { + var chunk = this._chunks[dimIdx]; + var dim = this._dimensions[dimIdx]; + var rawExtents = this._rawExtent; + var offset = dim.ordinalOffset || 0; + var len = chunk.length; + if (offset === 0) { + // We need to reset the rawExtent if collect is from start. + // Because this dimension may be guessed as number and calcuating a wrong extent. + rawExtents[dimIdx] = getInitialExtent(); + } + var dimRawExtent = rawExtents[dimIdx]; + // Parse from previous data offset. len may be changed after appendData + for (var i = offset; i < len; i++) { + var val = chunk[i] = ordinalMeta.parseAndCollect(chunk[i]); + if (!isNaN(val)) { + dimRawExtent[0] = Math.min(val, dimRawExtent[0]); + dimRawExtent[1] = Math.max(val, dimRawExtent[1]); + } + } + dim.ordinalMeta = ordinalMeta; + dim.ordinalOffset = len; + dim.type = 'ordinal'; // Force to be ordinal + }; + + DataStore.prototype.getOrdinalMeta = function (dimIdx) { + var dimInfo = this._dimensions[dimIdx]; + var ordinalMeta = dimInfo.ordinalMeta; + return ordinalMeta; + }; + DataStore.prototype.getDimensionProperty = function (dimIndex) { + var item = this._dimensions[dimIndex]; + return item && item.property; + }; + /** + * Caution: Can be only called on raw data (before `this._indices` created). + */ + DataStore.prototype.appendData = function (data) { + if ("development" !== 'production') { + assert(!this._indices, 'appendData can only be called on raw data.'); + } + var provider = this._provider; + var start = this.count(); + provider.appendData(data); + var end = provider.count(); + if (!provider.persistent) { + end += start; + } + if (start < end) { + this._initDataFromProvider(start, end, true); + } + return [start, end]; + }; + DataStore.prototype.appendValues = function (values, minFillLen) { + var chunks = this._chunks; + var dimensions = this._dimensions; + var dimLen = dimensions.length; + var rawExtent = this._rawExtent; + var start = this.count(); + var end = start + Math.max(values.length, minFillLen || 0); + for (var i = 0; i < dimLen; i++) { + var dim = dimensions[i]; + prepareStore(chunks, i, dim.type, end, true); + } + var emptyDataItem = []; + for (var idx = start; idx < end; idx++) { + var sourceIdx = idx - start; + // Store the data by dimensions + for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) { + var dim = dimensions[dimIdx]; + var val = defaultDimValueGetters.arrayRows.call(this, values[sourceIdx] || emptyDataItem, dim.property, sourceIdx, dimIdx); + chunks[dimIdx][idx] = val; + var dimRawExtent = rawExtent[dimIdx]; + val < dimRawExtent[0] && (dimRawExtent[0] = val); + val > dimRawExtent[1] && (dimRawExtent[1] = val); + } + } + this._rawCount = this._count = end; + return { + start: start, + end: end + }; + }; + DataStore.prototype._initDataFromProvider = function (start, end, append) { + var provider = this._provider; + var chunks = this._chunks; + var dimensions = this._dimensions; + var dimLen = dimensions.length; + var rawExtent = this._rawExtent; + var dimNames = map(dimensions, function (dim) { + return dim.property; + }); + for (var i = 0; i < dimLen; i++) { + var dim = dimensions[i]; + if (!rawExtent[i]) { + rawExtent[i] = getInitialExtent(); + } + prepareStore(chunks, i, dim.type, end, append); + } + if (provider.fillStorage) { + provider.fillStorage(start, end, chunks, rawExtent); + } else { + var dataItem = []; + for (var idx = start; idx < end; idx++) { + // NOTICE: Try not to write things into dataItem + dataItem = provider.getItem(idx, dataItem); + // Each data item is value + // [1, 2] + // 2 + // Bar chart, line chart which uses category axis + // only gives the 'y' value. 'x' value is the indices of category + // Use a tempValue to normalize the value to be a (x, y) value + // Store the data by dimensions + for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) { + var dimStorage = chunks[dimIdx]; + // PENDING NULL is empty or zero + var val = this._dimValueGetter(dataItem, dimNames[dimIdx], idx, dimIdx); + dimStorage[idx] = val; + var dimRawExtent = rawExtent[dimIdx]; + val < dimRawExtent[0] && (dimRawExtent[0] = val); + val > dimRawExtent[1] && (dimRawExtent[1] = val); + } + } + } + if (!provider.persistent && provider.clean) { + // Clean unused data if data source is typed array. + provider.clean(); + } + this._rawCount = this._count = end; + // Reset data extent + this._extent = []; + }; + DataStore.prototype.count = function () { + return this._count; + }; + /** + * Get value. Return NaN if idx is out of range. + */ + DataStore.prototype.get = function (dim, idx) { + if (!(idx >= 0 && idx < this._count)) { + return NaN; + } + var dimStore = this._chunks[dim]; + return dimStore ? dimStore[this.getRawIndex(idx)] : NaN; + }; + DataStore.prototype.getValues = function (dimensions, idx) { + var values = []; + var dimArr = []; + if (idx == null) { + idx = dimensions; + // TODO get all from store? + dimensions = []; + // All dimensions + for (var i = 0; i < this._dimensions.length; i++) { + dimArr.push(i); + } + } else { + dimArr = dimensions; + } + for (var i = 0, len = dimArr.length; i < len; i++) { + values.push(this.get(dimArr[i], idx)); + } + return values; + }; + /** + * @param dim concrete dim + */ + DataStore.prototype.getByRawIndex = function (dim, rawIdx) { + if (!(rawIdx >= 0 && rawIdx < this._rawCount)) { + return NaN; + } + var dimStore = this._chunks[dim]; + return dimStore ? dimStore[rawIdx] : NaN; + }; + /** + * Get sum of data in one dimension + */ + DataStore.prototype.getSum = function (dim) { + var dimData = this._chunks[dim]; + var sum = 0; + if (dimData) { + for (var i = 0, len = this.count(); i < len; i++) { + var value = this.get(dim, i); + if (!isNaN(value)) { + sum += value; + } + } + } + return sum; + }; + /** + * Get median of data in one dimension + */ + DataStore.prototype.getMedian = function (dim) { + var dimDataArray = []; + // map all data of one dimension + this.each([dim], function (val) { + if (!isNaN(val)) { + dimDataArray.push(val); + } + }); + // TODO + // Use quick select? + var sortedDimDataArray = dimDataArray.sort(function (a, b) { + return a - b; + }); + var len = this.count(); + // calculate median + return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2; + }; + /** + * Retrieve the index with given raw data index. + */ + DataStore.prototype.indexOfRawIndex = function (rawIndex) { + if (rawIndex >= this._rawCount || rawIndex < 0) { + return -1; + } + if (!this._indices) { + return rawIndex; + } + // Indices are ascending + var indices = this._indices; + // If rawIndex === dataIndex + var rawDataIndex = indices[rawIndex]; + if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) { + return rawIndex; + } + var left = 0; + var right = this._count - 1; + while (left <= right) { + var mid = (left + right) / 2 | 0; + if (indices[mid] < rawIndex) { + left = mid + 1; + } else if (indices[mid] > rawIndex) { + right = mid - 1; + } else { + return mid; + } + } + return -1; + }; + /** + * Retrieve the index of nearest value. + * @param dim + * @param value + * @param [maxDistance=Infinity] + * @return If and only if multiple indices have + * the same value, they are put to the result. + */ + DataStore.prototype.indicesOfNearest = function (dim, value, maxDistance) { + var chunks = this._chunks; + var dimData = chunks[dim]; + var nearestIndices = []; + if (!dimData) { + return nearestIndices; + } + if (maxDistance == null) { + maxDistance = Infinity; + } + var minDist = Infinity; + var minDiff = -1; + var nearestIndicesLen = 0; + // Check the test case of `test/ut/spec/data/SeriesData.js`. + for (var i = 0, len = this.count(); i < len; i++) { + var dataIndex = this.getRawIndex(i); + var diff = value - dimData[dataIndex]; + var dist = Math.abs(diff); + if (dist <= maxDistance) { + // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`, + // we'd better not push both of them to `nearestIndices`, otherwise it is easy to + // get more than one item in `nearestIndices` (more specifically, in `tooltip`). + // So we choose the one that `diff >= 0` in this case. + // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them + // should be push to `nearestIndices`. + if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) { + minDist = dist; + minDiff = diff; + nearestIndicesLen = 0; + } + if (diff === minDiff) { + nearestIndices[nearestIndicesLen++] = i; + } + } + } + nearestIndices.length = nearestIndicesLen; + return nearestIndices; + }; + DataStore.prototype.getIndices = function () { + var newIndices; + var indices = this._indices; + if (indices) { + var Ctor = indices.constructor; + var thisCount = this._count; + // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`. + if (Ctor === Array) { + newIndices = new Ctor(thisCount); + for (var i = 0; i < thisCount; i++) { + newIndices[i] = indices[i]; + } + } else { + newIndices = new Ctor(indices.buffer, 0, thisCount); + } + } else { + var Ctor = getIndicesCtor(this._rawCount); + newIndices = new Ctor(this.count()); + for (var i = 0; i < newIndices.length; i++) { + newIndices[i] = i; + } + } + return newIndices; + }; + /** + * Data filter. + */ + DataStore.prototype.filter = function (dims, cb) { + if (!this._count) { + return this; + } + var newStore = this.clone(); + var count = newStore.count(); + var Ctor = getIndicesCtor(newStore._rawCount); + var newIndices = new Ctor(count); + var value = []; + var dimSize = dims.length; + var offset = 0; + var dim0 = dims[0]; + var chunks = newStore._chunks; + for (var i = 0; i < count; i++) { + var keep = void 0; + var rawIdx = newStore.getRawIndex(i); + // Simple optimization + if (dimSize === 0) { + keep = cb(i); + } else if (dimSize === 1) { + var val = chunks[dim0][rawIdx]; + keep = cb(val, i); + } else { + var k = 0; + for (; k < dimSize; k++) { + value[k] = chunks[dims[k]][rawIdx]; + } + value[k] = i; + keep = cb.apply(null, value); + } + if (keep) { + newIndices[offset++] = rawIdx; + } + } + // Set indices after filtered. + if (offset < count) { + newStore._indices = newIndices; + } + newStore._count = offset; + // Reset data extent + newStore._extent = []; + newStore._updateGetRawIdx(); + return newStore; + }; + /** + * Select data in range. (For optimization of filter) + * (Manually inline code, support 5 million data filtering in data zoom.) + */ + DataStore.prototype.selectRange = function (range) { + var newStore = this.clone(); + var len = newStore._count; + if (!len) { + return this; + } + var dims = keys(range); + var dimSize = dims.length; + if (!dimSize) { + return this; + } + var originalCount = newStore.count(); + var Ctor = getIndicesCtor(newStore._rawCount); + var newIndices = new Ctor(originalCount); + var offset = 0; + var dim0 = dims[0]; + var min = range[dim0][0]; + var max = range[dim0][1]; + var storeArr = newStore._chunks; + var quickFinished = false; + if (!newStore._indices) { + // Extreme optimization for common case. About 2x faster in chrome. + var idx = 0; + if (dimSize === 1) { + var dimStorage = storeArr[dims[0]]; + for (var i = 0; i < len; i++) { + var val = dimStorage[i]; + // NaN will not be filtered. Consider the case, in line chart, empty + // value indicates the line should be broken. But for the case like + // scatter plot, a data item with empty value will not be rendered, + // but the axis extent may be effected if some other dim of the data + // item has value. Fortunately it is not a significant negative effect. + if (val >= min && val <= max || isNaN(val)) { + newIndices[offset++] = idx; + } + idx++; + } + quickFinished = true; + } else if (dimSize === 2) { + var dimStorage = storeArr[dims[0]]; + var dimStorage2 = storeArr[dims[1]]; + var min2 = range[dims[1]][0]; + var max2 = range[dims[1]][1]; + for (var i = 0; i < len; i++) { + var val = dimStorage[i]; + var val2 = dimStorage2[i]; + // Do not filter NaN, see comment above. + if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) { + newIndices[offset++] = idx; + } + idx++; + } + quickFinished = true; + } + } + if (!quickFinished) { + if (dimSize === 1) { + for (var i = 0; i < originalCount; i++) { + var rawIndex = newStore.getRawIndex(i); + var val = storeArr[dims[0]][rawIndex]; + // Do not filter NaN, see comment above. + if (val >= min && val <= max || isNaN(val)) { + newIndices[offset++] = rawIndex; + } + } + } else { + for (var i = 0; i < originalCount; i++) { + var keep = true; + var rawIndex = newStore.getRawIndex(i); + for (var k = 0; k < dimSize; k++) { + var dimk = dims[k]; + var val = storeArr[dimk][rawIndex]; + // Do not filter NaN, see comment above. + if (val < range[dimk][0] || val > range[dimk][1]) { + keep = false; + } + } + if (keep) { + newIndices[offset++] = newStore.getRawIndex(i); + } + } + } + } + // Set indices after filtered. + if (offset < originalCount) { + newStore._indices = newIndices; + } + newStore._count = offset; + // Reset data extent + newStore._extent = []; + newStore._updateGetRawIdx(); + return newStore; + }; + // /** + // * Data mapping to a plain array + // */ + // mapArray(dims: DimensionIndex[], cb: MapArrayCb): any[] { + // const result: any[] = []; + // this.each(dims, function () { + // result.push(cb && (cb as MapArrayCb).apply(null, arguments)); + // }); + // return result; + // } + /** + * Data mapping to a new List with given dimensions + */ + DataStore.prototype.map = function (dims, cb) { + // TODO only clone picked chunks. + var target = this.clone(dims); + this._updateDims(target, dims, cb); + return target; + }; + /** + * @caution Danger!! Only used in dataStack. + */ + DataStore.prototype.modify = function (dims, cb) { + this._updateDims(this, dims, cb); + }; + DataStore.prototype._updateDims = function (target, dims, cb) { + var targetChunks = target._chunks; + var tmpRetValue = []; + var dimSize = dims.length; + var dataCount = target.count(); + var values = []; + var rawExtent = target._rawExtent; + for (var i = 0; i < dims.length; i++) { + rawExtent[dims[i]] = getInitialExtent(); + } + for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) { + var rawIndex = target.getRawIndex(dataIndex); + for (var k = 0; k < dimSize; k++) { + values[k] = targetChunks[dims[k]][rawIndex]; + } + values[dimSize] = dataIndex; + var retValue = cb && cb.apply(null, values); + if (retValue != null) { + // a number or string (in oridinal dimension)? + if (typeof retValue !== 'object') { + tmpRetValue[0] = retValue; + retValue = tmpRetValue; + } + for (var i = 0; i < retValue.length; i++) { + var dim = dims[i]; + var val = retValue[i]; + var rawExtentOnDim = rawExtent[dim]; + var dimStore = targetChunks[dim]; + if (dimStore) { + dimStore[rawIndex] = val; + } + if (val < rawExtentOnDim[0]) { + rawExtentOnDim[0] = val; + } + if (val > rawExtentOnDim[1]) { + rawExtentOnDim[1] = val; + } + } + } + } + }; + /** + * Large data down sampling using largest-triangle-three-buckets + * @param {string} valueDimension + * @param {number} targetCount + */ + DataStore.prototype.lttbDownSample = function (valueDimension, rate) { + var target = this.clone([valueDimension], true); + var targetStorage = target._chunks; + var dimStore = targetStorage[valueDimension]; + var len = this.count(); + var sampledIndex = 0; + var frameSize = Math.floor(1 / rate); + var currentRawIndex = this.getRawIndex(0); + var maxArea; + var area; + var nextRawIndex; + var newIndices = new (getIndicesCtor(this._rawCount))(Math.min((Math.ceil(len / frameSize) + 2) * 2, len)); + // First frame use the first data. + newIndices[sampledIndex++] = currentRawIndex; + for (var i = 1; i < len - 1; i += frameSize) { + var nextFrameStart = Math.min(i + frameSize, len - 1); + var nextFrameEnd = Math.min(i + frameSize * 2, len); + var avgX = (nextFrameEnd + nextFrameStart) / 2; + var avgY = 0; + for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) { + var rawIndex = this.getRawIndex(idx); + var y = dimStore[rawIndex]; + if (isNaN(y)) { + continue; + } + avgY += y; + } + avgY /= nextFrameEnd - nextFrameStart; + var frameStart = i; + var frameEnd = Math.min(i + frameSize, len); + var pointAX = i - 1; + var pointAY = dimStore[currentRawIndex]; + maxArea = -1; + nextRawIndex = frameStart; + var firstNaNIndex = -1; + var countNaN = 0; + // Find a point from current frame that construct a triangle with largest area with previous selected point + // And the average of next frame. + for (var idx = frameStart; idx < frameEnd; idx++) { + var rawIndex = this.getRawIndex(idx); + var y = dimStore[rawIndex]; + if (isNaN(y)) { + countNaN++; + if (firstNaNIndex < 0) { + firstNaNIndex = rawIndex; + } + continue; + } + // Calculate triangle area over three buckets + area = Math.abs((pointAX - avgX) * (y - pointAY) - (pointAX - idx) * (avgY - pointAY)); + if (area > maxArea) { + maxArea = area; + nextRawIndex = rawIndex; // Next a is this b + } + } + + if (countNaN > 0 && countNaN < frameEnd - frameStart) { + // Append first NaN point in every bucket. + // It is necessary to ensure the correct order of indices. + newIndices[sampledIndex++] = Math.min(firstNaNIndex, nextRawIndex); + nextRawIndex = Math.max(firstNaNIndex, nextRawIndex); + } + newIndices[sampledIndex++] = nextRawIndex; + currentRawIndex = nextRawIndex; // This a is the next a (chosen b) + } + // First frame use the last data. + newIndices[sampledIndex++] = this.getRawIndex(len - 1); + target._count = sampledIndex; + target._indices = newIndices; + target.getRawIndex = this._getRawIdx; + return target; + }; + /** + * Large data down sampling on given dimension + * @param sampleIndex Sample index for name and id + */ + DataStore.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) { + var target = this.clone([dimension], true); + var targetStorage = target._chunks; + var frameValues = []; + var frameSize = Math.floor(1 / rate); + var dimStore = targetStorage[dimension]; + var len = this.count(); + var rawExtentOnDim = target._rawExtent[dimension] = getInitialExtent(); + var newIndices = new (getIndicesCtor(this._rawCount))(Math.ceil(len / frameSize)); + var offset = 0; + for (var i = 0; i < len; i += frameSize) { + // Last frame + if (frameSize > len - i) { + frameSize = len - i; + frameValues.length = frameSize; + } + for (var k = 0; k < frameSize; k++) { + var dataIdx = this.getRawIndex(i + k); + frameValues[k] = dimStore[dataIdx]; + } + var value = sampleValue(frameValues); + var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1)); + // Only write value on the filtered data + dimStore[sampleFrameIdx] = value; + if (value < rawExtentOnDim[0]) { + rawExtentOnDim[0] = value; + } + if (value > rawExtentOnDim[1]) { + rawExtentOnDim[1] = value; + } + newIndices[offset++] = sampleFrameIdx; + } + target._count = offset; + target._indices = newIndices; + target._updateGetRawIdx(); + return target; + }; + /** + * Data iteration + * @param ctx default this + * @example + * list.each('x', function (x, idx) {}); + * list.each(['x', 'y'], function (x, y, idx) {}); + * list.each(function (idx) {}) + */ + DataStore.prototype.each = function (dims, cb) { + if (!this._count) { + return; + } + var dimSize = dims.length; + var chunks = this._chunks; + for (var i = 0, len = this.count(); i < len; i++) { + var rawIdx = this.getRawIndex(i); + // Simple optimization + switch (dimSize) { + case 0: + cb(i); + break; + case 1: + cb(chunks[dims[0]][rawIdx], i); + break; + case 2: + cb(chunks[dims[0]][rawIdx], chunks[dims[1]][rawIdx], i); + break; + default: + var k = 0; + var value = []; + for (; k < dimSize; k++) { + value[k] = chunks[dims[k]][rawIdx]; + } + // Index + value[k] = i; + cb.apply(null, value); + } + } + }; + /** + * Get extent of data in one dimension + */ + DataStore.prototype.getDataExtent = function (dim) { + // Make sure use concrete dim as cache name. + var dimData = this._chunks[dim]; + var initialExtent = getInitialExtent(); + if (!dimData) { + return initialExtent; + } + // Make more strict checkings to ensure hitting cache. + var currEnd = this.count(); + // Consider the most cases when using data zoom, `getDataExtent` + // happened before filtering. We cache raw extent, which is not + // necessary to be cleared and recalculated when restore data. + var useRaw = !this._indices; + var dimExtent; + if (useRaw) { + return this._rawExtent[dim].slice(); + } + dimExtent = this._extent[dim]; + if (dimExtent) { + return dimExtent.slice(); + } + dimExtent = initialExtent; + var min = dimExtent[0]; + var max = dimExtent[1]; + for (var i = 0; i < currEnd; i++) { + var rawIdx = this.getRawIndex(i); + var value = dimData[rawIdx]; + value < min && (min = value); + value > max && (max = value); + } + dimExtent = [min, max]; + this._extent[dim] = dimExtent; + return dimExtent; + }; + /** + * Get raw data item + */ + DataStore.prototype.getRawDataItem = function (idx) { + var rawIdx = this.getRawIndex(idx); + if (!this._provider.persistent) { + var val = []; + var chunks = this._chunks; + for (var i = 0; i < chunks.length; i++) { + val.push(chunks[i][rawIdx]); + } + return val; + } else { + return this._provider.getItem(rawIdx); + } + }; + /** + * Clone shallow. + * + * @param clonedDims Determine which dims to clone. Will share the data if not specified. + */ + DataStore.prototype.clone = function (clonedDims, ignoreIndices) { + var target = new DataStore(); + var chunks = this._chunks; + var clonedDimsMap = clonedDims && reduce(clonedDims, function (obj, dimIdx) { + obj[dimIdx] = true; + return obj; + }, {}); + if (clonedDimsMap) { + for (var i = 0; i < chunks.length; i++) { + // Not clone if dim is not picked. + target._chunks[i] = !clonedDimsMap[i] ? chunks[i] : cloneChunk(chunks[i]); + } + } else { + target._chunks = chunks; + } + this._copyCommonProps(target); + if (!ignoreIndices) { + target._indices = this._cloneIndices(); + } + target._updateGetRawIdx(); + return target; + }; + DataStore.prototype._copyCommonProps = function (target) { + target._count = this._count; + target._rawCount = this._rawCount; + target._provider = this._provider; + target._dimensions = this._dimensions; + target._extent = clone(this._extent); + target._rawExtent = clone(this._rawExtent); + }; + DataStore.prototype._cloneIndices = function () { + if (this._indices) { + var Ctor = this._indices.constructor; + var indices = void 0; + if (Ctor === Array) { + var thisCount = this._indices.length; + indices = new Ctor(thisCount); + for (var i = 0; i < thisCount; i++) { + indices[i] = this._indices[i]; + } + } else { + indices = new Ctor(this._indices); + } + return indices; + } + return null; + }; + DataStore.prototype._getRawIdxIdentity = function (idx) { + return idx; + }; + DataStore.prototype._getRawIdx = function (idx) { + if (idx < this._count && idx >= 0) { + return this._indices[idx]; + } + return -1; + }; + DataStore.prototype._updateGetRawIdx = function () { + this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity; + }; + DataStore.internalField = function () { + function getDimValueSimply(dataItem, property, dataIndex, dimIndex) { + return parseDataValue(dataItem[dimIndex], this._dimensions[dimIndex]); + } + defaultDimValueGetters = { + arrayRows: getDimValueSimply, + objectRows: function (dataItem, property, dataIndex, dimIndex) { + return parseDataValue(dataItem[property], this._dimensions[dimIndex]); + }, + keyedColumns: getDimValueSimply, + original: function (dataItem, property, dataIndex, dimIndex) { + // Performance sensitive, do not use modelUtil.getDataItemValue. + // If dataItem is an plain object with no value field, the let `value` + // will be assigned with the object, but it will be tread correctly + // in the `convertValue`. + var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); + return parseDataValue(value instanceof Array ? value[dimIndex] + // If value is a single number or something else not array. + : value, this._dimensions[dimIndex]); + }, + typedArray: function (dataItem, property, dataIndex, dimIndex) { + return dataItem[dimIndex]; + } + }; + }(); + return DataStore; + }(); + + /** + * [REQUIREMENT_MEMO]: + * (0) `metaRawOption` means `dimensions`/`sourceHeader`/`seriesLayoutBy` in raw option. + * (1) Keep support the feature: `metaRawOption` can be specified both on `series` and + * `root-dataset`. Them on `series` has higher priority. + * (2) Do not support to set `metaRawOption` on a `non-root-dataset`, because it might + * confuse users: whether those props indicate how to visit the upstream source or visit + * the transform result source, and some transforms has nothing to do with these props, + * and some transforms might have multiple upstream. + * (3) Transforms should specify `metaRawOption` in each output, just like they can be + * declared in `root-dataset`. + * (4) At present only support visit source in `SERIES_LAYOUT_BY_COLUMN` in transforms. + * That is for reducing complexity in transforms. + * PENDING: Whether to provide transposition transform? + * + * [IMPLEMENTAION_MEMO]: + * "sourceVisitConfig" are calculated from `metaRawOption` and `data`. + * They will not be calculated until `source` is about to be visited (to prevent from + * duplicate calcuation). `source` is visited only in series and input to transforms. + * + * [DIMENSION_INHERIT_RULE]: + * By default the dimensions are inherited from ancestors, unless a transform return + * a new dimensions definition. + * Consider the case: + * ```js + * dataset: [{ + * source: [ ['Product', 'Sales', 'Prise'], ['Cookies', 321, 44.21], ...] + * }, { + * transform: { type: 'filter', ... } + * }] + * dataset: [{ + * dimension: ['Product', 'Sales', 'Prise'], + * source: [ ['Cookies', 321, 44.21], ...] + * }, { + * transform: { type: 'filter', ... } + * }] + * ``` + * The two types of option should have the same behavior after transform. + * + * + * [SCENARIO]: + * (1) Provide source data directly: + * ```js + * series: { + * encode: {...}, + * dimensions: [...] + * seriesLayoutBy: 'row', + * data: [[...]] + * } + * ``` + * (2) Series refer to dataset. + * ```js + * series: [{ + * encode: {...} + * // Ignore datasetIndex means `datasetIndex: 0` + * // and the dimensions defination in dataset is used + * }, { + * encode: {...}, + * seriesLayoutBy: 'column', + * datasetIndex: 1 + * }] + * ``` + * (3) dataset transform + * ```js + * dataset: [{ + * source: [...] + * }, { + * source: [...] + * }, { + * // By default from 0. + * transform: { type: 'filter', config: {...} } + * }, { + * // Piped. + * transform: [ + * { type: 'filter', config: {...} }, + * { type: 'sort', config: {...} } + * ] + * }, { + * id: 'regressionData', + * fromDatasetIndex: 1, + * // Third-party transform + * transform: { type: 'ecStat:regression', config: {...} } + * }, { + * // retrieve the extra result. + * id: 'regressionFormula', + * fromDatasetId: 'regressionData', + * fromTransformResult: 1 + * }] + * ``` + */ + var SourceManager = /** @class */function () { + function SourceManager(sourceHost) { + // Cached source. Do not repeat calculating if not dirty. + this._sourceList = []; + this._storeList = []; + // version sign of each upstream source manager. + this._upstreamSignList = []; + this._versionSignBase = 0; + this._dirty = true; + this._sourceHost = sourceHost; + } + /** + * Mark dirty. + */ + SourceManager.prototype.dirty = function () { + this._setLocalSource([], []); + this._storeList = []; + this._dirty = true; + }; + SourceManager.prototype._setLocalSource = function (sourceList, upstreamSignList) { + this._sourceList = sourceList; + this._upstreamSignList = upstreamSignList; + this._versionSignBase++; + if (this._versionSignBase > 9e10) { + this._versionSignBase = 0; + } + }; + /** + * For detecting whether the upstream source is dirty, so that + * the local cached source (in `_sourceList`) should be discarded. + */ + SourceManager.prototype._getVersionSign = function () { + return this._sourceHost.uid + '_' + this._versionSignBase; + }; + /** + * Always return a source instance. Otherwise throw error. + */ + SourceManager.prototype.prepareSource = function () { + // For the case that call `setOption` multiple time but no data changed, + // cache the result source to prevent from repeating transform. + if (this._isDirty()) { + this._createSource(); + this._dirty = false; + } + }; + SourceManager.prototype._createSource = function () { + this._setLocalSource([], []); + var sourceHost = this._sourceHost; + var upSourceMgrList = this._getUpstreamSourceManagers(); + var hasUpstream = !!upSourceMgrList.length; + var resultSourceList; + var upstreamSignList; + if (isSeries(sourceHost)) { + var seriesModel = sourceHost; + var data = void 0; + var sourceFormat = void 0; + var upSource = void 0; + // Has upstream dataset + if (hasUpstream) { + var upSourceMgr = upSourceMgrList[0]; + upSourceMgr.prepareSource(); + upSource = upSourceMgr.getSource(); + data = upSource.data; + sourceFormat = upSource.sourceFormat; + upstreamSignList = [upSourceMgr._getVersionSign()]; + } + // Series data is from own. + else { + data = seriesModel.get('data', true); + sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL; + upstreamSignList = []; + } + // See [REQUIREMENT_MEMO], merge settings on series and parent dataset if it is root. + var newMetaRawOption = this._getSourceMetaRawOption() || {}; + var upMetaRawOption = upSource && upSource.metaRawOption || {}; + var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, upMetaRawOption.seriesLayoutBy) || null; + var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upMetaRawOption.sourceHeader); + // Note here we should not use `upSource.dimensionsDefine`. Consider the case: + // `upSource.dimensionsDefine` is detected by `seriesLayoutBy: 'column'`, + // but series need `seriesLayoutBy: 'row'`. + var dimensions = retrieve2(newMetaRawOption.dimensions, upMetaRawOption.dimensions); + // We share source with dataset as much as possible + // to avoid extra memory cost of high dimensional data. + var needsCreateSource = seriesLayoutBy !== upMetaRawOption.seriesLayoutBy || !!sourceHeader !== !!upMetaRawOption.sourceHeader || dimensions; + resultSourceList = needsCreateSource ? [createSource(data, { + seriesLayoutBy: seriesLayoutBy, + sourceHeader: sourceHeader, + dimensions: dimensions + }, sourceFormat)] : []; + } else { + var datasetModel = sourceHost; + // Has upstream dataset. + if (hasUpstream) { + var result = this._applyTransform(upSourceMgrList); + resultSourceList = result.sourceList; + upstreamSignList = result.upstreamSignList; + } + // Is root dataset. + else { + var sourceData = datasetModel.get('source', true); + resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null)]; + upstreamSignList = []; + } + } + if ("development" !== 'production') { + assert(resultSourceList && upstreamSignList); + } + this._setLocalSource(resultSourceList, upstreamSignList); + }; + SourceManager.prototype._applyTransform = function (upMgrList) { + var datasetModel = this._sourceHost; + var transformOption = datasetModel.get('transform', true); + var fromTransformResult = datasetModel.get('fromTransformResult', true); + if ("development" !== 'production') { + assert(fromTransformResult != null || transformOption != null); + } + if (fromTransformResult != null) { + var errMsg = ''; + if (upMgrList.length !== 1) { + if ("development" !== 'production') { + errMsg = 'When using `fromTransformResult`, there should be only one upstream dataset'; + } + doThrow(errMsg); + } + } + var sourceList; + var upSourceList = []; + var upstreamSignList = []; + each(upMgrList, function (upMgr) { + upMgr.prepareSource(); + var upSource = upMgr.getSource(fromTransformResult || 0); + var errMsg = ''; + if (fromTransformResult != null && !upSource) { + if ("development" !== 'production') { + errMsg = 'Can not retrieve result by `fromTransformResult`: ' + fromTransformResult; + } + doThrow(errMsg); + } + upSourceList.push(upSource); + upstreamSignList.push(upMgr._getVersionSign()); + }); + if (transformOption) { + sourceList = applyDataTransform(transformOption, upSourceList, { + datasetIndex: datasetModel.componentIndex + }); + } else if (fromTransformResult != null) { + sourceList = [cloneSourceShallow(upSourceList[0])]; + } + return { + sourceList: sourceList, + upstreamSignList: upstreamSignList + }; + }; + SourceManager.prototype._isDirty = function () { + if (this._dirty) { + return true; + } + // All sourceList is from the some upstream. + var upSourceMgrList = this._getUpstreamSourceManagers(); + for (var i = 0; i < upSourceMgrList.length; i++) { + var upSrcMgr = upSourceMgrList[i]; + if ( + // Consider the case that there is ancestor diry, call it recursively. + // The performance is probably not an issue because usually the chain is not long. + upSrcMgr._isDirty() || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()) { + return true; + } + } + }; + /** + * @param sourceIndex By default 0, means "main source". + * In most cases there is only one source. + */ + SourceManager.prototype.getSource = function (sourceIndex) { + sourceIndex = sourceIndex || 0; + var source = this._sourceList[sourceIndex]; + if (!source) { + // Series may share source instance with dataset. + var upSourceMgrList = this._getUpstreamSourceManagers(); + return upSourceMgrList[0] && upSourceMgrList[0].getSource(sourceIndex); + } + return source; + }; + /** + * + * Get a data store which can be shared across series. + * Only available for series. + * + * @param seriesDimRequest Dimensions that are generated in series. + * Should have been sorted by `storeDimIndex` asc. + */ + SourceManager.prototype.getSharedDataStore = function (seriesDimRequest) { + if ("development" !== 'production') { + assert(isSeries(this._sourceHost), 'Can only call getDataStore on series source manager.'); + } + var schema = seriesDimRequest.makeStoreSchema(); + return this._innerGetDataStore(schema.dimensions, seriesDimRequest.source, schema.hash); + }; + SourceManager.prototype._innerGetDataStore = function (storeDims, seriesSource, sourceReadKey) { + // TODO Can use other sourceIndex? + var sourceIndex = 0; + var storeList = this._storeList; + var cachedStoreMap = storeList[sourceIndex]; + if (!cachedStoreMap) { + cachedStoreMap = storeList[sourceIndex] = {}; + } + var cachedStore = cachedStoreMap[sourceReadKey]; + if (!cachedStore) { + var upSourceMgr = this._getUpstreamSourceManagers()[0]; + if (isSeries(this._sourceHost) && upSourceMgr) { + cachedStore = upSourceMgr._innerGetDataStore(storeDims, seriesSource, sourceReadKey); + } else { + cachedStore = new DataStore(); + // Always create store from source of series. + cachedStore.initData(new DefaultDataProvider(seriesSource, storeDims.length), storeDims); + } + cachedStoreMap[sourceReadKey] = cachedStore; + } + return cachedStore; + }; + /** + * PENDING: Is it fast enough? + * If no upstream, return empty array. + */ + SourceManager.prototype._getUpstreamSourceManagers = function () { + // Always get the relationship from the raw option. + // Do not cache the link of the dependency graph, so that + // there is no need to update them when change happens. + var sourceHost = this._sourceHost; + if (isSeries(sourceHost)) { + var datasetModel = querySeriesUpstreamDatasetModel(sourceHost); + return !datasetModel ? [] : [datasetModel.getSourceManager()]; + } else { + return map(queryDatasetUpstreamDatasetModels(sourceHost), function (datasetModel) { + return datasetModel.getSourceManager(); + }); + } + }; + SourceManager.prototype._getSourceMetaRawOption = function () { + var sourceHost = this._sourceHost; + var seriesLayoutBy; + var sourceHeader; + var dimensions; + if (isSeries(sourceHost)) { + seriesLayoutBy = sourceHost.get('seriesLayoutBy', true); + sourceHeader = sourceHost.get('sourceHeader', true); + dimensions = sourceHost.get('dimensions', true); + } + // See [REQUIREMENT_MEMO], `non-root-dataset` do not support them. + else if (!this._getUpstreamSourceManagers().length) { + var model = sourceHost; + seriesLayoutBy = model.get('seriesLayoutBy', true); + sourceHeader = model.get('sourceHeader', true); + dimensions = model.get('dimensions', true); + } + return { + seriesLayoutBy: seriesLayoutBy, + sourceHeader: sourceHeader, + dimensions: dimensions + }; + }; + return SourceManager; + }(); + // Call this method after `super.init` and `super.mergeOption` to + // disable the transform merge, but do not disable transform clone from rawOption. + function disableTransformOptionMerge(datasetModel) { + var transformOption = datasetModel.option.transform; + transformOption && setAsPrimitive(datasetModel.option.transform); + } + function isSeries(sourceHost) { + // Avoid circular dependency with Series.ts + return sourceHost.mainType === 'series'; + } + function doThrow(errMsg) { + throw new Error(errMsg); + } + + var TOOLTIP_LINE_HEIGHT_CSS = 'line-height:1'; + // TODO: more textStyle option + function getTooltipTextStyle(textStyle, renderMode) { + var nameFontColor = textStyle.color || '#6e7079'; + var nameFontSize = textStyle.fontSize || 12; + var nameFontWeight = textStyle.fontWeight || '400'; + var valueFontColor = textStyle.color || '#464646'; + var valueFontSize = textStyle.fontSize || 14; + var valueFontWeight = textStyle.fontWeight || '900'; + if (renderMode === 'html') { + // `textStyle` is probably from user input, should be encoded to reduce security risk. + return { + // eslint-disable-next-line max-len + nameStyle: "font-size:" + encodeHTML(nameFontSize + '') + "px;color:" + encodeHTML(nameFontColor) + ";font-weight:" + encodeHTML(nameFontWeight + ''), + // eslint-disable-next-line max-len + valueStyle: "font-size:" + encodeHTML(valueFontSize + '') + "px;color:" + encodeHTML(valueFontColor) + ";font-weight:" + encodeHTML(valueFontWeight + '') + }; + } else { + return { + nameStyle: { + fontSize: nameFontSize, + fill: nameFontColor, + fontWeight: nameFontWeight + }, + valueStyle: { + fontSize: valueFontSize, + fill: valueFontColor, + fontWeight: valueFontWeight + } + }; + } + } + // See `TooltipMarkupLayoutIntent['innerGapLevel']`. + // (value from UI design) + var HTML_GAPS = [0, 10, 20, 30]; + var RICH_TEXT_GAPS = ['', '\n', '\n\n', '\n\n\n']; + // eslint-disable-next-line max-len + function createTooltipMarkup(type, option) { + option.type = type; + return option; + } + function isSectionFragment(frag) { + return frag.type === 'section'; + } + function getBuilder(frag) { + return isSectionFragment(frag) ? buildSection : buildNameValue; + } + function getBlockGapLevel(frag) { + if (isSectionFragment(frag)) { + var gapLevel_1 = 0; + var subBlockLen = frag.blocks.length; + var hasInnerGap_1 = subBlockLen > 1 || subBlockLen > 0 && !frag.noHeader; + each(frag.blocks, function (subBlock) { + var subGapLevel = getBlockGapLevel(subBlock); + // If the some of the sub-blocks have some gaps (like 10px) inside, this block + // should use a larger gap (like 20px) to distinguish those sub-blocks. + if (subGapLevel >= gapLevel_1) { + gapLevel_1 = subGapLevel + +(hasInnerGap_1 && ( + // 0 always can not be readable gap level. + !subGapLevel + // If no header, always keep the sub gap level. Otherwise + // look weird in case `multipleSeries`. + || isSectionFragment(subBlock) && !subBlock.noHeader)); + } + }); + return gapLevel_1; + } + return 0; + } + function buildSection(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) { + var noHeader = fragment.noHeader; + var gaps = getGap(getBlockGapLevel(fragment)); + var subMarkupTextList = []; + var subBlocks = fragment.blocks || []; + assert(!subBlocks || isArray(subBlocks)); + subBlocks = subBlocks || []; + var orderMode = ctx.orderMode; + if (fragment.sortBlocks && orderMode) { + subBlocks = subBlocks.slice(); + var orderMap = { + valueAsc: 'asc', + valueDesc: 'desc' + }; + if (hasOwn(orderMap, orderMode)) { + var comparator_1 = new SortOrderComparator(orderMap[orderMode], null); + subBlocks.sort(function (a, b) { + return comparator_1.evaluate(a.sortParam, b.sortParam); + }); + } + // FIXME 'seriesDesc' necessary? + else if (orderMode === 'seriesDesc') { + subBlocks.reverse(); + } + } + each(subBlocks, function (subBlock, idx) { + var valueFormatter = fragment.valueFormatter; + var subMarkupText = getBuilder(subBlock)( + // Inherit valueFormatter + valueFormatter ? extend(extend({}, ctx), { + valueFormatter: valueFormatter + }) : ctx, subBlock, idx > 0 ? gaps.html : 0, toolTipTextStyle); + subMarkupText != null && subMarkupTextList.push(subMarkupText); + }); + var subMarkupText = ctx.renderMode === 'richText' ? subMarkupTextList.join(gaps.richText) : wrapBlockHTML(subMarkupTextList.join(''), noHeader ? topMarginForOuterGap : gaps.html); + if (noHeader) { + return subMarkupText; + } + var displayableHeader = makeValueReadable(fragment.header, 'ordinal', ctx.useUTC); + var nameStyle = getTooltipTextStyle(toolTipTextStyle, ctx.renderMode).nameStyle; + if (ctx.renderMode === 'richText') { + return wrapInlineNameRichText(ctx, displayableHeader, nameStyle) + gaps.richText + subMarkupText; + } else { + return wrapBlockHTML("
      " + encodeHTML(displayableHeader) + '
      ' + subMarkupText, topMarginForOuterGap); + } + } + function buildNameValue(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) { + var renderMode = ctx.renderMode; + var noName = fragment.noName; + var noValue = fragment.noValue; + var noMarker = !fragment.markerType; + var name = fragment.name; + var useUTC = ctx.useUTC; + var valueFormatter = fragment.valueFormatter || ctx.valueFormatter || function (value) { + value = isArray(value) ? value : [value]; + return map(value, function (val, idx) { + return makeValueReadable(val, isArray(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC); + }); + }; + if (noName && noValue) { + return; + } + var markerStr = noMarker ? '' : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || '#333', renderMode); + var readableName = noName ? '' : makeValueReadable(name, 'ordinal', useUTC); + var valueTypeOption = fragment.valueType; + var readableValueList = noValue ? [] : valueFormatter(fragment.value, fragment.dataIndex); + var valueAlignRight = !noMarker || !noName; + // It little weird if only value next to marker but far from marker. + var valueCloseToMarker = !noMarker && noName; + var _a = getTooltipTextStyle(toolTipTextStyle, renderMode), + nameStyle = _a.nameStyle, + valueStyle = _a.valueStyle; + return renderMode === 'richText' ? (noMarker ? '' : markerStr) + (noName ? '' : wrapInlineNameRichText(ctx, readableName, nameStyle)) + // Value has commas inside, so use ' ' as delimiter for multiple values. + + (noValue ? '' : wrapInlineValueRichText(ctx, readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)) : wrapBlockHTML((noMarker ? '' : markerStr) + (noName ? '' : wrapInlineNameHTML(readableName, !noMarker, nameStyle)) + (noValue ? '' : wrapInlineValueHTML(readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)), topMarginForOuterGap); + } + /** + * @return markupText. null/undefined means no content. + */ + function buildTooltipMarkup(fragment, markupStyleCreator, renderMode, orderMode, useUTC, toolTipTextStyle) { + if (!fragment) { + return; + } + var builder = getBuilder(fragment); + var ctx = { + useUTC: useUTC, + renderMode: renderMode, + orderMode: orderMode, + markupStyleCreator: markupStyleCreator, + valueFormatter: fragment.valueFormatter + }; + return builder(ctx, fragment, 0, toolTipTextStyle); + } + function getGap(gapLevel) { + return { + html: HTML_GAPS[gapLevel], + richText: RICH_TEXT_GAPS[gapLevel] + }; + } + function wrapBlockHTML(encodedContent, topGap) { + var clearfix = '
      '; + var marginCSS = "margin: " + topGap + "px 0 0"; + return "
      " + encodedContent + clearfix + '
      '; + } + function wrapInlineNameHTML(name, leftHasMarker, style) { + var marginCss = leftHasMarker ? 'margin-left:2px' : ''; + return "" + encodeHTML(name) + ''; + } + function wrapInlineValueHTML(valueList, alignRight, valueCloseToMarker, style) { + // Do not too close to marker, considering there are multiple values separated by spaces. + var paddingStr = valueCloseToMarker ? '10px' : '20px'; + var alignCSS = alignRight ? "float:right;margin-left:" + paddingStr : ''; + valueList = isArray(valueList) ? valueList : [valueList]; + return "" + // Value has commas inside, so use ' ' as delimiter for multiple values. + + map(valueList, function (value) { + return encodeHTML(value); + }).join('  ') + ''; + } + function wrapInlineNameRichText(ctx, name, style) { + return ctx.markupStyleCreator.wrapRichTextStyle(name, style); + } + function wrapInlineValueRichText(ctx, values, alignRight, valueCloseToMarker, style) { + var styles = [style]; + var paddingLeft = valueCloseToMarker ? 10 : 20; + alignRight && styles.push({ + padding: [0, 0, 0, paddingLeft], + align: 'right' + }); + // Value has commas inside, so use ' ' as delimiter for multiple values. + return ctx.markupStyleCreator.wrapRichTextStyle(isArray(values) ? values.join(' ') : values, styles); + } + function retrieveVisualColorForTooltipMarker(series, dataIndex) { + var style = series.getData().getItemVisual(dataIndex, 'style'); + var color = style[series.visualDrawType]; + return convertToColorString(color); + } + function getPaddingFromTooltipModel(model, renderMode) { + var padding = model.get('padding'); + return padding != null ? padding + // We give slightly different to look pretty. + : renderMode === 'richText' ? [8, 10] : 10; + } + /** + * The major feature is generate styles for `renderMode: 'richText'`. + * But it also serves `renderMode: 'html'` to provide + * "renderMode-independent" API. + */ + var TooltipMarkupStyleCreator = /** @class */function () { + function TooltipMarkupStyleCreator() { + this.richTextStyles = {}; + // Notice that "generate a style name" usually happens repeatedly when mouse is moving and + // a tooltip is displayed. So we put the `_nextStyleNameId` as a member of each creator + // rather than static shared by all creators (which will cause it increase to fast). + this._nextStyleNameId = getRandomIdBase(); + } + TooltipMarkupStyleCreator.prototype._generateStyleName = function () { + return '__EC_aUTo_' + this._nextStyleNameId++; + }; + TooltipMarkupStyleCreator.prototype.makeTooltipMarker = function (markerType, colorStr, renderMode) { + var markerId = renderMode === 'richText' ? this._generateStyleName() : null; + var marker = getTooltipMarker({ + color: colorStr, + type: markerType, + renderMode: renderMode, + markerId: markerId + }); + if (isString(marker)) { + return marker; + } else { + if ("development" !== 'production') { + assert(markerId); + } + this.richTextStyles[markerId] = marker.style; + return marker.content; + } + }; + /** + * @usage + * ```ts + * const styledText = markupStyleCreator.wrapRichTextStyle([ + * // The styles will be auto merged. + * { + * fontSize: 12, + * color: 'blue' + * }, + * { + * padding: 20 + * } + * ]); + * ``` + */ + TooltipMarkupStyleCreator.prototype.wrapRichTextStyle = function (text, styles) { + var finalStl = {}; + if (isArray(styles)) { + each(styles, function (stl) { + return extend(finalStl, stl); + }); + } else { + extend(finalStl, styles); + } + var styleName = this._generateStyleName(); + this.richTextStyles[styleName] = finalStl; + return "{" + styleName + "|" + text + "}"; + }; + return TooltipMarkupStyleCreator; + }(); + + function defaultSeriesFormatTooltip(opt) { + var series = opt.series; + var dataIndex = opt.dataIndex; + var multipleSeries = opt.multipleSeries; + var data = series.getData(); + var tooltipDims = data.mapDimensionsAll('defaultedTooltip'); + var tooltipDimLen = tooltipDims.length; + var value = series.getRawValue(dataIndex); + var isValueArr = isArray(value); + var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex); + // Complicated rule for pretty tooltip. + var inlineValue; + var inlineValueType; + var subBlocks; + var sortParam; + if (tooltipDimLen > 1 || isValueArr && !tooltipDimLen) { + var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor); + inlineValue = formatArrResult.inlineValues; + inlineValueType = formatArrResult.inlineValueTypes; + subBlocks = formatArrResult.blocks; + // Only support tooltip sort by the first inline value. It's enough in most cases. + sortParam = formatArrResult.inlineValues[0]; + } else if (tooltipDimLen) { + var dimInfo = data.getDimensionInfo(tooltipDims[0]); + sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]); + inlineValueType = dimInfo.type; + } else { + sortParam = inlineValue = isValueArr ? value[0] : value; + } + // Do not show generated series name. It might not be readable. + var seriesNameSpecified = isNameSpecified(series); + var seriesName = seriesNameSpecified && series.name || ''; + var itemName = data.getName(dataIndex); + var inlineName = multipleSeries ? seriesName : itemName; + return createTooltipMarkup('section', { + header: seriesName, + // When series name is not specified, do not show a header line with only '-'. + // This case always happens in tooltip.trigger: 'item'. + noHeader: multipleSeries || !seriesNameSpecified, + sortParam: sortParam, + blocks: [createTooltipMarkup('nameValue', { + markerType: 'item', + markerColor: markerColor, + // Do not mix display seriesName and itemName in one tooltip, + // which might confuses users. + name: inlineName, + // name dimension might be auto assigned, where the name might + // be not readable. So we check trim here. + noName: !trim(inlineName), + value: inlineValue, + valueType: inlineValueType, + dataIndex: dataIndex + })].concat(subBlocks || []) + }); + } + function formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) { + // check: category-no-encode-has-axis-data in dataset.html + var data = series.getData(); + var isValueMultipleLine = reduce(value, function (isValueMultipleLine, val, idx) { + var dimItem = data.getDimensionInfo(idx); + return isValueMultipleLine = isValueMultipleLine || dimItem && dimItem.tooltip !== false && dimItem.displayName != null; + }, false); + var inlineValues = []; + var inlineValueTypes = []; + var blocks = []; + tooltipDims.length ? each(tooltipDims, function (dim) { + setEachItem(retrieveRawValue(data, dataIndex, dim), dim); + }) + // By default, all dims is used on tooltip. + : each(value, setEachItem); + function setEachItem(val, dim) { + var dimInfo = data.getDimensionInfo(dim); + // If `dimInfo.tooltip` is not set, show tooltip. + if (!dimInfo || dimInfo.otherDims.tooltip === false) { + return; + } + if (isValueMultipleLine) { + blocks.push(createTooltipMarkup('nameValue', { + markerType: 'subItem', + markerColor: colorStr, + name: dimInfo.displayName, + value: val, + valueType: dimInfo.type + })); + } else { + inlineValues.push(val); + inlineValueTypes.push(dimInfo.type); + } + } + return { + inlineValues: inlineValues, + inlineValueTypes: inlineValueTypes, + blocks: blocks + }; + } + + var inner$1 = makeInner(); + function getSelectionKey(data, dataIndex) { + return data.getName(dataIndex) || data.getId(dataIndex); + } + var SERIES_UNIVERSAL_TRANSITION_PROP = '__universalTransitionEnabled'; + var SeriesModel = /** @class */function (_super) { + __extends(SeriesModel, _super); + function SeriesModel() { + // [Caution]: Because this class or desecendants can be used as `XXX.extend(subProto)`, + // the class members must not be initialized in constructor or declaration place. + // Otherwise there is bad case: + // class A {xxx = 1;} + // enableClassExtend(A); + // class B extends A {} + // var C = B.extend({xxx: 5}); + // var c = new C(); + // console.log(c.xxx); // expect 5 but always 1. + var _this = _super !== null && _super.apply(this, arguments) || this; + // --------------------------------------- + // Props about data selection + // --------------------------------------- + _this._selectedDataIndicesMap = {}; + return _this; + } + SeriesModel.prototype.init = function (option, parentModel, ecModel) { + this.seriesIndex = this.componentIndex; + this.dataTask = createTask({ + count: dataTaskCount, + reset: dataTaskReset + }); + this.dataTask.context = { + model: this + }; + this.mergeDefaultAndTheme(option, ecModel); + var sourceManager = inner$1(this).sourceManager = new SourceManager(this); + sourceManager.prepareSource(); + var data = this.getInitialData(option, ecModel); + wrapData(data, this); + this.dataTask.context.data = data; + if ("development" !== 'production') { + assert(data, 'getInitialData returned invalid data.'); + } + inner$1(this).dataBeforeProcessed = data; + // If we reverse the order (make data firstly, and then make + // dataBeforeProcessed by cloneShallow), cloneShallow will + // cause data.graph.data !== data when using + // module:echarts/data/Graph or module:echarts/data/Tree. + // See module:echarts/data/helper/linkSeriesData + // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model + // init or merge stage, because the data can be restored. So we do not `restoreData` + // and `setData` here, which forbids calling `seriesModel.getData()` in this stage. + // Call `seriesModel.getRawData()` instead. + // this.restoreData(); + autoSeriesName(this); + this._initSelectedMapFromData(data); + }; + /** + * Util for merge default and theme to option + */ + SeriesModel.prototype.mergeDefaultAndTheme = function (option, ecModel) { + var layoutMode = fetchLayoutMode(this); + var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; + // Backward compat: using subType on theme. + // But if name duplicate between series subType + // (for example: parallel) add component mainType, + // add suffix 'Series'. + var themeSubType = this.subType; + if (ComponentModel.hasClass(themeSubType)) { + themeSubType += 'Series'; + } + merge(option, ecModel.getTheme().get(this.subType)); + merge(option, this.getDefaultOption()); + // Default label emphasis `show` + defaultEmphasis(option, 'label', ['show']); + this.fillDataTextStyle(option.data); + if (layoutMode) { + mergeLayoutParam(option, inputPositionParams, layoutMode); + } + }; + SeriesModel.prototype.mergeOption = function (newSeriesOption, ecModel) { + // this.settingTask.dirty(); + newSeriesOption = merge(this.option, newSeriesOption, true); + this.fillDataTextStyle(newSeriesOption.data); + var layoutMode = fetchLayoutMode(this); + if (layoutMode) { + mergeLayoutParam(this.option, newSeriesOption, layoutMode); + } + var sourceManager = inner$1(this).sourceManager; + sourceManager.dirty(); + sourceManager.prepareSource(); + var data = this.getInitialData(newSeriesOption, ecModel); + wrapData(data, this); + this.dataTask.dirty(); + this.dataTask.context.data = data; + inner$1(this).dataBeforeProcessed = data; + autoSeriesName(this); + this._initSelectedMapFromData(data); + }; + SeriesModel.prototype.fillDataTextStyle = function (data) { + // Default data label emphasis `show` + // FIXME Tree structure data ? + // FIXME Performance ? + if (data && !isTypedArray(data)) { + var props = ['show']; + for (var i = 0; i < data.length; i++) { + if (data[i] && data[i].label) { + defaultEmphasis(data[i], 'label', props); + } + } + } + }; + /** + * Init a data structure from data related option in series + * Must be overridden. + */ + SeriesModel.prototype.getInitialData = function (option, ecModel) { + return; + }; + /** + * Append data to list + */ + SeriesModel.prototype.appendData = function (params) { + // FIXME ??? + // (1) If data from dataset, forbidden append. + // (2) support append data of dataset. + var data = this.getRawData(); + data.appendData(params.data); + }; + /** + * Consider some method like `filter`, `map` need make new data, + * We should make sure that `seriesModel.getData()` get correct + * data in the stream procedure. So we fetch data from upstream + * each time `task.perform` called. + */ + SeriesModel.prototype.getData = function (dataType) { + var task = getCurrentTask(this); + if (task) { + var data = task.context.data; + return dataType == null ? data : data.getLinkedData(dataType); + } else { + // When series is not alive (that may happen when click toolbox + // restore or setOption with not merge mode), series data may + // be still need to judge animation or something when graphic + // elements want to know whether fade out. + return inner$1(this).data; + } + }; + SeriesModel.prototype.getAllData = function () { + var mainData = this.getData(); + return mainData && mainData.getLinkedDataAll ? mainData.getLinkedDataAll() : [{ + data: mainData + }]; + }; + SeriesModel.prototype.setData = function (data) { + var task = getCurrentTask(this); + if (task) { + var context = task.context; + // Consider case: filter, data sample. + // FIXME:TS never used, so comment it + // if (context.data !== data && task.modifyOutputEnd) { + // task.setOutputEnd(data.count()); + // } + context.outputData = data; + // Caution: setData should update context.data, + // Because getData may be called multiply in a + // single stage and expect to get the data just + // set. (For example, AxisProxy, x y both call + // getData and setDate sequentially). + // So the context.data should be fetched from + // upstream each time when a stage starts to be + // performed. + if (task !== this.dataTask) { + context.data = data; + } + } + inner$1(this).data = data; + }; + SeriesModel.prototype.getEncode = function () { + var encode = this.get('encode', true); + if (encode) { + return createHashMap(encode); + } + }; + SeriesModel.prototype.getSourceManager = function () { + return inner$1(this).sourceManager; + }; + SeriesModel.prototype.getSource = function () { + return this.getSourceManager().getSource(); + }; + /** + * Get data before processed + */ + SeriesModel.prototype.getRawData = function () { + return inner$1(this).dataBeforeProcessed; + }; + SeriesModel.prototype.getColorBy = function () { + var colorBy = this.get('colorBy'); + return colorBy || 'series'; + }; + SeriesModel.prototype.isColorBySeries = function () { + return this.getColorBy() === 'series'; + }; + /** + * Get base axis if has coordinate system and has axis. + * By default use coordSys.getBaseAxis(); + * Can be overridden for some chart. + * @return {type} description + */ + SeriesModel.prototype.getBaseAxis = function () { + var coordSys = this.coordinateSystem; + // @ts-ignore + return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis(); + }; + /** + * Default tooltip formatter + * + * @param dataIndex + * @param multipleSeries + * @param dataType + * @param renderMode valid values: 'html'(by default) and 'richText'. + * 'html' is used for rendering tooltip in extra DOM form, and the result + * string is used as DOM HTML content. + * 'richText' is used for rendering tooltip in rich text form, for those where + * DOM operation is not supported. + * @return formatted tooltip with `html` and `markers` + * Notice: The override method can also return string + */ + SeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + return defaultSeriesFormatTooltip({ + series: this, + dataIndex: dataIndex, + multipleSeries: multipleSeries + }); + }; + SeriesModel.prototype.isAnimationEnabled = function () { + var ecModel = this.ecModel; + // Disable animation if using echarts in node but not give ssr flag. + // In ssr mode, renderToString will generate svg with css animation. + if (env.node && !(ecModel && ecModel.ssr)) { + return false; + } + var animationEnabled = this.getShallow('animation'); + if (animationEnabled) { + if (this.getData().count() > this.getShallow('animationThreshold')) { + animationEnabled = false; + } + } + return !!animationEnabled; + }; + SeriesModel.prototype.restoreData = function () { + this.dataTask.dirty(); + }; + SeriesModel.prototype.getColorFromPalette = function (name, scope, requestColorNum) { + var ecModel = this.ecModel; + // PENDING + var color = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum); + if (!color) { + color = ecModel.getColorFromPalette(name, scope, requestColorNum); + } + return color; + }; + /** + * Use `data.mapDimensionsAll(coordDim)` instead. + * @deprecated + */ + SeriesModel.prototype.coordDimToDataDim = function (coordDim) { + return this.getRawData().mapDimensionsAll(coordDim); + }; + /** + * Get progressive rendering count each step + */ + SeriesModel.prototype.getProgressive = function () { + return this.get('progressive'); + }; + /** + * Get progressive rendering count each step + */ + SeriesModel.prototype.getProgressiveThreshold = function () { + return this.get('progressiveThreshold'); + }; + // PENGING If selectedMode is null ? + SeriesModel.prototype.select = function (innerDataIndices, dataType) { + this._innerSelect(this.getData(dataType), innerDataIndices); + }; + SeriesModel.prototype.unselect = function (innerDataIndices, dataType) { + var selectedMap = this.option.selectedMap; + if (!selectedMap) { + return; + } + var selectedMode = this.option.selectedMode; + var data = this.getData(dataType); + if (selectedMode === 'series' || selectedMap === 'all') { + this.option.selectedMap = {}; + this._selectedDataIndicesMap = {}; + return; + } + for (var i = 0; i < innerDataIndices.length; i++) { + var dataIndex = innerDataIndices[i]; + var nameOrId = getSelectionKey(data, dataIndex); + selectedMap[nameOrId] = false; + this._selectedDataIndicesMap[nameOrId] = -1; + } + }; + SeriesModel.prototype.toggleSelect = function (innerDataIndices, dataType) { + var tmpArr = []; + for (var i = 0; i < innerDataIndices.length; i++) { + tmpArr[0] = innerDataIndices[i]; + this.isSelected(innerDataIndices[i], dataType) ? this.unselect(tmpArr, dataType) : this.select(tmpArr, dataType); + } + }; + SeriesModel.prototype.getSelectedDataIndices = function () { + if (this.option.selectedMap === 'all') { + return [].slice.call(this.getData().getIndices()); + } + var selectedDataIndicesMap = this._selectedDataIndicesMap; + var nameOrIds = keys(selectedDataIndicesMap); + var dataIndices = []; + for (var i = 0; i < nameOrIds.length; i++) { + var dataIndex = selectedDataIndicesMap[nameOrIds[i]]; + if (dataIndex >= 0) { + dataIndices.push(dataIndex); + } + } + return dataIndices; + }; + SeriesModel.prototype.isSelected = function (dataIndex, dataType) { + var selectedMap = this.option.selectedMap; + if (!selectedMap) { + return false; + } + var data = this.getData(dataType); + return (selectedMap === 'all' || selectedMap[getSelectionKey(data, dataIndex)]) && !data.getItemModel(dataIndex).get(['select', 'disabled']); + }; + SeriesModel.prototype.isUniversalTransitionEnabled = function () { + if (this[SERIES_UNIVERSAL_TRANSITION_PROP]) { + return true; + } + var universalTransitionOpt = this.option.universalTransition; + // Quick reject + if (!universalTransitionOpt) { + return false; + } + if (universalTransitionOpt === true) { + return true; + } + // Can be simply 'universalTransition: true' + return universalTransitionOpt && universalTransitionOpt.enabled; + }; + SeriesModel.prototype._innerSelect = function (data, innerDataIndices) { + var _a, _b; + var option = this.option; + var selectedMode = option.selectedMode; + var len = innerDataIndices.length; + if (!selectedMode || !len) { + return; + } + if (selectedMode === 'series') { + option.selectedMap = 'all'; + } else if (selectedMode === 'multiple') { + if (!isObject(option.selectedMap)) { + option.selectedMap = {}; + } + var selectedMap = option.selectedMap; + for (var i = 0; i < len; i++) { + var dataIndex = innerDataIndices[i]; + // TODO different types of data share same object. + var nameOrId = getSelectionKey(data, dataIndex); + selectedMap[nameOrId] = true; + this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex); + } + } else if (selectedMode === 'single' || selectedMode === true) { + var lastDataIndex = innerDataIndices[len - 1]; + var nameOrId = getSelectionKey(data, lastDataIndex); + option.selectedMap = (_a = {}, _a[nameOrId] = true, _a); + this._selectedDataIndicesMap = (_b = {}, _b[nameOrId] = data.getRawIndex(lastDataIndex), _b); + } + }; + SeriesModel.prototype._initSelectedMapFromData = function (data) { + // Ignore select info in data if selectedMap exists. + // NOTE It's only for legacy usage. edge data is not supported. + if (this.option.selectedMap) { + return; + } + var dataIndices = []; + if (data.hasItemOption) { + data.each(function (idx) { + var rawItem = data.getRawDataItem(idx); + if (rawItem && rawItem.selected) { + dataIndices.push(idx); + } + }); + } + if (dataIndices.length > 0) { + this._innerSelect(data, dataIndices); + } + }; + // /** + // * @see {module:echarts/stream/Scheduler} + // */ + // abstract pipeTask: null + SeriesModel.registerClass = function (clz) { + return ComponentModel.registerClass(clz); + }; + SeriesModel.protoInitialize = function () { + var proto = SeriesModel.prototype; + proto.type = 'series.__base__'; + proto.seriesIndex = 0; + proto.ignoreStyleOnData = false; + proto.hasSymbolVisual = false; + proto.defaultSymbol = 'circle'; + // Make sure the values can be accessed! + proto.visualStyleAccessPath = 'itemStyle'; + proto.visualDrawType = 'fill'; + }(); + return SeriesModel; + }(ComponentModel); + mixin(SeriesModel, DataFormatMixin); + mixin(SeriesModel, PaletteMixin); + mountExtend(SeriesModel, ComponentModel); + /** + * MUST be called after `prepareSource` called + * Here we need to make auto series, especially for auto legend. But we + * do not modify series.name in option to avoid side effects. + */ + function autoSeriesName(seriesModel) { + // User specified name has higher priority, otherwise it may cause + // series can not be queried unexpectedly. + var name = seriesModel.name; + if (!isNameSpecified(seriesModel)) { + seriesModel.name = getSeriesAutoName(seriesModel) || name; + } + } + function getSeriesAutoName(seriesModel) { + var data = seriesModel.getRawData(); + var dataDims = data.mapDimensionsAll('seriesName'); + var nameArr = []; + each(dataDims, function (dataDim) { + var dimInfo = data.getDimensionInfo(dataDim); + dimInfo.displayName && nameArr.push(dimInfo.displayName); + }); + return nameArr.join(' '); + } + function dataTaskCount(context) { + return context.model.getRawData().count(); + } + function dataTaskReset(context) { + var seriesModel = context.model; + seriesModel.setData(seriesModel.getRawData().cloneShallow()); + return dataTaskProgress; + } + function dataTaskProgress(param, context) { + // Avoid repeat cloneShallow when data just created in reset. + if (context.outputData && param.end > context.outputData.count()) { + context.model.getRawData().cloneShallow(context.outputData); + } + } + // TODO refactor + function wrapData(data, seriesModel) { + each(concatArray(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function (methodName) { + data.wrapMethod(methodName, curry(onDataChange, seriesModel)); + }); + } + function onDataChange(seriesModel, newList) { + var task = getCurrentTask(seriesModel); + if (task) { + // Consider case: filter, selectRange + task.setOutputEnd((newList || this).count()); + } + return newList; + } + function getCurrentTask(seriesModel) { + var scheduler = (seriesModel.ecModel || {}).scheduler; + var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid); + if (pipeline) { + // When pipline finished, the currrentTask keep the last + // task (renderTask). + var task = pipeline.currentTask; + if (task) { + var agentStubMap = task.agentStubMap; + if (agentStubMap) { + task = agentStubMap.get(seriesModel.uid); + } + } + return task; + } + } + + var ComponentView = /** @class */function () { + function ComponentView() { + this.group = new Group(); + this.uid = getUID('viewComponent'); + } + ComponentView.prototype.init = function (ecModel, api) {}; + ComponentView.prototype.render = function (model, ecModel, api, payload) {}; + ComponentView.prototype.dispose = function (ecModel, api) {}; + ComponentView.prototype.updateView = function (model, ecModel, api, payload) { + // Do nothing; + }; + ComponentView.prototype.updateLayout = function (model, ecModel, api, payload) { + // Do nothing; + }; + ComponentView.prototype.updateVisual = function (model, ecModel, api, payload) { + // Do nothing; + }; + /** + * Hook for toggle blur target series. + * Can be used in marker for blur or leave blur the markers + */ + ComponentView.prototype.toggleBlurSeries = function (seriesModels, isBlur, ecModel) { + // Do nothing; + }; + /** + * Traverse the new rendered elements. + * + * It will traverse the new added element in progressive rendering. + * And traverse all in normal rendering. + */ + ComponentView.prototype.eachRendered = function (cb) { + var group = this.group; + if (group) { + group.traverse(cb); + } + }; + return ComponentView; + }(); + enableClassExtend(ComponentView); + enableClassManagement(ComponentView); + + /** + * @return {string} If large mode changed, return string 'reset'; + */ + function createRenderPlanner() { + var inner = makeInner(); + return function (seriesModel) { + var fields = inner(seriesModel); + var pipelineContext = seriesModel.pipelineContext; + var originalLarge = !!fields.large; + var originalProgressive = !!fields.progressiveRender; + // FIXME: if the planner works on a filtered series, `pipelineContext` does not + // exists. See #11611 . Probably we need to modify this structure, see the comment + // on `performRawSeries` in `Schedular.js`. + var large = fields.large = !!(pipelineContext && pipelineContext.large); + var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender); + return !!(originalLarge !== large || originalProgressive !== progressive) && 'reset'; + }; + } + + var inner$2 = makeInner(); + var renderPlanner = createRenderPlanner(); + var ChartView = /** @class */function () { + function ChartView() { + this.group = new Group(); + this.uid = getUID('viewChart'); + this.renderTask = createTask({ + plan: renderTaskPlan, + reset: renderTaskReset + }); + this.renderTask.context = { + view: this + }; + } + ChartView.prototype.init = function (ecModel, api) {}; + ChartView.prototype.render = function (seriesModel, ecModel, api, payload) { + if ("development" !== 'production') { + throw new Error('render method must been implemented'); + } + }; + /** + * Highlight series or specified data item. + */ + ChartView.prototype.highlight = function (seriesModel, ecModel, api, payload) { + var data = seriesModel.getData(payload && payload.dataType); + if (!data) { + if ("development" !== 'production') { + error("Unknown dataType " + payload.dataType); + } + return; + } + toggleHighlight(data, payload, 'emphasis'); + }; + /** + * Downplay series or specified data item. + */ + ChartView.prototype.downplay = function (seriesModel, ecModel, api, payload) { + var data = seriesModel.getData(payload && payload.dataType); + if (!data) { + if ("development" !== 'production') { + error("Unknown dataType " + payload.dataType); + } + return; + } + toggleHighlight(data, payload, 'normal'); + }; + /** + * Remove self. + */ + ChartView.prototype.remove = function (ecModel, api) { + this.group.removeAll(); + }; + /** + * Dispose self. + */ + ChartView.prototype.dispose = function (ecModel, api) {}; + ChartView.prototype.updateView = function (seriesModel, ecModel, api, payload) { + this.render(seriesModel, ecModel, api, payload); + }; + // FIXME never used? + ChartView.prototype.updateLayout = function (seriesModel, ecModel, api, payload) { + this.render(seriesModel, ecModel, api, payload); + }; + // FIXME never used? + ChartView.prototype.updateVisual = function (seriesModel, ecModel, api, payload) { + this.render(seriesModel, ecModel, api, payload); + }; + /** + * Traverse the new rendered elements. + * + * It will traverse the new added element in progressive rendering. + * And traverse all in normal rendering. + */ + ChartView.prototype.eachRendered = function (cb) { + traverseElements(this.group, cb); + }; + ChartView.markUpdateMethod = function (payload, methodName) { + inner$2(payload).updateMethod = methodName; + }; + ChartView.protoInitialize = function () { + var proto = ChartView.prototype; + proto.type = 'chart'; + }(); + return ChartView; + }(); + /** + * Set state of single element + */ + function elSetState(el, state, highlightDigit) { + if (el && isHighDownDispatcher(el)) { + (state === 'emphasis' ? enterEmphasis : leaveEmphasis)(el, highlightDigit); + } + } + function toggleHighlight(data, payload, state) { + var dataIndex = queryDataIndex(data, payload); + var highlightDigit = payload && payload.highlightKey != null ? getHighlightDigit(payload.highlightKey) : null; + if (dataIndex != null) { + each(normalizeToArray(dataIndex), function (dataIdx) { + elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit); + }); + } else { + data.eachItemGraphicEl(function (el) { + elSetState(el, state, highlightDigit); + }); + } + } + enableClassExtend(ChartView, ['dispose']); + enableClassManagement(ChartView); + function renderTaskPlan(context) { + return renderPlanner(context.model); + } + function renderTaskReset(context) { + var seriesModel = context.model; + var ecModel = context.ecModel; + var api = context.api; + var payload = context.payload; + // FIXME: remove updateView updateVisual + var progressiveRender = seriesModel.pipelineContext.progressiveRender; + var view = context.view; + var updateMethod = payload && inner$2(payload).updateMethod; + var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod + // `appendData` is also supported when data amount + // is less than progressive threshold. + : 'render'; + if (methodName !== 'render') { + view[methodName](seriesModel, ecModel, api, payload); + } + return progressMethodMap[methodName]; + } + var progressMethodMap = { + incrementalPrepareRender: { + progress: function (params, context) { + context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload); + } + }, + render: { + // Put view.render in `progress` to support appendData. But in this case + // view.render should not be called in reset, otherwise it will be called + // twise. Use `forceFirstProgress` to make sure that view.render is called + // in any cases. + forceFirstProgress: true, + progress: function (params, context) { + context.view.render(context.model, context.ecModel, context.api, context.payload); + } + } + }; + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var ORIGIN_METHOD = '\0__throttleOriginMethod'; + var RATE = '\0__throttleRate'; + var THROTTLE_TYPE = '\0__throttleType'; + /** + * @public + * @param {(Function)} fn + * @param {number} [delay=0] Unit: ms. + * @param {boolean} [debounce=false] + * true: If call interval less than `delay`, only the last call works. + * false: If call interval less than `delay, call works on fixed rate. + * @return {(Function)} throttled fn. + */ + function throttle(fn, delay, debounce) { + var currCall; + var lastCall = 0; + var lastExec = 0; + var timer = null; + var diff; + var scope; + var args; + var debounceNextCall; + delay = delay || 0; + function exec() { + lastExec = new Date().getTime(); + timer = null; + fn.apply(scope, args || []); + } + var cb = function () { + var cbArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + cbArgs[_i] = arguments[_i]; + } + currCall = new Date().getTime(); + scope = this; + args = cbArgs; + var thisDelay = debounceNextCall || delay; + var thisDebounce = debounceNextCall || debounce; + debounceNextCall = null; + diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay; + clearTimeout(timer); + // Here we should make sure that: the `exec` SHOULD NOT be called later + // than a new call of `cb`, that is, preserving the command order. Consider + // calculating "scale rate" when roaming as an example. When a call of `cb` + // happens, either the `exec` is called dierectly, or the call is delayed. + // But the delayed call should never be later than next call of `cb`. Under + // this assurance, we can simply update view state each time `dispatchAction` + // triggered by user roaming, but not need to add extra code to avoid the + // state being "rolled-back". + if (thisDebounce) { + timer = setTimeout(exec, thisDelay); + } else { + if (diff >= 0) { + exec(); + } else { + timer = setTimeout(exec, -diff); + } + } + lastCall = currCall; + }; + /** + * Clear throttle. + * @public + */ + cb.clear = function () { + if (timer) { + clearTimeout(timer); + timer = null; + } + }; + /** + * Enable debounce once. + */ + cb.debounceNextCall = function (debounceDelay) { + debounceNextCall = debounceDelay; + }; + return cb; + } + /** + * Create throttle method or update throttle rate. + * + * @example + * ComponentView.prototype.render = function () { + * ... + * throttle.createOrUpdate( + * this, + * '_dispatchAction', + * this.model.get('throttle'), + * 'fixRate' + * ); + * }; + * ComponentView.prototype.remove = function () { + * throttle.clear(this, '_dispatchAction'); + * }; + * ComponentView.prototype.dispose = function () { + * throttle.clear(this, '_dispatchAction'); + * }; + * + */ + function createOrUpdate(obj, fnAttr, rate, throttleType) { + var fn = obj[fnAttr]; + if (!fn) { + return; + } + var originFn = fn[ORIGIN_METHOD] || fn; + var lastThrottleType = fn[THROTTLE_TYPE]; + var lastRate = fn[RATE]; + if (lastRate !== rate || lastThrottleType !== throttleType) { + if (rate == null || !throttleType) { + return obj[fnAttr] = originFn; + } + fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce'); + fn[ORIGIN_METHOD] = originFn; + fn[THROTTLE_TYPE] = throttleType; + fn[RATE] = rate; + } + return fn; + } + /** + * Clear throttle. Example see throttle.createOrUpdate. + */ + function clear(obj, fnAttr) { + var fn = obj[fnAttr]; + if (fn && fn[ORIGIN_METHOD]) { + // Clear throttle + fn.clear && fn.clear(); + obj[fnAttr] = fn[ORIGIN_METHOD]; + } + } + + var inner$3 = makeInner(); + var defaultStyleMappers = { + itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true), + lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true) + }; + var defaultColorKey = { + lineStyle: 'stroke', + itemStyle: 'fill' + }; + function getStyleMapper(seriesModel, stylePath) { + var styleMapper = seriesModel.visualStyleMapper || defaultStyleMappers[stylePath]; + if (!styleMapper) { + console.warn("Unknown style type '" + stylePath + "'."); + return defaultStyleMappers.itemStyle; + } + return styleMapper; + } + function getDefaultColorKey(seriesModel, stylePath) { + // return defaultColorKey[stylePath] || + var colorKey = seriesModel.visualDrawType || defaultColorKey[stylePath]; + if (!colorKey) { + console.warn("Unknown style type '" + stylePath + "'."); + return 'fill'; + } + return colorKey; + } + var seriesStyleTask = { + createOnAllSeries: true, + performRawSeries: true, + reset: function (seriesModel, ecModel) { + var data = seriesModel.getData(); + var stylePath = seriesModel.visualStyleAccessPath || 'itemStyle'; + // Set in itemStyle + var styleModel = seriesModel.getModel(stylePath); + var getStyle = getStyleMapper(seriesModel, stylePath); + var globalStyle = getStyle(styleModel); + var decalOption = styleModel.getShallow('decal'); + if (decalOption) { + data.setVisual('decal', decalOption); + decalOption.dirty = true; + } + // TODO + var colorKey = getDefaultColorKey(seriesModel, stylePath); + var color = globalStyle[colorKey]; + // TODO style callback + var colorCallback = isFunction(color) ? color : null; + var hasAutoColor = globalStyle.fill === 'auto' || globalStyle.stroke === 'auto'; + // Get from color palette by default. + if (!globalStyle[colorKey] || colorCallback || hasAutoColor) { + // Note: If some series has color specified (e.g., by itemStyle.color), we DO NOT + // make it effect palette. Because some scenarios users need to make some series + // transparent or as background, which should better not effect the palette. + var colorPalette = seriesModel.getColorFromPalette( + // TODO series count changed. + seriesModel.name, null, ecModel.getSeriesCount()); + if (!globalStyle[colorKey]) { + globalStyle[colorKey] = colorPalette; + data.setVisual('colorFromPalette', true); + } + globalStyle.fill = globalStyle.fill === 'auto' || isFunction(globalStyle.fill) ? colorPalette : globalStyle.fill; + globalStyle.stroke = globalStyle.stroke === 'auto' || isFunction(globalStyle.stroke) ? colorPalette : globalStyle.stroke; + } + data.setVisual('style', globalStyle); + data.setVisual('drawType', colorKey); + // Only visible series has each data be visual encoded + if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) { + data.setVisual('colorFromPalette', false); + return { + dataEach: function (data, idx) { + var dataParams = seriesModel.getDataParams(idx); + var itemStyle = extend({}, globalStyle); + itemStyle[colorKey] = colorCallback(dataParams); + data.setItemVisual(idx, 'style', itemStyle); + } + }; + } + } + }; + var sharedModel = new Model(); + var dataStyleTask = { + createOnAllSeries: true, + performRawSeries: true, + reset: function (seriesModel, ecModel) { + if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) { + return; + } + var data = seriesModel.getData(); + var stylePath = seriesModel.visualStyleAccessPath || 'itemStyle'; + // Set in itemStyle + var getStyle = getStyleMapper(seriesModel, stylePath); + var colorKey = data.getVisual('drawType'); + return { + dataEach: data.hasItemOption ? function (data, idx) { + // Not use getItemModel for performance considuration + var rawItem = data.getRawDataItem(idx); + if (rawItem && rawItem[stylePath]) { + sharedModel.option = rawItem[stylePath]; + var style = getStyle(sharedModel); + var existsStyle = data.ensureUniqueItemVisual(idx, 'style'); + extend(existsStyle, style); + if (sharedModel.option.decal) { + data.setItemVisual(idx, 'decal', sharedModel.option.decal); + sharedModel.option.decal.dirty = true; + } + if (colorKey in style) { + data.setItemVisual(idx, 'colorFromPalette', false); + } + } + } : null + }; + } + }; + // Pick color from palette for the data which has not been set with color yet. + // Note: do not support stream rendering. No such cases yet. + var dataColorPaletteTask = { + performRawSeries: true, + overallReset: function (ecModel) { + // Each type of series uses one scope. + // Pie and funnel are using different scopes. + var paletteScopeGroupByType = createHashMap(); + ecModel.eachSeries(function (seriesModel) { + var colorBy = seriesModel.getColorBy(); + if (seriesModel.isColorBySeries()) { + return; + } + var key = seriesModel.type + '-' + colorBy; + var colorScope = paletteScopeGroupByType.get(key); + if (!colorScope) { + colorScope = {}; + paletteScopeGroupByType.set(key, colorScope); + } + inner$3(seriesModel).scope = colorScope; + }); + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.isColorBySeries() || ecModel.isSeriesFiltered(seriesModel)) { + return; + } + var dataAll = seriesModel.getRawData(); + var idxMap = {}; + var data = seriesModel.getData(); + var colorScope = inner$3(seriesModel).scope; + var stylePath = seriesModel.visualStyleAccessPath || 'itemStyle'; + var colorKey = getDefaultColorKey(seriesModel, stylePath); + data.each(function (idx) { + var rawIdx = data.getRawIndex(idx); + idxMap[rawIdx] = idx; + }); + // Iterate on data before filtered. To make sure color from palette can be + // Consistent when toggling legend. + dataAll.each(function (rawIdx) { + var idx = idxMap[rawIdx]; + var fromPalette = data.getItemVisual(idx, 'colorFromPalette'); + // Get color from palette for each data only when the color is inherited from series color, which is + // also picked from color palette. So following situation is not in the case: + // 1. series.itemStyle.color is set + // 2. color is encoded by visualMap + if (fromPalette) { + var itemStyle = data.ensureUniqueItemVisual(idx, 'style'); + var name_1 = dataAll.getName(rawIdx) || rawIdx + ''; + var dataCount = dataAll.count(); + itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount); + } + }); + }); + } + }; + + var PI$3 = Math.PI; + /** + * @param {module:echarts/ExtensionAPI} api + * @param {Object} [opts] + * @param {string} [opts.text] + * @param {string} [opts.color] + * @param {string} [opts.textColor] + * @return {module:zrender/Element} + */ + function defaultLoading(api, opts) { + opts = opts || {}; + defaults(opts, { + text: 'loading', + textColor: '#000', + fontSize: 12, + fontWeight: 'normal', + fontStyle: 'normal', + fontFamily: 'sans-serif', + maskColor: 'rgba(255, 255, 255, 0.8)', + showSpinner: true, + color: '#5470c6', + spinnerRadius: 10, + lineWidth: 5, + zlevel: 0 + }); + var group = new Group(); + var mask = new Rect({ + style: { + fill: opts.maskColor + }, + zlevel: opts.zlevel, + z: 10000 + }); + group.add(mask); + var textContent = new ZRText({ + style: { + text: opts.text, + fill: opts.textColor, + fontSize: opts.fontSize, + fontWeight: opts.fontWeight, + fontStyle: opts.fontStyle, + fontFamily: opts.fontFamily + }, + zlevel: opts.zlevel, + z: 10001 + }); + var labelRect = new Rect({ + style: { + fill: 'none' + }, + textContent: textContent, + textConfig: { + position: 'right', + distance: 10 + }, + zlevel: opts.zlevel, + z: 10001 + }); + group.add(labelRect); + var arc; + if (opts.showSpinner) { + arc = new Arc({ + shape: { + startAngle: -PI$3 / 2, + endAngle: -PI$3 / 2 + 0.1, + r: opts.spinnerRadius + }, + style: { + stroke: opts.color, + lineCap: 'round', + lineWidth: opts.lineWidth + }, + zlevel: opts.zlevel, + z: 10001 + }); + arc.animateShape(true).when(1000, { + endAngle: PI$3 * 3 / 2 + }).start('circularInOut'); + arc.animateShape(true).when(1000, { + startAngle: PI$3 * 3 / 2 + }).delay(300).start('circularInOut'); + group.add(arc); + } + // Inject resize + group.resize = function () { + var textWidth = textContent.getBoundingRect().width; + var r = opts.showSpinner ? opts.spinnerRadius : 0; + // cx = (containerWidth - arcDiameter - textDistance - textWidth) / 2 + // textDistance needs to be calculated when both animation and text exist + var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 - (opts.showSpinner && textWidth ? 0 : 5 + textWidth / 2) + // only show the text + + (opts.showSpinner ? 0 : textWidth / 2) + // only show the spinner + + (textWidth ? 0 : r); + var cy = api.getHeight() / 2; + opts.showSpinner && arc.setShape({ + cx: cx, + cy: cy + }); + labelRect.setShape({ + x: cx - r, + y: cy - r, + width: r * 2, + height: r * 2 + }); + mask.setShape({ + x: 0, + y: 0, + width: api.getWidth(), + height: api.getHeight() + }); + }; + group.resize(); + return group; + } + + var Scheduler = /** @class */function () { + function Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) { + // key: handlerUID + this._stageTaskMap = createHashMap(); + this.ecInstance = ecInstance; + this.api = api; + // Fix current processors in case that in some rear cases that + // processors might be registered after echarts instance created. + // Register processors incrementally for a echarts instance is + // not supported by this stream architecture. + dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice(); + visualHandlers = this._visualHandlers = visualHandlers.slice(); + this._allHandlers = dataProcessorHandlers.concat(visualHandlers); + } + Scheduler.prototype.restoreData = function (ecModel, payload) { + // TODO: Only restore needed series and components, but not all components. + // Currently `restoreData` of all of the series and component will be called. + // But some independent components like `title`, `legend`, `graphic`, `toolbox`, + // `tooltip`, `axisPointer`, etc, do not need series refresh when `setOption`, + // and some components like coordinate system, axes, dataZoom, visualMap only + // need their target series refresh. + // (1) If we are implementing this feature some day, we should consider these cases: + // if a data processor depends on a component (e.g., dataZoomProcessor depends + // on the settings of `dataZoom`), it should be re-performed if the component + // is modified by `setOption`. + // (2) If a processor depends on sevral series, speicified by its `getTargetSeries`, + // it should be re-performed when the result array of `getTargetSeries` changed. + // We use `dependencies` to cover these issues. + // (3) How to update target series when coordinate system related components modified. + // TODO: simply the dirty mechanism? Check whether only the case here can set tasks dirty, + // and this case all of the tasks will be set as dirty. + ecModel.restoreData(payload); + // Theoretically an overall task not only depends on each of its target series, but also + // depends on all of the series. + // The overall task is not in pipeline, and `ecModel.restoreData` only set pipeline tasks + // dirty. If `getTargetSeries` of an overall task returns nothing, we should also ensure + // that the overall task is set as dirty and to be performed, otherwise it probably cause + // state chaos. So we have to set dirty of all of the overall tasks manually, otherwise it + // probably cause state chaos (consider `dataZoomProcessor`). + this._stageTaskMap.each(function (taskRecord) { + var overallTask = taskRecord.overallTask; + overallTask && overallTask.dirty(); + }); + }; + // If seriesModel provided, incremental threshold is check by series data. + Scheduler.prototype.getPerformArgs = function (task, isBlock) { + // For overall task + if (!task.__pipeline) { + return; + } + var pipeline = this._pipelineMap.get(task.__pipeline.id); + var pCtx = pipeline.context; + var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex; + var step = incremental ? pipeline.step : null; + var modDataCount = pCtx && pCtx.modDataCount; + var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null; + return { + step: step, + modBy: modBy, + modDataCount: modDataCount + }; + }; + Scheduler.prototype.getPipeline = function (pipelineId) { + return this._pipelineMap.get(pipelineId); + }; + /** + * Current, progressive rendering starts from visual and layout. + * Always detect render mode in the same stage, avoiding that incorrect + * detection caused by data filtering. + * Caution: + * `updateStreamModes` use `seriesModel.getData()`. + */ + Scheduler.prototype.updateStreamModes = function (seriesModel, view) { + var pipeline = this._pipelineMap.get(seriesModel.uid); + var data = seriesModel.getData(); + var dataLen = data.count(); + // `progressiveRender` means that can render progressively in each + // animation frame. Note that some types of series do not provide + // `view.incrementalPrepareRender` but support `chart.appendData`. We + // use the term `incremental` but not `progressive` to describe the + // case that `chart.appendData`. + var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold; + var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold'); + // TODO: modDataCount should not updated if `appendData`, otherwise cause whole repaint. + // see `test/candlestick-large3.html` + var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null; + seriesModel.pipelineContext = pipeline.context = { + progressiveRender: progressiveRender, + modDataCount: modDataCount, + large: large + }; + }; + Scheduler.prototype.restorePipelines = function (ecModel) { + var scheduler = this; + var pipelineMap = scheduler._pipelineMap = createHashMap(); + ecModel.eachSeries(function (seriesModel) { + var progressive = seriesModel.getProgressive(); + var pipelineId = seriesModel.uid; + pipelineMap.set(pipelineId, { + id: pipelineId, + head: null, + tail: null, + threshold: seriesModel.getProgressiveThreshold(), + progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()), + blockIndex: -1, + step: Math.round(progressive || 700), + count: 0 + }); + scheduler._pipe(seriesModel, seriesModel.dataTask); + }); + }; + Scheduler.prototype.prepareStageTasks = function () { + var stageTaskMap = this._stageTaskMap; + var ecModel = this.api.getModel(); + var api = this.api; + each(this._allHandlers, function (handler) { + var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {}); + var errMsg = ''; + if ("development" !== 'production') { + // Currently do not need to support to sepecify them both. + errMsg = '"reset" and "overallReset" must not be both specified.'; + } + assert(!(handler.reset && handler.overallReset), errMsg); + handler.reset && this._createSeriesStageTask(handler, record, ecModel, api); + handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api); + }, this); + }; + Scheduler.prototype.prepareView = function (view, model, ecModel, api) { + var renderTask = view.renderTask; + var context = renderTask.context; + context.model = model; + context.ecModel = ecModel; + context.api = api; + renderTask.__block = !view.incrementalPrepareRender; + this._pipe(model, renderTask); + }; + Scheduler.prototype.performDataProcessorTasks = function (ecModel, payload) { + // If we do not use `block` here, it should be considered when to update modes. + this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, { + block: true + }); + }; + Scheduler.prototype.performVisualTasks = function (ecModel, payload, opt) { + this._performStageTasks(this._visualHandlers, ecModel, payload, opt); + }; + Scheduler.prototype._performStageTasks = function (stageHandlers, ecModel, payload, opt) { + opt = opt || {}; + var unfinished = false; + var scheduler = this; + each(stageHandlers, function (stageHandler, idx) { + if (opt.visualType && opt.visualType !== stageHandler.visualType) { + return; + } + var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid); + var seriesTaskMap = stageHandlerRecord.seriesTaskMap; + var overallTask = stageHandlerRecord.overallTask; + if (overallTask) { + var overallNeedDirty_1; + var agentStubMap = overallTask.agentStubMap; + agentStubMap.each(function (stub) { + if (needSetDirty(opt, stub)) { + stub.dirty(); + overallNeedDirty_1 = true; + } + }); + overallNeedDirty_1 && overallTask.dirty(); + scheduler.updatePayload(overallTask, payload); + var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block); + // Execute stubs firstly, which may set the overall task dirty, + // then execute the overall task. And stub will call seriesModel.setData, + // which ensures that in the overallTask seriesModel.getData() will not + // return incorrect data. + agentStubMap.each(function (stub) { + stub.perform(performArgs_1); + }); + if (overallTask.perform(performArgs_1)) { + unfinished = true; + } + } else if (seriesTaskMap) { + seriesTaskMap.each(function (task, pipelineId) { + if (needSetDirty(opt, task)) { + task.dirty(); + } + var performArgs = scheduler.getPerformArgs(task, opt.block); + // FIXME + // if intending to declare `performRawSeries` in handlers, only + // stream-independent (specifically, data item independent) operations can be + // performed. Because if a series is filtered, most of the tasks will not + // be performed. A stream-dependent operation probably cause wrong biz logic. + // Perhaps we should not provide a separate callback for this case instead + // of providing the config `performRawSeries`. The stream-dependent operations + // and stream-independent operations should better not be mixed. + performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model); + scheduler.updatePayload(task, payload); + if (task.perform(performArgs)) { + unfinished = true; + } + }); + } + }); + function needSetDirty(opt, task) { + return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id)); + } + this.unfinished = unfinished || this.unfinished; + }; + Scheduler.prototype.performSeriesTasks = function (ecModel) { + var unfinished; + ecModel.eachSeries(function (seriesModel) { + // Progress to the end for dataInit and dataRestore. + unfinished = seriesModel.dataTask.perform() || unfinished; + }); + this.unfinished = unfinished || this.unfinished; + }; + Scheduler.prototype.plan = function () { + // Travel pipelines, check block. + this._pipelineMap.each(function (pipeline) { + var task = pipeline.tail; + do { + if (task.__block) { + pipeline.blockIndex = task.__idxInPipeline; + break; + } + task = task.getUpstream(); + } while (task); + }); + }; + Scheduler.prototype.updatePayload = function (task, payload) { + payload !== 'remain' && (task.context.payload = payload); + }; + Scheduler.prototype._createSeriesStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) { + var scheduler = this; + var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap; + // The count of stages are totally about only several dozen, so + // do not need to reuse the map. + var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap(); + var seriesType = stageHandler.seriesType; + var getTargetSeries = stageHandler.getTargetSeries; + // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily, + // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`, + // it works but it may cause other irrelevant charts blocked. + if (stageHandler.createOnAllSeries) { + ecModel.eachRawSeries(create); + } else if (seriesType) { + ecModel.eachRawSeriesByType(seriesType, create); + } else if (getTargetSeries) { + getTargetSeries(ecModel, api).each(create); + } + function create(seriesModel) { + var pipelineId = seriesModel.uid; + // Init tasks for each seriesModel only once. + // Reuse original task instance. + var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId) || createTask({ + plan: seriesTaskPlan, + reset: seriesTaskReset, + count: seriesTaskCount + })); + task.context = { + model: seriesModel, + ecModel: ecModel, + api: api, + // PENDING: `useClearVisual` not used? + useClearVisual: stageHandler.isVisual && !stageHandler.isLayout, + plan: stageHandler.plan, + reset: stageHandler.reset, + scheduler: scheduler + }; + scheduler._pipe(seriesModel, task); + } + }; + Scheduler.prototype._createOverallStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) { + var scheduler = this; + var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask + // For overall task, the function only be called on reset stage. + || createTask({ + reset: overallTaskReset + }); + overallTask.context = { + ecModel: ecModel, + api: api, + overallReset: stageHandler.overallReset, + scheduler: scheduler + }; + var oldAgentStubMap = overallTask.agentStubMap; + // The count of stages are totally about only several dozen, so + // do not need to reuse the map. + var newAgentStubMap = overallTask.agentStubMap = createHashMap(); + var seriesType = stageHandler.seriesType; + var getTargetSeries = stageHandler.getTargetSeries; + var overallProgress = true; + var shouldOverallTaskDirty = false; + // FIXME:TS never used, so comment it + // let modifyOutputEnd = stageHandler.modifyOutputEnd; + // An overall task with seriesType detected or has `getTargetSeries`, we add + // stub in each pipelines, it will set the overall task dirty when the pipeline + // progress. Moreover, to avoid call the overall task each frame (too frequent), + // we set the pipeline block. + var errMsg = ''; + if ("development" !== 'production') { + errMsg = '"createOnAllSeries" is not supported for "overallReset", ' + 'because it will block all streams.'; + } + assert(!stageHandler.createOnAllSeries, errMsg); + if (seriesType) { + ecModel.eachRawSeriesByType(seriesType, createStub); + } else if (getTargetSeries) { + getTargetSeries(ecModel, api).each(createStub); + } + // Otherwise, (usually it is legacy case), the overall task will only be + // executed when upstream is dirty. Otherwise the progressive rendering of all + // pipelines will be disabled unexpectedly. But it still needs stubs to receive + // dirty info from upstream. + else { + overallProgress = false; + each(ecModel.getSeries(), createStub); + } + function createStub(seriesModel) { + var pipelineId = seriesModel.uid; + var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId) || ( + // When the result of `getTargetSeries` changed, the overallTask + // should be set as dirty and re-performed. + shouldOverallTaskDirty = true, createTask({ + reset: stubReset, + onDirty: stubOnDirty + }))); + stub.context = { + model: seriesModel, + overallProgress: overallProgress + // FIXME:TS never used, so comment it + // modifyOutputEnd: modifyOutputEnd + }; + + stub.agent = overallTask; + stub.__block = overallProgress; + scheduler._pipe(seriesModel, stub); + } + if (shouldOverallTaskDirty) { + overallTask.dirty(); + } + }; + Scheduler.prototype._pipe = function (seriesModel, task) { + var pipelineId = seriesModel.uid; + var pipeline = this._pipelineMap.get(pipelineId); + !pipeline.head && (pipeline.head = task); + pipeline.tail && pipeline.tail.pipe(task); + pipeline.tail = task; + task.__idxInPipeline = pipeline.count++; + task.__pipeline = pipeline; + }; + Scheduler.wrapStageHandler = function (stageHandler, visualType) { + if (isFunction(stageHandler)) { + stageHandler = { + overallReset: stageHandler, + seriesType: detectSeriseType(stageHandler) + }; + } + stageHandler.uid = getUID('stageHandler'); + visualType && (stageHandler.visualType = visualType); + return stageHandler; + }; + return Scheduler; + }(); + function overallTaskReset(context) { + context.overallReset(context.ecModel, context.api, context.payload); + } + function stubReset(context) { + return context.overallProgress && stubProgress; + } + function stubProgress() { + this.agent.dirty(); + this.getDownstream().dirty(); + } + function stubOnDirty() { + this.agent && this.agent.dirty(); + } + function seriesTaskPlan(context) { + return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null; + } + function seriesTaskReset(context) { + if (context.useClearVisual) { + context.data.clearAllVisual(); + } + var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload)); + return resetDefines.length > 1 ? map(resetDefines, function (v, idx) { + return makeSeriesTaskProgress(idx); + }) : singleSeriesTaskProgress; + } + var singleSeriesTaskProgress = makeSeriesTaskProgress(0); + function makeSeriesTaskProgress(resetDefineIdx) { + return function (params, context) { + var data = context.data; + var resetDefine = context.resetDefines[resetDefineIdx]; + if (resetDefine && resetDefine.dataEach) { + for (var i = params.start; i < params.end; i++) { + resetDefine.dataEach(data, i); + } + } else if (resetDefine && resetDefine.progress) { + resetDefine.progress(params, data); + } + }; + } + function seriesTaskCount(context) { + return context.data.count(); + } + /** + * Only some legacy stage handlers (usually in echarts extensions) are pure function. + * To ensure that they can work normally, they should work in block mode, that is, + * they should not be started util the previous tasks finished. So they cause the + * progressive rendering disabled. We try to detect the series type, to narrow down + * the block range to only the series type they concern, but not all series. + */ + function detectSeriseType(legacyFunc) { + seriesType = null; + try { + // Assume there is no async when calling `eachSeriesByType`. + legacyFunc(ecModelMock, apiMock); + } catch (e) {} + return seriesType; + } + var ecModelMock = {}; + var apiMock = {}; + var seriesType; + mockMethods(ecModelMock, GlobalModel); + mockMethods(apiMock, ExtensionAPI); + ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) { + seriesType = type; + }; + ecModelMock.eachComponent = function (cond) { + if (cond.mainType === 'series' && cond.subType) { + seriesType = cond.subType; + } + }; + function mockMethods(target, Clz) { + /* eslint-disable */ + for (var name_1 in Clz.prototype) { + // Do not use hasOwnProperty + target[name_1] = noop; + } + /* eslint-enable */ + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var colorAll = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF']; + var lightTheme = { + color: colorAll, + colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], colorAll] + }; + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var contrastColor = '#B9B8CE'; + var backgroundColor = '#100C2A'; + var axisCommon = function () { + return { + axisLine: { + lineStyle: { + color: contrastColor + } + }, + splitLine: { + lineStyle: { + color: '#484753' + } + }, + splitArea: { + areaStyle: { + color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)'] + } + }, + minorSplitLine: { + lineStyle: { + color: '#20203B' + } + } + }; + }; + var colorPalette = ['#4992ff', '#7cffb2', '#fddd60', '#ff6e76', '#58d9f9', '#05c091', '#ff8a45', '#8d48e3', '#dd79ff']; + var theme = { + darkMode: true, + color: colorPalette, + backgroundColor: backgroundColor, + axisPointer: { + lineStyle: { + color: '#817f91' + }, + crossStyle: { + color: '#817f91' + }, + label: { + // TODO Contrast of label backgorundColor + color: '#fff' + } + }, + legend: { + textStyle: { + color: contrastColor + } + }, + textStyle: { + color: contrastColor + }, + title: { + textStyle: { + color: '#EEF1FA' + }, + subtextStyle: { + color: '#B9B8CE' + } + }, + toolbox: { + iconStyle: { + borderColor: contrastColor + } + }, + dataZoom: { + borderColor: '#71708A', + textStyle: { + color: contrastColor + }, + 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: contrastColor + } + }, + timeline: { + lineStyle: { + color: contrastColor + }, + label: { + color: contrastColor + }, + controlStyle: { + color: contrastColor, + borderColor: contrastColor + } + }, + calendar: { + itemStyle: { + color: backgroundColor + }, + dayLabel: { + color: contrastColor + }, + monthLabel: { + color: contrastColor + }, + yearLabel: { + color: contrastColor + } + }, + timeAxis: axisCommon(), + logAxis: axisCommon(), + valueAxis: axisCommon(), + categoryAxis: axisCommon(), + line: { + symbol: 'circle' + }, + graph: { + color: colorPalette + }, + gauge: { + title: { + color: contrastColor + }, + axisLine: { + lineStyle: { + color: [[1, 'rgba(207,212,219,0.2)']] + } + }, + axisLabel: { + color: contrastColor + }, + detail: { + color: '#EEF1FA' + } + }, + candlestick: { + itemStyle: { + color: '#f64e56', + color0: '#54ea92', + borderColor: '#f64e56', + borderColor0: '#54ea92' + // borderColor: '#ca2824', + // borderColor0: '#09a443' + } + } + }; + + theme.categoryAxis.splitLine.show = false; + + /** + * Usage of query: + * `chart.on('click', query, handler);` + * The `query` can be: + * + The component type query string, only `mainType` or `mainType.subType`, + * like: 'xAxis', 'series', 'xAxis.category' or 'series.line'. + * + The component query object, like: + * `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`, + * `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`. + * + The data query object, like: + * `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`. + * + The other query object (cmponent customized query), like: + * `{element: 'some'}` (only available in custom series). + * + * Caveat: If a prop in the `query` object is `null/undefined`, it is the + * same as there is no such prop in the `query` object. + */ + var ECEventProcessor = /** @class */function () { + function ECEventProcessor() {} + ECEventProcessor.prototype.normalizeQuery = function (query) { + var cptQuery = {}; + var dataQuery = {}; + var otherQuery = {}; + // `query` is `mainType` or `mainType.subType` of component. + if (isString(query)) { + var condCptType = parseClassType(query); + // `.main` and `.sub` may be ''. + cptQuery.mainType = condCptType.main || null; + cptQuery.subType = condCptType.sub || null; + } + // `query` is an object, convert to {mainType, index, name, id}. + else { + // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved, + // can not be used in `compomentModel.filterForExposedEvent`. + var suffixes_1 = ['Index', 'Name', 'Id']; + var dataKeys_1 = { + name: 1, + dataIndex: 1, + dataType: 1 + }; + each(query, function (val, key) { + var reserved = false; + for (var i = 0; i < suffixes_1.length; i++) { + var propSuffix = suffixes_1[i]; + var suffixPos = key.lastIndexOf(propSuffix); + if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) { + var mainType = key.slice(0, suffixPos); + // Consider `dataIndex`. + if (mainType !== 'data') { + cptQuery.mainType = mainType; + cptQuery[propSuffix.toLowerCase()] = val; + reserved = true; + } + } + } + if (dataKeys_1.hasOwnProperty(key)) { + dataQuery[key] = val; + reserved = true; + } + if (!reserved) { + otherQuery[key] = val; + } + }); + } + return { + cptQuery: cptQuery, + dataQuery: dataQuery, + otherQuery: otherQuery + }; + }; + ECEventProcessor.prototype.filter = function (eventType, query) { + // They should be assigned before each trigger call. + var eventInfo = this.eventInfo; + if (!eventInfo) { + return true; + } + var targetEl = eventInfo.targetEl; + var packedEvent = eventInfo.packedEvent; + var model = eventInfo.model; + var view = eventInfo.view; + // For event like 'globalout'. + if (!model || !view) { + return true; + } + var cptQuery = query.cptQuery; + var dataQuery = query.dataQuery; + return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent)); + function check(query, host, prop, propOnHost) { + return query[prop] == null || host[propOnHost || prop] === query[prop]; + } + }; + ECEventProcessor.prototype.afterTrigger = function () { + // Make sure the eventInfo won't be used in next trigger. + this.eventInfo = null; + }; + return ECEventProcessor; + }(); + + var SYMBOL_PROPS_WITH_CB = ['symbol', 'symbolSize', 'symbolRotate', 'symbolOffset']; + var SYMBOL_PROPS = SYMBOL_PROPS_WITH_CB.concat(['symbolKeepAspect']); + // Encoding visual for all series include which is filtered for legend drawing + var seriesSymbolTask = { + createOnAllSeries: true, + // For legend. + performRawSeries: true, + reset: function (seriesModel, ecModel) { + var data = seriesModel.getData(); + if (seriesModel.legendIcon) { + data.setVisual('legendIcon', seriesModel.legendIcon); + } + if (!seriesModel.hasSymbolVisual) { + return; + } + var symbolOptions = {}; + var symbolOptionsCb = {}; + var hasCallback = false; + for (var i = 0; i < SYMBOL_PROPS_WITH_CB.length; i++) { + var symbolPropName = SYMBOL_PROPS_WITH_CB[i]; + var val = seriesModel.get(symbolPropName); + if (isFunction(val)) { + hasCallback = true; + symbolOptionsCb[symbolPropName] = val; + } else { + symbolOptions[symbolPropName] = val; + } + } + symbolOptions.symbol = symbolOptions.symbol || seriesModel.defaultSymbol; + data.setVisual(extend({ + legendIcon: seriesModel.legendIcon || symbolOptions.symbol, + symbolKeepAspect: seriesModel.get('symbolKeepAspect') + }, symbolOptions)); + // Only visible series has each data be visual encoded + if (ecModel.isSeriesFiltered(seriesModel)) { + return; + } + var symbolPropsCb = keys(symbolOptionsCb); + function dataEach(data, idx) { + var rawValue = seriesModel.getRawValue(idx); + var params = seriesModel.getDataParams(idx); + for (var i = 0; i < symbolPropsCb.length; i++) { + var symbolPropName = symbolPropsCb[i]; + data.setItemVisual(idx, symbolPropName, symbolOptionsCb[symbolPropName](rawValue, params)); + } + } + return { + dataEach: hasCallback ? dataEach : null + }; + } + }; + var dataSymbolTask = { + createOnAllSeries: true, + // For legend. + performRawSeries: true, + reset: function (seriesModel, ecModel) { + if (!seriesModel.hasSymbolVisual) { + return; + } + // Only visible series has each data be visual encoded + if (ecModel.isSeriesFiltered(seriesModel)) { + return; + } + var data = seriesModel.getData(); + function dataEach(data, idx) { + var itemModel = data.getItemModel(idx); + for (var i = 0; i < SYMBOL_PROPS.length; i++) { + var symbolPropName = SYMBOL_PROPS[i]; + var val = itemModel.getShallow(symbolPropName, true); + if (val != null) { + data.setItemVisual(idx, symbolPropName, val); + } + } + } + return { + dataEach: data.hasItemOption ? dataEach : null + }; + } + }; + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function getItemVisualFromData(data, dataIndex, key) { + switch (key) { + case 'color': + var style = data.getItemVisual(dataIndex, 'style'); + return style[data.getVisual('drawType')]; + case 'opacity': + return data.getItemVisual(dataIndex, 'style').opacity; + case 'symbol': + case 'symbolSize': + case 'liftZ': + return data.getItemVisual(dataIndex, key); + default: + if ("development" !== 'production') { + console.warn("Unknown visual type " + key); + } + } + } + function getVisualFromData(data, key) { + switch (key) { + case 'color': + var style = data.getVisual('style'); + return style[data.getVisual('drawType')]; + case 'opacity': + return data.getVisual('style').opacity; + case 'symbol': + case 'symbolSize': + case 'liftZ': + return data.getVisual(key); + default: + if ("development" !== 'production') { + console.warn("Unknown visual type " + key); + } + } + } + function setItemVisualFromData(data, dataIndex, key, value) { + switch (key) { + case 'color': + // Make sure not sharing style object. + var style = data.ensureUniqueItemVisual(dataIndex, 'style'); + style[data.getVisual('drawType')] = value; + // Mark the color has been changed, not from palette anymore + data.setItemVisual(dataIndex, 'colorFromPalette', false); + break; + case 'opacity': + data.ensureUniqueItemVisual(dataIndex, 'style').opacity = value; + break; + case 'symbol': + case 'symbolSize': + case 'liftZ': + data.setItemVisual(dataIndex, key, value); + break; + default: + if ("development" !== 'production') { + console.warn("Unknown visual type " + key); + } + } + } + + // Legacy data selection action. + // Includes: pieSelect, pieUnSelect, pieToggleSelect, mapSelect, mapUnSelect, mapToggleSelect + function createLegacyDataSelectAction(seriesType, ecRegisterAction) { + function getSeriesIndices(ecModel, payload) { + var seriesIndices = []; + ecModel.eachComponent({ + mainType: 'series', + subType: seriesType, + query: payload + }, function (seriesModel) { + seriesIndices.push(seriesModel.seriesIndex); + }); + return seriesIndices; + } + each([[seriesType + 'ToggleSelect', 'toggleSelect'], [seriesType + 'Select', 'select'], [seriesType + 'UnSelect', 'unselect']], function (eventsMap) { + ecRegisterAction(eventsMap[0], function (payload, ecModel, api) { + payload = extend({}, payload); + if ("development" !== 'production') { + deprecateReplaceLog(payload.type, eventsMap[1]); + } + api.dispatchAction(extend(payload, { + type: eventsMap[1], + seriesIndex: getSeriesIndices(ecModel, payload) + })); + }); + }); + } + function handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) { + var legacyEventName = type + eventPostfix; + if (!ecIns.isSilent(legacyEventName)) { + if ("development" !== 'production') { + deprecateLog("event " + legacyEventName + " is deprecated."); + } + ecModel.eachComponent({ + mainType: 'series', + subType: 'pie' + }, function (seriesModel) { + var seriesIndex = seriesModel.seriesIndex; + var selectedMap = seriesModel.option.selectedMap; + var selected = payload.selected; + for (var i = 0; i < selected.length; i++) { + if (selected[i].seriesIndex === seriesIndex) { + var data = seriesModel.getData(); + var dataIndex = queryDataIndex(data, payload.fromActionPayload); + ecIns.trigger(legacyEventName, { + type: legacyEventName, + seriesId: seriesModel.id, + name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex), + selected: isString(selectedMap) ? selectedMap : extend({}, selectedMap) + }); + } + } + }); + } + } + function handleLegacySelectEvents(messageCenter, ecIns, api) { + messageCenter.on('selectchanged', function (params) { + var ecModel = api.getModel(); + if (params.isFromClick) { + handleSeriesLegacySelectEvents('map', 'selectchanged', ecIns, ecModel, params); + handleSeriesLegacySelectEvents('pie', 'selectchanged', ecIns, ecModel, params); + } else if (params.fromAction === 'select') { + handleSeriesLegacySelectEvents('map', 'selected', ecIns, ecModel, params); + handleSeriesLegacySelectEvents('pie', 'selected', ecIns, ecModel, params); + } else if (params.fromAction === 'unselect') { + handleSeriesLegacySelectEvents('map', 'unselected', ecIns, ecModel, params); + handleSeriesLegacySelectEvents('pie', 'unselected', ecIns, ecModel, params); + } + }); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function findEventDispatcher(target, det, returnFirstMatch) { + var found; + while (target) { + if (det(target)) { + found = target; + if (returnFirstMatch) { + break; + } + } + target = target.__hostTarget || target.parent; + } + return found; + } + + var wmUniqueIndex = Math.round(Math.random() * 9); + var supportDefineProperty = typeof Object.defineProperty === 'function'; + var WeakMap = (function () { + function WeakMap() { + this._id = '__ec_inner_' + wmUniqueIndex++; + } + WeakMap.prototype.get = function (key) { + return this._guard(key)[this._id]; + }; + WeakMap.prototype.set = function (key, value) { + var target = this._guard(key); + if (supportDefineProperty) { + Object.defineProperty(target, this._id, { + value: value, + enumerable: false, + configurable: true + }); + } + else { + target[this._id] = value; + } + return this; + }; + WeakMap.prototype["delete"] = function (key) { + if (this.has(key)) { + delete this._guard(key)[this._id]; + return true; + } + return false; + }; + WeakMap.prototype.has = function (key) { + return !!this._guard(key)[this._id]; + }; + WeakMap.prototype._guard = function (key) { + if (key !== Object(key)) { + throw TypeError('Value of WeakMap is not a non-null object.'); + } + return key; + }; + return WeakMap; + }()); + + /** + * Triangle shape + * @inner + */ + var Triangle = Path.extend({ + type: 'triangle', + shape: { + cx: 0, + cy: 0, + width: 0, + height: 0 + }, + buildPath: function (path, shape) { + var cx = shape.cx; + var cy = shape.cy; + var width = shape.width / 2; + var height = shape.height / 2; + path.moveTo(cx, cy - height); + path.lineTo(cx + width, cy + height); + path.lineTo(cx - width, cy + height); + path.closePath(); + } + }); + /** + * Diamond shape + * @inner + */ + var Diamond = Path.extend({ + type: 'diamond', + shape: { + cx: 0, + cy: 0, + width: 0, + height: 0 + }, + buildPath: function (path, shape) { + var cx = shape.cx; + var cy = shape.cy; + var width = shape.width / 2; + var height = shape.height / 2; + path.moveTo(cx, cy - height); + path.lineTo(cx + width, cy); + path.lineTo(cx, cy + height); + path.lineTo(cx - width, cy); + path.closePath(); + } + }); + /** + * Pin shape + * @inner + */ + var Pin = Path.extend({ + type: 'pin', + shape: { + // x, y on the cusp + x: 0, + y: 0, + width: 0, + height: 0 + }, + buildPath: function (path, shape) { + var x = shape.x; + var y = shape.y; + var w = shape.width / 5 * 3; + // Height must be larger than width + var h = Math.max(w, shape.height); + var r = w / 2; + // Dist on y with tangent point and circle center + var dy = r * r / (h - r); + var cy = y - h + r + dy; + var angle = Math.asin(dy / r); + // Dist on x with tangent point and circle center + var dx = Math.cos(angle) * r; + var tanX = Math.sin(angle); + var tanY = Math.cos(angle); + var cpLen = r * 0.6; + var cpLen2 = r * 0.7; + path.moveTo(x - dx, cy + dy); + path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle); + path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y); + path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy); + path.closePath(); + } + }); + /** + * Arrow shape + * @inner + */ + var Arrow = Path.extend({ + type: 'arrow', + shape: { + x: 0, + y: 0, + width: 0, + height: 0 + }, + buildPath: function (ctx, shape) { + var height = shape.height; + var width = shape.width; + var x = shape.x; + var y = shape.y; + var dx = width / 3 * 2; + ctx.moveTo(x, y); + ctx.lineTo(x + dx, y + height); + ctx.lineTo(x, y + height / 4 * 3); + ctx.lineTo(x - dx, y + height); + ctx.lineTo(x, y); + ctx.closePath(); + } + }); + /** + * Map of path constructors + */ + // TODO Use function to build symbol path. + var symbolCtors = { + line: Line, + rect: Rect, + roundRect: Rect, + square: Rect, + circle: Circle, + diamond: Diamond, + pin: Pin, + arrow: Arrow, + triangle: Triangle + }; + var symbolShapeMakers = { + line: function (x, y, w, h, shape) { + shape.x1 = x; + shape.y1 = y + h / 2; + shape.x2 = x + w; + shape.y2 = y + h / 2; + }, + rect: function (x, y, w, h, shape) { + shape.x = x; + shape.y = y; + shape.width = w; + shape.height = h; + }, + roundRect: function (x, y, w, h, shape) { + shape.x = x; + shape.y = y; + shape.width = w; + shape.height = h; + shape.r = Math.min(w, h) / 4; + }, + square: function (x, y, w, h, shape) { + var size = Math.min(w, h); + shape.x = x; + shape.y = y; + shape.width = size; + shape.height = size; + }, + circle: function (x, y, w, h, shape) { + // Put circle in the center of square + shape.cx = x + w / 2; + shape.cy = y + h / 2; + shape.r = Math.min(w, h) / 2; + }, + diamond: function (x, y, w, h, shape) { + shape.cx = x + w / 2; + shape.cy = y + h / 2; + shape.width = w; + shape.height = h; + }, + pin: function (x, y, w, h, shape) { + shape.x = x + w / 2; + shape.y = y + h / 2; + shape.width = w; + shape.height = h; + }, + arrow: function (x, y, w, h, shape) { + shape.x = x + w / 2; + shape.y = y + h / 2; + shape.width = w; + shape.height = h; + }, + triangle: function (x, y, w, h, shape) { + shape.cx = x + w / 2; + shape.cy = y + h / 2; + shape.width = w; + shape.height = h; + } + }; + var symbolBuildProxies = {}; + each(symbolCtors, function (Ctor, name) { + symbolBuildProxies[name] = new Ctor(); + }); + var SymbolClz = Path.extend({ + type: 'symbol', + shape: { + symbolType: '', + x: 0, + y: 0, + width: 0, + height: 0 + }, + calculateTextPosition: function (out, config, rect) { + var res = calculateTextPosition(out, config, rect); + var shape = this.shape; + if (shape && shape.symbolType === 'pin' && config.position === 'inside') { + res.y = rect.y + rect.height * 0.4; + } + return res; + }, + buildPath: function (ctx, shape, inBundle) { + var symbolType = shape.symbolType; + if (symbolType !== 'none') { + var proxySymbol = symbolBuildProxies[symbolType]; + if (!proxySymbol) { + // Default rect + symbolType = 'rect'; + proxySymbol = symbolBuildProxies[symbolType]; + } + symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape); + proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle); + } + } + }); + // Provide setColor helper method to avoid determine if set the fill or stroke outside + function symbolPathSetColor(color, innerColor) { + if (this.type !== 'image') { + var symbolStyle = this.style; + if (this.__isEmptyBrush) { + symbolStyle.stroke = color; + symbolStyle.fill = innerColor || '#fff'; + // TODO Same width with lineStyle in LineView + symbolStyle.lineWidth = 2; + } else if (this.shape.symbolType === 'line') { + symbolStyle.stroke = color; + } else { + symbolStyle.fill = color; + } + this.markRedraw(); + } + } + /** + * Create a symbol element with given symbol configuration: shape, x, y, width, height, color + */ + function createSymbol(symbolType, x, y, w, h, color, + // whether to keep the ratio of w/h, + keepAspect) { + // TODO Support image object, DynamicImage. + var isEmpty = symbolType.indexOf('empty') === 0; + if (isEmpty) { + symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6); + } + var symbolPath; + if (symbolType.indexOf('image://') === 0) { + symbolPath = makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover'); + } else if (symbolType.indexOf('path://') === 0) { + symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover'); + } else { + symbolPath = new SymbolClz({ + shape: { + symbolType: symbolType, + x: x, + y: y, + width: w, + height: h + } + }); + } + symbolPath.__isEmptyBrush = isEmpty; + // TODO Should deprecate setColor + symbolPath.setColor = symbolPathSetColor; + if (color) { + symbolPath.setColor(color); + } + return symbolPath; + } + function normalizeSymbolSize(symbolSize) { + if (!isArray(symbolSize)) { + symbolSize = [+symbolSize, +symbolSize]; + } + return [symbolSize[0] || 0, symbolSize[1] || 0]; + } + function normalizeSymbolOffset(symbolOffset, symbolSize) { + if (symbolOffset == null) { + return; + } + if (!isArray(symbolOffset)) { + symbolOffset = [symbolOffset, symbolOffset]; + } + return [parsePercent$1(symbolOffset[0], symbolSize[0]) || 0, parsePercent$1(retrieve2(symbolOffset[1], symbolOffset[0]), symbolSize[1]) || 0]; + } + + function isSafeNum(num) { + return isFinite(num); + } + function createLinearGradient(ctx, obj, rect) { + var x = obj.x == null ? 0 : obj.x; + var x2 = obj.x2 == null ? 1 : obj.x2; + var y = obj.y == null ? 0 : obj.y; + var y2 = obj.y2 == null ? 0 : obj.y2; + if (!obj.global) { + x = x * rect.width + rect.x; + x2 = x2 * rect.width + rect.x; + y = y * rect.height + rect.y; + y2 = y2 * rect.height + rect.y; + } + x = isSafeNum(x) ? x : 0; + x2 = isSafeNum(x2) ? x2 : 1; + y = isSafeNum(y) ? y : 0; + y2 = isSafeNum(y2) ? y2 : 0; + var canvasGradient = ctx.createLinearGradient(x, y, x2, y2); + return canvasGradient; + } + function createRadialGradient(ctx, obj, rect) { + var width = rect.width; + var height = rect.height; + var min = Math.min(width, height); + var x = obj.x == null ? 0.5 : obj.x; + var y = obj.y == null ? 0.5 : obj.y; + var r = obj.r == null ? 0.5 : obj.r; + if (!obj.global) { + x = x * width + rect.x; + y = y * height + rect.y; + r = r * min; + } + x = isSafeNum(x) ? x : 0.5; + y = isSafeNum(y) ? y : 0.5; + r = r >= 0 && isSafeNum(r) ? r : 0.5; + var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r); + return canvasGradient; + } + function getCanvasGradient(ctx, obj, rect) { + var canvasGradient = obj.type === 'radial' + ? createRadialGradient(ctx, obj, rect) + : createLinearGradient(ctx, obj, rect); + var colorStops = obj.colorStops; + for (var i = 0; i < colorStops.length; i++) { + canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color); + } + return canvasGradient; + } + function isClipPathChanged(clipPaths, prevClipPaths) { + if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) { + return false; + } + if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) { + return true; + } + for (var i = 0; i < clipPaths.length; i++) { + if (clipPaths[i] !== prevClipPaths[i]) { + return true; + } + } + return false; + } + function parseInt10(val) { + return parseInt(val, 10); + } + function getSize(root, whIdx, opts) { + var wh = ['width', 'height'][whIdx]; + var cwh = ['clientWidth', 'clientHeight'][whIdx]; + var plt = ['paddingLeft', 'paddingTop'][whIdx]; + var prb = ['paddingRight', 'paddingBottom'][whIdx]; + if (opts[wh] != null && opts[wh] !== 'auto') { + return parseFloat(opts[wh]); + } + var stl = document.defaultView.getComputedStyle(root); + return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) + - (parseInt10(stl[plt]) || 0) + - (parseInt10(stl[prb]) || 0)) | 0; + } + + function normalizeLineDash(lineType, lineWidth) { + if (!lineType || lineType === 'solid' || !(lineWidth > 0)) { + return null; + } + return lineType === 'dashed' + ? [4 * lineWidth, 2 * lineWidth] + : lineType === 'dotted' + ? [lineWidth] + : isNumber(lineType) + ? [lineType] : isArray(lineType) ? lineType : null; + } + function getLineDash(el) { + var style = el.style; + var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth); + var lineDashOffset = style.lineDashOffset; + if (lineDash) { + var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1; + if (lineScale_1 && lineScale_1 !== 1) { + lineDash = map(lineDash, function (rawVal) { + return rawVal / lineScale_1; + }); + lineDashOffset /= lineScale_1; + } + } + return [lineDash, lineDashOffset]; + } + + var pathProxyForDraw = new PathProxy(true); + function styleHasStroke(style) { + var stroke = style.stroke; + return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0)); + } + function isValidStrokeFillStyle(strokeOrFill) { + return typeof strokeOrFill === 'string' && strokeOrFill !== 'none'; + } + function styleHasFill(style) { + var fill = style.fill; + return fill != null && fill !== 'none'; + } + function doFillPath(ctx, style) { + if (style.fillOpacity != null && style.fillOpacity !== 1) { + var originalGlobalAlpha = ctx.globalAlpha; + ctx.globalAlpha = style.fillOpacity * style.opacity; + ctx.fill(); + ctx.globalAlpha = originalGlobalAlpha; + } + else { + ctx.fill(); + } + } + function doStrokePath(ctx, style) { + if (style.strokeOpacity != null && style.strokeOpacity !== 1) { + var originalGlobalAlpha = ctx.globalAlpha; + ctx.globalAlpha = style.strokeOpacity * style.opacity; + ctx.stroke(); + ctx.globalAlpha = originalGlobalAlpha; + } + else { + ctx.stroke(); + } + } + function createCanvasPattern(ctx, pattern, el) { + var image = createOrUpdateImage(pattern.image, pattern.__image, el); + if (isImageReady(image)) { + var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat'); + if (typeof DOMMatrix === 'function' + && canvasPattern + && canvasPattern.setTransform) { + var matrix = new DOMMatrix(); + matrix.translateSelf((pattern.x || 0), (pattern.y || 0)); + matrix.rotateSelf(0, 0, (pattern.rotation || 0) * RADIAN_TO_DEGREE); + matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1)); + canvasPattern.setTransform(matrix); + } + return canvasPattern; + } + } + function brushPath(ctx, el, style, inBatch) { + var _a; + var hasStroke = styleHasStroke(style); + var hasFill = styleHasFill(style); + var strokePercent = style.strokePercent; + var strokePart = strokePercent < 1; + var firstDraw = !el.path; + if ((!el.silent || strokePart) && firstDraw) { + el.createPathProxy(); + } + var path = el.path || pathProxyForDraw; + var dirtyFlag = el.__dirty; + if (!inBatch) { + var fill = style.fill; + var stroke = style.stroke; + var hasFillGradient = hasFill && !!fill.colorStops; + var hasStrokeGradient = hasStroke && !!stroke.colorStops; + var hasFillPattern = hasFill && !!fill.image; + var hasStrokePattern = hasStroke && !!stroke.image; + var fillGradient = void 0; + var strokeGradient = void 0; + var fillPattern = void 0; + var strokePattern = void 0; + var rect = void 0; + if (hasFillGradient || hasStrokeGradient) { + rect = el.getBoundingRect(); + } + if (hasFillGradient) { + fillGradient = dirtyFlag + ? getCanvasGradient(ctx, fill, rect) + : el.__canvasFillGradient; + el.__canvasFillGradient = fillGradient; + } + if (hasStrokeGradient) { + strokeGradient = dirtyFlag + ? getCanvasGradient(ctx, stroke, rect) + : el.__canvasStrokeGradient; + el.__canvasStrokeGradient = strokeGradient; + } + if (hasFillPattern) { + fillPattern = (dirtyFlag || !el.__canvasFillPattern) + ? createCanvasPattern(ctx, fill, el) + : el.__canvasFillPattern; + el.__canvasFillPattern = fillPattern; + } + if (hasStrokePattern) { + strokePattern = (dirtyFlag || !el.__canvasStrokePattern) + ? createCanvasPattern(ctx, stroke, el) + : el.__canvasStrokePattern; + el.__canvasStrokePattern = fillPattern; + } + if (hasFillGradient) { + ctx.fillStyle = fillGradient; + } + else if (hasFillPattern) { + if (fillPattern) { + ctx.fillStyle = fillPattern; + } + else { + hasFill = false; + } + } + if (hasStrokeGradient) { + ctx.strokeStyle = strokeGradient; + } + else if (hasStrokePattern) { + if (strokePattern) { + ctx.strokeStyle = strokePattern; + } + else { + hasStroke = false; + } + } + } + var scale = el.getGlobalScale(); + path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold); + var lineDash; + var lineDashOffset; + if (ctx.setLineDash && style.lineDash) { + _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1]; + } + var needsRebuild = true; + if (firstDraw || (dirtyFlag & SHAPE_CHANGED_BIT)) { + path.setDPR(ctx.dpr); + if (strokePart) { + path.setContext(null); + } + else { + path.setContext(ctx); + needsRebuild = false; + } + path.reset(); + el.buildPath(path, el.shape, inBatch); + path.toStatic(); + el.pathUpdated(); + } + if (needsRebuild) { + path.rebuildPath(ctx, strokePart ? strokePercent : 1); + } + if (lineDash) { + ctx.setLineDash(lineDash); + ctx.lineDashOffset = lineDashOffset; + } + if (!inBatch) { + if (style.strokeFirst) { + if (hasStroke) { + doStrokePath(ctx, style); + } + if (hasFill) { + doFillPath(ctx, style); + } + } + else { + if (hasFill) { + doFillPath(ctx, style); + } + if (hasStroke) { + doStrokePath(ctx, style); + } + } + } + if (lineDash) { + ctx.setLineDash([]); + } + } + function brushImage(ctx, el, style) { + var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload); + if (!image || !isImageReady(image)) { + return; + } + var x = style.x || 0; + var y = style.y || 0; + var width = el.getWidth(); + var height = el.getHeight(); + var aspect = image.width / image.height; + if (width == null && height != null) { + width = height * aspect; + } + else if (height == null && width != null) { + height = width / aspect; + } + else if (width == null && height == null) { + width = image.width; + height = image.height; + } + if (style.sWidth && style.sHeight) { + var sx = style.sx || 0; + var sy = style.sy || 0; + ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height); + } + else if (style.sx && style.sy) { + var sx = style.sx; + var sy = style.sy; + var sWidth = width - sx; + var sHeight = height - sy; + ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height); + } + else { + ctx.drawImage(image, x, y, width, height); + } + } + function brushText(ctx, el, style) { + var _a; + var text = style.text; + text != null && (text += ''); + if (text) { + ctx.font = style.font || DEFAULT_FONT; + ctx.textAlign = style.textAlign; + ctx.textBaseline = style.textBaseline; + var lineDash = void 0; + var lineDashOffset = void 0; + if (ctx.setLineDash && style.lineDash) { + _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1]; + } + if (lineDash) { + ctx.setLineDash(lineDash); + ctx.lineDashOffset = lineDashOffset; + } + if (style.strokeFirst) { + if (styleHasStroke(style)) { + ctx.strokeText(text, style.x, style.y); + } + if (styleHasFill(style)) { + ctx.fillText(text, style.x, style.y); + } + } + else { + if (styleHasFill(style)) { + ctx.fillText(text, style.x, style.y); + } + if (styleHasStroke(style)) { + ctx.strokeText(text, style.x, style.y); + } + } + if (lineDash) { + ctx.setLineDash([]); + } + } + } + var SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY']; + var STROKE_PROPS = [ + ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10] + ]; + function bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) { + var styleChanged = false; + if (!forceSetAll) { + prevStyle = prevStyle || {}; + if (style === prevStyle) { + return false; + } + } + if (forceSetAll || style.opacity !== prevStyle.opacity) { + flushPathDrawn(ctx, scope); + styleChanged = true; + var opacity = Math.max(Math.min(style.opacity, 1), 0); + ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity; + } + if (forceSetAll || style.blend !== prevStyle.blend) { + if (!styleChanged) { + flushPathDrawn(ctx, scope); + styleChanged = true; + } + ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend; + } + for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) { + var propName = SHADOW_NUMBER_PROPS[i]; + if (forceSetAll || style[propName] !== prevStyle[propName]) { + if (!styleChanged) { + flushPathDrawn(ctx, scope); + styleChanged = true; + } + ctx[propName] = ctx.dpr * (style[propName] || 0); + } + } + if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) { + if (!styleChanged) { + flushPathDrawn(ctx, scope); + styleChanged = true; + } + ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor; + } + return styleChanged; + } + function bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) { + var style = getStyle(el, scope.inHover); + var prevStyle = forceSetAll + ? null + : (prevEl && getStyle(prevEl, scope.inHover) || {}); + if (style === prevStyle) { + return false; + } + var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope); + if (forceSetAll || style.fill !== prevStyle.fill) { + if (!styleChanged) { + flushPathDrawn(ctx, scope); + styleChanged = true; + } + isValidStrokeFillStyle(style.fill) && (ctx.fillStyle = style.fill); + } + if (forceSetAll || style.stroke !== prevStyle.stroke) { + if (!styleChanged) { + flushPathDrawn(ctx, scope); + styleChanged = true; + } + isValidStrokeFillStyle(style.stroke) && (ctx.strokeStyle = style.stroke); + } + if (forceSetAll || style.opacity !== prevStyle.opacity) { + if (!styleChanged) { + flushPathDrawn(ctx, scope); + styleChanged = true; + } + ctx.globalAlpha = style.opacity == null ? 1 : style.opacity; + } + if (el.hasStroke()) { + var lineWidth = style.lineWidth; + var newLineWidth = lineWidth / ((style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1); + if (ctx.lineWidth !== newLineWidth) { + if (!styleChanged) { + flushPathDrawn(ctx, scope); + styleChanged = true; + } + ctx.lineWidth = newLineWidth; + } + } + for (var i = 0; i < STROKE_PROPS.length; i++) { + var prop = STROKE_PROPS[i]; + var propName = prop[0]; + if (forceSetAll || style[propName] !== prevStyle[propName]) { + if (!styleChanged) { + flushPathDrawn(ctx, scope); + styleChanged = true; + } + ctx[propName] = style[propName] || prop[1]; + } + } + return styleChanged; + } + function bindImageStyle(ctx, el, prevEl, forceSetAll, scope) { + return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope); + } + function setContextTransform(ctx, el) { + var m = el.transform; + var dpr = ctx.dpr || 1; + if (m) { + ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]); + } + else { + ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + } + } + function updateClipStatus(clipPaths, ctx, scope) { + var allClipped = false; + for (var i = 0; i < clipPaths.length; i++) { + var clipPath = clipPaths[i]; + allClipped = allClipped || clipPath.isZeroArea(); + setContextTransform(ctx, clipPath); + ctx.beginPath(); + clipPath.buildPath(ctx, clipPath.shape); + ctx.clip(); + } + scope.allClipped = allClipped; + } + function isTransformChanged(m0, m1) { + if (m0 && m1) { + return m0[0] !== m1[0] + || m0[1] !== m1[1] + || m0[2] !== m1[2] + || m0[3] !== m1[3] + || m0[4] !== m1[4] + || m0[5] !== m1[5]; + } + else if (!m0 && !m1) { + return false; + } + return true; + } + var DRAW_TYPE_PATH = 1; + var DRAW_TYPE_IMAGE = 2; + var DRAW_TYPE_TEXT = 3; + var DRAW_TYPE_INCREMENTAL = 4; + function canPathBatch(style) { + var hasFill = styleHasFill(style); + var hasStroke = styleHasStroke(style); + return !(style.lineDash + || !(+hasFill ^ +hasStroke) + || (hasFill && typeof style.fill !== 'string') + || (hasStroke && typeof style.stroke !== 'string') + || style.strokePercent < 1 + || style.strokeOpacity < 1 + || style.fillOpacity < 1); + } + function flushPathDrawn(ctx, scope) { + scope.batchFill && ctx.fill(); + scope.batchStroke && ctx.stroke(); + scope.batchFill = ''; + scope.batchStroke = ''; + } + function getStyle(el, inHover) { + return inHover ? (el.__hoverStyle || el.style) : el.style; + } + function brushSingle(ctx, el) { + brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true); + } + function brush(ctx, el, scope, isLast) { + var m = el.transform; + if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) { + el.__dirty &= ~REDRAW_BIT; + el.__isRendered = false; + return; + } + var clipPaths = el.__clipPaths; + var prevElClipPaths = scope.prevElClipPaths; + var forceSetTransform = false; + var forceSetStyle = false; + if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) { + if (prevElClipPaths && prevElClipPaths.length) { + flushPathDrawn(ctx, scope); + ctx.restore(); + forceSetStyle = forceSetTransform = true; + scope.prevElClipPaths = null; + scope.allClipped = false; + scope.prevEl = null; + } + if (clipPaths && clipPaths.length) { + flushPathDrawn(ctx, scope); + ctx.save(); + updateClipStatus(clipPaths, ctx, scope); + forceSetTransform = true; + } + scope.prevElClipPaths = clipPaths; + } + if (scope.allClipped) { + el.__isRendered = false; + return; + } + el.beforeBrush && el.beforeBrush(); + el.innerBeforeBrush(); + var prevEl = scope.prevEl; + if (!prevEl) { + forceSetStyle = forceSetTransform = true; + } + var canBatchPath = el instanceof Path + && el.autoBatch + && canPathBatch(el.style); + if (forceSetTransform || isTransformChanged(m, prevEl.transform)) { + flushPathDrawn(ctx, scope); + setContextTransform(ctx, el); + } + else if (!canBatchPath) { + flushPathDrawn(ctx, scope); + } + var style = getStyle(el, scope.inHover); + if (el instanceof Path) { + if (scope.lastDrawType !== DRAW_TYPE_PATH) { + forceSetStyle = true; + scope.lastDrawType = DRAW_TYPE_PATH; + } + bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope); + if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) { + ctx.beginPath(); + } + brushPath(ctx, el, style, canBatchPath); + if (canBatchPath) { + scope.batchFill = style.fill || ''; + scope.batchStroke = style.stroke || ''; + } + } + else { + if (el instanceof TSpan) { + if (scope.lastDrawType !== DRAW_TYPE_TEXT) { + forceSetStyle = true; + scope.lastDrawType = DRAW_TYPE_TEXT; + } + bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope); + brushText(ctx, el, style); + } + else if (el instanceof ZRImage) { + if (scope.lastDrawType !== DRAW_TYPE_IMAGE) { + forceSetStyle = true; + scope.lastDrawType = DRAW_TYPE_IMAGE; + } + bindImageStyle(ctx, el, prevEl, forceSetStyle, scope); + brushImage(ctx, el, style); + } + else if (el.getTemporalDisplayables) { + if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) { + forceSetStyle = true; + scope.lastDrawType = DRAW_TYPE_INCREMENTAL; + } + brushIncremental(ctx, el, scope); + } + } + if (canBatchPath && isLast) { + flushPathDrawn(ctx, scope); + } + el.innerAfterBrush(); + el.afterBrush && el.afterBrush(); + scope.prevEl = el; + el.__dirty = 0; + el.__isRendered = true; + } + function brushIncremental(ctx, el, scope) { + var displayables = el.getDisplayables(); + var temporalDisplayables = el.getTemporalDisplayables(); + ctx.save(); + var innerScope = { + prevElClipPaths: null, + prevEl: null, + allClipped: false, + viewWidth: scope.viewWidth, + viewHeight: scope.viewHeight, + inHover: scope.inHover + }; + var i; + var len; + for (i = el.getCursor(), len = displayables.length; i < len; i++) { + var displayable = displayables[i]; + displayable.beforeBrush && displayable.beforeBrush(); + displayable.innerBeforeBrush(); + brush(ctx, displayable, innerScope, i === len - 1); + displayable.innerAfterBrush(); + displayable.afterBrush && displayable.afterBrush(); + innerScope.prevEl = displayable; + } + for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) { + var displayable = temporalDisplayables[i_1]; + displayable.beforeBrush && displayable.beforeBrush(); + displayable.innerBeforeBrush(); + brush(ctx, displayable, innerScope, i_1 === len_1 - 1); + displayable.innerAfterBrush(); + displayable.afterBrush && displayable.afterBrush(); + innerScope.prevEl = displayable; + } + el.clearTemporalDisplayables(); + el.notClear = true; + ctx.restore(); + } + + var decalMap = new WeakMap(); + var decalCache = new LRU(100); + var decalKeys = ['symbol', 'symbolSize', 'symbolKeepAspect', 'color', 'backgroundColor', 'dashArrayX', 'dashArrayY', 'maxTileWidth', 'maxTileHeight']; + /** + * Create or update pattern image from decal options + * + * @param {InnerDecalObject | 'none'} decalObject decal options, 'none' if no decal + * @return {Pattern} pattern with generated image, null if no decal + */ + function createOrUpdatePatternFromDecal(decalObject, api) { + if (decalObject === 'none') { + return null; + } + var dpr = api.getDevicePixelRatio(); + var zr = api.getZr(); + var isSVG = zr.painter.type === 'svg'; + if (decalObject.dirty) { + decalMap["delete"](decalObject); + } + var oldPattern = decalMap.get(decalObject); + if (oldPattern) { + return oldPattern; + } + var decalOpt = defaults(decalObject, { + symbol: 'rect', + symbolSize: 1, + symbolKeepAspect: true, + color: 'rgba(0, 0, 0, 0.2)', + backgroundColor: null, + dashArrayX: 5, + dashArrayY: 5, + rotation: 0, + maxTileWidth: 512, + maxTileHeight: 512 + }); + if (decalOpt.backgroundColor === 'none') { + decalOpt.backgroundColor = null; + } + var pattern = { + repeat: 'repeat' + }; + setPatternnSource(pattern); + pattern.rotation = decalOpt.rotation; + pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr; + decalMap.set(decalObject, pattern); + decalObject.dirty = false; + return pattern; + function setPatternnSource(pattern) { + var keys = [dpr]; + var isValidKey = true; + for (var i = 0; i < decalKeys.length; ++i) { + var value = decalOpt[decalKeys[i]]; + if (value != null && !isArray(value) && !isString(value) && !isNumber(value) && typeof value !== 'boolean') { + isValidKey = false; + break; + } + keys.push(value); + } + var cacheKey; + if (isValidKey) { + cacheKey = keys.join(',') + (isSVG ? '-svg' : ''); + var cache = decalCache.get(cacheKey); + if (cache) { + isSVG ? pattern.svgElement = cache : pattern.image = cache; + } + } + var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX); + var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY); + var symbolArray = normalizeSymbolArray(decalOpt.symbol); + var lineBlockLengthsX = getLineBlockLengthX(dashArrayX); + var lineBlockLengthY = getLineBlockLengthY(dashArrayY); + var canvas = !isSVG && platformApi.createCanvas(); + var svgRoot = isSVG && { + tag: 'g', + attrs: {}, + key: 'dcl', + children: [] + }; + var pSize = getPatternSize(); + var ctx; + if (canvas) { + canvas.width = pSize.width * dpr; + canvas.height = pSize.height * dpr; + ctx = canvas.getContext('2d'); + } + brushDecal(); + if (isValidKey) { + decalCache.put(cacheKey, canvas || svgRoot); + } + pattern.image = canvas; + pattern.svgElement = svgRoot; + pattern.svgWidth = pSize.width; + pattern.svgHeight = pSize.height; + /** + * Get minimum length that can make a repeatable pattern. + * + * @return {Object} pattern width and height + */ + function getPatternSize() { + /** + * For example, if dash is [[3, 2], [2, 1]] for X, it looks like + * |--- --- --- --- --- ... + * |-- -- -- -- -- -- -- -- ... + * |--- --- --- --- --- ... + * |-- -- -- -- -- -- -- -- ... + * So the minimum length of X is 15, + * which is the least common multiple of `3 + 2` and `2 + 1` + * |--- --- --- |--- --- ... + * |-- -- -- -- -- |-- -- -- ... + */ + var width = 1; + for (var i = 0, xlen = lineBlockLengthsX.length; i < xlen; ++i) { + width = getLeastCommonMultiple(width, lineBlockLengthsX[i]); + } + var symbolRepeats = 1; + for (var i = 0, xlen = symbolArray.length; i < xlen; ++i) { + symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i].length); + } + width *= symbolRepeats; + var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length; + if ("development" !== 'production') { + var warn = function (attrName) { + /* eslint-disable-next-line */ + console.warn("Calculated decal size is greater than " + attrName + " due to decal option settings so " + attrName + " is used for the decal size. Please consider changing the decal option to make a smaller decal or set " + attrName + " to be larger to avoid incontinuity."); + }; + if (width > decalOpt.maxTileWidth) { + warn('maxTileWidth'); + } + if (height > decalOpt.maxTileHeight) { + warn('maxTileHeight'); + } + } + return { + width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)), + height: Math.max(1, Math.min(height, decalOpt.maxTileHeight)) + }; + } + function brushDecal() { + if (ctx) { + ctx.clearRect(0, 0, canvas.width, canvas.height); + if (decalOpt.backgroundColor) { + ctx.fillStyle = decalOpt.backgroundColor; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } + } + var ySum = 0; + for (var i = 0; i < dashArrayY.length; ++i) { + ySum += dashArrayY[i]; + } + if (ySum <= 0) { + // dashArrayY is 0, draw nothing + return; + } + var y = -lineBlockLengthY; + var yId = 0; + var yIdTotal = 0; + var xId0 = 0; + while (y < pSize.height) { + if (yId % 2 === 0) { + var symbolYId = yIdTotal / 2 % symbolArray.length; + var x = 0; + var xId1 = 0; + var xId1Total = 0; + while (x < pSize.width * 2) { + var xSum = 0; + for (var i = 0; i < dashArrayX[xId0].length; ++i) { + xSum += dashArrayX[xId0][i]; + } + if (xSum <= 0) { + // Skip empty line + break; + } + // E.g., [15, 5, 20, 5] draws only for 15 and 20 + if (xId1 % 2 === 0) { + var size = (1 - decalOpt.symbolSize) * 0.5; + var left = x + dashArrayX[xId0][xId1] * size; + var top_1 = y + dashArrayY[yId] * size; + var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize; + var height = dashArrayY[yId] * decalOpt.symbolSize; + var symbolXId = xId1Total / 2 % symbolArray[symbolYId].length; + brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]); + } + x += dashArrayX[xId0][xId1]; + ++xId1Total; + ++xId1; + if (xId1 === dashArrayX[xId0].length) { + xId1 = 0; + } + } + ++xId0; + if (xId0 === dashArrayX.length) { + xId0 = 0; + } + } + y += dashArrayY[yId]; + ++yIdTotal; + ++yId; + if (yId === dashArrayY.length) { + yId = 0; + } + } + function brushSymbol(x, y, width, height, symbolType) { + var scale = isSVG ? 1 : dpr; + var symbol = createSymbol(symbolType, x * scale, y * scale, width * scale, height * scale, decalOpt.color, decalOpt.symbolKeepAspect); + if (isSVG) { + var symbolVNode = zr.painter.renderOneToVNode(symbol); + if (symbolVNode) { + svgRoot.children.push(symbolVNode); + } + } else { + // Paint to canvas for all other renderers. + brushSingle(ctx, symbol); + } + } + } + } + } + /** + * Convert symbol array into normalized array + * + * @param {string | (string | string[])[]} symbol symbol input + * @return {string[][]} normolized symbol array + */ + function normalizeSymbolArray(symbol) { + if (!symbol || symbol.length === 0) { + return [['rect']]; + } + if (isString(symbol)) { + return [[symbol]]; + } + var isAllString = true; + for (var i = 0; i < symbol.length; ++i) { + if (!isString(symbol[i])) { + isAllString = false; + break; + } + } + if (isAllString) { + return normalizeSymbolArray([symbol]); + } + var result = []; + for (var i = 0; i < symbol.length; ++i) { + if (isString(symbol[i])) { + result.push([symbol[i]]); + } else { + result.push(symbol[i]); + } + } + return result; + } + /** + * Convert dash input into dashArray + * + * @param {DecalDashArrayX} dash dash input + * @return {number[][]} normolized dash array + */ + function normalizeDashArrayX(dash) { + if (!dash || dash.length === 0) { + return [[0, 0]]; + } + if (isNumber(dash)) { + var dashValue = Math.ceil(dash); + return [[dashValue, dashValue]]; + } + /** + * [20, 5] should be normalized into [[20, 5]], + * while [20, [5, 10]] should be normalized into [[20, 20], [5, 10]] + */ + var isAllNumber = true; + for (var i = 0; i < dash.length; ++i) { + if (!isNumber(dash[i])) { + isAllNumber = false; + break; + } + } + if (isAllNumber) { + return normalizeDashArrayX([dash]); + } + var result = []; + for (var i = 0; i < dash.length; ++i) { + if (isNumber(dash[i])) { + var dashValue = Math.ceil(dash[i]); + result.push([dashValue, dashValue]); + } else { + var dashValue = map(dash[i], function (n) { + return Math.ceil(n); + }); + if (dashValue.length % 2 === 1) { + // [4, 2, 1] means |---- - -- |---- - -- | + // so normalize it to be [4, 2, 1, 4, 2, 1] + result.push(dashValue.concat(dashValue)); + } else { + result.push(dashValue); + } + } + } + return result; + } + /** + * Convert dash input into dashArray + * + * @param {DecalDashArrayY} dash dash input + * @return {number[]} normolized dash array + */ + function normalizeDashArrayY(dash) { + if (!dash || typeof dash === 'object' && dash.length === 0) { + return [0, 0]; + } + if (isNumber(dash)) { + var dashValue_1 = Math.ceil(dash); + return [dashValue_1, dashValue_1]; + } + var dashValue = map(dash, function (n) { + return Math.ceil(n); + }); + return dash.length % 2 ? dashValue.concat(dashValue) : dashValue; + } + /** + * Get block length of each line. A block is the length of dash line and space. + * For example, a line with [4, 1] has a dash line of 4 and a space of 1 after + * that, so the block length of this line is 5. + * + * @param {number[][]} dash dash array of X or Y + * @return {number[]} block length of each line + */ + function getLineBlockLengthX(dash) { + return map(dash, function (line) { + return getLineBlockLengthY(line); + }); + } + function getLineBlockLengthY(dash) { + var blockLength = 0; + for (var i = 0; i < dash.length; ++i) { + blockLength += dash[i]; + } + if (dash.length % 2 === 1) { + // [4, 2, 1] means |---- - -- |---- - -- | + // So total length is (4 + 2 + 1) * 2 + return blockLength * 2; + } + return blockLength; + } + + function decalVisual(ecModel, api) { + ecModel.eachRawSeries(function (seriesModel) { + if (ecModel.isSeriesFiltered(seriesModel)) { + return; + } + var data = seriesModel.getData(); + if (data.hasItemVisual()) { + data.each(function (idx) { + var decal = data.getItemVisual(idx, 'decal'); + if (decal) { + var itemStyle = data.ensureUniqueItemVisual(idx, 'style'); + itemStyle.decal = createOrUpdatePatternFromDecal(decal, api); + } + }); + } + var decal = data.getVisual('decal'); + if (decal) { + var style = data.getVisual('style'); + style.decal = createOrUpdatePatternFromDecal(decal, api); + } + }); + } + + var lifecycle = new Eventful(); + + // Implementation of exported APIs. For example registerMap, getMap. + // The implementations will be registered when installing the component. + // Avoid these code being bundled to the core module. + var implsStore = {}; + // TODO Type + function registerImpl(name, impl) { + if ("development" !== 'production') { + if (implsStore[name]) { + error("Already has an implementation of " + name + "."); + } + } + implsStore[name] = impl; + } + function getImpl(name) { + if ("development" !== 'production') { + if (!implsStore[name]) { + error("Implementation of " + name + " doesn't exists."); + } + } + return implsStore[name]; + } + + var version$1 = '5.5.0'; + var dependencies = { + zrender: '5.5.0' + }; + var TEST_FRAME_REMAIN_TIME = 1; + var PRIORITY_PROCESSOR_SERIES_FILTER = 800; + // Some data processors depends on the stack result dimension (to calculate data extent). + // So data stack stage should be in front of data processing stage. + var PRIORITY_PROCESSOR_DATASTACK = 900; + // "Data filter" will block the stream, so it should be + // put at the beginning of data processing. + var PRIORITY_PROCESSOR_FILTER = 1000; + var PRIORITY_PROCESSOR_DEFAULT = 2000; + var PRIORITY_PROCESSOR_STATISTIC = 5000; + var PRIORITY_VISUAL_LAYOUT = 1000; + var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100; + var PRIORITY_VISUAL_GLOBAL = 2000; + var PRIORITY_VISUAL_CHART = 3000; + var PRIORITY_VISUAL_COMPONENT = 4000; + // Visual property in data. Greater than `PRIORITY_VISUAL_COMPONENT` to enable to + // overwrite the viusal result of component (like `visualMap`) + // using data item specific setting (like itemStyle.xxx on data item) + var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500; + // Greater than `PRIORITY_VISUAL_CHART_DATA_CUSTOM` to enable to layout based on + // visual result like `symbolSize`. + var PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600; + var PRIORITY_VISUAL_BRUSH = 5000; + var PRIORITY_VISUAL_ARIA = 6000; + var PRIORITY_VISUAL_DECAL = 7000; + var PRIORITY = { + PROCESSOR: { + FILTER: PRIORITY_PROCESSOR_FILTER, + SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER, + STATISTIC: PRIORITY_PROCESSOR_STATISTIC + }, + VISUAL: { + LAYOUT: PRIORITY_VISUAL_LAYOUT, + PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT, + GLOBAL: PRIORITY_VISUAL_GLOBAL, + CHART: PRIORITY_VISUAL_CHART, + POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT, + COMPONENT: PRIORITY_VISUAL_COMPONENT, + BRUSH: PRIORITY_VISUAL_BRUSH, + CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM, + ARIA: PRIORITY_VISUAL_ARIA, + DECAL: PRIORITY_VISUAL_DECAL + } + }; + // Main process have three entries: `setOption`, `dispatchAction` and `resize`, + // where they must not be invoked nestedly, except the only case: invoke + // dispatchAction with updateMethod "none" in main process. + // This flag is used to carry out this rule. + // All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]). + var IN_MAIN_PROCESS_KEY = '__flagInMainProcess'; + var PENDING_UPDATE = '__pendingUpdate'; + var STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus'; + var ACTION_REG = /^[a-zA-Z0-9_]+$/; + var CONNECT_STATUS_KEY = '__connectUpdateStatus'; + var CONNECT_STATUS_PENDING = 0; + var CONNECT_STATUS_UPDATING = 1; + var CONNECT_STATUS_UPDATED = 2; + function createRegisterEventWithLowercaseECharts(method) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + if (this.isDisposed()) { + disposedWarning(this.id); + return; + } + return toLowercaseNameAndCallEventful(this, method, args); + }; + } + function createRegisterEventWithLowercaseMessageCenter(method) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return toLowercaseNameAndCallEventful(this, method, args); + }; + } + function toLowercaseNameAndCallEventful(host, method, args) { + // `args[0]` is event name. Event name is all lowercase. + args[0] = args[0] && args[0].toLowerCase(); + return Eventful.prototype[method].apply(host, args); + } + var MessageCenter = /** @class */function (_super) { + __extends(MessageCenter, _super); + function MessageCenter() { + return _super !== null && _super.apply(this, arguments) || this; + } + return MessageCenter; + }(Eventful); + var messageCenterProto = MessageCenter.prototype; + messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on'); + messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off'); + // --------------------------------------- + // Internal method names for class ECharts + // --------------------------------------- + var prepare; + var prepareView; + var updateDirectly; + var updateMethods; + var doConvertPixel; + var updateStreamModes; + var doDispatchAction; + var flushPendingActions; + var triggerUpdatedEvent; + var bindRenderedEvent; + var bindMouseEvent; + var render; + var renderComponents; + var renderSeries; + var createExtensionAPI; + var enableConnect; + var markStatusToUpdate; + var applyChangedStates; + var ECharts = /** @class */function (_super) { + __extends(ECharts, _super); + function ECharts(dom, + // Theme name or themeOption. + theme, opts) { + var _this = _super.call(this, new ECEventProcessor()) || this; + _this._chartsViews = []; + _this._chartsMap = {}; + _this._componentsViews = []; + _this._componentsMap = {}; + // Can't dispatch action during rendering procedure + _this._pendingActions = []; + opts = opts || {}; + // Get theme by name + if (isString(theme)) { + theme = themeStorage[theme]; + } + _this._dom = dom; + var defaultRenderer = 'canvas'; + var defaultCoarsePointer = 'auto'; + var defaultUseDirtyRect = false; + if ("development" !== 'production') { + var root = /* eslint-disable-next-line */ + env.hasGlobalWindow ? window : global; + if (root) { + defaultRenderer = retrieve2(root.__ECHARTS__DEFAULT__RENDERER__, defaultRenderer); + defaultCoarsePointer = retrieve2(root.__ECHARTS__DEFAULT__COARSE_POINTER, defaultCoarsePointer); + defaultUseDirtyRect = retrieve2(root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__, defaultUseDirtyRect); + } + } + if (opts.ssr) { + registerSSRDataGetter(function (el) { + var ecData = getECData(el); + var dataIndex = ecData.dataIndex; + if (dataIndex == null) { + return; + } + var hashMap = createHashMap(); + hashMap.set('series_index', ecData.seriesIndex); + hashMap.set('data_index', dataIndex); + ecData.ssrType && hashMap.set('ssr_type', ecData.ssrType); + return hashMap; + }); + } + var zr = _this._zr = init(dom, { + renderer: opts.renderer || defaultRenderer, + devicePixelRatio: opts.devicePixelRatio, + width: opts.width, + height: opts.height, + ssr: opts.ssr, + useDirtyRect: retrieve2(opts.useDirtyRect, defaultUseDirtyRect), + useCoarsePointer: retrieve2(opts.useCoarsePointer, defaultCoarsePointer), + pointerSize: opts.pointerSize + }); + _this._ssr = opts.ssr; + // Expect 60 fps. + _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17); + theme = clone(theme); + theme && globalBackwardCompat(theme, true); + _this._theme = theme; + _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG); + _this._coordSysMgr = new CoordinateSystemManager(); + var api = _this._api = createExtensionAPI(_this); + // Sort on demand + function prioritySortFunc(a, b) { + return a.__prio - b.__prio; + } + sort(visualFuncs, prioritySortFunc); + sort(dataProcessorFuncs, prioritySortFunc); + _this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs); + _this._messageCenter = new MessageCenter(); + // Init mouse events + _this._initEvents(); + // In case some people write `window.onresize = chart.resize` + _this.resize = bind(_this.resize, _this); + zr.animation.on('frame', _this._onframe, _this); + bindRenderedEvent(zr, _this); + bindMouseEvent(zr, _this); + // ECharts instance can be used as value. + setAsPrimitive(_this); + return _this; + } + ECharts.prototype._onframe = function () { + if (this._disposed) { + return; + } + applyChangedStates(this); + var scheduler = this._scheduler; + // Lazy update + if (this[PENDING_UPDATE]) { + var silent = this[PENDING_UPDATE].silent; + this[IN_MAIN_PROCESS_KEY] = true; + try { + prepare(this); + updateMethods.update.call(this, null, this[PENDING_UPDATE].updateParams); + } catch (e) { + this[IN_MAIN_PROCESS_KEY] = false; + this[PENDING_UPDATE] = null; + throw e; + } + // At present, in each frame, zrender performs: + // (1) animation step forward. + // (2) trigger('frame') (where this `_onframe` is called) + // (3) zrender flush (render). + // If we do nothing here, since we use `setToFinal: true`, the step (3) above + // will render the final state of the elements before the real animation started. + this._zr.flush(); + this[IN_MAIN_PROCESS_KEY] = false; + this[PENDING_UPDATE] = null; + flushPendingActions.call(this, silent); + triggerUpdatedEvent.call(this, silent); + } + // Avoid do both lazy update and progress in one frame. + else if (scheduler.unfinished) { + // Stream progress. + var remainTime = TEST_FRAME_REMAIN_TIME; + var ecModel = this._model; + var api = this._api; + scheduler.unfinished = false; + do { + var startTime = +new Date(); + scheduler.performSeriesTasks(ecModel); + // Currently dataProcessorFuncs do not check threshold. + scheduler.performDataProcessorTasks(ecModel); + updateStreamModes(this, ecModel); + // Do not update coordinate system here. Because that coord system update in + // each frame is not a good user experience. So we follow the rule that + // the extent of the coordinate system is determined in the first frame (the + // frame is executed immediately after task reset. + // this._coordSysMgr.update(ecModel, api); + // console.log('--- ec frame visual ---', remainTime); + scheduler.performVisualTasks(ecModel); + renderSeries(this, this._model, api, 'remain', {}); + remainTime -= +new Date() - startTime; + } while (remainTime > 0 && scheduler.unfinished); + // Call flush explicitly for trigger finished event. + if (!scheduler.unfinished) { + this._zr.flush(); + } + // Else, zr flushing be ensue within the same frame, + // because zr flushing is after onframe event. + } + }; + + ECharts.prototype.getDom = function () { + return this._dom; + }; + ECharts.prototype.getId = function () { + return this.id; + }; + ECharts.prototype.getZr = function () { + return this._zr; + }; + ECharts.prototype.isSSR = function () { + return this._ssr; + }; + /* eslint-disable-next-line */ + ECharts.prototype.setOption = function (option, notMerge, lazyUpdate) { + if (this[IN_MAIN_PROCESS_KEY]) { + if ("development" !== 'production') { + error('`setOption` should not be called during main process.'); + } + return; + } + if (this._disposed) { + disposedWarning(this.id); + return; + } + var silent; + var replaceMerge; + var transitionOpt; + if (isObject(notMerge)) { + lazyUpdate = notMerge.lazyUpdate; + silent = notMerge.silent; + replaceMerge = notMerge.replaceMerge; + transitionOpt = notMerge.transition; + notMerge = notMerge.notMerge; + } + this[IN_MAIN_PROCESS_KEY] = true; + if (!this._model || notMerge) { + var optionManager = new OptionManager(this._api); + var theme = this._theme; + var ecModel = this._model = new GlobalModel(); + ecModel.scheduler = this._scheduler; + ecModel.ssr = this._ssr; + ecModel.init(null, null, null, theme, this._locale, optionManager); + } + this._model.setOption(option, { + replaceMerge: replaceMerge + }, optionPreprocessorFuncs); + var updateParams = { + seriesTransition: transitionOpt, + optionChanged: true + }; + if (lazyUpdate) { + this[PENDING_UPDATE] = { + silent: silent, + updateParams: updateParams + }; + this[IN_MAIN_PROCESS_KEY] = false; + // `setOption(option, {lazyMode: true})` may be called when zrender has been slept. + // It should wake it up to make sure zrender start to render at the next frame. + this.getZr().wakeUp(); + } else { + try { + prepare(this); + updateMethods.update.call(this, null, updateParams); + } catch (e) { + this[PENDING_UPDATE] = null; + this[IN_MAIN_PROCESS_KEY] = false; + throw e; + } + // Ensure zr refresh sychronously, and then pixel in canvas can be + // fetched after `setOption`. + if (!this._ssr) { + // not use flush when using ssr mode. + this._zr.flush(); + } + this[PENDING_UPDATE] = null; + this[IN_MAIN_PROCESS_KEY] = false; + flushPendingActions.call(this, silent); + triggerUpdatedEvent.call(this, silent); + } + }; + /** + * @deprecated + */ + ECharts.prototype.setTheme = function () { + deprecateLog('ECharts#setTheme() is DEPRECATED in ECharts 3.0'); + }; + // We don't want developers to use getModel directly. + ECharts.prototype.getModel = function () { + return this._model; + }; + ECharts.prototype.getOption = function () { + return this._model && this._model.getOption(); + }; + ECharts.prototype.getWidth = function () { + return this._zr.getWidth(); + }; + ECharts.prototype.getHeight = function () { + return this._zr.getHeight(); + }; + ECharts.prototype.getDevicePixelRatio = function () { + return this._zr.painter.dpr + /* eslint-disable-next-line */ || env.hasGlobalWindow && window.devicePixelRatio || 1; + }; + /** + * Get canvas which has all thing rendered + * @deprecated Use renderToCanvas instead. + */ + ECharts.prototype.getRenderedCanvas = function (opts) { + if ("development" !== 'production') { + deprecateReplaceLog('getRenderedCanvas', 'renderToCanvas'); + } + return this.renderToCanvas(opts); + }; + ECharts.prototype.renderToCanvas = function (opts) { + opts = opts || {}; + var painter = this._zr.painter; + if ("development" !== 'production') { + if (painter.type !== 'canvas') { + throw new Error('renderToCanvas can only be used in the canvas renderer.'); + } + } + return painter.getRenderedCanvas({ + backgroundColor: opts.backgroundColor || this._model.get('backgroundColor'), + pixelRatio: opts.pixelRatio || this.getDevicePixelRatio() + }); + }; + ECharts.prototype.renderToSVGString = function (opts) { + opts = opts || {}; + var painter = this._zr.painter; + if ("development" !== 'production') { + if (painter.type !== 'svg') { + throw new Error('renderToSVGString can only be used in the svg renderer.'); + } + } + return painter.renderToString({ + useViewBox: opts.useViewBox + }); + }; + /** + * Get svg data url + */ + ECharts.prototype.getSvgDataURL = function () { + if (!env.svgSupported) { + return; + } + var zr = this._zr; + var list = zr.storage.getDisplayList(); + // Stop animations + each(list, function (el) { + el.stopAnimation(null, true); + }); + return zr.painter.toDataURL(); + }; + ECharts.prototype.getDataURL = function (opts) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + opts = opts || {}; + var excludeComponents = opts.excludeComponents; + var ecModel = this._model; + var excludesComponentViews = []; + var self = this; + each(excludeComponents, function (componentType) { + ecModel.eachComponent({ + mainType: componentType + }, function (component) { + var view = self._componentsMap[component.__viewId]; + if (!view.group.ignore) { + excludesComponentViews.push(view); + view.group.ignore = true; + } + }); + }); + var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.renderToCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png')); + each(excludesComponentViews, function (view) { + view.group.ignore = false; + }); + return url; + }; + ECharts.prototype.getConnectedDataURL = function (opts) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + var isSvg = opts.type === 'svg'; + var groupId = this.group; + var mathMin = Math.min; + var mathMax = Math.max; + var MAX_NUMBER = Infinity; + if (connectedGroups[groupId]) { + var left_1 = MAX_NUMBER; + var top_1 = MAX_NUMBER; + var right_1 = -MAX_NUMBER; + var bottom_1 = -MAX_NUMBER; + var canvasList_1 = []; + var dpr_1 = opts && opts.pixelRatio || this.getDevicePixelRatio(); + each(instances$1, function (chart, id) { + if (chart.group === groupId) { + var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.renderToCanvas(clone(opts)); + var boundingRect = chart.getDom().getBoundingClientRect(); + left_1 = mathMin(boundingRect.left, left_1); + top_1 = mathMin(boundingRect.top, top_1); + right_1 = mathMax(boundingRect.right, right_1); + bottom_1 = mathMax(boundingRect.bottom, bottom_1); + canvasList_1.push({ + dom: canvas, + left: boundingRect.left, + top: boundingRect.top + }); + } + }); + left_1 *= dpr_1; + top_1 *= dpr_1; + right_1 *= dpr_1; + bottom_1 *= dpr_1; + var width = right_1 - left_1; + var height = bottom_1 - top_1; + var targetCanvas = platformApi.createCanvas(); + var zr_1 = init(targetCanvas, { + renderer: isSvg ? 'svg' : 'canvas' + }); + zr_1.resize({ + width: width, + height: height + }); + if (isSvg) { + var content_1 = ''; + each(canvasList_1, function (item) { + var x = item.left - left_1; + var y = item.top - top_1; + content_1 += '' + item.dom + ''; + }); + zr_1.painter.getSvgRoot().innerHTML = content_1; + if (opts.connectedBackgroundColor) { + zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor); + } + zr_1.refreshImmediately(); + return zr_1.painter.toDataURL(); + } else { + // Background between the charts + if (opts.connectedBackgroundColor) { + zr_1.add(new Rect({ + shape: { + x: 0, + y: 0, + width: width, + height: height + }, + style: { + fill: opts.connectedBackgroundColor + } + })); + } + each(canvasList_1, function (item) { + var img = new ZRImage({ + style: { + x: item.left * dpr_1 - left_1, + y: item.top * dpr_1 - top_1, + image: item.dom + } + }); + zr_1.add(img); + }); + zr_1.refreshImmediately(); + return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png')); + } + } else { + return this.getDataURL(opts); + } + }; + ECharts.prototype.convertToPixel = function (finder, value) { + return doConvertPixel(this, 'convertToPixel', finder, value); + }; + ECharts.prototype.convertFromPixel = function (finder, value) { + return doConvertPixel(this, 'convertFromPixel', finder, value); + }; + /** + * Is the specified coordinate systems or components contain the given pixel point. + * @param {Array|number} value + * @return {boolean} result + */ + ECharts.prototype.containPixel = function (finder, value) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + var ecModel = this._model; + var result; + var findResult = parseFinder(ecModel, finder); + each(findResult, function (models, key) { + key.indexOf('Models') >= 0 && each(models, function (model) { + var coordSys = model.coordinateSystem; + if (coordSys && coordSys.containPoint) { + result = result || !!coordSys.containPoint(value); + } else if (key === 'seriesModels') { + var view = this._chartsMap[model.__viewId]; + if (view && view.containPoint) { + result = result || view.containPoint(value, model); + } else { + if ("development" !== 'production') { + warn(key + ': ' + (view ? 'The found component do not support containPoint.' : 'No view mapping to the found component.')); + } + } + } else { + if ("development" !== 'production') { + warn(key + ': containPoint is not supported'); + } + } + }, this); + }, this); + return !!result; + }; + /** + * Get visual from series or data. + * @param finder + * If string, e.g., 'series', means {seriesIndex: 0}. + * If Object, could contain some of these properties below: + * { + * seriesIndex / seriesId / seriesName, + * dataIndex / dataIndexInside + * } + * If dataIndex is not specified, series visual will be fetched, + * but not data item visual. + * If all of seriesIndex, seriesId, seriesName are not specified, + * visual will be fetched from first series. + * @param visualType 'color', 'symbol', 'symbolSize' + */ + ECharts.prototype.getVisual = function (finder, visualType) { + var ecModel = this._model; + var parsedFinder = parseFinder(ecModel, finder, { + defaultMainType: 'series' + }); + var seriesModel = parsedFinder.seriesModel; + if ("development" !== 'production') { + if (!seriesModel) { + warn('There is no specified series model'); + } + } + var data = seriesModel.getData(); + var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside') ? parsedFinder.dataIndexInside : parsedFinder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(parsedFinder.dataIndex) : null; + return dataIndexInside != null ? getItemVisualFromData(data, dataIndexInside, visualType) : getVisualFromData(data, visualType); + }; + /** + * Get view of corresponding component model + */ + ECharts.prototype.getViewOfComponentModel = function (componentModel) { + return this._componentsMap[componentModel.__viewId]; + }; + /** + * Get view of corresponding series model + */ + ECharts.prototype.getViewOfSeriesModel = function (seriesModel) { + return this._chartsMap[seriesModel.__viewId]; + }; + ECharts.prototype._initEvents = function () { + var _this = this; + each(MOUSE_EVENT_NAMES, function (eveName) { + var handler = function (e) { + var ecModel = _this.getModel(); + var el = e.target; + var params; + var isGlobalOut = eveName === 'globalout'; + // no e.target when 'globalout'. + if (isGlobalOut) { + params = {}; + } else { + el && findEventDispatcher(el, function (parent) { + var ecData = getECData(parent); + if (ecData && ecData.dataIndex != null) { + var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex); + params = dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType, el) || {}; + return true; + } + // If element has custom eventData of components + else if (ecData.eventData) { + params = extend({}, ecData.eventData); + return true; + } + }, true); + } + // Contract: if params prepared in mouse event, + // these properties must be specified: + // { + // componentType: string (component main type) + // componentIndex: number + // } + // Otherwise event query can not work. + if (params) { + var componentType = params.componentType; + var componentIndex = params.componentIndex; + // Special handling for historic reason: when trigger by + // markLine/markPoint/markArea, the componentType is + // 'markLine'/'markPoint'/'markArea', but we should better + // enable them to be queried by seriesIndex, since their + // option is set in each series. + if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') { + componentType = 'series'; + componentIndex = params.seriesIndex; + } + var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex); + var view = model && _this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]; + if ("development" !== 'production') { + // `event.componentType` and `event[componentTpype + 'Index']` must not + // be missed, otherwise there is no way to distinguish source component. + // See `dataFormat.getDataParams`. + if (!isGlobalOut && !(model && view)) { + warn('model or view can not be found by params'); + } + } + params.event = e; + params.type = eveName; + _this._$eventProcessor.eventInfo = { + targetEl: el, + packedEvent: params, + model: model, + view: view + }; + _this.trigger(eveName, params); + } + }; + // Consider that some component (like tooltip, brush, ...) + // register zr event handler, but user event handler might + // do anything, such as call `setOption` or `dispatchAction`, + // which probably update any of the content and probably + // cause problem if it is called previous other inner handlers. + handler.zrEventfulCallAtLast = true; + _this._zr.on(eveName, handler, _this); + }); + each(eventActionMap, function (actionType, eventType) { + _this._messageCenter.on(eventType, function (event) { + this.trigger(eventType, event); + }, _this); + }); + // Extra events + // TODO register? + each(['selectchanged'], function (eventType) { + _this._messageCenter.on(eventType, function (event) { + this.trigger(eventType, event); + }, _this); + }); + handleLegacySelectEvents(this._messageCenter, this, this._api); + }; + ECharts.prototype.isDisposed = function () { + return this._disposed; + }; + ECharts.prototype.clear = function () { + if (this._disposed) { + disposedWarning(this.id); + return; + } + this.setOption({ + series: [] + }, true); + }; + ECharts.prototype.dispose = function () { + if (this._disposed) { + disposedWarning(this.id); + return; + } + this._disposed = true; + var dom = this.getDom(); + if (dom) { + setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, ''); + } + var chart = this; + var api = chart._api; + var ecModel = chart._model; + each(chart._componentsViews, function (component) { + component.dispose(ecModel, api); + }); + each(chart._chartsViews, function (chart) { + chart.dispose(ecModel, api); + }); + // Dispose after all views disposed + chart._zr.dispose(); + // Set properties to null. + // To reduce the memory cost in case the top code still holds this instance unexpectedly. + chart._dom = chart._model = chart._chartsMap = chart._componentsMap = chart._chartsViews = chart._componentsViews = chart._scheduler = chart._api = chart._zr = chart._throttledZrFlush = chart._theme = chart._coordSysMgr = chart._messageCenter = null; + delete instances$1[chart.id]; + }; + /** + * Resize the chart + */ + ECharts.prototype.resize = function (opts) { + if (this[IN_MAIN_PROCESS_KEY]) { + if ("development" !== 'production') { + error('`resize` should not be called during main process.'); + } + return; + } + if (this._disposed) { + disposedWarning(this.id); + return; + } + this._zr.resize(opts); + var ecModel = this._model; + // Resize loading effect + this._loadingFX && this._loadingFX.resize(); + if (!ecModel) { + return; + } + var needPrepare = ecModel.resetOption('media'); + var silent = opts && opts.silent; + // There is some real cases that: + // chart.setOption(option, { lazyUpdate: true }); + // chart.resize(); + if (this[PENDING_UPDATE]) { + if (silent == null) { + silent = this[PENDING_UPDATE].silent; + } + needPrepare = true; + this[PENDING_UPDATE] = null; + } + this[IN_MAIN_PROCESS_KEY] = true; + try { + needPrepare && prepare(this); + updateMethods.update.call(this, { + type: 'resize', + animation: extend({ + // Disable animation + duration: 0 + }, opts && opts.animation) + }); + } catch (e) { + this[IN_MAIN_PROCESS_KEY] = false; + throw e; + } + this[IN_MAIN_PROCESS_KEY] = false; + flushPendingActions.call(this, silent); + triggerUpdatedEvent.call(this, silent); + }; + ECharts.prototype.showLoading = function (name, cfg) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + if (isObject(name)) { + cfg = name; + name = ''; + } + name = name || 'default'; + this.hideLoading(); + if (!loadingEffects[name]) { + if ("development" !== 'production') { + warn('Loading effects ' + name + ' not exists.'); + } + return; + } + var el = loadingEffects[name](this._api, cfg); + var zr = this._zr; + this._loadingFX = el; + zr.add(el); + }; + /** + * Hide loading effect + */ + ECharts.prototype.hideLoading = function () { + if (this._disposed) { + disposedWarning(this.id); + return; + } + this._loadingFX && this._zr.remove(this._loadingFX); + this._loadingFX = null; + }; + ECharts.prototype.makeActionFromEvent = function (eventObj) { + var payload = extend({}, eventObj); + payload.type = eventActionMap[eventObj.type]; + return payload; + }; + /** + * @param opt If pass boolean, means opt.silent + * @param opt.silent Default `false`. Whether trigger events. + * @param opt.flush Default `undefined`. + * true: Flush immediately, and then pixel in canvas can be fetched + * immediately. Caution: it might affect performance. + * false: Not flush. + * undefined: Auto decide whether perform flush. + */ + ECharts.prototype.dispatchAction = function (payload, opt) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + if (!isObject(opt)) { + opt = { + silent: !!opt + }; + } + if (!actions[payload.type]) { + return; + } + // Avoid dispatch action before setOption. Especially in `connect`. + if (!this._model) { + return; + } + // May dispatchAction in rendering procedure + if (this[IN_MAIN_PROCESS_KEY]) { + this._pendingActions.push(payload); + return; + } + var silent = opt.silent; + doDispatchAction.call(this, payload, silent); + var flush = opt.flush; + if (flush) { + this._zr.flush(); + } else if (flush !== false && env.browser.weChat) { + // In WeChat embedded browser, `requestAnimationFrame` and `setInterval` + // hang when sliding page (on touch event), which cause that zr does not + // refresh until user interaction finished, which is not expected. + // But `dispatchAction` may be called too frequently when pan on touch + // screen, which impacts performance if do not throttle them. + this._throttledZrFlush(); + } + flushPendingActions.call(this, silent); + triggerUpdatedEvent.call(this, silent); + }; + ECharts.prototype.updateLabelLayout = function () { + lifecycle.trigger('series:layoutlabels', this._model, this._api, { + // Not adding series labels. + // TODO + updatedSeries: [] + }); + }; + ECharts.prototype.appendData = function (params) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + var seriesIndex = params.seriesIndex; + var ecModel = this.getModel(); + var seriesModel = ecModel.getSeriesByIndex(seriesIndex); + if ("development" !== 'production') { + assert(params.data && seriesModel); + } + seriesModel.appendData(params); + // Note: `appendData` does not support that update extent of coordinate + // system, util some scenario require that. In the expected usage of + // `appendData`, the initial extent of coordinate system should better + // be fixed by axis `min`/`max` setting or initial data, otherwise if + // the extent changed while `appendData`, the location of the painted + // graphic elements have to be changed, which make the usage of + // `appendData` meaningless. + this._scheduler.unfinished = true; + this.getZr().wakeUp(); + }; + // A work around for no `internal` modifier in ts yet but + // need to strictly hide private methods to JS users. + ECharts.internalField = function () { + prepare = function (ecIns) { + var scheduler = ecIns._scheduler; + scheduler.restorePipelines(ecIns._model); + scheduler.prepareStageTasks(); + prepareView(ecIns, true); + prepareView(ecIns, false); + scheduler.plan(); + }; + /** + * Prepare view instances of charts and components + */ + prepareView = function (ecIns, isComponent) { + var ecModel = ecIns._model; + var scheduler = ecIns._scheduler; + var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews; + var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap; + var zr = ecIns._zr; + var api = ecIns._api; + for (var i = 0; i < viewList.length; i++) { + viewList[i].__alive = false; + } + isComponent ? ecModel.eachComponent(function (componentType, model) { + componentType !== 'series' && doPrepare(model); + }) : ecModel.eachSeries(doPrepare); + function doPrepare(model) { + // By default view will be reused if possible for the case that `setOption` with "notMerge" + // mode and need to enable transition animation. (Usually, when they have the same id, or + // especially no id but have the same type & name & index. See the `model.id` generation + // rule in `makeIdAndName` and `viewId` generation rule here). + // But in `replaceMerge` mode, this feature should be able to disabled when it is clear that + // the new model has nothing to do with the old model. + var requireNewView = model.__requireNewView; + // This command should not work twice. + model.__requireNewView = false; + // Consider: id same and type changed. + var viewId = '_ec_' + model.id + '_' + model.type; + var view = !requireNewView && viewMap[viewId]; + if (!view) { + var classType = parseClassType(model.type); + var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : + // FIXME:TS + // (ChartView as ChartViewConstructor).getClass('series', classType.sub) + // For backward compat, still support a chart type declared as only subType + // like "liquidfill", but recommend "series.liquidfill" + // But need a base class to make a type series. + ChartView.getClass(classType.sub); + if ("development" !== 'production') { + assert(Clazz, classType.sub + ' does not exist.'); + } + view = new Clazz(); + view.init(ecModel, api); + viewMap[viewId] = view; + viewList.push(view); + zr.add(view.group); + } + model.__viewId = view.__id = viewId; + view.__alive = true; + view.__model = model; + view.group.__ecComponentInfo = { + mainType: model.mainType, + index: model.componentIndex + }; + !isComponent && scheduler.prepareView(view, model, ecModel, api); + } + for (var i = 0; i < viewList.length;) { + var view = viewList[i]; + if (!view.__alive) { + !isComponent && view.renderTask.dispose(); + zr.remove(view.group); + view.dispose(ecModel, api); + viewList.splice(i, 1); + if (viewMap[view.__id] === view) { + delete viewMap[view.__id]; + } + view.__id = view.group.__ecComponentInfo = null; + } else { + i++; + } + } + }; + updateDirectly = function (ecIns, method, payload, mainType, subType) { + var ecModel = ecIns._model; + ecModel.setUpdatePayload(payload); + // broadcast + if (!mainType) { + // FIXME + // Chart will not be update directly here, except set dirty. + // But there is no such scenario now. + each([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView); + return; + } + var query = {}; + query[mainType + 'Id'] = payload[mainType + 'Id']; + query[mainType + 'Index'] = payload[mainType + 'Index']; + query[mainType + 'Name'] = payload[mainType + 'Name']; + var condition = { + mainType: mainType, + query: query + }; + subType && (condition.subType = subType); // subType may be '' by parseClassType; + var excludeSeriesId = payload.excludeSeriesId; + var excludeSeriesIdMap; + if (excludeSeriesId != null) { + excludeSeriesIdMap = createHashMap(); + each(normalizeToArray(excludeSeriesId), function (id) { + var modelId = convertOptionIdName(id, null); + if (modelId != null) { + excludeSeriesIdMap.set(modelId, true); + } + }); + } + // If dispatchAction before setOption, do nothing. + ecModel && ecModel.eachComponent(condition, function (model) { + var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null; + if (isExcluded) { + return; + } + if (isHighDownPayload(payload)) { + if (model instanceof SeriesModel) { + if (payload.type === HIGHLIGHT_ACTION_TYPE && !payload.notBlur && !model.get(['emphasis', 'disabled'])) { + blurSeriesFromHighlightPayload(model, payload, ecIns._api); + } + } else { + var _a = findComponentHighDownDispatchers(model.mainType, model.componentIndex, payload.name, ecIns._api), + focusSelf = _a.focusSelf, + dispatchers = _a.dispatchers; + if (payload.type === HIGHLIGHT_ACTION_TYPE && focusSelf && !payload.notBlur) { + blurComponent(model.mainType, model.componentIndex, ecIns._api); + } + // PENDING: + // Whether to put this "enter emphasis" code in `ComponentView`, + // which will be the same as `ChartView` but might be not necessary + // and will be far from this logic. + if (dispatchers) { + each(dispatchers, function (dispatcher) { + payload.type === HIGHLIGHT_ACTION_TYPE ? enterEmphasis(dispatcher) : leaveEmphasis(dispatcher); + }); + } + } + } else if (isSelectChangePayload(payload)) { + // TODO geo + if (model instanceof SeriesModel) { + toggleSelectionFromPayload(model, payload, ecIns._api); + updateSeriesElementSelection(model); + markStatusToUpdate(ecIns); + } + } + }, ecIns); + ecModel && ecModel.eachComponent(condition, function (model) { + var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null; + if (isExcluded) { + return; + } + callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]); + }, ecIns); + function callView(view) { + view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload); + } + }; + updateMethods = { + prepareAndUpdate: function (payload) { + prepare(this); + updateMethods.update.call(this, payload, { + // Needs to mark option changed if newOption is given. + // It's from MagicType. + // TODO If use a separate flag optionChanged in payload? + optionChanged: payload.newOption != null + }); + }, + update: function (payload, updateParams) { + var ecModel = this._model; + var api = this._api; + var zr = this._zr; + var coordSysMgr = this._coordSysMgr; + var scheduler = this._scheduler; + // update before setOption + if (!ecModel) { + return; + } + ecModel.setUpdatePayload(payload); + scheduler.restoreData(ecModel, payload); + scheduler.performSeriesTasks(ecModel); + // TODO + // Save total ecModel here for undo/redo (after restoring data and before processing data). + // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call. + // Create new coordinate system each update + // In LineView may save the old coordinate system and use it to get the original point. + coordSysMgr.create(ecModel, api); + scheduler.performDataProcessorTasks(ecModel, payload); + // Current stream render is not supported in data process. So we can update + // stream modes after data processing, where the filtered data is used to + // determine whether to use progressive rendering. + updateStreamModes(this, ecModel); + // We update stream modes before coordinate system updated, then the modes info + // can be fetched when coord sys updating (consider the barGrid extent fix). But + // the drawback is the full coord info can not be fetched. Fortunately this full + // coord is not required in stream mode updater currently. + coordSysMgr.update(ecModel, api); + clearColorPalette(ecModel); + scheduler.performVisualTasks(ecModel, payload); + render(this, ecModel, api, payload, updateParams); + // Set background + var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; + var darkMode = ecModel.get('darkMode'); + zr.setBackgroundColor(backgroundColor); + // Force set dark mode. + if (darkMode != null && darkMode !== 'auto') { + zr.setDarkMode(darkMode); + } + lifecycle.trigger('afterupdate', ecModel, api); + }, + updateTransform: function (payload) { + var _this = this; + var ecModel = this._model; + var api = this._api; + // update before setOption + if (!ecModel) { + return; + } + ecModel.setUpdatePayload(payload); + // ChartView.markUpdateMethod(payload, 'updateTransform'); + var componentDirtyList = []; + ecModel.eachComponent(function (componentType, componentModel) { + if (componentType === 'series') { + return; + } + var componentView = _this.getViewOfComponentModel(componentModel); + if (componentView && componentView.__alive) { + if (componentView.updateTransform) { + var result = componentView.updateTransform(componentModel, ecModel, api, payload); + result && result.update && componentDirtyList.push(componentView); + } else { + componentDirtyList.push(componentView); + } + } + }); + var seriesDirtyMap = createHashMap(); + ecModel.eachSeries(function (seriesModel) { + var chartView = _this._chartsMap[seriesModel.__viewId]; + if (chartView.updateTransform) { + var result = chartView.updateTransform(seriesModel, ecModel, api, payload); + result && result.update && seriesDirtyMap.set(seriesModel.uid, 1); + } else { + seriesDirtyMap.set(seriesModel.uid, 1); + } + }); + clearColorPalette(ecModel); + // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline. + // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true); + this._scheduler.performVisualTasks(ecModel, payload, { + setDirty: true, + dirtyMap: seriesDirtyMap + }); + // Currently, not call render of components. Geo render cost a lot. + // renderComponents(ecIns, ecModel, api, payload, componentDirtyList); + renderSeries(this, ecModel, api, payload, {}, seriesDirtyMap); + lifecycle.trigger('afterupdate', ecModel, api); + }, + updateView: function (payload) { + var ecModel = this._model; + // update before setOption + if (!ecModel) { + return; + } + ecModel.setUpdatePayload(payload); + ChartView.markUpdateMethod(payload, 'updateView'); + clearColorPalette(ecModel); + // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline. + this._scheduler.performVisualTasks(ecModel, payload, { + setDirty: true + }); + render(this, ecModel, this._api, payload, {}); + lifecycle.trigger('afterupdate', ecModel, this._api); + }, + updateVisual: function (payload) { + // updateMethods.update.call(this, payload); + var _this = this; + var ecModel = this._model; + // update before setOption + if (!ecModel) { + return; + } + ecModel.setUpdatePayload(payload); + // clear all visual + ecModel.eachSeries(function (seriesModel) { + seriesModel.getData().clearAllVisual(); + }); + // Perform visual + ChartView.markUpdateMethod(payload, 'updateVisual'); + clearColorPalette(ecModel); + // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline. + this._scheduler.performVisualTasks(ecModel, payload, { + visualType: 'visual', + setDirty: true + }); + ecModel.eachComponent(function (componentType, componentModel) { + if (componentType !== 'series') { + var componentView = _this.getViewOfComponentModel(componentModel); + componentView && componentView.__alive && componentView.updateVisual(componentModel, ecModel, _this._api, payload); + } + }); + ecModel.eachSeries(function (seriesModel) { + var chartView = _this._chartsMap[seriesModel.__viewId]; + chartView.updateVisual(seriesModel, ecModel, _this._api, payload); + }); + lifecycle.trigger('afterupdate', ecModel, this._api); + }, + updateLayout: function (payload) { + updateMethods.update.call(this, payload); + } + }; + doConvertPixel = function (ecIns, methodName, finder, value) { + if (ecIns._disposed) { + disposedWarning(ecIns.id); + return; + } + var ecModel = ecIns._model; + var coordSysList = ecIns._coordSysMgr.getCoordinateSystems(); + var result; + var parsedFinder = parseFinder(ecModel, finder); + for (var i = 0; i < coordSysList.length; i++) { + var coordSys = coordSysList[i]; + if (coordSys[methodName] && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) { + return result; + } + } + if ("development" !== 'production') { + warn('No coordinate system that supports ' + methodName + ' found by the given finder.'); + } + }; + updateStreamModes = function (ecIns, ecModel) { + var chartsMap = ecIns._chartsMap; + var scheduler = ecIns._scheduler; + ecModel.eachSeries(function (seriesModel) { + scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]); + }); + }; + doDispatchAction = function (payload, silent) { + var _this = this; + var ecModel = this.getModel(); + var payloadType = payload.type; + var escapeConnect = payload.escapeConnect; + var actionWrap = actions[payloadType]; + var actionInfo = actionWrap.actionInfo; + var cptTypeTmp = (actionInfo.update || 'update').split(':'); + var updateMethod = cptTypeTmp.pop(); + var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]); + this[IN_MAIN_PROCESS_KEY] = true; + var payloads = [payload]; + var batched = false; + // Batch action + if (payload.batch) { + batched = true; + payloads = map(payload.batch, function (item) { + item = defaults(extend({}, item), payload); + item.batch = null; + return item; + }); + } + var eventObjBatch = []; + var eventObj; + var isSelectChange = isSelectChangePayload(payload); + var isHighDown = isHighDownPayload(payload); + // Only leave blur once if there are multiple batches. + if (isHighDown) { + allLeaveBlur(this._api); + } + each(payloads, function (batchItem) { + // Action can specify the event by return it. + eventObj = actionWrap.action(batchItem, _this._model, _this._api); + // Emit event outside + eventObj = eventObj || extend({}, batchItem); + // Convert type to eventType + eventObj.type = actionInfo.event || eventObj.type; + eventObjBatch.push(eventObj); + // light update does not perform data process, layout and visual. + if (isHighDown) { + var _a = preParseFinder(payload), + queryOptionMap = _a.queryOptionMap, + mainTypeSpecified = _a.mainTypeSpecified; + var componentMainType = mainTypeSpecified ? queryOptionMap.keys()[0] : 'series'; + updateDirectly(_this, updateMethod, batchItem, componentMainType); + markStatusToUpdate(_this); + } else if (isSelectChange) { + // At present `dispatchAction({ type: 'select', ... })` is not supported on components. + // geo still use 'geoselect'. + updateDirectly(_this, updateMethod, batchItem, 'series'); + markStatusToUpdate(_this); + } else if (cptType) { + updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub); + } + }); + if (updateMethod !== 'none' && !isHighDown && !isSelectChange && !cptType) { + try { + // Still dirty + if (this[PENDING_UPDATE]) { + prepare(this); + updateMethods.update.call(this, payload); + this[PENDING_UPDATE] = null; + } else { + updateMethods[updateMethod].call(this, payload); + } + } catch (e) { + this[IN_MAIN_PROCESS_KEY] = false; + throw e; + } + } + // Follow the rule of action batch + if (batched) { + eventObj = { + type: actionInfo.event || payloadType, + escapeConnect: escapeConnect, + batch: eventObjBatch + }; + } else { + eventObj = eventObjBatch[0]; + } + this[IN_MAIN_PROCESS_KEY] = false; + if (!silent) { + var messageCenter = this._messageCenter; + messageCenter.trigger(eventObj.type, eventObj); + // Extra triggered 'selectchanged' event + if (isSelectChange) { + var newObj = { + type: 'selectchanged', + escapeConnect: escapeConnect, + selected: getAllSelectedIndices(ecModel), + isFromClick: payload.isFromClick || false, + fromAction: payload.type, + fromActionPayload: payload + }; + messageCenter.trigger(newObj.type, newObj); + } + } + }; + flushPendingActions = function (silent) { + var pendingActions = this._pendingActions; + while (pendingActions.length) { + var payload = pendingActions.shift(); + doDispatchAction.call(this, payload, silent); + } + }; + triggerUpdatedEvent = function (silent) { + !silent && this.trigger('updated'); + }; + /** + * Event `rendered` is triggered when zr + * rendered. It is useful for realtime + * snapshot (reflect animation). + * + * Event `finished` is triggered when: + * (1) zrender rendering finished. + * (2) initial animation finished. + * (3) progressive rendering finished. + * (4) no pending action. + * (5) no delayed setOption needs to be processed. + */ + bindRenderedEvent = function (zr, ecIns) { + zr.on('rendered', function (params) { + ecIns.trigger('rendered', params); + // The `finished` event should not be triggered repeatedly, + // so it should only be triggered when rendering indeed happens + // in zrender. (Consider the case that dipatchAction is keep + // triggering when mouse move). + if ( + // Although zr is dirty if initial animation is not finished + // and this checking is called on frame, we also check + // animation finished for robustness. + zr.animation.isFinished() && !ecIns[PENDING_UPDATE] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) { + ecIns.trigger('finished'); + } + }); + }; + bindMouseEvent = function (zr, ecIns) { + zr.on('mouseover', function (e) { + var el = e.target; + var dispatcher = findEventDispatcher(el, isHighDownDispatcher); + if (dispatcher) { + handleGlobalMouseOverForHighDown(dispatcher, e, ecIns._api); + markStatusToUpdate(ecIns); + } + }).on('mouseout', function (e) { + var el = e.target; + var dispatcher = findEventDispatcher(el, isHighDownDispatcher); + if (dispatcher) { + handleGlobalMouseOutForHighDown(dispatcher, e, ecIns._api); + markStatusToUpdate(ecIns); + } + }).on('click', function (e) { + var el = e.target; + var dispatcher = findEventDispatcher(el, function (target) { + return getECData(target).dataIndex != null; + }, true); + if (dispatcher) { + var actionType = dispatcher.selected ? 'unselect' : 'select'; + var ecData = getECData(dispatcher); + ecIns._api.dispatchAction({ + type: actionType, + dataType: ecData.dataType, + dataIndexInside: ecData.dataIndex, + seriesIndex: ecData.seriesIndex, + isFromClick: true + }); + } + }); + }; + function clearColorPalette(ecModel) { + ecModel.clearColorPalette(); + ecModel.eachSeries(function (seriesModel) { + seriesModel.clearColorPalette(); + }); + } + // Allocate zlevels for series and components + function allocateZlevels(ecModel) { + var componentZLevels = []; + var seriesZLevels = []; + var hasSeparateZLevel = false; + ecModel.eachComponent(function (componentType, componentModel) { + var zlevel = componentModel.get('zlevel') || 0; + var z = componentModel.get('z') || 0; + var zlevelKey = componentModel.getZLevelKey(); + hasSeparateZLevel = hasSeparateZLevel || !!zlevelKey; + (componentType === 'series' ? seriesZLevels : componentZLevels).push({ + zlevel: zlevel, + z: z, + idx: componentModel.componentIndex, + type: componentType, + key: zlevelKey + }); + }); + if (hasSeparateZLevel) { + // Series after component + var zLevels = componentZLevels.concat(seriesZLevels); + var lastSeriesZLevel_1; + var lastSeriesKey_1; + sort(zLevels, function (a, b) { + if (a.zlevel === b.zlevel) { + return a.z - b.z; + } + return a.zlevel - b.zlevel; + }); + each(zLevels, function (item) { + var componentModel = ecModel.getComponent(item.type, item.idx); + var zlevel = item.zlevel; + var key = item.key; + if (lastSeriesZLevel_1 != null) { + zlevel = Math.max(lastSeriesZLevel_1, zlevel); + } + if (key) { + if (zlevel === lastSeriesZLevel_1 && key !== lastSeriesKey_1) { + zlevel++; + } + lastSeriesKey_1 = key; + } else if (lastSeriesKey_1) { + if (zlevel === lastSeriesZLevel_1) { + zlevel++; + } + lastSeriesKey_1 = ''; + } + lastSeriesZLevel_1 = zlevel; + componentModel.setZLevel(zlevel); + }); + } + } + render = function (ecIns, ecModel, api, payload, updateParams) { + allocateZlevels(ecModel); + renderComponents(ecIns, ecModel, api, payload, updateParams); + each(ecIns._chartsViews, function (chart) { + chart.__alive = false; + }); + renderSeries(ecIns, ecModel, api, payload, updateParams); + // Remove groups of unrendered charts + each(ecIns._chartsViews, function (chart) { + if (!chart.__alive) { + chart.remove(ecModel, api); + } + }); + }; + renderComponents = function (ecIns, ecModel, api, payload, updateParams, dirtyList) { + each(dirtyList || ecIns._componentsViews, function (componentView) { + var componentModel = componentView.__model; + clearStates(componentModel, componentView); + componentView.render(componentModel, ecModel, api, payload); + updateZ(componentModel, componentView); + updateStates(componentModel, componentView); + }); + }; + /** + * Render each chart and component + */ + renderSeries = function (ecIns, ecModel, api, payload, updateParams, dirtyMap) { + // Render all charts + var scheduler = ecIns._scheduler; + updateParams = extend(updateParams || {}, { + updatedSeries: ecModel.getSeries() + }); + // TODO progressive? + lifecycle.trigger('series:beforeupdate', ecModel, api, updateParams); + var unfinished = false; + ecModel.eachSeries(function (seriesModel) { + var chartView = ecIns._chartsMap[seriesModel.__viewId]; + chartView.__alive = true; + var renderTask = chartView.renderTask; + scheduler.updatePayload(renderTask, payload); + // TODO states on marker. + clearStates(seriesModel, chartView); + if (dirtyMap && dirtyMap.get(seriesModel.uid)) { + renderTask.dirty(); + } + if (renderTask.perform(scheduler.getPerformArgs(renderTask))) { + unfinished = true; + } + chartView.group.silent = !!seriesModel.get('silent'); + // Should not call markRedraw on group, because it will disable zrender + // incremental render (always render from the __startIndex each frame) + // chartView.group.markRedraw(); + updateBlend(seriesModel, chartView); + updateSeriesElementSelection(seriesModel); + }); + scheduler.unfinished = unfinished || scheduler.unfinished; + lifecycle.trigger('series:layoutlabels', ecModel, api, updateParams); + // transition after label is layouted. + lifecycle.trigger('series:transition', ecModel, api, updateParams); + ecModel.eachSeries(function (seriesModel) { + var chartView = ecIns._chartsMap[seriesModel.__viewId]; + // Update Z after labels updated. Before applying states. + updateZ(seriesModel, chartView); + // NOTE: Update states after label is updated. + // label should be in normal status when layouting. + updateStates(seriesModel, chartView); + }); + // If use hover layer + updateHoverLayerStatus(ecIns, ecModel); + lifecycle.trigger('series:afterupdate', ecModel, api, updateParams); + }; + markStatusToUpdate = function (ecIns) { + ecIns[STATUS_NEEDS_UPDATE_KEY] = true; + // Wake up zrender if it's sleep. Let it update states in the next frame. + ecIns.getZr().wakeUp(); + }; + applyChangedStates = function (ecIns) { + if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) { + return; + } + ecIns.getZr().storage.traverse(function (el) { + // Not applied on removed elements, it may still in fading. + if (isElementRemoved(el)) { + return; + } + applyElementStates(el); + }); + ecIns[STATUS_NEEDS_UPDATE_KEY] = false; + }; + function applyElementStates(el) { + var newStates = []; + var oldStates = el.currentStates; + // Keep other states. + for (var i = 0; i < oldStates.length; i++) { + var stateName = oldStates[i]; + if (!(stateName === 'emphasis' || stateName === 'blur' || stateName === 'select')) { + newStates.push(stateName); + } + } + // Only use states when it's exists. + if (el.selected && el.states.select) { + newStates.push('select'); + } + if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) { + newStates.push('emphasis'); + } else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) { + newStates.push('blur'); + } + el.useStates(newStates); + } + function updateHoverLayerStatus(ecIns, ecModel) { + var zr = ecIns._zr; + var storage = zr.storage; + var elCount = 0; + storage.traverse(function (el) { + if (!el.isGroup) { + elCount++; + } + }); + if (elCount > ecModel.get('hoverLayerThreshold') && !env.node && !env.worker) { + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.preventUsingHoverLayer) { + return; + } + var chartView = ecIns._chartsMap[seriesModel.__viewId]; + if (chartView.__alive) { + chartView.eachRendered(function (el) { + if (el.states.emphasis) { + el.states.emphasis.hoverLayer = true; + } + }); + } + }); + } + } + /** + * Update chart and blend. + */ + function updateBlend(seriesModel, chartView) { + var blendMode = seriesModel.get('blendMode') || null; + chartView.eachRendered(function (el) { + // FIXME marker and other components + if (!el.isGroup) { + // DON'T mark the element dirty. In case element is incremental and don't want to rerender. + el.style.blend = blendMode; + } + }); + } + function updateZ(model, view) { + if (model.preventAutoZ) { + return; + } + var z = model.get('z') || 0; + var zlevel = model.get('zlevel') || 0; + // Set z and zlevel + view.eachRendered(function (el) { + doUpdateZ(el, z, zlevel, -Infinity); + // Don't traverse the children because it has been traversed in _updateZ. + return true; + }); + } + function doUpdateZ(el, z, zlevel, maxZ2) { + // Group may also have textContent + var label = el.getTextContent(); + var labelLine = el.getTextGuideLine(); + var isGroup = el.isGroup; + if (isGroup) { + // set z & zlevel of children elements of Group + var children = el.childrenRef(); + for (var i = 0; i < children.length; i++) { + maxZ2 = Math.max(doUpdateZ(children[i], z, zlevel, maxZ2), maxZ2); + } + } else { + // not Group + el.z = z; + el.zlevel = zlevel; + maxZ2 = Math.max(el.z2, maxZ2); + } + // always set z and zlevel if label/labelLine exists + if (label) { + label.z = z; + label.zlevel = zlevel; + // lift z2 of text content + // TODO if el.emphasis.z2 is spcefied, what about textContent. + isFinite(maxZ2) && (label.z2 = maxZ2 + 2); + } + if (labelLine) { + var textGuideLineConfig = el.textGuideLineConfig; + labelLine.z = z; + labelLine.zlevel = zlevel; + isFinite(maxZ2) && (labelLine.z2 = maxZ2 + (textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1)); + } + return maxZ2; + } + // Clear states without animation. + // TODO States on component. + function clearStates(model, view) { + view.eachRendered(function (el) { + // Not applied on removed elements, it may still in fading. + if (isElementRemoved(el)) { + return; + } + var textContent = el.getTextContent(); + var textGuide = el.getTextGuideLine(); + if (el.stateTransition) { + el.stateTransition = null; + } + if (textContent && textContent.stateTransition) { + textContent.stateTransition = null; + } + if (textGuide && textGuide.stateTransition) { + textGuide.stateTransition = null; + } + // TODO If el is incremental. + if (el.hasState()) { + el.prevStates = el.currentStates; + el.clearStates(); + } else if (el.prevStates) { + el.prevStates = null; + } + }); + } + function updateStates(model, view) { + var stateAnimationModel = model.getModel('stateAnimation'); + var enableAnimation = model.isAnimationEnabled(); + var duration = stateAnimationModel.get('duration'); + var stateTransition = duration > 0 ? { + duration: duration, + delay: stateAnimationModel.get('delay'), + easing: stateAnimationModel.get('easing') + // additive: stateAnimationModel.get('additive') + } : null; + view.eachRendered(function (el) { + if (el.states && el.states.emphasis) { + // Not applied on removed elements, it may still in fading. + if (isElementRemoved(el)) { + return; + } + if (el instanceof Path) { + savePathStates(el); + } + // Only updated on changed element. In case element is incremental and don't want to rerender. + // TODO, a more proper way? + if (el.__dirty) { + var prevStates = el.prevStates; + // Restore states without animation + if (prevStates) { + el.useStates(prevStates); + } + } + // Update state transition and enable animation again. + if (enableAnimation) { + el.stateTransition = stateTransition; + var textContent = el.getTextContent(); + var textGuide = el.getTextGuideLine(); + // TODO Is it necessary to animate label? + if (textContent) { + textContent.stateTransition = stateTransition; + } + if (textGuide) { + textGuide.stateTransition = stateTransition; + } + } + // Use highlighted and selected flag to toggle states. + if (el.__dirty) { + applyElementStates(el); + } + } + }); + } + createExtensionAPI = function (ecIns) { + return new ( /** @class */function (_super) { + __extends(class_1, _super); + function class_1() { + return _super !== null && _super.apply(this, arguments) || this; + } + class_1.prototype.getCoordinateSystems = function () { + return ecIns._coordSysMgr.getCoordinateSystems(); + }; + class_1.prototype.getComponentByElement = function (el) { + while (el) { + var modelInfo = el.__ecComponentInfo; + if (modelInfo != null) { + return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index); + } + el = el.parent; + } + }; + class_1.prototype.enterEmphasis = function (el, highlightDigit) { + enterEmphasis(el, highlightDigit); + markStatusToUpdate(ecIns); + }; + class_1.prototype.leaveEmphasis = function (el, highlightDigit) { + leaveEmphasis(el, highlightDigit); + markStatusToUpdate(ecIns); + }; + class_1.prototype.enterBlur = function (el) { + enterBlur(el); + markStatusToUpdate(ecIns); + }; + class_1.prototype.leaveBlur = function (el) { + leaveBlur(el); + markStatusToUpdate(ecIns); + }; + class_1.prototype.enterSelect = function (el) { + enterSelect(el); + markStatusToUpdate(ecIns); + }; + class_1.prototype.leaveSelect = function (el) { + leaveSelect(el); + markStatusToUpdate(ecIns); + }; + class_1.prototype.getModel = function () { + return ecIns.getModel(); + }; + class_1.prototype.getViewOfComponentModel = function (componentModel) { + return ecIns.getViewOfComponentModel(componentModel); + }; + class_1.prototype.getViewOfSeriesModel = function (seriesModel) { + return ecIns.getViewOfSeriesModel(seriesModel); + }; + return class_1; + }(ExtensionAPI))(ecIns); + }; + enableConnect = function (chart) { + function updateConnectedChartsStatus(charts, status) { + for (var i = 0; i < charts.length; i++) { + var otherChart = charts[i]; + otherChart[CONNECT_STATUS_KEY] = status; + } + } + each(eventActionMap, function (actionType, eventType) { + chart._messageCenter.on(eventType, function (event) { + if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) { + if (event && event.escapeConnect) { + return; + } + var action_1 = chart.makeActionFromEvent(event); + var otherCharts_1 = []; + each(instances$1, function (otherChart) { + if (otherChart !== chart && otherChart.group === chart.group) { + otherCharts_1.push(otherChart); + } + }); + updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING); + each(otherCharts_1, function (otherChart) { + if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) { + otherChart.dispatchAction(action_1); + } + }); + updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED); + } + }); + }); + }; + }(); + return ECharts; + }(Eventful); + var echartsProto = ECharts.prototype; + echartsProto.on = createRegisterEventWithLowercaseECharts('on'); + echartsProto.off = createRegisterEventWithLowercaseECharts('off'); + /** + * @deprecated + */ + // @ts-ignore + echartsProto.one = function (eventName, cb, ctx) { + var self = this; + deprecateLog('ECharts#one is deprecated.'); + function wrapped() { + var args2 = []; + for (var _i = 0; _i < arguments.length; _i++) { + args2[_i] = arguments[_i]; + } + cb && cb.apply && cb.apply(this, args2); + // @ts-ignore + self.off(eventName, wrapped); + } + // @ts-ignore + this.on.call(this, eventName, wrapped, ctx); + }; + var MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu']; + function disposedWarning(id) { + if ("development" !== 'production') { + warn('Instance ' + id + ' has been disposed'); + } + } + var actions = {}; + /** + * Map eventType to actionType + */ + var eventActionMap = {}; + var dataProcessorFuncs = []; + var optionPreprocessorFuncs = []; + var visualFuncs = []; + var themeStorage = {}; + var loadingEffects = {}; + var instances$1 = {}; + var connectedGroups = {}; + var idBase = +new Date() - 0; + var groupIdBase = +new Date() - 0; + var DOM_ATTRIBUTE_KEY = '_echarts_instance_'; + /** + * @param opts.devicePixelRatio Use window.devicePixelRatio by default + * @param opts.renderer Can choose 'canvas' or 'svg' to render the chart. + * @param opts.width Use clientWidth of the input `dom` by default. + * Can be 'auto' (the same as null/undefined) + * @param opts.height Use clientHeight of the input `dom` by default. + * Can be 'auto' (the same as null/undefined) + * @param opts.locale Specify the locale. + * @param opts.useDirtyRect Enable dirty rectangle rendering or not. + */ + function init$1(dom, theme, opts) { + var isClient = !(opts && opts.ssr); + if (isClient) { + if ("development" !== 'production') { + if (!dom) { + throw new Error('Initialize failed: invalid dom.'); + } + } + var existInstance = getInstanceByDom(dom); + if (existInstance) { + if ("development" !== 'production') { + warn('There is a chart instance already initialized on the dom.'); + } + return existInstance; + } + if ("development" !== 'production') { + if (isDom(dom) && dom.nodeName.toUpperCase() !== 'CANVAS' && (!dom.clientWidth && (!opts || opts.width == null) || !dom.clientHeight && (!opts || opts.height == null))) { + warn('Can\'t get DOM width or height. Please check ' + 'dom.clientWidth and dom.clientHeight. They should not be 0.' + 'For example, you may need to call this in the callback ' + 'of window.onload.'); + } + } + } + var chart = new ECharts(dom, theme, opts); + chart.id = 'ec_' + idBase++; + instances$1[chart.id] = chart; + isClient && setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id); + enableConnect(chart); + lifecycle.trigger('afterinit', chart); + return chart; + } + /** + * @usage + * (A) + * ```js + * let chart1 = echarts.init(dom1); + * let chart2 = echarts.init(dom2); + * chart1.group = 'xxx'; + * chart2.group = 'xxx'; + * echarts.connect('xxx'); + * ``` + * (B) + * ```js + * let chart1 = echarts.init(dom1); + * let chart2 = echarts.init(dom2); + * echarts.connect('xxx', [chart1, chart2]); + * ``` + */ + function connect(groupId) { + // Is array of charts + if (isArray(groupId)) { + var charts = groupId; + groupId = null; + // If any chart has group + each(charts, function (chart) { + if (chart.group != null) { + groupId = chart.group; + } + }); + groupId = groupId || 'g_' + groupIdBase++; + each(charts, function (chart) { + chart.group = groupId; + }); + } + connectedGroups[groupId] = true; + return groupId; + } + function disconnect(groupId) { + connectedGroups[groupId] = false; + } + /** + * Alias and backward compatibility + * @deprecated + */ + var disConnect = disconnect; + /** + * Dispose a chart instance + */ + function dispose$1(chart) { + if (isString(chart)) { + chart = instances$1[chart]; + } else if (!(chart instanceof ECharts)) { + // Try to treat as dom + chart = getInstanceByDom(chart); + } + if (chart instanceof ECharts && !chart.isDisposed()) { + chart.dispose(); + } + } + function getInstanceByDom(dom) { + return instances$1[getAttribute(dom, DOM_ATTRIBUTE_KEY)]; + } + function getInstanceById(key) { + return instances$1[key]; + } + /** + * Register theme + */ + function registerTheme(name, theme) { + themeStorage[name] = theme; + } + /** + * Register option preprocessor + */ + function registerPreprocessor(preprocessorFunc) { + if (indexOf(optionPreprocessorFuncs, preprocessorFunc) < 0) { + optionPreprocessorFuncs.push(preprocessorFunc); + } + } + function registerProcessor(priority, processor) { + normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT); + } + /** + * Register postIniter + * @param {Function} postInitFunc + */ + function registerPostInit(postInitFunc) { + registerUpdateLifecycle('afterinit', postInitFunc); + } + /** + * Register postUpdater + * @param {Function} postUpdateFunc + */ + function registerPostUpdate(postUpdateFunc) { + registerUpdateLifecycle('afterupdate', postUpdateFunc); + } + function registerUpdateLifecycle(name, cb) { + lifecycle.on(name, cb); + } + function registerAction(actionInfo, eventName, action) { + if (isFunction(eventName)) { + action = eventName; + eventName = ''; + } + var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = { + event: eventName + }][0]; + // Event name is all lowercase + actionInfo.event = (actionInfo.event || actionType).toLowerCase(); + eventName = actionInfo.event; + if (eventActionMap[eventName]) { + // Already registered. + return; + } + // Validate action type and event name. + assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName)); + if (!actions[actionType]) { + actions[actionType] = { + action: action, + actionInfo: actionInfo + }; + } + eventActionMap[eventName] = actionType; + } + function registerCoordinateSystem(type, coordSysCreator) { + CoordinateSystemManager.register(type, coordSysCreator); + } + /** + * Get dimensions of specified coordinate system. + * @param {string} type + * @return {Array.} + */ + function getCoordinateSystemDimensions(type) { + var coordSysCreator = CoordinateSystemManager.get(type); + if (coordSysCreator) { + return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice(); + } + } + function registerLayout(priority, layoutTask) { + normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout'); + } + function registerVisual(priority, visualTask) { + normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual'); + } + var registeredTasks = []; + function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) { + if (isFunction(priority) || isObject(priority)) { + fn = priority; + priority = defaultPriority; + } + if ("development" !== 'production') { + if (isNaN(priority) || priority == null) { + throw new Error('Illegal priority'); + } + // Check duplicate + each(targetList, function (wrap) { + assert(wrap.__raw !== fn); + }); + } + // Already registered + if (indexOf(registeredTasks, fn) >= 0) { + return; + } + registeredTasks.push(fn); + var stageHandler = Scheduler.wrapStageHandler(fn, visualType); + stageHandler.__prio = priority; + stageHandler.__raw = fn; + targetList.push(stageHandler); + } + function registerLoading(name, loadingFx) { + loadingEffects[name] = loadingFx; + } + /** + * ZRender need a canvas context to do measureText. + * But in node environment canvas may be created by node-canvas. + * So we need to specify how to create a canvas instead of using document.createElement('canvas') + * + * + * @deprecated use setPlatformAPI({ createCanvas }) instead. + * + * @example + * let Canvas = require('canvas'); + * let echarts = require('echarts'); + * echarts.setCanvasCreator(function () { + * // Small size is enough. + * return new Canvas(32, 32); + * }); + */ + function setCanvasCreator(creator) { + if ("development" !== 'production') { + deprecateLog('setCanvasCreator is deprecated. Use setPlatformAPI({ createCanvas }) instead.'); + } + setPlatformAPI({ + createCanvas: creator + }); + } + /** + * The parameters and usage: see `geoSourceManager.registerMap`. + * Compatible with previous `echarts.registerMap`. + */ + function registerMap(mapName, geoJson, specialAreas) { + var registerMap = getImpl('registerMap'); + registerMap && registerMap(mapName, geoJson, specialAreas); + } + function getMap(mapName) { + var getMap = getImpl('getMap'); + return getMap && getMap(mapName); + } + var registerTransform = registerExternalTransform; + /** + * Globa dispatchAction to a specified chart instance. + */ + // export function dispatchAction(payload: { chartId: string } & Payload, opt?: Parameters[1]) { + // if (!payload || !payload.chartId) { + // // Must have chartId to find chart + // return; + // } + // const chart = instances[payload.chartId]; + // if (chart) { + // chart.dispatchAction(payload, opt); + // } + // } + // Builtin global visual + registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask); + registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask); + registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask); + registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask); + registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask); + registerVisual(PRIORITY_VISUAL_DECAL, decalVisual); + registerPreprocessor(globalBackwardCompat); + registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack); + registerLoading('default', defaultLoading); + // Default actions + registerAction({ + type: HIGHLIGHT_ACTION_TYPE, + event: HIGHLIGHT_ACTION_TYPE, + update: HIGHLIGHT_ACTION_TYPE + }, noop); + registerAction({ + type: DOWNPLAY_ACTION_TYPE, + event: DOWNPLAY_ACTION_TYPE, + update: DOWNPLAY_ACTION_TYPE + }, noop); + registerAction({ + type: SELECT_ACTION_TYPE, + event: SELECT_ACTION_TYPE, + update: SELECT_ACTION_TYPE + }, noop); + registerAction({ + type: UNSELECT_ACTION_TYPE, + event: UNSELECT_ACTION_TYPE, + update: UNSELECT_ACTION_TYPE + }, noop); + registerAction({ + type: TOGGLE_SELECT_ACTION_TYPE, + event: TOGGLE_SELECT_ACTION_TYPE, + update: TOGGLE_SELECT_ACTION_TYPE + }, noop); + // Default theme + registerTheme('light', lightTheme); + registerTheme('dark', theme); + // For backward compatibility, where the namespace `dataTool` will + // be mounted on `echarts` is the extension `dataTool` is imported. + var dataTool = {}; + + var extensions = []; + var extensionRegisters = { + registerPreprocessor: registerPreprocessor, + registerProcessor: registerProcessor, + registerPostInit: registerPostInit, + registerPostUpdate: registerPostUpdate, + registerUpdateLifecycle: registerUpdateLifecycle, + registerAction: registerAction, + registerCoordinateSystem: registerCoordinateSystem, + registerLayout: registerLayout, + registerVisual: registerVisual, + registerTransform: registerTransform, + registerLoading: registerLoading, + registerMap: registerMap, + registerImpl: registerImpl, + PRIORITY: PRIORITY, + ComponentModel: ComponentModel, + ComponentView: ComponentView, + SeriesModel: SeriesModel, + ChartView: ChartView, + // TODO Use ComponentModel and SeriesModel instead of Constructor + registerComponentModel: function (ComponentModelClass) { + ComponentModel.registerClass(ComponentModelClass); + }, + registerComponentView: function (ComponentViewClass) { + ComponentView.registerClass(ComponentViewClass); + }, + registerSeriesModel: function (SeriesModelClass) { + SeriesModel.registerClass(SeriesModelClass); + }, + registerChartView: function (ChartViewClass) { + ChartView.registerClass(ChartViewClass); + }, + registerSubTypeDefaulter: function (componentType, defaulter) { + ComponentModel.registerSubTypeDefaulter(componentType, defaulter); + }, + registerPainter: function (painterType, PainterCtor) { + registerPainter(painterType, PainterCtor); + } + }; + function use(ext) { + if (isArray(ext)) { + // use([ChartLine, ChartBar]); + each(ext, function (singleExt) { + use(singleExt); + }); + return; + } + if (indexOf(extensions, ext) >= 0) { + return; + } + extensions.push(ext); + if (isFunction(ext)) { + ext = { + install: ext + }; + } + ext.install(extensionRegisters); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function dataIndexMapValueLength(valNumOrArrLengthMoreThan2) { + return valNumOrArrLengthMoreThan2 == null ? 0 : valNumOrArrLengthMoreThan2.length || 1; + } + function defaultKeyGetter(item) { + return item; + } + var DataDiffer = /** @class */function () { + /** + * @param context Can be visited by this.context in callback. + */ + function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context, + // By default: 'oneToOne'. + diffMode) { + this._old = oldArr; + this._new = newArr; + this._oldKeyGetter = oldKeyGetter || defaultKeyGetter; + this._newKeyGetter = newKeyGetter || defaultKeyGetter; + // Visible in callback via `this.context`; + this.context = context; + this._diffModeMultiple = diffMode === 'multiple'; + } + /** + * Callback function when add a data + */ + DataDiffer.prototype.add = function (func) { + this._add = func; + return this; + }; + /** + * Callback function when update a data + */ + DataDiffer.prototype.update = function (func) { + this._update = func; + return this; + }; + /** + * Callback function when update a data and only work in `cbMode: 'byKey'`. + */ + DataDiffer.prototype.updateManyToOne = function (func) { + this._updateManyToOne = func; + return this; + }; + /** + * Callback function when update a data and only work in `cbMode: 'byKey'`. + */ + DataDiffer.prototype.updateOneToMany = function (func) { + this._updateOneToMany = func; + return this; + }; + /** + * Callback function when update a data and only work in `cbMode: 'byKey'`. + */ + DataDiffer.prototype.updateManyToMany = function (func) { + this._updateManyToMany = func; + return this; + }; + /** + * Callback function when remove a data + */ + DataDiffer.prototype.remove = function (func) { + this._remove = func; + return this; + }; + DataDiffer.prototype.execute = function () { + this[this._diffModeMultiple ? '_executeMultiple' : '_executeOneToOne'](); + }; + DataDiffer.prototype._executeOneToOne = function () { + var oldArr = this._old; + var newArr = this._new; + var newDataIndexMap = {}; + var oldDataKeyArr = new Array(oldArr.length); + var newDataKeyArr = new Array(newArr.length); + this._initIndexMap(oldArr, null, oldDataKeyArr, '_oldKeyGetter'); + this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter'); + for (var i = 0; i < oldArr.length; i++) { + var oldKey = oldDataKeyArr[i]; + var newIdxMapVal = newDataIndexMap[oldKey]; + var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal); + // idx can never be empty array here. see 'set null' logic below. + if (newIdxMapValLen > 1) { + // Consider there is duplicate key (for example, use dataItem.name as key). + // We should make sure every item in newArr and oldArr can be visited. + var newIdx = newIdxMapVal.shift(); + if (newIdxMapVal.length === 1) { + newDataIndexMap[oldKey] = newIdxMapVal[0]; + } + this._update && this._update(newIdx, i); + } else if (newIdxMapValLen === 1) { + newDataIndexMap[oldKey] = null; + this._update && this._update(newIdxMapVal, i); + } else { + this._remove && this._remove(i); + } + } + this._performRestAdd(newDataKeyArr, newDataIndexMap); + }; + /** + * For example, consider the case: + * oldData: [o0, o1, o2, o3, o4, o5, o6, o7], + * newData: [n0, n1, n2, n3, n4, n5, n6, n7, n8], + * Where: + * o0, o1, n0 has key 'a' (many to one) + * o5, n4, n5, n6 has key 'b' (one to many) + * o2, n1 has key 'c' (one to one) + * n2, n3 has key 'd' (add) + * o3, o4 has key 'e' (remove) + * o6, o7, n7, n8 has key 'f' (many to many, treated as add and remove) + * Then: + * (The order of the following directives are not ensured.) + * this._updateManyToOne(n0, [o0, o1]); + * this._updateOneToMany([n4, n5, n6], o5); + * this._update(n1, o2); + * this._remove(o3); + * this._remove(o4); + * this._remove(o6); + * this._remove(o7); + * this._add(n2); + * this._add(n3); + * this._add(n7); + * this._add(n8); + */ + DataDiffer.prototype._executeMultiple = function () { + var oldArr = this._old; + var newArr = this._new; + var oldDataIndexMap = {}; + var newDataIndexMap = {}; + var oldDataKeyArr = []; + var newDataKeyArr = []; + this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter'); + this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter'); + for (var i = 0; i < oldDataKeyArr.length; i++) { + var oldKey = oldDataKeyArr[i]; + var oldIdxMapVal = oldDataIndexMap[oldKey]; + var newIdxMapVal = newDataIndexMap[oldKey]; + var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal); + var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal); + if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) { + this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal); + newDataIndexMap[oldKey] = null; + } else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) { + this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal); + newDataIndexMap[oldKey] = null; + } else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) { + this._update && this._update(newIdxMapVal, oldIdxMapVal); + newDataIndexMap[oldKey] = null; + } else if (oldIdxMapValLen > 1 && newIdxMapValLen > 1) { + this._updateManyToMany && this._updateManyToMany(newIdxMapVal, oldIdxMapVal); + newDataIndexMap[oldKey] = null; + } else if (oldIdxMapValLen > 1) { + for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) { + this._remove && this._remove(oldIdxMapVal[i_1]); + } + } else { + this._remove && this._remove(oldIdxMapVal); + } + } + this._performRestAdd(newDataKeyArr, newDataIndexMap); + }; + DataDiffer.prototype._performRestAdd = function (newDataKeyArr, newDataIndexMap) { + for (var i = 0; i < newDataKeyArr.length; i++) { + var newKey = newDataKeyArr[i]; + var newIdxMapVal = newDataIndexMap[newKey]; + var idxMapValLen = dataIndexMapValueLength(newIdxMapVal); + if (idxMapValLen > 1) { + for (var j = 0; j < idxMapValLen; j++) { + this._add && this._add(newIdxMapVal[j]); + } + } else if (idxMapValLen === 1) { + this._add && this._add(newIdxMapVal); + } + // Support both `newDataKeyArr` are duplication removed or not removed. + newDataIndexMap[newKey] = null; + } + }; + DataDiffer.prototype._initIndexMap = function (arr, + // Can be null. + map, + // In 'byKey', the output `keyArr` is duplication removed. + // In 'byIndex', the output `keyArr` is not duplication removed and + // its indices are accurately corresponding to `arr`. + keyArr, keyGetterName) { + var cbModeMultiple = this._diffModeMultiple; + for (var i = 0; i < arr.length; i++) { + // Add prefix to avoid conflict with Object.prototype. + var key = '_ec_' + this[keyGetterName](arr[i], i); + if (!cbModeMultiple) { + keyArr[i] = key; + } + if (!map) { + continue; + } + var idxMapVal = map[key]; + var idxMapValLen = dataIndexMapValueLength(idxMapVal); + if (idxMapValLen === 0) { + // Simple optimize: in most cases, one index has one key, + // do not need array. + map[key] = i; + if (cbModeMultiple) { + keyArr.push(key); + } + } else if (idxMapValLen === 1) { + map[key] = [idxMapVal, i]; + } else { + idxMapVal.push(i); + } + } + }; + return DataDiffer; + }(); + + var DimensionUserOuput = /** @class */function () { + function DimensionUserOuput(encode, dimRequest) { + this._encode = encode; + this._schema = dimRequest; + } + DimensionUserOuput.prototype.get = function () { + return { + // Do not generate full dimension name until fist used. + fullDimensions: this._getFullDimensionNames(), + encode: this._encode + }; + }; + /** + * Get all data store dimension names. + * Theoretically a series data store is defined both by series and used dataset (if any). + * If some dimensions are omitted for performance reason in `this.dimensions`, + * the dimension name may not be auto-generated if user does not specify a dimension name. + * In this case, the dimension name is `null`/`undefined`. + */ + DimensionUserOuput.prototype._getFullDimensionNames = function () { + if (!this._cachedDimNames) { + this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : []; + } + return this._cachedDimNames; + }; + return DimensionUserOuput; + }(); + function summarizeDimensions(data, schema) { + var summary = {}; + var encode = summary.encode = {}; + var notExtraCoordDimMap = createHashMap(); + var defaultedLabel = []; + var defaultedTooltip = []; + var userOutputEncode = {}; + each(data.dimensions, function (dimName) { + var dimItem = data.getDimensionInfo(dimName); + var coordDim = dimItem.coordDim; + if (coordDim) { + if ("development" !== 'production') { + assert(VISUAL_DIMENSIONS.get(coordDim) == null); + } + var coordDimIndex = dimItem.coordDimIndex; + getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName; + if (!dimItem.isExtraCoord) { + notExtraCoordDimMap.set(coordDim, 1); + // Use the last coord dim (and label friendly) as default label, + // because when dataset is used, it is hard to guess which dimension + // can be value dimension. If both show x, y on label is not look good, + // and conventionally y axis is focused more. + if (mayLabelDimType(dimItem.type)) { + defaultedLabel[0] = dimName; + } + // User output encode do not contain generated coords. + // And it only has index. User can use index to retrieve value from the raw item array. + getOrCreateEncodeArr(userOutputEncode, coordDim)[coordDimIndex] = data.getDimensionIndex(dimItem.name); + } + if (dimItem.defaultTooltip) { + defaultedTooltip.push(dimName); + } + } + VISUAL_DIMENSIONS.each(function (v, otherDim) { + var encodeArr = getOrCreateEncodeArr(encode, otherDim); + var dimIndex = dimItem.otherDims[otherDim]; + if (dimIndex != null && dimIndex !== false) { + encodeArr[dimIndex] = dimItem.name; + } + }); + }); + var dataDimsOnCoord = []; + var encodeFirstDimNotExtra = {}; + notExtraCoordDimMap.each(function (v, coordDim) { + var dimArr = encode[coordDim]; + encodeFirstDimNotExtra[coordDim] = dimArr[0]; + // Not necessary to remove duplicate, because a data + // dim canot on more than one coordDim. + dataDimsOnCoord = dataDimsOnCoord.concat(dimArr); + }); + summary.dataDimsOnCoord = dataDimsOnCoord; + summary.dataDimIndicesOnCoord = map(dataDimsOnCoord, function (dimName) { + return data.getDimensionInfo(dimName).storeDimIndex; + }); + summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra; + var encodeLabel = encode.label; + // FIXME `encode.label` is not recommended, because formatter cannot be set + // in this way. Use label.formatter instead. Maybe remove this approach someday. + if (encodeLabel && encodeLabel.length) { + defaultedLabel = encodeLabel.slice(); + } + var encodeTooltip = encode.tooltip; + if (encodeTooltip && encodeTooltip.length) { + defaultedTooltip = encodeTooltip.slice(); + } else if (!defaultedTooltip.length) { + defaultedTooltip = defaultedLabel.slice(); + } + encode.defaultedLabel = defaultedLabel; + encode.defaultedTooltip = defaultedTooltip; + summary.userOutput = new DimensionUserOuput(userOutputEncode, schema); + return summary; + } + function getOrCreateEncodeArr(encode, dim) { + if (!encode.hasOwnProperty(dim)) { + encode[dim] = []; + } + return encode[dim]; + } + // FIXME:TS should be type `AxisType` + function getDimensionTypeByAxis(axisType) { + return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float'; + } + function mayLabelDimType(dimType) { + // In most cases, ordinal and time do not suitable for label. + // Ordinal info can be displayed on axis. Time is too long. + return !(dimType === 'ordinal' || dimType === 'time'); + } + // function findTheLastDimMayLabel(data) { + // // Get last value dim + // let dimensions = data.dimensions.slice(); + // let valueType; + // let valueDim; + // while (dimensions.length && ( + // valueDim = dimensions.pop(), + // valueType = data.getDimensionInfo(valueDim).type, + // valueType === 'ordinal' || valueType === 'time' + // )) {} // jshint ignore:line + // return valueDim; + // } + + var SeriesDimensionDefine = /** @class */function () { + /** + * @param opt All of the fields will be shallow copied. + */ + function SeriesDimensionDefine(opt) { + /** + * The format of `otherDims` is: + * ```js + * { + * tooltip?: number + * label?: number + * itemName?: number + * seriesName?: number + * } + * ``` + * + * A `series.encode` can specified these fields: + * ```js + * encode: { + * // "3, 1, 5" is the index of data dimension. + * tooltip: [3, 1, 5], + * label: [0, 3], + * ... + * } + * ``` + * `otherDims` is the parse result of the `series.encode` above, like: + * ```js + * // Suppose the index of this data dimension is `3`. + * this.otherDims = { + * // `3` is at the index `0` of the `encode.tooltip` + * tooltip: 0, + * // `3` is at the index `1` of the `encode.label` + * label: 1 + * }; + * ``` + * + * This prop should never be `null`/`undefined` after initialized. + */ + this.otherDims = {}; + if (opt != null) { + extend(this, opt); + } + } + return SeriesDimensionDefine; + }(); + + var inner$4 = makeInner(); + var dimTypeShort = { + float: 'f', + int: 'i', + ordinal: 'o', + number: 'n', + time: 't' + }; + /** + * Represents the dimension requirement of a series. + * + * NOTICE: + * When there are too many dimensions in dataset and many series, only the used dimensions + * (i.e., used by coord sys and declared in `series.encode`) are add to `dimensionDefineList`. + * But users may query data by other unused dimension names. + * In this case, users can only query data if and only if they have defined dimension names + * via ec option, so we provide `getDimensionIndexFromSource`, which only query them from + * `source` dimensions. + */ + var SeriesDataSchema = /** @class */function () { + function SeriesDataSchema(opt) { + this.dimensions = opt.dimensions; + this._dimOmitted = opt.dimensionOmitted; + this.source = opt.source; + this._fullDimCount = opt.fullDimensionCount; + this._updateDimOmitted(opt.dimensionOmitted); + } + SeriesDataSchema.prototype.isDimensionOmitted = function () { + return this._dimOmitted; + }; + SeriesDataSchema.prototype._updateDimOmitted = function (dimensionOmitted) { + this._dimOmitted = dimensionOmitted; + if (!dimensionOmitted) { + return; + } + if (!this._dimNameMap) { + this._dimNameMap = ensureSourceDimNameMap(this.source); + } + }; + /** + * @caution Can only be used when `dimensionOmitted: true`. + * + * Get index by user defined dimension name (i.e., not internal generate name). + * That is, get index from `dimensionsDefine`. + * If no `dimensionsDefine`, or no name get, return -1. + */ + SeriesDataSchema.prototype.getSourceDimensionIndex = function (dimName) { + return retrieve2(this._dimNameMap.get(dimName), -1); + }; + /** + * @caution Can only be used when `dimensionOmitted: true`. + * + * Notice: may return `null`/`undefined` if user not specify dimension names. + */ + SeriesDataSchema.prototype.getSourceDimension = function (dimIndex) { + var dimensionsDefine = this.source.dimensionsDefine; + if (dimensionsDefine) { + return dimensionsDefine[dimIndex]; + } + }; + SeriesDataSchema.prototype.makeStoreSchema = function () { + var dimCount = this._fullDimCount; + var willRetrieveDataByName = shouldRetrieveDataByName(this.source); + var makeHashStrict = !shouldOmitUnusedDimensions(dimCount); + // If source don't have dimensions or series don't omit unsed dimensions. + // Generate from seriesDimList directly + var dimHash = ''; + var dims = []; + for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < dimCount; fullDimIdx++) { + var property = void 0; + var type = void 0; + var ordinalMeta = void 0; + var seriesDimDef = this.dimensions[seriesDimIdx]; + // The list has been sorted by `storeDimIndex` asc. + if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) { + property = willRetrieveDataByName ? seriesDimDef.name : null; + type = seriesDimDef.type; + ordinalMeta = seriesDimDef.ordinalMeta; + seriesDimIdx++; + } else { + var sourceDimDef = this.getSourceDimension(fullDimIdx); + if (sourceDimDef) { + property = willRetrieveDataByName ? sourceDimDef.name : null; + type = sourceDimDef.type; + } + } + dims.push({ + property: property, + type: type, + ordinalMeta: ordinalMeta + }); + // If retrieving data by index, + // use to determine whether data can be shared. + // (Because in this case there might be no dimension name defined in dataset, but indices always exists). + // (Indices are always 0, 1, 2, ..., so we can ignore them to shorten the hash). + // Otherwise if retrieving data by property name (like `data: [{aa: 123, bb: 765}, ...]`), + // use in hash. + if (willRetrieveDataByName && property != null + // For data stack, we have make sure each series has its own dim on this store. + // So we do not add property to hash to make sure they can share this store. + && (!seriesDimDef || !seriesDimDef.isCalculationCoord)) { + dimHash += makeHashStrict + // Use escape character '`' in case that property name contains '$'. + ? property.replace(/\`/g, '`1').replace(/\$/g, '`2') + // For better performance, when there are large dimensions, tolerant this defects that hardly meet. + : property; + } + dimHash += '$'; + dimHash += dimTypeShort[type] || 'f'; + if (ordinalMeta) { + dimHash += ordinalMeta.uid; + } + dimHash += '$'; + } + // Source from endpoint(usually series) will be read differently + // when seriesLayoutBy or startIndex(which is affected by sourceHeader) are different. + // So we use this three props as key. + var source = this.source; + var hash = [source.seriesLayoutBy, source.startIndex, dimHash].join('$$'); + return { + dimensions: dims, + hash: hash + }; + }; + SeriesDataSchema.prototype.makeOutputDimensionNames = function () { + var result = []; + for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < this._fullDimCount; fullDimIdx++) { + var name_1 = void 0; + var seriesDimDef = this.dimensions[seriesDimIdx]; + // The list has been sorted by `storeDimIndex` asc. + if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) { + if (!seriesDimDef.isCalculationCoord) { + name_1 = seriesDimDef.name; + } + seriesDimIdx++; + } else { + var sourceDimDef = this.getSourceDimension(fullDimIdx); + if (sourceDimDef) { + name_1 = sourceDimDef.name; + } + } + result.push(name_1); + } + return result; + }; + SeriesDataSchema.prototype.appendCalculationDimension = function (dimDef) { + this.dimensions.push(dimDef); + dimDef.isCalculationCoord = true; + this._fullDimCount++; + // If append dimension on a data store, consider the store + // might be shared by different series, series dimensions not + // really map to store dimensions. + this._updateDimOmitted(true); + }; + return SeriesDataSchema; + }(); + function isSeriesDataSchema(schema) { + return schema instanceof SeriesDataSchema; + } + function createDimNameMap(dimsDef) { + var dataDimNameMap = createHashMap(); + for (var i = 0; i < (dimsDef || []).length; i++) { + var dimDefItemRaw = dimsDef[i]; + var userDimName = isObject(dimDefItemRaw) ? dimDefItemRaw.name : dimDefItemRaw; + if (userDimName != null && dataDimNameMap.get(userDimName) == null) { + dataDimNameMap.set(userDimName, i); + } + } + return dataDimNameMap; + } + function ensureSourceDimNameMap(source) { + var innerSource = inner$4(source); + return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap(source.dimensionsDefine)); + } + function shouldOmitUnusedDimensions(dimCount) { + return dimCount > 30; + } + + var isObject$2 = isObject; + var map$1 = map; + var CtorInt32Array$1 = typeof Int32Array === 'undefined' ? Array : Int32Array; + // Use prefix to avoid index to be the same as otherIdList[idx], + // which will cause weird update animation. + var ID_PREFIX = 'e\0\0'; + var INDEX_NOT_FOUND = -1; + // type SeriesDimensionIndex = DimensionIndex; + var TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_dimSummary', 'userOutput', '_rawData', '_dimValueGetter', '_nameDimIdx', '_idDimIdx', '_nameRepeatCount']; + var CLONE_PROPERTIES = ['_approximateExtent']; + // ----------------------------- + // Internal method declarations: + // ----------------------------- + var prepareInvertedIndex; + var getId; + var getIdNameFromStore; + var normalizeDimensions; + var transferProperties; + var cloneListForMapAndSample; + var makeIdFromName; + var SeriesData = /** @class */function () { + /** + * @param dimensionsInput.dimensions + * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...]. + * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius + */ + function SeriesData(dimensionsInput, hostModel) { + this.type = 'list'; + this._dimOmitted = false; + this._nameList = []; + this._idList = []; + // Models of data option is stored sparse for optimizing memory cost + // Never used yet (not used yet). + // private _optionModels: Model[] = []; + // Global visual properties after visual coding + this._visual = {}; + // Global layout properties. + this._layout = {}; + // Item visual properties after visual coding + this._itemVisuals = []; + // Item layout properties after layout + this._itemLayouts = []; + // Graphic elements + this._graphicEls = []; + // key: dim, value: extent + this._approximateExtent = {}; + this._calculationInfo = {}; + // Having detected that there is data item is non primitive type + // (in type `OptionDataItemObject`). + // Like `data: [ { value: xx, itemStyle: {...} }, ...]` + // At present it only happen in `SOURCE_FORMAT_ORIGINAL`. + this.hasItemOption = false; + // Methods that create a new list based on this list should be listed here. + // Notice that those method should `RETURN` the new list. + this.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'lttbDownSample', 'map']; + // Methods that change indices of this list should be listed here. + this.CHANGABLE_METHODS = ['filterSelf', 'selectRange']; + this.DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample']; + var dimensions; + var assignStoreDimIdx = false; + if (isSeriesDataSchema(dimensionsInput)) { + dimensions = dimensionsInput.dimensions; + this._dimOmitted = dimensionsInput.isDimensionOmitted(); + this._schema = dimensionsInput; + } else { + assignStoreDimIdx = true; + dimensions = dimensionsInput; + } + dimensions = dimensions || ['x', 'y']; + var dimensionInfos = {}; + var dimensionNames = []; + var invertedIndicesMap = {}; + var needsHasOwn = false; + var emptyObj = {}; + for (var i = 0; i < dimensions.length; i++) { + // Use the original dimensions[i], where other flag props may exists. + var dimInfoInput = dimensions[i]; + var dimensionInfo = isString(dimInfoInput) ? new SeriesDimensionDefine({ + name: dimInfoInput + }) : !(dimInfoInput instanceof SeriesDimensionDefine) ? new SeriesDimensionDefine(dimInfoInput) : dimInfoInput; + var dimensionName = dimensionInfo.name; + dimensionInfo.type = dimensionInfo.type || 'float'; + if (!dimensionInfo.coordDim) { + dimensionInfo.coordDim = dimensionName; + dimensionInfo.coordDimIndex = 0; + } + var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {}; + dimensionNames.push(dimensionName); + dimensionInfos[dimensionName] = dimensionInfo; + if (emptyObj[dimensionName] != null) { + needsHasOwn = true; + } + if (dimensionInfo.createInvertedIndices) { + invertedIndicesMap[dimensionName] = []; + } + if (otherDims.itemName === 0) { + this._nameDimIdx = i; + } + if (otherDims.itemId === 0) { + this._idDimIdx = i; + } + if ("development" !== 'production') { + assert(assignStoreDimIdx || dimensionInfo.storeDimIndex >= 0); + } + if (assignStoreDimIdx) { + dimensionInfo.storeDimIndex = i; + } + } + this.dimensions = dimensionNames; + this._dimInfos = dimensionInfos; + this._initGetDimensionInfo(needsHasOwn); + this.hostModel = hostModel; + this._invertedIndicesMap = invertedIndicesMap; + if (this._dimOmitted) { + var dimIdxToName_1 = this._dimIdxToName = createHashMap(); + each(dimensionNames, function (dimName) { + dimIdxToName_1.set(dimensionInfos[dimName].storeDimIndex, dimName); + }); + } + } + /** + * + * Get concrete dimension name by dimension name or dimension index. + * If input a dimension name, do not validate whether the dimension name exits. + * + * @caution + * @param dim Must make sure the dimension is `SeriesDimensionLoose`. + * Because only those dimensions will have auto-generated dimension names if not + * have a user-specified name, and other dimensions will get a return of null/undefined. + * + * @notice Because of this reason, should better use `getDimensionIndex` instead, for examples: + * ```js + * const val = data.getStore().get(data.getDimensionIndex(dim), dataIdx); + * ``` + * + * @return Concrete dim name. + */ + SeriesData.prototype.getDimension = function (dim) { + var dimIdx = this._recognizeDimIndex(dim); + if (dimIdx == null) { + return dim; + } + dimIdx = dim; + if (!this._dimOmitted) { + return this.dimensions[dimIdx]; + } + // Retrieve from series dimension definition because it probably contains + // generated dimension name (like 'x', 'y'). + var dimName = this._dimIdxToName.get(dimIdx); + if (dimName != null) { + return dimName; + } + var sourceDimDef = this._schema.getSourceDimension(dimIdx); + if (sourceDimDef) { + return sourceDimDef.name; + } + }; + /** + * Get dimension index in data store. Return -1 if not found. + * Can be used to index value from getRawValue. + */ + SeriesData.prototype.getDimensionIndex = function (dim) { + var dimIdx = this._recognizeDimIndex(dim); + if (dimIdx != null) { + return dimIdx; + } + if (dim == null) { + return -1; + } + var dimInfo = this._getDimInfo(dim); + return dimInfo ? dimInfo.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(dim) : -1; + }; + /** + * The meanings of the input parameter `dim`: + * + * + If dim is a number (e.g., `1`), it means the index of the dimension. + * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'. + * + If dim is a number-like string (e.g., `"1"`): + * + If there is the same concrete dim name defined in `series.dimensions` or `dataset.dimensions`, + * it means that concrete name. + * + If not, it will be converted to a number, which means the index of the dimension. + * (why? because of the backward compatibility. We have been tolerating number-like string in + * dimension setting, although now it seems that it is not a good idea.) + * For example, `visualMap[i].dimension: "1"` is the same meaning as `visualMap[i].dimension: 1`, + * if no dimension name is defined as `"1"`. + * + If dim is a not-number-like string, it means the concrete dim name. + * For example, it can be be default name `"x"`, `"y"`, `"z"`, `"lng"`, `"lat"`, `"angle"`, `"radius"`, + * or customized in `dimensions` property of option like `"age"`. + * + * @return recognized `DimensionIndex`. Otherwise return null/undefined (means that dim is `DimensionName`). + */ + SeriesData.prototype._recognizeDimIndex = function (dim) { + if (isNumber(dim) + // If being a number-like string but not being defined as a dimension name. + || dim != null && !isNaN(dim) && !this._getDimInfo(dim) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(dim) < 0)) { + return +dim; + } + }; + SeriesData.prototype._getStoreDimIndex = function (dim) { + var dimIdx = this.getDimensionIndex(dim); + if ("development" !== 'production') { + if (dimIdx == null) { + throw new Error('Unknown dimension ' + dim); + } + } + return dimIdx; + }; + /** + * Get type and calculation info of particular dimension + * @param dim + * Dimension can be concrete names like x, y, z, lng, lat, angle, radius + * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius' + */ + SeriesData.prototype.getDimensionInfo = function (dim) { + // Do not clone, because there may be categories in dimInfo. + return this._getDimInfo(this.getDimension(dim)); + }; + SeriesData.prototype._initGetDimensionInfo = function (needsHasOwn) { + var dimensionInfos = this._dimInfos; + this._getDimInfo = needsHasOwn ? function (dimName) { + return dimensionInfos.hasOwnProperty(dimName) ? dimensionInfos[dimName] : undefined; + } : function (dimName) { + return dimensionInfos[dimName]; + }; + }; + /** + * concrete dimension name list on coord. + */ + SeriesData.prototype.getDimensionsOnCoord = function () { + return this._dimSummary.dataDimsOnCoord.slice(); + }; + SeriesData.prototype.mapDimension = function (coordDim, idx) { + var dimensionsSummary = this._dimSummary; + if (idx == null) { + return dimensionsSummary.encodeFirstDimNotExtra[coordDim]; + } + var dims = dimensionsSummary.encode[coordDim]; + return dims ? dims[idx] : null; + }; + SeriesData.prototype.mapDimensionsAll = function (coordDim) { + var dimensionsSummary = this._dimSummary; + var dims = dimensionsSummary.encode[coordDim]; + return (dims || []).slice(); + }; + SeriesData.prototype.getStore = function () { + return this._store; + }; + /** + * Initialize from data + * @param data source or data or data store. + * @param nameList The name of a datum is used on data diff and + * default label/tooltip. + * A name can be specified in encode.itemName, + * or dataItem.name (only for series option data), + * or provided in nameList from outside. + */ + SeriesData.prototype.initData = function (data, nameList, dimValueGetter) { + var _this = this; + var store; + if (data instanceof DataStore) { + store = data; + } + if (!store) { + var dimensions = this.dimensions; + var provider = isSourceInstance(data) || isArrayLike(data) ? new DefaultDataProvider(data, dimensions.length) : data; + store = new DataStore(); + var dimensionInfos = map$1(dimensions, function (dimName) { + return { + type: _this._dimInfos[dimName].type, + property: dimName + }; + }); + store.initData(provider, dimensionInfos, dimValueGetter); + } + this._store = store; + // Reset + this._nameList = (nameList || []).slice(); + this._idList = []; + this._nameRepeatCount = {}; + this._doInit(0, store.count()); + // Cache summary info for fast visit. See "dimensionHelper". + // Needs to be initialized after store is prepared. + this._dimSummary = summarizeDimensions(this, this._schema); + this.userOutput = this._dimSummary.userOutput; + }; + /** + * Caution: Can be only called on raw data (before `this._indices` created). + */ + SeriesData.prototype.appendData = function (data) { + var range = this._store.appendData(data); + this._doInit(range[0], range[1]); + }; + /** + * Caution: Can be only called on raw data (before `this._indices` created). + * This method does not modify `rawData` (`dataProvider`), but only + * add values to store. + * + * The final count will be increased by `Math.max(values.length, names.length)`. + * + * @param values That is the SourceType: 'arrayRows', like + * [ + * [12, 33, 44], + * [NaN, 43, 1], + * ['-', 'asdf', 0] + * ] + * Each item is exactly corresponding to a dimension. + */ + SeriesData.prototype.appendValues = function (values, names) { + var _a = this._store.appendValues(values, names.length), + start = _a.start, + end = _a.end; + var shouldMakeIdFromName = this._shouldMakeIdFromName(); + this._updateOrdinalMeta(); + if (names) { + for (var idx = start; idx < end; idx++) { + var sourceIdx = idx - start; + this._nameList[idx] = names[sourceIdx]; + if (shouldMakeIdFromName) { + makeIdFromName(this, idx); + } + } + } + }; + SeriesData.prototype._updateOrdinalMeta = function () { + var store = this._store; + var dimensions = this.dimensions; + for (var i = 0; i < dimensions.length; i++) { + var dimInfo = this._dimInfos[dimensions[i]]; + if (dimInfo.ordinalMeta) { + store.collectOrdinalMeta(dimInfo.storeDimIndex, dimInfo.ordinalMeta); + } + } + }; + SeriesData.prototype._shouldMakeIdFromName = function () { + var provider = this._store.getProvider(); + return this._idDimIdx == null && provider.getSource().sourceFormat !== SOURCE_FORMAT_TYPED_ARRAY && !provider.fillStorage; + }; + SeriesData.prototype._doInit = function (start, end) { + if (start >= end) { + return; + } + var store = this._store; + var provider = store.getProvider(); + this._updateOrdinalMeta(); + var nameList = this._nameList; + var idList = this._idList; + var sourceFormat = provider.getSource().sourceFormat; + var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL; + // Each data item is value + // [1, 2] + // 2 + // Bar chart, line chart which uses category axis + // only gives the 'y' value. 'x' value is the indices of category + // Use a tempValue to normalize the value to be a (x, y) value + // If dataItem is {name: ...} or {id: ...}, it has highest priority. + // This kind of ids and names are always stored `_nameList` and `_idList`. + if (isFormatOriginal && !provider.pure) { + var sharedDataItem = []; + for (var idx = start; idx < end; idx++) { + // NOTICE: Try not to write things into dataItem + var dataItem = provider.getItem(idx, sharedDataItem); + if (!this.hasItemOption && isDataItemOption(dataItem)) { + this.hasItemOption = true; + } + if (dataItem) { + var itemName = dataItem.name; + if (nameList[idx] == null && itemName != null) { + nameList[idx] = convertOptionIdName(itemName, null); + } + var itemId = dataItem.id; + if (idList[idx] == null && itemId != null) { + idList[idx] = convertOptionIdName(itemId, null); + } + } + } + } + if (this._shouldMakeIdFromName()) { + for (var idx = start; idx < end; idx++) { + makeIdFromName(this, idx); + } + } + prepareInvertedIndex(this); + }; + /** + * PENDING: In fact currently this function is only used to short-circuit + * the calling of `scale.unionExtentFromData` when data have been filtered by modules + * like "dataZoom". `scale.unionExtentFromData` is used to calculate data extent for series on + * an axis, but if a "axis related data filter module" is used, the extent of the axis have + * been fixed and no need to calling `scale.unionExtentFromData` actually. + * But if we add "custom data filter" in future, which is not "axis related", this method may + * be still needed. + * + * Optimize for the scenario that data is filtered by a given extent. + * Consider that if data amount is more than hundreds of thousand, + * extent calculation will cost more than 10ms and the cache will + * be erased because of the filtering. + */ + SeriesData.prototype.getApproximateExtent = function (dim) { + return this._approximateExtent[dim] || this._store.getDataExtent(this._getStoreDimIndex(dim)); + }; + /** + * Calculate extent on a filtered data might be time consuming. + * Approximate extent is only used for: calculate extent of filtered data outside. + */ + SeriesData.prototype.setApproximateExtent = function (extent, dim) { + dim = this.getDimension(dim); + this._approximateExtent[dim] = extent.slice(); + }; + SeriesData.prototype.getCalculationInfo = function (key) { + return this._calculationInfo[key]; + }; + SeriesData.prototype.setCalculationInfo = function (key, value) { + isObject$2(key) ? extend(this._calculationInfo, key) : this._calculationInfo[key] = value; + }; + /** + * @return Never be null/undefined. `number` will be converted to string. Because: + * In most cases, name is used in display, where returning a string is more convenient. + * In other cases, name is used in query (see `indexOfName`), where we can keep the + * rule that name `2` equals to name `'2'`. + */ + SeriesData.prototype.getName = function (idx) { + var rawIndex = this.getRawIndex(idx); + var name = this._nameList[rawIndex]; + if (name == null && this._nameDimIdx != null) { + name = getIdNameFromStore(this, this._nameDimIdx, rawIndex); + } + if (name == null) { + name = ''; + } + return name; + }; + SeriesData.prototype._getCategory = function (dimIdx, idx) { + var ordinal = this._store.get(dimIdx, idx); + var ordinalMeta = this._store.getOrdinalMeta(dimIdx); + if (ordinalMeta) { + return ordinalMeta.categories[ordinal]; + } + return ordinal; + }; + /** + * @return Never null/undefined. `number` will be converted to string. Because: + * In all cases having encountered at present, id is used in making diff comparison, which + * are usually based on hash map. We can keep the rule that the internal id are always string + * (treat `2` is the same as `'2'`) to make the related logic simple. + */ + SeriesData.prototype.getId = function (idx) { + return getId(this, this.getRawIndex(idx)); + }; + SeriesData.prototype.count = function () { + return this._store.count(); + }; + /** + * Get value. Return NaN if idx is out of range. + * + * @notice Should better to use `data.getStore().get(dimIndex, dataIdx)` instead. + */ + SeriesData.prototype.get = function (dim, idx) { + var store = this._store; + var dimInfo = this._dimInfos[dim]; + if (dimInfo) { + return store.get(dimInfo.storeDimIndex, idx); + } + }; + /** + * @notice Should better to use `data.getStore().getByRawIndex(dimIndex, dataIdx)` instead. + */ + SeriesData.prototype.getByRawIndex = function (dim, rawIdx) { + var store = this._store; + var dimInfo = this._dimInfos[dim]; + if (dimInfo) { + return store.getByRawIndex(dimInfo.storeDimIndex, rawIdx); + } + }; + SeriesData.prototype.getIndices = function () { + return this._store.getIndices(); + }; + SeriesData.prototype.getDataExtent = function (dim) { + return this._store.getDataExtent(this._getStoreDimIndex(dim)); + }; + SeriesData.prototype.getSum = function (dim) { + return this._store.getSum(this._getStoreDimIndex(dim)); + }; + SeriesData.prototype.getMedian = function (dim) { + return this._store.getMedian(this._getStoreDimIndex(dim)); + }; + SeriesData.prototype.getValues = function (dimensions, idx) { + var _this = this; + var store = this._store; + return isArray(dimensions) ? store.getValues(map$1(dimensions, function (dim) { + return _this._getStoreDimIndex(dim); + }), idx) : store.getValues(dimensions); + }; + /** + * If value is NaN. Including '-' + * Only check the coord dimensions. + */ + SeriesData.prototype.hasValue = function (idx) { + var dataDimIndicesOnCoord = this._dimSummary.dataDimIndicesOnCoord; + for (var i = 0, len = dataDimIndicesOnCoord.length; i < len; i++) { + // Ordinal type originally can be string or number. + // But when an ordinal type is used on coord, it can + // not be string but only number. So we can also use isNaN. + if (isNaN(this._store.get(dataDimIndicesOnCoord[i], idx))) { + return false; + } + } + return true; + }; + /** + * Retrieve the index with given name + */ + SeriesData.prototype.indexOfName = function (name) { + for (var i = 0, len = this._store.count(); i < len; i++) { + if (this.getName(i) === name) { + return i; + } + } + return -1; + }; + SeriesData.prototype.getRawIndex = function (idx) { + return this._store.getRawIndex(idx); + }; + SeriesData.prototype.indexOfRawIndex = function (rawIndex) { + return this._store.indexOfRawIndex(rawIndex); + }; + /** + * Only support the dimension which inverted index created. + * Do not support other cases until required. + * @param dim concrete dim + * @param value ordinal index + * @return rawIndex + */ + SeriesData.prototype.rawIndexOf = function (dim, value) { + var invertedIndices = dim && this._invertedIndicesMap[dim]; + if ("development" !== 'production') { + if (!invertedIndices) { + throw new Error('Do not supported yet'); + } + } + var rawIndex = invertedIndices[value]; + if (rawIndex == null || isNaN(rawIndex)) { + return INDEX_NOT_FOUND; + } + return rawIndex; + }; + /** + * Retrieve the index of nearest value + * @param dim + * @param value + * @param [maxDistance=Infinity] + * @return If and only if multiple indices has + * the same value, they are put to the result. + */ + SeriesData.prototype.indicesOfNearest = function (dim, value, maxDistance) { + return this._store.indicesOfNearest(this._getStoreDimIndex(dim), value, maxDistance); + }; + SeriesData.prototype.each = function (dims, cb, ctx) { + + if (isFunction(dims)) { + ctx = cb; + cb = dims; + dims = []; + } + // ctxCompat just for compat echarts3 + var fCtx = ctx || this; + var dimIndices = map$1(normalizeDimensions(dims), this._getStoreDimIndex, this); + this._store.each(dimIndices, fCtx ? bind(cb, fCtx) : cb); + }; + SeriesData.prototype.filterSelf = function (dims, cb, ctx) { + + if (isFunction(dims)) { + ctx = cb; + cb = dims; + dims = []; + } + // ctxCompat just for compat echarts3 + var fCtx = ctx || this; + var dimIndices = map$1(normalizeDimensions(dims), this._getStoreDimIndex, this); + this._store = this._store.filter(dimIndices, fCtx ? bind(cb, fCtx) : cb); + return this; + }; + /** + * Select data in range. (For optimization of filter) + * (Manually inline code, support 5 million data filtering in data zoom.) + */ + SeriesData.prototype.selectRange = function (range) { + + var _this = this; + var innerRange = {}; + var dims = keys(range); + each(dims, function (dim) { + var dimIdx = _this._getStoreDimIndex(dim); + innerRange[dimIdx] = range[dim]; + }); + this._store = this._store.selectRange(innerRange); + return this; + }; + /* eslint-enable max-len */ + SeriesData.prototype.mapArray = function (dims, cb, ctx) { + + if (isFunction(dims)) { + ctx = cb; + cb = dims; + dims = []; + } + // ctxCompat just for compat echarts3 + ctx = ctx || this; + var result = []; + this.each(dims, function () { + result.push(cb && cb.apply(this, arguments)); + }, ctx); + return result; + }; + SeriesData.prototype.map = function (dims, cb, ctx, ctxCompat) { + + // ctxCompat just for compat echarts3 + var fCtx = ctx || ctxCompat || this; + var dimIndices = map$1(normalizeDimensions(dims), this._getStoreDimIndex, this); + var list = cloneListForMapAndSample(this); + list._store = this._store.map(dimIndices, fCtx ? bind(cb, fCtx) : cb); + return list; + }; + SeriesData.prototype.modify = function (dims, cb, ctx, ctxCompat) { + var _this = this; + // ctxCompat just for compat echarts3 + var fCtx = ctx || ctxCompat || this; + if ("development" !== 'production') { + each(normalizeDimensions(dims), function (dim) { + var dimInfo = _this.getDimensionInfo(dim); + if (!dimInfo.isCalculationCoord) { + console.error('Danger: only stack dimension can be modified'); + } + }); + } + var dimIndices = map$1(normalizeDimensions(dims), this._getStoreDimIndex, this); + // If do shallow clone here, if there are too many stacked series, + // it still cost lots of memory, because `_store.dimensions` are not shared. + // We should consider there probably be shallow clone happen in each series + // in consequent filter/map. + this._store.modify(dimIndices, fCtx ? bind(cb, fCtx) : cb); + }; + /** + * Large data down sampling on given dimension + * @param sampleIndex Sample index for name and id + */ + SeriesData.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) { + var list = cloneListForMapAndSample(this); + list._store = this._store.downSample(this._getStoreDimIndex(dimension), rate, sampleValue, sampleIndex); + return list; + }; + /** + * Large data down sampling using largest-triangle-three-buckets + * @param {string} valueDimension + * @param {number} targetCount + */ + SeriesData.prototype.lttbDownSample = function (valueDimension, rate) { + var list = cloneListForMapAndSample(this); + list._store = this._store.lttbDownSample(this._getStoreDimIndex(valueDimension), rate); + return list; + }; + SeriesData.prototype.getRawDataItem = function (idx) { + return this._store.getRawDataItem(idx); + }; + /** + * Get model of one data item. + */ + // TODO: Type of data item + SeriesData.prototype.getItemModel = function (idx) { + var hostModel = this.hostModel; + var dataItem = this.getRawDataItem(idx); + return new Model(dataItem, hostModel, hostModel && hostModel.ecModel); + }; + /** + * Create a data differ + */ + SeriesData.prototype.diff = function (otherList) { + var thisList = this; + return new DataDiffer(otherList ? otherList.getStore().getIndices() : [], this.getStore().getIndices(), function (idx) { + return getId(otherList, idx); + }, function (idx) { + return getId(thisList, idx); + }); + }; + /** + * Get visual property. + */ + SeriesData.prototype.getVisual = function (key) { + var visual = this._visual; + return visual && visual[key]; + }; + SeriesData.prototype.setVisual = function (kvObj, val) { + this._visual = this._visual || {}; + if (isObject$2(kvObj)) { + extend(this._visual, kvObj); + } else { + this._visual[kvObj] = val; + } + }; + /** + * Get visual property of single data item + */ + // eslint-disable-next-line + SeriesData.prototype.getItemVisual = function (idx, key) { + var itemVisual = this._itemVisuals[idx]; + var val = itemVisual && itemVisual[key]; + if (val == null) { + // Use global visual property + return this.getVisual(key); + } + return val; + }; + /** + * If exists visual property of single data item + */ + SeriesData.prototype.hasItemVisual = function () { + return this._itemVisuals.length > 0; + }; + /** + * Make sure itemVisual property is unique + */ + // TODO: use key to save visual to reduce memory. + SeriesData.prototype.ensureUniqueItemVisual = function (idx, key) { + var itemVisuals = this._itemVisuals; + var itemVisual = itemVisuals[idx]; + if (!itemVisual) { + itemVisual = itemVisuals[idx] = {}; + } + var val = itemVisual[key]; + if (val == null) { + val = this.getVisual(key); + // TODO Performance? + if (isArray(val)) { + val = val.slice(); + } else if (isObject$2(val)) { + val = extend({}, val); + } + itemVisual[key] = val; + } + return val; + }; + // eslint-disable-next-line + SeriesData.prototype.setItemVisual = function (idx, key, value) { + var itemVisual = this._itemVisuals[idx] || {}; + this._itemVisuals[idx] = itemVisual; + if (isObject$2(key)) { + extend(itemVisual, key); + } else { + itemVisual[key] = value; + } + }; + /** + * Clear itemVisuals and list visual. + */ + SeriesData.prototype.clearAllVisual = function () { + this._visual = {}; + this._itemVisuals = []; + }; + SeriesData.prototype.setLayout = function (key, val) { + isObject$2(key) ? extend(this._layout, key) : this._layout[key] = val; + }; + /** + * Get layout property. + */ + SeriesData.prototype.getLayout = function (key) { + return this._layout[key]; + }; + /** + * Get layout of single data item + */ + SeriesData.prototype.getItemLayout = function (idx) { + return this._itemLayouts[idx]; + }; + /** + * Set layout of single data item + */ + SeriesData.prototype.setItemLayout = function (idx, layout, merge) { + this._itemLayouts[idx] = merge ? extend(this._itemLayouts[idx] || {}, layout) : layout; + }; + /** + * Clear all layout of single data item + */ + SeriesData.prototype.clearItemLayouts = function () { + this._itemLayouts.length = 0; + }; + /** + * Set graphic element relative to data. It can be set as null + */ + SeriesData.prototype.setItemGraphicEl = function (idx, el) { + var seriesIndex = this.hostModel && this.hostModel.seriesIndex; + setCommonECData(seriesIndex, this.dataType, idx, el); + this._graphicEls[idx] = el; + }; + SeriesData.prototype.getItemGraphicEl = function (idx) { + return this._graphicEls[idx]; + }; + SeriesData.prototype.eachItemGraphicEl = function (cb, context) { + each(this._graphicEls, function (el, idx) { + if (el) { + cb && cb.call(context, el, idx); + } + }); + }; + /** + * Shallow clone a new list except visual and layout properties, and graph elements. + * New list only change the indices. + */ + SeriesData.prototype.cloneShallow = function (list) { + if (!list) { + list = new SeriesData(this._schema ? this._schema : map$1(this.dimensions, this._getDimInfo, this), this.hostModel); + } + transferProperties(list, this); + list._store = this._store; + return list; + }; + /** + * Wrap some method to add more feature + */ + SeriesData.prototype.wrapMethod = function (methodName, injectFunction) { + var originalMethod = this[methodName]; + if (!isFunction(originalMethod)) { + return; + } + this.__wrappedMethods = this.__wrappedMethods || []; + this.__wrappedMethods.push(methodName); + this[methodName] = function () { + var res = originalMethod.apply(this, arguments); + return injectFunction.apply(this, [res].concat(slice(arguments))); + }; + }; + // ---------------------------------------------------------- + // A work around for internal method visiting private member. + // ---------------------------------------------------------- + SeriesData.internalField = function () { + prepareInvertedIndex = function (data) { + var invertedIndicesMap = data._invertedIndicesMap; + each(invertedIndicesMap, function (invertedIndices, dim) { + var dimInfo = data._dimInfos[dim]; + // Currently, only dimensions that has ordinalMeta can create inverted indices. + var ordinalMeta = dimInfo.ordinalMeta; + var store = data._store; + if (ordinalMeta) { + invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array$1(ordinalMeta.categories.length); + // The default value of TypedArray is 0. To avoid miss + // mapping to 0, we should set it as INDEX_NOT_FOUND. + for (var i = 0; i < invertedIndices.length; i++) { + invertedIndices[i] = INDEX_NOT_FOUND; + } + for (var i = 0; i < store.count(); i++) { + // Only support the case that all values are distinct. + invertedIndices[store.get(dimInfo.storeDimIndex, i)] = i; + } + } + }); + }; + getIdNameFromStore = function (data, dimIdx, idx) { + return convertOptionIdName(data._getCategory(dimIdx, idx), null); + }; + /** + * @see the comment of `List['getId']`. + */ + getId = function (data, rawIndex) { + var id = data._idList[rawIndex]; + if (id == null && data._idDimIdx != null) { + id = getIdNameFromStore(data, data._idDimIdx, rawIndex); + } + if (id == null) { + id = ID_PREFIX + rawIndex; + } + return id; + }; + normalizeDimensions = function (dimensions) { + if (!isArray(dimensions)) { + dimensions = dimensions != null ? [dimensions] : []; + } + return dimensions; + }; + /** + * Data in excludeDimensions is copied, otherwise transferred. + */ + cloneListForMapAndSample = function (original) { + var list = new SeriesData(original._schema ? original._schema : map$1(original.dimensions, original._getDimInfo, original), original.hostModel); + // FIXME If needs stackedOn, value may already been stacked + transferProperties(list, original); + return list; + }; + transferProperties = function (target, source) { + each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) { + if (source.hasOwnProperty(propName)) { + target[propName] = source[propName]; + } + }); + target.__wrappedMethods = source.__wrappedMethods; + each(CLONE_PROPERTIES, function (propName) { + target[propName] = clone(source[propName]); + }); + target._calculationInfo = extend({}, source._calculationInfo); + }; + makeIdFromName = function (data, idx) { + var nameList = data._nameList; + var idList = data._idList; + var nameDimIdx = data._nameDimIdx; + var idDimIdx = data._idDimIdx; + var name = nameList[idx]; + var id = idList[idx]; + if (name == null && nameDimIdx != null) { + nameList[idx] = name = getIdNameFromStore(data, nameDimIdx, idx); + } + if (id == null && idDimIdx != null) { + idList[idx] = id = getIdNameFromStore(data, idDimIdx, idx); + } + if (id == null && name != null) { + var nameRepeatCount = data._nameRepeatCount; + var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1; + id = name; + if (nmCnt > 1) { + id += '__ec__' + nmCnt; + } + idList[idx] = id; + } + }; + }(); + return SeriesData; + }(); + + /** + * For outside usage compat (like echarts-gl are using it). + */ + function createDimensions(source, opt) { + return prepareSeriesDataSchema(source, opt).dimensions; + } + /** + * This method builds the relationship between: + * + "what the coord sys or series requires (see `coordDimensions`)", + * + "what the user defines (in `encode` and `dimensions`, see `opt.dimensionsDefine` and `opt.encodeDefine`)" + * + "what the data source provids (see `source`)". + * + * Some guess strategy will be adapted if user does not define something. + * If no 'value' dimension specified, the first no-named dimension will be + * named as 'value'. + * + * @return The results are always sorted by `storeDimIndex` asc. + */ + function prepareSeriesDataSchema( + // TODO: TYPE completeDimensions type + source, opt) { + if (!isSourceInstance(source)) { + source = createSourceFromSeriesDataOption(source); + } + opt = opt || {}; + var sysDims = opt.coordDimensions || []; + var dimsDef = opt.dimensionsDefine || source.dimensionsDefine || []; + var coordDimNameMap = createHashMap(); + var resultList = []; + var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount); + // Try to ignore unused dimensions if sharing a high dimension datastore + // 30 is an experience value. + var omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount); + var isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine; + var dataDimNameMap = isUsingSourceDimensionsDef ? ensureSourceDimNameMap(source) : createDimNameMap(dimsDef); + var encodeDef = opt.encodeDefine; + if (!encodeDef && opt.encodeDefaulter) { + encodeDef = opt.encodeDefaulter(source, dimCount); + } + var encodeDefMap = createHashMap(encodeDef); + var indicesMap = new CtorInt32Array(dimCount); + for (var i = 0; i < indicesMap.length; i++) { + indicesMap[i] = -1; + } + function getResultItem(dimIdx) { + var idx = indicesMap[dimIdx]; + if (idx < 0) { + var dimDefItemRaw = dimsDef[dimIdx]; + var dimDefItem = isObject(dimDefItemRaw) ? dimDefItemRaw : { + name: dimDefItemRaw + }; + var resultItem = new SeriesDimensionDefine(); + var userDimName = dimDefItem.name; + if (userDimName != null && dataDimNameMap.get(userDimName) != null) { + // Only if `series.dimensions` is defined in option + // displayName, will be set, and dimension will be displayed vertically in + // tooltip by default. + resultItem.name = resultItem.displayName = userDimName; + } + dimDefItem.type != null && (resultItem.type = dimDefItem.type); + dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName); + var newIdx = resultList.length; + indicesMap[dimIdx] = newIdx; + resultItem.storeDimIndex = dimIdx; + resultList.push(resultItem); + return resultItem; + } + return resultList[idx]; + } + if (!omitUnusedDimensions) { + for (var i = 0; i < dimCount; i++) { + getResultItem(i); + } + } + // Set `coordDim` and `coordDimIndex` by `encodeDefMap` and normalize `encodeDefMap`. + encodeDefMap.each(function (dataDimsRaw, coordDim) { + var dataDims = normalizeToArray(dataDimsRaw).slice(); + // Note: It is allowed that `dataDims.length` is `0`, e.g., options is + // `{encode: {x: -1, y: 1}}`. Should not filter anything in + // this case. + if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) { + encodeDefMap.set(coordDim, false); + return; + } + var validDataDims = encodeDefMap.set(coordDim, []); + each(dataDims, function (resultDimIdxOrName, idx) { + // The input resultDimIdx can be dim name or index. + var resultDimIdx = isString(resultDimIdxOrName) ? dataDimNameMap.get(resultDimIdxOrName) : resultDimIdxOrName; + if (resultDimIdx != null && resultDimIdx < dimCount) { + validDataDims[idx] = resultDimIdx; + applyDim(getResultItem(resultDimIdx), coordDim, idx); + } + }); + }); + // Apply templates and default order from `sysDims`. + var availDimIdx = 0; + each(sysDims, function (sysDimItemRaw) { + var coordDim; + var sysDimItemDimsDef; + var sysDimItemOtherDims; + var sysDimItem; + if (isString(sysDimItemRaw)) { + coordDim = sysDimItemRaw; + sysDimItem = {}; + } else { + sysDimItem = sysDimItemRaw; + coordDim = sysDimItem.name; + var ordinalMeta = sysDimItem.ordinalMeta; + sysDimItem.ordinalMeta = null; + sysDimItem = extend({}, sysDimItem); + sysDimItem.ordinalMeta = ordinalMeta; + // `coordDimIndex` should not be set directly. + sysDimItemDimsDef = sysDimItem.dimsDef; + sysDimItemOtherDims = sysDimItem.otherDims; + sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null; + } + var dataDims = encodeDefMap.get(coordDim); + // negative resultDimIdx means no need to mapping. + if (dataDims === false) { + return; + } + dataDims = normalizeToArray(dataDims); + // dimensions provides default dim sequences. + if (!dataDims.length) { + for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) { + while (availDimIdx < dimCount && getResultItem(availDimIdx).coordDim != null) { + availDimIdx++; + } + availDimIdx < dimCount && dataDims.push(availDimIdx++); + } + } + // Apply templates. + each(dataDims, function (resultDimIdx, coordDimIndex) { + var resultItem = getResultItem(resultDimIdx); + // Coordinate system has a higher priority on dim type than source. + if (isUsingSourceDimensionsDef && sysDimItem.type != null) { + resultItem.type = sysDimItem.type; + } + applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex); + if (resultItem.name == null && sysDimItemDimsDef) { + var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex]; + !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = { + name: sysDimItemDimsDefItem + }); + resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name; + resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip; + } + // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}} + sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims); + }); + }); + function applyDim(resultItem, coordDim, coordDimIndex) { + if (VISUAL_DIMENSIONS.get(coordDim) != null) { + resultItem.otherDims[coordDim] = coordDimIndex; + } else { + resultItem.coordDim = coordDim; + resultItem.coordDimIndex = coordDimIndex; + coordDimNameMap.set(coordDim, true); + } + } + // Make sure the first extra dim is 'value'. + var generateCoord = opt.generateCoord; + var generateCoordCount = opt.generateCoordCount; + var fromZero = generateCoordCount != null; + generateCoordCount = generateCoord ? generateCoordCount || 1 : 0; + var extra = generateCoord || 'value'; + function ifNoNameFillWithCoordName(resultItem) { + if (resultItem.name == null) { + // Duplication will be removed in the next step. + resultItem.name = resultItem.coordDim; + } + } + // Set dim `name` and other `coordDim` and other props. + if (!omitUnusedDimensions) { + for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) { + var resultItem = getResultItem(resultDimIdx); + var coordDim = resultItem.coordDim; + if (coordDim == null) { + // TODO no need to generate coordDim for isExtraCoord? + resultItem.coordDim = genCoordDimName(extra, coordDimNameMap, fromZero); + resultItem.coordDimIndex = 0; + // Series specified generateCoord is using out. + if (!generateCoord || generateCoordCount <= 0) { + resultItem.isExtraCoord = true; + } + generateCoordCount--; + } + ifNoNameFillWithCoordName(resultItem); + if (resultItem.type == null && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must + // Consider the case: + // { + // dataset: {source: [ + // ['2001', 123], + // ['2002', 456], + // ... + // ['The others', 987], + // ]}, + // series: {type: 'pie'} + // } + // The first column should better be treated as a "ordinal" although it + // might not be detected as an "ordinal" by `guessOrdinal`. + || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) { + resultItem.type = 'ordinal'; + } + } + } else { + each(resultList, function (resultItem) { + // PENDING: guessOrdinal or let user specify type: 'ordinal' manually? + ifNoNameFillWithCoordName(resultItem); + }); + // Sort dimensions: there are some rule that use the last dim as label, + // and for some latter travel process easier. + resultList.sort(function (item0, item1) { + return item0.storeDimIndex - item1.storeDimIndex; + }); + } + removeDuplication(resultList); + return new SeriesDataSchema({ + source: source, + dimensions: resultList, + fullDimensionCount: dimCount, + dimensionOmitted: omitUnusedDimensions + }); + } + function removeDuplication(result) { + var duplicationMap = createHashMap(); + for (var i = 0; i < result.length; i++) { + var dim = result[i]; + var dimOriginalName = dim.name; + var count = duplicationMap.get(dimOriginalName) || 0; + if (count > 0) { + // Starts from 0. + dim.name = dimOriginalName + (count - 1); + } + count++; + duplicationMap.set(dimOriginalName, count); + } + } + // ??? TODO + // Originally detect dimCount by data[0]. Should we + // optimize it to only by sysDims and dimensions and encode. + // So only necessary dims will be initialized. + // But + // (1) custom series should be considered. where other dims + // may be visited. + // (2) sometimes user need to calculate bubble size or use visualMap + // on other dimensions besides coordSys needed. + // So, dims that is not used by system, should be shared in data store? + function getDimCount(source, sysDims, dimsDef, optDimCount) { + // Note that the result dimCount should not small than columns count + // of data, otherwise `dataDimNameMap` checking will be incorrect. + var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0); + each(sysDims, function (sysDimItem) { + var sysDimItemDimsDef; + if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) { + dimCount = Math.max(dimCount, sysDimItemDimsDef.length); + } + }); + return dimCount; + } + function genCoordDimName(name, map, fromZero) { + if (fromZero || map.hasKey(name)) { + var i = 0; + while (map.hasKey(name + i)) { + i++; + } + name += i; + } + map.set(name, true); + return name; + } + + /** + * @class + * For example: + * { + * coordSysName: 'cartesian2d', + * coordSysDims: ['x', 'y', ...], + * axisMap: HashMap({ + * x: xAxisModel, + * y: yAxisModel + * }), + * categoryAxisMap: HashMap({ + * x: xAxisModel, + * y: undefined + * }), + * // The index of the first category axis in `coordSysDims`. + * // `null/undefined` means no category axis exists. + * firstCategoryDimIndex: 1, + * // To replace user specified encode. + * } + */ + var CoordSysInfo = /** @class */function () { + function CoordSysInfo(coordSysName) { + this.coordSysDims = []; + this.axisMap = createHashMap(); + this.categoryAxisMap = createHashMap(); + this.coordSysName = coordSysName; + } + return CoordSysInfo; + }(); + function getCoordSysInfoBySeries(seriesModel) { + var coordSysName = seriesModel.get('coordinateSystem'); + var result = new CoordSysInfo(coordSysName); + var fetch = fetchers[coordSysName]; + if (fetch) { + fetch(seriesModel, result, result.axisMap, result.categoryAxisMap); + return result; + } + } + var fetchers = { + cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) { + var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0]; + var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0]; + if ("development" !== 'production') { + if (!xAxisModel) { + throw new Error('xAxis "' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '" not found'); + } + if (!yAxisModel) { + throw new Error('yAxis "' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '" not found'); + } + } + result.coordSysDims = ['x', 'y']; + axisMap.set('x', xAxisModel); + axisMap.set('y', yAxisModel); + if (isCategory(xAxisModel)) { + categoryAxisMap.set('x', xAxisModel); + result.firstCategoryDimIndex = 0; + } + if (isCategory(yAxisModel)) { + categoryAxisMap.set('y', yAxisModel); + result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); + } + }, + singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) { + var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0]; + if ("development" !== 'production') { + if (!singleAxisModel) { + throw new Error('singleAxis should be specified.'); + } + } + result.coordSysDims = ['single']; + axisMap.set('single', singleAxisModel); + if (isCategory(singleAxisModel)) { + categoryAxisMap.set('single', singleAxisModel); + result.firstCategoryDimIndex = 0; + } + }, + polar: function (seriesModel, result, axisMap, categoryAxisMap) { + var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0]; + var radiusAxisModel = polarModel.findAxisModel('radiusAxis'); + var angleAxisModel = polarModel.findAxisModel('angleAxis'); + if ("development" !== 'production') { + if (!angleAxisModel) { + throw new Error('angleAxis option not found'); + } + if (!radiusAxisModel) { + throw new Error('radiusAxis option not found'); + } + } + result.coordSysDims = ['radius', 'angle']; + axisMap.set('radius', radiusAxisModel); + axisMap.set('angle', angleAxisModel); + if (isCategory(radiusAxisModel)) { + categoryAxisMap.set('radius', radiusAxisModel); + result.firstCategoryDimIndex = 0; + } + if (isCategory(angleAxisModel)) { + categoryAxisMap.set('angle', angleAxisModel); + result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); + } + }, + geo: function (seriesModel, result, axisMap, categoryAxisMap) { + result.coordSysDims = ['lng', 'lat']; + }, + parallel: function (seriesModel, result, axisMap, categoryAxisMap) { + var ecModel = seriesModel.ecModel; + var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex')); + var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice(); + each(parallelModel.parallelAxisIndex, function (axisIndex, index) { + var axisModel = ecModel.getComponent('parallelAxis', axisIndex); + var axisDim = coordSysDims[index]; + axisMap.set(axisDim, axisModel); + if (isCategory(axisModel)) { + categoryAxisMap.set(axisDim, axisModel); + if (result.firstCategoryDimIndex == null) { + result.firstCategoryDimIndex = index; + } + } + }); + } + }; + function isCategory(axisModel) { + return axisModel.get('type') === 'category'; + } + + /** + * Note that it is too complicated to support 3d stack by value + * (have to create two-dimension inverted index), so in 3d case + * we just support that stacked by index. + * + * @param seriesModel + * @param dimensionsInput The same as the input of . + * The input will be modified. + * @param opt + * @param opt.stackedCoordDimension Specify a coord dimension if needed. + * @param opt.byIndex=false + * @return calculationInfo + * { + * stackedDimension: string + * stackedByDimension: string + * isStackedByIndex: boolean + * stackedOverDimension: string + * stackResultDimension: string + * } + */ + function enableDataStack(seriesModel, dimensionsInput, opt) { + opt = opt || {}; + var byIndex = opt.byIndex; + var stackedCoordDimension = opt.stackedCoordDimension; + var dimensionDefineList; + var schema; + var store; + if (isLegacyDimensionsInput(dimensionsInput)) { + dimensionDefineList = dimensionsInput; + } else { + schema = dimensionsInput.schema; + dimensionDefineList = schema.dimensions; + store = dimensionsInput.store; + } + // Compatibal: when `stack` is set as '', do not stack. + var mayStack = !!(seriesModel && seriesModel.get('stack')); + var stackedByDimInfo; + var stackedDimInfo; + var stackResultDimension; + var stackedOverDimension; + each(dimensionDefineList, function (dimensionInfo, index) { + if (isString(dimensionInfo)) { + dimensionDefineList[index] = dimensionInfo = { + name: dimensionInfo + }; + } + if (mayStack && !dimensionInfo.isExtraCoord) { + // Find the first ordinal dimension as the stackedByDimInfo. + if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) { + stackedByDimInfo = dimensionInfo; + } + // Find the first stackable dimension as the stackedDimInfo. + if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) { + stackedDimInfo = dimensionInfo; + } + } + }); + if (stackedDimInfo && !byIndex && !stackedByDimInfo) { + // Compatible with previous design, value axis (time axis) only stack by index. + // It may make sense if the user provides elaborately constructed data. + byIndex = true; + } + // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`. + // That put stack logic in List is for using conveniently in echarts extensions, but it + // might not be a good way. + if (stackedDimInfo) { + // Use a weird name that not duplicated with other names. + // Also need to use seriesModel.id as postfix because different + // series may share same data store. The stack dimension needs to be distinguished. + stackResultDimension = '__\0ecstackresult_' + seriesModel.id; + stackedOverDimension = '__\0ecstackedover_' + seriesModel.id; + // Create inverted index to fast query index by value. + if (stackedByDimInfo) { + stackedByDimInfo.createInvertedIndices = true; + } + var stackedDimCoordDim_1 = stackedDimInfo.coordDim; + var stackedDimType = stackedDimInfo.type; + var stackedDimCoordIndex_1 = 0; + each(dimensionDefineList, function (dimensionInfo) { + if (dimensionInfo.coordDim === stackedDimCoordDim_1) { + stackedDimCoordIndex_1++; + } + }); + var stackedOverDimensionDefine = { + name: stackResultDimension, + coordDim: stackedDimCoordDim_1, + coordDimIndex: stackedDimCoordIndex_1, + type: stackedDimType, + isExtraCoord: true, + isCalculationCoord: true, + storeDimIndex: dimensionDefineList.length + }; + var stackResultDimensionDefine = { + name: stackedOverDimension, + // This dimension contains stack base (generally, 0), so do not set it as + // `stackedDimCoordDim` to avoid extent calculation, consider log scale. + coordDim: stackedOverDimension, + coordDimIndex: stackedDimCoordIndex_1 + 1, + type: stackedDimType, + isExtraCoord: true, + isCalculationCoord: true, + storeDimIndex: dimensionDefineList.length + 1 + }; + if (schema) { + if (store) { + stackedOverDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackedOverDimension, stackedDimType); + stackResultDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackResultDimension, stackedDimType); + } + schema.appendCalculationDimension(stackedOverDimensionDefine); + schema.appendCalculationDimension(stackResultDimensionDefine); + } else { + dimensionDefineList.push(stackedOverDimensionDefine); + dimensionDefineList.push(stackResultDimensionDefine); + } + } + return { + stackedDimension: stackedDimInfo && stackedDimInfo.name, + stackedByDimension: stackedByDimInfo && stackedByDimInfo.name, + isStackedByIndex: byIndex, + stackedOverDimension: stackedOverDimension, + stackResultDimension: stackResultDimension + }; + } + function isLegacyDimensionsInput(dimensionsInput) { + return !isSeriesDataSchema(dimensionsInput.schema); + } + function isDimensionStacked(data, stackedDim) { + // Each single series only maps to one pair of axis. So we do not need to + // check stackByDim, whatever stacked by a dimension or stacked by index. + return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension'); + } + function getStackedDimension(data, targetDim) { + return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim; + } + + function getCoordSysDimDefs(seriesModel, coordSysInfo) { + var coordSysName = seriesModel.get('coordinateSystem'); + var registeredCoordSys = CoordinateSystemManager.get(coordSysName); + var coordSysDimDefs; + if (coordSysInfo && coordSysInfo.coordSysDims) { + coordSysDimDefs = map(coordSysInfo.coordSysDims, function (dim) { + var dimInfo = { + name: dim + }; + var axisModel = coordSysInfo.axisMap.get(dim); + if (axisModel) { + var axisType = axisModel.get('type'); + dimInfo.type = getDimensionTypeByAxis(axisType); + } + return dimInfo; + }); + } + if (!coordSysDimDefs) { + // Get dimensions from registered coordinate system + coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y']; + } + return coordSysDimDefs; + } + function injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) { + var firstCategoryDimIndex; + var hasNameEncode; + coordSysInfo && each(dimInfoList, function (dimInfo, dimIndex) { + var coordDim = dimInfo.coordDim; + var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim); + if (categoryAxisModel) { + if (firstCategoryDimIndex == null) { + firstCategoryDimIndex = dimIndex; + } + dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta(); + if (createInvertedIndices) { + dimInfo.createInvertedIndices = true; + } + } + if (dimInfo.otherDims.itemName != null) { + hasNameEncode = true; + } + }); + if (!hasNameEncode && firstCategoryDimIndex != null) { + dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0; + } + return firstCategoryDimIndex; + } + /** + * Caution: there are side effects to `sourceManager` in this method. + * Should better only be called in `Series['getInitialData']`. + */ + function createSeriesData(sourceRaw, seriesModel, opt) { + opt = opt || {}; + var sourceManager = seriesModel.getSourceManager(); + var source; + var isOriginalSource = false; + if (sourceRaw) { + isOriginalSource = true; + source = createSourceFromSeriesDataOption(sourceRaw); + } else { + source = sourceManager.getSource(); + // Is series.data. not dataset. + isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL; + } + var coordSysInfo = getCoordSysInfoBySeries(seriesModel); + var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo); + var useEncodeDefaulter = opt.useEncodeDefaulter; + var encodeDefaulter = isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null; + var createDimensionOptions = { + coordDimensions: coordSysDimDefs, + generateCoord: opt.generateCoord, + encodeDefine: seriesModel.getEncode(), + encodeDefaulter: encodeDefaulter, + canOmitUnusedDimensions: !isOriginalSource + }; + var schema = prepareSeriesDataSchema(source, createDimensionOptions); + var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo); + var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null; + var stackCalculationInfo = enableDataStack(seriesModel, { + schema: schema, + store: store + }); + var data = new SeriesData(schema, seriesModel); + data.setCalculationInfo(stackCalculationInfo); + var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) { + // Use dataIndex as ordinal value in categoryAxis + return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex); + } : null; + data.hasItemOption = false; + data.initData( + // Try to reuse the data store in sourceManager if using dataset. + isOriginalSource ? source : store, null, dimValueGetter); + return data; + } + function isNeedCompleteOrdinalData(source) { + if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) { + var sampleItem = firstDataNotNull(source.data || []); + return !isArray(getDataItemValue(sampleItem)); + } + } + function firstDataNotNull(arr) { + var i = 0; + while (i < arr.length && arr[i] == null) { + i++; + } + return arr[i]; + } + + var Scale = /** @class */function () { + function Scale(setting) { + this._setting = setting || {}; + this._extent = [Infinity, -Infinity]; + } + Scale.prototype.getSetting = function (name) { + return this._setting[name]; + }; + /** + * Set extent from data + */ + Scale.prototype.unionExtent = function (other) { + var extent = this._extent; + other[0] < extent[0] && (extent[0] = other[0]); + other[1] > extent[1] && (extent[1] = other[1]); + // not setExtent because in log axis it may transformed to power + // this.setExtent(extent[0], extent[1]); + }; + /** + * Set extent from data + */ + Scale.prototype.unionExtentFromData = function (data, dim) { + this.unionExtent(data.getApproximateExtent(dim)); + }; + /** + * Get extent + * + * Extent is always in increase order. + */ + Scale.prototype.getExtent = function () { + return this._extent.slice(); + }; + /** + * Set extent + */ + Scale.prototype.setExtent = function (start, end) { + var thisExtent = this._extent; + if (!isNaN(start)) { + thisExtent[0] = start; + } + if (!isNaN(end)) { + thisExtent[1] = end; + } + }; + /** + * If value is in extent range + */ + Scale.prototype.isInExtentRange = function (value) { + return this._extent[0] <= value && this._extent[1] >= value; + }; + /** + * When axis extent depends on data and no data exists, + * axis ticks should not be drawn, which is named 'blank'. + */ + Scale.prototype.isBlank = function () { + return this._isBlank; + }; + /** + * When axis extent depends on data and no data exists, + * axis ticks should not be drawn, which is named 'blank'. + */ + Scale.prototype.setBlank = function (isBlank) { + this._isBlank = isBlank; + }; + return Scale; + }(); + enableClassManagement(Scale); + + var uidBase = 0; + var OrdinalMeta = /** @class */function () { + function OrdinalMeta(opt) { + this.categories = opt.categories || []; + this._needCollect = opt.needCollect; + this._deduplication = opt.deduplication; + this.uid = ++uidBase; + } + OrdinalMeta.createByAxisModel = function (axisModel) { + var option = axisModel.option; + var data = option.data; + var categories = data && map(data, getName); + return new OrdinalMeta({ + categories: categories, + needCollect: !categories, + // deduplication is default in axis. + deduplication: option.dedplication !== false + }); + }; + OrdinalMeta.prototype.getOrdinal = function (category) { + // @ts-ignore + return this._getOrCreateMap().get(category); + }; + /** + * @return The ordinal. If not found, return NaN. + */ + OrdinalMeta.prototype.parseAndCollect = function (category) { + var index; + var needCollect = this._needCollect; + // The value of category dim can be the index of the given category set. + // This feature is only supported when !needCollect, because we should + // consider a common case: a value is 2017, which is a number but is + // expected to be tread as a category. This case usually happen in dataset, + // where it happent to be no need of the index feature. + if (!isString(category) && !needCollect) { + return category; + } + // Optimize for the scenario: + // category is ['2012-01-01', '2012-01-02', ...], where the input + // data has been ensured not duplicate and is large data. + // Notice, if a dataset dimension provide categroies, usually echarts + // should remove duplication except user tell echarts dont do that + // (set axis.deduplication = false), because echarts do not know whether + // the values in the category dimension has duplication (consider the + // parallel-aqi example) + if (needCollect && !this._deduplication) { + index = this.categories.length; + this.categories[index] = category; + return index; + } + var map = this._getOrCreateMap(); + // @ts-ignore + index = map.get(category); + if (index == null) { + if (needCollect) { + index = this.categories.length; + this.categories[index] = category; + // @ts-ignore + map.set(category, index); + } else { + index = NaN; + } + } + return index; + }; + // Consider big data, do not create map until needed. + OrdinalMeta.prototype._getOrCreateMap = function () { + return this._map || (this._map = createHashMap(this.categories)); + }; + return OrdinalMeta; + }(); + function getName(obj) { + if (isObject(obj) && obj.value != null) { + return obj.value; + } else { + return obj + ''; + } + } + + function isValueNice(val) { + var exp10 = Math.pow(10, quantityExponent(Math.abs(val))); + var f = Math.abs(val / exp10); + return f === 0 || f === 1 || f === 2 || f === 3 || f === 5; + } + function isIntervalOrLogScale(scale) { + return scale.type === 'interval' || scale.type === 'log'; + } + /** + * @param extent Both extent[0] and extent[1] should be valid number. + * Should be extent[0] < extent[1]. + * @param splitNumber splitNumber should be >= 1. + */ + function intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) { + var result = {}; + var span = extent[1] - extent[0]; + var interval = result.interval = nice(span / splitNumber, true); + if (minInterval != null && interval < minInterval) { + interval = result.interval = minInterval; + } + if (maxInterval != null && interval > maxInterval) { + interval = result.interval = maxInterval; + } + // Tow more digital for tick. + var precision = result.intervalPrecision = getIntervalPrecision(interval); + // Niced extent inside original extent + var niceTickExtent = result.niceTickExtent = [round(Math.ceil(extent[0] / interval) * interval, precision), round(Math.floor(extent[1] / interval) * interval, precision)]; + fixExtent(niceTickExtent, extent); + return result; + } + function increaseInterval(interval) { + var exp10 = Math.pow(10, quantityExponent(interval)); + // Increase interval + var f = interval / exp10; + if (!f) { + f = 1; + } else if (f === 2) { + f = 3; + } else if (f === 3) { + f = 5; + } else { + // f is 1 or 5 + f *= 2; + } + return round(f * exp10); + } + /** + * @return interval precision + */ + function getIntervalPrecision(interval) { + // Tow more digital for tick. + return getPrecision(interval) + 2; + } + function clamp(niceTickExtent, idx, extent) { + niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]); + } + // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent. + function fixExtent(niceTickExtent, extent) { + !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]); + !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]); + clamp(niceTickExtent, 0, extent); + clamp(niceTickExtent, 1, extent); + if (niceTickExtent[0] > niceTickExtent[1]) { + niceTickExtent[0] = niceTickExtent[1]; + } + } + function contain$1(val, extent) { + return val >= extent[0] && val <= extent[1]; + } + function normalize$1(val, extent) { + if (extent[1] === extent[0]) { + return 0.5; + } + return (val - extent[0]) / (extent[1] - extent[0]); + } + function scale$2(val, extent) { + return val * (extent[1] - extent[0]) + extent[0]; + } + + var OrdinalScale = /** @class */function (_super) { + __extends(OrdinalScale, _super); + function OrdinalScale(setting) { + var _this = _super.call(this, setting) || this; + _this.type = 'ordinal'; + var ordinalMeta = _this.getSetting('ordinalMeta'); + // Caution: Should not use instanceof, consider ec-extensions using + // import approach to get OrdinalMeta class. + if (!ordinalMeta) { + ordinalMeta = new OrdinalMeta({}); + } + if (isArray(ordinalMeta)) { + ordinalMeta = new OrdinalMeta({ + categories: map(ordinalMeta, function (item) { + return isObject(item) ? item.value : item; + }) + }); + } + _this._ordinalMeta = ordinalMeta; + _this._extent = _this.getSetting('extent') || [0, ordinalMeta.categories.length - 1]; + return _this; + } + OrdinalScale.prototype.parse = function (val) { + // Caution: Math.round(null) will return `0` rather than `NaN` + if (val == null) { + return NaN; + } + return isString(val) ? this._ordinalMeta.getOrdinal(val) + // val might be float. + : Math.round(val); + }; + OrdinalScale.prototype.contain = function (rank) { + rank = this.parse(rank); + return contain$1(rank, this._extent) && this._ordinalMeta.categories[rank] != null; + }; + /** + * Normalize given rank or name to linear [0, 1] + * @param val raw ordinal number. + * @return normalized value in [0, 1]. + */ + OrdinalScale.prototype.normalize = function (val) { + val = this._getTickNumber(this.parse(val)); + return normalize$1(val, this._extent); + }; + /** + * @param val normalized value in [0, 1]. + * @return raw ordinal number. + */ + OrdinalScale.prototype.scale = function (val) { + val = Math.round(scale$2(val, this._extent)); + return this.getRawOrdinalNumber(val); + }; + OrdinalScale.prototype.getTicks = function () { + var ticks = []; + var extent = this._extent; + var rank = extent[0]; + while (rank <= extent[1]) { + ticks.push({ + value: rank + }); + rank++; + } + return ticks; + }; + OrdinalScale.prototype.getMinorTicks = function (splitNumber) { + // Not support. + return; + }; + /** + * @see `Ordinal['_ordinalNumbersByTick']` + */ + OrdinalScale.prototype.setSortInfo = function (info) { + if (info == null) { + this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null; + return; + } + var infoOrdinalNumbers = info.ordinalNumbers; + var ordinalsByTick = this._ordinalNumbersByTick = []; + var ticksByOrdinal = this._ticksByOrdinalNumber = []; + // Unnecessary support negative tick in `realtimeSort`. + var tickNum = 0; + var allCategoryLen = this._ordinalMeta.categories.length; + for (var len = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len; ++tickNum) { + var ordinalNumber = infoOrdinalNumbers[tickNum]; + ordinalsByTick[tickNum] = ordinalNumber; + ticksByOrdinal[ordinalNumber] = tickNum; + } + // Handle that `series.data` only covers part of the `axis.category.data`. + var unusedOrdinal = 0; + for (; tickNum < allCategoryLen; ++tickNum) { + while (ticksByOrdinal[unusedOrdinal] != null) { + unusedOrdinal++; + } + ordinalsByTick.push(unusedOrdinal); + ticksByOrdinal[unusedOrdinal] = tickNum; + } + }; + OrdinalScale.prototype._getTickNumber = function (ordinal) { + var ticksByOrdinalNumber = this._ticksByOrdinalNumber; + // also support ordinal out of range of `ordinalMeta.categories.length`, + // where ordinal numbers are used as tick value directly. + return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal; + }; + /** + * @usage + * ```js + * const ordinalNumber = ordinalScale.getRawOrdinalNumber(tickVal); + * + * // case0 + * const rawOrdinalValue = axisModel.getCategories()[ordinalNumber]; + * // case1 + * const rawOrdinalValue = this._ordinalMeta.categories[ordinalNumber]; + * // case2 + * const coord = axis.dataToCoord(ordinalNumber); + * ``` + * + * @param {OrdinalNumber} tickNumber index of display + */ + OrdinalScale.prototype.getRawOrdinalNumber = function (tickNumber) { + var ordinalNumbersByTick = this._ordinalNumbersByTick; + // tickNumber may be out of range, e.g., when axis max is larger than `ordinalMeta.categories.length`., + // where ordinal numbers are used as tick value directly. + return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber; + }; + /** + * Get item on tick + */ + OrdinalScale.prototype.getLabel = function (tick) { + if (!this.isBlank()) { + var ordinalNumber = this.getRawOrdinalNumber(tick.value); + var cateogry = this._ordinalMeta.categories[ordinalNumber]; + // Note that if no data, ordinalMeta.categories is an empty array. + // Return empty if it's not exist. + return cateogry == null ? '' : cateogry + ''; + } + }; + OrdinalScale.prototype.count = function () { + return this._extent[1] - this._extent[0] + 1; + }; + OrdinalScale.prototype.unionExtentFromData = function (data, dim) { + this.unionExtent(data.getApproximateExtent(dim)); + }; + /** + * @override + * If value is in extent range + */ + OrdinalScale.prototype.isInExtentRange = function (value) { + value = this._getTickNumber(value); + return this._extent[0] <= value && this._extent[1] >= value; + }; + OrdinalScale.prototype.getOrdinalMeta = function () { + return this._ordinalMeta; + }; + OrdinalScale.prototype.calcNiceTicks = function () {}; + OrdinalScale.prototype.calcNiceExtent = function () {}; + OrdinalScale.type = 'ordinal'; + return OrdinalScale; + }(Scale); + Scale.registerClass(OrdinalScale); + + var roundNumber = round; + var IntervalScale = /** @class */function (_super) { + __extends(IntervalScale, _super); + function IntervalScale() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = 'interval'; + // Step is calculated in adjustExtent. + _this._interval = 0; + _this._intervalPrecision = 2; + return _this; + } + IntervalScale.prototype.parse = function (val) { + return val; + }; + IntervalScale.prototype.contain = function (val) { + return contain$1(val, this._extent); + }; + IntervalScale.prototype.normalize = function (val) { + return normalize$1(val, this._extent); + }; + IntervalScale.prototype.scale = function (val) { + return scale$2(val, this._extent); + }; + IntervalScale.prototype.setExtent = function (start, end) { + var thisExtent = this._extent; + // start,end may be a Number like '25',so... + if (!isNaN(start)) { + thisExtent[0] = parseFloat(start); + } + if (!isNaN(end)) { + thisExtent[1] = parseFloat(end); + } + }; + IntervalScale.prototype.unionExtent = function (other) { + var extent = this._extent; + other[0] < extent[0] && (extent[0] = other[0]); + other[1] > extent[1] && (extent[1] = other[1]); + // unionExtent may called by it's sub classes + this.setExtent(extent[0], extent[1]); + }; + IntervalScale.prototype.getInterval = function () { + return this._interval; + }; + IntervalScale.prototype.setInterval = function (interval) { + this._interval = interval; + // Dropped auto calculated niceExtent and use user-set extent. + // We assume user wants to set both interval, min, max to get a better result. + this._niceExtent = this._extent.slice(); + this._intervalPrecision = getIntervalPrecision(interval); + }; + /** + * @param expandToNicedExtent Whether expand the ticks to niced extent. + */ + IntervalScale.prototype.getTicks = function (expandToNicedExtent) { + var interval = this._interval; + var extent = this._extent; + var niceTickExtent = this._niceExtent; + var intervalPrecision = this._intervalPrecision; + var ticks = []; + // If interval is 0, return []; + if (!interval) { + return ticks; + } + // Consider this case: using dataZoom toolbox, zoom and zoom. + var safeLimit = 10000; + if (extent[0] < niceTickExtent[0]) { + if (expandToNicedExtent) { + ticks.push({ + value: roundNumber(niceTickExtent[0] - interval, intervalPrecision) + }); + } else { + ticks.push({ + value: extent[0] + }); + } + } + var tick = niceTickExtent[0]; + while (tick <= niceTickExtent[1]) { + ticks.push({ + value: tick + }); + // Avoid rounding error + tick = roundNumber(tick + interval, intervalPrecision); + if (tick === ticks[ticks.length - 1].value) { + // Consider out of safe float point, e.g., + // -3711126.9907707 + 2e-10 === -3711126.9907707 + break; + } + if (ticks.length > safeLimit) { + return []; + } + } + // Consider this case: the last item of ticks is smaller + // than niceTickExtent[1] and niceTickExtent[1] === extent[1]. + var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1]; + if (extent[1] > lastNiceTick) { + if (expandToNicedExtent) { + ticks.push({ + value: roundNumber(lastNiceTick + interval, intervalPrecision) + }); + } else { + ticks.push({ + value: extent[1] + }); + } + } + return ticks; + }; + IntervalScale.prototype.getMinorTicks = function (splitNumber) { + var ticks = this.getTicks(true); + var minorTicks = []; + var extent = this.getExtent(); + for (var i = 1; i < ticks.length; i++) { + var nextTick = ticks[i]; + var prevTick = ticks[i - 1]; + var count = 0; + var minorTicksGroup = []; + var interval = nextTick.value - prevTick.value; + var minorInterval = interval / splitNumber; + while (count < splitNumber - 1) { + var minorTick = roundNumber(prevTick.value + (count + 1) * minorInterval); + // For the first and last interval. The count may be less than splitNumber. + if (minorTick > extent[0] && minorTick < extent[1]) { + minorTicksGroup.push(minorTick); + } + count++; + } + minorTicks.push(minorTicksGroup); + } + return minorTicks; + }; + /** + * @param opt.precision If 'auto', use nice presision. + * @param opt.pad returns 1.50 but not 1.5 if precision is 2. + */ + IntervalScale.prototype.getLabel = function (data, opt) { + if (data == null) { + return ''; + } + var precision = opt && opt.precision; + if (precision == null) { + precision = getPrecision(data.value) || 0; + } else if (precision === 'auto') { + // Should be more precise then tick. + precision = this._intervalPrecision; + } + // (1) If `precision` is set, 12.005 should be display as '12.00500'. + // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'. + var dataNum = roundNumber(data.value, precision, true); + return addCommas(dataNum); + }; + /** + * @param splitNumber By default `5`. + */ + IntervalScale.prototype.calcNiceTicks = function (splitNumber, minInterval, maxInterval) { + splitNumber = splitNumber || 5; + var extent = this._extent; + var span = extent[1] - extent[0]; + if (!isFinite(span)) { + return; + } + // User may set axis min 0 and data are all negative + // FIXME If it needs to reverse ? + if (span < 0) { + span = -span; + extent.reverse(); + } + var result = intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval); + this._intervalPrecision = result.intervalPrecision; + this._interval = result.interval; + this._niceExtent = result.niceTickExtent; + }; + IntervalScale.prototype.calcNiceExtent = function (opt) { + var extent = this._extent; + // If extent start and end are same, expand them + if (extent[0] === extent[1]) { + if (extent[0] !== 0) { + // Expand extent + // Note that extents can be both negative. See #13154 + var expandSize = Math.abs(extent[0]); + // In the fowllowing case + // Axis has been fixed max 100 + // Plus data are all 100 and axis extent are [100, 100]. + // Extend to the both side will cause expanded max is larger than fixed max. + // So only expand to the smaller side. + if (!opt.fixMax) { + extent[1] += expandSize / 2; + extent[0] -= expandSize / 2; + } else { + extent[0] -= expandSize / 2; + } + } else { + extent[1] = 1; + } + } + var span = extent[1] - extent[0]; + // If there are no data and extent are [Infinity, -Infinity] + if (!isFinite(span)) { + extent[0] = 0; + extent[1] = 1; + } + this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); + // let extent = this._extent; + var interval = this._interval; + if (!opt.fixMin) { + extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval); + } + if (!opt.fixMax) { + extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval); + } + }; + IntervalScale.prototype.setNiceExtent = function (min, max) { + this._niceExtent = [min, max]; + }; + IntervalScale.type = 'interval'; + return IntervalScale; + }(Scale); + Scale.registerClass(IntervalScale); + + /* global Float32Array */ + var supportFloat32Array = typeof Float32Array !== 'undefined'; + var Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array; + function createFloat32Array(arg) { + if (isArray(arg)) { + // Return self directly if don't support TypedArray. + return supportFloat32Array ? new Float32Array(arg) : arg; + } + // Else is number + return new Float32ArrayCtor(arg); + } + + var STACK_PREFIX = '__ec_stack_'; + function getSeriesStackId(seriesModel) { + return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex; + } + function getAxisKey(axis) { + return axis.dim + axis.index; + } + /** + * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined. + */ + function getLayoutOnAxis(opt) { + var params = []; + var baseAxis = opt.axis; + var axisKey = 'axis0'; + if (baseAxis.type !== 'category') { + return; + } + var bandWidth = baseAxis.getBandWidth(); + for (var i = 0; i < opt.count || 0; i++) { + params.push(defaults({ + bandWidth: bandWidth, + axisKey: axisKey, + stackId: STACK_PREFIX + i + }, opt)); + } + var widthAndOffsets = doCalBarWidthAndOffset(params); + var result = []; + for (var i = 0; i < opt.count; i++) { + var item = widthAndOffsets[axisKey][STACK_PREFIX + i]; + item.offsetCenter = item.offset + item.width / 2; + result.push(item); + } + return result; + } + function prepareLayoutBarSeries(seriesType, ecModel) { + var seriesModels = []; + ecModel.eachSeriesByType(seriesType, function (seriesModel) { + // Check series coordinate, do layout for cartesian2d only + if (isOnCartesian(seriesModel)) { + seriesModels.push(seriesModel); + } + }); + return seriesModels; + } + /** + * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent + * values. + * This works for time axes, value axes, and log axes. + * For a single time axis, return value is in the form like + * {'x_0': [1000000]}. + * The value of 1000000 is in milliseconds. + */ + function getValueAxesMinGaps(barSeries) { + /** + * Map from axis.index to values. + * For a single time axis, axisValues is in the form like + * {'x_0': [1495555200000, 1495641600000, 1495728000000]}. + * Items in axisValues[x], e.g. 1495555200000, are time values of all + * series. + */ + var axisValues = {}; + each(barSeries, function (seriesModel) { + var cartesian = seriesModel.coordinateSystem; + var baseAxis = cartesian.getBaseAxis(); + if (baseAxis.type !== 'time' && baseAxis.type !== 'value') { + return; + } + var data = seriesModel.getData(); + var key = baseAxis.dim + '_' + baseAxis.index; + var dimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim)); + var store = data.getStore(); + for (var i = 0, cnt = store.count(); i < cnt; ++i) { + var value = store.get(dimIdx, i); + if (!axisValues[key]) { + // No previous data for the axis + axisValues[key] = [value]; + } else { + // No value in previous series + axisValues[key].push(value); + } + // Ignore duplicated time values in the same axis + } + }); + + var axisMinGaps = {}; + for (var key in axisValues) { + if (axisValues.hasOwnProperty(key)) { + var valuesInAxis = axisValues[key]; + if (valuesInAxis) { + // Sort axis values into ascending order to calculate gaps + valuesInAxis.sort(function (a, b) { + return a - b; + }); + var min = null; + for (var j = 1; j < valuesInAxis.length; ++j) { + var delta = valuesInAxis[j] - valuesInAxis[j - 1]; + if (delta > 0) { + // Ignore 0 delta because they are of the same axis value + min = min === null ? delta : Math.min(min, delta); + } + } + // Set to null if only have one data + axisMinGaps[key] = min; + } + } + } + return axisMinGaps; + } + function makeColumnLayout(barSeries) { + var axisMinGaps = getValueAxesMinGaps(barSeries); + var seriesInfoList = []; + each(barSeries, function (seriesModel) { + var cartesian = seriesModel.coordinateSystem; + var baseAxis = cartesian.getBaseAxis(); + var axisExtent = baseAxis.getExtent(); + var bandWidth; + if (baseAxis.type === 'category') { + bandWidth = baseAxis.getBandWidth(); + } else if (baseAxis.type === 'value' || baseAxis.type === 'time') { + var key = baseAxis.dim + '_' + baseAxis.index; + var minGap = axisMinGaps[key]; + var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]); + var scale = baseAxis.scale.getExtent(); + var scaleSpan = Math.abs(scale[1] - scale[0]); + bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value + } else { + var data = seriesModel.getData(); + bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count(); + } + var barWidth = parsePercent$1(seriesModel.get('barWidth'), bandWidth); + var barMaxWidth = parsePercent$1(seriesModel.get('barMaxWidth'), bandWidth); + var barMinWidth = parsePercent$1( + // barMinWidth by default is 0.5 / 1 in cartesian. Because in value axis, + // the auto-calculated bar width might be less than 0.5 / 1. + seriesModel.get('barMinWidth') || (isInLargeMode(seriesModel) ? 0.5 : 1), bandWidth); + var barGap = seriesModel.get('barGap'); + var barCategoryGap = seriesModel.get('barCategoryGap'); + seriesInfoList.push({ + bandWidth: bandWidth, + barWidth: barWidth, + barMaxWidth: barMaxWidth, + barMinWidth: barMinWidth, + barGap: barGap, + barCategoryGap: barCategoryGap, + axisKey: getAxisKey(baseAxis), + stackId: getSeriesStackId(seriesModel) + }); + }); + return doCalBarWidthAndOffset(seriesInfoList); + } + function doCalBarWidthAndOffset(seriesInfoList) { + // Columns info on each category axis. Key is cartesian name + var columnsMap = {}; + each(seriesInfoList, function (seriesInfo, idx) { + var axisKey = seriesInfo.axisKey; + var bandWidth = seriesInfo.bandWidth; + var columnsOnAxis = columnsMap[axisKey] || { + bandWidth: bandWidth, + remainedWidth: bandWidth, + autoWidthCount: 0, + categoryGap: null, + gap: '20%', + stacks: {} + }; + var stacks = columnsOnAxis.stacks; + columnsMap[axisKey] = columnsOnAxis; + var stackId = seriesInfo.stackId; + if (!stacks[stackId]) { + columnsOnAxis.autoWidthCount++; + } + stacks[stackId] = stacks[stackId] || { + width: 0, + maxWidth: 0 + }; + // Caution: In a single coordinate system, these barGrid attributes + // will be shared by series. Consider that they have default values, + // only the attributes set on the last series will work. + // Do not change this fact unless there will be a break change. + var barWidth = seriesInfo.barWidth; + if (barWidth && !stacks[stackId].width) { + // See #6312, do not restrict width. + stacks[stackId].width = barWidth; + barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); + columnsOnAxis.remainedWidth -= barWidth; + } + var barMaxWidth = seriesInfo.barMaxWidth; + barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); + var barMinWidth = seriesInfo.barMinWidth; + barMinWidth && (stacks[stackId].minWidth = barMinWidth); + var barGap = seriesInfo.barGap; + barGap != null && (columnsOnAxis.gap = barGap); + var barCategoryGap = seriesInfo.barCategoryGap; + barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap); + }); + var result = {}; + each(columnsMap, function (columnsOnAxis, coordSysName) { + result[coordSysName] = {}; + var stacks = columnsOnAxis.stacks; + var bandWidth = columnsOnAxis.bandWidth; + var categoryGapPercent = columnsOnAxis.categoryGap; + if (categoryGapPercent == null) { + var columnCount = keys(stacks).length; + // More columns in one group + // the spaces between group is smaller. Or the column will be too thin. + categoryGapPercent = Math.max(35 - columnCount * 4, 15) + '%'; + } + var categoryGap = parsePercent$1(categoryGapPercent, bandWidth); + var barGapPercent = parsePercent$1(columnsOnAxis.gap, 1); + var remainedWidth = columnsOnAxis.remainedWidth; + var autoWidthCount = columnsOnAxis.autoWidthCount; + var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); + autoWidth = Math.max(autoWidth, 0); + // Find if any auto calculated bar exceeded maxBarWidth + each(stacks, function (column) { + var maxWidth = column.maxWidth; + var minWidth = column.minWidth; + if (!column.width) { + var finalWidth = autoWidth; + if (maxWidth && maxWidth < finalWidth) { + finalWidth = Math.min(maxWidth, remainedWidth); + } + // `minWidth` has higher priority. `minWidth` decide that whether the + // bar is able to be visible. So `minWidth` should not be restricted + // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In + // the extreme cases for `value` axis, bars are allowed to overlap + // with each other if `minWidth` specified. + if (minWidth && minWidth > finalWidth) { + finalWidth = minWidth; + } + if (finalWidth !== autoWidth) { + column.width = finalWidth; + remainedWidth -= finalWidth + barGapPercent * finalWidth; + autoWidthCount--; + } + } else { + // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as + // CSS does. Because barWidth can be a percent value, where + // `barMaxWidth` can be used to restrict the final width. + var finalWidth = column.width; + if (maxWidth) { + finalWidth = Math.min(finalWidth, maxWidth); + } + // `minWidth` has higher priority, as described above + if (minWidth) { + finalWidth = Math.max(finalWidth, minWidth); + } + column.width = finalWidth; + remainedWidth -= finalWidth + barGapPercent * finalWidth; + autoWidthCount--; + } + }); + // Recalculate width again + autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); + autoWidth = Math.max(autoWidth, 0); + var widthSum = 0; + var lastColumn; + each(stacks, function (column, idx) { + if (!column.width) { + column.width = autoWidth; + } + lastColumn = column; + widthSum += column.width * (1 + barGapPercent); + }); + if (lastColumn) { + widthSum -= lastColumn.width * barGapPercent; + } + var offset = -widthSum / 2; + each(stacks, function (column, stackId) { + result[coordSysName][stackId] = result[coordSysName][stackId] || { + bandWidth: bandWidth, + offset: offset, + width: column.width + }; + offset += column.width * (1 + barGapPercent); + }); + }); + return result; + } + function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) { + if (barWidthAndOffset && axis) { + var result = barWidthAndOffset[getAxisKey(axis)]; + if (result != null && seriesModel != null) { + return result[getSeriesStackId(seriesModel)]; + } + return result; + } + } + function layout(seriesType, ecModel) { + var seriesModels = prepareLayoutBarSeries(seriesType, ecModel); + var barWidthAndOffset = makeColumnLayout(seriesModels); + each(seriesModels, function (seriesModel) { + var data = seriesModel.getData(); + var cartesian = seriesModel.coordinateSystem; + var baseAxis = cartesian.getBaseAxis(); + var stackId = getSeriesStackId(seriesModel); + var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId]; + var columnOffset = columnLayoutInfo.offset; + var columnWidth = columnLayoutInfo.width; + data.setLayout({ + bandWidth: columnLayoutInfo.bandWidth, + offset: columnOffset, + size: columnWidth + }); + }); + } + // TODO: Do not support stack in large mode yet. + function createProgressiveLayout(seriesType) { + return { + seriesType: seriesType, + plan: createRenderPlanner(), + reset: function (seriesModel) { + if (!isOnCartesian(seriesModel)) { + return; + } + var data = seriesModel.getData(); + var cartesian = seriesModel.coordinateSystem; + var baseAxis = cartesian.getBaseAxis(); + var valueAxis = cartesian.getOtherAxis(baseAxis); + var valueDimIdx = data.getDimensionIndex(data.mapDimension(valueAxis.dim)); + var baseDimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim)); + var drawBackground = seriesModel.get('showBackground', true); + var valueDim = data.mapDimension(valueAxis.dim); + var stackResultDim = data.getCalculationInfo('stackResultDimension'); + var stacked = isDimensionStacked(data, valueDim) && !!data.getCalculationInfo('stackedOnSeries'); + var isValueAxisH = valueAxis.isHorizontal(); + var valueAxisStart = getValueAxisStart(baseAxis, valueAxis); + var isLarge = isInLargeMode(seriesModel); + var barMinHeight = seriesModel.get('barMinHeight') || 0; + var stackedDimIdx = stackResultDim && data.getDimensionIndex(stackResultDim); + // Layout info. + var columnWidth = data.getLayout('size'); + var columnOffset = data.getLayout('offset'); + return { + progress: function (params, data) { + var count = params.count; + var largePoints = isLarge && createFloat32Array(count * 3); + var largeBackgroundPoints = isLarge && drawBackground && createFloat32Array(count * 3); + var largeDataIndices = isLarge && createFloat32Array(count); + var coordLayout = cartesian.master.getRect(); + var bgSize = isValueAxisH ? coordLayout.width : coordLayout.height; + var dataIndex; + var store = data.getStore(); + var idxOffset = 0; + while ((dataIndex = params.next()) != null) { + var value = store.get(stacked ? stackedDimIdx : valueDimIdx, dataIndex); + var baseValue = store.get(baseDimIdx, dataIndex); + var baseCoord = valueAxisStart; + var startValue = void 0; + // Because of the barMinHeight, we can not use the value in + // stackResultDimension directly. + if (stacked) { + startValue = +value - store.get(valueDimIdx, dataIndex); + } + var x = void 0; + var y = void 0; + var width = void 0; + var height = void 0; + if (isValueAxisH) { + var coord = cartesian.dataToPoint([value, baseValue]); + if (stacked) { + var startCoord = cartesian.dataToPoint([startValue, baseValue]); + baseCoord = startCoord[0]; + } + x = baseCoord; + y = coord[1] + columnOffset; + width = coord[0] - baseCoord; + height = columnWidth; + if (Math.abs(width) < barMinHeight) { + width = (width < 0 ? -1 : 1) * barMinHeight; + } + } else { + var coord = cartesian.dataToPoint([baseValue, value]); + if (stacked) { + var startCoord = cartesian.dataToPoint([baseValue, startValue]); + baseCoord = startCoord[1]; + } + x = coord[0] + columnOffset; + y = baseCoord; + width = columnWidth; + height = coord[1] - baseCoord; + if (Math.abs(height) < barMinHeight) { + // Include zero to has a positive bar + height = (height <= 0 ? -1 : 1) * barMinHeight; + } + } + if (!isLarge) { + data.setItemLayout(dataIndex, { + x: x, + y: y, + width: width, + height: height + }); + } else { + largePoints[idxOffset] = x; + largePoints[idxOffset + 1] = y; + largePoints[idxOffset + 2] = isValueAxisH ? width : height; + if (largeBackgroundPoints) { + largeBackgroundPoints[idxOffset] = isValueAxisH ? coordLayout.x : x; + largeBackgroundPoints[idxOffset + 1] = isValueAxisH ? y : coordLayout.y; + largeBackgroundPoints[idxOffset + 2] = bgSize; + } + largeDataIndices[dataIndex] = dataIndex; + } + idxOffset += 3; + } + if (isLarge) { + data.setLayout({ + largePoints: largePoints, + largeDataIndices: largeDataIndices, + largeBackgroundPoints: largeBackgroundPoints, + valueAxisHorizontal: isValueAxisH + }); + } + } + }; + } + }; + } + function isOnCartesian(seriesModel) { + return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d'; + } + function isInLargeMode(seriesModel) { + return seriesModel.pipelineContext && seriesModel.pipelineContext.large; + } + // See cases in `test/bar-start.html` and `#7412`, `#8747`. + function getValueAxisStart(baseAxis, valueAxis) { + return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0)); + } + + // FIXME 公用? + var bisect = function (a, x, lo, hi) { + while (lo < hi) { + var mid = lo + hi >>> 1; + if (a[mid][1] < x) { + lo = mid + 1; + } else { + hi = mid; + } + } + return lo; + }; + var TimeScale = /** @class */function (_super) { + __extends(TimeScale, _super); + function TimeScale(settings) { + var _this = _super.call(this, settings) || this; + _this.type = 'time'; + return _this; + } + /** + * Get label is mainly for other components like dataZoom, tooltip. + */ + TimeScale.prototype.getLabel = function (tick) { + var useUTC = this.getSetting('useUTC'); + return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting('locale')); + }; + TimeScale.prototype.getFormattedLabel = function (tick, idx, labelFormatter) { + var isUTC = this.getSetting('useUTC'); + var lang = this.getSetting('locale'); + return leveledFormat(tick, idx, labelFormatter, lang, isUTC); + }; + /** + * @override + */ + TimeScale.prototype.getTicks = function () { + var interval = this._interval; + var extent = this._extent; + var ticks = []; + // If interval is 0, return []; + if (!interval) { + return ticks; + } + ticks.push({ + value: extent[0], + level: 0 + }); + var useUTC = this.getSetting('useUTC'); + var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent); + ticks = ticks.concat(innerTicks); + ticks.push({ + value: extent[1], + level: 0 + }); + return ticks; + }; + TimeScale.prototype.calcNiceExtent = function (opt) { + var extent = this._extent; + // If extent start and end are same, expand them + if (extent[0] === extent[1]) { + // Expand extent + extent[0] -= ONE_DAY; + extent[1] += ONE_DAY; + } + // If there are no data and extent are [Infinity, -Infinity] + if (extent[1] === -Infinity && extent[0] === Infinity) { + var d = new Date(); + extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate()); + extent[0] = extent[1] - ONE_DAY; + } + this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); + }; + TimeScale.prototype.calcNiceTicks = function (approxTickNum, minInterval, maxInterval) { + approxTickNum = approxTickNum || 10; + var extent = this._extent; + var span = extent[1] - extent[0]; + this._approxInterval = span / approxTickNum; + if (minInterval != null && this._approxInterval < minInterval) { + this._approxInterval = minInterval; + } + if (maxInterval != null && this._approxInterval > maxInterval) { + this._approxInterval = maxInterval; + } + var scaleIntervalsLen = scaleIntervals.length; + var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1); + // Interval that can be used to calculate ticks + this._interval = scaleIntervals[idx][1]; + // Min level used when picking ticks from top down. + // We check one more level to avoid the ticks are to sparse in some case. + this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0]; + }; + TimeScale.prototype.parse = function (val) { + // val might be float. + return isNumber(val) ? val : +parseDate(val); + }; + TimeScale.prototype.contain = function (val) { + return contain$1(this.parse(val), this._extent); + }; + TimeScale.prototype.normalize = function (val) { + return normalize$1(this.parse(val), this._extent); + }; + TimeScale.prototype.scale = function (val) { + return scale$2(val, this._extent); + }; + TimeScale.type = 'time'; + return TimeScale; + }(IntervalScale); + /** + * This implementation was originally copied from "d3.js" + * + * with some modifications made for this program. + * See the license statement at the head of this file. + */ + var scaleIntervals = [ + // Format interval + ['second', ONE_SECOND], ['minute', ONE_MINUTE], ['hour', ONE_HOUR], ['quarter-day', ONE_HOUR * 6], ['half-day', ONE_HOUR * 12], ['day', ONE_DAY * 1.2], ['half-week', ONE_DAY * 3.5], ['week', ONE_DAY * 7], ['month', ONE_DAY * 31], ['quarter', ONE_DAY * 95], ['half-year', ONE_YEAR / 2], ['year', ONE_YEAR] // 1Y + ]; + + function isUnitValueSame(unit, valueA, valueB, isUTC) { + var dateA = parseDate(valueA); + var dateB = parseDate(valueB); + var isSame = function (unit) { + return getUnitValue(dateA, unit, isUTC) === getUnitValue(dateB, unit, isUTC); + }; + var isSameYear = function () { + return isSame('year'); + }; + // const isSameHalfYear = () => isSameYear() && isSame('half-year'); + // const isSameQuater = () => isSameYear() && isSame('quarter'); + var isSameMonth = function () { + return isSameYear() && isSame('month'); + }; + var isSameDay = function () { + return isSameMonth() && isSame('day'); + }; + // const isSameHalfDay = () => isSameDay() && isSame('half-day'); + var isSameHour = function () { + return isSameDay() && isSame('hour'); + }; + var isSameMinute = function () { + return isSameHour() && isSame('minute'); + }; + var isSameSecond = function () { + return isSameMinute() && isSame('second'); + }; + var isSameMilliSecond = function () { + return isSameSecond() && isSame('millisecond'); + }; + switch (unit) { + case 'year': + return isSameYear(); + case 'month': + return isSameMonth(); + case 'day': + return isSameDay(); + case 'hour': + return isSameHour(); + case 'minute': + return isSameMinute(); + case 'second': + return isSameSecond(); + case 'millisecond': + return isSameMilliSecond(); + } + } + // const primaryUnitGetters = { + // year: fullYearGetterName(), + // month: monthGetterName(), + // day: dateGetterName(), + // hour: hoursGetterName(), + // minute: minutesGetterName(), + // second: secondsGetterName(), + // millisecond: millisecondsGetterName() + // }; + // const primaryUnitUTCGetters = { + // year: fullYearGetterName(true), + // month: monthGetterName(true), + // day: dateGetterName(true), + // hour: hoursGetterName(true), + // minute: minutesGetterName(true), + // second: secondsGetterName(true), + // millisecond: millisecondsGetterName(true) + // }; + // function moveTick(date: Date, unitName: TimeUnit, step: number, isUTC: boolean) { + // step = step || 1; + // switch (getPrimaryTimeUnit(unitName)) { + // case 'year': + // date[fullYearSetterName(isUTC)](date[fullYearGetterName(isUTC)]() + step); + // break; + // case 'month': + // date[monthSetterName(isUTC)](date[monthGetterName(isUTC)]() + step); + // break; + // case 'day': + // date[dateSetterName(isUTC)](date[dateGetterName(isUTC)]() + step); + // break; + // case 'hour': + // date[hoursSetterName(isUTC)](date[hoursGetterName(isUTC)]() + step); + // break; + // case 'minute': + // date[minutesSetterName(isUTC)](date[minutesGetterName(isUTC)]() + step); + // break; + // case 'second': + // date[secondsSetterName(isUTC)](date[secondsGetterName(isUTC)]() + step); + // break; + // case 'millisecond': + // date[millisecondsSetterName(isUTC)](date[millisecondsGetterName(isUTC)]() + step); + // break; + // } + // return date.getTime(); + // } + // const DATE_INTERVALS = [[8, 7.5], [4, 3.5], [2, 1.5]]; + // const MONTH_INTERVALS = [[6, 5.5], [3, 2.5], [2, 1.5]]; + // const MINUTES_SECONDS_INTERVALS = [[30, 30], [20, 20], [15, 15], [10, 10], [5, 5], [2, 2]]; + function getDateInterval(approxInterval, daysInMonth) { + approxInterval /= ONE_DAY; + return approxInterval > 16 ? 16 + // Math.floor(daysInMonth / 2) + 1 // In this case we only want one tick between two months. + : approxInterval > 7.5 ? 7 // TODO week 7 or day 8? + : approxInterval > 3.5 ? 4 : approxInterval > 1.5 ? 2 : 1; + } + function getMonthInterval(approxInterval) { + var APPROX_ONE_MONTH = 30 * ONE_DAY; + approxInterval /= APPROX_ONE_MONTH; + return approxInterval > 6 ? 6 : approxInterval > 3 ? 3 : approxInterval > 2 ? 2 : 1; + } + function getHourInterval(approxInterval) { + approxInterval /= ONE_HOUR; + return approxInterval > 12 ? 12 : approxInterval > 6 ? 6 : approxInterval > 3.5 ? 4 : approxInterval > 2 ? 2 : 1; + } + function getMinutesAndSecondsInterval(approxInterval, isMinutes) { + approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND; + return approxInterval > 30 ? 30 : approxInterval > 20 ? 20 : approxInterval > 15 ? 15 : approxInterval > 10 ? 10 : approxInterval > 5 ? 5 : approxInterval > 2 ? 2 : 1; + } + function getMillisecondsInterval(approxInterval) { + return nice(approxInterval, true); + } + function getFirstTimestampOfUnit(date, unitName, isUTC) { + var outDate = new Date(date); + switch (getPrimaryTimeUnit(unitName)) { + case 'year': + case 'month': + outDate[monthSetterName(isUTC)](0); + case 'day': + outDate[dateSetterName(isUTC)](1); + case 'hour': + outDate[hoursSetterName(isUTC)](0); + case 'minute': + outDate[minutesSetterName(isUTC)](0); + case 'second': + outDate[secondsSetterName(isUTC)](0); + outDate[millisecondsSetterName(isUTC)](0); + } + return outDate.getTime(); + } + function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent) { + var safeLimit = 10000; + var unitNames = timeUnits; + var iter = 0; + function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out) { + var date = new Date(minTimestamp); + var dateTime = minTimestamp; + var d = date[getMethodName](); + // if (isDate) { + // d -= 1; // Starts with 0; PENDING + // } + while (dateTime < maxTimestamp && dateTime <= extent[1]) { + out.push({ + value: dateTime + }); + d += interval; + date[setMethodName](d); + dateTime = date.getTime(); + } + // This extra tick is for calcuating ticks of next level. Will not been added to the final result + out.push({ + value: dateTime, + notAdd: true + }); + } + function addLevelTicks(unitName, lastLevelTicks, levelTicks) { + var newAddedTicks = []; + var isFirstLevel = !lastLevelTicks.length; + if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent[0], extent[1], isUTC)) { + return; + } + if (isFirstLevel) { + lastLevelTicks = [{ + // TODO Optimize. Not include so may ticks. + value: getFirstTimestampOfUnit(new Date(extent[0]), unitName, isUTC) + }, { + value: extent[1] + }]; + } + for (var i = 0; i < lastLevelTicks.length - 1; i++) { + var startTick = lastLevelTicks[i].value; + var endTick = lastLevelTicks[i + 1].value; + if (startTick === endTick) { + continue; + } + var interval = void 0; + var getterName = void 0; + var setterName = void 0; + var isDate = false; + switch (unitName) { + case 'year': + interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365)); + getterName = fullYearGetterName(isUTC); + setterName = fullYearSetterName(isUTC); + break; + case 'half-year': + case 'quarter': + case 'month': + interval = getMonthInterval(approxInterval); + getterName = monthGetterName(isUTC); + setterName = monthSetterName(isUTC); + break; + case 'week': // PENDING If week is added. Ignore day. + case 'half-week': + case 'day': + interval = getDateInterval(approxInterval); // Use 32 days and let interval been 16 + getterName = dateGetterName(isUTC); + setterName = dateSetterName(isUTC); + isDate = true; + break; + case 'half-day': + case 'quarter-day': + case 'hour': + interval = getHourInterval(approxInterval); + getterName = hoursGetterName(isUTC); + setterName = hoursSetterName(isUTC); + break; + case 'minute': + interval = getMinutesAndSecondsInterval(approxInterval, true); + getterName = minutesGetterName(isUTC); + setterName = minutesSetterName(isUTC); + break; + case 'second': + interval = getMinutesAndSecondsInterval(approxInterval, false); + getterName = secondsGetterName(isUTC); + setterName = secondsSetterName(isUTC); + break; + case 'millisecond': + interval = getMillisecondsInterval(approxInterval); + getterName = millisecondsGetterName(isUTC); + setterName = millisecondsSetterName(isUTC); + break; + } + addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks); + if (unitName === 'year' && levelTicks.length > 1 && i === 0) { + // Add nearest years to the left extent. + levelTicks.unshift({ + value: levelTicks[0].value - interval + }); + } + } + for (var i = 0; i < newAddedTicks.length; i++) { + levelTicks.push(newAddedTicks[i]); + } + // newAddedTicks.length && console.log(unitName, newAddedTicks); + return newAddedTicks; + } + var levelsTicks = []; + var currentLevelTicks = []; + var tickCount = 0; + var lastLevelTickCount = 0; + for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) { + var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]); + if (!isPrimaryTimeUnit(unitNames[i])) { + // TODO + continue; + } + addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks); + var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null; + if (primaryTimeUnit !== nextPrimaryTimeUnit) { + if (currentLevelTicks.length) { + lastLevelTickCount = tickCount; + // Remove the duplicate so the tick count can be precisely. + currentLevelTicks.sort(function (a, b) { + return a.value - b.value; + }); + var levelTicksRemoveDuplicated = []; + for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) { + var tickValue = currentLevelTicks[i_1].value; + if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) { + levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]); + if (tickValue >= extent[0] && tickValue <= extent[1]) { + tickCount++; + } + } + } + var targetTickNum = (extent[1] - extent[0]) / approxInterval; + // Added too much in this level and not too less in last level + if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) { + break; + } + // Only treat primary time unit as one level. + levelsTicks.push(levelTicksRemoveDuplicated); + if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) { + break; + } + } + // Reset if next unitName is primary + currentLevelTicks = []; + } + } + if ("development" !== 'production') { + if (iter >= safeLimit) { + warn('Exceed safe limit.'); + } + } + var levelsTicksInExtent = filter(map(levelsTicks, function (levelTicks) { + return filter(levelTicks, function (tick) { + return tick.value >= extent[0] && tick.value <= extent[1] && !tick.notAdd; + }); + }), function (levelTicks) { + return levelTicks.length > 0; + }); + var ticks = []; + var maxLevel = levelsTicksInExtent.length - 1; + for (var i = 0; i < levelsTicksInExtent.length; ++i) { + var levelTicks = levelsTicksInExtent[i]; + for (var k = 0; k < levelTicks.length; ++k) { + ticks.push({ + value: levelTicks[k].value, + level: maxLevel - i + }); + } + } + ticks.sort(function (a, b) { + return a.value - b.value; + }); + // Remove duplicates + var result = []; + for (var i = 0; i < ticks.length; ++i) { + if (i === 0 || ticks[i].value !== ticks[i - 1].value) { + result.push(ticks[i]); + } + } + return result; + } + Scale.registerClass(TimeScale); + + var scaleProto = Scale.prototype; + // FIXME:TS refactor: not good to call it directly with `this`? + var intervalScaleProto = IntervalScale.prototype; + var roundingErrorFix = round; + var mathFloor = Math.floor; + var mathCeil = Math.ceil; + var mathPow$1 = Math.pow; + var mathLog = Math.log; + var LogScale = /** @class */function (_super) { + __extends(LogScale, _super); + function LogScale() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = 'log'; + _this.base = 10; + _this._originalScale = new IntervalScale(); + // FIXME:TS actually used by `IntervalScale` + _this._interval = 0; + return _this; + } + /** + * @param Whether expand the ticks to niced extent. + */ + LogScale.prototype.getTicks = function (expandToNicedExtent) { + var originalScale = this._originalScale; + var extent = this._extent; + var originalExtent = originalScale.getExtent(); + var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent); + return map(ticks, function (tick) { + var val = tick.value; + var powVal = round(mathPow$1(this.base, val)); + // Fix #4158 + powVal = val === extent[0] && this._fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal; + powVal = val === extent[1] && this._fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal; + return { + value: powVal + }; + }, this); + }; + LogScale.prototype.setExtent = function (start, end) { + var base = mathLog(this.base); + // log(-Infinity) is NaN, so safe guard here + start = mathLog(Math.max(0, start)) / base; + end = mathLog(Math.max(0, end)) / base; + intervalScaleProto.setExtent.call(this, start, end); + }; + /** + * @return {number} end + */ + LogScale.prototype.getExtent = function () { + var base = this.base; + var extent = scaleProto.getExtent.call(this); + extent[0] = mathPow$1(base, extent[0]); + extent[1] = mathPow$1(base, extent[1]); + // Fix #4158 + var originalScale = this._originalScale; + var originalExtent = originalScale.getExtent(); + this._fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0])); + this._fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1])); + return extent; + }; + LogScale.prototype.unionExtent = function (extent) { + this._originalScale.unionExtent(extent); + var base = this.base; + extent[0] = mathLog(extent[0]) / mathLog(base); + extent[1] = mathLog(extent[1]) / mathLog(base); + scaleProto.unionExtent.call(this, extent); + }; + LogScale.prototype.unionExtentFromData = function (data, dim) { + // TODO + // filter value that <= 0 + this.unionExtent(data.getApproximateExtent(dim)); + }; + /** + * Update interval and extent of intervals for nice ticks + * @param approxTickNum default 10 Given approx tick number + */ + LogScale.prototype.calcNiceTicks = function (approxTickNum) { + approxTickNum = approxTickNum || 10; + var extent = this._extent; + var span = extent[1] - extent[0]; + if (span === Infinity || span <= 0) { + return; + } + var interval = quantity(span); + var err = approxTickNum / span * interval; + // Filter ticks to get closer to the desired count. + if (err <= 0.5) { + interval *= 10; + } + // Interval should be integer + while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) { + interval *= 10; + } + var niceExtent = [round(mathCeil(extent[0] / interval) * interval), round(mathFloor(extent[1] / interval) * interval)]; + this._interval = interval; + this._niceExtent = niceExtent; + }; + LogScale.prototype.calcNiceExtent = function (opt) { + intervalScaleProto.calcNiceExtent.call(this, opt); + this._fixMin = opt.fixMin; + this._fixMax = opt.fixMax; + }; + LogScale.prototype.parse = function (val) { + return val; + }; + LogScale.prototype.contain = function (val) { + val = mathLog(val) / mathLog(this.base); + return contain$1(val, this._extent); + }; + LogScale.prototype.normalize = function (val) { + val = mathLog(val) / mathLog(this.base); + return normalize$1(val, this._extent); + }; + LogScale.prototype.scale = function (val) { + val = scale$2(val, this._extent); + return mathPow$1(this.base, val); + }; + LogScale.type = 'log'; + return LogScale; + }(Scale); + var proto = LogScale.prototype; + proto.getMinorTicks = intervalScaleProto.getMinorTicks; + proto.getLabel = intervalScaleProto.getLabel; + function fixRoundingError(val, originalVal) { + return roundingErrorFix(val, getPrecision(originalVal)); + } + Scale.registerClass(LogScale); + + var ScaleRawExtentInfo = /** @class */function () { + function ScaleRawExtentInfo(scale, model, + // Usually: data extent from all series on this axis. + originalExtent) { + this._prepareParams(scale, model, originalExtent); + } + /** + * Parameters depending on outside (like model, user callback) + * are prepared and fixed here. + */ + ScaleRawExtentInfo.prototype._prepareParams = function (scale, model, + // Usually: data extent from all series on this axis. + dataExtent) { + if (dataExtent[1] < dataExtent[0]) { + dataExtent = [NaN, NaN]; + } + this._dataMin = dataExtent[0]; + this._dataMax = dataExtent[1]; + var isOrdinal = this._isOrdinal = scale.type === 'ordinal'; + this._needCrossZero = scale.type === 'interval' && model.getNeedCrossZero && model.getNeedCrossZero(); + var modelMinRaw = this._modelMinRaw = model.get('min', true); + if (isFunction(modelMinRaw)) { + // This callback always provides users the full data extent (before data is filtered). + this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({ + min: dataExtent[0], + max: dataExtent[1] + })); + } else if (modelMinRaw !== 'dataMin') { + this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw); + } + var modelMaxRaw = this._modelMaxRaw = model.get('max', true); + if (isFunction(modelMaxRaw)) { + // This callback always provides users the full data extent (before data is filtered). + this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({ + min: dataExtent[0], + max: dataExtent[1] + })); + } else if (modelMaxRaw !== 'dataMax') { + this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw); + } + if (isOrdinal) { + // FIXME: there is a flaw here: if there is no "block" data processor like `dataZoom`, + // and progressive rendering is using, here the category result might just only contain + // the processed chunk rather than the entire result. + this._axisDataLen = model.getCategories().length; + } else { + var boundaryGap = model.get('boundaryGap'); + var boundaryGapArr = isArray(boundaryGap) ? boundaryGap : [boundaryGap || 0, boundaryGap || 0]; + if (typeof boundaryGapArr[0] === 'boolean' || typeof boundaryGapArr[1] === 'boolean') { + if ("development" !== 'production') { + console.warn('Boolean type for boundaryGap is only ' + 'allowed for ordinal axis. Please use string in ' + 'percentage instead, e.g., "20%". Currently, ' + 'boundaryGap is set to be 0.'); + } + this._boundaryGapInner = [0, 0]; + } else { + this._boundaryGapInner = [parsePercent(boundaryGapArr[0], 1), parsePercent(boundaryGapArr[1], 1)]; + } + } + }; + /** + * Calculate extent by prepared parameters. + * This method has no external dependency and can be called duplicatedly, + * getting the same result. + * If parameters changed, should call this method to recalcuate. + */ + ScaleRawExtentInfo.prototype.calculate = function () { + // Notice: When min/max is not set (that is, when there are null/undefined, + // which is the most common case), these cases should be ensured: + // (1) For 'ordinal', show all axis.data. + // (2) For others: + // + `boundaryGap` is applied (if min/max set, boundaryGap is + // disabled). + // + If `needCrossZero`, min/max should be zero, otherwise, min/max should + // be the result that originalExtent enlarged by boundaryGap. + // (3) If no data, it should be ensured that `scale.setBlank` is set. + var isOrdinal = this._isOrdinal; + var dataMin = this._dataMin; + var dataMax = this._dataMax; + var axisDataLen = this._axisDataLen; + var boundaryGapInner = this._boundaryGapInner; + var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null; + // Currently if a `'value'` axis model min is specified as 'dataMin'/'dataMax', + // `boundaryGap` will not be used. It's the different from specifying as `null`/`undefined`. + var min = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum; + var max = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum; + // If `_modelMinNum`/`_modelMaxNum` is `null`/`undefined`, should not be fixed. + var minFixed = min != null; + var maxFixed = max != null; + if (min == null) { + min = isOrdinal ? axisDataLen ? 0 : NaN : dataMin - boundaryGapInner[0] * span; + } + if (max == null) { + max = isOrdinal ? axisDataLen ? axisDataLen - 1 : NaN : dataMax + boundaryGapInner[1] * span; + } + (min == null || !isFinite(min)) && (min = NaN); + (max == null || !isFinite(max)) && (max = NaN); + var isBlank = eqNaN(min) || eqNaN(max) || isOrdinal && !axisDataLen; + // If data extent modified, need to recalculated to ensure cross zero. + if (this._needCrossZero) { + // Axis is over zero and min is not set + if (min > 0 && max > 0 && !minFixed) { + min = 0; + // minFixed = true; + } + // Axis is under zero and max is not set + if (min < 0 && max < 0 && !maxFixed) { + max = 0; + // maxFixed = true; + } + // PENDING: + // When `needCrossZero` and all data is positive/negative, should it be ensured + // that the results processed by boundaryGap are positive/negative? + // If so, here `minFixed`/`maxFixed` need to be set. + } + + var determinedMin = this._determinedMin; + var determinedMax = this._determinedMax; + if (determinedMin != null) { + min = determinedMin; + minFixed = true; + } + if (determinedMax != null) { + max = determinedMax; + maxFixed = true; + } + // Ensure min/max be finite number or NaN here. (not to be null/undefined) + // `NaN` means min/max axis is blank. + return { + min: min, + max: max, + minFixed: minFixed, + maxFixed: maxFixed, + isBlank: isBlank + }; + }; + ScaleRawExtentInfo.prototype.modifyDataMinMax = function (minMaxName, val) { + if ("development" !== 'production') { + assert(!this.frozen); + } + this[DATA_MIN_MAX_ATTR[minMaxName]] = val; + }; + ScaleRawExtentInfo.prototype.setDeterminedMinMax = function (minMaxName, val) { + var attr = DETERMINED_MIN_MAX_ATTR[minMaxName]; + if ("development" !== 'production') { + assert(!this.frozen + // Earse them usually means logic flaw. + && this[attr] == null); + } + this[attr] = val; + }; + ScaleRawExtentInfo.prototype.freeze = function () { + // @ts-ignore + this.frozen = true; + }; + return ScaleRawExtentInfo; + }(); + var DETERMINED_MIN_MAX_ATTR = { + min: '_determinedMin', + max: '_determinedMax' + }; + var DATA_MIN_MAX_ATTR = { + min: '_dataMin', + max: '_dataMax' + }; + /** + * Get scale min max and related info only depends on model settings. + * This method can be called after coordinate system created. + * For example, in data processing stage. + * + * Scale extent info probably be required multiple times during a workflow. + * For example: + * (1) `dataZoom` depends it to get the axis extent in "100%" state. + * (2) `processor/extentCalculator` depends it to make sure whether axis extent is specified. + * (3) `coordSys.update` use it to finally decide the scale extent. + * But the callback of `min`/`max` should not be called multiple times. + * The code below should not be implemented repeatedly either. + * So we cache the result in the scale instance, which will be recreated at the beginning + * of the workflow (because `scale` instance will be recreated each round of the workflow). + */ + function ensureScaleRawExtentInfo(scale, model, + // Usually: data extent from all series on this axis. + originalExtent) { + // Do not permit to recreate. + var rawExtentInfo = scale.rawExtentInfo; + if (rawExtentInfo) { + return rawExtentInfo; + } + rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent); + // @ts-ignore + scale.rawExtentInfo = rawExtentInfo; + return rawExtentInfo; + } + function parseAxisModelMinMax(scale, minMax) { + return minMax == null ? null : eqNaN(minMax) ? NaN : scale.parse(minMax); + } + + /** + * Get axis scale extent before niced. + * Item of returned array can only be number (including Infinity and NaN). + * + * Caution: + * Precondition of calling this method: + * The scale extent has been initialized using series data extent via + * `scale.setExtent` or `scale.unionExtentFromData`; + */ + function getScaleExtent(scale, model) { + var scaleType = scale.type; + var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate(); + scale.setBlank(rawExtentResult.isBlank); + var min = rawExtentResult.min; + var max = rawExtentResult.max; + // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis + // is base axis + // FIXME + // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly. + // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent? + // Should not depend on series type `bar`? + // (3) Fix that might overlap when using dataZoom. + // (4) Consider other chart types using `barGrid`? + // See #6728, #4862, `test/bar-overflow-time-plot.html` + var ecModel = model.ecModel; + if (ecModel && scaleType === 'time' /* || scaleType === 'interval' */) { + var barSeriesModels = prepareLayoutBarSeries('bar', ecModel); + var isBaseAxisAndHasBarSeries_1 = false; + each(barSeriesModels, function (seriesModel) { + isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis; + }); + if (isBaseAxisAndHasBarSeries_1) { + // Calculate placement of bars on axis. TODO should be decoupled + // with barLayout + var barWidthAndOffset = makeColumnLayout(barSeriesModels); + // Adjust axis min and max to account for overflow + var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset); + min = adjustedScale.min; + max = adjustedScale.max; + } + } + return { + extent: [min, max], + // "fix" means "fixed", the value should not be + // changed in the subsequent steps. + fixMin: rawExtentResult.minFixed, + fixMax: rawExtentResult.maxFixed + }; + } + function adjustScaleForOverflow(min, max, model, + // Only support cartesian coord yet. + barWidthAndOffset) { + // Get Axis Length + var axisExtent = model.axis.getExtent(); + var axisLength = axisExtent[1] - axisExtent[0]; + // Get bars on current base axis and calculate min and max overflow + var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis); + if (barsOnCurrentAxis === undefined) { + return { + min: min, + max: max + }; + } + var minOverflow = Infinity; + each(barsOnCurrentAxis, function (item) { + minOverflow = Math.min(item.offset, minOverflow); + }); + var maxOverflow = -Infinity; + each(barsOnCurrentAxis, function (item) { + maxOverflow = Math.max(item.offset + item.width, maxOverflow); + }); + minOverflow = Math.abs(minOverflow); + maxOverflow = Math.abs(maxOverflow); + var totalOverFlow = minOverflow + maxOverflow; + // Calculate required buffer based on old range and overflow + var oldRange = max - min; + var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength; + var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange; + max += overflowBuffer * (maxOverflow / totalOverFlow); + min -= overflowBuffer * (minOverflow / totalOverFlow); + return { + min: min, + max: max + }; + } + // Precondition of calling this method: + // The scale extent has been initialized using series data extent via + // `scale.setExtent` or `scale.unionExtentFromData`; + function niceScaleExtent(scale, inModel) { + var model = inModel; + var extentInfo = getScaleExtent(scale, model); + var extent = extentInfo.extent; + var splitNumber = model.get('splitNumber'); + if (scale instanceof LogScale) { + scale.base = model.get('logBase'); + } + var scaleType = scale.type; + var interval = model.get('interval'); + var isIntervalOrTime = scaleType === 'interval' || scaleType === 'time'; + scale.setExtent(extent[0], extent[1]); + scale.calcNiceExtent({ + splitNumber: splitNumber, + fixMin: extentInfo.fixMin, + fixMax: extentInfo.fixMax, + minInterval: isIntervalOrTime ? model.get('minInterval') : null, + maxInterval: isIntervalOrTime ? model.get('maxInterval') : null + }); + // If some one specified the min, max. And the default calculated interval + // is not good enough. He can specify the interval. It is often appeared + // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard + // to be 60. + // FIXME + if (interval != null) { + scale.setInterval && scale.setInterval(interval); + } + } + /** + * @param axisType Default retrieve from model.type + */ + function createScaleByModel(model, axisType) { + axisType = axisType || model.get('type'); + if (axisType) { + switch (axisType) { + // Buildin scale + case 'category': + return new OrdinalScale({ + ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), + extent: [Infinity, -Infinity] + }); + case 'time': + return new TimeScale({ + locale: model.ecModel.getLocaleModel(), + useUTC: model.ecModel.get('useUTC') + }); + default: + // case 'value'/'interval', 'log', or others. + return new (Scale.getClass(axisType) || IntervalScale)(); + } + } + } + /** + * Check if the axis cross 0 + */ + function ifAxisCrossZero(axis) { + var dataExtent = axis.scale.getExtent(); + var min = dataExtent[0]; + var max = dataExtent[1]; + return !(min > 0 && max > 0 || min < 0 && max < 0); + } + /** + * @param axis + * @return Label formatter function. + * param: {number} tickValue, + * param: {number} idx, the index in all ticks. + * If category axis, this param is not required. + * return: {string} label string. + */ + function makeLabelFormatter(axis) { + var labelFormatter = axis.getLabelModel().get('formatter'); + var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null; + if (axis.scale.type === 'time') { + return function (tpl) { + return function (tick, idx) { + return axis.scale.getFormattedLabel(tick, idx, tpl); + }; + }(labelFormatter); + } else if (isString(labelFormatter)) { + return function (tpl) { + return function (tick) { + // For category axis, get raw value; for numeric axis, + // get formatted label like '1,333,444'. + var label = axis.scale.getLabel(tick); + var text = tpl.replace('{value}', label != null ? label : ''); + return text; + }; + }(labelFormatter); + } else if (isFunction(labelFormatter)) { + return function (cb) { + return function (tick, idx) { + // The original intention of `idx` is "the index of the tick in all ticks". + // But the previous implementation of category axis do not consider the + // `axisLabel.interval`, which cause that, for example, the `interval` is + // `1`, then the ticks "name5", "name7", "name9" are displayed, where the + // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep + // the definition here for back compatibility. + if (categoryTickStart != null) { + idx = tick.value - categoryTickStart; + } + return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? { + level: tick.level + } : null); + }; + }(labelFormatter); + } else { + return function (tick) { + return axis.scale.getLabel(tick); + }; + } + } + function getAxisRawValue(axis, tick) { + // In category axis with data zoom, tick is not the original + // index of axis.data. So tick should not be exposed to user + // in category axis. + return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value; + } + /** + * @param axis + * @return Be null/undefined if no labels. + */ + function estimateLabelUnionRect(axis) { + var axisModel = axis.model; + var scale = axis.scale; + if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) { + return; + } + var realNumberScaleTicks; + var tickCount; + var categoryScaleExtent = scale.getExtent(); + // Optimize for large category data, avoid call `getTicks()`. + if (scale instanceof OrdinalScale) { + tickCount = scale.count(); + } else { + realNumberScaleTicks = scale.getTicks(); + tickCount = realNumberScaleTicks.length; + } + var axisLabelModel = axis.getLabelModel(); + var labelFormatter = makeLabelFormatter(axis); + var rect; + var step = 1; + // Simple optimization for large amount of labels + if (tickCount > 40) { + step = Math.ceil(tickCount / 40); + } + for (var i = 0; i < tickCount; i += step) { + var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : { + value: categoryScaleExtent[0] + i + }; + var label = labelFormatter(tick, i); + var unrotatedSingleRect = axisLabelModel.getTextRect(label); + var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0); + rect ? rect.union(singleRect) : rect = singleRect; + } + return rect; + } + function rotateTextRect(textRect, rotate) { + var rotateRadians = rotate * Math.PI / 180; + var beforeWidth = textRect.width; + var beforeHeight = textRect.height; + var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians)); + var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians)); + var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight); + return rotatedRect; + } + /** + * @param model axisLabelModel or axisTickModel + * @return {number|String} Can be null|'auto'|number|function + */ + function getOptionCategoryInterval(model) { + var interval = model.get('interval'); + return interval == null ? 'auto' : interval; + } + /** + * Set `categoryInterval` as 0 implicitly indicates that + * show all labels regardless of overlap. + * @param {Object} axis axisModel.axis + */ + function shouldShowAllLabels(axis) { + return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0; + } + function getDataDimensionsOnAxis(data, axisDim) { + // Remove duplicated dat dimensions caused by `getStackedDimension`. + var dataDimMap = {}; + // Currently `mapDimensionsAll` will contain stack result dimension ('__\0ecstackresult'). + // PENDING: is it reasonable? Do we need to remove the original dim from "coord dim" since + // there has been stacked result dim? + each(data.mapDimensionsAll(axisDim), function (dataDim) { + // For example, the extent of the original dimension + // is [0.1, 0.5], the extent of the `stackResultDimension` + // is [7, 9], the final extent should NOT include [0.1, 0.5], + // because there is no graphic corresponding to [0.1, 0.5]. + // See the case in `test/area-stack.html` `main1`, where area line + // stack needs `yAxis` not start from 0. + dataDimMap[getStackedDimension(data, dataDim)] = true; + }); + return keys(dataDimMap); + } + function unionAxisExtentFromData(dataExtent, data, axisDim) { + if (data) { + each(getDataDimensionsOnAxis(data, axisDim), function (dim) { + var seriesExtent = data.getApproximateExtent(dim); + seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]); + seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]); + }); + } + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var AxisModelCommonMixin = /** @class */function () { + function AxisModelCommonMixin() {} + AxisModelCommonMixin.prototype.getNeedCrossZero = function () { + var option = this.option; + return !option.scale; + }; + /** + * Should be implemented by each axis model if necessary. + * @return coordinate system model + */ + AxisModelCommonMixin.prototype.getCoordSysModel = function () { + return; + }; + return AxisModelCommonMixin; + }(); + + /** + * Create a multi dimension List structure from seriesModel. + */ + function createList(seriesModel) { + return createSeriesData(null, seriesModel); + } + var dataStack$1 = { + isDimensionStacked: isDimensionStacked, + enableDataStack: enableDataStack, + getStackedDimension: getStackedDimension + }; + /** + * Create scale + * @param {Array.} dataExtent + * @param {Object|module:echarts/Model} option If `optoin.type` + * is secified, it can only be `'value'` currently. + */ + function createScale(dataExtent, option) { + var axisModel = option; + if (!(option instanceof Model)) { + axisModel = new Model(option); + // FIXME + // Currently AxisModelCommonMixin has nothing to do with the + // the requirements of `axisHelper.createScaleByModel`. For + // example the methods `getCategories` and `getOrdinalMeta` + // are required for `'category'` axis, and ecModel is required + // for `'time'` axis. But occasionally echarts-gl happened + // to only use `'value'` axis. + // zrUtil.mixin(axisModel, AxisModelCommonMixin); + } + + var scale = createScaleByModel(axisModel); + scale.setExtent(dataExtent[0], dataExtent[1]); + niceScaleExtent(scale, axisModel); + return scale; + } + /** + * Mixin common methods to axis model, + * + * Include methods + * `getFormattedLabels() => Array.` + * `getCategories() => Array.` + * `getMin(origin: boolean) => number` + * `getMax(origin: boolean) => number` + * `getNeedCrossZero() => boolean` + */ + function mixinAxisModelCommonMethods(Model) { + mixin(Model, AxisModelCommonMixin); + } + function createTextStyle$1(textStyleModel, opts) { + opts = opts || {}; + return createTextStyle(textStyleModel, null, null, opts.state !== 'normal'); + } + + var helper = /*#__PURE__*/Object.freeze({ + __proto__: null, + createList: createList, + getLayoutRect: getLayoutRect, + dataStack: dataStack$1, + createScale: createScale, + mixinAxisModelCommonMethods: mixinAxisModelCommonMethods, + getECData: getECData, + createTextStyle: createTextStyle$1, + createDimensions: createDimensions, + createSymbol: createSymbol, + enableHoverEmphasis: enableHoverEmphasis + }); + + var EPSILON$4 = 1e-8; + function isAroundEqual$1(a, b) { + return Math.abs(a - b) < EPSILON$4; + } + function contain$2(points, x, y) { + var w = 0; + var p = points[0]; + if (!p) { + return false; + } + for (var i = 1; i < points.length; i++) { + var p2 = points[i]; + w += windingLine(p[0], p[1], p2[0], p2[1], x, y); + p = p2; + } + var p0 = points[0]; + if (!isAroundEqual$1(p[0], p0[0]) || !isAroundEqual$1(p[1], p0[1])) { + w += windingLine(p[0], p[1], p0[0], p0[1], x, y); + } + return w !== 0; + } + + var TMP_TRANSFORM = []; + function transformPoints(points, transform) { + for (var p = 0; p < points.length; p++) { + applyTransform(points[p], points[p], transform); + } + } + function updateBBoxFromPoints(points, min$1, max$1, projection) { + for (var i = 0; i < points.length; i++) { + var p = points[i]; + if (projection) { + // projection may return null point. + p = projection.project(p); + } + if (p && isFinite(p[0]) && isFinite(p[1])) { + min(min$1, min$1, p); + max(max$1, max$1, p); + } + } + } + function centroid(points) { + var signedArea = 0; + var cx = 0; + var cy = 0; + var len = points.length; + var x0 = points[len - 1][0]; + var y0 = points[len - 1][1]; + // Polygon should been closed. + for (var i = 0; i < len; i++) { + var x1 = points[i][0]; + var y1 = points[i][1]; + var a = x0 * y1 - x1 * y0; + signedArea += a; + cx += (x0 + x1) * a; + cy += (y0 + y1) * a; + x0 = x1; + y0 = y1; + } + return signedArea ? [cx / signedArea / 3, cy / signedArea / 3, signedArea] : [points[0][0] || 0, points[0][1] || 0]; + } + var Region = /** @class */function () { + function Region(name) { + this.name = name; + } + Region.prototype.setCenter = function (center) { + this._center = center; + }; + /** + * Get center point in data unit. That is, + * for GeoJSONRegion, the unit is lat/lng, + * for GeoSVGRegion, the unit is SVG local coord. + */ + Region.prototype.getCenter = function () { + var center = this._center; + if (!center) { + // In most cases there are no need to calculate this center. + // So calculate only when called. + center = this._center = this.calcCenter(); + } + return center; + }; + return Region; + }(); + var GeoJSONPolygonGeometry = /** @class */function () { + function GeoJSONPolygonGeometry(exterior, interiors) { + this.type = 'polygon'; + this.exterior = exterior; + this.interiors = interiors; + } + return GeoJSONPolygonGeometry; + }(); + var GeoJSONLineStringGeometry = /** @class */function () { + function GeoJSONLineStringGeometry(points) { + this.type = 'linestring'; + this.points = points; + } + return GeoJSONLineStringGeometry; + }(); + var GeoJSONRegion = /** @class */function (_super) { + __extends(GeoJSONRegion, _super); + function GeoJSONRegion(name, geometries, cp) { + var _this = _super.call(this, name) || this; + _this.type = 'geoJSON'; + _this.geometries = geometries; + _this._center = cp && [cp[0], cp[1]]; + return _this; + } + GeoJSONRegion.prototype.calcCenter = function () { + var geometries = this.geometries; + var largestGeo; + var largestGeoSize = 0; + for (var i = 0; i < geometries.length; i++) { + var geo = geometries[i]; + var exterior = geo.exterior; + // Simple trick to use points count instead of polygon area as region size. + // Ignore linestring + var size = exterior && exterior.length; + if (size > largestGeoSize) { + largestGeo = geo; + largestGeoSize = size; + } + } + if (largestGeo) { + return centroid(largestGeo.exterior); + } + // from bounding rect by default. + var rect = this.getBoundingRect(); + return [rect.x + rect.width / 2, rect.y + rect.height / 2]; + }; + GeoJSONRegion.prototype.getBoundingRect = function (projection) { + var rect = this._rect; + // Always recalculate if using projection. + if (rect && !projection) { + return rect; + } + var min = [Infinity, Infinity]; + var max = [-Infinity, -Infinity]; + var geometries = this.geometries; + each(geometries, function (geo) { + if (geo.type === 'polygon') { + // Doesn't consider hole + updateBBoxFromPoints(geo.exterior, min, max, projection); + } else { + each(geo.points, function (points) { + updateBBoxFromPoints(points, min, max, projection); + }); + } + }); + // Normalie invalid bounding. + if (!(isFinite(min[0]) && isFinite(min[1]) && isFinite(max[0]) && isFinite(max[1]))) { + min[0] = min[1] = max[0] = max[1] = 0; + } + rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]); + if (!projection) { + this._rect = rect; + } + return rect; + }; + GeoJSONRegion.prototype.contain = function (coord) { + var rect = this.getBoundingRect(); + var geometries = this.geometries; + if (!rect.contain(coord[0], coord[1])) { + return false; + } + loopGeo: for (var i = 0, len = geometries.length; i < len; i++) { + var geo = geometries[i]; + // Only support polygon. + if (geo.type !== 'polygon') { + continue; + } + var exterior = geo.exterior; + var interiors = geo.interiors; + if (contain$2(exterior, coord[0], coord[1])) { + // Not in the region if point is in the hole. + for (var k = 0; k < (interiors ? interiors.length : 0); k++) { + if (contain$2(interiors[k], coord[0], coord[1])) { + continue loopGeo; + } + } + return true; + } + } + return false; + }; + /** + * Transform the raw coords to target bounding. + * @param x + * @param y + * @param width + * @param height + */ + GeoJSONRegion.prototype.transformTo = function (x, y, width, height) { + var rect = this.getBoundingRect(); + var aspect = rect.width / rect.height; + if (!width) { + width = aspect * height; + } else if (!height) { + height = width / aspect; + } + var target = new BoundingRect(x, y, width, height); + var transform = rect.calculateTransform(target); + var geometries = this.geometries; + for (var i = 0; i < geometries.length; i++) { + var geo = geometries[i]; + if (geo.type === 'polygon') { + transformPoints(geo.exterior, transform); + each(geo.interiors, function (interior) { + transformPoints(interior, transform); + }); + } else { + each(geo.points, function (points) { + transformPoints(points, transform); + }); + } + } + rect = this._rect; + rect.copy(target); + // Update center + this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2]; + }; + GeoJSONRegion.prototype.cloneShallow = function (name) { + name == null && (name = this.name); + var newRegion = new GeoJSONRegion(name, this.geometries, this._center); + newRegion._rect = this._rect; + newRegion.transformTo = null; // Simply avoid to be called. + return newRegion; + }; + return GeoJSONRegion; + }(Region); + var GeoSVGRegion = /** @class */function (_super) { + __extends(GeoSVGRegion, _super); + function GeoSVGRegion(name, elOnlyForCalculate) { + var _this = _super.call(this, name) || this; + _this.type = 'geoSVG'; + _this._elOnlyForCalculate = elOnlyForCalculate; + return _this; + } + GeoSVGRegion.prototype.calcCenter = function () { + var el = this._elOnlyForCalculate; + var rect = el.getBoundingRect(); + var center = [rect.x + rect.width / 2, rect.y + rect.height / 2]; + var mat = identity(TMP_TRANSFORM); + var target = el; + while (target && !target.isGeoSVGGraphicRoot) { + mul$1(mat, target.getLocalTransform(), mat); + target = target.parent; + } + invert(mat, mat); + applyTransform(center, center, mat); + return center; + }; + return GeoSVGRegion; + }(Region); + + function decode(json) { + if (!json.UTF8Encoding) { + return json; + } + var jsonCompressed = json; + var encodeScale = jsonCompressed.UTF8Scale; + if (encodeScale == null) { + encodeScale = 1024; + } + var features = jsonCompressed.features; + each(features, function (feature) { + var geometry = feature.geometry; + var encodeOffsets = geometry.encodeOffsets; + var coordinates = geometry.coordinates; + // Geometry may be appeded manually in the script after json loaded. + // In this case this geometry is usually not encoded. + if (!encodeOffsets) { + return; + } + switch (geometry.type) { + case 'LineString': + geometry.coordinates = decodeRing(coordinates, encodeOffsets, encodeScale); + break; + case 'Polygon': + decodeRings(coordinates, encodeOffsets, encodeScale); + break; + case 'MultiLineString': + decodeRings(coordinates, encodeOffsets, encodeScale); + break; + case 'MultiPolygon': + each(coordinates, function (rings, idx) { + return decodeRings(rings, encodeOffsets[idx], encodeScale); + }); + } + }); + // Has been decoded + jsonCompressed.UTF8Encoding = false; + return jsonCompressed; + } + function decodeRings(rings, encodeOffsets, encodeScale) { + for (var c = 0; c < rings.length; c++) { + rings[c] = decodeRing(rings[c], encodeOffsets[c], encodeScale); + } + } + function decodeRing(coordinate, encodeOffsets, encodeScale) { + var result = []; + var prevX = encodeOffsets[0]; + var prevY = encodeOffsets[1]; + for (var i = 0; i < coordinate.length; i += 2) { + var x = coordinate.charCodeAt(i) - 64; + var y = coordinate.charCodeAt(i + 1) - 64; + // ZigZag decoding + x = x >> 1 ^ -(x & 1); + y = y >> 1 ^ -(y & 1); + // Delta deocding + x += prevX; + y += prevY; + prevX = x; + prevY = y; + // Dequantize + result.push([x / encodeScale, y / encodeScale]); + } + return result; + } + function parseGeoJSON(geoJson, nameProperty) { + geoJson = decode(geoJson); + return map(filter(geoJson.features, function (featureObj) { + // Output of mapshaper may have geometry null + return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0; + }), function (featureObj) { + var properties = featureObj.properties; + var geo = featureObj.geometry; + var geometries = []; + switch (geo.type) { + case 'Polygon': + var coordinates = geo.coordinates; + // According to the GeoJSON specification. + // First must be exterior, and the rest are all interior(holes). + geometries.push(new GeoJSONPolygonGeometry(coordinates[0], coordinates.slice(1))); + break; + case 'MultiPolygon': + each(geo.coordinates, function (item) { + if (item[0]) { + geometries.push(new GeoJSONPolygonGeometry(item[0], item.slice(1))); + } + }); + break; + case 'LineString': + geometries.push(new GeoJSONLineStringGeometry([geo.coordinates])); + break; + case 'MultiLineString': + geometries.push(new GeoJSONLineStringGeometry(geo.coordinates)); + } + var region = new GeoJSONRegion(properties[nameProperty || 'name'], geometries, properties.cp); + region.properties = properties; + return region; + }); + } + + var number = /*#__PURE__*/Object.freeze({ + __proto__: null, + linearMap: linearMap, + round: round, + asc: asc, + getPrecision: getPrecision, + getPrecisionSafe: getPrecisionSafe, + getPixelPrecision: getPixelPrecision, + getPercentWithPrecision: getPercentWithPrecision, + MAX_SAFE_INTEGER: MAX_SAFE_INTEGER, + remRadian: remRadian, + isRadianAroundZero: isRadianAroundZero, + parseDate: parseDate, + quantity: quantity, + quantityExponent: quantityExponent, + nice: nice, + quantile: quantile, + reformIntervals: reformIntervals, + isNumeric: isNumeric, + numericToNumber: numericToNumber + }); + + var time = /*#__PURE__*/Object.freeze({ + __proto__: null, + parse: parseDate, + format: format + }); + + var graphic$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + extendShape: extendShape, + extendPath: extendPath, + makePath: makePath, + makeImage: makeImage, + mergePath: mergePath$1, + resizePath: resizePath, + createIcon: createIcon, + updateProps: updateProps, + initProps: initProps, + getTransform: getTransform, + clipPointsByRect: clipPointsByRect, + clipRectByRect: clipRectByRect, + registerShape: registerShape, + getShapeClass: getShapeClass, + Group: Group, + Image: ZRImage, + Text: ZRText, + Circle: Circle, + Ellipse: Ellipse, + Sector: Sector, + Ring: Ring, + Polygon: Polygon, + Polyline: Polyline, + Rect: Rect, + Line: Line, + BezierCurve: BezierCurve, + Arc: Arc, + IncrementalDisplayable: IncrementalDisplayable, + CompoundPath: CompoundPath, + LinearGradient: LinearGradient, + RadialGradient: RadialGradient, + BoundingRect: BoundingRect + }); + + var format$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + addCommas: addCommas, + toCamelCase: toCamelCase, + normalizeCssArray: normalizeCssArray$1, + encodeHTML: encodeHTML, + formatTpl: formatTpl, + getTooltipMarker: getTooltipMarker, + formatTime: formatTime, + capitalFirst: capitalFirst, + truncateText: truncateText, + getTextRect: getTextRect + }); + + var util$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + map: map, + each: each, + indexOf: indexOf, + inherits: inherits, + reduce: reduce, + filter: filter, + bind: bind, + curry: curry, + isArray: isArray, + isString: isString, + isObject: isObject, + isFunction: isFunction, + extend: extend, + defaults: defaults, + clone: clone, + merge: merge + }); + + var inner$5 = makeInner(); + function createAxisLabels(axis) { + // Only ordinal scale support tick interval + return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis); + } + /** + * @param {module:echats/coord/Axis} axis + * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea. + * @return {Object} { + * ticks: Array. + * tickCategoryInterval: number + * } + */ + function createAxisTicks(axis, tickModel) { + // Only ordinal scale support tick interval + return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : { + ticks: map(axis.scale.getTicks(), function (tick) { + return tick.value; + }) + }; + } + function makeCategoryLabels(axis) { + var labelModel = axis.getLabelModel(); + var result = makeCategoryLabelsActually(axis, labelModel); + return !labelModel.get('show') || axis.scale.isBlank() ? { + labels: [], + labelCategoryInterval: result.labelCategoryInterval + } : result; + } + function makeCategoryLabelsActually(axis, labelModel) { + var labelsCache = getListCache(axis, 'labels'); + var optionLabelInterval = getOptionCategoryInterval(labelModel); + var result = listCacheGet(labelsCache, optionLabelInterval); + if (result) { + return result; + } + var labels; + var numericLabelInterval; + if (isFunction(optionLabelInterval)) { + labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval); + } else { + numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval; + labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval); + } + // Cache to avoid calling interval function repeatedly. + return listCacheSet(labelsCache, optionLabelInterval, { + labels: labels, + labelCategoryInterval: numericLabelInterval + }); + } + function makeCategoryTicks(axis, tickModel) { + var ticksCache = getListCache(axis, 'ticks'); + var optionTickInterval = getOptionCategoryInterval(tickModel); + var result = listCacheGet(ticksCache, optionTickInterval); + if (result) { + return result; + } + var ticks; + var tickCategoryInterval; + // Optimize for the case that large category data and no label displayed, + // we should not return all ticks. + if (!tickModel.get('show') || axis.scale.isBlank()) { + ticks = []; + } + if (isFunction(optionTickInterval)) { + ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true); + } + // Always use label interval by default despite label show. Consider this + // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows + // labels. `splitLine` and `axisTick` should be consistent in this case. + else if (optionTickInterval === 'auto') { + var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel()); + tickCategoryInterval = labelsResult.labelCategoryInterval; + ticks = map(labelsResult.labels, function (labelItem) { + return labelItem.tickValue; + }); + } else { + tickCategoryInterval = optionTickInterval; + ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true); + } + // Cache to avoid calling interval function repeatedly. + return listCacheSet(ticksCache, optionTickInterval, { + ticks: ticks, + tickCategoryInterval: tickCategoryInterval + }); + } + function makeRealNumberLabels(axis) { + var ticks = axis.scale.getTicks(); + var labelFormatter = makeLabelFormatter(axis); + return { + labels: map(ticks, function (tick, idx) { + return { + level: tick.level, + formattedLabel: labelFormatter(tick, idx), + rawLabel: axis.scale.getLabel(tick), + tickValue: tick.value + }; + }) + }; + } + function getListCache(axis, prop) { + // Because key can be a function, and cache size always is small, we use array cache. + return inner$5(axis)[prop] || (inner$5(axis)[prop] = []); + } + function listCacheGet(cache, key) { + for (var i = 0; i < cache.length; i++) { + if (cache[i].key === key) { + return cache[i].value; + } + } + } + function listCacheSet(cache, key, value) { + cache.push({ + key: key, + value: value + }); + return value; + } + function makeAutoCategoryInterval(axis) { + var result = inner$5(axis).autoInterval; + return result != null ? result : inner$5(axis).autoInterval = axis.calculateCategoryInterval(); + } + /** + * Calculate interval for category axis ticks and labels. + * To get precise result, at least one of `getRotate` and `isHorizontal` + * should be implemented in axis. + */ + function calculateCategoryInterval(axis) { + var params = fetchAutoCategoryIntervalCalculationParams(axis); + var labelFormatter = makeLabelFormatter(axis); + var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI; + var ordinalScale = axis.scale; + var ordinalExtent = ordinalScale.getExtent(); + // Providing this method is for optimization: + // avoid generating a long array by `getTicks` + // in large category data case. + var tickCount = ordinalScale.count(); + if (ordinalExtent[1] - ordinalExtent[0] < 1) { + return 0; + } + var step = 1; + // Simple optimization. Empirical value: tick count should less than 40. + if (tickCount > 40) { + step = Math.max(1, Math.floor(tickCount / 40)); + } + var tickValue = ordinalExtent[0]; + var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue); + var unitW = Math.abs(unitSpan * Math.cos(rotation)); + var unitH = Math.abs(unitSpan * Math.sin(rotation)); + var maxW = 0; + var maxH = 0; + // Caution: Performance sensitive for large category data. + // Consider dataZoom, we should make appropriate step to avoid O(n) loop. + for (; tickValue <= ordinalExtent[1]; tickValue += step) { + var width = 0; + var height = 0; + // Not precise, do not consider align and vertical align + // and each distance from axis line yet. + var rect = getBoundingRect(labelFormatter({ + value: tickValue + }), params.font, 'center', 'top'); + // Magic number + width = rect.width * 1.3; + height = rect.height * 1.3; + // Min size, void long loop. + maxW = Math.max(maxW, width, 7); + maxH = Math.max(maxH, height, 7); + } + var dw = maxW / unitW; + var dh = maxH / unitH; + // 0/0 is NaN, 1/0 is Infinity. + isNaN(dw) && (dw = Infinity); + isNaN(dh) && (dh = Infinity); + var interval = Math.max(0, Math.floor(Math.min(dw, dh))); + var cache = inner$5(axis.model); + var axisExtent = axis.getExtent(); + var lastAutoInterval = cache.lastAutoInterval; + var lastTickCount = cache.lastTickCount; + // Use cache to keep interval stable while moving zoom window, + // otherwise the calculated interval might jitter when the zoom + // window size is close to the interval-changing size. + // For example, if all of the axis labels are `a, b, c, d, e, f, g`. + // The jitter will cause that sometimes the displayed labels are + // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1). + if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 + // Always choose the bigger one, otherwise the critical + // point is not the same when zooming in or zooming out. + && lastAutoInterval > interval + // If the axis change is caused by chart resize, the cache should not + // be used. Otherwise some hidden labels might not be shown again. + && cache.axisExtent0 === axisExtent[0] && cache.axisExtent1 === axisExtent[1]) { + interval = lastAutoInterval; + } + // Only update cache if cache not used, otherwise the + // changing of interval is too insensitive. + else { + cache.lastTickCount = tickCount; + cache.lastAutoInterval = interval; + cache.axisExtent0 = axisExtent[0]; + cache.axisExtent1 = axisExtent[1]; + } + return interval; + } + function fetchAutoCategoryIntervalCalculationParams(axis) { + var labelModel = axis.getLabelModel(); + return { + axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0, + labelRotate: labelModel.get('rotate') || 0, + font: labelModel.getFont() + }; + } + function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) { + var labelFormatter = makeLabelFormatter(axis); + var ordinalScale = axis.scale; + var ordinalExtent = ordinalScale.getExtent(); + var labelModel = axis.getLabelModel(); + var result = []; + // TODO: axisType: ordinalTime, pick the tick from each month/day/year/... + var step = Math.max((categoryInterval || 0) + 1, 1); + var startTick = ordinalExtent[0]; + var tickCount = ordinalScale.count(); + // Calculate start tick based on zero if possible to keep label consistent + // while zooming and moving while interval > 0. Otherwise the selection + // of displayable ticks and symbols probably keep changing. + // 3 is empirical value. + if (startTick !== 0 && step > 1 && tickCount / step > 2) { + startTick = Math.round(Math.ceil(startTick / step) * step); + } + // (1) Only add min max label here but leave overlap checking + // to render stage, which also ensure the returned list + // suitable for splitLine and splitArea rendering. + // (2) Scales except category always contain min max label so + // do not need to perform this process. + var showAllLabel = shouldShowAllLabels(axis); + var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel; + var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel; + if (includeMinLabel && startTick !== ordinalExtent[0]) { + addItem(ordinalExtent[0]); + } + // Optimize: avoid generating large array by `ordinalScale.getTicks()`. + var tickValue = startTick; + for (; tickValue <= ordinalExtent[1]; tickValue += step) { + addItem(tickValue); + } + if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) { + addItem(ordinalExtent[1]); + } + function addItem(tickValue) { + var tickObj = { + value: tickValue + }; + result.push(onlyTick ? tickValue : { + formattedLabel: labelFormatter(tickObj), + rawLabel: ordinalScale.getLabel(tickObj), + tickValue: tickValue + }); + } + return result; + } + function makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) { + var ordinalScale = axis.scale; + var labelFormatter = makeLabelFormatter(axis); + var result = []; + each(ordinalScale.getTicks(), function (tick) { + var rawLabel = ordinalScale.getLabel(tick); + var tickValue = tick.value; + if (categoryInterval(tick.value, rawLabel)) { + result.push(onlyTick ? tickValue : { + formattedLabel: labelFormatter(tick), + rawLabel: rawLabel, + tickValue: tickValue + }); + } + }); + return result; + } + + var NORMALIZED_EXTENT = [0, 1]; + /** + * Base class of Axis. + */ + var Axis = /** @class */function () { + function Axis(dim, scale, extent) { + this.onBand = false; + this.inverse = false; + this.dim = dim; + this.scale = scale; + this._extent = extent || [0, 0]; + } + /** + * If axis extent contain given coord + */ + Axis.prototype.contain = function (coord) { + var extent = this._extent; + var min = Math.min(extent[0], extent[1]); + var max = Math.max(extent[0], extent[1]); + return coord >= min && coord <= max; + }; + /** + * If axis extent contain given data + */ + Axis.prototype.containData = function (data) { + return this.scale.contain(data); + }; + /** + * Get coord extent. + */ + Axis.prototype.getExtent = function () { + return this._extent.slice(); + }; + /** + * Get precision used for formatting + */ + Axis.prototype.getPixelPrecision = function (dataExtent) { + return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent); + }; + /** + * Set coord extent + */ + Axis.prototype.setExtent = function (start, end) { + var extent = this._extent; + extent[0] = start; + extent[1] = end; + }; + /** + * Convert data to coord. Data is the rank if it has an ordinal scale + */ + Axis.prototype.dataToCoord = function (data, clamp) { + var extent = this._extent; + var scale = this.scale; + data = scale.normalize(data); + if (this.onBand && scale.type === 'ordinal') { + extent = extent.slice(); + fixExtentWithBands(extent, scale.count()); + } + return linearMap(data, NORMALIZED_EXTENT, extent, clamp); + }; + /** + * Convert coord to data. Data is the rank if it has an ordinal scale + */ + Axis.prototype.coordToData = function (coord, clamp) { + var extent = this._extent; + var scale = this.scale; + if (this.onBand && scale.type === 'ordinal') { + extent = extent.slice(); + fixExtentWithBands(extent, scale.count()); + } + var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp); + return this.scale.scale(t); + }; + /** + * Convert pixel point to data in axis + */ + Axis.prototype.pointToData = function (point, clamp) { + // Should be implemented in derived class if necessary. + return; + }; + /** + * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`, + * `axis.getTicksCoords` considers `onBand`, which is used by + * `boundaryGap:true` of category axis and splitLine and splitArea. + * @param opt.tickModel default: axis.model.getModel('axisTick') + * @param opt.clamp If `true`, the first and the last + * tick must be at the axis end points. Otherwise, clip ticks + * that outside the axis extent. + */ + Axis.prototype.getTicksCoords = function (opt) { + opt = opt || {}; + var tickModel = opt.tickModel || this.getTickModel(); + var result = createAxisTicks(this, tickModel); + var ticks = result.ticks; + var ticksCoords = map(ticks, function (tickVal) { + return { + coord: this.dataToCoord(this.scale.type === 'ordinal' ? this.scale.getRawOrdinalNumber(tickVal) : tickVal), + tickValue: tickVal + }; + }, this); + var alignWithLabel = tickModel.get('alignWithLabel'); + fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp); + return ticksCoords; + }; + Axis.prototype.getMinorTicksCoords = function () { + if (this.scale.type === 'ordinal') { + // Category axis doesn't support minor ticks + return []; + } + var minorTickModel = this.model.getModel('minorTick'); + var splitNumber = minorTickModel.get('splitNumber'); + // Protection. + if (!(splitNumber > 0 && splitNumber < 100)) { + splitNumber = 5; + } + var minorTicks = this.scale.getMinorTicks(splitNumber); + var minorTicksCoords = map(minorTicks, function (minorTicksGroup) { + return map(minorTicksGroup, function (minorTick) { + return { + coord: this.dataToCoord(minorTick), + tickValue: minorTick + }; + }, this); + }, this); + return minorTicksCoords; + }; + Axis.prototype.getViewLabels = function () { + return createAxisLabels(this).labels; + }; + Axis.prototype.getLabelModel = function () { + return this.model.getModel('axisLabel'); + }; + /** + * Notice here we only get the default tick model. For splitLine + * or splitArea, we should pass the splitLineModel or splitAreaModel + * manually when calling `getTicksCoords`. + * In GL, this method may be overridden to: + * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));` + */ + Axis.prototype.getTickModel = function () { + return this.model.getModel('axisTick'); + }; + /** + * Get width of band + */ + Axis.prototype.getBandWidth = function () { + var axisExtent = this._extent; + var dataExtent = this.scale.getExtent(); + var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); + // Fix #2728, avoid NaN when only one data. + len === 0 && (len = 1); + var size = Math.abs(axisExtent[1] - axisExtent[0]); + return Math.abs(size) / len; + }; + /** + * Only be called in category axis. + * Can be overridden, consider other axes like in 3D. + * @return Auto interval for cateogry axis tick and label + */ + Axis.prototype.calculateCategoryInterval = function () { + return calculateCategoryInterval(this); + }; + return Axis; + }(); + function fixExtentWithBands(extent, nTick) { + var size = extent[1] - extent[0]; + var len = nTick; + var margin = size / len / 2; + extent[0] += margin; + extent[1] -= margin; + } + // If axis has labels [1, 2, 3, 4]. Bands on the axis are + // |---1---|---2---|---3---|---4---|. + // So the displayed ticks and splitLine/splitArea should between + // each data item, otherwise cause misleading (e.g., split tow bars + // of a single data item when there are two bar series). + // Also consider if tickCategoryInterval > 0 and onBand, ticks and + // splitLine/spliteArea should layout appropriately corresponding + // to displayed labels. (So we should not use `getBandWidth` in this + // case). + function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) { + var ticksLen = ticksCoords.length; + if (!axis.onBand || alignWithLabel || !ticksLen) { + return; + } + var axisExtent = axis.getExtent(); + var last; + var diffSize; + if (ticksLen === 1) { + ticksCoords[0].coord = axisExtent[0]; + last = ticksCoords[1] = { + coord: axisExtent[1] + }; + } else { + var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue; + var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen; + each(ticksCoords, function (ticksItem) { + ticksItem.coord -= shift_1 / 2; + }); + var dataExtent = axis.scale.getExtent(); + diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue; + last = { + coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize + }; + ticksCoords.push(last); + } + var inverse = axisExtent[0] > axisExtent[1]; + // Handling clamp. + if (littleThan(ticksCoords[0].coord, axisExtent[0])) { + clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift(); + } + if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) { + ticksCoords.unshift({ + coord: axisExtent[0] + }); + } + if (littleThan(axisExtent[1], last.coord)) { + clamp ? last.coord = axisExtent[1] : ticksCoords.pop(); + } + if (clamp && littleThan(last.coord, axisExtent[1])) { + ticksCoords.push({ + coord: axisExtent[1] + }); + } + function littleThan(a, b) { + // Avoid rounding error cause calculated tick coord different with extent. + // It may cause an extra unnecessary tick added. + a = round(a); + b = round(b); + return inverse ? a > b : a < b; + } + } + + // --------------------- Deprecated Extension Methods --------------------- + // Should use `ComponentModel.extend` or `class XXXX extend ComponentModel` to create class. + // Then use `registerComponentModel` in `install` parameter when `use` this extension. For example: + // class Bar3DModel extends ComponentModel {} + // export function install(registers) { registers.registerComponentModel(Bar3DModel); } + // echarts.use(install); + function extendComponentModel(proto) { + var Model = ComponentModel.extend(proto); + ComponentModel.registerClass(Model); + return Model; + } + function extendComponentView(proto) { + var View = ComponentView.extend(proto); + ComponentView.registerClass(View); + return View; + } + function extendSeriesModel(proto) { + var Model = SeriesModel.extend(proto); + SeriesModel.registerClass(Model); + return Model; + } + function extendChartView(proto) { + var View = ChartView.extend(proto); + ChartView.registerClass(View); + return View; + } + + var PI2$6 = Math.PI * 2; + var CMD$3 = PathProxy.CMD; + var DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left']; + function getCandidateAnchor(pos, distance, rect, outPt, outDir) { + var width = rect.width; + var height = rect.height; + switch (pos) { + case 'top': + outPt.set(rect.x + width / 2, rect.y - distance); + outDir.set(0, -1); + break; + case 'bottom': + outPt.set(rect.x + width / 2, rect.y + height + distance); + outDir.set(0, 1); + break; + case 'left': + outPt.set(rect.x - distance, rect.y + height / 2); + outDir.set(-1, 0); + break; + case 'right': + outPt.set(rect.x + width + distance, rect.y + height / 2); + outDir.set(1, 0); + break; + } + } + function projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) { + x -= cx; + y -= cy; + var d = Math.sqrt(x * x + y * y); + x /= d; + y /= d; + // Intersect point. + var ox = x * r + cx; + var oy = y * r + cy; + if (Math.abs(startAngle - endAngle) % PI2$6 < 1e-4) { + // Is a circle + out[0] = ox; + out[1] = oy; + return d - r; + } + if (anticlockwise) { + var tmp = startAngle; + startAngle = normalizeRadian(endAngle); + endAngle = normalizeRadian(tmp); + } else { + startAngle = normalizeRadian(startAngle); + endAngle = normalizeRadian(endAngle); + } + if (startAngle > endAngle) { + endAngle += PI2$6; + } + var angle = Math.atan2(y, x); + if (angle < 0) { + angle += PI2$6; + } + if (angle >= startAngle && angle <= endAngle || angle + PI2$6 >= startAngle && angle + PI2$6 <= endAngle) { + // Project point is on the arc. + out[0] = ox; + out[1] = oy; + return d - r; + } + var x1 = r * Math.cos(startAngle) + cx; + var y1 = r * Math.sin(startAngle) + cy; + var x2 = r * Math.cos(endAngle) + cx; + var y2 = r * Math.sin(endAngle) + cy; + var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y); + var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y); + if (d1 < d2) { + out[0] = x1; + out[1] = y1; + return Math.sqrt(d1); + } else { + out[0] = x2; + out[1] = y2; + return Math.sqrt(d2); + } + } + function projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) { + var dx = x - x1; + var dy = y - y1; + var dx1 = x2 - x1; + var dy1 = y2 - y1; + var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1); + dx1 /= lineLen; + dy1 /= lineLen; + // dot product + var projectedLen = dx * dx1 + dy * dy1; + var t = projectedLen / lineLen; + if (limitToEnds) { + t = Math.min(Math.max(t, 0), 1); + } + t *= lineLen; + var ox = out[0] = x1 + t * dx1; + var oy = out[1] = y1 + t * dy1; + return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y)); + } + function projectPointToRect(x1, y1, width, height, x, y, out) { + if (width < 0) { + x1 = x1 + width; + width = -width; + } + if (height < 0) { + y1 = y1 + height; + height = -height; + } + var x2 = x1 + width; + var y2 = y1 + height; + var ox = out[0] = Math.min(Math.max(x, x1), x2); + var oy = out[1] = Math.min(Math.max(y, y1), y2); + return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y)); + } + var tmpPt = []; + function nearestPointOnRect(pt, rect, out) { + var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt); + out.set(tmpPt[0], tmpPt[1]); + return dist; + } + /** + * Calculate min distance corresponding point. + * This method won't evaluate if point is in the path. + */ + function nearestPointOnPath(pt, path, out) { + var xi = 0; + var yi = 0; + var x0 = 0; + var y0 = 0; + var x1; + var y1; + var minDist = Infinity; + var data = path.data; + var x = pt.x; + var y = pt.y; + for (var i = 0; i < data.length;) { + var cmd = data[i++]; + if (i === 1) { + xi = data[i]; + yi = data[i + 1]; + x0 = xi; + y0 = yi; + } + var d = minDist; + switch (cmd) { + case CMD$3.M: + // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点 + // 在 closePath 的时候使用 + x0 = data[i++]; + y0 = data[i++]; + xi = x0; + yi = y0; + break; + case CMD$3.L: + d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true); + xi = data[i++]; + yi = data[i++]; + break; + case CMD$3.C: + d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt); + xi = data[i++]; + yi = data[i++]; + break; + case CMD$3.Q: + d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt); + xi = data[i++]; + yi = data[i++]; + break; + case CMD$3.A: + // TODO Arc 判断的开销比较大 + var cx = data[i++]; + var cy = data[i++]; + var rx = data[i++]; + var ry = data[i++]; + var theta = data[i++]; + var dTheta = data[i++]; + // TODO Arc 旋转 + i += 1; + var anticlockwise = !!(1 - data[i++]); + x1 = Math.cos(theta) * rx + cx; + y1 = Math.sin(theta) * ry + cy; + // 不是直接使用 arc 命令 + if (i <= 1) { + // 第一个命令起点还未定义 + x0 = x1; + y0 = y1; + } + // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放 + var _x = (x - cx) * ry / rx + cx; + d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt); + xi = Math.cos(theta + dTheta) * rx + cx; + yi = Math.sin(theta + dTheta) * ry + cy; + break; + case CMD$3.R: + x0 = xi = data[i++]; + y0 = yi = data[i++]; + var width = data[i++]; + var height = data[i++]; + d = projectPointToRect(x0, y0, width, height, x, y, tmpPt); + break; + case CMD$3.Z: + d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true); + xi = x0; + yi = y0; + break; + } + if (d < minDist) { + minDist = d; + out.set(tmpPt[0], tmpPt[1]); + } + } + return minDist; + } + // Temporal variable for intermediate usage. + var pt0 = new Point(); + var pt1 = new Point(); + var pt2 = new Point(); + var dir = new Point(); + var dir2 = new Point(); + /** + * Calculate a proper guide line based on the label position and graphic element definition + * @param label + * @param labelRect + * @param target + * @param targetRect + */ + function updateLabelLinePoints(target, labelLineModel) { + if (!target) { + return; + } + var labelLine = target.getTextGuideLine(); + var label = target.getTextContent(); + // Needs to create text guide in each charts. + if (!(label && labelLine)) { + return; + } + var labelGuideConfig = target.textGuideLineConfig || {}; + var points = [[0, 0], [0, 0], [0, 0]]; + var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE; + var labelRect = label.getBoundingRect().clone(); + labelRect.applyTransform(label.getComputedTransform()); + var minDist = Infinity; + var anchorPoint = labelGuideConfig.anchor; + var targetTransform = target.getComputedTransform(); + var targetInversedTransform = targetTransform && invert([], targetTransform); + var len = labelLineModel.get('length2') || 0; + if (anchorPoint) { + pt2.copy(anchorPoint); + } + for (var i = 0; i < searchSpace.length; i++) { + var candidate = searchSpace[i]; + getCandidateAnchor(candidate, 0, labelRect, pt0, dir); + Point.scaleAndAdd(pt1, pt0, dir, len); + // Transform to target coord space. + pt1.transform(targetInversedTransform); + // Note: getBoundingRect will ensure the `path` being created. + var boundingRect = target.getBoundingRect(); + var dist = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2); + // TODO pt2 is in the path + if (dist < minDist) { + minDist = dist; + // Transform back to global space. + pt1.transform(targetTransform); + pt2.transform(targetTransform); + pt2.toArray(points[0]); + pt1.toArray(points[1]); + pt0.toArray(points[2]); + } + } + limitTurnAngle(points, labelLineModel.get('minTurnAngle')); + labelLine.setShape({ + points: points + }); + } + // Temporal variable for the limitTurnAngle function + var tmpArr = []; + var tmpProjPoint = new Point(); + /** + * Reduce the line segment attached to the label to limit the turn angle between two segments. + * @param linePoints + * @param minTurnAngle Radian of minimum turn angle. 0 - 180 + */ + function limitTurnAngle(linePoints, minTurnAngle) { + if (!(minTurnAngle <= 180 && minTurnAngle > 0)) { + return; + } + minTurnAngle = minTurnAngle / 180 * Math.PI; + // The line points can be + // /pt1----pt2 (label) + // / + // pt0/ + pt0.fromArray(linePoints[0]); + pt1.fromArray(linePoints[1]); + pt2.fromArray(linePoints[2]); + Point.sub(dir, pt0, pt1); + Point.sub(dir2, pt2, pt1); + var len1 = dir.len(); + var len2 = dir2.len(); + if (len1 < 1e-3 || len2 < 1e-3) { + return; + } + dir.scale(1 / len1); + dir2.scale(1 / len2); + var angleCos = dir.dot(dir2); + var minTurnAngleCos = Math.cos(minTurnAngle); + if (minTurnAngleCos < angleCos) { + // Smaller than minTurnAngle + // Calculate project point of pt0 on pt1-pt2 + var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false); + tmpProjPoint.fromArray(tmpArr); + // Calculate new projected length with limited minTurnAngle and get the new connect point + tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle)); + // Limit the new calculated connect point between pt1 and pt2. + var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y); + if (isNaN(t)) { + return; + } + if (t < 0) { + Point.copy(tmpProjPoint, pt1); + } else if (t > 1) { + Point.copy(tmpProjPoint, pt2); + } + tmpProjPoint.toArray(linePoints[1]); + } + } + /** + * Limit the angle of line and the surface + * @param maxSurfaceAngle Radian of minimum turn angle. 0 - 180. 0 is same direction to normal. 180 is opposite + */ + function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) { + if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) { + return; + } + maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI; + pt0.fromArray(linePoints[0]); + pt1.fromArray(linePoints[1]); + pt2.fromArray(linePoints[2]); + Point.sub(dir, pt1, pt0); + Point.sub(dir2, pt2, pt1); + var len1 = dir.len(); + var len2 = dir2.len(); + if (len1 < 1e-3 || len2 < 1e-3) { + return; + } + dir.scale(1 / len1); + dir2.scale(1 / len2); + var angleCos = dir.dot(surfaceNormal); + var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle); + if (angleCos < maxSurfaceAngleCos) { + // Calculate project point of pt0 on pt1-pt2 + var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false); + tmpProjPoint.fromArray(tmpArr); + var HALF_PI = Math.PI / 2; + var angle2 = Math.acos(dir2.dot(surfaceNormal)); + var newAngle = HALF_PI + angle2 - maxSurfaceAngle; + if (newAngle >= HALF_PI) { + // parallel + Point.copy(tmpProjPoint, pt2); + } else { + // Calculate new projected length with limited minTurnAngle and get the new connect point + tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle)); + // Limit the new calculated connect point between pt1 and pt2. + var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y); + if (isNaN(t)) { + return; + } + if (t < 0) { + Point.copy(tmpProjPoint, pt1); + } else if (t > 1) { + Point.copy(tmpProjPoint, pt2); + } + } + tmpProjPoint.toArray(linePoints[1]); + } + } + function setLabelLineState(labelLine, ignore, stateName, stateModel) { + var isNormal = stateName === 'normal'; + var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName); + // Make sure display. + stateObj.ignore = ignore; + // Set smooth + var smooth = stateModel.get('smooth'); + if (smooth && smooth === true) { + smooth = 0.3; + } + stateObj.shape = stateObj.shape || {}; + if (smooth > 0) { + stateObj.shape.smooth = smooth; + } + var styleObj = stateModel.getModel('lineStyle').getLineStyle(); + isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj; + } + function buildLabelLinePath(path, shape) { + var smooth = shape.smooth; + var points = shape.points; + if (!points) { + return; + } + path.moveTo(points[0][0], points[0][1]); + if (smooth > 0 && points.length >= 3) { + var len1 = dist(points[0], points[1]); + var len2 = dist(points[1], points[2]); + if (!len1 || !len2) { + path.lineTo(points[1][0], points[1][1]); + path.lineTo(points[2][0], points[2][1]); + return; + } + var moveLen = Math.min(len1, len2) * smooth; + var midPoint0 = lerp([], points[1], points[0], moveLen / len1); + var midPoint2 = lerp([], points[1], points[2], moveLen / len2); + var midPoint1 = lerp([], midPoint0, midPoint2, 0.5); + path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]); + path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]); + } else { + for (var i = 1; i < points.length; i++) { + path.lineTo(points[i][0], points[i][1]); + } + } + } + /** + * Create a label line if necessary and set it's style. + */ + function setLabelLineStyle(targetEl, statesModels, defaultStyle) { + var labelLine = targetEl.getTextGuideLine(); + var label = targetEl.getTextContent(); + if (!label) { + // Not show label line if there is no label. + if (labelLine) { + targetEl.removeTextGuideLine(); + } + return; + } + var normalModel = statesModels.normal; + var showNormal = normalModel.get('show'); + var labelIgnoreNormal = label.ignore; + for (var i = 0; i < DISPLAY_STATES.length; i++) { + var stateName = DISPLAY_STATES[i]; + var stateModel = statesModels[stateName]; + var isNormal = stateName === 'normal'; + if (stateModel) { + var stateShow = stateModel.get('show'); + var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal); + if (isLabelIgnored // Not show when label is not shown in this state. + || !retrieve2(stateShow, showNormal) // Use normal state by default if not set. + ) { + var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName]; + if (stateObj) { + stateObj.ignore = true; + } + if (!!labelLine) { + setLabelLineState(labelLine, true, stateName, stateModel); + } + continue; + } + // Create labelLine if not exists + if (!labelLine) { + labelLine = new Polyline(); + targetEl.setTextGuideLine(labelLine); + // Reset state of normal because it's new created. + // NOTE: NORMAL should always been the first! + if (!isNormal && (labelIgnoreNormal || !showNormal)) { + setLabelLineState(labelLine, true, 'normal', statesModels.normal); + } + // Use same state proxy. + if (targetEl.stateProxy) { + labelLine.stateProxy = targetEl.stateProxy; + } + } + setLabelLineState(labelLine, false, stateName, stateModel); + } + } + if (labelLine) { + defaults(labelLine.style, defaultStyle); + // Not fill. + labelLine.style.fill = null; + var showAbove = normalModel.get('showAbove'); + var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {}; + labelLineConfig.showAbove = showAbove || false; + // Custom the buildPath. + labelLine.buildPath = buildLabelLinePath; + } + } + function getLabelLineStatesModels(itemModel, labelLineName) { + labelLineName = labelLineName || 'labelLine'; + var statesModels = { + normal: itemModel.getModel(labelLineName) + }; + for (var i = 0; i < SPECIAL_STATES.length; i++) { + var stateName = SPECIAL_STATES[i]; + statesModels[stateName] = itemModel.getModel([stateName, labelLineName]); + } + return statesModels; + } + + function prepareLayoutList(input) { + var list = []; + for (var i = 0; i < input.length; i++) { + var rawItem = input[i]; + if (rawItem.defaultAttr.ignore) { + continue; + } + var label = rawItem.label; + var transform = label.getComputedTransform(); + // NOTE: Get bounding rect after getComputedTransform, or label may not been updated by the host el. + var localRect = label.getBoundingRect(); + var isAxisAligned = !transform || transform[1] < 1e-5 && transform[2] < 1e-5; + var minMargin = label.style.margin || 0; + var globalRect = localRect.clone(); + globalRect.applyTransform(transform); + globalRect.x -= minMargin / 2; + globalRect.y -= minMargin / 2; + globalRect.width += minMargin; + globalRect.height += minMargin; + var obb = isAxisAligned ? new OrientedBoundingRect(localRect, transform) : null; + list.push({ + label: label, + labelLine: rawItem.labelLine, + rect: globalRect, + localRect: localRect, + obb: obb, + priority: rawItem.priority, + defaultAttr: rawItem.defaultAttr, + layoutOption: rawItem.computedLayoutOption, + axisAligned: isAxisAligned, + transform: transform + }); + } + return list; + } + function shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) { + var len = list.length; + if (len < 2) { + return; + } + list.sort(function (a, b) { + return a.rect[xyDim] - b.rect[xyDim]; + }); + var lastPos = 0; + var delta; + var adjusted = false; + var totalShifts = 0; + for (var i = 0; i < len; i++) { + var item = list[i]; + var rect = item.rect; + delta = rect[xyDim] - lastPos; + if (delta < 0) { + // shiftForward(i, len, -delta); + rect[xyDim] -= delta; + item.label[xyDim] -= delta; + adjusted = true; + } + var shift = Math.max(-delta, 0); + totalShifts += shift; + lastPos = rect[xyDim] + rect[sizeDim]; + } + if (totalShifts > 0 && balanceShift) { + // Shift back to make the distribution more equally. + shiftList(-totalShifts / len, 0, len); + } + // TODO bleedMargin? + var first = list[0]; + var last = list[len - 1]; + var minGap; + var maxGap; + updateMinMaxGap(); + // If ends exceed two bounds, squeeze at most 80%, then take the gap of two bounds. + minGap < 0 && squeezeGaps(-minGap, 0.8); + maxGap < 0 && squeezeGaps(maxGap, 0.8); + updateMinMaxGap(); + takeBoundsGap(minGap, maxGap, 1); + takeBoundsGap(maxGap, minGap, -1); + // Handle bailout when there is not enough space. + updateMinMaxGap(); + if (minGap < 0) { + squeezeWhenBailout(-minGap); + } + if (maxGap < 0) { + squeezeWhenBailout(maxGap); + } + function updateMinMaxGap() { + minGap = first.rect[xyDim] - minBound; + maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim]; + } + function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) { + if (gapThisBound < 0) { + // Move from other gap if can. + var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound); + if (moveFromMaxGap > 0) { + shiftList(moveFromMaxGap * moveDir, 0, len); + var remained = moveFromMaxGap + gapThisBound; + if (remained < 0) { + squeezeGaps(-remained * moveDir, 1); + } + } else { + squeezeGaps(-gapThisBound * moveDir, 1); + } + } + } + function shiftList(delta, start, end) { + if (delta !== 0) { + adjusted = true; + } + for (var i = start; i < end; i++) { + var item = list[i]; + var rect = item.rect; + rect[xyDim] += delta; + item.label[xyDim] += delta; + } + } + // Squeeze gaps if the labels exceed margin. + function squeezeGaps(delta, maxSqeezePercent) { + var gaps = []; + var totalGaps = 0; + for (var i = 1; i < len; i++) { + var prevItemRect = list[i - 1].rect; + var gap = Math.max(list[i].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0); + gaps.push(gap); + totalGaps += gap; + } + if (!totalGaps) { + return; + } + var squeezePercent = Math.min(Math.abs(delta) / totalGaps, maxSqeezePercent); + if (delta > 0) { + for (var i = 0; i < len - 1; i++) { + // Distribute the shift delta to all gaps. + var movement = gaps[i] * squeezePercent; + // Forward + shiftList(movement, 0, i + 1); + } + } else { + // Backward + for (var i = len - 1; i > 0; i--) { + // Distribute the shift delta to all gaps. + var movement = gaps[i - 1] * squeezePercent; + shiftList(-movement, i, len); + } + } + } + /** + * Squeeze to allow overlap if there is no more space available. + * Let other overlapping strategy like hideOverlap do the job instead of keep exceeding the bounds. + */ + function squeezeWhenBailout(delta) { + var dir = delta < 0 ? -1 : 1; + delta = Math.abs(delta); + var moveForEachLabel = Math.ceil(delta / (len - 1)); + for (var i = 0; i < len - 1; i++) { + if (dir > 0) { + // Forward + shiftList(moveForEachLabel, 0, i + 1); + } else { + // Backward + shiftList(-moveForEachLabel, len - i - 1, len); + } + delta -= moveForEachLabel; + if (delta <= 0) { + return; + } + } + } + return adjusted; + } + /** + * Adjust labels on x direction to avoid overlap. + */ + function shiftLayoutOnX(list, leftBound, rightBound, + // If average the shifts on all labels and add them to 0 + // TODO: Not sure if should enable it. + // Pros: The angle of lines will distribute more equally + // Cons: In some layout. It may not what user wanted. like in pie. the label of last sector is usually changed unexpectedly. + balanceShift) { + return shiftLayout(list, 'x', 'width', leftBound, rightBound, balanceShift); + } + /** + * Adjust labels on y direction to avoid overlap. + */ + function shiftLayoutOnY(list, topBound, bottomBound, + // If average the shifts on all labels and add them to 0 + balanceShift) { + return shiftLayout(list, 'y', 'height', topBound, bottomBound, balanceShift); + } + function hideOverlap(labelList) { + var displayedLabels = []; + // TODO, render overflow visible first, put in the displayedLabels. + labelList.sort(function (a, b) { + return b.priority - a.priority; + }); + var globalRect = new BoundingRect(0, 0, 0, 0); + function hideEl(el) { + if (!el.ignore) { + // Show on emphasis. + var emphasisState = el.ensureState('emphasis'); + if (emphasisState.ignore == null) { + emphasisState.ignore = false; + } + } + el.ignore = true; + } + for (var i = 0; i < labelList.length; i++) { + var labelItem = labelList[i]; + var isAxisAligned = labelItem.axisAligned; + var localRect = labelItem.localRect; + var transform = labelItem.transform; + var label = labelItem.label; + var labelLine = labelItem.labelLine; + globalRect.copy(labelItem.rect); + // Add a threshold because layout may be aligned precisely. + globalRect.width -= 0.1; + globalRect.height -= 0.1; + globalRect.x += 0.05; + globalRect.y += 0.05; + var obb = labelItem.obb; + var overlapped = false; + for (var j = 0; j < displayedLabels.length; j++) { + var existsTextCfg = displayedLabels[j]; + // Fast rejection. + if (!globalRect.intersect(existsTextCfg.rect)) { + continue; + } + if (isAxisAligned && existsTextCfg.axisAligned) { + // Is overlapped + overlapped = true; + break; + } + if (!existsTextCfg.obb) { + // If self is not axis aligned. But other is. + existsTextCfg.obb = new OrientedBoundingRect(existsTextCfg.localRect, existsTextCfg.transform); + } + if (!obb) { + // If self is axis aligned. But other is not. + obb = new OrientedBoundingRect(localRect, transform); + } + if (obb.intersect(existsTextCfg.obb)) { + overlapped = true; + break; + } + } + // TODO Callback to determine if this overlap should be handled? + if (overlapped) { + hideEl(label); + labelLine && hideEl(labelLine); + } else { + label.attr('ignore', labelItem.defaultAttr.ignore); + labelLine && labelLine.attr('ignore', labelItem.defaultAttr.labelGuideIgnore); + displayedLabels.push(labelItem); + } + } + } + + function cloneArr(points) { + if (points) { + var newPoints = []; + for (var i = 0; i < points.length; i++) { + newPoints.push(points[i].slice()); + } + return newPoints; + } + } + function prepareLayoutCallbackParams(labelItem, hostEl) { + var label = labelItem.label; + var labelLine = hostEl && hostEl.getTextGuideLine(); + return { + dataIndex: labelItem.dataIndex, + dataType: labelItem.dataType, + seriesIndex: labelItem.seriesModel.seriesIndex, + text: labelItem.label.style.text, + rect: labelItem.hostRect, + labelRect: labelItem.rect, + // x: labelAttr.x, + // y: labelAttr.y, + align: label.style.align, + verticalAlign: label.style.verticalAlign, + labelLinePoints: cloneArr(labelLine && labelLine.shape.points) + }; + } + var LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize']; + var dummyTransformable = new Transformable(); + var labelLayoutInnerStore = makeInner(); + var labelLineAnimationStore = makeInner(); + function extendWithKeys(target, source, keys) { + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (source[key] != null) { + target[key] = source[key]; + } + } + } + var LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation']; + var LabelManager = /** @class */function () { + function LabelManager() { + this._labelList = []; + this._chartViewList = []; + } + LabelManager.prototype.clearLabels = function () { + this._labelList = []; + this._chartViewList = []; + }; + /** + * Add label to manager + */ + LabelManager.prototype._addLabel = function (dataIndex, dataType, seriesModel, label, layoutOption) { + var labelStyle = label.style; + var hostEl = label.__hostTarget; + var textConfig = hostEl.textConfig || {}; + // TODO: If label is in other state. + var labelTransform = label.getComputedTransform(); + var labelRect = label.getBoundingRect().plain(); + BoundingRect.applyTransform(labelRect, labelRect, labelTransform); + if (labelTransform) { + dummyTransformable.setLocalTransform(labelTransform); + } else { + // Identity transform. + dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation = dummyTransformable.originX = dummyTransformable.originY = 0; + dummyTransformable.scaleX = dummyTransformable.scaleY = 1; + } + dummyTransformable.rotation = normalizeRadian(dummyTransformable.rotation); + var host = label.__hostTarget; + var hostRect; + if (host) { + hostRect = host.getBoundingRect().plain(); + var transform = host.getComputedTransform(); + BoundingRect.applyTransform(hostRect, hostRect, transform); + } + var labelGuide = hostRect && host.getTextGuideLine(); + this._labelList.push({ + label: label, + labelLine: labelGuide, + seriesModel: seriesModel, + dataIndex: dataIndex, + dataType: dataType, + layoutOption: layoutOption, + computedLayoutOption: null, + rect: labelRect, + hostRect: hostRect, + // Label with lower priority will be hidden when overlapped + // Use rect size as default priority + priority: hostRect ? hostRect.width * hostRect.height : 0, + // Save default label attributes. + // For restore if developers want get back to default value in callback. + defaultAttr: { + ignore: label.ignore, + labelGuideIgnore: labelGuide && labelGuide.ignore, + x: dummyTransformable.x, + y: dummyTransformable.y, + scaleX: dummyTransformable.scaleX, + scaleY: dummyTransformable.scaleY, + rotation: dummyTransformable.rotation, + style: { + x: labelStyle.x, + y: labelStyle.y, + align: labelStyle.align, + verticalAlign: labelStyle.verticalAlign, + width: labelStyle.width, + height: labelStyle.height, + fontSize: labelStyle.fontSize + }, + cursor: label.cursor, + attachedPos: textConfig.position, + attachedRot: textConfig.rotation + } + }); + }; + LabelManager.prototype.addLabelsOfSeries = function (chartView) { + var _this = this; + this._chartViewList.push(chartView); + var seriesModel = chartView.__model; + var layoutOption = seriesModel.get('labelLayout'); + /** + * Ignore layouting if it's not specified anything. + */ + if (!(isFunction(layoutOption) || keys(layoutOption).length)) { + return; + } + chartView.group.traverse(function (child) { + if (child.ignore) { + return true; // Stop traverse descendants. + } + // Only support label being hosted on graphic elements. + var textEl = child.getTextContent(); + var ecData = getECData(child); + // Can only attach the text on the element with dataIndex + if (textEl && !textEl.disableLabelLayout) { + _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption); + } + }); + }; + LabelManager.prototype.updateLayoutConfig = function (api) { + var width = api.getWidth(); + var height = api.getHeight(); + function createDragHandler(el, labelLineModel) { + return function () { + updateLabelLinePoints(el, labelLineModel); + }; + } + for (var i = 0; i < this._labelList.length; i++) { + var labelItem = this._labelList[i]; + var label = labelItem.label; + var hostEl = label.__hostTarget; + var defaultLabelAttr = labelItem.defaultAttr; + var layoutOption = void 0; + // TODO A global layout option? + if (isFunction(labelItem.layoutOption)) { + layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl)); + } else { + layoutOption = labelItem.layoutOption; + } + layoutOption = layoutOption || {}; + labelItem.computedLayoutOption = layoutOption; + var degreeToRadian = Math.PI / 180; + // TODO hostEl should always exists. + // Or label should not have parent because the x, y is all in global space. + if (hostEl) { + hostEl.setTextConfig({ + // Force to set local false. + local: false, + // Ignore position and rotation config on the host el if x or y is changed. + position: layoutOption.x != null || layoutOption.y != null ? null : defaultLabelAttr.attachedPos, + // Ignore rotation config on the host el if rotation is changed. + rotation: layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot, + offset: [layoutOption.dx || 0, layoutOption.dy || 0] + }); + } + var needsUpdateLabelLine = false; + if (layoutOption.x != null) { + // TODO width of chart view. + label.x = parsePercent$1(layoutOption.x, width); + label.setStyle('x', 0); // Ignore movement in style. TODO: origin. + needsUpdateLabelLine = true; + } else { + label.x = defaultLabelAttr.x; + label.setStyle('x', defaultLabelAttr.style.x); + } + if (layoutOption.y != null) { + // TODO height of chart view. + label.y = parsePercent$1(layoutOption.y, height); + label.setStyle('y', 0); // Ignore movement in style. + needsUpdateLabelLine = true; + } else { + label.y = defaultLabelAttr.y; + label.setStyle('y', defaultLabelAttr.style.y); + } + if (layoutOption.labelLinePoints) { + var guideLine = hostEl.getTextGuideLine(); + if (guideLine) { + guideLine.setShape({ + points: layoutOption.labelLinePoints + }); + // Not update + needsUpdateLabelLine = false; + } + } + var labelLayoutStore = labelLayoutInnerStore(label); + labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine; + label.rotation = layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation; + label.scaleX = defaultLabelAttr.scaleX; + label.scaleY = defaultLabelAttr.scaleY; + for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) { + var key = LABEL_OPTION_TO_STYLE_KEYS[k]; + label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]); + } + if (layoutOption.draggable) { + label.draggable = true; + label.cursor = 'move'; + if (hostEl) { + var hostModel = labelItem.seriesModel; + if (labelItem.dataIndex != null) { + var data = labelItem.seriesModel.getData(labelItem.dataType); + hostModel = data.getItemModel(labelItem.dataIndex); + } + label.on('drag', createDragHandler(hostEl, hostModel.getModel('labelLine'))); + } + } else { + // TODO Other drag functions? + label.off('drag'); + label.cursor = defaultLabelAttr.cursor; + } + } + }; + LabelManager.prototype.layout = function (api) { + var width = api.getWidth(); + var height = api.getHeight(); + var labelList = prepareLayoutList(this._labelList); + var labelsNeedsAdjustOnX = filter(labelList, function (item) { + return item.layoutOption.moveOverlap === 'shiftX'; + }); + var labelsNeedsAdjustOnY = filter(labelList, function (item) { + return item.layoutOption.moveOverlap === 'shiftY'; + }); + shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width); + shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height); + var labelsNeedsHideOverlap = filter(labelList, function (item) { + return item.layoutOption.hideOverlap; + }); + hideOverlap(labelsNeedsHideOverlap); + }; + /** + * Process all labels. Not only labels with layoutOption. + */ + LabelManager.prototype.processLabelsOverall = function () { + var _this = this; + each(this._chartViewList, function (chartView) { + var seriesModel = chartView.__model; + var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate; + var animationEnabled = seriesModel.isAnimationEnabled(); + chartView.group.traverse(function (child) { + if (child.ignore && !child.forceLabelAnimation) { + return true; // Stop traverse descendants. + } + + var needsUpdateLabelLine = !ignoreLabelLineUpdate; + var label = child.getTextContent(); + if (!needsUpdateLabelLine && label) { + needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine; + } + if (needsUpdateLabelLine) { + _this._updateLabelLine(child, seriesModel); + } + if (animationEnabled) { + _this._animateLabels(child, seriesModel); + } + }); + }); + }; + LabelManager.prototype._updateLabelLine = function (el, seriesModel) { + // Only support label being hosted on graphic elements. + var textEl = el.getTextContent(); + // Update label line style. + var ecData = getECData(el); + var dataIndex = ecData.dataIndex; + // Only support labelLine on the labels represent data. + if (textEl && dataIndex != null) { + var data = seriesModel.getData(ecData.dataType); + var itemModel = data.getItemModel(dataIndex); + var defaultStyle = {}; + var visualStyle = data.getItemVisual(dataIndex, 'style'); + if (visualStyle) { + var visualType = data.getVisual('drawType'); + // Default to be same with main color + defaultStyle.stroke = visualStyle[visualType]; + } + var labelLineModel = itemModel.getModel('labelLine'); + setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle); + updateLabelLinePoints(el, labelLineModel); + } + }; + LabelManager.prototype._animateLabels = function (el, seriesModel) { + var textEl = el.getTextContent(); + var guideLine = el.getTextGuideLine(); + // Animate + if (textEl + // `forceLabelAnimation` has the highest priority + && (el.forceLabelAnimation || !textEl.ignore && !textEl.invisible && !el.disableLabelAnimation && !isElementRemoved(el))) { + var layoutStore = labelLayoutInnerStore(textEl); + var oldLayout = layoutStore.oldLayout; + var ecData = getECData(el); + var dataIndex = ecData.dataIndex; + var newProps = { + x: textEl.x, + y: textEl.y, + rotation: textEl.rotation + }; + var data = seriesModel.getData(ecData.dataType); + if (!oldLayout) { + textEl.attr(newProps); + // Disable fade in animation if value animation is enabled. + if (!labelInner(textEl).valueAnimation) { + var oldOpacity = retrieve2(textEl.style.opacity, 1); + // Fade in animation + textEl.style.opacity = 0; + initProps(textEl, { + style: { + opacity: oldOpacity + } + }, seriesModel, dataIndex); + } + } else { + textEl.attr(oldLayout); + // Make sure the animation from is in the right status. + var prevStates = el.prevStates; + if (prevStates) { + if (indexOf(prevStates, 'select') >= 0) { + textEl.attr(layoutStore.oldLayoutSelect); + } + if (indexOf(prevStates, 'emphasis') >= 0) { + textEl.attr(layoutStore.oldLayoutEmphasis); + } + } + updateProps(textEl, newProps, seriesModel, dataIndex); + } + layoutStore.oldLayout = newProps; + if (textEl.states.select) { + var layoutSelect = layoutStore.oldLayoutSelect = {}; + extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS); + extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS); + } + if (textEl.states.emphasis) { + var layoutEmphasis = layoutStore.oldLayoutEmphasis = {}; + extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS); + extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS); + } + animateLabelValue(textEl, dataIndex, data, seriesModel, seriesModel); + } + if (guideLine && !guideLine.ignore && !guideLine.invisible) { + var layoutStore = labelLineAnimationStore(guideLine); + var oldLayout = layoutStore.oldLayout; + var newLayout = { + points: guideLine.shape.points + }; + if (!oldLayout) { + guideLine.setShape(newLayout); + guideLine.style.strokePercent = 0; + initProps(guideLine, { + style: { + strokePercent: 1 + } + }, seriesModel); + } else { + guideLine.attr({ + shape: oldLayout + }); + updateProps(guideLine, { + shape: newLayout + }, seriesModel); + } + layoutStore.oldLayout = newLayout; + } + }; + return LabelManager; + }(); + + var getLabelManager = makeInner(); + function installLabelLayout(registers) { + registers.registerUpdateLifecycle('series:beforeupdate', function (ecModel, api, params) { + // TODO api provide an namespace that can save stuff per instance + var labelManager = getLabelManager(api).labelManager; + if (!labelManager) { + labelManager = getLabelManager(api).labelManager = new LabelManager(); + } + labelManager.clearLabels(); + }); + registers.registerUpdateLifecycle('series:layoutlabels', function (ecModel, api, params) { + var labelManager = getLabelManager(api).labelManager; + params.updatedSeries.forEach(function (series) { + labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series)); + }); + labelManager.updateLayoutConfig(api); + labelManager.layout(api); + labelManager.processLabelsOverall(); + }); + } + + var mathSin$4 = Math.sin; + var mathCos$4 = Math.cos; + var PI$4 = Math.PI; + var PI2$7 = Math.PI * 2; + var degree = 180 / PI$4; + var SVGPathRebuilder = (function () { + function SVGPathRebuilder() { + } + SVGPathRebuilder.prototype.reset = function (precision) { + this._start = true; + this._d = []; + this._str = ''; + this._p = Math.pow(10, precision || 4); + }; + SVGPathRebuilder.prototype.moveTo = function (x, y) { + this._add('M', x, y); + }; + SVGPathRebuilder.prototype.lineTo = function (x, y) { + this._add('L', x, y); + }; + SVGPathRebuilder.prototype.bezierCurveTo = function (x, y, x2, y2, x3, y3) { + this._add('C', x, y, x2, y2, x3, y3); + }; + SVGPathRebuilder.prototype.quadraticCurveTo = function (x, y, x2, y2) { + this._add('Q', x, y, x2, y2); + }; + SVGPathRebuilder.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) { + this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise); + }; + SVGPathRebuilder.prototype.ellipse = function (cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) { + var dTheta = endAngle - startAngle; + var clockwise = !anticlockwise; + var dThetaPositive = Math.abs(dTheta); + var isCircle = isAroundZero$1(dThetaPositive - PI2$7) + || (clockwise ? dTheta >= PI2$7 : -dTheta >= PI2$7); + var unifiedTheta = dTheta > 0 ? dTheta % PI2$7 : (dTheta % PI2$7 + PI2$7); + var large = false; + if (isCircle) { + large = true; + } + else if (isAroundZero$1(dThetaPositive)) { + large = false; + } + else { + large = (unifiedTheta >= PI$4) === !!clockwise; + } + var x0 = cx + rx * mathCos$4(startAngle); + var y0 = cy + ry * mathSin$4(startAngle); + if (this._start) { + this._add('M', x0, y0); + } + var xRot = Math.round(psi * degree); + if (isCircle) { + var p = 1 / this._p; + var dTheta_1 = (clockwise ? 1 : -1) * (PI2$7 - p); + this._add('A', rx, ry, xRot, 1, +clockwise, cx + rx * mathCos$4(startAngle + dTheta_1), cy + ry * mathSin$4(startAngle + dTheta_1)); + if (p > 1e-2) { + this._add('A', rx, ry, xRot, 0, +clockwise, x0, y0); + } + } + else { + var x = cx + rx * mathCos$4(endAngle); + var y = cy + ry * mathSin$4(endAngle); + this._add('A', rx, ry, xRot, +large, +clockwise, x, y); + } + }; + SVGPathRebuilder.prototype.rect = function (x, y, w, h) { + this._add('M', x, y); + this._add('l', w, 0); + this._add('l', 0, h); + this._add('l', -w, 0); + this._add('Z'); + }; + SVGPathRebuilder.prototype.closePath = function () { + if (this._d.length > 0) { + this._add('Z'); + } + }; + SVGPathRebuilder.prototype._add = function (cmd, a, b, c, d, e, f, g, h) { + var vals = []; + var p = this._p; + for (var i = 1; i < arguments.length; i++) { + var val = arguments[i]; + if (isNaN(val)) { + this._invalid = true; + return; + } + vals.push(Math.round(val * p) / p); + } + this._d.push(cmd + vals.join(' ')); + this._start = cmd === 'Z'; + }; + SVGPathRebuilder.prototype.generateStr = function () { + this._str = this._invalid ? '' : this._d.join(''); + this._d = []; + }; + SVGPathRebuilder.prototype.getStr = function () { + return this._str; + }; + return SVGPathRebuilder; + }()); + + var NONE = 'none'; + var mathRound$1 = Math.round; + function pathHasFill(style) { + var fill = style.fill; + return fill != null && fill !== NONE; + } + function pathHasStroke(style) { + var stroke = style.stroke; + return stroke != null && stroke !== NONE; + } + var strokeProps = ['lineCap', 'miterLimit', 'lineJoin']; + var svgStrokeProps = map(strokeProps, function (prop) { return "stroke-" + prop.toLowerCase(); }); + function mapStyleToAttrs(updateAttr, style, el, forceUpdate) { + var opacity = style.opacity == null ? 1 : style.opacity; + if (el instanceof ZRImage) { + updateAttr('opacity', opacity); + return; + } + if (pathHasFill(style)) { + var fill = normalizeColor(style.fill); + updateAttr('fill', fill.color); + var fillOpacity = style.fillOpacity != null + ? style.fillOpacity * fill.opacity * opacity + : fill.opacity * opacity; + if (forceUpdate || fillOpacity < 1) { + updateAttr('fill-opacity', fillOpacity); + } + } + else { + updateAttr('fill', NONE); + } + if (pathHasStroke(style)) { + var stroke = normalizeColor(style.stroke); + updateAttr('stroke', stroke.color); + var strokeScale = style.strokeNoScale + ? el.getLineScale() + : 1; + var strokeWidth = (strokeScale ? (style.lineWidth || 0) / strokeScale : 0); + var strokeOpacity = style.strokeOpacity != null + ? style.strokeOpacity * stroke.opacity * opacity + : stroke.opacity * opacity; + var strokeFirst = style.strokeFirst; + if (forceUpdate || strokeWidth !== 1) { + updateAttr('stroke-width', strokeWidth); + } + if (forceUpdate || strokeFirst) { + updateAttr('paint-order', strokeFirst ? 'stroke' : 'fill'); + } + if (forceUpdate || strokeOpacity < 1) { + updateAttr('stroke-opacity', strokeOpacity); + } + if (style.lineDash) { + var _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1]; + if (lineDash) { + lineDashOffset = mathRound$1(lineDashOffset || 0); + updateAttr('stroke-dasharray', lineDash.join(',')); + if (lineDashOffset || forceUpdate) { + updateAttr('stroke-dashoffset', lineDashOffset); + } + } + } + else if (forceUpdate) { + updateAttr('stroke-dasharray', NONE); + } + for (var i = 0; i < strokeProps.length; i++) { + var propName = strokeProps[i]; + if (forceUpdate || style[propName] !== DEFAULT_PATH_STYLE[propName]) { + var val = style[propName] || DEFAULT_PATH_STYLE[propName]; + val && updateAttr(svgStrokeProps[i], val); + } + } + } + else if (forceUpdate) { + updateAttr('stroke', NONE); + } + } + + var SVGNS = 'http://www.w3.org/2000/svg'; + var XLINKNS = 'http://www.w3.org/1999/xlink'; + var XMLNS = 'http://www.w3.org/2000/xmlns/'; + var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'; + var META_DATA_PREFIX = 'ecmeta_'; + function createElement(name) { + return document.createElementNS(SVGNS, name); + } + function createVNode(tag, key, attrs, children, text) { + return { + tag: tag, + attrs: attrs || {}, + children: children, + text: text, + key: key + }; + } + function createElementOpen(name, attrs) { + var attrsStr = []; + if (attrs) { + for (var key in attrs) { + var val = attrs[key]; + var part = key; + if (val === false) { + continue; + } + else if (val !== true && val != null) { + part += "=\"" + val + "\""; + } + attrsStr.push(part); + } + } + return "<" + name + " " + attrsStr.join(' ') + ">"; + } + function createElementClose(name) { + return ""; + } + function vNodeToString(el, opts) { + opts = opts || {}; + var S = opts.newline ? '\n' : ''; + function convertElToString(el) { + var children = el.children, tag = el.tag, attrs = el.attrs, text = el.text; + return createElementOpen(tag, attrs) + + (tag !== 'style' ? encodeHTML(text) : text || '') + + (children ? "" + S + map(children, function (child) { return convertElToString(child); }).join(S) + S : '') + + createElementClose(tag); + } + return convertElToString(el); + } + function getCssString(selectorNodes, animationNodes, opts) { + opts = opts || {}; + var S = opts.newline ? '\n' : ''; + var bracketBegin = " {" + S; + var bracketEnd = S + "}"; + var selectors = map(keys(selectorNodes), function (className) { + return className + bracketBegin + map(keys(selectorNodes[className]), function (attrName) { + return attrName + ":" + selectorNodes[className][attrName] + ";"; + }).join(S) + bracketEnd; + }).join(S); + var animations = map(keys(animationNodes), function (animationName) { + return "@keyframes " + animationName + bracketBegin + map(keys(animationNodes[animationName]), function (percent) { + return percent + bracketBegin + map(keys(animationNodes[animationName][percent]), function (attrName) { + var val = animationNodes[animationName][percent][attrName]; + if (attrName === 'd') { + val = "path(\"" + val + "\")"; + } + return attrName + ":" + val + ";"; + }).join(S) + bracketEnd; + }).join(S) + bracketEnd; + }).join(S); + if (!selectors && !animations) { + return ''; + } + return [''].join(S); + } + function createBrushScope(zrId) { + return { + zrId: zrId, + shadowCache: {}, + patternCache: {}, + gradientCache: {}, + clipPathCache: {}, + defs: {}, + cssNodes: {}, + cssAnims: {}, + cssStyleCache: {}, + cssAnimIdx: 0, + shadowIdx: 0, + gradientIdx: 0, + patternIdx: 0, + clipPathIdx: 0 + }; + } + function createSVGVNode(width, height, children, useViewBox) { + return createVNode('svg', 'root', { + 'width': width, + 'height': height, + 'xmlns': SVGNS, + 'xmlns:xlink': XLINKNS, + 'version': '1.1', + 'baseProfile': 'full', + 'viewBox': useViewBox ? "0 0 " + width + " " + height : false + }, children); + } + + var cssClassIdx = 0; + function getClassId() { + return cssClassIdx++; + } + + var EASING_MAP = { + 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' + }; + var transformOriginKey = 'transform-origin'; + function buildPathString(el, kfShape, path) { + var shape = extend({}, el.shape); + extend(shape, kfShape); + el.buildPath(path, shape); + var svgPathBuilder = new SVGPathRebuilder(); + svgPathBuilder.reset(getPathPrecision(el)); + path.rebuildPath(svgPathBuilder, 1); + svgPathBuilder.generateStr(); + return svgPathBuilder.getStr(); + } + function setTransformOrigin(target, transform) { + var originX = transform.originX, originY = transform.originY; + if (originX || originY) { + target[transformOriginKey] = originX + "px " + originY + "px"; + } + } + var ANIMATE_STYLE_MAP = { + fill: 'fill', + opacity: 'opacity', + lineWidth: 'stroke-width', + lineDashOffset: 'stroke-dashoffset' + }; + function addAnimation(cssAnim, scope) { + var animationName = scope.zrId + '-ani-' + scope.cssAnimIdx++; + scope.cssAnims[animationName] = cssAnim; + return animationName; + } + function createCompoundPathCSSAnimation(el, attrs, scope) { + var paths = el.shape.paths; + var composedAnim = {}; + var cssAnimationCfg; + var cssAnimationName; + each(paths, function (path) { + var subScope = createBrushScope(scope.zrId); + subScope.animation = true; + createCSSAnimation(path, {}, subScope, true); + var cssAnims = subScope.cssAnims; + var cssNodes = subScope.cssNodes; + var animNames = keys(cssAnims); + var len = animNames.length; + if (!len) { + return; + } + cssAnimationName = animNames[len - 1]; + var lastAnim = cssAnims[cssAnimationName]; + for (var percent in lastAnim) { + var kf = lastAnim[percent]; + composedAnim[percent] = composedAnim[percent] || { d: '' }; + composedAnim[percent].d += kf.d || ''; + } + for (var className in cssNodes) { + var val = cssNodes[className].animation; + if (val.indexOf(cssAnimationName) >= 0) { + cssAnimationCfg = val; + } + } + }); + if (!cssAnimationCfg) { + return; + } + attrs.d = false; + var animationName = addAnimation(composedAnim, scope); + return cssAnimationCfg.replace(cssAnimationName, animationName); + } + function getEasingFunc(easing) { + return isString(easing) + ? EASING_MAP[easing] + ? "cubic-bezier(" + EASING_MAP[easing] + ")" + : createCubicEasingFunc(easing) ? easing : '' + : ''; + } + function createCSSAnimation(el, attrs, scope, onlyShape) { + var animators = el.animators; + var len = animators.length; + var cssAnimations = []; + if (el instanceof CompoundPath) { + var animationCfg = createCompoundPathCSSAnimation(el, attrs, scope); + if (animationCfg) { + cssAnimations.push(animationCfg); + } + else if (!len) { + return; + } + } + else if (!len) { + return; + } + var groupAnimators = {}; + for (var i = 0; i < len; i++) { + var animator = animators[i]; + var cfgArr = [animator.getMaxTime() / 1000 + 's']; + var easing = getEasingFunc(animator.getClip().easing); + var delay = animator.getDelay(); + if (easing) { + cfgArr.push(easing); + } + else { + cfgArr.push('linear'); + } + if (delay) { + cfgArr.push(delay / 1000 + 's'); + } + if (animator.getLoop()) { + cfgArr.push('infinite'); + } + var cfg = cfgArr.join(' '); + groupAnimators[cfg] = groupAnimators[cfg] || [cfg, []]; + groupAnimators[cfg][1].push(animator); + } + function createSingleCSSAnimation(groupAnimator) { + var animators = groupAnimator[1]; + var len = animators.length; + var transformKfs = {}; + var shapeKfs = {}; + var finalKfs = {}; + var animationTimingFunctionAttrName = 'animation-timing-function'; + function saveAnimatorTrackToCssKfs(animator, cssKfs, toCssAttrName) { + var tracks = animator.getTracks(); + var maxTime = animator.getMaxTime(); + for (var k = 0; k < tracks.length; k++) { + var track = tracks[k]; + if (track.needsAnimate()) { + var kfs = track.keyframes; + var attrName = track.propName; + toCssAttrName && (attrName = toCssAttrName(attrName)); + if (attrName) { + for (var i = 0; i < kfs.length; i++) { + var kf = kfs[i]; + var percent = Math.round(kf.time / maxTime * 100) + '%'; + var kfEasing = getEasingFunc(kf.easing); + var rawValue = kf.rawValue; + if (isString(rawValue) || isNumber(rawValue)) { + cssKfs[percent] = cssKfs[percent] || {}; + cssKfs[percent][attrName] = kf.rawValue; + if (kfEasing) { + cssKfs[percent][animationTimingFunctionAttrName] = kfEasing; + } + } + } + } + } + } + } + for (var i = 0; i < len; i++) { + var animator = animators[i]; + var targetProp = animator.targetName; + if (!targetProp) { + !onlyShape && saveAnimatorTrackToCssKfs(animator, transformKfs); + } + else if (targetProp === 'shape') { + saveAnimatorTrackToCssKfs(animator, shapeKfs); + } + } + for (var percent in transformKfs) { + var transform = {}; + copyTransform(transform, el); + extend(transform, transformKfs[percent]); + var str = getSRTTransformString(transform); + var timingFunction = transformKfs[percent][animationTimingFunctionAttrName]; + finalKfs[percent] = str ? { + transform: str + } : {}; + setTransformOrigin(finalKfs[percent], transform); + if (timingFunction) { + finalKfs[percent][animationTimingFunctionAttrName] = timingFunction; + } + } + var path; + var canAnimateShape = true; + for (var percent in shapeKfs) { + finalKfs[percent] = finalKfs[percent] || {}; + var isFirst = !path; + var timingFunction = shapeKfs[percent][animationTimingFunctionAttrName]; + if (isFirst) { + path = new PathProxy(); + } + var len_1 = path.len(); + path.reset(); + finalKfs[percent].d = buildPathString(el, shapeKfs[percent], path); + var newLen = path.len(); + if (!isFirst && len_1 !== newLen) { + canAnimateShape = false; + break; + } + if (timingFunction) { + finalKfs[percent][animationTimingFunctionAttrName] = timingFunction; + } + } + if (!canAnimateShape) { + for (var percent in finalKfs) { + delete finalKfs[percent].d; + } + } + if (!onlyShape) { + for (var i = 0; i < len; i++) { + var animator = animators[i]; + var targetProp = animator.targetName; + if (targetProp === 'style') { + saveAnimatorTrackToCssKfs(animator, finalKfs, function (propName) { return ANIMATE_STYLE_MAP[propName]; }); + } + } + } + var percents = keys(finalKfs); + var allTransformOriginSame = true; + var transformOrigin; + for (var i = 1; i < percents.length; i++) { + var p0 = percents[i - 1]; + var p1 = percents[i]; + if (finalKfs[p0][transformOriginKey] !== finalKfs[p1][transformOriginKey]) { + allTransformOriginSame = false; + break; + } + transformOrigin = finalKfs[p0][transformOriginKey]; + } + if (allTransformOriginSame && transformOrigin) { + for (var percent in finalKfs) { + if (finalKfs[percent][transformOriginKey]) { + delete finalKfs[percent][transformOriginKey]; + } + } + attrs[transformOriginKey] = transformOrigin; + } + if (filter(percents, function (percent) { return keys(finalKfs[percent]).length > 0; }).length) { + var animationName = addAnimation(finalKfs, scope); + return animationName + " " + groupAnimator[0] + " both"; + } + } + for (var key in groupAnimators) { + var animationCfg = createSingleCSSAnimation(groupAnimators[key]); + if (animationCfg) { + cssAnimations.push(animationCfg); + } + } + if (cssAnimations.length) { + var className = scope.zrId + '-cls-' + getClassId(); + scope.cssNodes['.' + className] = { + animation: cssAnimations.join(',') + }; + attrs["class"] = className; + } + } + + function createCSSEmphasis(el, attrs, scope) { + if (!el.ignore) { + if (el.isSilent()) { + var style = { + 'pointer-events': 'none' + }; + setClassAttribute(style, attrs, scope, true); + } + else { + var emphasisStyle = el.states.emphasis && el.states.emphasis.style + ? el.states.emphasis.style + : {}; + var fill = emphasisStyle.fill; + if (!fill) { + var normalFill = el.style && el.style.fill; + var selectFill = el.states.select + && el.states.select.style + && el.states.select.style.fill; + var fromFill = el.currentStates.indexOf('select') >= 0 + ? (selectFill || normalFill) + : normalFill; + if (fromFill) { + fill = liftColor(fromFill); + } + } + var lineWidth = emphasisStyle.lineWidth; + if (lineWidth) { + var scaleX = (!emphasisStyle.strokeNoScale && el.transform) + ? el.transform[0] + : 1; + lineWidth = lineWidth / scaleX; + } + var style = { + cursor: 'pointer' + }; + if (fill) { + style.fill = fill; + } + if (emphasisStyle.stroke) { + style.stroke = emphasisStyle.stroke; + } + if (lineWidth) { + style['stroke-width'] = lineWidth; + } + setClassAttribute(style, attrs, scope, true); + } + } + } + function setClassAttribute(style, attrs, scope, withHover) { + var styleKey = JSON.stringify(style); + var className = scope.cssStyleCache[styleKey]; + if (!className) { + className = scope.zrId + '-cls-' + getClassId(); + scope.cssStyleCache[styleKey] = className; + scope.cssNodes['.' + className + (withHover ? ':hover' : '')] = style; + } + attrs["class"] = attrs["class"] ? (attrs["class"] + ' ' + className) : className; + } + + var round$2 = Math.round; + function isImageLike$1(val) { + return val && isString(val.src); + } + function isCanvasLike(val) { + return val && isFunction(val.toDataURL); + } + function setStyleAttrs(attrs, style, el, scope) { + mapStyleToAttrs(function (key, val) { + var isFillStroke = key === 'fill' || key === 'stroke'; + if (isFillStroke && isGradient(val)) { + setGradient(style, attrs, key, scope); + } + else if (isFillStroke && isPattern(val)) { + setPattern(el, attrs, key, scope); + } + else if (isFillStroke && val === 'none') { + attrs[key] = 'transparent'; + } + else { + attrs[key] = val; + } + }, style, el, false); + setShadow(el, attrs, scope); + } + function setMetaData(attrs, el) { + var metaData = getElementSSRData(el); + if (metaData) { + metaData.each(function (val, key) { + val != null && (attrs[(META_DATA_PREFIX + key).toLowerCase()] = val + ''); + }); + if (el.isSilent()) { + attrs[META_DATA_PREFIX + 'silent'] = 'true'; + } + } + } + function noRotateScale(m) { + return isAroundZero$1(m[0] - 1) + && isAroundZero$1(m[1]) + && isAroundZero$1(m[2]) + && isAroundZero$1(m[3] - 1); + } + function noTranslate(m) { + return isAroundZero$1(m[4]) && isAroundZero$1(m[5]); + } + function setTransform(attrs, m, compress) { + if (m && !(noTranslate(m) && noRotateScale(m))) { + var mul = compress ? 10 : 1e4; + attrs.transform = noRotateScale(m) + ? "translate(" + round$2(m[4] * mul) / mul + " " + round$2(m[5] * mul) / mul + ")" : getMatrixStr(m); + } + } + function convertPolyShape(shape, attrs, mul) { + var points = shape.points; + var strArr = []; + for (var i = 0; i < points.length; i++) { + strArr.push(round$2(points[i][0] * mul) / mul); + strArr.push(round$2(points[i][1] * mul) / mul); + } + attrs.points = strArr.join(' '); + } + function validatePolyShape(shape) { + return !shape.smooth; + } + function createAttrsConvert(desc) { + var normalizedDesc = map(desc, function (item) { + return (typeof item === 'string' ? [item, item] : item); + }); + return function (shape, attrs, mul) { + for (var i = 0; i < normalizedDesc.length; i++) { + var item = normalizedDesc[i]; + var val = shape[item[0]]; + if (val != null) { + attrs[item[1]] = round$2(val * mul) / mul; + } + } + }; + } + var builtinShapesDef = { + circle: [createAttrsConvert(['cx', 'cy', 'r'])], + polyline: [convertPolyShape, validatePolyShape], + polygon: [convertPolyShape, validatePolyShape] + }; + function hasShapeAnimation(el) { + var animators = el.animators; + for (var i = 0; i < animators.length; i++) { + if (animators[i].targetName === 'shape') { + return true; + } + } + return false; + } + function brushSVGPath(el, scope) { + var style = el.style; + var shape = el.shape; + var builtinShpDef = builtinShapesDef[el.type]; + var attrs = {}; + var needsAnimate = scope.animation; + var svgElType = 'path'; + var strokePercent = el.style.strokePercent; + var precision = (scope.compress && getPathPrecision(el)) || 4; + if (builtinShpDef + && !scope.willUpdate + && !(builtinShpDef[1] && !builtinShpDef[1](shape)) + && !(needsAnimate && hasShapeAnimation(el)) + && !(strokePercent < 1)) { + svgElType = el.type; + var mul = Math.pow(10, precision); + builtinShpDef[0](shape, attrs, mul); + } + else { + var needBuildPath = !el.path || el.shapeChanged(); + if (!el.path) { + el.createPathProxy(); + } + var path = el.path; + if (needBuildPath) { + path.beginPath(); + el.buildPath(path, el.shape); + el.pathUpdated(); + } + var pathVersion = path.getVersion(); + var elExt = el; + var svgPathBuilder = elExt.__svgPathBuilder; + if (elExt.__svgPathVersion !== pathVersion + || !svgPathBuilder + || strokePercent !== elExt.__svgPathStrokePercent) { + if (!svgPathBuilder) { + svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder(); + } + svgPathBuilder.reset(precision); + path.rebuildPath(svgPathBuilder, strokePercent); + svgPathBuilder.generateStr(); + elExt.__svgPathVersion = pathVersion; + elExt.__svgPathStrokePercent = strokePercent; + } + attrs.d = svgPathBuilder.getStr(); + } + setTransform(attrs, el.transform); + setStyleAttrs(attrs, style, el, scope); + setMetaData(attrs, el); + scope.animation && createCSSAnimation(el, attrs, scope); + scope.emphasis && createCSSEmphasis(el, attrs, scope); + return createVNode(svgElType, el.id + '', attrs); + } + function brushSVGImage(el, scope) { + var style = el.style; + var image = style.image; + if (image && !isString(image)) { + if (isImageLike$1(image)) { + image = image.src; + } + else if (isCanvasLike(image)) { + image = image.toDataURL(); + } + } + if (!image) { + return; + } + var x = style.x || 0; + var y = style.y || 0; + var dw = style.width; + var dh = style.height; + var attrs = { + href: image, + width: dw, + height: dh + }; + if (x) { + attrs.x = x; + } + if (y) { + attrs.y = y; + } + setTransform(attrs, el.transform); + setStyleAttrs(attrs, style, el, scope); + setMetaData(attrs, el); + scope.animation && createCSSAnimation(el, attrs, scope); + return createVNode('image', el.id + '', attrs); + } + function brushSVGTSpan(el, scope) { + var style = el.style; + var text = style.text; + text != null && (text += ''); + if (!text || isNaN(style.x) || isNaN(style.y)) { + return; + } + var font = style.font || DEFAULT_FONT; + var x = style.x || 0; + var y = adjustTextY(style.y || 0, getLineHeight(font), style.textBaseline); + var textAlign = TEXT_ALIGN_TO_ANCHOR[style.textAlign] + || style.textAlign; + var attrs = { + 'dominant-baseline': 'central', + 'text-anchor': textAlign + }; + if (hasSeparateFont(style)) { + var separatedFontStr = ''; + var fontStyle = style.fontStyle; + var fontSize = parseFontSize(style.fontSize); + if (!parseFloat(fontSize)) { + return; + } + var fontFamily = style.fontFamily || DEFAULT_FONT_FAMILY; + var fontWeight = style.fontWeight; + separatedFontStr += "font-size:" + fontSize + ";font-family:" + fontFamily + ";"; + if (fontStyle && fontStyle !== 'normal') { + separatedFontStr += "font-style:" + fontStyle + ";"; + } + if (fontWeight && fontWeight !== 'normal') { + separatedFontStr += "font-weight:" + fontWeight + ";"; + } + attrs.style = separatedFontStr; + } + else { + attrs.style = "font: " + font; + } + if (text.match(/\s/)) { + attrs['xml:space'] = 'preserve'; + } + if (x) { + attrs.x = x; + } + if (y) { + attrs.y = y; + } + setTransform(attrs, el.transform); + setStyleAttrs(attrs, style, el, scope); + setMetaData(attrs, el); + scope.animation && createCSSAnimation(el, attrs, scope); + return createVNode('text', el.id + '', attrs, undefined, text); + } + function brush$1(el, scope) { + if (el instanceof Path) { + return brushSVGPath(el, scope); + } + else if (el instanceof ZRImage) { + return brushSVGImage(el, scope); + } + else if (el instanceof TSpan) { + return brushSVGTSpan(el, scope); + } + } + function setShadow(el, attrs, scope) { + var style = el.style; + if (hasShadow(style)) { + var shadowKey = getShadowKey(el); + var shadowCache = scope.shadowCache; + var shadowId = shadowCache[shadowKey]; + if (!shadowId) { + var globalScale = el.getGlobalScale(); + var scaleX = globalScale[0]; + var scaleY = globalScale[1]; + if (!scaleX || !scaleY) { + return; + } + var offsetX = style.shadowOffsetX || 0; + var offsetY = style.shadowOffsetY || 0; + var blur_1 = style.shadowBlur; + var _a = normalizeColor(style.shadowColor), opacity = _a.opacity, color = _a.color; + var stdDx = blur_1 / 2 / scaleX; + var stdDy = blur_1 / 2 / scaleY; + var stdDeviation = stdDx + ' ' + stdDy; + shadowId = scope.zrId + '-s' + scope.shadowIdx++; + scope.defs[shadowId] = createVNode('filter', shadowId, { + 'id': shadowId, + 'x': '-100%', + 'y': '-100%', + 'width': '300%', + 'height': '300%' + }, [ + createVNode('feDropShadow', '', { + 'dx': offsetX / scaleX, + 'dy': offsetY / scaleY, + 'stdDeviation': stdDeviation, + 'flood-color': color, + 'flood-opacity': opacity + }) + ]); + shadowCache[shadowKey] = shadowId; + } + attrs.filter = getIdURL(shadowId); + } + } + function setGradient(style, attrs, target, scope) { + var val = style[target]; + var gradientTag; + var gradientAttrs = { + 'gradientUnits': val.global + ? 'userSpaceOnUse' + : 'objectBoundingBox' + }; + if (isLinearGradient(val)) { + gradientTag = 'linearGradient'; + gradientAttrs.x1 = val.x; + gradientAttrs.y1 = val.y; + gradientAttrs.x2 = val.x2; + gradientAttrs.y2 = val.y2; + } + else if (isRadialGradient(val)) { + gradientTag = 'radialGradient'; + gradientAttrs.cx = retrieve2(val.x, 0.5); + gradientAttrs.cy = retrieve2(val.y, 0.5); + gradientAttrs.r = retrieve2(val.r, 0.5); + } + else { + if ("development" !== 'production') { + logError('Illegal gradient type.'); + } + return; + } + var colors = val.colorStops; + var colorStops = []; + for (var i = 0, len = colors.length; i < len; ++i) { + var offset = round4(colors[i].offset) * 100 + '%'; + var stopColor = colors[i].color; + var _a = normalizeColor(stopColor), color = _a.color, opacity = _a.opacity; + var stopsAttrs = { + 'offset': offset + }; + stopsAttrs['stop-color'] = color; + if (opacity < 1) { + stopsAttrs['stop-opacity'] = opacity; + } + colorStops.push(createVNode('stop', i + '', stopsAttrs)); + } + var gradientVNode = createVNode(gradientTag, '', gradientAttrs, colorStops); + var gradientKey = vNodeToString(gradientVNode); + var gradientCache = scope.gradientCache; + var gradientId = gradientCache[gradientKey]; + if (!gradientId) { + gradientId = scope.zrId + '-g' + scope.gradientIdx++; + gradientCache[gradientKey] = gradientId; + gradientAttrs.id = gradientId; + scope.defs[gradientId] = createVNode(gradientTag, gradientId, gradientAttrs, colorStops); + } + attrs[target] = getIdURL(gradientId); + } + function setPattern(el, attrs, target, scope) { + var val = el.style[target]; + var boundingRect = el.getBoundingRect(); + var patternAttrs = {}; + var repeat = val.repeat; + var noRepeat = repeat === 'no-repeat'; + var repeatX = repeat === 'repeat-x'; + var repeatY = repeat === 'repeat-y'; + var child; + if (isImagePattern(val)) { + var imageWidth_1 = val.imageWidth; + var imageHeight_1 = val.imageHeight; + var imageSrc = void 0; + var patternImage = val.image; + if (isString(patternImage)) { + imageSrc = patternImage; + } + else if (isImageLike$1(patternImage)) { + imageSrc = patternImage.src; + } + else if (isCanvasLike(patternImage)) { + imageSrc = patternImage.toDataURL(); + } + if (typeof Image === 'undefined') { + var errMsg = 'Image width/height must been given explictly in svg-ssr renderer.'; + assert(imageWidth_1, errMsg); + assert(imageHeight_1, errMsg); + } + else if (imageWidth_1 == null || imageHeight_1 == null) { + var setSizeToVNode_1 = function (vNode, img) { + if (vNode) { + var svgEl = vNode.elm; + var width = imageWidth_1 || img.width; + var height = imageHeight_1 || img.height; + if (vNode.tag === 'pattern') { + if (repeatX) { + height = 1; + width /= boundingRect.width; + } + else if (repeatY) { + width = 1; + height /= boundingRect.height; + } + } + vNode.attrs.width = width; + vNode.attrs.height = height; + if (svgEl) { + svgEl.setAttribute('width', width); + svgEl.setAttribute('height', height); + } + } + }; + var createdImage = createOrUpdateImage(imageSrc, null, el, function (img) { + noRepeat || setSizeToVNode_1(patternVNode, img); + setSizeToVNode_1(child, img); + }); + if (createdImage && createdImage.width && createdImage.height) { + imageWidth_1 = imageWidth_1 || createdImage.width; + imageHeight_1 = imageHeight_1 || createdImage.height; + } + } + child = createVNode('image', 'img', { + href: imageSrc, + width: imageWidth_1, + height: imageHeight_1 + }); + patternAttrs.width = imageWidth_1; + patternAttrs.height = imageHeight_1; + } + else if (val.svgElement) { + child = clone(val.svgElement); + patternAttrs.width = val.svgWidth; + patternAttrs.height = val.svgHeight; + } + if (!child) { + return; + } + var patternWidth; + var patternHeight; + if (noRepeat) { + patternWidth = patternHeight = 1; + } + else if (repeatX) { + patternHeight = 1; + patternWidth = patternAttrs.width / boundingRect.width; + } + else if (repeatY) { + patternWidth = 1; + patternHeight = patternAttrs.height / boundingRect.height; + } + else { + patternAttrs.patternUnits = 'userSpaceOnUse'; + } + if (patternWidth != null && !isNaN(patternWidth)) { + patternAttrs.width = patternWidth; + } + if (patternHeight != null && !isNaN(patternHeight)) { + patternAttrs.height = patternHeight; + } + var patternTransform = getSRTTransformString(val); + patternTransform && (patternAttrs.patternTransform = patternTransform); + var patternVNode = createVNode('pattern', '', patternAttrs, [child]); + var patternKey = vNodeToString(patternVNode); + var patternCache = scope.patternCache; + var patternId = patternCache[patternKey]; + if (!patternId) { + patternId = scope.zrId + '-p' + scope.patternIdx++; + patternCache[patternKey] = patternId; + patternAttrs.id = patternId; + patternVNode = scope.defs[patternId] = createVNode('pattern', patternId, patternAttrs, [child]); + } + attrs[target] = getIdURL(patternId); + } + function setClipPath(clipPath, attrs, scope) { + var clipPathCache = scope.clipPathCache, defs = scope.defs; + var clipPathId = clipPathCache[clipPath.id]; + if (!clipPathId) { + clipPathId = scope.zrId + '-c' + scope.clipPathIdx++; + var clipPathAttrs = { + id: clipPathId + }; + clipPathCache[clipPath.id] = clipPathId; + defs[clipPathId] = createVNode('clipPath', clipPathId, clipPathAttrs, [brushSVGPath(clipPath, scope)]); + } + attrs['clip-path'] = getIdURL(clipPathId); + } + + function createTextNode(text) { + return document.createTextNode(text); + } + function insertBefore(parentNode, newNode, referenceNode) { + parentNode.insertBefore(newNode, referenceNode); + } + function removeChild(node, child) { + node.removeChild(child); + } + function appendChild(node, child) { + node.appendChild(child); + } + function parentNode(node) { + return node.parentNode; + } + function nextSibling(node) { + return node.nextSibling; + } + function setTextContent(node, text) { + node.textContent = text; + } + + var colonChar = 58; + var xChar = 120; + var emptyNode = createVNode('', ''); + function isUndef(s) { + return s === undefined; + } + function isDef(s) { + return s !== undefined; + } + function createKeyToOldIdx(children, beginIdx, endIdx) { + var map = {}; + for (var i = beginIdx; i <= endIdx; ++i) { + var key = children[i].key; + if (key !== undefined) { + if ("development" !== 'production') { + if (map[key] != null) { + console.error("Duplicate key " + key); + } + } + map[key] = i; + } + } + return map; + } + function sameVnode(vnode1, vnode2) { + var isSameKey = vnode1.key === vnode2.key; + var isSameTag = vnode1.tag === vnode2.tag; + return isSameTag && isSameKey; + } + function createElm(vnode) { + var i; + var children = vnode.children; + var tag = vnode.tag; + if (isDef(tag)) { + var elm = (vnode.elm = createElement(tag)); + updateAttrs(emptyNode, vnode); + if (isArray(children)) { + for (i = 0; i < children.length; ++i) { + var ch = children[i]; + if (ch != null) { + appendChild(elm, createElm(ch)); + } + } + } + else if (isDef(vnode.text) && !isObject(vnode.text)) { + appendChild(elm, createTextNode(vnode.text)); + } + } + else { + vnode.elm = createTextNode(vnode.text); + } + return vnode.elm; + } + function addVnodes(parentElm, before, vnodes, startIdx, endIdx) { + for (; startIdx <= endIdx; ++startIdx) { + var ch = vnodes[startIdx]; + if (ch != null) { + insertBefore(parentElm, createElm(ch), before); + } + } + } + function removeVnodes(parentElm, vnodes, startIdx, endIdx) { + for (; startIdx <= endIdx; ++startIdx) { + var ch = vnodes[startIdx]; + if (ch != null) { + if (isDef(ch.tag)) { + var parent_1 = parentNode(ch.elm); + removeChild(parent_1, ch.elm); + } + else { + removeChild(parentElm, ch.elm); + } + } + } + } + function updateAttrs(oldVnode, vnode) { + var key; + var elm = vnode.elm; + var oldAttrs = oldVnode && oldVnode.attrs || {}; + var attrs = vnode.attrs || {}; + if (oldAttrs === attrs) { + return; + } + for (key in attrs) { + var cur = attrs[key]; + var old = oldAttrs[key]; + if (old !== cur) { + if (cur === true) { + elm.setAttribute(key, ''); + } + else if (cur === false) { + elm.removeAttribute(key); + } + else { + if (key === 'style') { + elm.style.cssText = cur; + } + else if (key.charCodeAt(0) !== xChar) { + elm.setAttribute(key, cur); + } + else if (key === 'xmlns:xlink' || key === 'xmlns') { + elm.setAttributeNS(XMLNS, key, cur); + } + else if (key.charCodeAt(3) === colonChar) { + elm.setAttributeNS(XML_NAMESPACE, key, cur); + } + else if (key.charCodeAt(5) === colonChar) { + elm.setAttributeNS(XLINKNS, key, cur); + } + else { + elm.setAttribute(key, cur); + } + } + } + } + for (key in oldAttrs) { + if (!(key in attrs)) { + elm.removeAttribute(key); + } + } + } + function updateChildren(parentElm, oldCh, newCh) { + var oldStartIdx = 0; + var newStartIdx = 0; + var oldEndIdx = oldCh.length - 1; + var oldStartVnode = oldCh[0]; + var oldEndVnode = oldCh[oldEndIdx]; + var newEndIdx = newCh.length - 1; + var newStartVnode = newCh[0]; + var newEndVnode = newCh[newEndIdx]; + var oldKeyToIdx; + var idxInOld; + var elmToMove; + var before; + while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { + if (oldStartVnode == null) { + oldStartVnode = oldCh[++oldStartIdx]; + } + else if (oldEndVnode == null) { + oldEndVnode = oldCh[--oldEndIdx]; + } + else if (newStartVnode == null) { + newStartVnode = newCh[++newStartIdx]; + } + else if (newEndVnode == null) { + newEndVnode = newCh[--newEndIdx]; + } + else if (sameVnode(oldStartVnode, newStartVnode)) { + patchVnode(oldStartVnode, newStartVnode); + oldStartVnode = oldCh[++oldStartIdx]; + newStartVnode = newCh[++newStartIdx]; + } + else if (sameVnode(oldEndVnode, newEndVnode)) { + patchVnode(oldEndVnode, newEndVnode); + oldEndVnode = oldCh[--oldEndIdx]; + newEndVnode = newCh[--newEndIdx]; + } + else if (sameVnode(oldStartVnode, newEndVnode)) { + patchVnode(oldStartVnode, newEndVnode); + insertBefore(parentElm, oldStartVnode.elm, nextSibling(oldEndVnode.elm)); + oldStartVnode = oldCh[++oldStartIdx]; + newEndVnode = newCh[--newEndIdx]; + } + else if (sameVnode(oldEndVnode, newStartVnode)) { + patchVnode(oldEndVnode, newStartVnode); + insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); + oldEndVnode = oldCh[--oldEndIdx]; + newStartVnode = newCh[++newStartIdx]; + } + else { + if (isUndef(oldKeyToIdx)) { + oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); + } + idxInOld = oldKeyToIdx[newStartVnode.key]; + if (isUndef(idxInOld)) { + insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm); + } + else { + elmToMove = oldCh[idxInOld]; + if (elmToMove.tag !== newStartVnode.tag) { + insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm); + } + else { + patchVnode(elmToMove, newStartVnode); + oldCh[idxInOld] = undefined; + insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm); + } + } + newStartVnode = newCh[++newStartIdx]; + } + } + if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) { + if (oldStartIdx > oldEndIdx) { + before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm; + addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx); + } + else { + removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx); + } + } + } + function patchVnode(oldVnode, vnode) { + var elm = (vnode.elm = oldVnode.elm); + var oldCh = oldVnode.children; + var ch = vnode.children; + if (oldVnode === vnode) { + return; + } + updateAttrs(oldVnode, vnode); + if (isUndef(vnode.text)) { + if (isDef(oldCh) && isDef(ch)) { + if (oldCh !== ch) { + updateChildren(elm, oldCh, ch); + } + } + else if (isDef(ch)) { + if (isDef(oldVnode.text)) { + setTextContent(elm, ''); + } + addVnodes(elm, null, ch, 0, ch.length - 1); + } + else if (isDef(oldCh)) { + removeVnodes(elm, oldCh, 0, oldCh.length - 1); + } + else if (isDef(oldVnode.text)) { + setTextContent(elm, ''); + } + } + else if (oldVnode.text !== vnode.text) { + if (isDef(oldCh)) { + removeVnodes(elm, oldCh, 0, oldCh.length - 1); + } + setTextContent(elm, vnode.text); + } + } + function patch(oldVnode, vnode) { + if (sameVnode(oldVnode, vnode)) { + patchVnode(oldVnode, vnode); + } + else { + var elm = oldVnode.elm; + var parent_2 = parentNode(elm); + createElm(vnode); + if (parent_2 !== null) { + insertBefore(parent_2, vnode.elm, nextSibling(elm)); + removeVnodes(parent_2, [oldVnode], 0, 0); + } + } + return vnode; + } + + var svgId = 0; + var SVGPainter = (function () { + function SVGPainter(root, storage, opts) { + this.type = 'svg'; + this.refreshHover = createMethodNotSupport('refreshHover'); + this.configLayer = createMethodNotSupport('configLayer'); + this.storage = storage; + this._opts = opts = extend({}, opts); + this.root = root; + this._id = 'zr' + svgId++; + this._oldVNode = createSVGVNode(opts.width, opts.height); + if (root && !opts.ssr) { + var viewport = this._viewport = document.createElement('div'); + viewport.style.cssText = 'position:relative;overflow:hidden'; + var svgDom = this._svgDom = this._oldVNode.elm = createElement('svg'); + updateAttrs(null, this._oldVNode); + viewport.appendChild(svgDom); + root.appendChild(viewport); + } + this.resize(opts.width, opts.height); + } + SVGPainter.prototype.getType = function () { + return this.type; + }; + SVGPainter.prototype.getViewportRoot = function () { + return this._viewport; + }; + SVGPainter.prototype.getViewportRootOffset = function () { + var viewportRoot = this.getViewportRoot(); + if (viewportRoot) { + return { + offsetLeft: viewportRoot.offsetLeft || 0, + offsetTop: viewportRoot.offsetTop || 0 + }; + } + }; + SVGPainter.prototype.getSvgDom = function () { + return this._svgDom; + }; + SVGPainter.prototype.refresh = function () { + if (this.root) { + var vnode = this.renderToVNode({ + willUpdate: true + }); + vnode.attrs.style = 'position:absolute;left:0;top:0;user-select:none'; + patch(this._oldVNode, vnode); + this._oldVNode = vnode; + } + }; + SVGPainter.prototype.renderOneToVNode = function (el) { + return brush$1(el, createBrushScope(this._id)); + }; + SVGPainter.prototype.renderToVNode = function (opts) { + opts = opts || {}; + var list = this.storage.getDisplayList(true); + var width = this._width; + var height = this._height; + var scope = createBrushScope(this._id); + scope.animation = opts.animation; + scope.willUpdate = opts.willUpdate; + scope.compress = opts.compress; + scope.emphasis = opts.emphasis; + var children = []; + var bgVNode = this._bgVNode = createBackgroundVNode(width, height, this._backgroundColor, scope); + bgVNode && children.push(bgVNode); + var mainVNode = !opts.compress + ? (this._mainVNode = createVNode('g', 'main', {}, [])) : null; + this._paintList(list, scope, mainVNode ? mainVNode.children : children); + mainVNode && children.push(mainVNode); + var defs = map(keys(scope.defs), function (id) { return scope.defs[id]; }); + if (defs.length) { + children.push(createVNode('defs', 'defs', {}, defs)); + } + if (opts.animation) { + var animationCssStr = getCssString(scope.cssNodes, scope.cssAnims, { newline: true }); + if (animationCssStr) { + var styleNode = createVNode('style', 'stl', {}, [], animationCssStr); + children.push(styleNode); + } + } + return createSVGVNode(width, height, children, opts.useViewBox); + }; + SVGPainter.prototype.renderToString = function (opts) { + opts = opts || {}; + return vNodeToString(this.renderToVNode({ + animation: retrieve2(opts.cssAnimation, true), + emphasis: retrieve2(opts.cssEmphasis, true), + willUpdate: false, + compress: true, + useViewBox: retrieve2(opts.useViewBox, true) + }), { newline: true }); + }; + SVGPainter.prototype.setBackgroundColor = function (backgroundColor) { + this._backgroundColor = backgroundColor; + }; + SVGPainter.prototype.getSvgRoot = function () { + return this._mainVNode && this._mainVNode.elm; + }; + SVGPainter.prototype._paintList = function (list, scope, out) { + var listLen = list.length; + var clipPathsGroupsStack = []; + var clipPathsGroupsStackDepth = 0; + var currentClipPathGroup; + var prevClipPaths; + var clipGroupNodeIdx = 0; + for (var i = 0; i < listLen; i++) { + var displayable = list[i]; + if (!displayable.invisible) { + var clipPaths = displayable.__clipPaths; + var len = clipPaths && clipPaths.length || 0; + var prevLen = prevClipPaths && prevClipPaths.length || 0; + var lca = void 0; + for (lca = Math.max(len - 1, prevLen - 1); lca >= 0; lca--) { + if (clipPaths && prevClipPaths + && clipPaths[lca] === prevClipPaths[lca]) { + break; + } + } + for (var i_1 = prevLen - 1; i_1 > lca; i_1--) { + clipPathsGroupsStackDepth--; + currentClipPathGroup = clipPathsGroupsStack[clipPathsGroupsStackDepth - 1]; + } + for (var i_2 = lca + 1; i_2 < len; i_2++) { + var groupAttrs = {}; + setClipPath(clipPaths[i_2], groupAttrs, scope); + var g = createVNode('g', 'clip-g-' + clipGroupNodeIdx++, groupAttrs, []); + (currentClipPathGroup ? currentClipPathGroup.children : out).push(g); + clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g; + currentClipPathGroup = g; + } + prevClipPaths = clipPaths; + var ret = brush$1(displayable, scope); + if (ret) { + (currentClipPathGroup ? currentClipPathGroup.children : out).push(ret); + } + } + } + }; + SVGPainter.prototype.resize = function (width, height) { + var opts = this._opts; + var root = this.root; + var viewport = this._viewport; + width != null && (opts.width = width); + height != null && (opts.height = height); + if (root && viewport) { + viewport.style.display = 'none'; + width = getSize(root, 0, opts); + height = getSize(root, 1, opts); + viewport.style.display = ''; + } + if (this._width !== width || this._height !== height) { + this._width = width; + this._height = height; + if (viewport) { + var viewportStyle = viewport.style; + viewportStyle.width = width + 'px'; + viewportStyle.height = height + 'px'; + } + if (!isPattern(this._backgroundColor)) { + var svgDom = this._svgDom; + if (svgDom) { + svgDom.setAttribute('width', width); + svgDom.setAttribute('height', height); + } + var bgEl = this._bgVNode && this._bgVNode.elm; + if (bgEl) { + bgEl.setAttribute('width', width); + bgEl.setAttribute('height', height); + } + } + else { + this.refresh(); + } + } + }; + SVGPainter.prototype.getWidth = function () { + return this._width; + }; + SVGPainter.prototype.getHeight = function () { + return this._height; + }; + SVGPainter.prototype.dispose = function () { + if (this.root) { + this.root.innerHTML = ''; + } + this._svgDom = + this._viewport = + this.storage = + this._oldVNode = + this._bgVNode = + this._mainVNode = null; + }; + SVGPainter.prototype.clear = function () { + if (this._svgDom) { + this._svgDom.innerHTML = null; + } + this._oldVNode = null; + }; + SVGPainter.prototype.toDataURL = function (base64) { + var str = this.renderToString(); + var prefix = 'data:image/svg+xml;'; + if (base64) { + str = encodeBase64(str); + return str && prefix + 'base64,' + str; + } + return prefix + 'charset=UTF-8,' + encodeURIComponent(str); + }; + return SVGPainter; + }()); + function createMethodNotSupport(method) { + return function () { + if ("development" !== 'production') { + logError('In SVG mode painter not support method "' + method + '"'); + } + }; + } + function createBackgroundVNode(width, height, backgroundColor, scope) { + var bgVNode; + if (backgroundColor && backgroundColor !== 'none') { + bgVNode = createVNode('rect', 'bg', { + width: width, + height: height, + x: '0', + y: '0' + }); + if (isGradient(backgroundColor)) { + setGradient({ fill: backgroundColor }, bgVNode.attrs, 'fill', scope); + } + else if (isPattern(backgroundColor)) { + setPattern({ + style: { + fill: backgroundColor + }, + dirty: noop, + getBoundingRect: function () { return ({ width: width, height: height }); } + }, bgVNode.attrs, 'fill', scope); + } + else { + var _a = normalizeColor(backgroundColor), color = _a.color, opacity = _a.opacity; + bgVNode.attrs.fill = color; + opacity < 1 && (bgVNode.attrs['fill-opacity'] = opacity); + } + } + return bgVNode; + } + + function install(registers) { + registers.registerPainter('svg', SVGPainter); + } + + function createDom(id, painter, dpr) { + var newDom = platformApi.createCanvas(); + var width = painter.getWidth(); + var height = painter.getHeight(); + var newDomStyle = newDom.style; + if (newDomStyle) { + newDomStyle.position = 'absolute'; + newDomStyle.left = '0'; + newDomStyle.top = '0'; + newDomStyle.width = width + 'px'; + newDomStyle.height = height + 'px'; + newDom.setAttribute('data-zr-dom-id', id); + } + newDom.width = width * dpr; + newDom.height = height * dpr; + return newDom; + } + var Layer = (function (_super) { + __extends(Layer, _super); + function Layer(id, painter, dpr) { + var _this = _super.call(this) || this; + _this.motionBlur = false; + _this.lastFrameAlpha = 0.7; + _this.dpr = 1; + _this.virtual = false; + _this.config = {}; + _this.incremental = false; + _this.zlevel = 0; + _this.maxRepaintRectCount = 5; + _this.__dirty = true; + _this.__firstTimePaint = true; + _this.__used = false; + _this.__drawIndex = 0; + _this.__startIndex = 0; + _this.__endIndex = 0; + _this.__prevStartIndex = null; + _this.__prevEndIndex = null; + var dom; + dpr = dpr || devicePixelRatio; + if (typeof id === 'string') { + dom = createDom(id, painter, dpr); + } + else if (isObject(id)) { + dom = id; + id = dom.id; + } + _this.id = id; + _this.dom = dom; + var domStyle = dom.style; + if (domStyle) { + disableUserSelect(dom); + dom.onselectstart = function () { return false; }; + domStyle.padding = '0'; + domStyle.margin = '0'; + domStyle.borderWidth = '0'; + } + _this.painter = painter; + _this.dpr = dpr; + return _this; + } + Layer.prototype.getElementCount = function () { + return this.__endIndex - this.__startIndex; + }; + Layer.prototype.afterBrush = function () { + this.__prevStartIndex = this.__startIndex; + this.__prevEndIndex = this.__endIndex; + }; + Layer.prototype.initContext = function () { + this.ctx = this.dom.getContext('2d'); + this.ctx.dpr = this.dpr; + }; + Layer.prototype.setUnpainted = function () { + this.__firstTimePaint = true; + }; + Layer.prototype.createBackBuffer = function () { + var dpr = this.dpr; + this.domBack = createDom('back-' + this.id, this.painter, dpr); + this.ctxBack = this.domBack.getContext('2d'); + if (dpr !== 1) { + this.ctxBack.scale(dpr, dpr); + } + }; + Layer.prototype.createRepaintRects = function (displayList, prevList, viewWidth, viewHeight) { + if (this.__firstTimePaint) { + this.__firstTimePaint = false; + return null; + } + var mergedRepaintRects = []; + var maxRepaintRectCount = this.maxRepaintRectCount; + var full = false; + var pendingRect = new BoundingRect(0, 0, 0, 0); + function addRectToMergePool(rect) { + if (!rect.isFinite() || rect.isZero()) { + return; + } + if (mergedRepaintRects.length === 0) { + var boundingRect = new BoundingRect(0, 0, 0, 0); + boundingRect.copy(rect); + mergedRepaintRects.push(boundingRect); + } + else { + var isMerged = false; + var minDeltaArea = Infinity; + var bestRectToMergeIdx = 0; + for (var i = 0; i < mergedRepaintRects.length; ++i) { + var mergedRect = mergedRepaintRects[i]; + if (mergedRect.intersect(rect)) { + var pendingRect_1 = new BoundingRect(0, 0, 0, 0); + pendingRect_1.copy(mergedRect); + pendingRect_1.union(rect); + mergedRepaintRects[i] = pendingRect_1; + isMerged = true; + break; + } + else if (full) { + pendingRect.copy(rect); + pendingRect.union(mergedRect); + var aArea = rect.width * rect.height; + var bArea = mergedRect.width * mergedRect.height; + var pendingArea = pendingRect.width * pendingRect.height; + var deltaArea = pendingArea - aArea - bArea; + if (deltaArea < minDeltaArea) { + minDeltaArea = deltaArea; + bestRectToMergeIdx = i; + } + } + } + if (full) { + mergedRepaintRects[bestRectToMergeIdx].union(rect); + isMerged = true; + } + if (!isMerged) { + var boundingRect = new BoundingRect(0, 0, 0, 0); + boundingRect.copy(rect); + mergedRepaintRects.push(boundingRect); + } + if (!full) { + full = mergedRepaintRects.length >= maxRepaintRectCount; + } + } + } + for (var i = this.__startIndex; i < this.__endIndex; ++i) { + var el = displayList[i]; + if (el) { + var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true); + var prevRect = el.__isRendered && ((el.__dirty & REDRAW_BIT) || !shouldPaint) + ? el.getPrevPaintRect() + : null; + if (prevRect) { + addRectToMergePool(prevRect); + } + var curRect = shouldPaint && ((el.__dirty & REDRAW_BIT) || !el.__isRendered) + ? el.getPaintRect() + : null; + if (curRect) { + addRectToMergePool(curRect); + } + } + } + for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) { + var el = prevList[i]; + var shouldPaint = el && el.shouldBePainted(viewWidth, viewHeight, true, true); + if (el && (!shouldPaint || !el.__zr) && el.__isRendered) { + var prevRect = el.getPrevPaintRect(); + if (prevRect) { + addRectToMergePool(prevRect); + } + } + } + var hasIntersections; + do { + hasIntersections = false; + for (var i = 0; i < mergedRepaintRects.length;) { + if (mergedRepaintRects[i].isZero()) { + mergedRepaintRects.splice(i, 1); + continue; + } + for (var j = i + 1; j < mergedRepaintRects.length;) { + if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) { + hasIntersections = true; + mergedRepaintRects[i].union(mergedRepaintRects[j]); + mergedRepaintRects.splice(j, 1); + } + else { + j++; + } + } + i++; + } + } while (hasIntersections); + this._paintRects = mergedRepaintRects; + return mergedRepaintRects; + }; + Layer.prototype.debugGetPaintRects = function () { + return (this._paintRects || []).slice(); + }; + Layer.prototype.resize = function (width, height) { + var dpr = this.dpr; + var dom = this.dom; + var domStyle = dom.style; + var domBack = this.domBack; + if (domStyle) { + domStyle.width = width + 'px'; + domStyle.height = height + 'px'; + } + dom.width = width * dpr; + dom.height = height * dpr; + if (domBack) { + domBack.width = width * dpr; + domBack.height = height * dpr; + if (dpr !== 1) { + this.ctxBack.scale(dpr, dpr); + } + } + }; + Layer.prototype.clear = function (clearAll, clearColor, repaintRects) { + var dom = this.dom; + var ctx = this.ctx; + var width = dom.width; + var height = dom.height; + clearColor = clearColor || this.clearColor; + var haveMotionBLur = this.motionBlur && !clearAll; + var lastFrameAlpha = this.lastFrameAlpha; + var dpr = this.dpr; + var self = this; + if (haveMotionBLur) { + if (!this.domBack) { + this.createBackBuffer(); + } + this.ctxBack.globalCompositeOperation = 'copy'; + this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr); + } + var domBack = this.domBack; + function doClear(x, y, width, height) { + ctx.clearRect(x, y, width, height); + if (clearColor && clearColor !== 'transparent') { + var clearColorGradientOrPattern = void 0; + if (isGradientObject(clearColor)) { + var shouldCache = clearColor.global || (clearColor.__width === width + && clearColor.__height === height); + clearColorGradientOrPattern = shouldCache + && clearColor.__canvasGradient + || getCanvasGradient(ctx, clearColor, { + x: 0, + y: 0, + width: width, + height: height + }); + clearColor.__canvasGradient = clearColorGradientOrPattern; + clearColor.__width = width; + clearColor.__height = height; + } + else if (isImagePatternObject(clearColor)) { + clearColor.scaleX = clearColor.scaleX || dpr; + clearColor.scaleY = clearColor.scaleY || dpr; + clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, { + dirty: function () { + self.setUnpainted(); + self.painter.refresh(); + } + }); + } + ctx.save(); + ctx.fillStyle = clearColorGradientOrPattern || clearColor; + ctx.fillRect(x, y, width, height); + ctx.restore(); + } + if (haveMotionBLur) { + ctx.save(); + ctx.globalAlpha = lastFrameAlpha; + ctx.drawImage(domBack, x, y, width, height); + ctx.restore(); + } + } + if (!repaintRects || haveMotionBLur) { + doClear(0, 0, width, height); + } + else if (repaintRects.length) { + each(repaintRects, function (rect) { + doClear(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr); + }); + } + }; + return Layer; + }(Eventful)); + + var HOVER_LAYER_ZLEVEL = 1e5; + var CANVAS_ZLEVEL = 314159; + var EL_AFTER_INCREMENTAL_INC = 0.01; + var INCREMENTAL_INC = 0.001; + function isLayerValid(layer) { + if (!layer) { + return false; + } + if (layer.__builtin__) { + return true; + } + if (typeof (layer.resize) !== 'function' + || typeof (layer.refresh) !== 'function') { + return false; + } + return true; + } + function createRoot(width, height) { + var domRoot = document.createElement('div'); + domRoot.style.cssText = [ + 'position:relative', + 'width:' + width + 'px', + 'height:' + height + 'px', + 'padding:0', + 'margin:0', + 'border-width:0' + ].join(';') + ';'; + return domRoot; + } + var CanvasPainter = (function () { + function CanvasPainter(root, storage, opts, id) { + this.type = 'canvas'; + this._zlevelList = []; + this._prevDisplayList = []; + this._layers = {}; + this._layerConfig = {}; + this._needsManuallyCompositing = false; + this.type = 'canvas'; + var singleCanvas = !root.nodeName + || root.nodeName.toUpperCase() === 'CANVAS'; + this._opts = opts = extend({}, opts || {}); + this.dpr = opts.devicePixelRatio || devicePixelRatio; + this._singleCanvas = singleCanvas; + this.root = root; + var rootStyle = root.style; + if (rootStyle) { + disableUserSelect(root); + root.innerHTML = ''; + } + this.storage = storage; + var zlevelList = this._zlevelList; + this._prevDisplayList = []; + var layers = this._layers; + if (!singleCanvas) { + this._width = getSize(root, 0, opts); + this._height = getSize(root, 1, opts); + var domRoot = this._domRoot = createRoot(this._width, this._height); + root.appendChild(domRoot); + } + else { + var rootCanvas = root; + var width = rootCanvas.width; + var height = rootCanvas.height; + if (opts.width != null) { + width = opts.width; + } + if (opts.height != null) { + height = opts.height; + } + this.dpr = opts.devicePixelRatio || 1; + rootCanvas.width = width * this.dpr; + rootCanvas.height = height * this.dpr; + this._width = width; + this._height = height; + var mainLayer = new Layer(rootCanvas, this, this.dpr); + mainLayer.__builtin__ = true; + mainLayer.initContext(); + layers[CANVAS_ZLEVEL] = mainLayer; + mainLayer.zlevel = CANVAS_ZLEVEL; + zlevelList.push(CANVAS_ZLEVEL); + this._domRoot = root; + } + } + CanvasPainter.prototype.getType = function () { + return 'canvas'; + }; + CanvasPainter.prototype.isSingleCanvas = function () { + return this._singleCanvas; + }; + CanvasPainter.prototype.getViewportRoot = function () { + return this._domRoot; + }; + CanvasPainter.prototype.getViewportRootOffset = function () { + var viewportRoot = this.getViewportRoot(); + if (viewportRoot) { + return { + offsetLeft: viewportRoot.offsetLeft || 0, + offsetTop: viewportRoot.offsetTop || 0 + }; + } + }; + CanvasPainter.prototype.refresh = function (paintAll) { + var list = this.storage.getDisplayList(true); + var prevList = this._prevDisplayList; + var zlevelList = this._zlevelList; + this._redrawId = Math.random(); + this._paintList(list, prevList, paintAll, this._redrawId); + for (var i = 0; i < zlevelList.length; i++) { + var z = zlevelList[i]; + var layer = this._layers[z]; + if (!layer.__builtin__ && layer.refresh) { + var clearColor = i === 0 ? this._backgroundColor : null; + layer.refresh(clearColor); + } + } + if (this._opts.useDirtyRect) { + this._prevDisplayList = list.slice(); + } + return this; + }; + CanvasPainter.prototype.refreshHover = function () { + this._paintHoverList(this.storage.getDisplayList(false)); + }; + CanvasPainter.prototype._paintHoverList = function (list) { + var len = list.length; + var hoverLayer = this._hoverlayer; + hoverLayer && hoverLayer.clear(); + if (!len) { + return; + } + var scope = { + inHover: true, + viewWidth: this._width, + viewHeight: this._height + }; + var ctx; + for (var i = 0; i < len; i++) { + var el = list[i]; + if (el.__inHover) { + if (!hoverLayer) { + hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL); + } + if (!ctx) { + ctx = hoverLayer.ctx; + ctx.save(); + } + brush(ctx, el, scope, i === len - 1); + } + } + if (ctx) { + ctx.restore(); + } + }; + CanvasPainter.prototype.getHoverLayer = function () { + return this.getLayer(HOVER_LAYER_ZLEVEL); + }; + CanvasPainter.prototype.paintOne = function (ctx, el) { + brushSingle(ctx, el); + }; + CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) { + if (this._redrawId !== redrawId) { + return; + } + paintAll = paintAll || false; + this._updateLayerStatus(list); + var _a = this._doPaintList(list, prevList, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover; + if (this._needsManuallyCompositing) { + this._compositeManually(); + } + if (needsRefreshHover) { + this._paintHoverList(list); + } + if (!finished) { + var self_1 = this; + requestAnimationFrame$1(function () { + self_1._paintList(list, prevList, paintAll, redrawId); + }); + } + else { + this.eachLayer(function (layer) { + layer.afterBrush && layer.afterBrush(); + }); + } + }; + CanvasPainter.prototype._compositeManually = function () { + var ctx = this.getLayer(CANVAS_ZLEVEL).ctx; + var width = this._domRoot.width; + var height = this._domRoot.height; + ctx.clearRect(0, 0, width, height); + this.eachBuiltinLayer(function (layer) { + if (layer.virtual) { + ctx.drawImage(layer.dom, 0, 0, width, height); + } + }); + }; + CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) { + var _this = this; + var layerList = []; + var useDirtyRect = this._opts.useDirtyRect; + for (var zi = 0; zi < this._zlevelList.length; zi++) { + var zlevel = this._zlevelList[zi]; + var layer = this._layers[zlevel]; + if (layer.__builtin__ + && layer !== this._hoverlayer + && (layer.__dirty || paintAll)) { + layerList.push(layer); + } + } + var finished = true; + var needsRefreshHover = false; + var _loop_1 = function (k) { + var layer = layerList[k]; + var ctx = layer.ctx; + var repaintRects = useDirtyRect + && layer.createRepaintRects(list, prevList, this_1._width, this_1._height); + var start = paintAll ? layer.__startIndex : layer.__drawIndex; + var useTimer = !paintAll && layer.incremental && Date.now; + var startTime = useTimer && Date.now(); + var clearColor = layer.zlevel === this_1._zlevelList[0] + ? this_1._backgroundColor : null; + if (layer.__startIndex === layer.__endIndex) { + layer.clear(false, clearColor, repaintRects); + } + else if (start === layer.__startIndex) { + var firstEl = list[start]; + if (!firstEl.incremental || !firstEl.notClear || paintAll) { + layer.clear(false, clearColor, repaintRects); + } + } + if (start === -1) { + console.error('For some unknown reason. drawIndex is -1'); + start = layer.__startIndex; + } + var i; + var repaint = function (repaintRect) { + var scope = { + inHover: false, + allClipped: false, + prevEl: null, + viewWidth: _this._width, + viewHeight: _this._height + }; + for (i = start; i < layer.__endIndex; i++) { + var el = list[i]; + if (el.__inHover) { + needsRefreshHover = true; + } + _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1); + if (useTimer) { + var dTime = Date.now() - startTime; + if (dTime > 15) { + break; + } + } + } + if (scope.prevElClipPaths) { + ctx.restore(); + } + }; + if (repaintRects) { + if (repaintRects.length === 0) { + i = layer.__endIndex; + } + else { + var dpr = this_1.dpr; + for (var r = 0; r < repaintRects.length; ++r) { + var rect = repaintRects[r]; + ctx.save(); + ctx.beginPath(); + ctx.rect(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr); + ctx.clip(); + repaint(rect); + ctx.restore(); + } + } + } + else { + ctx.save(); + repaint(); + ctx.restore(); + } + layer.__drawIndex = i; + if (layer.__drawIndex < layer.__endIndex) { + finished = false; + } + }; + var this_1 = this; + for (var k = 0; k < layerList.length; k++) { + _loop_1(k); + } + if (env.wxa) { + each(this._layers, function (layer) { + if (layer && layer.ctx && layer.ctx.draw) { + layer.ctx.draw(); + } + }); + } + return { + finished: finished, + needsRefreshHover: needsRefreshHover + }; + }; + CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) { + var ctx = currentLayer.ctx; + if (useDirtyRect) { + var paintRect = el.getPaintRect(); + if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) { + brush(ctx, el, scope, isLast); + el.setPrevPaintRect(paintRect); + } + } + else { + brush(ctx, el, scope, isLast); + } + }; + CanvasPainter.prototype.getLayer = function (zlevel, virtual) { + if (this._singleCanvas && !this._needsManuallyCompositing) { + zlevel = CANVAS_ZLEVEL; + } + var layer = this._layers[zlevel]; + if (!layer) { + layer = new Layer('zr_' + zlevel, this, this.dpr); + layer.zlevel = zlevel; + layer.__builtin__ = true; + if (this._layerConfig[zlevel]) { + merge(layer, this._layerConfig[zlevel], true); + } + else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) { + merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true); + } + if (virtual) { + layer.virtual = virtual; + } + this.insertLayer(zlevel, layer); + layer.initContext(); + } + return layer; + }; + CanvasPainter.prototype.insertLayer = function (zlevel, layer) { + var layersMap = this._layers; + var zlevelList = this._zlevelList; + var len = zlevelList.length; + var domRoot = this._domRoot; + var prevLayer = null; + var i = -1; + if (layersMap[zlevel]) { + if ("development" !== 'production') { + logError('ZLevel ' + zlevel + ' has been used already'); + } + return; + } + if (!isLayerValid(layer)) { + if ("development" !== 'production') { + logError('Layer of zlevel ' + zlevel + ' is not valid'); + } + return; + } + if (len > 0 && zlevel > zlevelList[0]) { + for (i = 0; i < len - 1; i++) { + if (zlevelList[i] < zlevel + && zlevelList[i + 1] > zlevel) { + break; + } + } + prevLayer = layersMap[zlevelList[i]]; + } + zlevelList.splice(i + 1, 0, zlevel); + layersMap[zlevel] = layer; + if (!layer.virtual) { + if (prevLayer) { + var prevDom = prevLayer.dom; + if (prevDom.nextSibling) { + domRoot.insertBefore(layer.dom, prevDom.nextSibling); + } + else { + domRoot.appendChild(layer.dom); + } + } + else { + if (domRoot.firstChild) { + domRoot.insertBefore(layer.dom, domRoot.firstChild); + } + else { + domRoot.appendChild(layer.dom); + } + } + } + layer.painter || (layer.painter = this); + }; + CanvasPainter.prototype.eachLayer = function (cb, context) { + var zlevelList = this._zlevelList; + for (var i = 0; i < zlevelList.length; i++) { + var z = zlevelList[i]; + cb.call(context, this._layers[z], z); + } + }; + CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) { + var zlevelList = this._zlevelList; + for (var i = 0; i < zlevelList.length; i++) { + var z = zlevelList[i]; + var layer = this._layers[z]; + if (layer.__builtin__) { + cb.call(context, layer, z); + } + } + }; + CanvasPainter.prototype.eachOtherLayer = function (cb, context) { + var zlevelList = this._zlevelList; + for (var i = 0; i < zlevelList.length; i++) { + var z = zlevelList[i]; + var layer = this._layers[z]; + if (!layer.__builtin__) { + cb.call(context, layer, z); + } + } + }; + CanvasPainter.prototype.getLayers = function () { + return this._layers; + }; + CanvasPainter.prototype._updateLayerStatus = function (list) { + this.eachBuiltinLayer(function (layer, z) { + layer.__dirty = layer.__used = false; + }); + function updatePrevLayer(idx) { + if (prevLayer) { + if (prevLayer.__endIndex !== idx) { + prevLayer.__dirty = true; + } + prevLayer.__endIndex = idx; + } + } + if (this._singleCanvas) { + for (var i_1 = 1; i_1 < list.length; i_1++) { + var el = list[i_1]; + if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) { + this._needsManuallyCompositing = true; + break; + } + } + } + var prevLayer = null; + var incrementalLayerCount = 0; + var prevZlevel; + var i; + for (i = 0; i < list.length; i++) { + var el = list[i]; + var zlevel = el.zlevel; + var layer = void 0; + if (prevZlevel !== zlevel) { + prevZlevel = zlevel; + incrementalLayerCount = 0; + } + if (el.incremental) { + layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing); + layer.incremental = true; + incrementalLayerCount = 1; + } + else { + layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing); + } + if (!layer.__builtin__) { + logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id); + } + if (layer !== prevLayer) { + layer.__used = true; + if (layer.__startIndex !== i) { + layer.__dirty = true; + } + layer.__startIndex = i; + if (!layer.incremental) { + layer.__drawIndex = i; + } + else { + layer.__drawIndex = -1; + } + updatePrevLayer(i); + prevLayer = layer; + } + if ((el.__dirty & REDRAW_BIT) && !el.__inHover) { + layer.__dirty = true; + if (layer.incremental && layer.__drawIndex < 0) { + layer.__drawIndex = i; + } + } + } + updatePrevLayer(i); + this.eachBuiltinLayer(function (layer, z) { + if (!layer.__used && layer.getElementCount() > 0) { + layer.__dirty = true; + layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0; + } + if (layer.__dirty && layer.__drawIndex < 0) { + layer.__drawIndex = layer.__startIndex; + } + }); + }; + CanvasPainter.prototype.clear = function () { + this.eachBuiltinLayer(this._clearLayer); + return this; + }; + CanvasPainter.prototype._clearLayer = function (layer) { + layer.clear(); + }; + CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) { + this._backgroundColor = backgroundColor; + each(this._layers, function (layer) { + layer.setUnpainted(); + }); + }; + CanvasPainter.prototype.configLayer = function (zlevel, config) { + if (config) { + var layerConfig = this._layerConfig; + if (!layerConfig[zlevel]) { + layerConfig[zlevel] = config; + } + else { + merge(layerConfig[zlevel], config, true); + } + for (var i = 0; i < this._zlevelList.length; i++) { + var _zlevel = this._zlevelList[i]; + if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) { + var layer = this._layers[_zlevel]; + merge(layer, layerConfig[zlevel], true); + } + } + } + }; + CanvasPainter.prototype.delLayer = function (zlevel) { + var layers = this._layers; + var zlevelList = this._zlevelList; + var layer = layers[zlevel]; + if (!layer) { + return; + } + layer.dom.parentNode.removeChild(layer.dom); + delete layers[zlevel]; + zlevelList.splice(indexOf(zlevelList, zlevel), 1); + }; + CanvasPainter.prototype.resize = function (width, height) { + if (!this._domRoot.style) { + if (width == null || height == null) { + return; + } + this._width = width; + this._height = height; + this.getLayer(CANVAS_ZLEVEL).resize(width, height); + } + else { + var domRoot = this._domRoot; + domRoot.style.display = 'none'; + var opts = this._opts; + var root = this.root; + width != null && (opts.width = width); + height != null && (opts.height = height); + width = getSize(root, 0, opts); + height = getSize(root, 1, opts); + domRoot.style.display = ''; + if (this._width !== width || height !== this._height) { + domRoot.style.width = width + 'px'; + domRoot.style.height = height + 'px'; + for (var id in this._layers) { + if (this._layers.hasOwnProperty(id)) { + this._layers[id].resize(width, height); + } + } + this.refresh(true); + } + this._width = width; + this._height = height; + } + return this; + }; + CanvasPainter.prototype.clearLayer = function (zlevel) { + var layer = this._layers[zlevel]; + if (layer) { + layer.clear(); + } + }; + CanvasPainter.prototype.dispose = function () { + this.root.innerHTML = ''; + this.root = + this.storage = + this._domRoot = + this._layers = null; + }; + CanvasPainter.prototype.getRenderedCanvas = function (opts) { + opts = opts || {}; + if (this._singleCanvas && !this._compositeManually) { + return this._layers[CANVAS_ZLEVEL].dom; + } + var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr); + imageLayer.initContext(); + imageLayer.clear(false, opts.backgroundColor || this._backgroundColor); + var ctx = imageLayer.ctx; + if (opts.pixelRatio <= this.dpr) { + this.refresh(); + var width_1 = imageLayer.dom.width; + var height_1 = imageLayer.dom.height; + this.eachLayer(function (layer) { + if (layer.__builtin__) { + ctx.drawImage(layer.dom, 0, 0, width_1, height_1); + } + else if (layer.renderToCanvas) { + ctx.save(); + layer.renderToCanvas(ctx); + ctx.restore(); + } + }); + } + else { + var scope = { + inHover: false, + viewWidth: this._width, + viewHeight: this._height + }; + var displayList = this.storage.getDisplayList(true); + for (var i = 0, len = displayList.length; i < len; i++) { + var el = displayList[i]; + brush(ctx, el, scope, i === len - 1); + } + } + return imageLayer.dom; + }; + CanvasPainter.prototype.getWidth = function () { + return this._width; + }; + CanvasPainter.prototype.getHeight = function () { + return this._height; + }; + return CanvasPainter; + }()); + + function install$1(registers) { + registers.registerPainter('canvas', CanvasPainter); + } + + var LineSeriesModel = /** @class */function (_super) { + __extends(LineSeriesModel, _super); + function LineSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = LineSeriesModel.type; + _this.hasSymbolVisual = true; + return _this; + } + LineSeriesModel.prototype.getInitialData = function (option) { + if ("development" !== 'production') { + var coordSys = option.coordinateSystem; + if (coordSys !== 'polar' && coordSys !== 'cartesian2d') { + throw new Error('Line not support coordinateSystem besides cartesian and polar'); + } + } + return createSeriesData(null, this, { + useEncodeDefaulter: true + }); + }; + LineSeriesModel.prototype.getLegendIcon = function (opt) { + var group = new Group(); + var line = createSymbol('line', 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false); + group.add(line); + line.setStyle(opt.lineStyle); + var visualType = this.getData().getVisual('symbol'); + var visualRotate = this.getData().getVisual('symbolRotate'); + var symbolType = visualType === 'none' ? 'circle' : visualType; + // Symbol size is 80% when there is a line + var size = opt.itemHeight * 0.8; + var symbol = createSymbol(symbolType, (opt.itemWidth - size) / 2, (opt.itemHeight - size) / 2, size, size, opt.itemStyle.fill); + group.add(symbol); + symbol.setStyle(opt.itemStyle); + var symbolRotate = opt.iconRotate === 'inherit' ? visualRotate : opt.iconRotate || 0; + symbol.rotation = symbolRotate * Math.PI / 180; + symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]); + if (symbolType.indexOf('empty') > -1) { + symbol.style.stroke = symbol.style.fill; + symbol.style.fill = '#fff'; + symbol.style.lineWidth = 2; + } + return group; + }; + LineSeriesModel.type = 'series.line'; + LineSeriesModel.dependencies = ['grid', 'polar']; + LineSeriesModel.defaultOption = { + // zlevel: 0, + z: 3, + coordinateSystem: 'cartesian2d', + legendHoverLink: true, + clip: true, + label: { + position: 'top' + }, + // itemStyle: { + // }, + endLabel: { + show: false, + valueAnimation: true, + distance: 8 + }, + lineStyle: { + width: 2, + type: 'solid' + }, + emphasis: { + scale: true + }, + // areaStyle: { + // origin of areaStyle. Valid values: + // `'auto'/null/undefined`: from axisLine to data + // `'start'`: from min to data + // `'end'`: from data to max + // origin: 'auto' + // }, + // false, 'start', 'end', 'middle' + step: false, + // Disabled if step is true + smooth: false, + smoothMonotone: null, + symbol: 'emptyCircle', + symbolSize: 4, + symbolRotate: null, + showSymbol: true, + // `false`: follow the label interval strategy. + // `true`: show all symbols. + // `'auto'`: If possible, show all symbols, otherwise + // follow the label interval strategy. + showAllSymbol: 'auto', + // Whether to connect break point. + connectNulls: false, + // Sampling for large data. Can be: 'average', 'max', 'min', 'sum', 'lttb'. + sampling: 'none', + animationEasing: 'linear', + // Disable progressive + progressive: 0, + hoverLayerThreshold: Infinity, + universalTransition: { + divideShape: 'clone' + }, + triggerLineEvent: false + }; + return LineSeriesModel; + }(SeriesModel); + + /** + * @return label string. Not null/undefined + */ + function getDefaultLabel(data, dataIndex) { + var labelDims = data.mapDimensionsAll('defaultedLabel'); + var len = labelDims.length; + // Simple optimization (in lots of cases, label dims length is 1) + if (len === 1) { + var rawVal = retrieveRawValue(data, dataIndex, labelDims[0]); + return rawVal != null ? rawVal + '' : null; + } else if (len) { + var vals = []; + for (var i = 0; i < labelDims.length; i++) { + vals.push(retrieveRawValue(data, dataIndex, labelDims[i])); + } + return vals.join(' '); + } + } + function getDefaultInterpolatedLabel(data, interpolatedValue) { + var labelDims = data.mapDimensionsAll('defaultedLabel'); + if (!isArray(interpolatedValue)) { + return interpolatedValue + ''; + } + var vals = []; + for (var i = 0; i < labelDims.length; i++) { + var dimIndex = data.getDimensionIndex(labelDims[i]); + if (dimIndex >= 0) { + vals.push(interpolatedValue[dimIndex]); + } + } + return vals.join(' '); + } + + var Symbol = /** @class */function (_super) { + __extends(Symbol, _super); + function Symbol(data, idx, seriesScope, opts) { + var _this = _super.call(this) || this; + _this.updateData(data, idx, seriesScope, opts); + return _this; + } + Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) { + // Remove paths created before + this.removeAll(); + // let symbolPath = createSymbol( + // symbolType, -0.5, -0.5, 1, 1, color + // ); + // If width/height are set too small (e.g., set to 1) on ios10 + // and macOS Sierra, a circle stroke become a rect, no matter what + // the scale is set. So we set width/height as 2. See #4150. + var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect); + symbolPath.attr({ + z2: 100, + culling: true, + scaleX: symbolSize[0] / 2, + scaleY: symbolSize[1] / 2 + }); + // Rewrite drift method + symbolPath.drift = driftSymbol; + this._symbolType = symbolType; + this.add(symbolPath); + }; + /** + * Stop animation + * @param {boolean} toLastFrame + */ + Symbol.prototype.stopSymbolAnimation = function (toLastFrame) { + this.childAt(0).stopAnimation(null, toLastFrame); + }; + Symbol.prototype.getSymbolType = function () { + return this._symbolType; + }; + /** + * FIXME: + * Caution: This method breaks the encapsulation of this module, + * but it indeed brings convenience. So do not use the method + * unless you detailedly know all the implements of `Symbol`, + * especially animation. + * + * Get symbol path element. + */ + Symbol.prototype.getSymbolPath = function () { + return this.childAt(0); + }; + /** + * Highlight symbol + */ + Symbol.prototype.highlight = function () { + enterEmphasis(this.childAt(0)); + }; + /** + * Downplay symbol + */ + Symbol.prototype.downplay = function () { + leaveEmphasis(this.childAt(0)); + }; + /** + * @param {number} zlevel + * @param {number} z + */ + Symbol.prototype.setZ = function (zlevel, z) { + var symbolPath = this.childAt(0); + symbolPath.zlevel = zlevel; + symbolPath.z = z; + }; + Symbol.prototype.setDraggable = function (draggable, hasCursorOption) { + var symbolPath = this.childAt(0); + symbolPath.draggable = draggable; + symbolPath.cursor = !hasCursorOption && draggable ? 'move' : symbolPath.cursor; + }; + /** + * Update symbol properties + */ + Symbol.prototype.updateData = function (data, idx, seriesScope, opts) { + this.silent = false; + var symbolType = data.getItemVisual(idx, 'symbol') || 'circle'; + var seriesModel = data.hostModel; + var symbolSize = Symbol.getSymbolSize(data, idx); + var isInit = symbolType !== this._symbolType; + var disableAnimation = opts && opts.disableAnimation; + if (isInit) { + var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect'); + this._createSymbol(symbolType, data, idx, symbolSize, keepAspect); + } else { + var symbolPath = this.childAt(0); + symbolPath.silent = false; + var target = { + scaleX: symbolSize[0] / 2, + scaleY: symbolSize[1] / 2 + }; + disableAnimation ? symbolPath.attr(target) : updateProps(symbolPath, target, seriesModel, idx); + saveOldStyle(symbolPath); + } + this._updateCommon(data, idx, symbolSize, seriesScope, opts); + if (isInit) { + var symbolPath = this.childAt(0); + if (!disableAnimation) { + var target = { + scaleX: this._sizeX, + scaleY: this._sizeY, + style: { + // Always fadeIn. Because it has fadeOut animation when symbol is removed.. + opacity: symbolPath.style.opacity + } + }; + symbolPath.scaleX = symbolPath.scaleY = 0; + symbolPath.style.opacity = 0; + initProps(symbolPath, target, seriesModel, idx); + } + } + if (disableAnimation) { + // Must stop leave transition manually if don't call initProps or updateProps. + this.childAt(0).stopAnimation('leave'); + } + }; + Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) { + var symbolPath = this.childAt(0); + var seriesModel = data.hostModel; + var emphasisItemStyle; + var blurItemStyle; + var selectItemStyle; + var focus; + var blurScope; + var emphasisDisabled; + var labelStatesModels; + var hoverScale; + var cursorStyle; + if (seriesScope) { + emphasisItemStyle = seriesScope.emphasisItemStyle; + blurItemStyle = seriesScope.blurItemStyle; + selectItemStyle = seriesScope.selectItemStyle; + focus = seriesScope.focus; + blurScope = seriesScope.blurScope; + labelStatesModels = seriesScope.labelStatesModels; + hoverScale = seriesScope.hoverScale; + cursorStyle = seriesScope.cursorStyle; + emphasisDisabled = seriesScope.emphasisDisabled; + } + if (!seriesScope || data.hasItemOption) { + var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); + var emphasisModel = itemModel.getModel('emphasis'); + emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle(); + selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle(); + blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle(); + focus = emphasisModel.get('focus'); + blurScope = emphasisModel.get('blurScope'); + emphasisDisabled = emphasisModel.get('disabled'); + labelStatesModels = getLabelStatesModels(itemModel); + hoverScale = emphasisModel.getShallow('scale'); + cursorStyle = itemModel.getShallow('cursor'); + } + var symbolRotate = data.getItemVisual(idx, 'symbolRotate'); + symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0); + var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, 'symbolOffset'), symbolSize); + if (symbolOffset) { + symbolPath.x = symbolOffset[0]; + symbolPath.y = symbolOffset[1]; + } + cursorStyle && symbolPath.attr('cursor', cursorStyle); + var symbolStyle = data.getItemVisual(idx, 'style'); + var visualColor = symbolStyle.fill; + if (symbolPath instanceof ZRImage) { + var pathStyle = symbolPath.style; + symbolPath.useStyle(extend({ + // TODO other properties like x, y ? + image: pathStyle.image, + x: pathStyle.x, + y: pathStyle.y, + width: pathStyle.width, + height: pathStyle.height + }, symbolStyle)); + } else { + if (symbolPath.__isEmptyBrush) { + // fill and stroke will be swapped if it's empty. + // So we cloned a new style to avoid it affecting the original style in visual storage. + // TODO Better implementation. No empty logic! + symbolPath.useStyle(extend({}, symbolStyle)); + } else { + symbolPath.useStyle(symbolStyle); + } + // Disable decal because symbol scale will been applied on the decal. + symbolPath.style.decal = null; + symbolPath.setColor(visualColor, opts && opts.symbolInnerColor); + symbolPath.style.strokeNoScale = true; + } + var liftZ = data.getItemVisual(idx, 'liftZ'); + var z2Origin = this._z2; + if (liftZ != null) { + if (z2Origin == null) { + this._z2 = symbolPath.z2; + symbolPath.z2 += liftZ; + } + } else if (z2Origin != null) { + symbolPath.z2 = z2Origin; + this._z2 = null; + } + var useNameLabel = opts && opts.useNameLabel; + setLabelStyle(symbolPath, labelStatesModels, { + labelFetcher: seriesModel, + labelDataIndex: idx, + defaultText: getLabelDefaultText, + inheritColor: visualColor, + defaultOpacity: symbolStyle.opacity + }); + // Do not execute util needed. + function getLabelDefaultText(idx) { + return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx); + } + this._sizeX = symbolSize[0] / 2; + this._sizeY = symbolSize[1] / 2; + var emphasisState = symbolPath.ensureState('emphasis'); + emphasisState.style = emphasisItemStyle; + symbolPath.ensureState('select').style = selectItemStyle; + symbolPath.ensureState('blur').style = blurItemStyle; + // null / undefined / true means to use default strategy. + // 0 / false / negative number / NaN / Infinity means no scale. + var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY) + // PENDING: restrict hoverScale > 1? It seems unreasonable to scale down + : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1; + // always set scale to allow resetting + emphasisState.scaleX = this._sizeX * scaleRatio; + emphasisState.scaleY = this._sizeY * scaleRatio; + this.setSymbolScale(1); + toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled); + }; + Symbol.prototype.setSymbolScale = function (scale) { + this.scaleX = this.scaleY = scale; + }; + Symbol.prototype.fadeOut = function (cb, seriesModel, opt) { + var symbolPath = this.childAt(0); + var dataIndex = getECData(this).dataIndex; + var animationOpt = opt && opt.animation; + // Avoid mistaken hover when fading out + this.silent = symbolPath.silent = true; + // Not show text when animating + if (opt && opt.fadeLabel) { + var textContent = symbolPath.getTextContent(); + if (textContent) { + removeElement(textContent, { + style: { + opacity: 0 + } + }, seriesModel, { + dataIndex: dataIndex, + removeOpt: animationOpt, + cb: function () { + symbolPath.removeTextContent(); + } + }); + } + } else { + symbolPath.removeTextContent(); + } + removeElement(symbolPath, { + style: { + opacity: 0 + }, + scaleX: 0, + scaleY: 0 + }, seriesModel, { + dataIndex: dataIndex, + cb: cb, + removeOpt: animationOpt + }); + }; + Symbol.getSymbolSize = function (data, idx) { + return normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize')); + }; + return Symbol; + }(Group); + function driftSymbol(dx, dy) { + this.parent.drift(dx, dy); + } + + function symbolNeedsDraw(data, point, idx, opt) { + return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) + // We do not set clipShape on group, because it will cut part of + // the symbol element shape. We use the same clip shape here as + // the line clip. + && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none'; + } + function normalizeUpdateOpt(opt) { + if (opt != null && !isObject(opt)) { + opt = { + isIgnore: opt + }; + } + return opt || {}; + } + function makeSeriesScope(data) { + var seriesModel = data.hostModel; + var emphasisModel = seriesModel.getModel('emphasis'); + return { + emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(), + blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(), + selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(), + focus: emphasisModel.get('focus'), + blurScope: emphasisModel.get('blurScope'), + emphasisDisabled: emphasisModel.get('disabled'), + hoverScale: emphasisModel.get('scale'), + labelStatesModels: getLabelStatesModels(seriesModel), + cursorStyle: seriesModel.get('cursor') + }; + } + var SymbolDraw = /** @class */function () { + function SymbolDraw(SymbolCtor) { + this.group = new Group(); + this._SymbolCtor = SymbolCtor || Symbol; + } + /** + * Update symbols draw by new data + */ + SymbolDraw.prototype.updateData = function (data, opt) { + // Remove progressive els. + this._progressiveEls = null; + opt = normalizeUpdateOpt(opt); + var group = this.group; + var seriesModel = data.hostModel; + var oldData = this._data; + var SymbolCtor = this._SymbolCtor; + var disableAnimation = opt.disableAnimation; + var seriesScope = makeSeriesScope(data); + var symbolUpdateOpt = { + disableAnimation: disableAnimation + }; + var getSymbolPoint = opt.getSymbolPoint || function (idx) { + return data.getItemLayout(idx); + }; + // There is no oldLineData only when first rendering or switching from + // stream mode to normal mode, where previous elements should be removed. + if (!oldData) { + group.removeAll(); + } + data.diff(oldData).add(function (newIdx) { + var point = getSymbolPoint(newIdx); + if (symbolNeedsDraw(data, point, newIdx, opt)) { + var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt); + symbolEl.setPosition(point); + data.setItemGraphicEl(newIdx, symbolEl); + group.add(symbolEl); + } + }).update(function (newIdx, oldIdx) { + var symbolEl = oldData.getItemGraphicEl(oldIdx); + var point = getSymbolPoint(newIdx); + if (!symbolNeedsDraw(data, point, newIdx, opt)) { + group.remove(symbolEl); + return; + } + var newSymbolType = data.getItemVisual(newIdx, 'symbol') || 'circle'; + var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType(); + if (!symbolEl + // Create a new if symbol type changed. + || oldSymbolType && oldSymbolType !== newSymbolType) { + group.remove(symbolEl); + symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt); + symbolEl.setPosition(point); + } else { + symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt); + var target = { + x: point[0], + y: point[1] + }; + disableAnimation ? symbolEl.attr(target) : updateProps(symbolEl, target, seriesModel); + } + // Add back + group.add(symbolEl); + data.setItemGraphicEl(newIdx, symbolEl); + }).remove(function (oldIdx) { + var el = oldData.getItemGraphicEl(oldIdx); + el && el.fadeOut(function () { + group.remove(el); + }, seriesModel); + }).execute(); + this._getSymbolPoint = getSymbolPoint; + this._data = data; + }; + SymbolDraw.prototype.updateLayout = function () { + var _this = this; + var data = this._data; + if (data) { + // Not use animation + data.eachItemGraphicEl(function (el, idx) { + var point = _this._getSymbolPoint(idx); + el.setPosition(point); + el.markRedraw(); + }); + } + }; + SymbolDraw.prototype.incrementalPrepareUpdate = function (data) { + this._seriesScope = makeSeriesScope(data); + this._data = null; + this.group.removeAll(); + }; + /** + * Update symbols draw by new data + */ + SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) { + // Clear + this._progressiveEls = []; + opt = normalizeUpdateOpt(opt); + function updateIncrementalAndHover(el) { + if (!el.isGroup) { + el.incremental = true; + el.ensureState('emphasis').hoverLayer = true; + } + } + for (var idx = taskParams.start; idx < taskParams.end; idx++) { + var point = data.getItemLayout(idx); + if (symbolNeedsDraw(data, point, idx, opt)) { + var el = new this._SymbolCtor(data, idx, this._seriesScope); + el.traverse(updateIncrementalAndHover); + el.setPosition(point); + this.group.add(el); + data.setItemGraphicEl(idx, el); + this._progressiveEls.push(el); + } + } + }; + SymbolDraw.prototype.eachRendered = function (cb) { + traverseElements(this._progressiveEls || this.group, cb); + }; + SymbolDraw.prototype.remove = function (enableAnimation) { + var group = this.group; + var data = this._data; + // Incremental model do not have this._data. + if (data && enableAnimation) { + data.eachItemGraphicEl(function (el) { + el.fadeOut(function () { + group.remove(el); + }, data.hostModel); + }); + } else { + group.removeAll(); + } + }; + return SymbolDraw; + }(); + + function prepareDataCoordInfo(coordSys, data, valueOrigin) { + var baseAxis = coordSys.getBaseAxis(); + var valueAxis = coordSys.getOtherAxis(baseAxis); + var valueStart = getValueStart(valueAxis, valueOrigin); + var baseAxisDim = baseAxis.dim; + var valueAxisDim = valueAxis.dim; + var valueDim = data.mapDimension(valueAxisDim); + var baseDim = data.mapDimension(baseAxisDim); + var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0; + var dims = map(coordSys.dimensions, function (coordDim) { + return data.mapDimension(coordDim); + }); + var stacked = false; + var stackResultDim = data.getCalculationInfo('stackResultDimension'); + if (isDimensionStacked(data, dims[0] /* , dims[1] */)) { + // jshint ignore:line + stacked = true; + dims[0] = stackResultDim; + } + if (isDimensionStacked(data, dims[1] /* , dims[0] */)) { + // jshint ignore:line + stacked = true; + dims[1] = stackResultDim; + } + return { + dataDimsForPoint: dims, + valueStart: valueStart, + valueAxisDim: valueAxisDim, + baseAxisDim: baseAxisDim, + stacked: !!stacked, + valueDim: valueDim, + baseDim: baseDim, + baseDataOffset: baseDataOffset, + stackedOverDimension: data.getCalculationInfo('stackedOverDimension') + }; + } + function getValueStart(valueAxis, valueOrigin) { + var valueStart = 0; + var extent = valueAxis.scale.getExtent(); + if (valueOrigin === 'start') { + valueStart = extent[0]; + } else if (valueOrigin === 'end') { + valueStart = extent[1]; + } + // If origin is specified as a number, use it as + // valueStart directly + else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) { + valueStart = valueOrigin; + } + // auto + else { + // Both positive + if (extent[0] > 0) { + valueStart = extent[0]; + } + // Both negative + else if (extent[1] < 0) { + valueStart = extent[1]; + } + // If is one positive, and one negative, onZero shall be true + } + + return valueStart; + } + function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) { + var value = NaN; + if (dataCoordInfo.stacked) { + value = data.get(data.getCalculationInfo('stackedOverDimension'), idx); + } + if (isNaN(value)) { + value = dataCoordInfo.valueStart; + } + var baseDataOffset = dataCoordInfo.baseDataOffset; + var stackedData = []; + stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx); + stackedData[1 - baseDataOffset] = value; + return coordSys.dataToPoint(stackedData); + } + + function diffData(oldData, newData) { + var diffResult = []; + newData.diff(oldData).add(function (idx) { + diffResult.push({ + cmd: '+', + idx: idx + }); + }).update(function (newIdx, oldIdx) { + diffResult.push({ + cmd: '=', + idx: oldIdx, + idx1: newIdx + }); + }).remove(function (idx) { + diffResult.push({ + cmd: '-', + idx: idx + }); + }).execute(); + return diffResult; + } + function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) { + var diff = diffData(oldData, newData); + // let newIdList = newData.mapArray(newData.getId); + // let oldIdList = oldData.mapArray(oldData.getId); + // convertToIntId(newIdList, oldIdList); + // // FIXME One data ? + // diff = arrayDiff(oldIdList, newIdList); + var currPoints = []; + var nextPoints = []; + // Points for stacking base line + var currStackedPoints = []; + var nextStackedPoints = []; + var status = []; + var sortedIndices = []; + var rawIndices = []; + var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin); + // const oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin); + var oldPoints = oldData.getLayout('points') || []; + var newPoints = newData.getLayout('points') || []; + for (var i = 0; i < diff.length; i++) { + var diffItem = diff[i]; + var pointAdded = true; + var oldIdx2 = void 0; + var newIdx2 = void 0; + // FIXME, animation is not so perfect when dataZoom window moves fast + // Which is in case remvoing or add more than one data in the tail or head + switch (diffItem.cmd) { + case '=': + oldIdx2 = diffItem.idx * 2; + newIdx2 = diffItem.idx1 * 2; + var currentX = oldPoints[oldIdx2]; + var currentY = oldPoints[oldIdx2 + 1]; + var nextX = newPoints[newIdx2]; + var nextY = newPoints[newIdx2 + 1]; + // If previous data is NaN, use next point directly + if (isNaN(currentX) || isNaN(currentY)) { + currentX = nextX; + currentY = nextY; + } + currPoints.push(currentX, currentY); + nextPoints.push(nextX, nextY); + currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]); + nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]); + rawIndices.push(newData.getRawIndex(diffItem.idx1)); + break; + case '+': + var newIdx = diffItem.idx; + var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint; + var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]); + newIdx2 = newIdx * 2; + currPoints.push(oldPt[0], oldPt[1]); + nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]); + var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx); + currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]); + nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]); + rawIndices.push(newData.getRawIndex(newIdx)); + break; + case '-': + pointAdded = false; + } + // Original indices + if (pointAdded) { + status.push(diffItem); + sortedIndices.push(sortedIndices.length); + } + } + // Diff result may be crossed if all items are changed + // Sort by data index + sortedIndices.sort(function (a, b) { + return rawIndices[a] - rawIndices[b]; + }); + var len = currPoints.length; + var sortedCurrPoints = createFloat32Array(len); + var sortedNextPoints = createFloat32Array(len); + var sortedCurrStackedPoints = createFloat32Array(len); + var sortedNextStackedPoints = createFloat32Array(len); + var sortedStatus = []; + for (var i = 0; i < sortedIndices.length; i++) { + var idx = sortedIndices[i]; + var i2 = i * 2; + var idx2 = idx * 2; + sortedCurrPoints[i2] = currPoints[idx2]; + sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1]; + sortedNextPoints[i2] = nextPoints[idx2]; + sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1]; + sortedCurrStackedPoints[i2] = currStackedPoints[idx2]; + sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1]; + sortedNextStackedPoints[i2] = nextStackedPoints[idx2]; + sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1]; + sortedStatus[i] = status[idx]; + } + return { + current: sortedCurrPoints, + next: sortedNextPoints, + stackedOnCurrent: sortedCurrStackedPoints, + stackedOnNext: sortedNextStackedPoints, + status: sortedStatus + }; + } + + var mathMin$5 = Math.min; + var mathMax$5 = Math.max; + function isPointNull(x, y) { + return isNaN(x) || isNaN(y); + } + /** + * Draw smoothed line in non-monotone, in may cause undesired curve in extreme + * situations. This should be used when points are non-monotone neither in x or + * y dimension. + */ + function drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) { + var prevX; + var prevY; + var cpx0; + var cpy0; + var cpx1; + var cpy1; + var idx = start; + var k = 0; + for (; k < segLen; k++) { + var x = points[idx * 2]; + var y = points[idx * 2 + 1]; + if (idx >= allLen || idx < 0) { + break; + } + if (isPointNull(x, y)) { + if (connectNulls) { + idx += dir; + continue; + } + break; + } + if (idx === start) { + ctx[dir > 0 ? 'moveTo' : 'lineTo'](x, y); + cpx0 = x; + cpy0 = y; + } else { + var dx = x - prevX; + var dy = y - prevY; + // Ignore tiny segment. + if (dx * dx + dy * dy < 0.5) { + idx += dir; + continue; + } + if (smooth > 0) { + var nextIdx = idx + dir; + var nextX = points[nextIdx * 2]; + var nextY = points[nextIdx * 2 + 1]; + // Ignore duplicate point + while (nextX === x && nextY === y && k < segLen) { + k++; + nextIdx += dir; + idx += dir; + nextX = points[nextIdx * 2]; + nextY = points[nextIdx * 2 + 1]; + x = points[idx * 2]; + y = points[idx * 2 + 1]; + dx = x - prevX; + dy = y - prevY; + } + var tmpK = k + 1; + if (connectNulls) { + // Find next point not null + while (isPointNull(nextX, nextY) && tmpK < segLen) { + tmpK++; + nextIdx += dir; + nextX = points[nextIdx * 2]; + nextY = points[nextIdx * 2 + 1]; + } + } + var ratioNextSeg = 0.5; + var vx = 0; + var vy = 0; + var nextCpx0 = void 0; + var nextCpy0 = void 0; + // Is last point + if (tmpK >= segLen || isPointNull(nextX, nextY)) { + cpx1 = x; + cpy1 = y; + } else { + vx = nextX - prevX; + vy = nextY - prevY; + var dx0 = x - prevX; + var dx1 = nextX - x; + var dy0 = y - prevY; + var dy1 = nextY - y; + var lenPrevSeg = void 0; + var lenNextSeg = void 0; + if (smoothMonotone === 'x') { + lenPrevSeg = Math.abs(dx0); + lenNextSeg = Math.abs(dx1); + var dir_1 = vx > 0 ? 1 : -1; + cpx1 = x - dir_1 * lenPrevSeg * smooth; + cpy1 = y; + nextCpx0 = x + dir_1 * lenNextSeg * smooth; + nextCpy0 = y; + } else if (smoothMonotone === 'y') { + lenPrevSeg = Math.abs(dy0); + lenNextSeg = Math.abs(dy1); + var dir_2 = vy > 0 ? 1 : -1; + cpx1 = x; + cpy1 = y - dir_2 * lenPrevSeg * smooth; + nextCpx0 = x; + nextCpy0 = y + dir_2 * lenNextSeg * smooth; + } else { + lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0); + lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1); + // Use ratio of seg length + ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg); + cpx1 = x - vx * smooth * (1 - ratioNextSeg); + cpy1 = y - vy * smooth * (1 - ratioNextSeg); + // cp0 of next segment + nextCpx0 = x + vx * smooth * ratioNextSeg; + nextCpy0 = y + vy * smooth * ratioNextSeg; + // Smooth constraint between point and next point. + // Avoid exceeding extreme after smoothing. + nextCpx0 = mathMin$5(nextCpx0, mathMax$5(nextX, x)); + nextCpy0 = mathMin$5(nextCpy0, mathMax$5(nextY, y)); + nextCpx0 = mathMax$5(nextCpx0, mathMin$5(nextX, x)); + nextCpy0 = mathMax$5(nextCpy0, mathMin$5(nextY, y)); + // Reclaculate cp1 based on the adjusted cp0 of next seg. + vx = nextCpx0 - x; + vy = nextCpy0 - y; + cpx1 = x - vx * lenPrevSeg / lenNextSeg; + cpy1 = y - vy * lenPrevSeg / lenNextSeg; + // Smooth constraint between point and prev point. + // Avoid exceeding extreme after smoothing. + cpx1 = mathMin$5(cpx1, mathMax$5(prevX, x)); + cpy1 = mathMin$5(cpy1, mathMax$5(prevY, y)); + cpx1 = mathMax$5(cpx1, mathMin$5(prevX, x)); + cpy1 = mathMax$5(cpy1, mathMin$5(prevY, y)); + // Adjust next cp0 again. + vx = x - cpx1; + vy = y - cpy1; + nextCpx0 = x + vx * lenNextSeg / lenPrevSeg; + nextCpy0 = y + vy * lenNextSeg / lenPrevSeg; + } + } + ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y); + cpx0 = nextCpx0; + cpy0 = nextCpy0; + } else { + ctx.lineTo(x, y); + } + } + prevX = x; + prevY = y; + idx += dir; + } + return k; + } + var ECPolylineShape = /** @class */function () { + function ECPolylineShape() { + this.smooth = 0; + this.smoothConstraint = true; + } + return ECPolylineShape; + }(); + var ECPolyline = /** @class */function (_super) { + __extends(ECPolyline, _super); + function ECPolyline(opts) { + var _this = _super.call(this, opts) || this; + _this.type = 'ec-polyline'; + return _this; + } + ECPolyline.prototype.getDefaultStyle = function () { + return { + stroke: '#000', + fill: null + }; + }; + ECPolyline.prototype.getDefaultShape = function () { + return new ECPolylineShape(); + }; + ECPolyline.prototype.buildPath = function (ctx, shape) { + var points = shape.points; + var i = 0; + var len = points.length / 2; + // const result = getBoundingBox(points, shape.smoothConstraint); + if (shape.connectNulls) { + // Must remove first and last null values avoid draw error in polygon + for (; len > 0; len--) { + if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) { + break; + } + } + for (; i < len; i++) { + if (!isPointNull(points[i * 2], points[i * 2 + 1])) { + break; + } + } + } + while (i < len) { + i += drawSegment(ctx, points, i, len, len, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1; + } + }; + ECPolyline.prototype.getPointOn = function (xOrY, dim) { + if (!this.path) { + this.createPathProxy(); + this.buildPath(this.path, this.shape); + } + var path = this.path; + var data = path.data; + var CMD = PathProxy.CMD; + var x0; + var y0; + var isDimX = dim === 'x'; + var roots = []; + for (var i = 0; i < data.length;) { + var cmd = data[i++]; + var x = void 0; + var y = void 0; + var x2 = void 0; + var y2 = void 0; + var x3 = void 0; + var y3 = void 0; + var t = void 0; + switch (cmd) { + case CMD.M: + x0 = data[i++]; + y0 = data[i++]; + break; + case CMD.L: + x = data[i++]; + y = data[i++]; + t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0); + if (t <= 1 && t >= 0) { + var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0; + return isDimX ? [xOrY, val] : [val, xOrY]; + } + x0 = x; + y0 = y; + break; + case CMD.C: + x = data[i++]; + y = data[i++]; + x2 = data[i++]; + y2 = data[i++]; + x3 = data[i++]; + y3 = data[i++]; + var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots) : cubicRootAt(y0, y, y2, y3, xOrY, roots); + if (nRoot > 0) { + for (var i_1 = 0; i_1 < nRoot; i_1++) { + var t_1 = roots[i_1]; + if (t_1 <= 1 && t_1 >= 0) { + var val = isDimX ? cubicAt(y0, y, y2, y3, t_1) : cubicAt(x0, x, x2, x3, t_1); + return isDimX ? [xOrY, val] : [val, xOrY]; + } + } + } + x0 = x3; + y0 = y3; + break; + } + } + }; + return ECPolyline; + }(Path); + var ECPolygonShape = /** @class */function (_super) { + __extends(ECPolygonShape, _super); + function ECPolygonShape() { + return _super !== null && _super.apply(this, arguments) || this; + } + return ECPolygonShape; + }(ECPolylineShape); + var ECPolygon = /** @class */function (_super) { + __extends(ECPolygon, _super); + function ECPolygon(opts) { + var _this = _super.call(this, opts) || this; + _this.type = 'ec-polygon'; + return _this; + } + ECPolygon.prototype.getDefaultShape = function () { + return new ECPolygonShape(); + }; + ECPolygon.prototype.buildPath = function (ctx, shape) { + var points = shape.points; + var stackedOnPoints = shape.stackedOnPoints; + var i = 0; + var len = points.length / 2; + var smoothMonotone = shape.smoothMonotone; + if (shape.connectNulls) { + // Must remove first and last null values avoid draw error in polygon + for (; len > 0; len--) { + if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) { + break; + } + } + for (; i < len; i++) { + if (!isPointNull(points[i * 2], points[i * 2 + 1])) { + break; + } + } + } + while (i < len) { + var k = drawSegment(ctx, points, i, len, len, 1, shape.smooth, smoothMonotone, shape.connectNulls); + drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls); + i += k + 1; + ctx.closePath(); + } + }; + return ECPolygon; + }(Path); + + function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) { + var rect = cartesian.getArea(); + var x = rect.x; + var y = rect.y; + var width = rect.width; + var height = rect.height; + var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2; + // Expand the clip path a bit to avoid the border is clipped and looks thinner + x -= lineWidth / 2; + y -= lineWidth / 2; + width += lineWidth; + height += lineWidth; + // fix: https://github.com/apache/incubator-echarts/issues/11369 + width = Math.ceil(width); + if (x !== Math.floor(x)) { + x = Math.floor(x); + // if no extra 1px on `width`, it will still be clipped since `x` is floored + width++; + } + var clipPath = new Rect({ + shape: { + x: x, + y: y, + width: width, + height: height + } + }); + if (hasAnimation) { + var baseAxis = cartesian.getBaseAxis(); + var isHorizontal = baseAxis.isHorizontal(); + var isAxisInversed = baseAxis.inverse; + if (isHorizontal) { + if (isAxisInversed) { + clipPath.shape.x += width; + } + clipPath.shape.width = 0; + } else { + if (!isAxisInversed) { + clipPath.shape.y += height; + } + clipPath.shape.height = 0; + } + var duringCb = isFunction(during) ? function (percent) { + during(percent, clipPath); + } : null; + initProps(clipPath, { + shape: { + width: width, + height: height, + x: x, + y: y + } + }, seriesModel, null, done, duringCb); + } + return clipPath; + } + function createPolarClipPath(polar, hasAnimation, seriesModel) { + var sectorArea = polar.getArea(); + // Avoid float number rounding error for symbol on the edge of axis extent. + var r0 = round(sectorArea.r0, 1); + var r = round(sectorArea.r, 1); + var clipPath = new Sector({ + shape: { + cx: round(polar.cx, 1), + cy: round(polar.cy, 1), + r0: r0, + r: r, + startAngle: sectorArea.startAngle, + endAngle: sectorArea.endAngle, + clockwise: sectorArea.clockwise + } + }); + if (hasAnimation) { + var isRadial = polar.getBaseAxis().dim === 'angle'; + if (isRadial) { + clipPath.shape.endAngle = sectorArea.startAngle; + } else { + clipPath.shape.r = r0; + } + initProps(clipPath, { + shape: { + endAngle: sectorArea.endAngle, + r: r + } + }, seriesModel); + } + return clipPath; + } + function createClipPath(coordSys, hasAnimation, seriesModel, done, during) { + if (!coordSys) { + return null; + } else if (coordSys.type === 'polar') { + return createPolarClipPath(coordSys, hasAnimation, seriesModel); + } else if (coordSys.type === 'cartesian2d') { + return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during); + } + return null; + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function isCoordinateSystemType(coordSys, type) { + return coordSys.type === type; + } + + function isPointsSame(points1, points2) { + if (points1.length !== points2.length) { + return; + } + for (var i = 0; i < points1.length; i++) { + if (points1[i] !== points2[i]) { + return; + } + } + return true; + } + function bboxFromPoints(points) { + var minX = Infinity; + var minY = Infinity; + var maxX = -Infinity; + var maxY = -Infinity; + for (var i = 0; i < points.length;) { + var x = points[i++]; + var y = points[i++]; + if (!isNaN(x)) { + minX = Math.min(x, minX); + maxX = Math.max(x, maxX); + } + if (!isNaN(y)) { + minY = Math.min(y, minY); + maxY = Math.max(y, maxY); + } + } + return [[minX, minY], [maxX, maxY]]; + } + function getBoundingDiff(points1, points2) { + var _a = bboxFromPoints(points1), + min1 = _a[0], + max1 = _a[1]; + var _b = bboxFromPoints(points2), + min2 = _b[0], + max2 = _b[1]; + // Get a max value from each corner of two boundings. + return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1])); + } + function getSmooth(smooth) { + return isNumber(smooth) ? smooth : smooth ? 0.5 : 0; + } + function getStackedOnPoints(coordSys, data, dataCoordInfo) { + if (!dataCoordInfo.valueDim) { + return []; + } + var len = data.count(); + var points = createFloat32Array(len * 2); + for (var idx = 0; idx < len; idx++) { + var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx); + points[idx * 2] = pt[0]; + points[idx * 2 + 1] = pt[1]; + } + return points; + } + function turnPointsIntoStep(points, coordSys, stepTurnAt, connectNulls) { + var baseAxis = coordSys.getBaseAxis(); + var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1; + var stepPoints = []; + var i = 0; + var stepPt = []; + var pt = []; + var nextPt = []; + var filteredPoints = []; + if (connectNulls) { + for (i = 0; i < points.length; i += 2) { + if (!isNaN(points[i]) && !isNaN(points[i + 1])) { + filteredPoints.push(points[i], points[i + 1]); + } + } + points = filteredPoints; + } + for (i = 0; i < points.length - 2; i += 2) { + nextPt[0] = points[i + 2]; + nextPt[1] = points[i + 3]; + pt[0] = points[i]; + pt[1] = points[i + 1]; + stepPoints.push(pt[0], pt[1]); + switch (stepTurnAt) { + case 'end': + stepPt[baseIndex] = nextPt[baseIndex]; + stepPt[1 - baseIndex] = pt[1 - baseIndex]; + stepPoints.push(stepPt[0], stepPt[1]); + break; + case 'middle': + var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2; + var stepPt2 = []; + stepPt[baseIndex] = stepPt2[baseIndex] = middle; + stepPt[1 - baseIndex] = pt[1 - baseIndex]; + stepPt2[1 - baseIndex] = nextPt[1 - baseIndex]; + stepPoints.push(stepPt[0], stepPt[1]); + stepPoints.push(stepPt2[0], stepPt2[1]); + break; + default: + // default is start + stepPt[baseIndex] = pt[baseIndex]; + stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; + stepPoints.push(stepPt[0], stepPt[1]); + } + } + // Last points + stepPoints.push(points[i++], points[i++]); + return stepPoints; + } + /** + * Clip color stops to edge. Avoid creating too large gradients. + * Which may lead to blurry when GPU acceleration is enabled. See #15680 + * + * The stops has been sorted from small to large. + */ + function clipColorStops(colorStops, maxSize) { + var newColorStops = []; + var len = colorStops.length; + // coord will always < 0 in prevOutOfRangeColorStop. + var prevOutOfRangeColorStop; + var prevInRangeColorStop; + function lerpStop(stop0, stop1, clippedCoord) { + var coord0 = stop0.coord; + var p = (clippedCoord - coord0) / (stop1.coord - coord0); + var color = lerp$1(p, [stop0.color, stop1.color]); + return { + coord: clippedCoord, + color: color + }; + } + for (var i = 0; i < len; i++) { + var stop_1 = colorStops[i]; + var coord = stop_1.coord; + if (coord < 0) { + prevOutOfRangeColorStop = stop_1; + } else if (coord > maxSize) { + if (prevInRangeColorStop) { + newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize)); + } else if (prevOutOfRangeColorStop) { + // If there are two stops and coord range is between these two stops + newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize)); + } + // All following stop will be out of range. So just ignore them. + break; + } else { + if (prevOutOfRangeColorStop) { + newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0)); + // Reset + prevOutOfRangeColorStop = null; + } + newColorStops.push(stop_1); + prevInRangeColorStop = stop_1; + } + } + return newColorStops; + } + function getVisualGradient(data, coordSys, api) { + var visualMetaList = data.getVisual('visualMeta'); + if (!visualMetaList || !visualMetaList.length || !data.count()) { + // When data.count() is 0, gradient range can not be calculated. + return; + } + if (coordSys.type !== 'cartesian2d') { + if ("development" !== 'production') { + console.warn('Visual map on line style is only supported on cartesian2d.'); + } + return; + } + var coordDim; + var visualMeta; + for (var i = visualMetaList.length - 1; i >= 0; i--) { + var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension); + coordDim = dimInfo && dimInfo.coordDim; + // Can only be x or y + if (coordDim === 'x' || coordDim === 'y') { + visualMeta = visualMetaList[i]; + break; + } + } + if (!visualMeta) { + if ("development" !== 'production') { + console.warn('Visual map on line style only support x or y dimension.'); + } + return; + } + // If the area to be rendered is bigger than area defined by LinearGradient, + // the canvas spec prescribes that the color of the first stop and the last + // stop should be used. But if two stops are added at offset 0, in effect + // browsers use the color of the second stop to render area outside + // LinearGradient. So we can only infinitesimally extend area defined in + // LinearGradient to render `outerColors`. + var axis = coordSys.getAxis(coordDim); + // dataToCoord mapping may not be linear, but must be monotonic. + var colorStops = map(visualMeta.stops, function (stop) { + // offset will be calculated later. + return { + coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)), + color: stop.color + }; + }); + var stopLen = colorStops.length; + var outerColors = visualMeta.outerColors.slice(); + if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) { + colorStops.reverse(); + outerColors.reverse(); + } + var colorStopsInRange = clipColorStops(colorStops, coordDim === 'x' ? api.getWidth() : api.getHeight()); + var inRangeStopLen = colorStopsInRange.length; + if (!inRangeStopLen && stopLen) { + // All stops are out of range. All will be the same color. + return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color; + } + var tinyExtent = 10; // Arbitrary value: 10px + var minCoord = colorStopsInRange[0].coord - tinyExtent; + var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent; + var coordSpan = maxCoord - minCoord; + if (coordSpan < 1e-3) { + return 'transparent'; + } + each(colorStopsInRange, function (stop) { + stop.offset = (stop.coord - minCoord) / coordSpan; + }); + colorStopsInRange.push({ + // NOTE: inRangeStopLen may still be 0 if stoplen is zero. + offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5, + color: outerColors[1] || 'transparent' + }); + colorStopsInRange.unshift({ + offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5, + color: outerColors[0] || 'transparent' + }); + var gradient = new LinearGradient(0, 0, 0, 0, colorStopsInRange, true); + gradient[coordDim] = minCoord; + gradient[coordDim + '2'] = maxCoord; + return gradient; + } + function getIsIgnoreFunc(seriesModel, data, coordSys) { + var showAllSymbol = seriesModel.get('showAllSymbol'); + var isAuto = showAllSymbol === 'auto'; + if (showAllSymbol && !isAuto) { + return; + } + var categoryAxis = coordSys.getAxesByScale('ordinal')[0]; + if (!categoryAxis) { + return; + } + // Note that category label interval strategy might bring some weird effect + // in some scenario: users may wonder why some of the symbols are not + // displayed. So we show all symbols as possible as we can. + if (isAuto + // Simplify the logic, do not determine label overlap here. + && canShowAllSymbolForCategory(categoryAxis, data)) { + return; + } + // Otherwise follow the label interval strategy on category axis. + var categoryDataDim = data.mapDimension(categoryAxis.dim); + var labelMap = {}; + each(categoryAxis.getViewLabels(), function (labelItem) { + var ordinalNumber = categoryAxis.scale.getRawOrdinalNumber(labelItem.tickValue); + labelMap[ordinalNumber] = 1; + }); + return function (dataIndex) { + return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex)); + }; + } + function canShowAllSymbolForCategory(categoryAxis, data) { + // In most cases, line is monotonous on category axis, and the label size + // is close with each other. So we check the symbol size and some of the + // label size alone with the category axis to estimate whether all symbol + // can be shown without overlap. + var axisExtent = categoryAxis.getExtent(); + var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count(); + isNaN(availSize) && (availSize = 0); // 0/0 is NaN. + // Sampling some points, max 5. + var dataLen = data.count(); + var step = Math.max(1, Math.round(dataLen / 5)); + for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) { + if (Symbol.getSymbolSize(data, dataIndex + // Only for cartesian, where `isHorizontal` exists. + )[categoryAxis.isHorizontal() ? 1 : 0] + // Empirical number + * 1.5 > availSize) { + return false; + } + } + return true; + } + function isPointNull$1(x, y) { + return isNaN(x) || isNaN(y); + } + function getLastIndexNotNull(points) { + var len = points.length / 2; + for (; len > 0; len--) { + if (!isPointNull$1(points[len * 2 - 2], points[len * 2 - 1])) { + break; + } + } + return len - 1; + } + function getPointAtIndex(points, idx) { + return [points[idx * 2], points[idx * 2 + 1]]; + } + function getIndexRange(points, xOrY, dim) { + var len = points.length / 2; + var dimIdx = dim === 'x' ? 0 : 1; + var a; + var b; + var prevIndex = 0; + var nextIndex = -1; + for (var i = 0; i < len; i++) { + b = points[i * 2 + dimIdx]; + if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) { + continue; + } + if (i === 0) { + a = b; + continue; + } + if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) { + nextIndex = i; + break; + } + prevIndex = i; + a = b; + } + return { + range: [prevIndex, nextIndex], + t: (xOrY - a) / (b - a) + }; + } + function anyStateShowEndLabel(seriesModel) { + if (seriesModel.get(['endLabel', 'show'])) { + return true; + } + for (var i = 0; i < SPECIAL_STATES.length; i++) { + if (seriesModel.get([SPECIAL_STATES[i], 'endLabel', 'show'])) { + return true; + } + } + return false; + } + function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) { + if (isCoordinateSystemType(coordSys, 'cartesian2d')) { + var endLabelModel_1 = seriesModel.getModel('endLabel'); + var valueAnimation_1 = endLabelModel_1.get('valueAnimation'); + var data_1 = seriesModel.getData(); + var labelAnimationRecord_1 = { + lastFrameIndex: 0 + }; + var during = anyStateShowEndLabel(seriesModel) ? function (percent, clipRect) { + lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys); + } : null; + var isHorizontal = coordSys.getBaseAxis().isHorizontal(); + var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () { + var endLabel = lineView._endLabel; + if (endLabel && hasAnimation) { + if (labelAnimationRecord_1.originalX != null) { + endLabel.attr({ + x: labelAnimationRecord_1.originalX, + y: labelAnimationRecord_1.originalY + }); + } + } + }, during); + // Expand clip shape to avoid clipping when line value exceeds axis + if (!seriesModel.get('clip', true)) { + var rectShape = clipPath.shape; + var expandSize = Math.max(rectShape.width, rectShape.height); + if (isHorizontal) { + rectShape.y -= expandSize; + rectShape.height += expandSize * 2; + } else { + rectShape.x -= expandSize; + rectShape.width += expandSize * 2; + } + } + // Set to the final frame. To make sure label layout is right. + if (during) { + during(1, clipPath); + } + return clipPath; + } else { + if ("development" !== 'production') { + if (seriesModel.get(['endLabel', 'show'])) { + console.warn('endLabel is not supported for lines in polar systems.'); + } + } + return createPolarClipPath(coordSys, hasAnimation, seriesModel); + } + } + function getEndLabelStateSpecified(endLabelModel, coordSys) { + var baseAxis = coordSys.getBaseAxis(); + var isHorizontal = baseAxis.isHorizontal(); + var isBaseInversed = baseAxis.inverse; + var align = isHorizontal ? isBaseInversed ? 'right' : 'left' : 'center'; + var verticalAlign = isHorizontal ? 'middle' : isBaseInversed ? 'top' : 'bottom'; + return { + normal: { + align: endLabelModel.get('align') || align, + verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign + } + }; + } + var LineView = /** @class */function (_super) { + __extends(LineView, _super); + function LineView() { + return _super !== null && _super.apply(this, arguments) || this; + } + LineView.prototype.init = function () { + var lineGroup = new Group(); + var symbolDraw = new SymbolDraw(); + this.group.add(symbolDraw.group); + this._symbolDraw = symbolDraw; + this._lineGroup = lineGroup; + }; + LineView.prototype.render = function (seriesModel, ecModel, api) { + var _this = this; + var coordSys = seriesModel.coordinateSystem; + var group = this.group; + var data = seriesModel.getData(); + var lineStyleModel = seriesModel.getModel('lineStyle'); + var areaStyleModel = seriesModel.getModel('areaStyle'); + var points = data.getLayout('points') || []; + var isCoordSysPolar = coordSys.type === 'polar'; + var prevCoordSys = this._coordSys; + var symbolDraw = this._symbolDraw; + var polyline = this._polyline; + var polygon = this._polygon; + var lineGroup = this._lineGroup; + var hasAnimation = !ecModel.ssr && seriesModel.get('animation'); + var isAreaChart = !areaStyleModel.isEmpty(); + var valueOrigin = areaStyleModel.get('origin'); + var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin); + var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo); + var showSymbol = seriesModel.get('showSymbol'); + var connectNulls = seriesModel.get('connectNulls'); + var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); + // Remove temporary symbols + var oldData = this._data; + oldData && oldData.eachItemGraphicEl(function (el, idx) { + if (el.__temp) { + group.remove(el); + oldData.setItemGraphicEl(idx, null); + } + }); + // Remove previous created symbols if showSymbol changed to false + if (!showSymbol) { + symbolDraw.remove(); + } + group.add(lineGroup); + // FIXME step not support polar + var step = !isCoordSysPolar ? seriesModel.get('step') : false; + var clipShapeForSymbol; + if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) { + clipShapeForSymbol = coordSys.getArea(); + // Avoid float number rounding error for symbol on the edge of axis extent. + // See #7913 and `test/dataZoom-clip.html`. + if (clipShapeForSymbol.width != null) { + clipShapeForSymbol.x -= 0.1; + clipShapeForSymbol.y -= 0.1; + clipShapeForSymbol.width += 0.2; + clipShapeForSymbol.height += 0.2; + } else if (clipShapeForSymbol.r0) { + clipShapeForSymbol.r0 -= 0.5; + clipShapeForSymbol.r += 0.5; + } + } + this._clipShapeForSymbol = clipShapeForSymbol; + var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual('style')[data.getVisual('drawType')]; + // Initialization animation or coordinate system changed + if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) { + showSymbol && symbolDraw.updateData(data, { + isIgnore: isIgnoreFunc, + clipShape: clipShapeForSymbol, + disableAnimation: true, + getSymbolPoint: function (idx) { + return [points[idx * 2], points[idx * 2 + 1]]; + } + }); + hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol); + if (step) { + // TODO If stacked series is not step + points = turnPointsIntoStep(points, coordSys, step, connectNulls); + if (stackedOnPoints) { + stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls); + } + } + polyline = this._newPolyline(points); + if (isAreaChart) { + polygon = this._newPolygon(points, stackedOnPoints); + } // If areaStyle is removed + else if (polygon) { + lineGroup.remove(polygon); + polygon = this._polygon = null; + } + // NOTE: Must update _endLabel before setClipPath. + if (!isCoordSysPolar) { + this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor)); + } + lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel)); + } else { + if (isAreaChart && !polygon) { + // If areaStyle is added + polygon = this._newPolygon(points, stackedOnPoints); + } else if (polygon && !isAreaChart) { + // If areaStyle is removed + lineGroup.remove(polygon); + polygon = this._polygon = null; + } + // NOTE: Must update _endLabel before setClipPath. + if (!isCoordSysPolar) { + this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor)); + } + // Update clipPath + var oldClipPath = lineGroup.getClipPath(); + if (oldClipPath) { + var newClipPath = createLineClipPath(this, coordSys, false, seriesModel); + initProps(oldClipPath, { + shape: newClipPath.shape + }, seriesModel); + } else { + lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel)); + } + // Always update, or it is wrong in the case turning on legend + // because points are not changed. + showSymbol && symbolDraw.updateData(data, { + isIgnore: isIgnoreFunc, + clipShape: clipShapeForSymbol, + disableAnimation: true, + getSymbolPoint: function (idx) { + return [points[idx * 2], points[idx * 2 + 1]]; + } + }); + // In the case data zoom triggered refreshing frequently + // Data may not change if line has a category axis. So it should animate nothing. + if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) { + if (hasAnimation) { + this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls); + } else { + // Not do it in update with animation + if (step) { + // TODO If stacked series is not step + points = turnPointsIntoStep(points, coordSys, step, connectNulls); + if (stackedOnPoints) { + stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls); + } + } + polyline.setShape({ + points: points + }); + polygon && polygon.setShape({ + points: points, + stackedOnPoints: stackedOnPoints + }); + } + } + } + var emphasisModel = seriesModel.getModel('emphasis'); + var focus = emphasisModel.get('focus'); + var blurScope = emphasisModel.get('blurScope'); + var emphasisDisabled = emphasisModel.get('disabled'); + polyline.useStyle(defaults( + // Use color in lineStyle first + lineStyleModel.getLineStyle(), { + fill: 'none', + stroke: visualColor, + lineJoin: 'bevel' + })); + setStatesStylesFromModel(polyline, seriesModel, 'lineStyle'); + if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') { + var emphasisLineStyle = polyline.getState('emphasis').style; + emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1; + } + // Needs seriesIndex for focus + getECData(polyline).seriesIndex = seriesModel.seriesIndex; + toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled); + var smooth = getSmooth(seriesModel.get('smooth')); + var smoothMonotone = seriesModel.get('smoothMonotone'); + polyline.setShape({ + smooth: smooth, + smoothMonotone: smoothMonotone, + connectNulls: connectNulls + }); + if (polygon) { + var stackedOnSeries = data.getCalculationInfo('stackedOnSeries'); + var stackedOnSmooth = 0; + polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), { + fill: visualColor, + opacity: 0.7, + lineJoin: 'bevel', + decal: data.getVisual('style').decal + })); + if (stackedOnSeries) { + stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth')); + } + polygon.setShape({ + smooth: smooth, + stackedOnSmooth: stackedOnSmooth, + smoothMonotone: smoothMonotone, + connectNulls: connectNulls + }); + setStatesStylesFromModel(polygon, seriesModel, 'areaStyle'); + // Needs seriesIndex for focus + getECData(polygon).seriesIndex = seriesModel.seriesIndex; + toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled); + } + var changePolyState = function (toState) { + _this._changePolyState(toState); + }; + data.eachItemGraphicEl(function (el) { + // Switch polyline / polygon state if element changed its state. + el && (el.onHoverStateChange = changePolyState); + }); + this._polyline.onHoverStateChange = changePolyState; + this._data = data; + // Save the coordinate system for transition animation when data changed + this._coordSys = coordSys; + this._stackedOnPoints = stackedOnPoints; + this._points = points; + this._step = step; + this._valueOrigin = valueOrigin; + if (seriesModel.get('triggerLineEvent')) { + this.packEventData(seriesModel, polyline); + polygon && this.packEventData(seriesModel, polygon); + } + }; + LineView.prototype.packEventData = function (seriesModel, el) { + getECData(el).eventData = { + componentType: 'series', + componentSubType: 'line', + componentIndex: seriesModel.componentIndex, + seriesIndex: seriesModel.seriesIndex, + seriesName: seriesModel.name, + seriesType: 'line' + }; + }; + LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) { + var data = seriesModel.getData(); + var dataIndex = queryDataIndex(data, payload); + this._changePolyState('emphasis'); + if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) { + var points = data.getLayout('points'); + var symbol = data.getItemGraphicEl(dataIndex); + if (!symbol) { + // Create a temporary symbol if it is not exists + var x = points[dataIndex * 2]; + var y = points[dataIndex * 2 + 1]; + if (isNaN(x) || isNaN(y)) { + // Null data + return; + } + // fix #11360: shouldn't draw symbol outside clipShapeForSymbol + if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) { + return; + } + var zlevel = seriesModel.get('zlevel') || 0; + var z = seriesModel.get('z') || 0; + symbol = new Symbol(data, dataIndex); + symbol.x = x; + symbol.y = y; + symbol.setZ(zlevel, z); + // ensure label text of the temporary symbol is in front of line and area polygon + var symbolLabel = symbol.getSymbolPath().getTextContent(); + if (symbolLabel) { + symbolLabel.zlevel = zlevel; + symbolLabel.z = z; + symbolLabel.z2 = this._polyline.z2 + 1; + } + symbol.__temp = true; + data.setItemGraphicEl(dataIndex, symbol); + // Stop scale animation + symbol.stopSymbolAnimation(true); + this.group.add(symbol); + } + symbol.highlight(); + } else { + // Highlight whole series + ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload); + } + }; + LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) { + var data = seriesModel.getData(); + var dataIndex = queryDataIndex(data, payload); + this._changePolyState('normal'); + if (dataIndex != null && dataIndex >= 0) { + var symbol = data.getItemGraphicEl(dataIndex); + if (symbol) { + if (symbol.__temp) { + data.setItemGraphicEl(dataIndex, null); + this.group.remove(symbol); + } else { + symbol.downplay(); + } + } + } else { + // FIXME + // can not downplay completely. + // Downplay whole series + ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload); + } + }; + LineView.prototype._changePolyState = function (toState) { + var polygon = this._polygon; + setStatesFlag(this._polyline, toState); + polygon && setStatesFlag(polygon, toState); + }; + LineView.prototype._newPolyline = function (points) { + var polyline = this._polyline; + // Remove previous created polyline + if (polyline) { + this._lineGroup.remove(polyline); + } + polyline = new ECPolyline({ + shape: { + points: points + }, + segmentIgnoreThreshold: 2, + z2: 10 + }); + this._lineGroup.add(polyline); + this._polyline = polyline; + return polyline; + }; + LineView.prototype._newPolygon = function (points, stackedOnPoints) { + var polygon = this._polygon; + // Remove previous created polygon + if (polygon) { + this._lineGroup.remove(polygon); + } + polygon = new ECPolygon({ + shape: { + points: points, + stackedOnPoints: stackedOnPoints + }, + segmentIgnoreThreshold: 2 + }); + this._lineGroup.add(polygon); + this._polygon = polygon; + return polygon; + }; + LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) { + var isHorizontalOrRadial; + var isCoordSysPolar; + var baseAxis = coordSys.getBaseAxis(); + var isAxisInverse = baseAxis.inverse; + if (coordSys.type === 'cartesian2d') { + isHorizontalOrRadial = baseAxis.isHorizontal(); + isCoordSysPolar = false; + } else if (coordSys.type === 'polar') { + isHorizontalOrRadial = baseAxis.dim === 'angle'; + isCoordSysPolar = true; + } + var seriesModel = data.hostModel; + var seriesDuration = seriesModel.get('animationDuration'); + if (isFunction(seriesDuration)) { + seriesDuration = seriesDuration(null); + } + var seriesDelay = seriesModel.get('animationDelay') || 0; + var seriesDelayValue = isFunction(seriesDelay) ? seriesDelay(null) : seriesDelay; + data.eachItemGraphicEl(function (symbol, idx) { + var el = symbol; + if (el) { + var point = [symbol.x, symbol.y]; + var start = void 0; + var end = void 0; + var current = void 0; + if (clipShape) { + if (isCoordSysPolar) { + var polarClip = clipShape; + var coord = coordSys.pointToCoord(point); + if (isHorizontalOrRadial) { + start = polarClip.startAngle; + end = polarClip.endAngle; + current = -coord[1] / 180 * Math.PI; + } else { + start = polarClip.r0; + end = polarClip.r; + current = coord[0]; + } + } else { + var gridClip = clipShape; + if (isHorizontalOrRadial) { + start = gridClip.x; + end = gridClip.x + gridClip.width; + current = symbol.x; + } else { + start = gridClip.y + gridClip.height; + end = gridClip.y; + current = symbol.y; + } + } + } + var ratio = end === start ? 0 : (current - start) / (end - start); + if (isAxisInverse) { + ratio = 1 - ratio; + } + var delay = isFunction(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue; + var symbolPath = el.getSymbolPath(); + var text = symbolPath.getTextContent(); + el.attr({ + scaleX: 0, + scaleY: 0 + }); + el.animateTo({ + scaleX: 1, + scaleY: 1 + }, { + duration: 200, + setToFinal: true, + delay: delay + }); + if (text) { + text.animateFrom({ + style: { + opacity: 0 + } + }, { + duration: 300, + delay: delay + }); + } + symbolPath.disableLabelAnimation = true; + } + }); + }; + LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys, inheritColor) { + var endLabelModel = seriesModel.getModel('endLabel'); + if (anyStateShowEndLabel(seriesModel)) { + var data_2 = seriesModel.getData(); + var polyline = this._polyline; + // series may be filtered. + var points = data_2.getLayout('points'); + if (!points) { + polyline.removeTextContent(); + this._endLabel = null; + return; + } + var endLabel = this._endLabel; + if (!endLabel) { + endLabel = this._endLabel = new ZRText({ + z2: 200 // should be higher than item symbol + }); + + endLabel.ignoreClip = true; + polyline.setTextContent(this._endLabel); + polyline.disableLabelAnimation = true; + } + // Find last non-NaN data to display data + var dataIndex = getLastIndexNotNull(points); + if (dataIndex >= 0) { + setLabelStyle(polyline, getLabelStatesModels(seriesModel, 'endLabel'), { + inheritColor: inheritColor, + labelFetcher: seriesModel, + labelDataIndex: dataIndex, + defaultText: function (dataIndex, opt, interpolatedValue) { + return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex); + }, + enableTextSetter: true + }, getEndLabelStateSpecified(endLabelModel, coordSys)); + polyline.textConfig.position = null; + } + } else if (this._endLabel) { + this._polyline.removeTextContent(); + this._endLabel = null; + } + }; + LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) { + var endLabel = this._endLabel; + var polyline = this._polyline; + if (endLabel) { + // NOTE: Don't remove percent < 1. percent === 1 means the first frame during render. + // The label is not prepared at this time. + if (percent < 1 && animationRecord.originalX == null) { + animationRecord.originalX = endLabel.x; + animationRecord.originalY = endLabel.y; + } + var points = data.getLayout('points'); + var seriesModel = data.hostModel; + var connectNulls = seriesModel.get('connectNulls'); + var precision = endLabelModel.get('precision'); + var distance = endLabelModel.get('distance') || 0; + var baseAxis = coordSys.getBaseAxis(); + var isHorizontal = baseAxis.isHorizontal(); + var isBaseInversed = baseAxis.inverse; + var clipShape = clipRect.shape; + var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y; + var distanceX = (isHorizontal ? distance : 0) * (isBaseInversed ? -1 : 1); + var distanceY = (isHorizontal ? 0 : -distance) * (isBaseInversed ? -1 : 1); + var dim = isHorizontal ? 'x' : 'y'; + var dataIndexRange = getIndexRange(points, xOrY, dim); + var indices = dataIndexRange.range; + var diff = indices[1] - indices[0]; + var value = void 0; + if (diff >= 1) { + // diff > 1 && connectNulls, which is on the null data. + if (diff > 1 && !connectNulls) { + var pt = getPointAtIndex(points, indices[0]); + endLabel.attr({ + x: pt[0] + distanceX, + y: pt[1] + distanceY + }); + valueAnimation && (value = seriesModel.getRawValue(indices[0])); + } else { + var pt = polyline.getPointOn(xOrY, dim); + pt && endLabel.attr({ + x: pt[0] + distanceX, + y: pt[1] + distanceY + }); + var startValue = seriesModel.getRawValue(indices[0]); + var endValue = seriesModel.getRawValue(indices[1]); + valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t)); + } + animationRecord.lastFrameIndex = indices[0]; + } else { + // If diff <= 0, which is the range is not found(Include NaN) + // Choose the first point or last point. + var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0; + var pt = getPointAtIndex(points, idx); + valueAnimation && (value = seriesModel.getRawValue(idx)); + endLabel.attr({ + x: pt[0] + distanceX, + y: pt[1] + distanceY + }); + } + if (valueAnimation) { + var inner = labelInner(endLabel); + if (typeof inner.setLabelText === 'function') { + inner.setLabelText(value); + } + } + } + }; + /** + * @private + */ + // FIXME Two value axis + LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) { + var polyline = this._polyline; + var polygon = this._polygon; + var seriesModel = data.hostModel; + var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin); + var current = diff.current; + var stackedOnCurrent = diff.stackedOnCurrent; + var next = diff.next; + var stackedOnNext = diff.stackedOnNext; + if (step) { + // TODO If stacked series is not step + current = turnPointsIntoStep(diff.current, coordSys, step, connectNulls); + stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step, connectNulls); + next = turnPointsIntoStep(diff.next, coordSys, step, connectNulls); + stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step, connectNulls); + } + // Don't apply animation if diff is large. + // For better result and avoid memory explosion problems like + // https://github.com/apache/incubator-echarts/issues/12229 + if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) { + polyline.stopAnimation(); + polyline.setShape({ + points: next + }); + if (polygon) { + polygon.stopAnimation(); + polygon.setShape({ + points: next, + stackedOnPoints: stackedOnNext + }); + } + return; + } + polyline.shape.__points = diff.current; + polyline.shape.points = current; + var target = { + shape: { + points: next + } + }; + // Also animate the original points. + // If points reference is changed when turning into step line. + if (diff.current !== current) { + target.shape.__points = diff.next; + } + // Stop previous animation. + polyline.stopAnimation(); + updateProps(polyline, target, seriesModel); + if (polygon) { + polygon.setShape({ + // Reuse the points with polyline. + points: current, + stackedOnPoints: stackedOnCurrent + }); + polygon.stopAnimation(); + updateProps(polygon, { + shape: { + stackedOnPoints: stackedOnNext + } + }, seriesModel); + // If use attr directly in updateProps. + if (polyline.shape.points !== polygon.shape.points) { + polygon.shape.points = polyline.shape.points; + } + } + var updatedDataInfo = []; + var diffStatus = diff.status; + for (var i = 0; i < diffStatus.length; i++) { + var cmd = diffStatus[i].cmd; + if (cmd === '=') { + var el = data.getItemGraphicEl(diffStatus[i].idx1); + if (el) { + updatedDataInfo.push({ + el: el, + ptIdx: i // Index of points + }); + } + } + } + + if (polyline.animators && polyline.animators.length) { + polyline.animators[0].during(function () { + polygon && polygon.dirtyShape(); + var points = polyline.shape.__points; + for (var i = 0; i < updatedDataInfo.length; i++) { + var el = updatedDataInfo[i].el; + var offset = updatedDataInfo[i].ptIdx * 2; + el.x = points[offset]; + el.y = points[offset + 1]; + el.markRedraw(); + } + }); + } + }; + LineView.prototype.remove = function (ecModel) { + var group = this.group; + var oldData = this._data; + this._lineGroup.removeAll(); + this._symbolDraw.remove(true); + // Remove temporary created elements when highlighting + oldData && oldData.eachItemGraphicEl(function (el, idx) { + if (el.__temp) { + group.remove(el); + oldData.setItemGraphicEl(idx, null); + } + }); + this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null; + }; + LineView.type = 'line'; + return LineView; + }(ChartView); + + function pointsLayout(seriesType, forceStoreInTypedArray) { + return { + seriesType: seriesType, + plan: createRenderPlanner(), + reset: function (seriesModel) { + var data = seriesModel.getData(); + var coordSys = seriesModel.coordinateSystem; + var pipelineContext = seriesModel.pipelineContext; + var useTypedArray = forceStoreInTypedArray || pipelineContext.large; + if (!coordSys) { + return; + } + var dims = map(coordSys.dimensions, function (dim) { + return data.mapDimension(dim); + }).slice(0, 2); + var dimLen = dims.length; + var stackResultDim = data.getCalculationInfo('stackResultDimension'); + if (isDimensionStacked(data, dims[0])) { + dims[0] = stackResultDim; + } + if (isDimensionStacked(data, dims[1])) { + dims[1] = stackResultDim; + } + var store = data.getStore(); + var dimIdx0 = data.getDimensionIndex(dims[0]); + var dimIdx1 = data.getDimensionIndex(dims[1]); + return dimLen && { + progress: function (params, data) { + var segCount = params.end - params.start; + var points = useTypedArray && createFloat32Array(segCount * dimLen); + var tmpIn = []; + var tmpOut = []; + for (var i = params.start, offset = 0; i < params.end; i++) { + var point = void 0; + if (dimLen === 1) { + var x = store.get(dimIdx0, i); + // NOTE: Make sure the second parameter is null to use default strategy. + point = coordSys.dataToPoint(x, null, tmpOut); + } else { + tmpIn[0] = store.get(dimIdx0, i); + tmpIn[1] = store.get(dimIdx1, i); + // Let coordinate system to handle the NaN data. + point = coordSys.dataToPoint(tmpIn, null, tmpOut); + } + if (useTypedArray) { + points[offset++] = point[0]; + points[offset++] = point[1]; + } else { + data.setItemLayout(i, point.slice()); + } + } + useTypedArray && data.setLayout('points', points); + } + }; + } + }; + } + + var samplers = { + average: function (frame) { + var sum = 0; + var count = 0; + for (var i = 0; i < frame.length; i++) { + if (!isNaN(frame[i])) { + sum += frame[i]; + count++; + } + } + // Return NaN if count is 0 + return count === 0 ? NaN : sum / count; + }, + sum: function (frame) { + var sum = 0; + for (var i = 0; i < frame.length; i++) { + // Ignore NaN + sum += frame[i] || 0; + } + return sum; + }, + max: function (frame) { + var max = -Infinity; + for (var i = 0; i < frame.length; i++) { + frame[i] > max && (max = frame[i]); + } + // NaN will cause illegal axis extent. + return isFinite(max) ? max : NaN; + }, + min: function (frame) { + var min = Infinity; + for (var i = 0; i < frame.length; i++) { + frame[i] < min && (min = frame[i]); + } + // NaN will cause illegal axis extent. + return isFinite(min) ? min : NaN; + }, + minmax: function (frame) { + var turningPointAbsoluteValue = -Infinity; + var turningPointOriginalValue = -Infinity; + for (var i = 0; i < frame.length; i++) { + var originalValue = frame[i]; + var absoluteValue = Math.abs(originalValue); + if (absoluteValue > turningPointAbsoluteValue) { + turningPointAbsoluteValue = absoluteValue; + turningPointOriginalValue = originalValue; + } + } + return isFinite(turningPointOriginalValue) ? turningPointOriginalValue : NaN; + }, + // TODO + // Median + nearest: function (frame) { + return frame[0]; + } + }; + var indexSampler = function (frame) { + return Math.round(frame.length / 2); + }; + function dataSample(seriesType) { + return { + seriesType: seriesType, + // FIXME:TS never used, so comment it + // modifyOutputEnd: true, + reset: function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var sampling = seriesModel.get('sampling'); + var coordSys = seriesModel.coordinateSystem; + var count = data.count(); + // Only cartesian2d support down sampling. Disable it when there is few data. + if (count > 10 && coordSys.type === 'cartesian2d' && sampling) { + var baseAxis = coordSys.getBaseAxis(); + var valueAxis = coordSys.getOtherAxis(baseAxis); + var extent = baseAxis.getExtent(); + var dpr = api.getDevicePixelRatio(); + // Coordinste system has been resized + var size = Math.abs(extent[1] - extent[0]) * (dpr || 1); + var rate = Math.round(count / size); + if (isFinite(rate) && rate > 1) { + if (sampling === 'lttb') { + seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis.dim), 1 / rate)); + } + var sampler = void 0; + if (isString(sampling)) { + sampler = samplers[sampling]; + } else if (isFunction(sampling)) { + sampler = sampling; + } + if (sampler) { + // Only support sample the first dim mapped from value axis. + seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler)); + } + } + } + } + }; + } + + function install$2(registers) { + registers.registerChartView(LineView); + registers.registerSeriesModel(LineSeriesModel); + registers.registerLayout(pointsLayout('line', true)); + registers.registerVisual({ + seriesType: 'line', + reset: function (seriesModel) { + var data = seriesModel.getData(); + // Visual coding for legend + var lineStyle = seriesModel.getModel('lineStyle').getLineStyle(); + if (lineStyle && !lineStyle.stroke) { + // Fill in visual should be palette color if + // has color callback + lineStyle.stroke = data.getVisual('style').fill; + } + data.setVisual('legendLineStyle', lineStyle); + } + }); + // Down sample after filter + registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample('line')); + } + + var BaseBarSeriesModel = /** @class */function (_super) { + __extends(BaseBarSeriesModel, _super); + function BaseBarSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = BaseBarSeriesModel.type; + return _this; + } + BaseBarSeriesModel.prototype.getInitialData = function (option, ecModel) { + return createSeriesData(null, this, { + useEncodeDefaulter: true + }); + }; + BaseBarSeriesModel.prototype.getMarkerPosition = function (value, dims, startingAtTick) { + var coordSys = this.coordinateSystem; + if (coordSys && coordSys.clampData) { + // PENDING if clamp ? + var clampData_1 = coordSys.clampData(value); + var pt_1 = coordSys.dataToPoint(clampData_1); + if (startingAtTick) { + each(coordSys.getAxes(), function (axis, idx) { + // If axis type is category, use tick coords instead + if (axis.type === 'category' && dims != null) { + var tickCoords = axis.getTicksCoords(); + var alignTicksWithLabel = axis.getTickModel().get('alignWithLabel'); + var targetTickId = clampData_1[idx]; + // The index of rightmost tick of markArea is 1 larger than x1/y1 index + var isEnd = dims[idx] === 'x1' || dims[idx] === 'y1'; + if (isEnd && !alignTicksWithLabel) { + targetTickId += 1; + } + // The only contains one tick, tickCoords is + // like [{coord: 0, tickValue: 0}, {coord: 0}] + // to the length should always be larger than 1 + if (tickCoords.length < 2) { + return; + } else if (tickCoords.length === 2) { + // The left value and right value of the axis are + // the same. coord is 0 in both items. Use the max + // value of the axis as the coord + pt_1[idx] = axis.toGlobalCoord(axis.getExtent()[isEnd ? 1 : 0]); + return; + } + var leftCoord = void 0; + var coord = void 0; + var stepTickValue = 1; + for (var i = 0; i < tickCoords.length; i++) { + var tickCoord = tickCoords[i].coord; + // The last item of tickCoords doesn't contain + // tickValue + var tickValue = i === tickCoords.length - 1 ? tickCoords[i - 1].tickValue + stepTickValue : tickCoords[i].tickValue; + if (tickValue === targetTickId) { + coord = tickCoord; + break; + } else if (tickValue < targetTickId) { + leftCoord = tickCoord; + } else if (leftCoord != null && tickValue > targetTickId) { + coord = (tickCoord + leftCoord) / 2; + break; + } + if (i === 1) { + // Here we assume the step of category axes is + // the same + stepTickValue = tickValue - tickCoords[0].tickValue; + } + } + if (coord == null) { + if (!leftCoord) { + // targetTickId is smaller than all tick ids in the + // visible area, use the leftmost tick coord + coord = tickCoords[0].coord; + } else if (leftCoord) { + // targetTickId is larger than all tick ids in the + // visible area, use the rightmost tick coord + coord = tickCoords[tickCoords.length - 1].coord; + } + } + pt_1[idx] = axis.toGlobalCoord(coord); + } + }); + } else { + var data = this.getData(); + var offset = data.getLayout('offset'); + var size = data.getLayout('size'); + var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1; + pt_1[offsetIndex] += offset + size / 2; + } + return pt_1; + } + return [NaN, NaN]; + }; + BaseBarSeriesModel.type = 'series.__base_bar__'; + BaseBarSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: 'cartesian2d', + legendHoverLink: true, + // stack: null + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + barMinHeight: 0, + barMinAngle: 0, + // cursor: null, + large: false, + largeThreshold: 400, + progressive: 3e3, + progressiveChunkMode: 'mod' + }; + return BaseBarSeriesModel; + }(SeriesModel); + SeriesModel.registerClass(BaseBarSeriesModel); + + var BarSeriesModel = /** @class */function (_super) { + __extends(BarSeriesModel, _super); + function BarSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = BarSeriesModel.type; + return _this; + } + BarSeriesModel.prototype.getInitialData = function () { + return createSeriesData(null, this, { + useEncodeDefaulter: true, + createInvertedIndices: !!this.get('realtimeSort', true) || null + }); + }; + /** + * @override + */ + BarSeriesModel.prototype.getProgressive = function () { + // Do not support progressive in normal mode. + return this.get('large') ? this.get('progressive') : false; + }; + /** + * @override + */ + BarSeriesModel.prototype.getProgressiveThreshold = function () { + // Do not support progressive in normal mode. + var progressiveThreshold = this.get('progressiveThreshold'); + var largeThreshold = this.get('largeThreshold'); + if (largeThreshold > progressiveThreshold) { + progressiveThreshold = largeThreshold; + } + return progressiveThreshold; + }; + BarSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) { + return selectors.rect(data.getItemLayout(dataIndex)); + }; + BarSeriesModel.type = 'series.bar'; + BarSeriesModel.dependencies = ['grid', 'polar']; + BarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, { + // If clipped + // Only available on cartesian2d + clip: true, + roundCap: false, + showBackground: false, + 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: false + }); + return BarSeriesModel; + }(BaseBarSeriesModel); + + /** + * Sausage: similar to sector, but have half circle on both sides + */ + var SausageShape = /** @class */function () { + function SausageShape() { + this.cx = 0; + this.cy = 0; + this.r0 = 0; + this.r = 0; + this.startAngle = 0; + this.endAngle = Math.PI * 2; + this.clockwise = true; + } + return SausageShape; + }(); + var SausagePath = /** @class */function (_super) { + __extends(SausagePath, _super); + function SausagePath(opts) { + var _this = _super.call(this, opts) || this; + _this.type = 'sausage'; + return _this; + } + SausagePath.prototype.getDefaultShape = function () { + return new SausageShape(); + }; + SausagePath.prototype.buildPath = function (ctx, shape) { + var cx = shape.cx; + var cy = shape.cy; + var r0 = Math.max(shape.r0 || 0, 0); + var r = Math.max(shape.r, 0); + var dr = (r - r0) * 0.5; + var rCenter = r0 + dr; + var startAngle = shape.startAngle; + var endAngle = shape.endAngle; + var clockwise = shape.clockwise; + var PI2 = Math.PI * 2; + var lessThanCircle = clockwise ? endAngle - startAngle < PI2 : startAngle - endAngle < PI2; + if (!lessThanCircle) { + // Normalize angles + startAngle = endAngle - (clockwise ? PI2 : -PI2); + } + var unitStartX = Math.cos(startAngle); + var unitStartY = Math.sin(startAngle); + var unitEndX = Math.cos(endAngle); + var unitEndY = Math.sin(endAngle); + if (lessThanCircle) { + ctx.moveTo(unitStartX * r0 + cx, unitStartY * r0 + cy); + ctx.arc(unitStartX * rCenter + cx, unitStartY * rCenter + cy, dr, -Math.PI + startAngle, startAngle, !clockwise); + } else { + ctx.moveTo(unitStartX * r + cx, unitStartY * r + cy); + } + ctx.arc(cx, cy, r, startAngle, endAngle, !clockwise); + ctx.arc(unitEndX * rCenter + cx, unitEndY * rCenter + cy, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise); + if (r0 !== 0) { + ctx.arc(cx, cy, r0, endAngle, startAngle, clockwise); + } + // ctx.closePath(); + }; + + return SausagePath; + }(Path); + + function createSectorCalculateTextPosition(positionMapping, opts) { + opts = opts || {}; + var isRoundCap = opts.isRoundCap; + return function (out, opts, boundingRect) { + var textPosition = opts.position; + if (!textPosition || textPosition instanceof Array) { + return calculateTextPosition(out, opts, boundingRect); + } + var mappedSectorPosition = positionMapping(textPosition); + var distance = opts.distance != null ? opts.distance : 5; + var sector = this.shape; + var cx = sector.cx; + var cy = sector.cy; + var r = sector.r; + var r0 = sector.r0; + var middleR = (r + r0) / 2; + var startAngle = sector.startAngle; + var endAngle = sector.endAngle; + var middleAngle = (startAngle + endAngle) / 2; + var extraDist = isRoundCap ? Math.abs(r - r0) / 2 : 0; + var mathCos = Math.cos; + var mathSin = Math.sin; + // base position: top-left + var x = cx + r * mathCos(startAngle); + var y = cy + r * mathSin(startAngle); + var textAlign = 'left'; + var textVerticalAlign = 'top'; + switch (mappedSectorPosition) { + case 'startArc': + x = cx + (r0 - distance) * mathCos(middleAngle); + y = cy + (r0 - distance) * mathSin(middleAngle); + textAlign = 'center'; + textVerticalAlign = 'top'; + break; + case 'insideStartArc': + x = cx + (r0 + distance) * mathCos(middleAngle); + y = cy + (r0 + distance) * mathSin(middleAngle); + textAlign = 'center'; + textVerticalAlign = 'bottom'; + break; + case 'startAngle': + x = cx + middleR * mathCos(startAngle) + adjustAngleDistanceX(startAngle, distance + extraDist, false); + y = cy + middleR * mathSin(startAngle) + adjustAngleDistanceY(startAngle, distance + extraDist, false); + textAlign = 'right'; + textVerticalAlign = 'middle'; + break; + case 'insideStartAngle': + x = cx + middleR * mathCos(startAngle) + adjustAngleDistanceX(startAngle, -distance + extraDist, false); + y = cy + middleR * mathSin(startAngle) + adjustAngleDistanceY(startAngle, -distance + extraDist, false); + textAlign = 'left'; + textVerticalAlign = 'middle'; + break; + case 'middle': + x = cx + middleR * mathCos(middleAngle); + y = cy + middleR * mathSin(middleAngle); + textAlign = 'center'; + textVerticalAlign = 'middle'; + break; + case 'endArc': + x = cx + (r + distance) * mathCos(middleAngle); + y = cy + (r + distance) * mathSin(middleAngle); + textAlign = 'center'; + textVerticalAlign = 'bottom'; + break; + case 'insideEndArc': + x = cx + (r - distance) * mathCos(middleAngle); + y = cy + (r - distance) * mathSin(middleAngle); + textAlign = 'center'; + textVerticalAlign = 'top'; + break; + case 'endAngle': + x = cx + middleR * mathCos(endAngle) + adjustAngleDistanceX(endAngle, distance + extraDist, true); + y = cy + middleR * mathSin(endAngle) + adjustAngleDistanceY(endAngle, distance + extraDist, true); + textAlign = 'left'; + textVerticalAlign = 'middle'; + break; + case 'insideEndAngle': + x = cx + middleR * mathCos(endAngle) + adjustAngleDistanceX(endAngle, -distance + extraDist, true); + y = cy + middleR * mathSin(endAngle) + adjustAngleDistanceY(endAngle, -distance + extraDist, true); + textAlign = 'right'; + textVerticalAlign = 'middle'; + break; + default: + return calculateTextPosition(out, opts, boundingRect); + } + out = out || {}; + out.x = x; + out.y = y; + out.align = textAlign; + out.verticalAlign = textVerticalAlign; + return out; + }; + } + function setSectorTextRotation(sector, textPosition, positionMapping, rotateType) { + if (isNumber(rotateType)) { + // user-set rotation + sector.setTextConfig({ + rotation: rotateType + }); + return; + } else if (isArray(textPosition)) { + // user-set position, use 0 as auto rotation + sector.setTextConfig({ + rotation: 0 + }); + return; + } + var shape = sector.shape; + var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle; + var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle; + var middleAngle = (startAngle + endAngle) / 2; + var anchorAngle; + var mappedSectorPosition = positionMapping(textPosition); + switch (mappedSectorPosition) { + case 'startArc': + case 'insideStartArc': + case 'middle': + case 'insideEndArc': + case 'endArc': + anchorAngle = middleAngle; + break; + case 'startAngle': + case 'insideStartAngle': + anchorAngle = startAngle; + break; + case 'endAngle': + case 'insideEndAngle': + anchorAngle = endAngle; + break; + default: + sector.setTextConfig({ + rotation: 0 + }); + return; + } + var rotate = Math.PI * 1.5 - anchorAngle; + /** + * TODO: labels with rotate > Math.PI / 2 should be rotate another + * half round flipped to increase readability. However, only middle + * position supports this for now, because in other positions, the + * anchor point is not at the center of the text, so the positions + * after rotating is not as expected. + */ + if (mappedSectorPosition === 'middle' && rotate > Math.PI / 2 && rotate < Math.PI * 1.5) { + rotate -= Math.PI; + } + sector.setTextConfig({ + rotation: rotate + }); + } + function adjustAngleDistanceX(angle, distance, isEnd) { + return distance * Math.sin(angle) * (isEnd ? -1 : 1); + } + function adjustAngleDistanceY(angle, distance, isEnd) { + return distance * Math.cos(angle) * (isEnd ? 1 : -1); + } + + function getSectorCornerRadius(model, shape, zeroIfNull) { + var cornerRadius = model.get('borderRadius'); + if (cornerRadius == null) { + return zeroIfNull ? { + cornerRadius: 0 + } : null; + } + if (!isArray(cornerRadius)) { + cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius]; + } + var dr = Math.abs(shape.r || 0 - shape.r0 || 0); + return { + cornerRadius: map(cornerRadius, function (cr) { + return parsePercent(cr, dr); + }) + }; + } + + var mathMax$6 = Math.max; + var mathMin$6 = Math.min; + function getClipArea(coord, data) { + var coordSysClipArea = coord.getArea && coord.getArea(); + if (isCoordinateSystemType(coord, 'cartesian2d')) { + var baseAxis = coord.getBaseAxis(); + // When boundaryGap is false or using time axis. bar may exceed the grid. + // We should not clip this part. + // See test/bar2.html + if (baseAxis.type !== 'category' || !baseAxis.onBand) { + var expandWidth = data.getLayout('bandWidth'); + if (baseAxis.isHorizontal()) { + coordSysClipArea.x -= expandWidth; + coordSysClipArea.width += expandWidth * 2; + } else { + coordSysClipArea.y -= expandWidth; + coordSysClipArea.height += expandWidth * 2; + } + } + } + return coordSysClipArea; + } + var BarView = /** @class */function (_super) { + __extends(BarView, _super); + function BarView() { + var _this = _super.call(this) || this; + _this.type = BarView.type; + _this._isFirstFrame = true; + return _this; + } + BarView.prototype.render = function (seriesModel, ecModel, api, payload) { + this._model = seriesModel; + this._removeOnRenderedListener(api); + this._updateDrawMode(seriesModel); + var coordinateSystemType = seriesModel.get('coordinateSystem'); + if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') { + // Clear previously rendered progressive elements. + this._progressiveEls = null; + this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api, payload); + } else if ("development" !== 'production') { + warn('Only cartesian2d and polar supported for bar.'); + } + }; + BarView.prototype.incrementalPrepareRender = function (seriesModel) { + this._clear(); + this._updateDrawMode(seriesModel); + // incremental also need to clip, otherwise might be overlow. + // But must not set clip in each frame, otherwise all of the children will be marked redraw. + this._updateLargeClip(seriesModel); + }; + BarView.prototype.incrementalRender = function (params, seriesModel) { + // Reset + this._progressiveEls = []; + // Do not support progressive in normal mode. + this._incrementalRenderLarge(params, seriesModel); + }; + BarView.prototype.eachRendered = function (cb) { + traverseElements(this._progressiveEls || this.group, cb); + }; + BarView.prototype._updateDrawMode = function (seriesModel) { + var isLargeDraw = seriesModel.pipelineContext.large; + if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) { + this._isLargeDraw = isLargeDraw; + this._clear(); + } + }; + BarView.prototype._renderNormal = function (seriesModel, ecModel, api, payload) { + var group = this.group; + var data = seriesModel.getData(); + var oldData = this._data; + var coord = seriesModel.coordinateSystem; + var baseAxis = coord.getBaseAxis(); + var isHorizontalOrRadial; + if (coord.type === 'cartesian2d') { + isHorizontalOrRadial = baseAxis.isHorizontal(); + } else if (coord.type === 'polar') { + isHorizontalOrRadial = baseAxis.dim === 'angle'; + } + var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null; + var realtimeSortCfg = shouldRealtimeSort(seriesModel, coord); + if (realtimeSortCfg) { + this._enableRealtimeSort(realtimeSortCfg, data, api); + } + var needsClip = seriesModel.get('clip', true) || realtimeSortCfg; + var coordSysClipArea = getClipArea(coord, data); + // If there is clipPath created in large mode. Remove it. + group.removeClipPath(); + // We don't use clipPath in normal mode because we needs a perfect animation + // And don't want the label are clipped. + var roundCap = seriesModel.get('roundCap', true); + var drawBackground = seriesModel.get('showBackground', true); + var backgroundModel = seriesModel.getModel('backgroundStyle'); + var barBorderRadius = backgroundModel.get('borderRadius') || 0; + var bgEls = []; + var oldBgEls = this._backgroundEls; + var isInitSort = payload && payload.isInitSort; + var isChangeOrder = payload && payload.type === 'changeAxisOrder'; + function createBackground(dataIndex) { + var bgLayout = getLayout[coord.type](data, dataIndex); + var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout); + bgEl.useStyle(backgroundModel.getItemStyle()); + // Only cartesian2d support borderRadius. + if (coord.type === 'cartesian2d') { + bgEl.setShape('r', barBorderRadius); + } else { + bgEl.setShape('cornerRadius', barBorderRadius); + } + bgEls[dataIndex] = bgEl; + return bgEl; + } + data.diff(oldData).add(function (dataIndex) { + var itemModel = data.getItemModel(dataIndex); + var layout = getLayout[coord.type](data, dataIndex, itemModel); + if (drawBackground) { + createBackground(dataIndex); + } + // If dataZoom in filteMode: 'empty', the baseValue can be set as NaN in "axisProxy". + if (!data.hasValue(dataIndex) || !isValidLayout[coord.type](layout)) { + return; + } + var isClipped = false; + if (needsClip) { + // Clip will modify the layout params. + // And return a boolean to determine if the shape are fully clipped. + isClipped = clip[coord.type](coordSysClipArea, layout); + } + var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap); + if (realtimeSortCfg) { + /** + * Force label animation because even if the element is + * ignored because it's clipped, it may not be clipped after + * changing order. Then, if not using forceLabelAnimation, + * the label animation was never started, in which case, + * the label will be the final value and doesn't have label + * animation. + */ + el.forceLabelAnimation = true; + } + updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar'); + if (isInitSort) { + el.attr({ + shape: layout + }); + } else if (realtimeSortCfg) { + updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout, dataIndex, isHorizontalOrRadial, false, false); + } else { + initProps(el, { + shape: layout + }, seriesModel, dataIndex); + } + data.setItemGraphicEl(dataIndex, el); + group.add(el); + el.ignore = isClipped; + }).update(function (newIndex, oldIndex) { + var itemModel = data.getItemModel(newIndex); + var layout = getLayout[coord.type](data, newIndex, itemModel); + if (drawBackground) { + var bgEl = void 0; + if (oldBgEls.length === 0) { + bgEl = createBackground(oldIndex); + } else { + bgEl = oldBgEls[oldIndex]; + bgEl.useStyle(backgroundModel.getItemStyle()); + // Only cartesian2d support borderRadius. + if (coord.type === 'cartesian2d') { + bgEl.setShape('r', barBorderRadius); + } else { + bgEl.setShape('cornerRadius', barBorderRadius); + } + bgEls[newIndex] = bgEl; + } + var bgLayout = getLayout[coord.type](data, newIndex); + var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord); + updateProps(bgEl, { + shape: shape + }, animationModel, newIndex); + } + var el = oldData.getItemGraphicEl(oldIndex); + if (!data.hasValue(newIndex) || !isValidLayout[coord.type](layout)) { + group.remove(el); + return; + } + var isClipped = false; + if (needsClip) { + isClipped = clip[coord.type](coordSysClipArea, layout); + if (isClipped) { + group.remove(el); + } + } + if (!el) { + el = elementCreator[coord.type](seriesModel, data, newIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap); + } else { + saveOldStyle(el); + } + if (realtimeSortCfg) { + el.forceLabelAnimation = true; + } + if (isChangeOrder) { + var textEl = el.getTextContent(); + if (textEl) { + var labelInnerStore = labelInner(textEl); + if (labelInnerStore.prevValue != null) { + /** + * Set preValue to be value so that no new label + * should be started, otherwise, it will take a full + * `animationDurationUpdate` time to finish the + * animation, which is not expected. + */ + labelInnerStore.prevValue = labelInnerStore.value; + } + } + } + // Not change anything if only order changed. + // Especially not change label. + else { + updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar'); + } + if (isInitSort) { + el.attr({ + shape: layout + }); + } else if (realtimeSortCfg) { + updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout, newIndex, isHorizontalOrRadial, true, isChangeOrder); + } else { + updateProps(el, { + shape: layout + }, seriesModel, newIndex, null); + } + data.setItemGraphicEl(newIndex, el); + el.ignore = isClipped; + group.add(el); + }).remove(function (dataIndex) { + var el = oldData.getItemGraphicEl(dataIndex); + el && removeElementWithFadeOut(el, seriesModel, dataIndex); + }).execute(); + var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group()); + bgGroup.removeAll(); + for (var i = 0; i < bgEls.length; ++i) { + bgGroup.add(bgEls[i]); + } + group.add(bgGroup); + this._backgroundEls = bgEls; + this._data = data; + }; + BarView.prototype._renderLarge = function (seriesModel, ecModel, api) { + this._clear(); + createLarge(seriesModel, this.group); + this._updateLargeClip(seriesModel); + }; + BarView.prototype._incrementalRenderLarge = function (params, seriesModel) { + this._removeBackground(); + createLarge(seriesModel, this.group, this._progressiveEls, true); + }; + BarView.prototype._updateLargeClip = function (seriesModel) { + // Use clipPath in large mode. + var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel); + var group = this.group; + if (clipPath) { + group.setClipPath(clipPath); + } else { + group.removeClipPath(); + } + }; + BarView.prototype._enableRealtimeSort = function (realtimeSortCfg, data, api) { + var _this = this; + // If no data in the first frame, wait for data to initSort + if (!data.count()) { + return; + } + var baseAxis = realtimeSortCfg.baseAxis; + if (this._isFirstFrame) { + this._dispatchInitSort(data, realtimeSortCfg, api); + this._isFirstFrame = false; + } else { + var orderMapping_1 = function (idx) { + var el = data.getItemGraphicEl(idx); + var shape = el && el.shape; + return shape && + // The result should be consistent with the initial sort by data value. + // Do not support the case that both positive and negative exist. + Math.abs(baseAxis.isHorizontal() ? shape.height : shape.width) + // If data is NaN, shape.xxx may be NaN, so use || 0 here in case + || 0; + }; + this._onRendered = function () { + _this._updateSortWithinSameData(data, orderMapping_1, baseAxis, api); + }; + api.getZr().on('rendered', this._onRendered); + } + }; + BarView.prototype._dataSort = function (data, baseAxis, orderMapping) { + var info = []; + data.each(data.mapDimension(baseAxis.dim), function (ordinalNumber, dataIdx) { + var mappedValue = orderMapping(dataIdx); + mappedValue = mappedValue == null ? NaN : mappedValue; + info.push({ + dataIndex: dataIdx, + mappedValue: mappedValue, + ordinalNumber: ordinalNumber + }); + }); + info.sort(function (a, b) { + // If NaN, it will be treated as min val. + return b.mappedValue - a.mappedValue; + }); + return { + ordinalNumbers: map(info, function (item) { + return item.ordinalNumber; + }) + }; + }; + BarView.prototype._isOrderChangedWithinSameData = function (data, orderMapping, baseAxis) { + var scale = baseAxis.scale; + var ordinalDataDim = data.mapDimension(baseAxis.dim); + var lastValue = Number.MAX_VALUE; + for (var tickNum = 0, len = scale.getOrdinalMeta().categories.length; tickNum < len; ++tickNum) { + var rawIdx = data.rawIndexOf(ordinalDataDim, scale.getRawOrdinalNumber(tickNum)); + var value = rawIdx < 0 + // If some tick have no bar, the tick will be treated as min. + ? Number.MIN_VALUE + // PENDING: if dataZoom on baseAxis exits, is it a performance issue? + : orderMapping(data.indexOfRawIndex(rawIdx)); + if (value > lastValue) { + return true; + } + lastValue = value; + } + return false; + }; + /* + * Consider the case when A and B changed order, whose representing + * bars are both out of sight, we don't wish to trigger reorder action + * as long as the order in the view doesn't change. + */ + BarView.prototype._isOrderDifferentInView = function (orderInfo, baseAxis) { + var scale = baseAxis.scale; + var extent = scale.getExtent(); + var tickNum = Math.max(0, extent[0]); + var tickMax = Math.min(extent[1], scale.getOrdinalMeta().categories.length - 1); + for (; tickNum <= tickMax; ++tickNum) { + if (orderInfo.ordinalNumbers[tickNum] !== scale.getRawOrdinalNumber(tickNum)) { + return true; + } + } + }; + BarView.prototype._updateSortWithinSameData = function (data, orderMapping, baseAxis, api) { + if (!this._isOrderChangedWithinSameData(data, orderMapping, baseAxis)) { + return; + } + var sortInfo = this._dataSort(data, baseAxis, orderMapping); + if (this._isOrderDifferentInView(sortInfo, baseAxis)) { + this._removeOnRenderedListener(api); + api.dispatchAction({ + type: 'changeAxisOrder', + componentType: baseAxis.dim + 'Axis', + axisId: baseAxis.index, + sortInfo: sortInfo + }); + } + }; + BarView.prototype._dispatchInitSort = function (data, realtimeSortCfg, api) { + var baseAxis = realtimeSortCfg.baseAxis; + var sortResult = this._dataSort(data, baseAxis, function (dataIdx) { + return data.get(data.mapDimension(realtimeSortCfg.otherAxis.dim), dataIdx); + }); + api.dispatchAction({ + type: 'changeAxisOrder', + componentType: baseAxis.dim + 'Axis', + isInitSort: true, + axisId: baseAxis.index, + sortInfo: sortResult + }); + }; + BarView.prototype.remove = function (ecModel, api) { + this._clear(this._model); + this._removeOnRenderedListener(api); + }; + BarView.prototype.dispose = function (ecModel, api) { + this._removeOnRenderedListener(api); + }; + BarView.prototype._removeOnRenderedListener = function (api) { + if (this._onRendered) { + api.getZr().off('rendered', this._onRendered); + this._onRendered = null; + } + }; + BarView.prototype._clear = function (model) { + var group = this.group; + var data = this._data; + if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) { + this._removeBackground(); + this._backgroundEls = []; + data.eachItemGraphicEl(function (el) { + removeElementWithFadeOut(el, model, getECData(el).dataIndex); + }); + } else { + group.removeAll(); + } + this._data = null; + this._isFirstFrame = true; + }; + BarView.prototype._removeBackground = function () { + this.group.remove(this._backgroundGroup); + this._backgroundGroup = null; + }; + BarView.type = 'bar'; + return BarView; + }(ChartView); + var clip = { + cartesian2d: function (coordSysBoundingRect, layout) { + var signWidth = layout.width < 0 ? -1 : 1; + var signHeight = layout.height < 0 ? -1 : 1; + // Needs positive width and height + if (signWidth < 0) { + layout.x += layout.width; + layout.width = -layout.width; + } + if (signHeight < 0) { + layout.y += layout.height; + layout.height = -layout.height; + } + var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width; + var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height; + var x = mathMax$6(layout.x, coordSysBoundingRect.x); + var x2 = mathMin$6(layout.x + layout.width, coordSysX2); + var y = mathMax$6(layout.y, coordSysBoundingRect.y); + var y2 = mathMin$6(layout.y + layout.height, coordSysY2); + var xClipped = x2 < x; + var yClipped = y2 < y; + // When xClipped or yClipped, the element will be marked as `ignore`. + // But we should also place the element at the edge of the coord sys bounding rect. + // Because if data changed and the bar shows again, its transition animation + // will begin at this place. + layout.x = xClipped && x > coordSysX2 ? x2 : x; + layout.y = yClipped && y > coordSysY2 ? y2 : y; + layout.width = xClipped ? 0 : x2 - x; + layout.height = yClipped ? 0 : y2 - y; + // Reverse back + if (signWidth < 0) { + layout.x += layout.width; + layout.width = -layout.width; + } + if (signHeight < 0) { + layout.y += layout.height; + layout.height = -layout.height; + } + return xClipped || yClipped; + }, + polar: function (coordSysClipArea, layout) { + var signR = layout.r0 <= layout.r ? 1 : -1; + // Make sure r is larger than r0 + if (signR < 0) { + var tmp = layout.r; + layout.r = layout.r0; + layout.r0 = tmp; + } + var r = mathMin$6(layout.r, coordSysClipArea.r); + var r0 = mathMax$6(layout.r0, coordSysClipArea.r0); + layout.r = r; + layout.r0 = r0; + var clipped = r - r0 < 0; + // Reverse back + if (signR < 0) { + var tmp = layout.r; + layout.r = layout.r0; + layout.r0 = tmp; + } + return clipped; + } + }; + var elementCreator = { + cartesian2d: function (seriesModel, data, newIndex, layout, isHorizontal, animationModel, axisModel, isUpdate, roundCap) { + var rect = new Rect({ + shape: extend({}, layout), + z2: 1 + }); + rect.__dataIndex = newIndex; + rect.name = 'item'; + if (animationModel) { + var rectShape = rect.shape; + var animateProperty = isHorizontal ? 'height' : 'width'; + rectShape[animateProperty] = 0; + } + return rect; + }, + polar: function (seriesModel, data, newIndex, layout, isRadial, animationModel, axisModel, isUpdate, roundCap) { + var ShapeClass = !isRadial && roundCap ? SausagePath : Sector; + var sector = new ShapeClass({ + shape: layout, + z2: 1 + }); + sector.name = 'item'; + var positionMap = createPolarPositionMapping(isRadial); + sector.calculateTextPosition = createSectorCalculateTextPosition(positionMap, { + isRoundCap: ShapeClass === SausagePath + }); + // Animation + if (animationModel) { + var sectorShape = sector.shape; + var animateProperty = isRadial ? 'r' : 'endAngle'; + var animateTarget = {}; + sectorShape[animateProperty] = isRadial ? layout.r0 : layout.startAngle; + animateTarget[animateProperty] = layout[animateProperty]; + (isUpdate ? updateProps : initProps)(sector, { + shape: animateTarget + // __value: typeof dataValue === 'string' ? parseInt(dataValue, 10) : dataValue + }, animationModel); + } + return sector; + } + }; + function shouldRealtimeSort(seriesModel, coordSys) { + var realtimeSortOption = seriesModel.get('realtimeSort', true); + var baseAxis = coordSys.getBaseAxis(); + if ("development" !== 'production') { + if (realtimeSortOption) { + if (baseAxis.type !== 'category') { + warn('`realtimeSort` will not work because this bar series is not based on a category axis.'); + } + if (coordSys.type !== 'cartesian2d') { + warn('`realtimeSort` will not work because this bar series is not on cartesian2d.'); + } + } + } + if (realtimeSortOption && baseAxis.type === 'category' && coordSys.type === 'cartesian2d') { + return { + baseAxis: baseAxis, + otherAxis: coordSys.getOtherAxis(baseAxis) + }; + } + } + function updateRealtimeAnimation(realtimeSortCfg, seriesAnimationModel, el, layout, newIndex, isHorizontal, isUpdate, isChangeOrder) { + var seriesTarget; + var axisTarget; + if (isHorizontal) { + axisTarget = { + x: layout.x, + width: layout.width + }; + seriesTarget = { + y: layout.y, + height: layout.height + }; + } else { + axisTarget = { + y: layout.y, + height: layout.height + }; + seriesTarget = { + x: layout.x, + width: layout.width + }; + } + if (!isChangeOrder) { + // Keep the original growth animation if only axis order changed. + // Not start a new animation. + (isUpdate ? updateProps : initProps)(el, { + shape: seriesTarget + }, seriesAnimationModel, newIndex, null); + } + var axisAnimationModel = seriesAnimationModel ? realtimeSortCfg.baseAxis.model : null; + (isUpdate ? updateProps : initProps)(el, { + shape: axisTarget + }, axisAnimationModel, newIndex); + } + function checkPropertiesNotValid(obj, props) { + for (var i = 0; i < props.length; i++) { + if (!isFinite(obj[props[i]])) { + return true; + } + } + return false; + } + var rectPropties = ['x', 'y', 'width', 'height']; + var polarPropties = ['cx', 'cy', 'r', 'startAngle', 'endAngle']; + var isValidLayout = { + cartesian2d: function (layout) { + return !checkPropertiesNotValid(layout, rectPropties); + }, + polar: function (layout) { + return !checkPropertiesNotValid(layout, polarPropties); + } + }; + var getLayout = { + // itemModel is only used to get borderWidth, which is not needed + // when calculating bar background layout. + cartesian2d: function (data, dataIndex, itemModel) { + var layout = data.getItemLayout(dataIndex); + var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0; + // fix layout with lineWidth + var signX = layout.width > 0 ? 1 : -1; + var signY = layout.height > 0 ? 1 : -1; + return { + x: layout.x + signX * fixedLineWidth / 2, + y: layout.y + signY * fixedLineWidth / 2, + width: layout.width - signX * fixedLineWidth, + height: layout.height - signY * fixedLineWidth + }; + }, + polar: function (data, dataIndex, itemModel) { + var layout = data.getItemLayout(dataIndex); + return { + cx: layout.cx, + cy: layout.cy, + r0: layout.r0, + r: layout.r, + startAngle: layout.startAngle, + endAngle: layout.endAngle, + clockwise: layout.clockwise + }; + } + }; + function isZeroOnPolar(layout) { + return layout.startAngle != null && layout.endAngle != null && layout.startAngle === layout.endAngle; + } + function createPolarPositionMapping(isRadial) { + return function (isRadial) { + var arcOrAngle = isRadial ? 'Arc' : 'Angle'; + return function (position) { + switch (position) { + case 'start': + case 'insideStart': + case 'end': + case 'insideEnd': + return position + arcOrAngle; + default: + return position; + } + }; + }(isRadial); + } + function updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, isPolar) { + var style = data.getItemVisual(dataIndex, 'style'); + if (!isPolar) { + var borderRadius = itemModel.get(['itemStyle', 'borderRadius']) || 0; + el.setShape('r', borderRadius); + } else if (!seriesModel.get('roundCap')) { + var sectorShape = el.shape; + var cornerRadius = getSectorCornerRadius(itemModel.getModel('itemStyle'), sectorShape, true); + extend(sectorShape, cornerRadius); + el.setShape(sectorShape); + } + el.useStyle(style); + var cursorStyle = itemModel.getShallow('cursor'); + cursorStyle && el.attr('cursor', cursorStyle); + var labelPositionOutside = isPolar ? isHorizontalOrRadial ? layout.r >= layout.r0 ? 'endArc' : 'startArc' : layout.endAngle >= layout.startAngle ? 'endAngle' : 'startAngle' : isHorizontalOrRadial ? layout.height >= 0 ? 'bottom' : 'top' : layout.width >= 0 ? 'right' : 'left'; + var labelStatesModels = getLabelStatesModels(itemModel); + setLabelStyle(el, labelStatesModels, { + labelFetcher: seriesModel, + labelDataIndex: dataIndex, + defaultText: getDefaultLabel(seriesModel.getData(), dataIndex), + inheritColor: style.fill, + defaultOpacity: style.opacity, + defaultOutsidePosition: labelPositionOutside + }); + var label = el.getTextContent(); + if (isPolar && label) { + var position = itemModel.get(['label', 'position']); + el.textConfig.inside = position === 'middle' ? true : null; + setSectorTextRotation(el, position === 'outside' ? labelPositionOutside : position, createPolarPositionMapping(isHorizontalOrRadial), itemModel.get(['label', 'rotate'])); + } + setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function (value) { + return getDefaultInterpolatedLabel(data, value); + }); + var emphasisModel = itemModel.getModel(['emphasis']); + toggleHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + setStatesStylesFromModel(el, itemModel); + if (isZeroOnPolar(layout)) { + el.style.fill = 'none'; + el.style.stroke = 'none'; + each(el.states, function (state) { + if (state.style) { + state.style.fill = state.style.stroke = 'none'; + } + }); + } + } + // In case width or height are too small. + function getLineWidth(itemModel, rawLayout) { + // Has no border. + var borderColor = itemModel.get(['itemStyle', 'borderColor']); + if (!borderColor || borderColor === 'none') { + return 0; + } + var lineWidth = itemModel.get(['itemStyle', 'borderWidth']) || 0; + // width or height may be NaN for empty data + var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width); + var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height); + return Math.min(lineWidth, width, height); + } + var LagePathShape = /** @class */function () { + function LagePathShape() {} + return LagePathShape; + }(); + var LargePath = /** @class */function (_super) { + __extends(LargePath, _super); + function LargePath(opts) { + var _this = _super.call(this, opts) || this; + _this.type = 'largeBar'; + return _this; + } + LargePath.prototype.getDefaultShape = function () { + return new LagePathShape(); + }; + LargePath.prototype.buildPath = function (ctx, shape) { + // Drawing lines is more efficient than drawing + // a whole line or drawing rects. + var points = shape.points; + var baseDimIdx = this.baseDimIdx; + var valueDimIdx = 1 - this.baseDimIdx; + var startPoint = []; + var size = []; + var barWidth = this.barWidth; + for (var i = 0; i < points.length; i += 3) { + size[baseDimIdx] = barWidth; + size[valueDimIdx] = points[i + 2]; + startPoint[baseDimIdx] = points[i + baseDimIdx]; + startPoint[valueDimIdx] = points[i + valueDimIdx]; + ctx.rect(startPoint[0], startPoint[1], size[0], size[1]); + } + }; + return LargePath; + }(Path); + function createLarge(seriesModel, group, progressiveEls, incremental) { + // TODO support polar + var data = seriesModel.getData(); + var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0; + var largeDataIndices = data.getLayout('largeDataIndices'); + var barWidth = data.getLayout('size'); + var backgroundModel = seriesModel.getModel('backgroundStyle'); + var bgPoints = data.getLayout('largeBackgroundPoints'); + if (bgPoints) { + var bgEl = new LargePath({ + shape: { + points: bgPoints + }, + incremental: !!incremental, + silent: true, + z2: 0 + }); + bgEl.baseDimIdx = baseDimIdx; + bgEl.largeDataIndices = largeDataIndices; + bgEl.barWidth = barWidth; + bgEl.useStyle(backgroundModel.getItemStyle()); + group.add(bgEl); + progressiveEls && progressiveEls.push(bgEl); + } + var el = new LargePath({ + shape: { + points: data.getLayout('largePoints') + }, + incremental: !!incremental, + ignoreCoarsePointer: true, + z2: 1 + }); + el.baseDimIdx = baseDimIdx; + el.largeDataIndices = largeDataIndices; + el.barWidth = barWidth; + group.add(el); + el.useStyle(data.getVisual('style')); + // Enable tooltip and user mouse/touch event handlers. + getECData(el).seriesIndex = seriesModel.seriesIndex; + if (!seriesModel.get('silent')) { + el.on('mousedown', largePathUpdateDataIndex); + el.on('mousemove', largePathUpdateDataIndex); + } + progressiveEls && progressiveEls.push(el); + } + // Use throttle to avoid frequently traverse to find dataIndex. + var largePathUpdateDataIndex = throttle(function (event) { + var largePath = this; + var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY); + getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null; + }, 30, false); + function largePathFindDataIndex(largePath, x, y) { + var baseDimIdx = largePath.baseDimIdx; + var valueDimIdx = 1 - baseDimIdx; + var points = largePath.shape.points; + var largeDataIndices = largePath.largeDataIndices; + var startPoint = []; + var size = []; + var barWidth = largePath.barWidth; + for (var i = 0, len = points.length / 3; i < len; i++) { + var ii = i * 3; + size[baseDimIdx] = barWidth; + size[valueDimIdx] = points[ii + 2]; + startPoint[baseDimIdx] = points[ii + baseDimIdx]; + startPoint[valueDimIdx] = points[ii + valueDimIdx]; + if (size[valueDimIdx] < 0) { + startPoint[valueDimIdx] += size[valueDimIdx]; + size[valueDimIdx] = -size[valueDimIdx]; + } + if (x >= startPoint[0] && x <= startPoint[0] + size[0] && y >= startPoint[1] && y <= startPoint[1] + size[1]) { + return largeDataIndices[i]; + } + } + return -1; + } + function createBackgroundShape(isHorizontalOrRadial, layout, coord) { + if (isCoordinateSystemType(coord, 'cartesian2d')) { + var rectShape = layout; + var coordLayout = coord.getArea(); + return { + x: isHorizontalOrRadial ? rectShape.x : coordLayout.x, + y: isHorizontalOrRadial ? coordLayout.y : rectShape.y, + width: isHorizontalOrRadial ? rectShape.width : coordLayout.width, + height: isHorizontalOrRadial ? coordLayout.height : rectShape.height + }; + } else { + var coordLayout = coord.getArea(); + var sectorShape = layout; + return { + cx: coordLayout.cx, + cy: coordLayout.cy, + r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0, + r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r, + startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0, + endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2 + }; + } + } + function createBackgroundEl(coord, isHorizontalOrRadial, layout) { + var ElementClz = coord.type === 'polar' ? Sector : Rect; + return new ElementClz({ + shape: createBackgroundShape(isHorizontalOrRadial, layout, coord), + silent: true, + z2: 0 + }); + } + + function install$3(registers) { + registers.registerChartView(BarView); + registers.registerSeriesModel(BarSeriesModel); + registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, 'bar')); + // Do layout after other overall layout, which can prepare some information. + registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout('bar')); + // Down sample after filter + registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample('bar')); + /** + * @payload + * @property {string} [componentType=series] + * @property {number} [dx] + * @property {number} [dy] + * @property {number} [zoom] + * @property {number} [originX] + * @property {number} [originY] + */ + registers.registerAction({ + type: 'changeAxisOrder', + event: 'changeAxisOrder', + update: 'update' + }, function (payload, ecModel) { + var componentType = payload.componentType || 'series'; + ecModel.eachComponent({ + mainType: componentType, + query: payload + }, function (componentModel) { + if (payload.sortInfo) { + componentModel.axis.setCategorySortInfo(payload.sortInfo); + } + }); + }); + } + + var PI2$8 = Math.PI * 2; + var RADIAN = Math.PI / 180; + function getViewRect(seriesModel, api) { + return getLayoutRect(seriesModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }); + } + function getBasicPieLayout(seriesModel, api) { + var viewRect = getViewRect(seriesModel, api); + // center can be string or number when coordinateSystem is specified + var center = seriesModel.get('center'); + var radius = seriesModel.get('radius'); + if (!isArray(radius)) { + radius = [0, radius]; + } + var width = parsePercent$1(viewRect.width, api.getWidth()); + var height = parsePercent$1(viewRect.height, api.getHeight()); + var size = Math.min(width, height); + var r0 = parsePercent$1(radius[0], size / 2); + var r = parsePercent$1(radius[1], size / 2); + var cx; + var cy; + var coordSys = seriesModel.coordinateSystem; + if (coordSys) { + // percentage is not allowed when coordinate system is specified + var point = coordSys.dataToPoint(center); + cx = point[0] || 0; + cy = point[1] || 0; + } else { + if (!isArray(center)) { + center = [center, center]; + } + cx = parsePercent$1(center[0], width) + viewRect.x; + cy = parsePercent$1(center[1], height) + viewRect.y; + } + return { + cx: cx, + cy: cy, + r0: r0, + r: r + }; + } + function pieLayout(seriesType, ecModel, api) { + ecModel.eachSeriesByType(seriesType, function (seriesModel) { + var data = seriesModel.getData(); + var valueDim = data.mapDimension('value'); + var viewRect = getViewRect(seriesModel, api); + var _a = getBasicPieLayout(seriesModel, api), + cx = _a.cx, + cy = _a.cy, + r = _a.r, + r0 = _a.r0; + var startAngle = -seriesModel.get('startAngle') * RADIAN; + var endAngle = seriesModel.get('endAngle'); + var padAngle = seriesModel.get('padAngle') * RADIAN; + endAngle = endAngle === 'auto' ? startAngle - PI2$8 : -endAngle * RADIAN; + var minAngle = seriesModel.get('minAngle') * RADIAN; + var minAndPadAngle = minAngle + padAngle; + var validDataCount = 0; + data.each(valueDim, function (value) { + !isNaN(value) && validDataCount++; + }); + var sum = data.getSum(valueDim); + // Sum may be 0 + var unitRadian = Math.PI / (sum || validDataCount) * 2; + var clockwise = seriesModel.get('clockwise'); + var roseType = seriesModel.get('roseType'); + var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); + // [0...max] + var extent = data.getDataExtent(valueDim); + extent[0] = 0; + var dir = clockwise ? 1 : -1; + var angles = [startAngle, endAngle]; + var halfPadAngle = dir * padAngle / 2; + normalizeArcAngles(angles, !clockwise); + startAngle = angles[0], endAngle = angles[1]; + var angleRange = Math.abs(endAngle - startAngle); + // In the case some sector angle is smaller than minAngle + var restAngle = angleRange; + var valueSumLargerThanMinAngle = 0; + var currentAngle = startAngle; + data.setLayout({ + viewRect: viewRect, + r: r + }); + data.each(valueDim, function (value, idx) { + var angle; + if (isNaN(value)) { + data.setItemLayout(idx, { + angle: NaN, + startAngle: NaN, + endAngle: NaN, + clockwise: clockwise, + cx: cx, + cy: cy, + r0: r0, + r: roseType ? NaN : r + }); + return; + } + // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样? + if (roseType !== 'area') { + angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian; + } else { + angle = angleRange / validDataCount; + } + if (angle < minAndPadAngle) { + angle = minAndPadAngle; + restAngle -= minAndPadAngle; + } else { + valueSumLargerThanMinAngle += value; + } + var endAngle = currentAngle + dir * angle; + // calculate display angle + var actualStartAngle = 0; + var actualEndAngle = 0; + if (padAngle > angle) { + actualStartAngle = currentAngle + dir * angle / 2; + actualEndAngle = actualStartAngle; + } else { + actualStartAngle = currentAngle + halfPadAngle; + actualEndAngle = endAngle - halfPadAngle; + } + data.setItemLayout(idx, { + angle: angle, + startAngle: actualStartAngle, + endAngle: actualEndAngle, + clockwise: clockwise, + cx: cx, + cy: cy, + r0: r0, + r: roseType ? linearMap(value, extent, [r0, r]) : r + }); + currentAngle = endAngle; + }); + // Some sector is constrained by minAngle and padAngle + // Rest sectors needs recalculate angle + if (restAngle < PI2$8 && validDataCount) { + // Average the angle if rest angle is not enough after all angles is + // Constrained by minAngle and padAngle + if (restAngle <= 1e-3) { + var angle_1 = angleRange / validDataCount; + data.each(valueDim, function (value, idx) { + if (!isNaN(value)) { + var layout_1 = data.getItemLayout(idx); + layout_1.angle = angle_1; + var actualStartAngle = 0; + var actualEndAngle = 0; + if (angle_1 < padAngle) { + actualStartAngle = startAngle + dir * (idx + 1 / 2) * angle_1; + actualEndAngle = actualStartAngle; + } else { + actualStartAngle = startAngle + dir * idx * angle_1 + halfPadAngle; + actualEndAngle = startAngle + dir * (idx + 1) * angle_1 - halfPadAngle; + } + layout_1.startAngle = actualStartAngle; + layout_1.endAngle = actualEndAngle; + } + }); + } else { + unitRadian = restAngle / valueSumLargerThanMinAngle; + currentAngle = startAngle; + data.each(valueDim, function (value, idx) { + if (!isNaN(value)) { + var layout_2 = data.getItemLayout(idx); + var angle = layout_2.angle === minAndPadAngle ? minAndPadAngle : value * unitRadian; + var actualStartAngle = 0; + var actualEndAngle = 0; + if (angle < padAngle) { + actualStartAngle = currentAngle + dir * angle / 2; + actualEndAngle = actualStartAngle; + } else { + actualStartAngle = currentAngle + halfPadAngle; + actualEndAngle = currentAngle + dir * angle - halfPadAngle; + } + layout_2.startAngle = actualStartAngle; + layout_2.endAngle = actualEndAngle; + currentAngle += dir * angle; + } + }); + } + } + }); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function dataFilter(seriesType) { + return { + seriesType: seriesType, + reset: function (seriesModel, ecModel) { + var legendModels = ecModel.findComponents({ + mainType: 'legend' + }); + if (!legendModels || !legendModels.length) { + return; + } + var data = seriesModel.getData(); + data.filterSelf(function (idx) { + var name = data.getName(idx); + // If in any legend component the status is not selected. + for (var i = 0; i < legendModels.length; i++) { + // @ts-ignore FIXME: LegendModel + if (!legendModels[i].isSelected(name)) { + return false; + } + } + return true; + }); + } + }; + } + + var RADIAN$1 = Math.PI / 180; + function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) { + if (list.length < 2) { + return; + } + function recalculateXOnSemiToAlignOnEllipseCurve(semi) { + var rB = semi.rB; + var rB2 = rB * rB; + for (var i = 0; i < semi.list.length; i++) { + var item = semi.list[i]; + var dy = Math.abs(item.label.y - cy); + // horizontal r is always same with original r because x is not changed. + var rA = r + item.len; + var rA2 = rA * rA; + // Use ellipse implicit function to calculate x + var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2); + var newX = cx + (dx + item.len2) * dir; + var deltaX = newX - item.label.x; + var newTargetWidth = item.targetTextWidth - deltaX * dir; + // text x is changed, so need to recalculate width. + constrainTextWidth(item, newTargetWidth, true); + item.label.x = newX; + } + } + // Adjust X based on the shifted y. Make tight labels aligned on an ellipse curve. + function recalculateX(items) { + // Extremes of + var topSemi = { + list: [], + maxY: 0 + }; + var bottomSemi = { + list: [], + maxY: 0 + }; + for (var i = 0; i < items.length; i++) { + if (items[i].labelAlignTo !== 'none') { + continue; + } + var item = items[i]; + var semi = item.label.y > cy ? bottomSemi : topSemi; + var dy = Math.abs(item.label.y - cy); + if (dy >= semi.maxY) { + var dx = item.label.x - cx - item.len2 * dir; + // horizontal r is always same with original r because x is not changed. + var rA = r + item.len; + // Canculate rB based on the topest / bottemest label. + var rB = Math.abs(dx) < rA ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA)) : rA; + semi.rB = rB; + semi.maxY = dy; + } + semi.list.push(item); + } + recalculateXOnSemiToAlignOnEllipseCurve(topSemi); + recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi); + } + var len = list.length; + for (var i = 0; i < len; i++) { + if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') { + var dx = list[i].label.x - farthestX; + list[i].linePoints[1][0] += dx; + list[i].label.x = farthestX; + } + } + if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) { + recalculateX(list); + } + } + function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) { + var leftList = []; + var rightList = []; + var leftmostX = Number.MAX_VALUE; + var rightmostX = -Number.MAX_VALUE; + for (var i = 0; i < labelLayoutList.length; i++) { + var label = labelLayoutList[i].label; + if (isPositionCenter(labelLayoutList[i])) { + continue; + } + if (label.x < cx) { + leftmostX = Math.min(leftmostX, label.x); + leftList.push(labelLayoutList[i]); + } else { + rightmostX = Math.max(rightmostX, label.x); + rightList.push(labelLayoutList[i]); + } + } + for (var i = 0; i < labelLayoutList.length; i++) { + var layout = labelLayoutList[i]; + if (!isPositionCenter(layout) && layout.linePoints) { + if (layout.labelStyleWidth != null) { + continue; + } + var label = layout.label; + var linePoints = layout.linePoints; + var targetTextWidth = void 0; + if (layout.labelAlignTo === 'edge') { + if (label.x < cx) { + targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.edgeDistance; + } else { + targetTextWidth = viewLeft + viewWidth - layout.edgeDistance - linePoints[2][0] - layout.labelDistance; + } + } else if (layout.labelAlignTo === 'labelLine') { + if (label.x < cx) { + targetTextWidth = leftmostX - viewLeft - layout.bleedMargin; + } else { + targetTextWidth = viewLeft + viewWidth - rightmostX - layout.bleedMargin; + } + } else { + if (label.x < cx) { + targetTextWidth = label.x - viewLeft - layout.bleedMargin; + } else { + targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin; + } + } + layout.targetTextWidth = targetTextWidth; + constrainTextWidth(layout, targetTextWidth); + } + } + adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX); + adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX); + for (var i = 0; i < labelLayoutList.length; i++) { + var layout = labelLayoutList[i]; + if (!isPositionCenter(layout) && layout.linePoints) { + var label = layout.label; + var linePoints = layout.linePoints; + var isAlignToEdge = layout.labelAlignTo === 'edge'; + var padding = label.style.padding; + var paddingH = padding ? padding[1] + padding[3] : 0; + // textRect.width already contains paddingH if bgColor is set + var extraPaddingH = label.style.backgroundColor ? 0 : paddingH; + var realTextWidth = layout.rect.width + extraPaddingH; + var dist = linePoints[1][0] - linePoints[2][0]; + if (isAlignToEdge) { + if (label.x < cx) { + linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance; + } else { + linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance - realTextWidth - layout.labelDistance; + } + } else { + if (label.x < cx) { + linePoints[2][0] = label.x + layout.labelDistance; + } else { + linePoints[2][0] = label.x - layout.labelDistance; + } + linePoints[1][0] = linePoints[2][0] + dist; + } + linePoints[1][1] = linePoints[2][1] = label.y; + } + } + } + /** + * Set max width of each label, and then wrap each label to the max width. + * + * @param layout label layout + * @param availableWidth max width for the label to display + * @param forceRecalculate recaculate the text layout even if the current width + * is smaller than `availableWidth`. This is useful when the text was previously + * wrapped by calling `constrainTextWidth` but now `availableWidth` changed, in + * which case, previous wrapping should be redo. + */ + function constrainTextWidth(layout, availableWidth, forceRecalculate) { + if (forceRecalculate === void 0) { + forceRecalculate = false; + } + if (layout.labelStyleWidth != null) { + // User-defined style.width has the highest priority. + return; + } + var label = layout.label; + var style = label.style; + var textRect = layout.rect; + var bgColor = style.backgroundColor; + var padding = style.padding; + var paddingH = padding ? padding[1] + padding[3] : 0; + var overflow = style.overflow; + // textRect.width already contains paddingH if bgColor is set + var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH); + if (availableWidth < oldOuterWidth || forceRecalculate) { + var oldHeight = textRect.height; + if (overflow && overflow.match('break')) { + // Temporarily set background to be null to calculate + // the bounding box without background. + label.setStyle('backgroundColor', null); + // Set constraining width + label.setStyle('width', availableWidth - paddingH); + // This is the real bounding box of the text without padding. + var innerRect = label.getBoundingRect(); + label.setStyle('width', Math.ceil(innerRect.width)); + label.setStyle('backgroundColor', bgColor); + } else { + var availableInnerWidth = availableWidth - paddingH; + var newWidth = availableWidth < oldOuterWidth + // Current text is too wide, use `availableWidth` as max width. + ? availableInnerWidth : + // Current available width is enough, but the text may have + // already been wrapped with a smaller available width. + forceRecalculate ? availableInnerWidth > layout.unconstrainedWidth + // Current available is larger than text width, + // so don't constrain width (otherwise it may have + // empty space in the background). + ? null + // Current available is smaller than text width, so + // use the current available width as constraining + // width. + : availableInnerWidth + // Current available width is enough, so no need to + // constrain. + : null; + label.setStyle('width', newWidth); + } + var newRect = label.getBoundingRect(); + textRect.width = newRect.width; + var margin = (label.style.margin || 0) + 2.1; + textRect.height = newRect.height + margin; + textRect.y -= (textRect.height - oldHeight) / 2; + } + } + function isPositionCenter(sectorShape) { + // Not change x for center label + return sectorShape.position === 'center'; + } + function pieLabelLayout(seriesModel) { + var data = seriesModel.getData(); + var labelLayoutList = []; + var cx; + var cy; + var hasLabelRotate = false; + var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN$1; + var viewRect = data.getLayout('viewRect'); + var r = data.getLayout('r'); + var viewWidth = viewRect.width; + var viewLeft = viewRect.x; + var viewTop = viewRect.y; + var viewHeight = viewRect.height; + function setNotShow(el) { + el.ignore = true; + } + function isLabelShown(label) { + if (!label.ignore) { + return true; + } + for (var key in label.states) { + if (label.states[key].ignore === false) { + return true; + } + } + return false; + } + data.each(function (idx) { + var sector = data.getItemGraphicEl(idx); + var sectorShape = sector.shape; + var label = sector.getTextContent(); + var labelLine = sector.getTextGuideLine(); + var itemModel = data.getItemModel(idx); + var labelModel = itemModel.getModel('label'); + // Use position in normal or emphasis + var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']); + var labelDistance = labelModel.get('distanceToLabelLine'); + var labelAlignTo = labelModel.get('alignTo'); + var edgeDistance = parsePercent$1(labelModel.get('edgeDistance'), viewWidth); + var bleedMargin = labelModel.get('bleedMargin'); + var labelLineModel = itemModel.getModel('labelLine'); + var labelLineLen = labelLineModel.get('length'); + labelLineLen = parsePercent$1(labelLineLen, viewWidth); + var labelLineLen2 = labelLineModel.get('length2'); + labelLineLen2 = parsePercent$1(labelLineLen2, viewWidth); + if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) { + each(label.states, setNotShow); + label.ignore = true; + if (labelLine) { + each(labelLine.states, setNotShow); + labelLine.ignore = true; + } + return; + } + if (!isLabelShown(label)) { + return; + } + var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2; + var nx = Math.cos(midAngle); + var ny = Math.sin(midAngle); + var textX; + var textY; + var linePoints; + var textAlign; + cx = sectorShape.cx; + cy = sectorShape.cy; + var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner'; + if (labelPosition === 'center') { + textX = sectorShape.cx; + textY = sectorShape.cy; + textAlign = 'center'; + } else { + var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx; + var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy; + textX = x1 + nx * 3; + textY = y1 + ny * 3; + if (!isLabelInside) { + // For roseType + var x2 = x1 + nx * (labelLineLen + r - sectorShape.r); + var y2 = y1 + ny * (labelLineLen + r - sectorShape.r); + var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2; + var y3 = y2; + if (labelAlignTo === 'edge') { + // Adjust textX because text align of edge is opposite + textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance; + } else { + textX = x3 + (nx < 0 ? -labelDistance : labelDistance); + } + textY = y3; + linePoints = [[x1, y1], [x2, y2], [x3, y3]]; + } + textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? nx > 0 ? 'right' : 'left' : nx > 0 ? 'left' : 'right'; + } + var PI = Math.PI; + var labelRotate = 0; + var rotate = labelModel.get('rotate'); + if (isNumber(rotate)) { + labelRotate = rotate * (PI / 180); + } else if (labelPosition === 'center') { + labelRotate = 0; + } else if (rotate === 'radial' || rotate === true) { + var radialAngle = nx < 0 ? -midAngle + PI : -midAngle; + labelRotate = radialAngle; + } else if (rotate === 'tangential' && labelPosition !== 'outside' && labelPosition !== 'outer') { + var rad = Math.atan2(nx, ny); + if (rad < 0) { + rad = PI * 2 + rad; + } + var isDown = ny > 0; + if (isDown) { + rad = PI + rad; + } + labelRotate = rad - PI; + } + hasLabelRotate = !!labelRotate; + label.x = textX; + label.y = textY; + label.rotation = labelRotate; + label.setStyle({ + verticalAlign: 'middle' + }); + // Not sectorShape the inside label + if (!isLabelInside) { + var textRect = label.getBoundingRect().clone(); + textRect.applyTransform(label.getComputedTransform()); + // Text has a default 1px stroke. Exclude this. + var margin = (label.style.margin || 0) + 2.1; + textRect.y -= margin / 2; + textRect.height += margin; + labelLayoutList.push({ + label: label, + labelLine: labelLine, + position: labelPosition, + len: labelLineLen, + len2: labelLineLen2, + minTurnAngle: labelLineModel.get('minTurnAngle'), + maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'), + surfaceNormal: new Point(nx, ny), + linePoints: linePoints, + textAlign: textAlign, + labelDistance: labelDistance, + labelAlignTo: labelAlignTo, + edgeDistance: edgeDistance, + bleedMargin: bleedMargin, + rect: textRect, + unconstrainedWidth: textRect.width, + labelStyleWidth: label.style.width + }); + } else { + label.setStyle({ + align: textAlign + }); + var selectState = label.states.select; + if (selectState) { + selectState.x += label.x; + selectState.y += label.y; + } + } + sector.setTextConfig({ + inside: isLabelInside + }); + }); + if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) { + avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop); + } + for (var i = 0; i < labelLayoutList.length; i++) { + var layout = labelLayoutList[i]; + var label = layout.label; + var labelLine = layout.labelLine; + var notShowLabel = isNaN(label.x) || isNaN(label.y); + if (label) { + label.setStyle({ + align: layout.textAlign + }); + if (notShowLabel) { + each(label.states, setNotShow); + label.ignore = true; + } + var selectState = label.states.select; + if (selectState) { + selectState.x += label.x; + selectState.y += label.y; + } + } + if (labelLine) { + var linePoints = layout.linePoints; + if (notShowLabel || !linePoints) { + each(labelLine.states, setNotShow); + labelLine.ignore = true; + } else { + limitTurnAngle(linePoints, layout.minTurnAngle); + limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle); + labelLine.setShape({ + points: linePoints + }); + // Set the anchor to the midpoint of sector + label.__hostTarget.textGuideLineConfig = { + anchor: new Point(linePoints[0][0], linePoints[0][1]) + }; + } + } + } + } + + /** + * Piece of pie including Sector, Label, LabelLine + */ + var PiePiece = /** @class */function (_super) { + __extends(PiePiece, _super); + function PiePiece(data, idx, startAngle) { + var _this = _super.call(this) || this; + _this.z2 = 2; + var text = new ZRText(); + _this.setTextContent(text); + _this.updateData(data, idx, startAngle, true); + return _this; + } + PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) { + var sector = this; + var seriesModel = data.hostModel; + var itemModel = data.getItemModel(idx); + var emphasisModel = itemModel.getModel('emphasis'); + var layout = data.getItemLayout(idx); + // cornerRadius & innerCornerRadius doesn't exist in the item layout. Use `0` if null value is specified. + // see `setItemLayout` in `pieLayout.ts`. + var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout, true), layout); + // Ignore NaN data. + if (isNaN(sectorShape.startAngle)) { + // Use NaN shape to avoid drawing shape. + sector.setShape(sectorShape); + return; + } + if (firstCreate) { + sector.setShape(sectorShape); + var animationType = seriesModel.getShallow('animationType'); + if (seriesModel.ecModel.ssr) { + // Use scale animation in SSR mode(opacity?) + // Because CSS SVG animation doesn't support very customized shape animation. + initProps(sector, { + scaleX: 0, + scaleY: 0 + }, seriesModel, { + dataIndex: idx, + isFrom: true + }); + sector.originX = sectorShape.cx; + sector.originY = sectorShape.cy; + } else if (animationType === 'scale') { + sector.shape.r = layout.r0; + initProps(sector, { + shape: { + r: layout.r + } + }, seriesModel, idx); + } + // Expansion + else { + if (startAngle != null) { + sector.setShape({ + startAngle: startAngle, + endAngle: startAngle + }); + initProps(sector, { + shape: { + startAngle: layout.startAngle, + endAngle: layout.endAngle + } + }, seriesModel, idx); + } else { + sector.shape.endAngle = layout.startAngle; + updateProps(sector, { + shape: { + endAngle: layout.endAngle + } + }, seriesModel, idx); + } + } + } else { + saveOldStyle(sector); + // Transition animation from the old shape + updateProps(sector, { + shape: sectorShape + }, seriesModel, idx); + } + sector.useStyle(data.getItemVisual(idx, 'style')); + setStatesStylesFromModel(sector, itemModel); + var midAngle = (layout.startAngle + layout.endAngle) / 2; + var offset = seriesModel.get('selectedOffset'); + var dx = Math.cos(midAngle) * offset; + var dy = Math.sin(midAngle) * offset; + var cursorStyle = itemModel.getShallow('cursor'); + cursorStyle && sector.attr('cursor', cursorStyle); + this._updateLabel(seriesModel, data, idx); + sector.ensureState('emphasis').shape = extend({ + r: layout.r + (emphasisModel.get('scale') ? emphasisModel.get('scaleSize') || 0 : 0) + }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout)); + extend(sector.ensureState('select'), { + x: dx, + y: dy, + shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout) + }); + extend(sector.ensureState('blur'), { + shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout) + }); + var labelLine = sector.getTextGuideLine(); + var labelText = sector.getTextContent(); + labelLine && extend(labelLine.ensureState('select'), { + x: dx, + y: dy + }); + // TODO: needs dx, dy in zrender? + extend(labelText.ensureState('select'), { + x: dx, + y: dy + }); + toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + }; + PiePiece.prototype._updateLabel = function (seriesModel, data, idx) { + var sector = this; + var itemModel = data.getItemModel(idx); + var labelLineModel = itemModel.getModel('labelLine'); + var style = data.getItemVisual(idx, 'style'); + var visualColor = style && style.fill; + var visualOpacity = style && style.opacity; + setLabelStyle(sector, getLabelStatesModels(itemModel), { + labelFetcher: data.hostModel, + labelDataIndex: idx, + inheritColor: visualColor, + defaultOpacity: visualOpacity, + defaultText: seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx) + }); + var labelText = sector.getTextContent(); + // Set textConfig on sector. + sector.setTextConfig({ + // reset position, rotation + position: null, + rotation: null + }); + // Make sure update style on labelText after setLabelStyle. + // Because setLabelStyle will replace a new style on it. + labelText.attr({ + z2: 10 + }); + var labelPosition = seriesModel.get(['label', 'position']); + if (labelPosition !== 'outside' && labelPosition !== 'outer') { + sector.removeTextGuideLine(); + } else { + var polyline = this.getTextGuideLine(); + if (!polyline) { + polyline = new Polyline(); + this.setTextGuideLine(polyline); + } + // Default use item visual color + setLabelLineStyle(this, getLabelLineStatesModels(itemModel), { + stroke: visualColor, + opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1) + }); + } + }; + return PiePiece; + }(Sector); + // Pie view + var PieView = /** @class */function (_super) { + __extends(PieView, _super); + function PieView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.ignoreLabelLineUpdate = true; + return _this; + } + PieView.prototype.render = function (seriesModel, ecModel, api, payload) { + var data = seriesModel.getData(); + var oldData = this._data; + var group = this.group; + var startAngle; + // First render + if (!oldData && data.count() > 0) { + var shape = data.getItemLayout(0); + for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) { + shape = data.getItemLayout(s); + } + if (shape) { + startAngle = shape.startAngle; + } + } + // remove empty-circle if it exists + if (this._emptyCircleSector) { + group.remove(this._emptyCircleSector); + } + // when all data are filtered, show lightgray empty circle + if (data.count() === 0 && seriesModel.get('showEmptyCircle')) { + var sector = new Sector({ + shape: getBasicPieLayout(seriesModel, api) + }); + sector.useStyle(seriesModel.getModel('emptyCircleStyle').getItemStyle()); + this._emptyCircleSector = sector; + group.add(sector); + } + data.diff(oldData).add(function (idx) { + var piePiece = new PiePiece(data, idx, startAngle); + data.setItemGraphicEl(idx, piePiece); + group.add(piePiece); + }).update(function (newIdx, oldIdx) { + var piePiece = oldData.getItemGraphicEl(oldIdx); + piePiece.updateData(data, newIdx, startAngle); + piePiece.off('click'); + group.add(piePiece); + data.setItemGraphicEl(newIdx, piePiece); + }).remove(function (idx) { + var piePiece = oldData.getItemGraphicEl(idx); + removeElementWithFadeOut(piePiece, seriesModel, idx); + }).execute(); + pieLabelLayout(seriesModel); + // Always use initial animation. + if (seriesModel.get('animationTypeUpdate') !== 'expansion') { + this._data = data; + } + }; + PieView.prototype.dispose = function () {}; + PieView.prototype.containPoint = function (point, seriesModel) { + var data = seriesModel.getData(); + var itemLayout = data.getItemLayout(0); + if (itemLayout) { + var dx = point[0] - itemLayout.cx; + var dy = point[1] - itemLayout.cy; + var radius = Math.sqrt(dx * dx + dy * dy); + return radius <= itemLayout.r && radius >= itemLayout.r0; + } + }; + PieView.type = 'pie'; + return PieView; + }(ChartView); + + /** + * [Usage]: + * (1) + * createListSimply(seriesModel, ['value']); + * (2) + * createListSimply(seriesModel, { + * coordDimensions: ['value'], + * dimensionsCount: 5 + * }); + */ + function createSeriesDataSimply(seriesModel, opt, nameList) { + opt = isArray(opt) && { + coordDimensions: opt + } || extend({ + encodeDefine: seriesModel.getEncode() + }, opt); + var source = seriesModel.getSource(); + var dimensions = prepareSeriesDataSchema(source, opt).dimensions; + var list = new SeriesData(dimensions, seriesModel); + list.initData(source, nameList); + return list; + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /** + * LegendVisualProvider is an bridge that pick encoded color from data and + * provide to the legend component. + */ + var LegendVisualProvider = /** @class */function () { + function LegendVisualProvider( + // Function to get data after filtered. It stores all the encoding info + getDataWithEncodedVisual, + // Function to get raw data before filtered. + getRawData) { + this._getDataWithEncodedVisual = getDataWithEncodedVisual; + this._getRawData = getRawData; + } + LegendVisualProvider.prototype.getAllNames = function () { + var rawData = this._getRawData(); + // We find the name from the raw data. In case it's filtered by the legend component. + // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray. + return rawData.mapArray(rawData.getName); + }; + LegendVisualProvider.prototype.containName = function (name) { + var rawData = this._getRawData(); + return rawData.indexOfName(name) >= 0; + }; + LegendVisualProvider.prototype.indexOfName = function (name) { + // Only get data when necessary. + // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet. + // Invoking Series#getData immediately will throw an error. + var dataWithEncodedVisual = this._getDataWithEncodedVisual(); + return dataWithEncodedVisual.indexOfName(name); + }; + LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) { + // Get encoded visual properties from final filtered data. + var dataWithEncodedVisual = this._getDataWithEncodedVisual(); + return dataWithEncodedVisual.getItemVisual(dataIndex, key); + }; + return LegendVisualProvider; + }(); + + var innerData = makeInner(); + var PieSeriesModel = /** @class */function (_super) { + __extends(PieSeriesModel, _super); + function PieSeriesModel() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @overwrite + */ + PieSeriesModel.prototype.init = function (option) { + _super.prototype.init.apply(this, arguments); + // Enable legend selection for each data item + // Use a function instead of direct access because data reference may changed + this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this)); + this._defaultLabelLine(option); + }; + /** + * @overwrite + */ + PieSeriesModel.prototype.mergeOption = function () { + _super.prototype.mergeOption.apply(this, arguments); + }; + /** + * @overwrite + */ + PieSeriesModel.prototype.getInitialData = function () { + return createSeriesDataSimply(this, { + coordDimensions: ['value'], + encodeDefaulter: curry(makeSeriesEncodeForNameBased, this) + }); + }; + /** + * @overwrite + */ + PieSeriesModel.prototype.getDataParams = function (dataIndex) { + var data = this.getData(); + // update seats when data is changed + var dataInner = innerData(data); + var seats = dataInner.seats; + if (!seats) { + var valueList_1 = []; + data.each(data.mapDimension('value'), function (value) { + valueList_1.push(value); + }); + seats = dataInner.seats = getPercentSeats(valueList_1, data.hostModel.get('percentPrecision')); + } + var params = _super.prototype.getDataParams.call(this, dataIndex); + // seats may be empty when sum is 0 + params.percent = seats[dataIndex] || 0; + params.$vars.push('percent'); + return params; + }; + PieSeriesModel.prototype._defaultLabelLine = function (option) { + // Extend labelLine emphasis + defaultEmphasis(option, 'labelLine', ['show']); + var labelLineNormalOpt = option.labelLine; + var labelLineEmphasisOpt = option.emphasis.labelLine; + // Not show label line if `label.normal.show = false` + labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show; + labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show; + }; + PieSeriesModel.type = 'series.pie'; + PieSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + legendHoverLink: true, + colorBy: 'data', + // 默认全局居中 + center: ['50%', '50%'], + radius: [0, '75%'], + // 默认顺时针 + clockwise: true, + startAngle: 90, + endAngle: 'auto', + padAngle: 0, + // 最小角度改为0 + minAngle: 0, + // If the angle of a sector less than `minShowLabelAngle`, + // the label will not be displayed. + minShowLabelAngle: 0, + // 选中时扇区偏移量 + selectedOffset: 10, + // 选择模式,默认关闭,可选single,multiple + // selectedMode: false, + // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积) + // roseType: null, + percentPrecision: 2, + // If still show when all data zero. + stillShowZeroSum: true, + // cursor: null, + left: 0, + top: 0, + right: 0, + bottom: 0, + width: null, + height: null, + label: { + // color: 'inherit', + // If rotate around circle + rotate: 0, + show: true, + overflow: 'truncate', + // 'outer', 'inside', 'center' + position: 'outer', + // 'none', 'labelLine', 'edge'. Works only when position is 'outer' + alignTo: 'none', + // Closest distance between label and chart edge. + // Works only position is 'outer' and alignTo is 'edge'. + edgeDistance: '25%', + // Works only position is 'outer' and alignTo is not 'edge'. + bleedMargin: 10, + // Distance between text and label line. + distanceToLabelLine: 5 + // formatter: 标签文本格式器,同 tooltip.formatter,不支持异步回调 + // 默认使用全局文本样式,详见 textStyle + // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数 + }, + + // Enabled when label.normal.position is 'outer' + labelLine: { + show: true, + // 引导线两段中的第一段长度 + length: 15, + // 引导线两段中的第二段长度 + length2: 15, + smooth: false, + minTurnAngle: 90, + maxSurfaceAngle: 90, + lineStyle: { + // color: 各异, + width: 1, + type: 'solid' + } + }, + itemStyle: { + borderWidth: 1, + borderJoin: 'round' + }, + showEmptyCircle: true, + emptyCircleStyle: { + color: 'lightgray', + opacity: 1 + }, + labelLayout: { + // Hide the overlapped label. + hideOverlap: true + }, + emphasis: { + scale: true, + scaleSize: 5 + }, + // If use strategy to avoid label overlapping + avoidLabelOverlap: true, + // Animation type. Valid values: expansion, scale + animationType: 'expansion', + animationDuration: 1000, + // Animation type when update. Valid values: transition, expansion + animationTypeUpdate: 'transition', + animationEasingUpdate: 'cubicInOut', + animationDurationUpdate: 500, + animationEasing: 'cubicInOut' + }; + return PieSeriesModel; + }(SeriesModel); + + function negativeDataFilter(seriesType) { + return { + seriesType: seriesType, + reset: function (seriesModel, ecModel) { + var data = seriesModel.getData(); + data.filterSelf(function (idx) { + // handle negative value condition + var valueDim = data.mapDimension('value'); + var curValue = data.get(valueDim, idx); + if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) { + return false; + } + return true; + }); + } + }; + } + + function install$4(registers) { + registers.registerChartView(PieView); + registers.registerSeriesModel(PieSeriesModel); + createLegacyDataSelectAction('pie', registers.registerAction); + registers.registerLayout(curry(pieLayout, 'pie')); + registers.registerProcessor(dataFilter('pie')); + registers.registerProcessor(negativeDataFilter('pie')); + } + + var ScatterSeriesModel = /** @class */function (_super) { + __extends(ScatterSeriesModel, _super); + function ScatterSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ScatterSeriesModel.type; + _this.hasSymbolVisual = true; + return _this; + } + ScatterSeriesModel.prototype.getInitialData = function (option, ecModel) { + return createSeriesData(null, this, { + useEncodeDefaulter: true + }); + }; + ScatterSeriesModel.prototype.getProgressive = function () { + var progressive = this.option.progressive; + if (progressive == null) { + // PENDING + return this.option.large ? 5e3 : this.get('progressive'); + } + return progressive; + }; + ScatterSeriesModel.prototype.getProgressiveThreshold = function () { + var progressiveThreshold = this.option.progressiveThreshold; + if (progressiveThreshold == null) { + // PENDING + return this.option.large ? 1e4 : this.get('progressiveThreshold'); + } + return progressiveThreshold; + }; + ScatterSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) { + return selectors.point(data.getItemLayout(dataIndex)); + }; + ScatterSeriesModel.prototype.getZLevelKey = function () { + // Each progressive series has individual key. + return this.getData().count() > this.getProgressiveThreshold() ? this.id : ''; + }; + ScatterSeriesModel.type = 'series.scatter'; + ScatterSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar']; + ScatterSeriesModel.defaultOption = { + coordinateSystem: 'cartesian2d', + // zlevel: 0, + z: 2, + legendHoverLink: true, + symbolSize: 10, + // symbolRotate: null, // 图形旋转控制 + large: false, + // Available when large is true + largeThreshold: 2000, + // cursor: null, + itemStyle: { + opacity: 0.8 + // color: 各异 + }, + + emphasis: { + scale: true + }, + // If clip the overflow graphics + // Works on cartesian / polar series + clip: true, + select: { + itemStyle: { + borderColor: '#212121' + } + }, + universalTransition: { + divideShape: 'clone' + } + // progressive: null + }; + + return ScatterSeriesModel; + }(SeriesModel); + + var BOOST_SIZE_THRESHOLD = 4; + var LargeSymbolPathShape = /** @class */function () { + function LargeSymbolPathShape() {} + return LargeSymbolPathShape; + }(); + var LargeSymbolPath = /** @class */function (_super) { + __extends(LargeSymbolPath, _super); + function LargeSymbolPath(opts) { + var _this = _super.call(this, opts) || this; + _this._off = 0; + _this.hoverDataIdx = -1; + return _this; + } + LargeSymbolPath.prototype.getDefaultShape = function () { + return new LargeSymbolPathShape(); + }; + LargeSymbolPath.prototype.reset = function () { + this.notClear = false; + this._off = 0; + }; + LargeSymbolPath.prototype.buildPath = function (path, shape) { + var points = shape.points; + var size = shape.size; + var symbolProxy = this.symbolProxy; + var symbolProxyShape = symbolProxy.shape; + var ctx = path.getContext ? path.getContext() : path; + var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD; + var softClipShape = this.softClipShape; + var i; + // Do draw in afterBrush. + if (canBoost) { + this._ctx = ctx; + return; + } + this._ctx = null; + for (i = this._off; i < points.length;) { + var x = points[i++]; + var y = points[i++]; + if (isNaN(x) || isNaN(y)) { + continue; + } + if (softClipShape && !softClipShape.contain(x, y)) { + continue; + } + symbolProxyShape.x = x - size[0] / 2; + symbolProxyShape.y = y - size[1] / 2; + symbolProxyShape.width = size[0]; + symbolProxyShape.height = size[1]; + symbolProxy.buildPath(path, symbolProxyShape, true); + } + if (this.incremental) { + this._off = i; + this.notClear = true; + } + }; + LargeSymbolPath.prototype.afterBrush = function () { + var shape = this.shape; + var points = shape.points; + var size = shape.size; + var ctx = this._ctx; + var softClipShape = this.softClipShape; + var i; + if (!ctx) { + return; + } + // PENDING If style or other canvas status changed? + for (i = this._off; i < points.length;) { + var x = points[i++]; + var y = points[i++]; + if (isNaN(x) || isNaN(y)) { + continue; + } + if (softClipShape && !softClipShape.contain(x, y)) { + continue; + } + // fillRect is faster than building a rect path and draw. + // And it support light globalCompositeOperation. + ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]); + } + if (this.incremental) { + this._off = i; + this.notClear = true; + } + }; + LargeSymbolPath.prototype.findDataIndex = function (x, y) { + // TODO ??? + // Consider transform + var shape = this.shape; + var points = shape.points; + var size = shape.size; + var w = Math.max(size[0], 4); + var h = Math.max(size[1], 4); + // Not consider transform + // Treat each element as a rect + // top down traverse + for (var idx = points.length / 2 - 1; idx >= 0; idx--) { + var i = idx * 2; + var x0 = points[i] - w / 2; + var y0 = points[i + 1] - h / 2; + if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) { + return idx; + } + } + return -1; + }; + LargeSymbolPath.prototype.contain = function (x, y) { + var localPos = this.transformCoordToLocal(x, y); + var rect = this.getBoundingRect(); + x = localPos[0]; + y = localPos[1]; + if (rect.contain(x, y)) { + // Cache found data index. + var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y); + return dataIdx >= 0; + } + this.hoverDataIdx = -1; + return false; + }; + LargeSymbolPath.prototype.getBoundingRect = function () { + // Ignore stroke for large symbol draw. + var rect = this._rect; + if (!rect) { + var shape = this.shape; + var points = shape.points; + var size = shape.size; + var w = size[0]; + var h = size[1]; + var minX = Infinity; + var minY = Infinity; + var maxX = -Infinity; + var maxY = -Infinity; + for (var i = 0; i < points.length;) { + var x = points[i++]; + var y = points[i++]; + minX = Math.min(x, minX); + maxX = Math.max(x, maxX); + minY = Math.min(y, minY); + maxY = Math.max(y, maxY); + } + rect = this._rect = new BoundingRect(minX - w / 2, minY - h / 2, maxX - minX + w, maxY - minY + h); + } + return rect; + }; + return LargeSymbolPath; + }(Path); + var LargeSymbolDraw = /** @class */function () { + function LargeSymbolDraw() { + this.group = new Group(); + } + /** + * Update symbols draw by new data + */ + LargeSymbolDraw.prototype.updateData = function (data, opt) { + this._clear(); + var symbolEl = this._create(); + symbolEl.setShape({ + points: data.getLayout('points') + }); + this._setCommon(symbolEl, data, opt); + }; + LargeSymbolDraw.prototype.updateLayout = function (data) { + var points = data.getLayout('points'); + this.group.eachChild(function (child) { + if (child.startIndex != null) { + var len = (child.endIndex - child.startIndex) * 2; + var byteOffset = child.startIndex * 4 * 2; + points = new Float32Array(points.buffer, byteOffset, len); + } + child.setShape('points', points); + // Reset draw cursor. + child.reset(); + }); + }; + LargeSymbolDraw.prototype.incrementalPrepareUpdate = function (data) { + this._clear(); + }; + LargeSymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) { + var lastAdded = this._newAdded[0]; + var points = data.getLayout('points'); + var oldPoints = lastAdded && lastAdded.shape.points; + // Merging the exists. Each element has 1e4 points. + // Consider the performance balance between too much elements and too much points in one shape(may affect hover optimization) + if (oldPoints && oldPoints.length < 2e4) { + var oldLen = oldPoints.length; + var newPoints = new Float32Array(oldLen + points.length); + // Concat two array + newPoints.set(oldPoints); + newPoints.set(points, oldLen); + // Update endIndex + lastAdded.endIndex = taskParams.end; + lastAdded.setShape({ + points: newPoints + }); + } else { + // Clear + this._newAdded = []; + var symbolEl = this._create(); + symbolEl.startIndex = taskParams.start; + symbolEl.endIndex = taskParams.end; + symbolEl.incremental = true; + symbolEl.setShape({ + points: points + }); + this._setCommon(symbolEl, data, opt); + } + }; + LargeSymbolDraw.prototype.eachRendered = function (cb) { + this._newAdded[0] && cb(this._newAdded[0]); + }; + LargeSymbolDraw.prototype._create = function () { + var symbolEl = new LargeSymbolPath({ + cursor: 'default' + }); + symbolEl.ignoreCoarsePointer = true; + this.group.add(symbolEl); + this._newAdded.push(symbolEl); + return symbolEl; + }; + LargeSymbolDraw.prototype._setCommon = function (symbolEl, data, opt) { + var hostModel = data.hostModel; + opt = opt || {}; + var size = data.getVisual('symbolSize'); + symbolEl.setShape('size', size instanceof Array ? size : [size, size]); + symbolEl.softClipShape = opt.clipShape || null; + // Create symbolProxy to build path for each data + symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0); + // Use symbolProxy setColor method + symbolEl.setColor = symbolEl.symbolProxy.setColor; + var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD; + symbolEl.useStyle( + // Draw shadow when doing fillRect is extremely slow. + hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color'])); + var globalStyle = data.getVisual('style'); + var visualColor = globalStyle && globalStyle.fill; + if (visualColor) { + symbolEl.setColor(visualColor); + } + var ecData = getECData(symbolEl); + // Enable tooltip + // PENDING May have performance issue when path is extremely large + ecData.seriesIndex = hostModel.seriesIndex; + symbolEl.on('mousemove', function (e) { + ecData.dataIndex = null; + var dataIndex = symbolEl.hoverDataIdx; + if (dataIndex >= 0) { + // Provide dataIndex for tooltip + ecData.dataIndex = dataIndex + (symbolEl.startIndex || 0); + } + }); + }; + LargeSymbolDraw.prototype.remove = function () { + this._clear(); + }; + LargeSymbolDraw.prototype._clear = function () { + this._newAdded = []; + this.group.removeAll(); + }; + return LargeSymbolDraw; + }(); + + var ScatterView = /** @class */function (_super) { + __extends(ScatterView, _super); + function ScatterView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ScatterView.type; + return _this; + } + ScatterView.prototype.render = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var symbolDraw = this._updateSymbolDraw(data, seriesModel); + symbolDraw.updateData(data, { + // TODO + // If this parameter should be a shape or a bounding volume + // shape will be more general. + // But bounding volume like bounding rect will be much faster in the contain calculation + clipShape: this._getClipShape(seriesModel) + }); + this._finished = true; + }; + ScatterView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var symbolDraw = this._updateSymbolDraw(data, seriesModel); + symbolDraw.incrementalPrepareUpdate(data); + this._finished = false; + }; + ScatterView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) { + this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), { + clipShape: this._getClipShape(seriesModel) + }); + this._finished = taskParams.end === seriesModel.getData().count(); + }; + ScatterView.prototype.updateTransform = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + // Must mark group dirty and make sure the incremental layer will be cleared + // PENDING + this.group.dirty(); + if (!this._finished || data.count() > 1e4) { + return { + update: true + }; + } else { + var res = pointsLayout('').reset(seriesModel, ecModel, api); + if (res.progress) { + res.progress({ + start: 0, + end: data.count(), + count: data.count() + }, data); + } + this._symbolDraw.updateLayout(data); + } + }; + ScatterView.prototype.eachRendered = function (cb) { + this._symbolDraw && this._symbolDraw.eachRendered(cb); + }; + ScatterView.prototype._getClipShape = function (seriesModel) { + if (!seriesModel.get('clip', true)) { + return; + } + var coordSys = seriesModel.coordinateSystem; + // PENDING make `0.1` configurable, for example, `clipTolerance`? + return coordSys && coordSys.getArea && coordSys.getArea(.1); + }; + ScatterView.prototype._updateSymbolDraw = function (data, seriesModel) { + var symbolDraw = this._symbolDraw; + var pipelineContext = seriesModel.pipelineContext; + var isLargeDraw = pipelineContext.large; + if (!symbolDraw || isLargeDraw !== this._isLargeDraw) { + symbolDraw && symbolDraw.remove(); + symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw() : new SymbolDraw(); + this._isLargeDraw = isLargeDraw; + this.group.removeAll(); + } + this.group.add(symbolDraw.group); + return symbolDraw; + }; + ScatterView.prototype.remove = function (ecModel, api) { + this._symbolDraw && this._symbolDraw.remove(true); + this._symbolDraw = null; + }; + ScatterView.prototype.dispose = function () {}; + ScatterView.type = 'scatter'; + return ScatterView; + }(ChartView); + + var GridModel = /** @class */function (_super) { + __extends(GridModel, _super); + function GridModel() { + return _super !== null && _super.apply(this, arguments) || this; + } + GridModel.type = 'grid'; + GridModel.dependencies = ['xAxis', 'yAxis']; + GridModel.layoutMode = 'box'; + GridModel.defaultOption = { + show: false, + // zlevel: 0, + z: 0, + left: '10%', + top: 60, + right: '10%', + bottom: 70, + // If grid size contain label + containLabel: false, + // width: {totalWidth} - left - right, + // height: {totalHeight} - top - bottom, + backgroundColor: 'rgba(0,0,0,0)', + borderWidth: 1, + borderColor: '#ccc' + }; + return GridModel; + }(ComponentModel); + + var CartesianAxisModel = /** @class */function (_super) { + __extends(CartesianAxisModel, _super); + function CartesianAxisModel() { + return _super !== null && _super.apply(this, arguments) || this; + } + CartesianAxisModel.prototype.getCoordSysModel = function () { + return this.getReferringComponents('grid', SINGLE_REFERRING).models[0]; + }; + CartesianAxisModel.type = 'cartesian2dAxis'; + return CartesianAxisModel; + }(ComponentModel); + mixin(CartesianAxisModel, AxisModelCommonMixin); + + var defaultOption = { + show: true, + // zlevel: 0, + z: 0, + // Inverse the axis. + inverse: false, + // Axis name displayed. + name: '', + // 'start' | 'middle' | 'end' + nameLocation: 'end', + // By degree. By default auto rotate by nameLocation. + nameRotate: null, + nameTruncate: { + maxWidth: null, + ellipsis: '...', + placeholder: '.' + }, + // Use global text style by default. + nameTextStyle: {}, + // The gap between axisName and axisLine. + nameGap: 15, + // Default `false` to support tooltip. + silent: false, + // Default `false` to avoid legacy user event listener fail. + triggerEvent: false, + tooltip: { + show: false + }, + axisPointer: {}, + axisLine: { + show: true, + onZero: true, + onZeroAxisIndex: null, + lineStyle: { + color: '#6E7079', + width: 1, + type: 'solid' + }, + // The arrow at both ends the the axis. + symbol: ['none', 'none'], + symbolSize: [10, 15] + }, + axisTick: { + show: true, + // Whether axisTick is inside the grid or outside the grid. + inside: false, + // The length of axisTick. + length: 5, + lineStyle: { + width: 1 + } + }, + axisLabel: { + show: true, + // Whether axisLabel is inside the grid or outside the grid. + inside: false, + rotate: 0, + // true | false | null/undefined (auto) + showMinLabel: null, + // true | false | null/undefined (auto) + showMaxLabel: null, + margin: 8, + // formatter: null, + fontSize: 12 + }, + splitLine: { + show: true, + lineStyle: { + color: ['#E0E6F1'], + width: 1, + type: 'solid' + } + }, + splitArea: { + show: false, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'] + } + } + }; + var categoryAxis = merge({ + // The gap at both ends of the axis. For categoryAxis, boolean. + boundaryGap: true, + // Set false to faster category collection. + deduplication: null, + // splitArea: { + // show: false + // }, + splitLine: { + show: false + }, + axisTick: { + // If tick is align with label when boundaryGap is true + alignWithLabel: false, + interval: 'auto' + }, + axisLabel: { + interval: 'auto' + } + }, defaultOption); + var valueAxis = merge({ + boundaryGap: [0, 0], + axisLine: { + // Not shown when other axis is categoryAxis in cartesian + show: 'auto' + }, + axisTick: { + // Not shown when other axis is categoryAxis in cartesian + show: 'auto' + }, + // TODO + // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60] + splitNumber: 5, + minorTick: { + // Minor tick, not available for cateogry axis. + show: false, + // Split number of minor ticks. The value should be in range of (0, 100) + splitNumber: 5, + // Length of minor tick + length: 3, + // Line style + lineStyle: { + // Default to be same with axisTick + } + }, + minorSplitLine: { + show: false, + lineStyle: { + color: '#F4F7FD', + width: 1 + } + } + }, defaultOption); + var timeAxis = merge({ + splitNumber: 6, + axisLabel: { + // To eliminate labels that are not nice + showMinLabel: false, + showMaxLabel: false, + rich: { + primary: { + fontWeight: 'bold' + } + } + }, + splitLine: { + show: false + } + }, valueAxis); + var logAxis = defaults({ + logBase: 10 + }, valueAxis); + var axisDefault = { + category: categoryAxis, + value: valueAxis, + time: timeAxis, + log: logAxis + }; + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var AXIS_TYPES = { + value: 1, + category: 1, + time: 1, + log: 1 + }; + + /** + * Generate sub axis model class + * @param axisName 'x' 'y' 'radius' 'angle' 'parallel' ... + */ + function axisModelCreator(registers, axisName, BaseAxisModelClass, extraDefaultOption) { + each(AXIS_TYPES, function (v, axisType) { + var defaultOption = merge(merge({}, axisDefault[axisType], true), extraDefaultOption, true); + var AxisModel = /** @class */function (_super) { + __extends(AxisModel, _super); + function AxisModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = axisName + 'Axis.' + axisType; + return _this; + } + AxisModel.prototype.mergeDefaultAndTheme = function (option, ecModel) { + var layoutMode = fetchLayoutMode(this); + var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; + var themeModel = ecModel.getTheme(); + merge(option, themeModel.get(axisType + 'Axis')); + merge(option, this.getDefaultOption()); + option.type = getAxisType(option); + if (layoutMode) { + mergeLayoutParam(option, inputPositionParams, layoutMode); + } + }; + AxisModel.prototype.optionUpdated = function () { + var thisOption = this.option; + if (thisOption.type === 'category') { + this.__ordinalMeta = OrdinalMeta.createByAxisModel(this); + } + }; + /** + * Should not be called before all of 'getInitailData' finished. + * Because categories are collected during initializing data. + */ + AxisModel.prototype.getCategories = function (rawData) { + var option = this.option; + // FIXME + // warning if called before all of 'getInitailData' finished. + if (option.type === 'category') { + if (rawData) { + return option.data; + } + return this.__ordinalMeta.categories; + } + }; + AxisModel.prototype.getOrdinalMeta = function () { + return this.__ordinalMeta; + }; + AxisModel.type = axisName + 'Axis.' + axisType; + AxisModel.defaultOption = defaultOption; + return AxisModel; + }(BaseAxisModelClass); + registers.registerComponentModel(AxisModel); + }); + registers.registerSubTypeDefaulter(axisName + 'Axis', getAxisType); + } + function getAxisType(option) { + // Default axis with data is category axis + return option.type || (option.data ? 'category' : 'value'); + } + + var Cartesian = /** @class */function () { + function Cartesian(name) { + this.type = 'cartesian'; + this._dimList = []; + this._axes = {}; + this.name = name || ''; + } + Cartesian.prototype.getAxis = function (dim) { + return this._axes[dim]; + }; + Cartesian.prototype.getAxes = function () { + return map(this._dimList, function (dim) { + return this._axes[dim]; + }, this); + }; + Cartesian.prototype.getAxesByScale = function (scaleType) { + scaleType = scaleType.toLowerCase(); + return filter(this.getAxes(), function (axis) { + return axis.scale.type === scaleType; + }); + }; + Cartesian.prototype.addAxis = function (axis) { + var dim = axis.dim; + this._axes[dim] = axis; + this._dimList.push(dim); + }; + return Cartesian; + }(); + + var cartesian2DDimensions = ['x', 'y']; + function canCalculateAffineTransform(scale) { + return scale.type === 'interval' || scale.type === 'time'; + } + var Cartesian2D = /** @class */function (_super) { + __extends(Cartesian2D, _super); + function Cartesian2D() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = 'cartesian2d'; + _this.dimensions = cartesian2DDimensions; + return _this; + } + /** + * Calculate an affine transform matrix if two axes are time or value. + * It's mainly for accelartion on the large time series data. + */ + Cartesian2D.prototype.calcAffineTransform = function () { + this._transform = this._invTransform = null; + var xAxisScale = this.getAxis('x').scale; + var yAxisScale = this.getAxis('y').scale; + if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) { + return; + } + var xScaleExtent = xAxisScale.getExtent(); + var yScaleExtent = yAxisScale.getExtent(); + var start = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]); + var end = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]); + var xScaleSpan = xScaleExtent[1] - xScaleExtent[0]; + var yScaleSpan = yScaleExtent[1] - yScaleExtent[0]; + if (!xScaleSpan || !yScaleSpan) { + return; + } + // Accelerate data to point calculation on the special large time series data. + var scaleX = (end[0] - start[0]) / xScaleSpan; + var scaleY = (end[1] - start[1]) / yScaleSpan; + var translateX = start[0] - xScaleExtent[0] * scaleX; + var translateY = start[1] - yScaleExtent[0] * scaleY; + var m = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY]; + this._invTransform = invert([], m); + }; + /** + * Base axis will be used on stacking. + */ + Cartesian2D.prototype.getBaseAxis = function () { + return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAxis('x'); + }; + Cartesian2D.prototype.containPoint = function (point) { + var axisX = this.getAxis('x'); + var axisY = this.getAxis('y'); + return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1])); + }; + Cartesian2D.prototype.containData = function (data) { + return this.getAxis('x').containData(data[0]) && this.getAxis('y').containData(data[1]); + }; + Cartesian2D.prototype.containZone = function (data1, data2) { + var zoneDiag1 = this.dataToPoint(data1); + var zoneDiag2 = this.dataToPoint(data2); + var area = this.getArea(); + var zone = new BoundingRect(zoneDiag1[0], zoneDiag1[1], zoneDiag2[0] - zoneDiag1[0], zoneDiag2[1] - zoneDiag1[1]); + return area.intersect(zone); + }; + Cartesian2D.prototype.dataToPoint = function (data, clamp, out) { + out = out || []; + var xVal = data[0]; + var yVal = data[1]; + // Fast path + if (this._transform + // It's supported that if data is like `[Inifity, 123]`, where only Y pixel calculated. + && xVal != null && isFinite(xVal) && yVal != null && isFinite(yVal)) { + return applyTransform(out, data, this._transform); + } + var xAxis = this.getAxis('x'); + var yAxis = this.getAxis('y'); + out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal, clamp)); + out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal, clamp)); + return out; + }; + Cartesian2D.prototype.clampData = function (data, out) { + var xScale = this.getAxis('x').scale; + var yScale = this.getAxis('y').scale; + var xAxisExtent = xScale.getExtent(); + var yAxisExtent = yScale.getExtent(); + var x = xScale.parse(data[0]); + var y = yScale.parse(data[1]); + out = out || []; + out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1])); + out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1])); + return out; + }; + Cartesian2D.prototype.pointToData = function (point, clamp) { + var out = []; + if (this._invTransform) { + return applyTransform(out, point, this._invTransform); + } + var xAxis = this.getAxis('x'); + var yAxis = this.getAxis('y'); + out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp); + out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp); + return out; + }; + Cartesian2D.prototype.getOtherAxis = function (axis) { + return this.getAxis(axis.dim === 'x' ? 'y' : 'x'); + }; + /** + * Get rect area of cartesian. + * Area will have a contain function to determine if a point is in the coordinate system. + */ + Cartesian2D.prototype.getArea = function (tolerance) { + tolerance = tolerance || 0; + var xExtent = this.getAxis('x').getGlobalExtent(); + var yExtent = this.getAxis('y').getGlobalExtent(); + var x = Math.min(xExtent[0], xExtent[1]) - tolerance; + var y = Math.min(yExtent[0], yExtent[1]) - tolerance; + var width = Math.max(xExtent[0], xExtent[1]) - x + tolerance; + var height = Math.max(yExtent[0], yExtent[1]) - y + tolerance; + return new BoundingRect(x, y, width, height); + }; + return Cartesian2D; + }(Cartesian); + + var Axis2D = /** @class */function (_super) { + __extends(Axis2D, _super); + function Axis2D(dim, scale, coordExtent, axisType, position) { + var _this = _super.call(this, dim, scale, coordExtent) || this; + /** + * Index of axis, can be used as key + * Injected outside. + */ + _this.index = 0; + _this.type = axisType || 'value'; + _this.position = position || 'bottom'; + return _this; + } + Axis2D.prototype.isHorizontal = function () { + var position = this.position; + return position === 'top' || position === 'bottom'; + }; + /** + * Each item cooresponds to this.getExtent(), which + * means globalExtent[0] may greater than globalExtent[1], + * unless `asc` is input. + * + * @param {boolean} [asc] + * @return {Array.} + */ + Axis2D.prototype.getGlobalExtent = function (asc) { + var ret = this.getExtent(); + ret[0] = this.toGlobalCoord(ret[0]); + ret[1] = this.toGlobalCoord(ret[1]); + asc && ret[0] > ret[1] && ret.reverse(); + return ret; + }; + Axis2D.prototype.pointToData = function (point, clamp) { + return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp); + }; + /** + * Set ordinalSortInfo + * @param info new OrdinalSortInfo + */ + Axis2D.prototype.setCategorySortInfo = function (info) { + if (this.type !== 'category') { + return false; + } + this.model.option.categorySortInfo = info; + this.scale.setSortInfo(info); + }; + return Axis2D; + }(Axis); + + /** + * Can only be called after coordinate system creation stage. + * (Can be called before coordinate system update stage). + */ + function layout$1(gridModel, axisModel, opt) { + opt = opt || {}; + var grid = gridModel.coordinateSystem; + var axis = axisModel.axis; + var layout = {}; + var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0]; + var rawAxisPosition = axis.position; + var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition; + var axisDim = axis.dim; + var rect = grid.getRect(); + var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; + var idx = { + left: 0, + right: 1, + top: 0, + bottom: 1, + onZero: 2 + }; + var axisOffset = axisModel.get('offset') || 0; + var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset]; + if (otherAxisOnZeroOf) { + var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0)); + posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]); + } + // Axis position + layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; + // Axis rotation + layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); + // Tick and label direction, x y is axisDim + var dirMap = { + top: -1, + bottom: 1, + left: -1, + right: 1 + }; + layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition]; + layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0; + if (axisModel.get(['axisTick', 'inside'])) { + layout.tickDirection = -layout.tickDirection; + } + if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) { + layout.labelDirection = -layout.labelDirection; + } + // Special label rotation + var labelRotate = axisModel.get(['axisLabel', 'rotate']); + layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; + // Over splitLine and splitArea + layout.z2 = 1; + return layout; + } + function isCartesian2DSeries(seriesModel) { + return seriesModel.get('coordinateSystem') === 'cartesian2d'; + } + function findAxisModels(seriesModel) { + var axisModelMap = { + xAxisModel: null, + yAxisModel: null + }; + each(axisModelMap, function (v, key) { + var axisType = key.replace(/Model$/, ''); + var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0]; + if ("development" !== 'production') { + if (!axisModel) { + throw new Error(axisType + ' "' + retrieve3(seriesModel.get(axisType + 'Index'), seriesModel.get(axisType + 'Id'), 0) + '" not found'); + } + } + axisModelMap[key] = axisModel; + }); + return axisModelMap; + } + + var mathLog$1 = Math.log; + function alignScaleTicks(scale, axisModel, alignToScale) { + var intervalScaleProto = IntervalScale.prototype; + // NOTE: There is a precondition for log scale here: + // In log scale we store _interval and _extent of exponent value. + // So if we use the method of InternalScale to set/get these data. + // It process the exponent value, which is linear and what we want here. + var alignToTicks = intervalScaleProto.getTicks.call(alignToScale); + var alignToNicedTicks = intervalScaleProto.getTicks.call(alignToScale, true); + var alignToSplitNumber = alignToTicks.length - 1; + var alignToInterval = intervalScaleProto.getInterval.call(alignToScale); + var scaleExtent = getScaleExtent(scale, axisModel); + var rawExtent = scaleExtent.extent; + var isMinFixed = scaleExtent.fixMin; + var isMaxFixed = scaleExtent.fixMax; + if (scale.type === 'log') { + var logBase = mathLog$1(scale.base); + rawExtent = [mathLog$1(rawExtent[0]) / logBase, mathLog$1(rawExtent[1]) / logBase]; + } + scale.setExtent(rawExtent[0], rawExtent[1]); + scale.calcNiceExtent({ + splitNumber: alignToSplitNumber, + fixMin: isMinFixed, + fixMax: isMaxFixed + }); + var extent = intervalScaleProto.getExtent.call(scale); + // Need to update the rawExtent. + // Because value in rawExtent may be not parsed. e.g. 'dataMin', 'dataMax' + if (isMinFixed) { + rawExtent[0] = extent[0]; + } + if (isMaxFixed) { + rawExtent[1] = extent[1]; + } + var interval = intervalScaleProto.getInterval.call(scale); + var min = rawExtent[0]; + var max = rawExtent[1]; + if (isMinFixed && isMaxFixed) { + // User set min, max, divide to get new interval + interval = (max - min) / alignToSplitNumber; + } else if (isMinFixed) { + max = rawExtent[0] + interval * alignToSplitNumber; + // User set min, expand extent on the other side + while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1])) { + interval = increaseInterval(interval); + max = rawExtent[0] + interval * alignToSplitNumber; + } + } else if (isMaxFixed) { + // User set max, expand extent on the other side + min = rawExtent[1] - interval * alignToSplitNumber; + while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0])) { + interval = increaseInterval(interval); + min = rawExtent[1] - interval * alignToSplitNumber; + } + } else { + var nicedSplitNumber = scale.getTicks().length - 1; + if (nicedSplitNumber > alignToSplitNumber) { + interval = increaseInterval(interval); + } + var range = interval * alignToSplitNumber; + max = Math.ceil(rawExtent[1] / interval) * interval; + min = round(max - range); + // Not change the result that crossing zero. + if (min < 0 && rawExtent[0] >= 0) { + min = 0; + max = round(range); + } else if (max > 0 && rawExtent[1] <= 0) { + max = 0; + min = -round(range); + } + } + // Adjust min, max based on the extent of alignTo. When min or max is set in alignTo scale + var t0 = (alignToTicks[0].value - alignToNicedTicks[0].value) / alignToInterval; + var t1 = (alignToTicks[alignToSplitNumber].value - alignToNicedTicks[alignToSplitNumber].value) / alignToInterval; + // NOTE: Must in setExtent -> setInterval -> setNiceExtent order. + intervalScaleProto.setExtent.call(scale, min + interval * t0, max + interval * t1); + intervalScaleProto.setInterval.call(scale, interval); + if (t0 || t1) { + intervalScaleProto.setNiceExtent.call(scale, min + interval, max - interval); + } + if ("development" !== 'production') { + var ticks = intervalScaleProto.getTicks.call(scale); + if (ticks[1] && (!isValueNice(interval) || getPrecisionSafe(ticks[1].value) > getPrecisionSafe(interval))) { + warn( + // eslint-disable-next-line + "The ticks may be not readable when set min: " + axisModel.get('min') + ", max: " + axisModel.get('max') + " and alignTicks: true"); + } + } + } + + var Grid = /** @class */function () { + function Grid(gridModel, ecModel, api) { + // FIXME:TS where used (different from registered type 'cartesian2d')? + this.type = 'grid'; + this._coordsMap = {}; + this._coordsList = []; + this._axesMap = {}; + this._axesList = []; + this.axisPointerEnabled = true; + this.dimensions = cartesian2DDimensions; + this._initCartesian(gridModel, ecModel, api); + this.model = gridModel; + } + Grid.prototype.getRect = function () { + return this._rect; + }; + Grid.prototype.update = function (ecModel, api) { + var axesMap = this._axesMap; + this._updateScale(ecModel, this.model); + function updateAxisTicks(axes) { + var alignTo; + // Axis is added in order of axisIndex. + var axesIndices = keys(axes); + var len = axesIndices.length; + if (!len) { + return; + } + var axisNeedsAlign = []; + // Process once and calculate the ticks for those don't use alignTicks. + for (var i = len - 1; i >= 0; i--) { + var idx = +axesIndices[i]; // Convert to number. + var axis = axes[idx]; + var model = axis.model; + var scale = axis.scale; + if ( + // Only value and log axis without interval support alignTicks. + isIntervalOrLogScale(scale) && model.get('alignTicks') && model.get('interval') == null) { + axisNeedsAlign.push(axis); + } else { + niceScaleExtent(scale, model); + if (isIntervalOrLogScale(scale)) { + // Can only align to interval or log axis. + alignTo = axis; + } + } + } + // All axes has set alignTicks. Pick the first one. + // PENDING. Should we find the axis that both set interval, min, max and align to this one? + if (axisNeedsAlign.length) { + if (!alignTo) { + alignTo = axisNeedsAlign.pop(); + niceScaleExtent(alignTo.scale, alignTo.model); + } + each(axisNeedsAlign, function (axis) { + alignScaleTicks(axis.scale, axis.model, alignTo.scale); + }); + } + } + updateAxisTicks(axesMap.x); + updateAxisTicks(axesMap.y); + // Key: axisDim_axisIndex, value: boolean, whether onZero target. + var onZeroRecords = {}; + each(axesMap.x, function (xAxis) { + fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords); + }); + each(axesMap.y, function (yAxis) { + fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords); + }); + // Resize again if containLabel is enabled + // FIXME It may cause getting wrong grid size in data processing stage + this.resize(this.model, api); + }; + /** + * Resize the grid + */ + Grid.prototype.resize = function (gridModel, api, ignoreContainLabel) { + var boxLayoutParams = gridModel.getBoxLayoutParams(); + var isContainLabel = !ignoreContainLabel && gridModel.get('containLabel'); + var gridRect = getLayoutRect(boxLayoutParams, { + width: api.getWidth(), + height: api.getHeight() + }); + this._rect = gridRect; + var axesList = this._axesList; + adjustAxes(); + // Minus label size + if (isContainLabel) { + each(axesList, function (axis) { + if (!axis.model.get(['axisLabel', 'inside'])) { + var labelUnionRect = estimateLabelUnionRect(axis); + if (labelUnionRect) { + var dim = axis.isHorizontal() ? 'height' : 'width'; + var margin = axis.model.get(['axisLabel', 'margin']); + gridRect[dim] -= labelUnionRect[dim] + margin; + if (axis.position === 'top') { + gridRect.y += labelUnionRect.height + margin; + } else if (axis.position === 'left') { + gridRect.x += labelUnionRect.width + margin; + } + } + } + }); + adjustAxes(); + } + each(this._coordsList, function (coord) { + // Calculate affine matrix to accelerate the data to point transform. + // If all the axes scales are time or value. + coord.calcAffineTransform(); + }); + function adjustAxes() { + each(axesList, function (axis) { + var isHorizontal = axis.isHorizontal(); + var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height]; + var idx = axis.inverse ? 1 : 0; + axis.setExtent(extent[idx], extent[1 - idx]); + updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y); + }); + } + }; + Grid.prototype.getAxis = function (dim, axisIndex) { + var axesMapOnDim = this._axesMap[dim]; + if (axesMapOnDim != null) { + return axesMapOnDim[axisIndex || 0]; + } + }; + Grid.prototype.getAxes = function () { + return this._axesList.slice(); + }; + Grid.prototype.getCartesian = function (xAxisIndex, yAxisIndex) { + if (xAxisIndex != null && yAxisIndex != null) { + var key = 'x' + xAxisIndex + 'y' + yAxisIndex; + return this._coordsMap[key]; + } + if (isObject(xAxisIndex)) { + yAxisIndex = xAxisIndex.yAxisIndex; + xAxisIndex = xAxisIndex.xAxisIndex; + } + for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) { + if (coordList[i].getAxis('x').index === xAxisIndex || coordList[i].getAxis('y').index === yAxisIndex) { + return coordList[i]; + } + } + }; + Grid.prototype.getCartesians = function () { + return this._coordsList.slice(); + }; + /** + * @implements + */ + Grid.prototype.convertToPixel = function (ecModel, finder, value) { + var target = this._findConvertTarget(finder); + return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null; + }; + /** + * @implements + */ + Grid.prototype.convertFromPixel = function (ecModel, finder, value) { + var target = this._findConvertTarget(finder); + return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null; + }; + Grid.prototype._findConvertTarget = function (finder) { + var seriesModel = finder.seriesModel; + var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0]; + var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0]; + var gridModel = finder.gridModel; + var coordsList = this._coordsList; + var cartesian; + var axis; + if (seriesModel) { + cartesian = seriesModel.coordinateSystem; + indexOf(coordsList, cartesian) < 0 && (cartesian = null); + } else if (xAxisModel && yAxisModel) { + cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); + } else if (xAxisModel) { + axis = this.getAxis('x', xAxisModel.componentIndex); + } else if (yAxisModel) { + axis = this.getAxis('y', yAxisModel.componentIndex); + } + // Lowest priority. + else if (gridModel) { + var grid = gridModel.coordinateSystem; + if (grid === this) { + cartesian = this._coordsList[0]; + } + } + return { + cartesian: cartesian, + axis: axis + }; + }; + /** + * @implements + */ + Grid.prototype.containPoint = function (point) { + var coord = this._coordsList[0]; + if (coord) { + return coord.containPoint(point); + } + }; + /** + * Initialize cartesian coordinate systems + */ + Grid.prototype._initCartesian = function (gridModel, ecModel, api) { + var _this = this; + var grid = this; + var axisPositionUsed = { + left: false, + right: false, + top: false, + bottom: false + }; + var axesMap = { + x: {}, + y: {} + }; + var axesCount = { + x: 0, + y: 0 + }; + // Create axis + ecModel.eachComponent('xAxis', createAxisCreator('x'), this); + ecModel.eachComponent('yAxis', createAxisCreator('y'), this); + if (!axesCount.x || !axesCount.y) { + // Roll back when there no either x or y axis + this._axesMap = {}; + this._axesList = []; + return; + } + this._axesMap = axesMap; + // Create cartesian2d + each(axesMap.x, function (xAxis, xAxisIndex) { + each(axesMap.y, function (yAxis, yAxisIndex) { + var key = 'x' + xAxisIndex + 'y' + yAxisIndex; + var cartesian = new Cartesian2D(key); + cartesian.master = _this; + cartesian.model = gridModel; + _this._coordsMap[key] = cartesian; + _this._coordsList.push(cartesian); + cartesian.addAxis(xAxis); + cartesian.addAxis(yAxis); + }); + }); + function createAxisCreator(dimName) { + return function (axisModel, idx) { + if (!isAxisUsedInTheGrid(axisModel, gridModel)) { + return; + } + var axisPosition = axisModel.get('position'); + if (dimName === 'x') { + // Fix position + if (axisPosition !== 'top' && axisPosition !== 'bottom') { + // Default bottom of X + axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom'; + } + } else { + // Fix position + if (axisPosition !== 'left' && axisPosition !== 'right') { + // Default left of Y + axisPosition = axisPositionUsed.left ? 'right' : 'left'; + } + } + axisPositionUsed[axisPosition] = true; + var axis = new Axis2D(dimName, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition); + var isCategory = axis.type === 'category'; + axis.onBand = isCategory && axisModel.get('boundaryGap'); + axis.inverse = axisModel.get('inverse'); + // Inject axis into axisModel + axisModel.axis = axis; + // Inject axisModel into axis + axis.model = axisModel; + // Inject grid info axis + axis.grid = grid; + // Index of axis, can be used as key + axis.index = idx; + grid._axesList.push(axis); + axesMap[dimName][idx] = axis; + axesCount[dimName]++; + }; + } + }; + /** + * Update cartesian properties from series. + */ + Grid.prototype._updateScale = function (ecModel, gridModel) { + // Reset scale + each(this._axesList, function (axis) { + axis.scale.setExtent(Infinity, -Infinity); + if (axis.type === 'category') { + var categorySortInfo = axis.model.get('categorySortInfo'); + axis.scale.setSortInfo(categorySortInfo); + } + }); + ecModel.eachSeries(function (seriesModel) { + if (isCartesian2DSeries(seriesModel)) { + var axesModelMap = findAxisModels(seriesModel); + var xAxisModel = axesModelMap.xAxisModel; + var yAxisModel = axesModelMap.yAxisModel; + if (!isAxisUsedInTheGrid(xAxisModel, gridModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel)) { + return; + } + var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); + var data = seriesModel.getData(); + var xAxis = cartesian.getAxis('x'); + var yAxis = cartesian.getAxis('y'); + unionExtent(data, xAxis); + unionExtent(data, yAxis); + } + }, this); + function unionExtent(data, axis) { + each(getDataDimensionsOnAxis(data, axis.dim), function (dim) { + axis.scale.unionExtentFromData(data, dim); + }); + } + }; + /** + * @param dim 'x' or 'y' or 'auto' or null/undefined + */ + Grid.prototype.getTooltipAxes = function (dim) { + var baseAxes = []; + var otherAxes = []; + each(this.getCartesians(), function (cartesian) { + var baseAxis = dim != null && dim !== 'auto' ? cartesian.getAxis(dim) : cartesian.getBaseAxis(); + var otherAxis = cartesian.getOtherAxis(baseAxis); + indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis); + indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis); + }); + return { + baseAxes: baseAxes, + otherAxes: otherAxes + }; + }; + Grid.create = function (ecModel, api) { + var grids = []; + ecModel.eachComponent('grid', function (gridModel, idx) { + var grid = new Grid(gridModel, ecModel, api); + grid.name = 'grid_' + idx; + // dataSampling requires axis extent, so resize + // should be performed in create stage. + grid.resize(gridModel, api, true); + gridModel.coordinateSystem = grid; + grids.push(grid); + }); + // Inject the coordinateSystems into seriesModel + ecModel.eachSeries(function (seriesModel) { + if (!isCartesian2DSeries(seriesModel)) { + return; + } + var axesModelMap = findAxisModels(seriesModel); + var xAxisModel = axesModelMap.xAxisModel; + var yAxisModel = axesModelMap.yAxisModel; + var gridModel = xAxisModel.getCoordSysModel(); + if ("development" !== 'production') { + if (!gridModel) { + throw new Error('Grid "' + retrieve3(xAxisModel.get('gridIndex'), xAxisModel.get('gridId'), 0) + '" not found'); + } + if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) { + throw new Error('xAxis and yAxis must use the same grid'); + } + } + var grid = gridModel.coordinateSystem; + seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); + }); + return grids; + }; + // For deciding which dimensions to use when creating list data + Grid.dimensions = cartesian2DDimensions; + return Grid; + }(); + /** + * Check if the axis is used in the specified grid. + */ + function isAxisUsedInTheGrid(axisModel, gridModel) { + return axisModel.getCoordSysModel() === gridModel; + } + function fixAxisOnZero(axesMap, otherAxisDim, axis, + // Key: see `getOnZeroRecordKey` + onZeroRecords) { + axis.getAxesOnZeroOf = function () { + // TODO: onZero of multiple axes. + return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : []; + }; + // onZero can not be enabled in these two situations: + // 1. When any other axis is a category axis. + // 2. When no axis is cross 0 point. + var otherAxes = axesMap[otherAxisDim]; + var otherAxisOnZeroOf; + var axisModel = axis.model; + var onZero = axisModel.get(['axisLine', 'onZero']); + var onZeroAxisIndex = axisModel.get(['axisLine', 'onZeroAxisIndex']); + if (!onZero) { + return; + } + // If target axis is specified. + if (onZeroAxisIndex != null) { + if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) { + otherAxisOnZeroOf = otherAxes[onZeroAxisIndex]; + } + } else { + // Find the first available other axis. + for (var idx in otherAxes) { + if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) + // Consider that two Y axes on one value axis, + // if both onZero, the two Y axes overlap. + && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) { + otherAxisOnZeroOf = otherAxes[idx]; + break; + } + } + } + if (otherAxisOnZeroOf) { + onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true; + } + function getOnZeroRecordKey(axis) { + return axis.dim + '_' + axis.index; + } + } + function canOnZeroToAxis(axis) { + return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis); + } + function updateAxisTransform(axis, coordBase) { + var axisExtent = axis.getExtent(); + var axisExtentSum = axisExtent[0] + axisExtent[1]; + // Fast transform + axis.toGlobalCoord = axis.dim === 'x' ? function (coord) { + return coord + coordBase; + } : function (coord) { + return axisExtentSum - coord + coordBase; + }; + axis.toLocalCoord = axis.dim === 'x' ? function (coord) { + return coord - coordBase; + } : function (coord) { + return axisExtentSum - coord + coordBase; + }; + } + + var PI$5 = Math.PI; + /** + * A final axis is translated and rotated from a "standard axis". + * So opt.position and opt.rotation is required. + * + * A standard axis is and axis from [0, 0] to [0, axisExtent[1]], + * for example: (0, 0) ------------> (0, 50) + * + * nameDirection or tickDirection or labelDirection is 1 means tick + * or label is below the standard axis, whereas is -1 means above + * the standard axis. labelOffset means offset between label and axis, + * which is useful when 'onZero', where axisLabel is in the grid and + * label in outside grid. + * + * Tips: like always, + * positive rotation represents anticlockwise, and negative rotation + * represents clockwise. + * The direction of position coordinate is the same as the direction + * of screen coordinate. + * + * Do not need to consider axis 'inverse', which is auto processed by + * axis extent. + */ + var AxisBuilder = /** @class */function () { + function AxisBuilder(axisModel, opt) { + this.group = new Group(); + this.opt = opt; + this.axisModel = axisModel; + // Default value + defaults(opt, { + labelOffset: 0, + nameDirection: 1, + tickDirection: 1, + labelDirection: 1, + silent: true, + handleAutoShown: function () { + return true; + } + }); + // FIXME Not use a separate text group? + var transformGroup = new Group({ + x: opt.position[0], + y: opt.position[1], + rotation: opt.rotation + }); + // this.group.add(transformGroup); + // this._transformGroup = transformGroup; + transformGroup.updateTransform(); + this._transformGroup = transformGroup; + } + AxisBuilder.prototype.hasBuilder = function (name) { + return !!builders[name]; + }; + AxisBuilder.prototype.add = function (name) { + builders[name](this.opt, this.axisModel, this.group, this._transformGroup); + }; + AxisBuilder.prototype.getGroup = function () { + return this.group; + }; + AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) { + var rotationDiff = remRadian(textRotation - axisRotation); + var textAlign; + var textVerticalAlign; + if (isRadianAroundZero(rotationDiff)) { + // Label is parallel with axis line. + textVerticalAlign = direction > 0 ? 'top' : 'bottom'; + textAlign = 'center'; + } else if (isRadianAroundZero(rotationDiff - PI$5)) { + // Label is inverse parallel with axis line. + textVerticalAlign = direction > 0 ? 'bottom' : 'top'; + textAlign = 'center'; + } else { + textVerticalAlign = 'middle'; + if (rotationDiff > 0 && rotationDiff < PI$5) { + textAlign = direction > 0 ? 'right' : 'left'; + } else { + textAlign = direction > 0 ? 'left' : 'right'; + } + } + return { + rotation: rotationDiff, + textAlign: textAlign, + textVerticalAlign: textVerticalAlign + }; + }; + AxisBuilder.makeAxisEventDataBase = function (axisModel) { + var eventData = { + componentType: axisModel.mainType, + componentIndex: axisModel.componentIndex + }; + eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex; + return eventData; + }; + AxisBuilder.isLabelSilent = function (axisModel) { + var tooltipOpt = axisModel.get('tooltip'); + return axisModel.get('silent') + // Consider mouse cursor, add these restrictions. + || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show); + }; + return AxisBuilder; + }(); + var builders = { + axisLine: function (opt, axisModel, group, transformGroup) { + var shown = axisModel.get(['axisLine', 'show']); + if (shown === 'auto' && opt.handleAutoShown) { + shown = opt.handleAutoShown('axisLine'); + } + if (!shown) { + return; + } + var extent = axisModel.axis.getExtent(); + var matrix = transformGroup.transform; + var pt1 = [extent[0], 0]; + var pt2 = [extent[1], 0]; + var inverse = pt1[0] > pt2[0]; + if (matrix) { + applyTransform(pt1, pt1, matrix); + applyTransform(pt2, pt2, matrix); + } + var lineStyle = extend({ + lineCap: 'round' + }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle()); + var line = new Line({ + shape: { + x1: pt1[0], + y1: pt1[1], + x2: pt2[0], + y2: pt2[1] + }, + style: lineStyle, + strokeContainThreshold: opt.strokeContainThreshold || 5, + silent: true, + z2: 1 + }); + subPixelOptimizeLine$1(line.shape, line.style.lineWidth); + line.anid = 'line'; + group.add(line); + var arrows = axisModel.get(['axisLine', 'symbol']); + if (arrows != null) { + var arrowSize = axisModel.get(['axisLine', 'symbolSize']); + if (isString(arrows)) { + // Use the same arrow for start and end point + arrows = [arrows, arrows]; + } + if (isString(arrowSize) || isNumber(arrowSize)) { + // Use the same size for width and height + arrowSize = [arrowSize, arrowSize]; + } + var arrowOffset = normalizeSymbolOffset(axisModel.get(['axisLine', 'symbolOffset']) || 0, arrowSize); + var symbolWidth_1 = arrowSize[0]; + var symbolHeight_1 = arrowSize[1]; + each([{ + rotate: opt.rotation + Math.PI / 2, + offset: arrowOffset[0], + r: 0 + }, { + rotate: opt.rotation - Math.PI / 2, + offset: arrowOffset[1], + r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1])) + }], function (point, index) { + if (arrows[index] !== 'none' && arrows[index] != null) { + var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true); + // Calculate arrow position with offset + var r = point.r + point.offset; + var pt = inverse ? pt2 : pt1; + symbol.attr({ + rotation: point.rotate, + x: pt[0] + r * Math.cos(opt.rotation), + y: pt[1] - r * Math.sin(opt.rotation), + silent: true, + z2: 11 + }); + group.add(symbol); + } + }); + } + }, + axisTickLabel: function (opt, axisModel, group, transformGroup) { + var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt); + var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt); + fixMinMaxLabelShow(axisModel, labelEls, ticksEls); + buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection); + // This bit fixes the label overlap issue for the time chart. + // See https://github.com/apache/echarts/issues/14266 for more. + if (axisModel.get(['axisLabel', 'hideOverlap'])) { + var labelList = prepareLayoutList(map(labelEls, function (label) { + return { + label: label, + priority: label.z2, + defaultAttr: { + ignore: label.ignore + } + }; + })); + hideOverlap(labelList); + } + }, + axisName: function (opt, axisModel, group, transformGroup) { + var name = retrieve(opt.axisName, axisModel.get('name')); + if (!name) { + return; + } + var nameLocation = axisModel.get('nameLocation'); + var nameDirection = opt.nameDirection; + var textStyleModel = axisModel.getModel('nameTextStyle'); + var gap = axisModel.get('nameGap') || 0; + var extent = axisModel.axis.getExtent(); + var gapSignal = extent[0] > extent[1] ? -1 : 1; + var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, + // Reuse labelOffset. + isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0]; + var labelLayout; + var nameRotation = axisModel.get('nameRotate'); + if (nameRotation != null) { + nameRotation = nameRotation * PI$5 / 180; // To radian. + } + + var axisNameAvailableWidth; + if (isNameLocationCenter(nameLocation)) { + labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, + // Adapt to axis. + nameDirection); + } else { + labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent); + axisNameAvailableWidth = opt.axisNameAvailableWidth; + if (axisNameAvailableWidth != null) { + axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation)); + !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null); + } + } + var textFont = textStyleModel.getFont(); + var truncateOpt = axisModel.get('nameTruncate', true) || {}; + var ellipsis = truncateOpt.ellipsis; + var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); + var textEl = new ZRText({ + x: pos[0], + y: pos[1], + rotation: labelLayout.rotation, + silent: AxisBuilder.isLabelSilent(axisModel), + style: createTextStyle(textStyleModel, { + text: name, + font: textFont, + overflow: 'truncate', + width: maxWidth, + ellipsis: ellipsis, + fill: textStyleModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']), + align: textStyleModel.get('align') || labelLayout.textAlign, + verticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign + }), + z2: 1 + }); + setTooltipConfig({ + el: textEl, + componentModel: axisModel, + itemName: name + }); + textEl.__fullText = name; + // Id for animation + textEl.anid = 'name'; + if (axisModel.get('triggerEvent')) { + var eventData = AxisBuilder.makeAxisEventDataBase(axisModel); + eventData.targetType = 'axisName'; + eventData.name = name; + getECData(textEl).eventData = eventData; + } + // FIXME + transformGroup.add(textEl); + textEl.updateTransform(); + group.add(textEl); + textEl.decomposeTransform(); + } + }; + function endTextLayout(rotation, textPosition, textRotate, extent) { + var rotationDiff = remRadian(textRotate - rotation); + var textAlign; + var textVerticalAlign; + var inverse = extent[0] > extent[1]; + var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse; + if (isRadianAroundZero(rotationDiff - PI$5 / 2)) { + textVerticalAlign = onLeft ? 'bottom' : 'top'; + textAlign = 'center'; + } else if (isRadianAroundZero(rotationDiff - PI$5 * 1.5)) { + textVerticalAlign = onLeft ? 'top' : 'bottom'; + textAlign = 'center'; + } else { + textVerticalAlign = 'middle'; + if (rotationDiff < PI$5 * 1.5 && rotationDiff > PI$5 / 2) { + textAlign = onLeft ? 'left' : 'right'; + } else { + textAlign = onLeft ? 'right' : 'left'; + } + } + return { + rotation: rotationDiff, + textAlign: textAlign, + textVerticalAlign: textVerticalAlign + }; + } + function fixMinMaxLabelShow(axisModel, labelEls, tickEls) { + if (shouldShowAllLabels(axisModel.axis)) { + return; + } + // If min or max are user set, we need to check + // If the tick on min(max) are overlap on their neighbour tick + // If they are overlapped, we need to hide the min(max) tick label + var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']); + var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']); + // FIXME + // Have not consider onBand yet, where tick els is more than label els. + labelEls = labelEls || []; + tickEls = tickEls || []; + var firstLabel = labelEls[0]; + var nextLabel = labelEls[1]; + var lastLabel = labelEls[labelEls.length - 1]; + var prevLabel = labelEls[labelEls.length - 2]; + var firstTick = tickEls[0]; + var nextTick = tickEls[1]; + var lastTick = tickEls[tickEls.length - 1]; + var prevTick = tickEls[tickEls.length - 2]; + if (showMinLabel === false) { + ignoreEl(firstLabel); + ignoreEl(firstTick); + } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) { + if (showMinLabel) { + ignoreEl(nextLabel); + ignoreEl(nextTick); + } else { + ignoreEl(firstLabel); + ignoreEl(firstTick); + } + } + if (showMaxLabel === false) { + ignoreEl(lastLabel); + ignoreEl(lastTick); + } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) { + if (showMaxLabel) { + ignoreEl(prevLabel); + ignoreEl(prevTick); + } else { + ignoreEl(lastLabel); + ignoreEl(lastTick); + } + } + } + function ignoreEl(el) { + el && (el.ignore = true); + } + function isTwoLabelOverlapped(current, next) { + // current and next has the same rotation. + var firstRect = current && current.getBoundingRect().clone(); + var nextRect = next && next.getBoundingRect().clone(); + if (!firstRect || !nextRect) { + return; + } + // When checking intersect of two rotated labels, we use mRotationBack + // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`. + var mRotationBack = identity([]); + rotate(mRotationBack, mRotationBack, -current.rotation); + firstRect.applyTransform(mul$1([], mRotationBack, current.getLocalTransform())); + nextRect.applyTransform(mul$1([], mRotationBack, next.getLocalTransform())); + return firstRect.intersect(nextRect); + } + function isNameLocationCenter(nameLocation) { + return nameLocation === 'middle' || nameLocation === 'center'; + } + function createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) { + var tickEls = []; + var pt1 = []; + var pt2 = []; + for (var i = 0; i < ticksCoords.length; i++) { + var tickCoord = ticksCoords[i].coord; + pt1[0] = tickCoord; + pt1[1] = 0; + pt2[0] = tickCoord; + pt2[1] = tickEndCoord; + if (tickTransform) { + applyTransform(pt1, pt1, tickTransform); + applyTransform(pt2, pt2, tickTransform); + } + // Tick line, Not use group transform to have better line draw + var tickEl = new Line({ + shape: { + x1: pt1[0], + y1: pt1[1], + x2: pt2[0], + y2: pt2[1] + }, + style: tickLineStyle, + z2: 2, + autoBatch: true, + silent: true + }); + subPixelOptimizeLine$1(tickEl.shape, tickEl.style.lineWidth); + tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue; + tickEls.push(tickEl); + } + return tickEls; + } + function buildAxisMajorTicks(group, transformGroup, axisModel, opt) { + var axis = axisModel.axis; + var tickModel = axisModel.getModel('axisTick'); + var shown = tickModel.get('show'); + if (shown === 'auto' && opt.handleAutoShown) { + shown = opt.handleAutoShown('axisTick'); + } + if (!shown || axis.scale.isBlank()) { + return; + } + var lineStyleModel = tickModel.getModel('lineStyle'); + var tickEndCoord = opt.tickDirection * tickModel.get('length'); + var ticksCoords = axis.getTicksCoords(); + var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), { + stroke: axisModel.get(['axisLine', 'lineStyle', 'color']) + }), 'ticks'); + for (var i = 0; i < ticksEls.length; i++) { + group.add(ticksEls[i]); + } + return ticksEls; + } + function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) { + var axis = axisModel.axis; + var minorTickModel = axisModel.getModel('minorTick'); + if (!minorTickModel.get('show') || axis.scale.isBlank()) { + return; + } + var minorTicksCoords = axis.getMinorTicksCoords(); + if (!minorTicksCoords.length) { + return; + } + var lineStyleModel = minorTickModel.getModel('lineStyle'); + var tickEndCoord = tickDirection * minorTickModel.get('length'); + var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), { + stroke: axisModel.get(['axisLine', 'lineStyle', 'color']) + })); + for (var i = 0; i < minorTicksCoords.length; i++) { + var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i); + for (var k = 0; k < minorTicksEls.length; k++) { + group.add(minorTicksEls[k]); + } + } + } + function buildAxisLabel(group, transformGroup, axisModel, opt) { + var axis = axisModel.axis; + var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show'])); + if (!show || axis.scale.isBlank()) { + return; + } + var labelModel = axisModel.getModel('axisLabel'); + var labelMargin = labelModel.get('margin'); + var labels = axis.getViewLabels(); + // Special label rotate. + var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI$5 / 180; + var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection); + var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true); + var labelEls = []; + var silent = AxisBuilder.isLabelSilent(axisModel); + var triggerEvent = axisModel.get('triggerEvent'); + each(labels, function (labelItem, index) { + var tickValue = axis.scale.type === 'ordinal' ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue; + var formattedLabel = labelItem.formattedLabel; + var rawLabel = labelItem.rawLabel; + var itemLabelModel = labelModel; + if (rawCategoryData && rawCategoryData[tickValue]) { + var rawCategoryItem = rawCategoryData[tickValue]; + if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) { + itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel); + } + } + var textColor = itemLabelModel.getTextColor() || axisModel.get(['axisLine', 'lineStyle', 'color']); + var tickCoord = axis.dataToCoord(tickValue); + var align = itemLabelModel.getShallow('align', true) || labelLayout.textAlign; + var alignMin = retrieve2(itemLabelModel.getShallow('alignMinLabel', true), align); + var alignMax = retrieve2(itemLabelModel.getShallow('alignMaxLabel', true), align); + var verticalAlign = itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign; + var verticalAlignMin = retrieve2(itemLabelModel.getShallow('verticalAlignMinLabel', true), verticalAlign); + var verticalAlignMax = retrieve2(itemLabelModel.getShallow('verticalAlignMaxLabel', true), verticalAlign); + var textEl = new ZRText({ + x: tickCoord, + y: opt.labelOffset + opt.labelDirection * labelMargin, + rotation: labelLayout.rotation, + silent: silent, + z2: 10 + (labelItem.level || 0), + style: createTextStyle(itemLabelModel, { + text: formattedLabel, + align: index === 0 ? alignMin : index === labels.length - 1 ? alignMax : align, + verticalAlign: index === 0 ? verticalAlignMin : index === labels.length - 1 ? verticalAlignMax : verticalAlign, + fill: isFunction(textColor) ? textColor( + // (1) In category axis with data zoom, tick is not the original + // index of axis.data. So tick should not be exposed to user + // in category axis. + // (2) Compatible with previous version, which always use formatted label as + // input. But in interval scale the formatted label is like '223,445', which + // maked user replace ','. So we modify it to return original val but remain + // it as 'string' to avoid error in replacing. + axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor + }) + }); + textEl.anid = 'label_' + tickValue; + // Pack data for mouse event + if (triggerEvent) { + var eventData = AxisBuilder.makeAxisEventDataBase(axisModel); + eventData.targetType = 'axisLabel'; + eventData.value = rawLabel; + eventData.tickIndex = index; + if (axis.type === 'category') { + eventData.dataIndex = tickValue; + } + getECData(textEl).eventData = eventData; + } + // FIXME + transformGroup.add(textEl); + textEl.updateTransform(); + labelEls.push(textEl); + group.add(textEl); + textEl.decomposeTransform(); + }); + return labelEls; + } + + // Build axisPointerModel, mergin tooltip.axisPointer model for each axis. + // allAxesInfo should be updated when setOption performed. + function collect(ecModel, api) { + var result = { + /** + * key: makeKey(axis.model) + * value: { + * axis, + * coordSys, + * axisPointerModel, + * triggerTooltip, + * triggerEmphasis, + * involveSeries, + * snap, + * seriesModels, + * seriesDataCount + * } + */ + axesInfo: {}, + seriesInvolved: false, + /** + * key: makeKey(coordSys.model) + * value: Object: key makeKey(axis.model), value: axisInfo + */ + coordSysAxesInfo: {}, + coordSysMap: {} + }; + collectAxesInfo(result, ecModel, api); + // Check seriesInvolved for performance, in case too many series in some chart. + result.seriesInvolved && collectSeriesInfo(result, ecModel); + return result; + } + function collectAxesInfo(result, ecModel, api) { + var globalTooltipModel = ecModel.getComponent('tooltip'); + var globalAxisPointerModel = ecModel.getComponent('axisPointer'); + // links can only be set on global. + var linksOption = globalAxisPointerModel.get('link', true) || []; + var linkGroups = []; + // Collect axes info. + each(api.getCoordinateSystems(), function (coordSys) { + // Some coordinate system do not support axes, like geo. + if (!coordSys.axisPointerEnabled) { + return; + } + var coordSysKey = makeKey(coordSys.model); + var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {}; + result.coordSysMap[coordSysKey] = coordSys; + // Set tooltip (like 'cross') is a convenient way to show axisPointer + // for user. So we enable setting tooltip on coordSys model. + var coordSysModel = coordSys.model; + var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel); + each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); + // If axis tooltip used, choose tooltip axis for each coordSys. + // Notice this case: coordSys is `grid` but not `cartesian2D` here. + if (coordSys.getTooltipAxes && globalTooltipModel + // If tooltip.showContent is set as false, tooltip will not + // show but axisPointer will show as normal. + && baseTooltipModel.get('show')) { + // Compatible with previous logic. But series.tooltip.trigger: 'axis' + // or series.data[n].tooltip.trigger: 'axis' are not support any more. + var triggerAxis = baseTooltipModel.get('trigger') === 'axis'; + var cross = baseTooltipModel.get(['axisPointer', 'type']) === 'cross'; + var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(['axisPointer', 'axis'])); + if (triggerAxis || cross) { + each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis)); + } + if (cross) { + each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false)); + } + } + // fromTooltip: true | false | 'cross' + // triggerTooltip: true | false | null + function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) { + var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel); + var axisPointerShow = axisPointerModel.get('show'); + if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) { + return; + } + if (triggerTooltip == null) { + triggerTooltip = axisPointerModel.get('triggerTooltip'); + } + axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel; + var snap = axisPointerModel.get('snap'); + var triggerEmphasis = axisPointerModel.get('triggerEmphasis'); + var axisKey = makeKey(axis.model); + var involveSeries = triggerTooltip || snap || axis.type === 'category'; + // If result.axesInfo[key] exist, override it (tooltip has higher priority). + var axisInfo = result.axesInfo[axisKey] = { + key: axisKey, + axis: axis, + coordSys: coordSys, + axisPointerModel: axisPointerModel, + triggerTooltip: triggerTooltip, + triggerEmphasis: triggerEmphasis, + involveSeries: involveSeries, + snap: snap, + useHandle: isHandleTrigger(axisPointerModel), + seriesModels: [], + linkGroup: null + }; + axesInfoInCoordSys[axisKey] = axisInfo; + result.seriesInvolved = result.seriesInvolved || involveSeries; + var groupIndex = getLinkGroupIndex(linksOption, axis); + if (groupIndex != null) { + var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = { + axesInfo: {} + }); + linkGroup.axesInfo[axisKey] = axisInfo; + linkGroup.mapper = linksOption[groupIndex].mapper; + axisInfo.linkGroup = linkGroup; + } + } + }); + } + function makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) { + var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer'); + var fields = ['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z']; + var volatileOption = {}; + each(fields, function (field) { + volatileOption[field] = clone(tooltipAxisPointerModel.get(field)); + }); + // category axis do not auto snap, otherwise some tick that do not + // has value can not be hovered. value/time/log axis default snap if + // triggered from tooltip and trigger tooltip. + volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; + // Compatible with previous behavior, tooltip axis does not show label by default. + // Only these properties can be overridden from tooltip to axisPointer. + if (tooltipAxisPointerModel.get('type') === 'cross') { + volatileOption.type = 'line'; + } + var labelOption = volatileOption.label || (volatileOption.label = {}); + // Follow the convention, do not show label when triggered by tooltip by default. + labelOption.show == null && (labelOption.show = false); + if (fromTooltip === 'cross') { + // When 'cross', both axes show labels. + var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(['label', 'show']); + labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; + // If triggerTooltip, this is a base axis, which should better not use cross style + // (cross style is dashed by default) + if (!triggerTooltip) { + var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle'); + crossStyle && defaults(labelOption, crossStyle.textStyle); + } + } + return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel)); + } + function collectSeriesInfo(result, ecModel) { + // Prepare data for axis trigger + ecModel.eachSeries(function (seriesModel) { + // Notice this case: this coordSys is `cartesian2D` but not `grid`. + var coordSys = seriesModel.coordinateSystem; + var seriesTooltipTrigger = seriesModel.get(['tooltip', 'trigger'], true); + var seriesTooltipShow = seriesModel.get(['tooltip', 'show'], true); + if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get(['axisPointer', 'show'], true) === false) { + return; + } + each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) { + var axis = axisInfo.axis; + if (coordSys.getAxis(axis.dim) === axis) { + axisInfo.seriesModels.push(seriesModel); + axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0); + axisInfo.seriesDataCount += seriesModel.getData().count(); + } + }); + }); + } + /** + * For example: + * { + * axisPointer: { + * links: [{ + * xAxisIndex: [2, 4], + * yAxisIndex: 'all' + * }, { + * xAxisId: ['a5', 'a7'], + * xAxisName: 'xxx' + * }] + * } + * } + */ + function getLinkGroupIndex(linksOption, axis) { + var axisModel = axis.model; + var dim = axis.dim; + for (var i = 0; i < linksOption.length; i++) { + var linkOption = linksOption[i] || {}; + if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) { + return i; + } + } + } + function checkPropInLink(linkPropValue, axisPropValue) { + return linkPropValue === 'all' || isArray(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue; + } + function fixValue(axisModel) { + var axisInfo = getAxisInfo(axisModel); + if (!axisInfo) { + return; + } + var axisPointerModel = axisInfo.axisPointerModel; + var scale = axisInfo.axis.scale; + var option = axisPointerModel.option; + var status = axisPointerModel.get('status'); + var value = axisPointerModel.get('value'); + // Parse init value for category and time axis. + if (value != null) { + value = scale.parse(value); + } + var useHandle = isHandleTrigger(axisPointerModel); + // If `handle` used, `axisPointer` will always be displayed, so value + // and status should be initialized. + if (status == null) { + option.status = useHandle ? 'show' : 'hide'; + } + var extent = scale.getExtent().slice(); + extent[0] > extent[1] && extent.reverse(); + if ( + // Pick a value on axis when initializing. + value == null + // If both `handle` and `dataZoom` are used, value may be out of axis extent, + // where we should re-pick a value to keep `handle` displaying normally. + || value > extent[1]) { + // Make handle displayed on the end of the axis when init, which looks better. + value = extent[1]; + } + if (value < extent[0]) { + value = extent[0]; + } + option.value = value; + if (useHandle) { + option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show'; + } + } + function getAxisInfo(axisModel) { + var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo; + return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)]; + } + function getAxisPointerModel(axisModel) { + var axisInfo = getAxisInfo(axisModel); + return axisInfo && axisInfo.axisPointerModel; + } + function isHandleTrigger(axisPointerModel) { + return !!axisPointerModel.get(['handle', 'show']); + } + /** + * @param {module:echarts/model/Model} model + * @return {string} unique key + */ + function makeKey(model) { + return model.type + '||' + model.id; + } + + var axisPointerClazz = {}; + /** + * Base class of AxisView. + */ + var AxisView = /** @class */function (_super) { + __extends(AxisView, _super); + function AxisView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = AxisView.type; + return _this; + } + /** + * @override + */ + AxisView.prototype.render = function (axisModel, ecModel, api, payload) { + // FIXME + // This process should proformed after coordinate systems updated + // (axis scale updated), and should be performed each time update. + // So put it here temporarily, although it is not appropriate to + // put a model-writing procedure in `view`. + this.axisPointerClass && fixValue(axisModel); + _super.prototype.render.apply(this, arguments); + this._doUpdateAxisPointerClass(axisModel, api, true); + }; + /** + * Action handler. + */ + AxisView.prototype.updateAxisPointer = function (axisModel, ecModel, api, payload) { + this._doUpdateAxisPointerClass(axisModel, api, false); + }; + /** + * @override + */ + AxisView.prototype.remove = function (ecModel, api) { + var axisPointer = this._axisPointer; + axisPointer && axisPointer.remove(api); + }; + /** + * @override + */ + AxisView.prototype.dispose = function (ecModel, api) { + this._disposeAxisPointer(api); + _super.prototype.dispose.apply(this, arguments); + }; + AxisView.prototype._doUpdateAxisPointerClass = function (axisModel, api, forceRender) { + var Clazz = AxisView.getAxisPointerClass(this.axisPointerClass); + if (!Clazz) { + return; + } + var axisPointerModel = getAxisPointerModel(axisModel); + axisPointerModel ? (this._axisPointer || (this._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : this._disposeAxisPointer(api); + }; + AxisView.prototype._disposeAxisPointer = function (api) { + this._axisPointer && this._axisPointer.dispose(api); + this._axisPointer = null; + }; + AxisView.registerAxisPointerClass = function (type, clazz) { + if ("development" !== 'production') { + if (axisPointerClazz[type]) { + throw new Error('axisPointer ' + type + ' exists'); + } + } + axisPointerClazz[type] = clazz; + }; + AxisView.getAxisPointerClass = function (type) { + return type && axisPointerClazz[type]; + }; + AxisView.type = 'axis'; + return AxisView; + }(ComponentView); + + var inner$6 = makeInner(); + function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) { + var axis = axisModel.axis; + if (axis.scale.isBlank()) { + return; + } + // TODO: TYPE + var splitAreaModel = axisModel.getModel('splitArea'); + var areaStyleModel = splitAreaModel.getModel('areaStyle'); + var areaColors = areaStyleModel.get('color'); + var gridRect = gridModel.coordinateSystem.getRect(); + var ticksCoords = axis.getTicksCoords({ + tickModel: splitAreaModel, + clamp: true + }); + if (!ticksCoords.length) { + return; + } + // For Making appropriate splitArea animation, the color and anid + // should be corresponding to previous one if possible. + var areaColorsLen = areaColors.length; + var lastSplitAreaColors = inner$6(axisView).splitAreaColors; + var newSplitAreaColors = createHashMap(); + var colorIndex = 0; + if (lastSplitAreaColors) { + for (var i = 0; i < ticksCoords.length; i++) { + var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue); + if (cIndex != null) { + colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen; + break; + } + } + } + var prev = axis.toGlobalCoord(ticksCoords[0].coord); + var areaStyle = areaStyleModel.getAreaStyle(); + areaColors = isArray(areaColors) ? areaColors : [areaColors]; + for (var i = 1; i < ticksCoords.length; i++) { + var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord); + var x = void 0; + var y = void 0; + var width = void 0; + var height = void 0; + if (axis.isHorizontal()) { + x = prev; + y = gridRect.y; + width = tickCoord - x; + height = gridRect.height; + prev = x + width; + } else { + x = gridRect.x; + y = prev; + width = gridRect.width; + height = tickCoord - y; + prev = y + height; + } + var tickValue = ticksCoords[i - 1].tickValue; + tickValue != null && newSplitAreaColors.set(tickValue, colorIndex); + axisGroup.add(new Rect({ + anid: tickValue != null ? 'area_' + tickValue : null, + shape: { + x: x, + y: y, + width: width, + height: height + }, + style: defaults({ + fill: areaColors[colorIndex] + }, areaStyle), + autoBatch: true, + silent: true + })); + colorIndex = (colorIndex + 1) % areaColorsLen; + } + inner$6(axisView).splitAreaColors = newSplitAreaColors; + } + function rectCoordAxisHandleRemove(axisView) { + inner$6(axisView).splitAreaColors = null; + } + + var axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName']; + var selfBuilderAttrs = ['splitArea', 'splitLine', 'minorSplitLine']; + var CartesianAxisView = /** @class */function (_super) { + __extends(CartesianAxisView, _super); + function CartesianAxisView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = CartesianAxisView.type; + _this.axisPointerClass = 'CartesianAxisPointer'; + return _this; + } + /** + * @override + */ + CartesianAxisView.prototype.render = function (axisModel, ecModel, api, payload) { + this.group.removeAll(); + var oldAxisGroup = this._axisGroup; + this._axisGroup = new Group(); + this.group.add(this._axisGroup); + if (!axisModel.get('show')) { + return; + } + var gridModel = axisModel.getCoordSysModel(); + var layout = layout$1(gridModel, axisModel); + var axisBuilder = new AxisBuilder(axisModel, extend({ + handleAutoShown: function (elementType) { + var cartesians = gridModel.coordinateSystem.getCartesians(); + for (var i = 0; i < cartesians.length; i++) { + if (isIntervalOrLogScale(cartesians[i].getOtherAxis(axisModel.axis).scale)) { + // Still show axis tick or axisLine if other axis is value / log + return true; + } + } + // Not show axisTick or axisLine if other axis is category / time + return false; + } + }, layout)); + each(axisBuilderAttrs, axisBuilder.add, axisBuilder); + this._axisGroup.add(axisBuilder.getGroup()); + each(selfBuilderAttrs, function (name) { + if (axisModel.get([name, 'show'])) { + axisElementBuilders[name](this, this._axisGroup, axisModel, gridModel); + } + }, this); + // THIS is a special case for bar racing chart. + // Update the axis label from the natural initial layout to + // sorted layout should has no animation. + var isInitialSortFromBarRacing = payload && payload.type === 'changeAxisOrder' && payload.isInitSort; + if (!isInitialSortFromBarRacing) { + groupTransition(oldAxisGroup, this._axisGroup, axisModel); + } + _super.prototype.render.call(this, axisModel, ecModel, api, payload); + }; + CartesianAxisView.prototype.remove = function () { + rectCoordAxisHandleRemove(this); + }; + CartesianAxisView.type = 'cartesianAxis'; + return CartesianAxisView; + }(AxisView); + var axisElementBuilders = { + splitLine: function (axisView, axisGroup, axisModel, gridModel) { + var axis = axisModel.axis; + if (axis.scale.isBlank()) { + return; + } + var splitLineModel = axisModel.getModel('splitLine'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var lineColors = lineStyleModel.get('color'); + lineColors = isArray(lineColors) ? lineColors : [lineColors]; + var gridRect = gridModel.coordinateSystem.getRect(); + var isHorizontal = axis.isHorizontal(); + var lineCount = 0; + var ticksCoords = axis.getTicksCoords({ + tickModel: splitLineModel + }); + var p1 = []; + var p2 = []; + var lineStyle = lineStyleModel.getLineStyle(); + for (var i = 0; i < ticksCoords.length; i++) { + var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord); + if (isHorizontal) { + p1[0] = tickCoord; + p1[1] = gridRect.y; + p2[0] = tickCoord; + p2[1] = gridRect.y + gridRect.height; + } else { + p1[0] = gridRect.x; + p1[1] = tickCoord; + p2[0] = gridRect.x + gridRect.width; + p2[1] = tickCoord; + } + var colorIndex = lineCount++ % lineColors.length; + var tickValue = ticksCoords[i].tickValue; + var line = new Line({ + anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null, + autoBatch: true, + shape: { + x1: p1[0], + y1: p1[1], + x2: p2[0], + y2: p2[1] + }, + style: defaults({ + stroke: lineColors[colorIndex] + }, lineStyle), + silent: true + }); + subPixelOptimizeLine$1(line.shape, lineStyle.lineWidth); + axisGroup.add(line); + } + }, + minorSplitLine: function (axisView, axisGroup, axisModel, gridModel) { + var axis = axisModel.axis; + var minorSplitLineModel = axisModel.getModel('minorSplitLine'); + var lineStyleModel = minorSplitLineModel.getModel('lineStyle'); + var gridRect = gridModel.coordinateSystem.getRect(); + var isHorizontal = axis.isHorizontal(); + var minorTicksCoords = axis.getMinorTicksCoords(); + if (!minorTicksCoords.length) { + return; + } + var p1 = []; + var p2 = []; + var lineStyle = lineStyleModel.getLineStyle(); + for (var i = 0; i < minorTicksCoords.length; i++) { + for (var k = 0; k < minorTicksCoords[i].length; k++) { + var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord); + if (isHorizontal) { + p1[0] = tickCoord; + p1[1] = gridRect.y; + p2[0] = tickCoord; + p2[1] = gridRect.y + gridRect.height; + } else { + p1[0] = gridRect.x; + p1[1] = tickCoord; + p2[0] = gridRect.x + gridRect.width; + p2[1] = tickCoord; + } + var line = new Line({ + anid: 'minor_line_' + minorTicksCoords[i][k].tickValue, + autoBatch: true, + shape: { + x1: p1[0], + y1: p1[1], + x2: p2[0], + y2: p2[1] + }, + style: lineStyle, + silent: true + }); + subPixelOptimizeLine$1(line.shape, lineStyle.lineWidth); + axisGroup.add(line); + } + } + }, + splitArea: function (axisView, axisGroup, axisModel, gridModel) { + rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel); + } + }; + var CartesianXAxisView = /** @class */function (_super) { + __extends(CartesianXAxisView, _super); + function CartesianXAxisView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = CartesianXAxisView.type; + return _this; + } + CartesianXAxisView.type = 'xAxis'; + return CartesianXAxisView; + }(CartesianAxisView); + var CartesianYAxisView = /** @class */function (_super) { + __extends(CartesianYAxisView, _super); + function CartesianYAxisView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = CartesianXAxisView.type; + return _this; + } + CartesianYAxisView.type = 'yAxis'; + return CartesianYAxisView; + }(CartesianAxisView); + + // Grid view + var GridView = /** @class */function (_super) { + __extends(GridView, _super); + function GridView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = 'grid'; + return _this; + } + GridView.prototype.render = function (gridModel, ecModel) { + this.group.removeAll(); + if (gridModel.get('show')) { + this.group.add(new Rect({ + shape: gridModel.coordinateSystem.getRect(), + style: defaults({ + fill: gridModel.get('backgroundColor') + }, gridModel.getItemStyle()), + silent: true, + z2: -1 + })); + } + }; + GridView.type = 'grid'; + return GridView; + }(ComponentView); + var extraOption = { + // gridIndex: 0, + // gridId: '', + offset: 0 + }; + function install$5(registers) { + registers.registerComponentView(GridView); + registers.registerComponentModel(GridModel); + registers.registerCoordinateSystem('cartesian2d', Grid); + axisModelCreator(registers, 'x', CartesianAxisModel, extraOption); + axisModelCreator(registers, 'y', CartesianAxisModel, extraOption); + registers.registerComponentView(CartesianXAxisView); + registers.registerComponentView(CartesianYAxisView); + registers.registerPreprocessor(function (option) { + // Only create grid when need + if (option.xAxis && option.yAxis && !option.grid) { + option.grid = {}; + } + }); + } + + function install$6(registers) { + // In case developer forget to include grid component + use(install$5); + registers.registerSeriesModel(ScatterSeriesModel); + registers.registerChartView(ScatterView); + registers.registerLayout(pointsLayout('scatter')); + } + + function radarLayout(ecModel) { + ecModel.eachSeriesByType('radar', function (seriesModel) { + var data = seriesModel.getData(); + var points = []; + var coordSys = seriesModel.coordinateSystem; + if (!coordSys) { + return; + } + var axes = coordSys.getIndicatorAxes(); + each(axes, function (axis, axisIndex) { + data.each(data.mapDimension(axes[axisIndex].dim), function (val, dataIndex) { + points[dataIndex] = points[dataIndex] || []; + var point = coordSys.dataToPoint(val, axisIndex); + points[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys); + }); + }); + // Close polygon + data.each(function (idx) { + // TODO + // Is it appropriate to connect to the next data when some data is missing? + // Or, should trade it like `connectNull` in line chart? + var firstPoint = find(points[idx], function (point) { + return isValidPoint(point); + }) || getValueMissingPoint(coordSys); + // Copy the first actual point to the end of the array + points[idx].push(firstPoint.slice()); + data.setItemLayout(idx, points[idx]); + }); + }); + } + function isValidPoint(point) { + return !isNaN(point[0]) && !isNaN(point[1]); + } + function getValueMissingPoint(coordSys) { + // It is error-prone to input [NaN, NaN] into polygon, polygon. + // (probably cause problem when refreshing or animating) + return [coordSys.cx, coordSys.cy]; + } + + function radarBackwardCompat(option) { + var polarOptArr = option.polar; + if (polarOptArr) { + if (!isArray(polarOptArr)) { + polarOptArr = [polarOptArr]; + } + var polarNotRadar_1 = []; + each(polarOptArr, function (polarOpt, idx) { + if (polarOpt.indicator) { + if (polarOpt.type && !polarOpt.shape) { + polarOpt.shape = polarOpt.type; + } + option.radar = option.radar || []; + if (!isArray(option.radar)) { + option.radar = [option.radar]; + } + option.radar.push(polarOpt); + } else { + polarNotRadar_1.push(polarOpt); + } + }); + option.polar = polarNotRadar_1; + } + each(option.series, function (seriesOpt) { + if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) { + seriesOpt.radarIndex = seriesOpt.polarIndex; + } + }); + } + + var RadarView = /** @class */function (_super) { + __extends(RadarView, _super); + function RadarView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = RadarView.type; + return _this; + } + RadarView.prototype.render = function (seriesModel, ecModel, api) { + var polar = seriesModel.coordinateSystem; + var group = this.group; + var data = seriesModel.getData(); + var oldData = this._data; + function createSymbol$1(data, idx) { + var symbolType = data.getItemVisual(idx, 'symbol') || 'circle'; + if (symbolType === 'none') { + return; + } + var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize')); + var symbolPath = createSymbol(symbolType, -1, -1, 2, 2); + var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0; + symbolPath.attr({ + style: { + strokeNoScale: true + }, + z2: 100, + scaleX: symbolSize[0] / 2, + scaleY: symbolSize[1] / 2, + rotation: symbolRotate * Math.PI / 180 || 0 + }); + return symbolPath; + } + function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) { + // Simply rerender all + symbolGroup.removeAll(); + for (var i = 0; i < newPoints.length - 1; i++) { + var symbolPath = createSymbol$1(data, idx); + if (symbolPath) { + symbolPath.__dimIdx = i; + if (oldPoints[i]) { + symbolPath.setPosition(oldPoints[i]); + graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, { + x: newPoints[i][0], + y: newPoints[i][1] + }, seriesModel, idx); + } else { + symbolPath.setPosition(newPoints[i]); + } + symbolGroup.add(symbolPath); + } + } + } + function getInitialPoints(points) { + return map(points, function (pt) { + return [polar.cx, polar.cy]; + }); + } + data.diff(oldData).add(function (idx) { + var points = data.getItemLayout(idx); + if (!points) { + return; + } + var polygon = new Polygon(); + var polyline = new Polyline(); + var target = { + shape: { + points: points + } + }; + polygon.shape.points = getInitialPoints(points); + polyline.shape.points = getInitialPoints(points); + initProps(polygon, target, seriesModel, idx); + initProps(polyline, target, seriesModel, idx); + var itemGroup = new Group(); + var symbolGroup = new Group(); + itemGroup.add(polyline); + itemGroup.add(polygon); + itemGroup.add(symbolGroup); + updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true); + data.setItemGraphicEl(idx, itemGroup); + }).update(function (newIdx, oldIdx) { + var itemGroup = oldData.getItemGraphicEl(oldIdx); + var polyline = itemGroup.childAt(0); + var polygon = itemGroup.childAt(1); + var symbolGroup = itemGroup.childAt(2); + var target = { + shape: { + points: data.getItemLayout(newIdx) + } + }; + if (!target.shape.points) { + return; + } + updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false); + saveOldStyle(polygon); + saveOldStyle(polyline); + updateProps(polyline, target, seriesModel); + updateProps(polygon, target, seriesModel); + data.setItemGraphicEl(newIdx, itemGroup); + }).remove(function (idx) { + group.remove(oldData.getItemGraphicEl(idx)); + }).execute(); + data.eachItemGraphicEl(function (itemGroup, idx) { + var itemModel = data.getItemModel(idx); + var polyline = itemGroup.childAt(0); + var polygon = itemGroup.childAt(1); + var symbolGroup = itemGroup.childAt(2); + // Radar uses the visual encoded from itemStyle. + var itemStyle = data.getItemVisual(idx, 'style'); + var color = itemStyle.fill; + group.add(itemGroup); + polyline.useStyle(defaults(itemModel.getModel('lineStyle').getLineStyle(), { + fill: 'none', + stroke: color + })); + setStatesStylesFromModel(polyline, itemModel, 'lineStyle'); + setStatesStylesFromModel(polygon, itemModel, 'areaStyle'); + var areaStyleModel = itemModel.getModel('areaStyle'); + var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty(); + polygon.ignore = polygonIgnore; + each(['emphasis', 'select', 'blur'], function (stateName) { + var stateModel = itemModel.getModel([stateName, 'areaStyle']); + var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty(); + // Won't be ignore if normal state is not ignore. + polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore; + }); + polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), { + fill: color, + opacity: 0.7, + decal: itemStyle.decal + })); + var emphasisModel = itemModel.getModel('emphasis'); + var itemHoverStyle = emphasisModel.getModel('itemStyle').getItemStyle(); + symbolGroup.eachChild(function (symbolPath) { + if (symbolPath instanceof ZRImage) { + var pathStyle = symbolPath.style; + symbolPath.useStyle(extend({ + // TODO other properties like x, y ? + image: pathStyle.image, + x: pathStyle.x, + y: pathStyle.y, + width: pathStyle.width, + height: pathStyle.height + }, itemStyle)); + } else { + symbolPath.useStyle(itemStyle); + symbolPath.setColor(color); + symbolPath.style.strokeNoScale = true; + } + var pathEmphasisState = symbolPath.ensureState('emphasis'); + pathEmphasisState.style = clone(itemHoverStyle); + var defaultText = data.getStore().get(data.getDimensionIndex(symbolPath.__dimIdx), idx); + (defaultText == null || isNaN(defaultText)) && (defaultText = ''); + setLabelStyle(symbolPath, getLabelStatesModels(itemModel), { + labelFetcher: data.hostModel, + labelDataIndex: idx, + labelDimIndex: symbolPath.__dimIdx, + defaultText: defaultText, + inheritColor: color, + defaultOpacity: itemStyle.opacity + }); + }); + toggleHoverEmphasis(itemGroup, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + }); + this._data = data; + }; + RadarView.prototype.remove = function () { + this.group.removeAll(); + this._data = null; + }; + RadarView.type = 'radar'; + return RadarView; + }(ChartView); + + var RadarSeriesModel = /** @class */function (_super) { + __extends(RadarSeriesModel, _super); + function RadarSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = RadarSeriesModel.type; + _this.hasSymbolVisual = true; + return _this; + } + // Overwrite + RadarSeriesModel.prototype.init = function (option) { + _super.prototype.init.apply(this, arguments); + // Enable legend selection for each data item + // Use a function instead of direct access because data reference may changed + this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this)); + }; + RadarSeriesModel.prototype.getInitialData = function (option, ecModel) { + return createSeriesDataSimply(this, { + generateCoord: 'indicator_', + generateCoordCount: Infinity + }); + }; + RadarSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + var data = this.getData(); + var coordSys = this.coordinateSystem; + var indicatorAxes = coordSys.getIndicatorAxes(); + var name = this.getData().getName(dataIndex); + var nameToDisplay = name === '' ? this.name : name; + var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex); + return createTooltipMarkup('section', { + header: nameToDisplay, + sortBlocks: true, + blocks: map(indicatorAxes, function (axis) { + var val = data.get(data.mapDimension(axis.dim), dataIndex); + return createTooltipMarkup('nameValue', { + markerType: 'subItem', + markerColor: markerColor, + name: axis.name, + value: val, + sortParam: val + }); + }) + }); + }; + RadarSeriesModel.prototype.getTooltipPosition = function (dataIndex) { + if (dataIndex != null) { + var data_1 = this.getData(); + var coordSys = this.coordinateSystem; + var values = data_1.getValues(map(coordSys.dimensions, function (dim) { + return data_1.mapDimension(dim); + }), dataIndex); + for (var i = 0, len = values.length; i < len; i++) { + if (!isNaN(values[i])) { + var indicatorAxes = coordSys.getIndicatorAxes(); + return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i); + } + } + } + }; + RadarSeriesModel.type = 'series.radar'; + RadarSeriesModel.dependencies = ['radar']; + RadarSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + colorBy: 'data', + coordinateSystem: 'radar', + legendHoverLink: true, + radarIndex: 0, + lineStyle: { + width: 2, + type: 'solid', + join: 'round' + }, + label: { + position: 'top' + }, + // areaStyle: { + // }, + // itemStyle: {} + symbolSize: 8 + // symbolRotate: null + }; + + return RadarSeriesModel; + }(SeriesModel); + + var valueAxisDefault = axisDefault.value; + function defaultsShow(opt, show) { + return defaults({ + show: show + }, opt); + } + var RadarModel = /** @class */function (_super) { + __extends(RadarModel, _super); + function RadarModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = RadarModel.type; + return _this; + } + RadarModel.prototype.optionUpdated = function () { + var boundaryGap = this.get('boundaryGap'); + var splitNumber = this.get('splitNumber'); + var scale = this.get('scale'); + var axisLine = this.get('axisLine'); + var axisTick = this.get('axisTick'); + // let axisType = this.get('axisType'); + var axisLabel = this.get('axisLabel'); + var nameTextStyle = this.get('axisName'); + var showName = this.get(['axisName', 'show']); + var nameFormatter = this.get(['axisName', 'formatter']); + var nameGap = this.get('axisNameGap'); + var triggerEvent = this.get('triggerEvent'); + var indicatorModels = map(this.get('indicator') || [], function (indicatorOpt) { + // PENDING + if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) { + indicatorOpt.min = 0; + } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) { + indicatorOpt.max = 0; + } + var iNameTextStyle = nameTextStyle; + if (indicatorOpt.color != null) { + iNameTextStyle = defaults({ + color: indicatorOpt.color + }, nameTextStyle); + } + // Use same configuration + var innerIndicatorOpt = merge(clone(indicatorOpt), { + boundaryGap: boundaryGap, + splitNumber: splitNumber, + scale: scale, + axisLine: axisLine, + axisTick: axisTick, + // axisType: axisType, + axisLabel: axisLabel, + // Compatible with 2 and use text + name: indicatorOpt.text, + showName: showName, + nameLocation: 'end', + nameGap: nameGap, + // min: 0, + nameTextStyle: iNameTextStyle, + triggerEvent: triggerEvent + }, false); + if (isString(nameFormatter)) { + var indName = innerIndicatorOpt.name; + innerIndicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : ''); + } else if (isFunction(nameFormatter)) { + innerIndicatorOpt.name = nameFormatter(innerIndicatorOpt.name, innerIndicatorOpt); + } + var model = new Model(innerIndicatorOpt, null, this.ecModel); + mixin(model, AxisModelCommonMixin.prototype); + // For triggerEvent. + model.mainType = 'radar'; + model.componentIndex = this.componentIndex; + return model; + }, this); + this._indicatorModels = indicatorModels; + }; + RadarModel.prototype.getIndicatorModels = function () { + return this._indicatorModels; + }; + RadarModel.type = 'radar'; + RadarModel.defaultOption = { + // zlevel: 0, + z: 0, + center: ['50%', '50%'], + radius: '75%', + startAngle: 90, + axisName: { + show: true + // formatter: null + // textStyle: {} + }, + + boundaryGap: [0, 0], + splitNumber: 5, + axisNameGap: 15, + scale: false, + // Polygon or circle + shape: 'polygon', + axisLine: merge({ + lineStyle: { + color: '#bbb' + } + }, valueAxisDefault.axisLine), + axisLabel: defaultsShow(valueAxisDefault.axisLabel, false), + axisTick: defaultsShow(valueAxisDefault.axisTick, false), + // axisType: 'value', + splitLine: defaultsShow(valueAxisDefault.splitLine, true), + splitArea: defaultsShow(valueAxisDefault.splitArea, true), + // {text, min, max} + indicator: [] + }; + return RadarModel; + }(ComponentModel); + + var axisBuilderAttrs$1 = ['axisLine', 'axisTickLabel', 'axisName']; + var RadarView$1 = /** @class */function (_super) { + __extends(RadarView, _super); + function RadarView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = RadarView.type; + return _this; + } + RadarView.prototype.render = function (radarModel, ecModel, api) { + var group = this.group; + group.removeAll(); + this._buildAxes(radarModel); + this._buildSplitLineAndArea(radarModel); + }; + RadarView.prototype._buildAxes = function (radarModel) { + var radar = radarModel.coordinateSystem; + var indicatorAxes = radar.getIndicatorAxes(); + var axisBuilders = map(indicatorAxes, function (indicatorAxis) { + var axisName = indicatorAxis.model.get('showName') ? indicatorAxis.name : ''; // hide name + var axisBuilder = new AxisBuilder(indicatorAxis.model, { + axisName: axisName, + position: [radar.cx, radar.cy], + rotation: indicatorAxis.angle, + labelDirection: -1, + tickDirection: -1, + nameDirection: 1 + }); + return axisBuilder; + }); + each(axisBuilders, function (axisBuilder) { + each(axisBuilderAttrs$1, axisBuilder.add, axisBuilder); + this.group.add(axisBuilder.getGroup()); + }, this); + }; + RadarView.prototype._buildSplitLineAndArea = function (radarModel) { + var radar = radarModel.coordinateSystem; + var indicatorAxes = radar.getIndicatorAxes(); + if (!indicatorAxes.length) { + return; + } + var shape = radarModel.get('shape'); + var splitLineModel = radarModel.getModel('splitLine'); + var splitAreaModel = radarModel.getModel('splitArea'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var areaStyleModel = splitAreaModel.getModel('areaStyle'); + var showSplitLine = splitLineModel.get('show'); + var showSplitArea = splitAreaModel.get('show'); + var splitLineColors = lineStyleModel.get('color'); + var splitAreaColors = areaStyleModel.get('color'); + var splitLineColorsArr = isArray(splitLineColors) ? splitLineColors : [splitLineColors]; + var splitAreaColorsArr = isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors]; + var splitLines = []; + var splitAreas = []; + function getColorIndex(areaOrLine, areaOrLineColorList, idx) { + var colorIndex = idx % areaOrLineColorList.length; + areaOrLine[colorIndex] = areaOrLine[colorIndex] || []; + return colorIndex; + } + if (shape === 'circle') { + var ticksRadius = indicatorAxes[0].getTicksCoords(); + var cx = radar.cx; + var cy = radar.cy; + for (var i = 0; i < ticksRadius.length; i++) { + if (showSplitLine) { + var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i); + splitLines[colorIndex].push(new Circle({ + shape: { + cx: cx, + cy: cy, + r: ticksRadius[i].coord + } + })); + } + if (showSplitArea && i < ticksRadius.length - 1) { + var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i); + splitAreas[colorIndex].push(new Ring({ + shape: { + cx: cx, + cy: cy, + r0: ticksRadius[i].coord, + r: ticksRadius[i + 1].coord + } + })); + } + } + } + // Polyyon + else { + var realSplitNumber_1; + var axesTicksPoints = map(indicatorAxes, function (indicatorAxis, idx) { + var ticksCoords = indicatorAxis.getTicksCoords(); + realSplitNumber_1 = realSplitNumber_1 == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber_1); + return map(ticksCoords, function (tickCoord) { + return radar.coordToPoint(tickCoord.coord, idx); + }); + }); + var prevPoints = []; + for (var i = 0; i <= realSplitNumber_1; i++) { + var points = []; + for (var j = 0; j < indicatorAxes.length; j++) { + points.push(axesTicksPoints[j][i]); + } + // Close + if (points[0]) { + points.push(points[0].slice()); + } else { + if ("development" !== 'production') { + console.error('Can\'t draw value axis ' + i); + } + } + if (showSplitLine) { + var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i); + splitLines[colorIndex].push(new Polyline({ + shape: { + points: points + } + })); + } + if (showSplitArea && prevPoints) { + var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1); + splitAreas[colorIndex].push(new Polygon({ + shape: { + points: points.concat(prevPoints) + } + })); + } + prevPoints = points.slice().reverse(); + } + } + var lineStyle = lineStyleModel.getLineStyle(); + var areaStyle = areaStyleModel.getAreaStyle(); + // Add splitArea before splitLine + each(splitAreas, function (splitAreas, idx) { + this.group.add(mergePath$1(splitAreas, { + style: defaults({ + stroke: 'none', + fill: splitAreaColorsArr[idx % splitAreaColorsArr.length] + }, areaStyle), + silent: true + })); + }, this); + each(splitLines, function (splitLines, idx) { + this.group.add(mergePath$1(splitLines, { + style: defaults({ + fill: 'none', + stroke: splitLineColorsArr[idx % splitLineColorsArr.length] + }, lineStyle), + silent: true + })); + }, this); + }; + RadarView.type = 'radar'; + return RadarView; + }(ComponentView); + + var IndicatorAxis = /** @class */function (_super) { + __extends(IndicatorAxis, _super); + function IndicatorAxis(dim, scale, radiusExtent) { + var _this = _super.call(this, dim, scale, radiusExtent) || this; + _this.type = 'value'; + _this.angle = 0; + _this.name = ''; + return _this; + } + return IndicatorAxis; + }(Axis); + + var Radar = /** @class */function () { + function Radar(radarModel, ecModel, api) { + /** + * + * Radar dimensions + */ + this.dimensions = []; + this._model = radarModel; + this._indicatorAxes = map(radarModel.getIndicatorModels(), function (indicatorModel, idx) { + var dim = 'indicator_' + idx; + var indicatorAxis = new IndicatorAxis(dim, new IntervalScale() + // (indicatorModel.get('axisType') === 'log') ? new LogScale() : new IntervalScale() + ); + + indicatorAxis.name = indicatorModel.get('name'); + // Inject model and axis + indicatorAxis.model = indicatorModel; + indicatorModel.axis = indicatorAxis; + this.dimensions.push(dim); + return indicatorAxis; + }, this); + this.resize(radarModel, api); + } + Radar.prototype.getIndicatorAxes = function () { + return this._indicatorAxes; + }; + Radar.prototype.dataToPoint = function (value, indicatorIndex) { + var indicatorAxis = this._indicatorAxes[indicatorIndex]; + return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex); + }; + // TODO: API should be coordToPoint([coord, indicatorIndex]) + Radar.prototype.coordToPoint = function (coord, indicatorIndex) { + var indicatorAxis = this._indicatorAxes[indicatorIndex]; + var angle = indicatorAxis.angle; + var x = this.cx + coord * Math.cos(angle); + var y = this.cy - coord * Math.sin(angle); + return [x, y]; + }; + Radar.prototype.pointToData = function (pt) { + var dx = pt[0] - this.cx; + var dy = pt[1] - this.cy; + var radius = Math.sqrt(dx * dx + dy * dy); + dx /= radius; + dy /= radius; + var radian = Math.atan2(-dy, dx); + // Find the closest angle + // FIXME index can calculated directly + var minRadianDiff = Infinity; + var closestAxis; + var closestAxisIdx = -1; + for (var i = 0; i < this._indicatorAxes.length; i++) { + var indicatorAxis = this._indicatorAxes[i]; + var diff = Math.abs(radian - indicatorAxis.angle); + if (diff < minRadianDiff) { + closestAxis = indicatorAxis; + closestAxisIdx = i; + minRadianDiff = diff; + } + } + return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))]; + }; + Radar.prototype.resize = function (radarModel, api) { + var center = radarModel.get('center'); + var viewWidth = api.getWidth(); + var viewHeight = api.getHeight(); + var viewSize = Math.min(viewWidth, viewHeight) / 2; + this.cx = parsePercent$1(center[0], viewWidth); + this.cy = parsePercent$1(center[1], viewHeight); + this.startAngle = radarModel.get('startAngle') * Math.PI / 180; + // radius may be single value like `20`, `'80%'`, or array like `[10, '80%']` + var radius = radarModel.get('radius'); + if (isString(radius) || isNumber(radius)) { + radius = [0, radius]; + } + this.r0 = parsePercent$1(radius[0], viewSize); + this.r = parsePercent$1(radius[1], viewSize); + each(this._indicatorAxes, function (indicatorAxis, idx) { + indicatorAxis.setExtent(this.r0, this.r); + var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; + // Normalize to [-PI, PI] + angle = Math.atan2(Math.sin(angle), Math.cos(angle)); + indicatorAxis.angle = angle; + }, this); + }; + Radar.prototype.update = function (ecModel, api) { + var indicatorAxes = this._indicatorAxes; + var radarModel = this._model; + each(indicatorAxes, function (indicatorAxis) { + indicatorAxis.scale.setExtent(Infinity, -Infinity); + }); + ecModel.eachSeriesByType('radar', function (radarSeries, idx) { + if (radarSeries.get('coordinateSystem') !== 'radar' + // @ts-ignore + || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel) { + return; + } + var data = radarSeries.getData(); + each(indicatorAxes, function (indicatorAxis) { + indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim)); + }); + }, this); + var splitNumber = radarModel.get('splitNumber'); + var dummyScale = new IntervalScale(); + dummyScale.setExtent(0, splitNumber); + dummyScale.setInterval(1); + // Force all the axis fixing the maxSplitNumber. + each(indicatorAxes, function (indicatorAxis, idx) { + alignScaleTicks(indicatorAxis.scale, indicatorAxis.model, dummyScale); + }); + }; + Radar.prototype.convertToPixel = function (ecModel, finder, value) { + console.warn('Not implemented.'); + return null; + }; + Radar.prototype.convertFromPixel = function (ecModel, finder, pixel) { + console.warn('Not implemented.'); + return null; + }; + Radar.prototype.containPoint = function (point) { + console.warn('Not implemented.'); + return false; + }; + Radar.create = function (ecModel, api) { + var radarList = []; + ecModel.eachComponent('radar', function (radarModel) { + var radar = new Radar(radarModel, ecModel, api); + radarList.push(radar); + radarModel.coordinateSystem = radar; + }); + ecModel.eachSeriesByType('radar', function (radarSeries) { + if (radarSeries.get('coordinateSystem') === 'radar') { + // Inject coordinate system + // @ts-ignore + radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0]; + } + }); + return radarList; + }; + /** + * Radar dimensions is based on the data + */ + Radar.dimensions = []; + return Radar; + }(); + + function install$7(registers) { + registers.registerCoordinateSystem('radar', Radar); + registers.registerComponentModel(RadarModel); + registers.registerComponentView(RadarView$1); + registers.registerVisual({ + seriesType: 'radar', + reset: function (seriesModel) { + var data = seriesModel.getData(); + // itemVisual symbol is for selected data + data.each(function (idx) { + data.setItemVisual(idx, 'legendIcon', 'roundRect'); + }); + // visual is for unselected data + data.setVisual('legendIcon', 'roundRect'); + } + }); + } + + function install$8(registers) { + use(install$7); + registers.registerChartView(RadarView); + registers.registerSeriesModel(RadarSeriesModel); + registers.registerLayout(radarLayout); + registers.registerProcessor(dataFilter('radar')); + registers.registerPreprocessor(radarBackwardCompat); + } + + var ATTR = '\0_ec_interaction_mutex'; + function take(zr, resourceKey, userKey) { + var store = getStore(zr); + store[resourceKey] = userKey; + } + function release(zr, resourceKey, userKey) { + var store = getStore(zr); + var uKey = store[resourceKey]; + if (uKey === userKey) { + store[resourceKey] = null; + } + } + function isTaken(zr, resourceKey) { + return !!getStore(zr)[resourceKey]; + } + function getStore(zr) { + return zr[ATTR] || (zr[ATTR] = {}); + } + /** + * payload: { + * type: 'takeGlobalCursor', + * key: 'dataZoomSelect', or 'brush', or ..., + * If no userKey, release global cursor. + * } + */ + // TODO: SELF REGISTERED. + registerAction({ + type: 'takeGlobalCursor', + event: 'globalCursorTaken', + update: 'update' + }, noop); + + var RoamController = /** @class */function (_super) { + __extends(RoamController, _super); + function RoamController(zr) { + var _this = _super.call(this) || this; + _this._zr = zr; + // Avoid two roamController bind the same handler + var mousedownHandler = bind(_this._mousedownHandler, _this); + var mousemoveHandler = bind(_this._mousemoveHandler, _this); + var mouseupHandler = bind(_this._mouseupHandler, _this); + var mousewheelHandler = bind(_this._mousewheelHandler, _this); + var pinchHandler = bind(_this._pinchHandler, _this); + /** + * Notice: only enable needed types. For example, if 'zoom' + * is not needed, 'zoom' should not be enabled, otherwise + * default mousewheel behaviour (scroll page) will be disabled. + */ + _this.enable = function (controlType, opt) { + // Disable previous first + this.disable(); + this._opt = defaults(clone(opt) || {}, { + zoomOnMouseWheel: true, + moveOnMouseMove: true, + // By default, wheel do not trigger move. + moveOnMouseWheel: false, + preventDefaultMouseMove: true + }); + if (controlType == null) { + controlType = true; + } + if (controlType === true || controlType === 'move' || controlType === 'pan') { + zr.on('mousedown', mousedownHandler); + zr.on('mousemove', mousemoveHandler); + zr.on('mouseup', mouseupHandler); + } + if (controlType === true || controlType === 'scale' || controlType === 'zoom') { + zr.on('mousewheel', mousewheelHandler); + zr.on('pinch', pinchHandler); + } + }; + _this.disable = function () { + zr.off('mousedown', mousedownHandler); + zr.off('mousemove', mousemoveHandler); + zr.off('mouseup', mouseupHandler); + zr.off('mousewheel', mousewheelHandler); + zr.off('pinch', pinchHandler); + }; + return _this; + } + RoamController.prototype.isDragging = function () { + return this._dragging; + }; + RoamController.prototype.isPinching = function () { + return this._pinching; + }; + RoamController.prototype.setPointerChecker = function (pointerChecker) { + this.pointerChecker = pointerChecker; + }; + RoamController.prototype.dispose = function () { + this.disable(); + }; + RoamController.prototype._mousedownHandler = function (e) { + if (isMiddleOrRightButtonOnMouseUpDown(e)) { + return; + } + var el = e.target; + while (el) { + if (el.draggable) { + return; + } + // check if host is draggable + el = el.__hostTarget || el.parent; + } + var x = e.offsetX; + var y = e.offsetY; + // Only check on mosedown, but not mousemove. + // Mouse can be out of target when mouse moving. + if (this.pointerChecker && this.pointerChecker(e, x, y)) { + this._x = x; + this._y = y; + this._dragging = true; + } + }; + RoamController.prototype._mousemoveHandler = function (e) { + if (!this._dragging || !isAvailableBehavior('moveOnMouseMove', e, this._opt) || e.gestureEvent === 'pinch' || isTaken(this._zr, 'globalPan')) { + return; + } + var x = e.offsetX; + var y = e.offsetY; + var oldX = this._x; + var oldY = this._y; + var dx = x - oldX; + var dy = y - oldY; + this._x = x; + this._y = y; + this._opt.preventDefaultMouseMove && stop(e.event); + trigger(this, 'pan', 'moveOnMouseMove', e, { + dx: dx, + dy: dy, + oldX: oldX, + oldY: oldY, + newX: x, + newY: y, + isAvailableBehavior: null + }); + }; + RoamController.prototype._mouseupHandler = function (e) { + if (!isMiddleOrRightButtonOnMouseUpDown(e)) { + this._dragging = false; + } + }; + RoamController.prototype._mousewheelHandler = function (e) { + var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt); + var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt); + var wheelDelta = e.wheelDelta; + var absWheelDeltaDelta = Math.abs(wheelDelta); + var originX = e.offsetX; + var originY = e.offsetY; + // wheelDelta maybe -0 in chrome mac. + if (wheelDelta === 0 || !shouldZoom && !shouldMove) { + return; + } + // If both `shouldZoom` and `shouldMove` is true, trigger + // their event both, and the final behavior is determined + // by event listener themselves. + if (shouldZoom) { + // Convenience: + // Mac and VM Windows on Mac: scroll up: zoom out. + // Windows: scroll up: zoom in. + // FIXME: Should do more test in different environment. + // wheelDelta is too complicated in difference nvironment + // (https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel), + // although it has been normallized by zrender. + // wheelDelta of mouse wheel is bigger than touch pad. + var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1; + var scale = wheelDelta > 0 ? factor : 1 / factor; + checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, { + scale: scale, + originX: originX, + originY: originY, + isAvailableBehavior: null + }); + } + if (shouldMove) { + // FIXME: Should do more test in different environment. + var absDelta = Math.abs(wheelDelta); + // wheelDelta of mouse wheel is bigger than touch pad. + var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05); + checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, { + scrollDelta: scrollDelta, + originX: originX, + originY: originY, + isAvailableBehavior: null + }); + } + }; + RoamController.prototype._pinchHandler = function (e) { + if (isTaken(this._zr, 'globalPan')) { + return; + } + var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1; + checkPointerAndTrigger(this, 'zoom', null, e, { + scale: scale, + originX: e.pinchX, + originY: e.pinchY, + isAvailableBehavior: null + }); + }; + return RoamController; + }(Eventful); + function checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) { + if (controller.pointerChecker && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) { + // When mouse is out of roamController rect, + // default befavoius should not be be disabled, otherwise + // page sliding is disabled, contrary to expectation. + stop(e.event); + trigger(controller, eventName, behaviorToCheck, e, contollerEvent); + } + } + function trigger(controller, eventName, behaviorToCheck, e, contollerEvent) { + // Also provide behavior checker for event listener, for some case that + // multiple components share one listener. + contollerEvent.isAvailableBehavior = bind(isAvailableBehavior, null, behaviorToCheck, e); + // TODO should not have type issue. + controller.trigger(eventName, contollerEvent); + } + // settings: { + // zoomOnMouseWheel + // moveOnMouseMove + // moveOnMouseWheel + // } + // The value can be: true / false / 'shift' / 'ctrl' / 'alt'. + function isAvailableBehavior(behaviorToCheck, e, settings) { + var setting = settings[behaviorToCheck]; + return !behaviorToCheck || setting && (!isString(setting) || e.event[setting + 'Key']); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /** + * For geo and graph. + */ + function updateViewOnPan(controllerHost, dx, dy) { + var target = controllerHost.target; + target.x += dx; + target.y += dy; + target.dirty(); + } + /** + * For geo and graph. + */ + function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) { + var target = controllerHost.target; + var zoomLimit = controllerHost.zoomLimit; + var newZoom = controllerHost.zoom = controllerHost.zoom || 1; + newZoom *= zoomDelta; + if (zoomLimit) { + var zoomMin = zoomLimit.min || 0; + var zoomMax = zoomLimit.max || Infinity; + newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin); + } + var zoomScale = newZoom / controllerHost.zoom; + controllerHost.zoom = newZoom; + // Keep the mouse center when scaling + target.x -= (zoomX - target.x) * (zoomScale - 1); + target.y -= (zoomY - target.y) * (zoomScale - 1); + target.scaleX *= zoomScale; + target.scaleY *= zoomScale; + target.dirty(); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var IRRELEVANT_EXCLUDES = { + 'axisPointer': 1, + 'tooltip': 1, + 'brush': 1 + }; + /** + * Avoid that: mouse click on a elements that is over geo or graph, + * but roam is triggered. + */ + function onIrrelevantElement(e, api, targetCoordSysModel) { + var model = api.getComponentByElement(e.topTarget); + // If model is axisModel, it works only if it is injected with coordinateSystem. + var coordSys = model && model.coordinateSystem; + return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType) && coordSys && coordSys.model !== targetCoordSysModel; + } + + function parseXML(svg) { + if (isString(svg)) { + var parser = new DOMParser(); + svg = parser.parseFromString(svg, 'text/xml'); + } + var svgNode = svg; + if (svgNode.nodeType === 9) { + svgNode = svgNode.firstChild; + } + while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) { + svgNode = svgNode.nextSibling; + } + return svgNode; + } + + var nodeParsers; + var INHERITABLE_STYLE_ATTRIBUTES_MAP = { + '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' + }; + var INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS = keys(INHERITABLE_STYLE_ATTRIBUTES_MAP); + var SELF_STYLE_ATTRIBUTES_MAP = { + 'alignment-baseline': 'textBaseline', + 'stop-color': 'stopColor' + }; + var SELF_STYLE_ATTRIBUTES_MAP_KEYS = keys(SELF_STYLE_ATTRIBUTES_MAP); + var SVGParser = (function () { + function SVGParser() { + this._defs = {}; + this._root = null; + } + SVGParser.prototype.parse = function (xml, opt) { + opt = opt || {}; + var svg = parseXML(xml); + if ("development" !== 'production') { + if (!svg) { + throw new Error('Illegal svg'); + } + } + this._defsUsePending = []; + var root = new Group(); + this._root = root; + var named = []; + var viewBox = svg.getAttribute('viewBox') || ''; + var width = parseFloat((svg.getAttribute('width') || opt.width)); + var height = parseFloat((svg.getAttribute('height') || opt.height)); + isNaN(width) && (width = null); + isNaN(height) && (height = null); + parseAttributes(svg, root, null, true, false); + var child = svg.firstChild; + while (child) { + this._parseNode(child, root, named, null, false, false); + child = child.nextSibling; + } + applyDefs(this._defs, this._defsUsePending); + this._defsUsePending = []; + var viewBoxRect; + var viewBoxTransform; + if (viewBox) { + var viewBoxArr = splitNumberSequence(viewBox); + if (viewBoxArr.length >= 4) { + viewBoxRect = { + x: parseFloat((viewBoxArr[0] || 0)), + y: parseFloat((viewBoxArr[1] || 0)), + width: parseFloat(viewBoxArr[2]), + height: parseFloat(viewBoxArr[3]) + }; + } + } + if (viewBoxRect && width != null && height != null) { + viewBoxTransform = makeViewBoxTransform(viewBoxRect, { x: 0, y: 0, width: width, height: height }); + if (!opt.ignoreViewBox) { + var elRoot = root; + root = new Group(); + root.add(elRoot); + elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale; + elRoot.x = viewBoxTransform.x; + elRoot.y = viewBoxTransform.y; + } + } + if (!opt.ignoreRootClip && width != null && height != null) { + root.setClipPath(new Rect({ + shape: { x: 0, y: 0, width: width, height: height } + })); + } + return { + root: root, + width: width, + height: height, + viewBoxRect: viewBoxRect, + viewBoxTransform: viewBoxTransform, + named: named + }; + }; + SVGParser.prototype._parseNode = function (xmlNode, parentGroup, named, namedFrom, isInDefs, isInText) { + var nodeName = xmlNode.nodeName.toLowerCase(); + var el; + var namedFromForSub = namedFrom; + if (nodeName === 'defs') { + isInDefs = true; + } + if (nodeName === 'text') { + isInText = true; + } + if (nodeName === 'defs' || nodeName === 'switch') { + el = parentGroup; + } + else { + if (!isInDefs) { + var parser_1 = nodeParsers[nodeName]; + if (parser_1 && hasOwn(nodeParsers, nodeName)) { + el = parser_1.call(this, xmlNode, parentGroup); + var nameAttr = xmlNode.getAttribute('name'); + if (nameAttr) { + var newNamed = { + name: nameAttr, + namedFrom: null, + svgNodeTagLower: nodeName, + el: el + }; + named.push(newNamed); + if (nodeName === 'g') { + namedFromForSub = newNamed; + } + } + else if (namedFrom) { + named.push({ + name: namedFrom.name, + namedFrom: namedFrom, + svgNodeTagLower: nodeName, + el: el + }); + } + parentGroup.add(el); + } + } + var parser = paintServerParsers[nodeName]; + if (parser && hasOwn(paintServerParsers, nodeName)) { + var def = parser.call(this, xmlNode); + var id = xmlNode.getAttribute('id'); + if (id) { + this._defs[id] = def; + } + } + } + if (el && el.isGroup) { + var child = xmlNode.firstChild; + while (child) { + if (child.nodeType === 1) { + this._parseNode(child, el, named, namedFromForSub, isInDefs, isInText); + } + else if (child.nodeType === 3 && isInText) { + this._parseText(child, el); + } + child = child.nextSibling; + } + } + }; + SVGParser.prototype._parseText = function (xmlNode, parentGroup) { + var text = new TSpan({ + style: { + text: xmlNode.textContent + }, + silent: true, + x: this._textX || 0, + y: this._textY || 0 + }); + inheritStyle(parentGroup, text); + parseAttributes(xmlNode, text, this._defsUsePending, false, false); + applyTextAlignment(text, parentGroup); + var textStyle = text.style; + var fontSize = textStyle.fontSize; + if (fontSize && fontSize < 9) { + textStyle.fontSize = 9; + text.scaleX *= fontSize / 9; + text.scaleY *= fontSize / 9; + } + var font = (textStyle.fontSize || textStyle.fontFamily) && [ + textStyle.fontStyle, + textStyle.fontWeight, + (textStyle.fontSize || 12) + 'px', + textStyle.fontFamily || 'sans-serif' + ].join(' '); + textStyle.font = font; + var rect = text.getBoundingRect(); + this._textX += rect.width; + parentGroup.add(text); + return text; + }; + SVGParser.internalField = (function () { + nodeParsers = { + 'g': function (xmlNode, parentGroup) { + var g = new Group(); + inheritStyle(parentGroup, g); + parseAttributes(xmlNode, g, this._defsUsePending, false, false); + return g; + }, + 'rect': function (xmlNode, parentGroup) { + var rect = new Rect(); + inheritStyle(parentGroup, rect); + parseAttributes(xmlNode, rect, this._defsUsePending, false, false); + rect.setShape({ + x: parseFloat(xmlNode.getAttribute('x') || '0'), + y: parseFloat(xmlNode.getAttribute('y') || '0'), + width: parseFloat(xmlNode.getAttribute('width') || '0'), + height: parseFloat(xmlNode.getAttribute('height') || '0') + }); + rect.silent = true; + return rect; + }, + 'circle': function (xmlNode, parentGroup) { + var circle = new Circle(); + inheritStyle(parentGroup, circle); + parseAttributes(xmlNode, circle, this._defsUsePending, false, false); + circle.setShape({ + cx: parseFloat(xmlNode.getAttribute('cx') || '0'), + cy: parseFloat(xmlNode.getAttribute('cy') || '0'), + r: parseFloat(xmlNode.getAttribute('r') || '0') + }); + circle.silent = true; + return circle; + }, + 'line': function (xmlNode, parentGroup) { + var line = new Line(); + inheritStyle(parentGroup, line); + parseAttributes(xmlNode, line, this._defsUsePending, false, false); + line.setShape({ + x1: parseFloat(xmlNode.getAttribute('x1') || '0'), + y1: parseFloat(xmlNode.getAttribute('y1') || '0'), + x2: parseFloat(xmlNode.getAttribute('x2') || '0'), + y2: parseFloat(xmlNode.getAttribute('y2') || '0') + }); + line.silent = true; + return line; + }, + 'ellipse': function (xmlNode, parentGroup) { + var ellipse = new Ellipse(); + inheritStyle(parentGroup, ellipse); + parseAttributes(xmlNode, ellipse, this._defsUsePending, false, false); + ellipse.setShape({ + cx: parseFloat(xmlNode.getAttribute('cx') || '0'), + cy: parseFloat(xmlNode.getAttribute('cy') || '0'), + rx: parseFloat(xmlNode.getAttribute('rx') || '0'), + ry: parseFloat(xmlNode.getAttribute('ry') || '0') + }); + ellipse.silent = true; + return ellipse; + }, + 'polygon': function (xmlNode, parentGroup) { + var pointsStr = xmlNode.getAttribute('points'); + var pointsArr; + if (pointsStr) { + pointsArr = parsePoints(pointsStr); + } + var polygon = new Polygon({ + shape: { + points: pointsArr || [] + }, + silent: true + }); + inheritStyle(parentGroup, polygon); + parseAttributes(xmlNode, polygon, this._defsUsePending, false, false); + return polygon; + }, + 'polyline': function (xmlNode, parentGroup) { + var pointsStr = xmlNode.getAttribute('points'); + var pointsArr; + if (pointsStr) { + pointsArr = parsePoints(pointsStr); + } + var polyline = new Polyline({ + shape: { + points: pointsArr || [] + }, + silent: true + }); + inheritStyle(parentGroup, polyline); + parseAttributes(xmlNode, polyline, this._defsUsePending, false, false); + return polyline; + }, + 'image': function (xmlNode, parentGroup) { + var img = new ZRImage(); + inheritStyle(parentGroup, img); + parseAttributes(xmlNode, img, this._defsUsePending, false, false); + img.setStyle({ + image: xmlNode.getAttribute('xlink:href') || xmlNode.getAttribute('href'), + x: +xmlNode.getAttribute('x'), + y: +xmlNode.getAttribute('y'), + width: +xmlNode.getAttribute('width'), + height: +xmlNode.getAttribute('height') + }); + img.silent = true; + return img; + }, + 'text': function (xmlNode, parentGroup) { + var x = xmlNode.getAttribute('x') || '0'; + var y = xmlNode.getAttribute('y') || '0'; + var dx = xmlNode.getAttribute('dx') || '0'; + var dy = xmlNode.getAttribute('dy') || '0'; + this._textX = parseFloat(x) + parseFloat(dx); + this._textY = parseFloat(y) + parseFloat(dy); + var g = new Group(); + inheritStyle(parentGroup, g); + parseAttributes(xmlNode, g, this._defsUsePending, false, true); + return g; + }, + 'tspan': function (xmlNode, parentGroup) { + var x = xmlNode.getAttribute('x'); + var y = xmlNode.getAttribute('y'); + if (x != null) { + this._textX = parseFloat(x); + } + if (y != null) { + this._textY = parseFloat(y); + } + var dx = xmlNode.getAttribute('dx') || '0'; + var dy = xmlNode.getAttribute('dy') || '0'; + var g = new Group(); + inheritStyle(parentGroup, g); + parseAttributes(xmlNode, g, this._defsUsePending, false, true); + this._textX += parseFloat(dx); + this._textY += parseFloat(dy); + return g; + }, + 'path': function (xmlNode, parentGroup) { + var d = xmlNode.getAttribute('d') || ''; + var path = createFromString(d); + inheritStyle(parentGroup, path); + parseAttributes(xmlNode, path, this._defsUsePending, false, false); + path.silent = true; + return path; + } + }; + })(); + return SVGParser; + }()); + var paintServerParsers = { + 'lineargradient': function (xmlNode) { + var x1 = parseInt(xmlNode.getAttribute('x1') || '0', 10); + var y1 = parseInt(xmlNode.getAttribute('y1') || '0', 10); + var x2 = parseInt(xmlNode.getAttribute('x2') || '10', 10); + var y2 = parseInt(xmlNode.getAttribute('y2') || '0', 10); + var gradient = new LinearGradient(x1, y1, x2, y2); + parsePaintServerUnit(xmlNode, gradient); + parseGradientColorStops(xmlNode, gradient); + return gradient; + }, + 'radialgradient': function (xmlNode) { + var cx = parseInt(xmlNode.getAttribute('cx') || '0', 10); + var cy = parseInt(xmlNode.getAttribute('cy') || '0', 10); + var r = parseInt(xmlNode.getAttribute('r') || '0', 10); + var gradient = new RadialGradient(cx, cy, r); + parsePaintServerUnit(xmlNode, gradient); + parseGradientColorStops(xmlNode, gradient); + return gradient; + } + }; + function parsePaintServerUnit(xmlNode, gradient) { + var gradientUnits = xmlNode.getAttribute('gradientUnits'); + if (gradientUnits === 'userSpaceOnUse') { + gradient.global = true; + } + } + function parseGradientColorStops(xmlNode, gradient) { + var stop = xmlNode.firstChild; + while (stop) { + if (stop.nodeType === 1 + && stop.nodeName.toLocaleLowerCase() === 'stop') { + var offsetStr = stop.getAttribute('offset'); + var offset = void 0; + if (offsetStr && offsetStr.indexOf('%') > 0) { + offset = parseInt(offsetStr, 10) / 100; + } + else if (offsetStr) { + offset = parseFloat(offsetStr); + } + else { + offset = 0; + } + var styleVals = {}; + parseInlineStyle(stop, styleVals, styleVals); + var stopColor = styleVals.stopColor + || stop.getAttribute('stop-color') + || '#000000'; + gradient.colorStops.push({ + offset: offset, + color: stopColor + }); + } + stop = stop.nextSibling; + } + } + function inheritStyle(parent, child) { + if (parent && parent.__inheritedStyle) { + if (!child.__inheritedStyle) { + child.__inheritedStyle = {}; + } + defaults(child.__inheritedStyle, parent.__inheritedStyle); + } + } + function parsePoints(pointsString) { + var list = splitNumberSequence(pointsString); + var points = []; + for (var i = 0; i < list.length; i += 2) { + var x = parseFloat(list[i]); + var y = parseFloat(list[i + 1]); + points.push([x, y]); + } + return points; + } + function parseAttributes(xmlNode, el, defsUsePending, onlyInlineStyle, isTextGroup) { + var disp = el; + var inheritedStyle = disp.__inheritedStyle = disp.__inheritedStyle || {}; + var selfStyle = {}; + if (xmlNode.nodeType === 1) { + parseTransformAttribute(xmlNode, el); + parseInlineStyle(xmlNode, inheritedStyle, selfStyle); + if (!onlyInlineStyle) { + parseAttributeStyle(xmlNode, inheritedStyle, selfStyle); + } + } + disp.style = disp.style || {}; + if (inheritedStyle.fill != null) { + disp.style.fill = getFillStrokeStyle(disp, 'fill', inheritedStyle.fill, defsUsePending); + } + if (inheritedStyle.stroke != null) { + disp.style.stroke = getFillStrokeStyle(disp, 'stroke', inheritedStyle.stroke, defsUsePending); + } + each([ + 'lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize' + ], function (propName) { + if (inheritedStyle[propName] != null) { + disp.style[propName] = parseFloat(inheritedStyle[propName]); + } + }); + each([ + 'lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign' + ], function (propName) { + if (inheritedStyle[propName] != null) { + disp.style[propName] = inheritedStyle[propName]; + } + }); + if (isTextGroup) { + disp.__selfStyle = selfStyle; + } + if (inheritedStyle.lineDash) { + disp.style.lineDash = map(splitNumberSequence(inheritedStyle.lineDash), function (str) { + return parseFloat(str); + }); + } + if (inheritedStyle.visibility === 'hidden' || inheritedStyle.visibility === 'collapse') { + disp.invisible = true; + } + if (inheritedStyle.display === 'none') { + disp.ignore = true; + } + } + function applyTextAlignment(text, parentGroup) { + var parentSelfStyle = parentGroup.__selfStyle; + if (parentSelfStyle) { + var textBaseline = parentSelfStyle.textBaseline; + var zrTextBaseline = textBaseline; + if (!textBaseline || textBaseline === 'auto') { + zrTextBaseline = 'alphabetic'; + } + else if (textBaseline === 'baseline') { + zrTextBaseline = 'alphabetic'; + } + else if (textBaseline === 'before-edge' || textBaseline === 'text-before-edge') { + zrTextBaseline = 'top'; + } + else if (textBaseline === 'after-edge' || textBaseline === 'text-after-edge') { + zrTextBaseline = 'bottom'; + } + else if (textBaseline === 'central' || textBaseline === 'mathematical') { + zrTextBaseline = 'middle'; + } + text.style.textBaseline = zrTextBaseline; + } + var parentInheritedStyle = parentGroup.__inheritedStyle; + if (parentInheritedStyle) { + var textAlign = parentInheritedStyle.textAlign; + var zrTextAlign = textAlign; + if (textAlign) { + if (textAlign === 'middle') { + zrTextAlign = 'center'; + } + text.style.textAlign = zrTextAlign; + } + } + } + var urlRegex = /^url\(\s*#(.*?)\)/; + function getFillStrokeStyle(el, method, str, defsUsePending) { + var urlMatch = str && str.match(urlRegex); + if (urlMatch) { + var url = trim(urlMatch[1]); + defsUsePending.push([el, method, url]); + return; + } + if (str === 'none') { + str = null; + } + return str; + } + function applyDefs(defs, defsUsePending) { + for (var i = 0; i < defsUsePending.length; i++) { + var item = defsUsePending[i]; + item[0].style[item[1]] = defs[item[2]]; + } + } + var numberReg$1 = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; + function splitNumberSequence(rawStr) { + return rawStr.match(numberReg$1) || []; + } + var transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g; + var DEGREE_TO_ANGLE = Math.PI / 180; + function parseTransformAttribute(xmlNode, node) { + var transform = xmlNode.getAttribute('transform'); + if (transform) { + transform = transform.replace(/,/g, ' '); + var transformOps_1 = []; + var mt = null; + transform.replace(transformRegex, function (str, type, value) { + transformOps_1.push(type, value); + return ''; + }); + for (var i = transformOps_1.length - 1; i > 0; i -= 2) { + var value = transformOps_1[i]; + var type = transformOps_1[i - 1]; + var valueArr = splitNumberSequence(value); + mt = mt || create$1(); + switch (type) { + case 'translate': + translate(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || '0')]); + break; + case 'scale': + scale$1(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]); + break; + case 'rotate': + rotate(mt, mt, -parseFloat(valueArr[0]) * DEGREE_TO_ANGLE, [ + parseFloat(valueArr[1] || '0'), + parseFloat(valueArr[2] || '0') + ]); + break; + case 'skewX': + var sx = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE); + mul$1(mt, [1, 0, sx, 1, 0, 0], mt); + break; + case 'skewY': + var sy = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE); + mul$1(mt, [1, sy, 0, 1, 0, 0], mt); + break; + case 'matrix': + mt[0] = parseFloat(valueArr[0]); + mt[1] = parseFloat(valueArr[1]); + mt[2] = parseFloat(valueArr[2]); + mt[3] = parseFloat(valueArr[3]); + mt[4] = parseFloat(valueArr[4]); + mt[5] = parseFloat(valueArr[5]); + break; + } + } + node.setLocalTransform(mt); + } + } + var styleRegex = /([^\s:;]+)\s*:\s*([^:;]+)/g; + function parseInlineStyle(xmlNode, inheritableStyleResult, selfStyleResult) { + var style = xmlNode.getAttribute('style'); + if (!style) { + return; + } + styleRegex.lastIndex = 0; + var styleRegResult; + while ((styleRegResult = styleRegex.exec(style)) != null) { + var svgStlAttr = styleRegResult[1]; + var zrInheritableStlAttr = hasOwn(INHERITABLE_STYLE_ATTRIBUTES_MAP, svgStlAttr) + ? INHERITABLE_STYLE_ATTRIBUTES_MAP[svgStlAttr] + : null; + if (zrInheritableStlAttr) { + inheritableStyleResult[zrInheritableStlAttr] = styleRegResult[2]; + } + var zrSelfStlAttr = hasOwn(SELF_STYLE_ATTRIBUTES_MAP, svgStlAttr) + ? SELF_STYLE_ATTRIBUTES_MAP[svgStlAttr] + : null; + if (zrSelfStlAttr) { + selfStyleResult[zrSelfStlAttr] = styleRegResult[2]; + } + } + } + function parseAttributeStyle(xmlNode, inheritableStyleResult, selfStyleResult) { + for (var i = 0; i < INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) { + var svgAttrName = INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS[i]; + var attrValue = xmlNode.getAttribute(svgAttrName); + if (attrValue != null) { + inheritableStyleResult[INHERITABLE_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue; + } + } + for (var i = 0; i < SELF_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) { + var svgAttrName = SELF_STYLE_ATTRIBUTES_MAP_KEYS[i]; + var attrValue = xmlNode.getAttribute(svgAttrName); + if (attrValue != null) { + selfStyleResult[SELF_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue; + } + } + } + function makeViewBoxTransform(viewBoxRect, boundingRect) { + var scaleX = boundingRect.width / viewBoxRect.width; + var scaleY = boundingRect.height / viewBoxRect.height; + var scale = Math.min(scaleX, scaleY); + return { + scale: scale, + x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale + (boundingRect.x + boundingRect.width / 2), + y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale + (boundingRect.y + boundingRect.height / 2) + }; + } + function parseSVG(xml, opt) { + var parser = new SVGParser(); + return parser.parse(xml, opt); + } + + /** + * "region available" means that: enable users to set attribute `name="xxx"` on those tags + * to make it be a region. + * 1. region styles and its label styles can be defined in echarts opton: + * ```js + * geo: { + * regions: [{ + * name: 'xxx', + * itemStyle: { ... }, + * label: { ... } + * }, { + * ... + * }, + * ...] + * }; + * ``` + * 2. name can be duplicated in different SVG tag. All of the tags with the same name share + * a region option. For exampel if there are two representing two lung lobes. They have + * no common parents but both of them need to display label "lung" inside. + */ + var REGION_AVAILABLE_SVG_TAG_MAP = createHashMap(['rect', 'circle', 'line', 'ellipse', 'polygon', 'polyline', 'path', + // are also enabled because some SVG might paint text itself, + // but still need to trigger events or tooltip. + 'text', 'tspan', + // is also enabled because this case: if multiple tags share one name + // and need label displayed, every tags will display the name, which is not + // expected. So we can put them into a . Thereby only one label + // displayed and located based on the bounding rect of the . + 'g']); + var GeoSVGResource = /** @class */function () { + function GeoSVGResource(mapName, svg) { + this.type = 'geoSVG'; + // All used graphics. key: hostKey, value: root + this._usedGraphicMap = createHashMap(); + // All unused graphics. + this._freedGraphics = []; + this._mapName = mapName; + // Only perform parse to XML object here, which might be time + // consiming for large SVG. + // Although convert XML to zrender element is also time consiming, + // if we do it here, the clone of zrender elements has to be + // required. So we do it once for each geo instance, util real + // performance issues call for optimizing it. + this._parsedXML = parseXML(svg); + } + GeoSVGResource.prototype.load = function /* nameMap: NameMap */ + () { + // In the "load" stage, graphic need to be built to + // get boundingRect for geo coordinate system. + var firstGraphic = this._firstGraphic; + // Create the return data structure only when first graphic created. + // Because they will be used in geo coordinate system update stage, + // and `regions` will be mounted at `geo` coordinate system, + // in which there is no "view" info, so that it should better not to + // make references to graphic elements. + if (!firstGraphic) { + firstGraphic = this._firstGraphic = this._buildGraphic(this._parsedXML); + this._freedGraphics.push(firstGraphic); + this._boundingRect = this._firstGraphic.boundingRect.clone(); + // PENDING: `nameMap` will not be supported until some real requirement come. + // if (nameMap) { + // named = applyNameMap(named, nameMap); + // } + var _a = createRegions(firstGraphic.named), + regions = _a.regions, + regionsMap = _a.regionsMap; + this._regions = regions; + this._regionsMap = regionsMap; + } + return { + boundingRect: this._boundingRect, + regions: this._regions, + regionsMap: this._regionsMap + }; + }; + GeoSVGResource.prototype._buildGraphic = function (svgXML) { + var result; + var rootFromParse; + try { + result = svgXML && parseSVG(svgXML, { + ignoreViewBox: true, + ignoreRootClip: true + }) || {}; + rootFromParse = result.root; + assert(rootFromParse != null); + } catch (e) { + throw new Error('Invalid svg format\n' + e.message); + } + // Note: we keep the covenant that the root has no transform. So always add an extra root. + var root = new Group(); + root.add(rootFromParse); + root.isGeoSVGGraphicRoot = true; + // [THE_RULE_OF_VIEWPORT_AND_VIEWBOX] + // + // Consider: `` + // - the `width/height` we call it `svgWidth/svgHeight` for short. + // - `(0, 0, svgWidth, svgHeight)` defines the viewport of the SVG, or say, + // "viewport boundingRect", or `boundingRect` for short. + // - `viewBox` defines the transform from the real content ot the viewport. + // `viewBox` has the same unit as the content of SVG. + // If `viewBox` exists, a transform is defined, so the unit of `svgWidth/svgHeight` become + // different from the content of SVG. Otherwise, they are the same. + // + // If both `svgWidth/svgHeight/viewBox` are specified in a SVG file, the transform rule will be: + // 0. `boundingRect` is `(0, 0, svgWidth, svgHeight)`. Set it to Geo['_rect'] (View['_rect']). + // 1. Make a transform from `viewBox` to `boundingRect`. + // Note: only support `preserveAspectRatio 'xMidYMid'` here. That is, this transform will preserve + // the aspect ratio. + // 2. Make a transform from boundingRect to Geo['_viewRect'] (View['_viewRect']) + // (`Geo`/`View` will do this job). + // Note: this transform might not preserve aspect radio, which depending on how users specify + // viewRect in echarts option (e.g., `geo.left/top/width/height` will not preserve aspect ratio, + // but `geo.layoutCenter/layoutSize` will preserve aspect ratio). + // + // If `svgWidth/svgHeight` not specified, we use `viewBox` as the `boundingRect` to make the SVG + // layout look good. + // + // If neither `svgWidth/svgHeight` nor `viewBox` are not specified, we calculate the boundingRect + // of the SVG content and use them to make SVG layout look good. + var svgWidth = result.width; + var svgHeight = result.height; + var viewBoxRect = result.viewBoxRect; + var boundingRect = this._boundingRect; + if (!boundingRect) { + var bRectX = void 0; + var bRectY = void 0; + var bRectWidth = void 0; + var bRectHeight = void 0; + if (svgWidth != null) { + bRectX = 0; + bRectWidth = svgWidth; + } else if (viewBoxRect) { + bRectX = viewBoxRect.x; + bRectWidth = viewBoxRect.width; + } + if (svgHeight != null) { + bRectY = 0; + bRectHeight = svgHeight; + } else if (viewBoxRect) { + bRectY = viewBoxRect.y; + bRectHeight = viewBoxRect.height; + } + // If both viewBox and svgWidth/svgHeight not specified, + // we have to determine how to layout those element to make them look good. + if (bRectX == null || bRectY == null) { + var calculatedBoundingRect = rootFromParse.getBoundingRect(); + if (bRectX == null) { + bRectX = calculatedBoundingRect.x; + bRectWidth = calculatedBoundingRect.width; + } + if (bRectY == null) { + bRectY = calculatedBoundingRect.y; + bRectHeight = calculatedBoundingRect.height; + } + } + boundingRect = this._boundingRect = new BoundingRect(bRectX, bRectY, bRectWidth, bRectHeight); + } + if (viewBoxRect) { + var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect); + // Only support `preserveAspectRatio 'xMidYMid'` + rootFromParse.scaleX = rootFromParse.scaleY = viewBoxTransform.scale; + rootFromParse.x = viewBoxTransform.x; + rootFromParse.y = viewBoxTransform.y; + } + // SVG needs to clip based on `viewBox`. And some SVG files really rely on this feature. + // They do not strictly confine all of the content inside a display rect, but deliberately + // use a `viewBox` to define a displayable rect. + // PENDING: + // The drawback of the `setClipPath` here is: the region label (genereted by echarts) near the + // edge might also be clipped, because region labels are put as `textContent` of the SVG path. + root.setClipPath(new Rect({ + shape: boundingRect.plain() + })); + var named = []; + each(result.named, function (namedItem) { + if (REGION_AVAILABLE_SVG_TAG_MAP.get(namedItem.svgNodeTagLower) != null) { + named.push(namedItem); + setSilent(namedItem.el); + } + }); + return { + root: root, + boundingRect: boundingRect, + named: named + }; + }; + /** + * Consider: + * (1) One graphic element can not be shared by different `geoView` running simultaneously. + * Notice, also need to consider multiple echarts instances share a `mapRecord`. + * (2) Converting SVG to graphic elements is time consuming. + * (3) In the current architecture, `load` should be called frequently to get boundingRect, + * and it is called without view info. + * So we maintain graphic elements in this module, and enables `view` to use/return these + * graphics from/to the pool with it's uid. + */ + GeoSVGResource.prototype.useGraphic = function (hostKey /* , nameMap: NameMap */) { + var usedRootMap = this._usedGraphicMap; + var svgGraphic = usedRootMap.get(hostKey); + if (svgGraphic) { + return svgGraphic; + } + svgGraphic = this._freedGraphics.pop() + // use the first boundingRect to avoid duplicated boundingRect calculation. + || this._buildGraphic(this._parsedXML); + usedRootMap.set(hostKey, svgGraphic); + // PENDING: `nameMap` will not be supported until some real requirement come. + // `nameMap` can only be obtained from echarts option. + // The original `named` must not be modified. + // if (nameMap) { + // svgGraphic = extend({}, svgGraphic); + // svgGraphic.named = applyNameMap(svgGraphic.named, nameMap); + // } + return svgGraphic; + }; + GeoSVGResource.prototype.freeGraphic = function (hostKey) { + var usedRootMap = this._usedGraphicMap; + var svgGraphic = usedRootMap.get(hostKey); + if (svgGraphic) { + usedRootMap.removeKey(hostKey); + this._freedGraphics.push(svgGraphic); + } + }; + return GeoSVGResource; + }(); + function setSilent(el) { + // Only named element has silent: false, other elements should + // act as background and has no user interaction. + el.silent = false; + // text|tspan will be converted to group. + if (el.isGroup) { + el.traverse(function (child) { + child.silent = false; + }); + } + } + function createRegions(named) { + var regions = []; + var regionsMap = createHashMap(); + // Create resions only for the first graphic. + each(named, function (namedItem) { + // Region has feature to calculate center for tooltip or other features. + // If there is a , the center should be the center of the + // bounding rect of the g. + if (namedItem.namedFrom != null) { + return; + } + var region = new GeoSVGRegion(namedItem.name, namedItem.el); + // PENDING: if `nameMap` supported, this region can not be mounted on + // `this`, but can only be created each time `load()` called. + regions.push(region); + // PENDING: if multiple tag named with the same name, only one will be + // found by `_regionsMap`. `_regionsMap` is used to find a coordinate + // by name. We use `region.getCenter()` as the coordinate. + regionsMap.set(namedItem.name, region); + }); + return { + regions: regions, + regionsMap: regionsMap + }; + } + // PENDING: `nameMap` will not be supported until some real requirement come. + // /** + // * Use the alias in geoNameMap. + // * The input `named` must not be modified. + // */ + // function applyNameMap( + // named: GeoSVGGraphicRecord['named'], + // nameMap: NameMap + // ): GeoSVGGraphicRecord['named'] { + // const result = [] as GeoSVGGraphicRecord['named']; + // for (let i = 0; i < named.length; i++) { + // let regionGraphic = named[i]; + // const name = regionGraphic.name; + // if (nameMap && nameMap.hasOwnProperty(name)) { + // regionGraphic = extend({}, regionGraphic); + // regionGraphic.name = name; + // } + // result.push(regionGraphic); + // } + // return result; + // } + + var geoCoord = [126, 25]; + var nanhaiName = '南海诸岛'; + var points$1 = [[[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]]]; + for (var i = 0; i < points$1.length; i++) { + for (var k = 0; k < points$1[i].length; k++) { + points$1[i][k][0] /= 10.5; + points$1[i][k][1] /= -10.5 / 0.75; + points$1[i][k][0] += geoCoord[0]; + points$1[i][k][1] += geoCoord[1]; + } + } + function fixNanhai(mapType, regions) { + if (mapType === 'china') { + for (var i = 0; i < regions.length; i++) { + // Already exists. + if (regions[i].name === nanhaiName) { + return; + } + } + regions.push(new GeoJSONRegion(nanhaiName, map(points$1, function (exterior) { + return { + type: 'polygon', + exterior: exterior + }; + }), geoCoord)); + } + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var coordsOffsetMap = { + '南海诸岛': [32, 80], + // 全国 + '广东': [0, -10], + '香港': [10, 5], + '澳门': [-10, 10], + // '北京': [-10, 0], + '天津': [5, 5] + }; + function fixTextCoords(mapType, region) { + if (mapType === 'china') { + var coordFix = coordsOffsetMap[region.name]; + if (coordFix) { + var cp = region.getCenter(); + cp[0] += coordFix[0] / 10.5; + cp[1] += -coordFix[1] / (10.5 / 0.75); + region.setCenter(cp); + } + } + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + // Fix for 钓鱼岛 + // let Region = require('../Region'); + // let zrUtil = require('zrender/lib/core/util'); + // let geoCoord = [126, 25]; + var points$2 = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]]; + function fixDiaoyuIsland(mapType, region) { + if (mapType === 'china' && region.name === '台湾') { + region.geometries.push({ + type: 'polygon', + exterior: points$2[0] + }); + } + } + + var DEFAULT_NAME_PROPERTY = 'name'; + var GeoJSONResource = /** @class */function () { + function GeoJSONResource(mapName, geoJSON, specialAreas) { + this.type = 'geoJSON'; + this._parsedMap = createHashMap(); + this._mapName = mapName; + this._specialAreas = specialAreas; + // PENDING: delay the parse to the first usage to rapid up the FMP? + this._geoJSON = parseInput(geoJSON); + } + /** + * @param nameMap can be null/undefined + * @param nameProperty can be null/undefined + */ + GeoJSONResource.prototype.load = function (nameMap, nameProperty) { + nameProperty = nameProperty || DEFAULT_NAME_PROPERTY; + var parsed = this._parsedMap.get(nameProperty); + if (!parsed) { + var rawRegions = this._parseToRegions(nameProperty); + parsed = this._parsedMap.set(nameProperty, { + regions: rawRegions, + boundingRect: calculateBoundingRect(rawRegions) + }); + } + var regionsMap = createHashMap(); + var finalRegions = []; + each(parsed.regions, function (region) { + var regionName = region.name; + // Try use the alias in geoNameMap + if (nameMap && hasOwn(nameMap, regionName)) { + region = region.cloneShallow(regionName = nameMap[regionName]); + } + finalRegions.push(region); + regionsMap.set(regionName, region); + }); + return { + regions: finalRegions, + boundingRect: parsed.boundingRect || new BoundingRect(0, 0, 0, 0), + regionsMap: regionsMap + }; + }; + GeoJSONResource.prototype._parseToRegions = function (nameProperty) { + var mapName = this._mapName; + var geoJSON = this._geoJSON; + var rawRegions; + // https://jsperf.com/try-catch-performance-overhead + try { + rawRegions = geoJSON ? parseGeoJSON(geoJSON, nameProperty) : []; + } catch (e) { + throw new Error('Invalid geoJson format\n' + e.message); + } + fixNanhai(mapName, rawRegions); + each(rawRegions, function (region) { + var regionName = region.name; + fixTextCoords(mapName, region); + fixDiaoyuIsland(mapName, region); + // Some area like Alaska in USA map needs to be tansformed + // to look better + var specialArea = this._specialAreas && this._specialAreas[regionName]; + if (specialArea) { + region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height); + } + }, this); + return rawRegions; + }; + /** + * Only for exporting to users. + * **MUST NOT** used internally. + */ + GeoJSONResource.prototype.getMapForUser = function () { + return { + // For backward compatibility, use geoJson + // PENDING: it has been returning them without clone. + // do we need to avoid outsite modification? + geoJson: this._geoJSON, + geoJSON: this._geoJSON, + specialAreas: this._specialAreas + }; + }; + return GeoJSONResource; + }(); + function calculateBoundingRect(regions) { + var rect; + for (var i = 0; i < regions.length; i++) { + var regionRect = regions[i].getBoundingRect(); + rect = rect || regionRect.clone(); + rect.union(regionRect); + } + return rect; + } + function parseInput(source) { + return !isString(source) ? source : typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(source) : new Function('return (' + source + ');')(); + } + + var storage = createHashMap(); + var geoSourceManager = { + /** + * Compatible with previous `echarts.registerMap`. + * + * @usage + * ```js + * + * echarts.registerMap('USA', geoJson, specialAreas); + * + * echarts.registerMap('USA', { + * geoJson: geoJson, + * specialAreas: {...} + * }); + * echarts.registerMap('USA', { + * geoJSON: geoJson, + * specialAreas: {...} + * }); + * + * echarts.registerMap('airport', { + * svg: svg + * } + * ``` + * + * Note: + * Do not support that register multiple geoJSON or SVG + * one map name. Because different geoJSON and SVG have + * different unit. It's not easy to make sure how those + * units are mapping/normalize. + * If intending to use multiple geoJSON or SVG, we can + * use multiple geo coordinate system. + */ + registerMap: function (mapName, rawDef, rawSpecialAreas) { + if (rawDef.svg) { + var resource = new GeoSVGResource(mapName, rawDef.svg); + storage.set(mapName, resource); + } else { + // Recommend: + // echarts.registerMap('eu', { geoJSON: xxx, specialAreas: xxx }); + // Backward compatibility: + // echarts.registerMap('eu', geoJSON, specialAreas); + // echarts.registerMap('eu', { geoJson: xxx, specialAreas: xxx }); + var geoJSON = rawDef.geoJson || rawDef.geoJSON; + if (geoJSON && !rawDef.features) { + rawSpecialAreas = rawDef.specialAreas; + } else { + geoJSON = rawDef; + } + var resource = new GeoJSONResource(mapName, geoJSON, rawSpecialAreas); + storage.set(mapName, resource); + } + }, + getGeoResource: function (mapName) { + return storage.get(mapName); + }, + /** + * Only for exporting to users. + * **MUST NOT** used internally. + */ + getMapForUser: function (mapName) { + var resource = storage.get(mapName); + // Do not support return SVG until some real requirement come. + return resource && resource.type === 'geoJSON' && resource.getMapForUser(); + }, + load: function (mapName, nameMap, nameProperty) { + var resource = storage.get(mapName); + if (!resource) { + if ("development" !== 'production') { + console.error('Map ' + mapName + ' not exists. The GeoJSON of the map must be provided.'); + } + return; + } + return resource.load(nameMap, nameProperty); + } + }; + + /** + * Only these tags enable use `itemStyle` if they are named in SVG. + * Other tags like might not suitable for `itemStyle`. + * They will not be considered to be styled until some requirements come. + */ + var OPTION_STYLE_ENABLED_TAGS = ['rect', 'circle', 'line', 'ellipse', 'polygon', 'polyline', 'path']; + var OPTION_STYLE_ENABLED_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS); + var STATE_TRIGGER_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(['g'])); + var LABEL_HOST_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(['g'])); + var mapLabelRaw = makeInner(); + function getFixedItemStyle(model) { + var itemStyle = model.getItemStyle(); + var areaColor = model.get('areaColor'); + // If user want the color not to be changed when hover, + // they should both set areaColor and color to be null. + if (areaColor != null) { + itemStyle.fill = areaColor; + } + return itemStyle; + } + // Only stroke can be used for line. + // Using fill in style if stroke not exits. + // TODO Not sure yet. Perhaps a separate `lineStyle`? + function fixLineStyle(styleHost) { + var style = styleHost.style; + if (style) { + style.stroke = style.stroke || style.fill; + style.fill = null; + } + } + var MapDraw = /** @class */function () { + function MapDraw(api) { + var group = new Group(); + this.uid = getUID('ec_map_draw'); + this._controller = new RoamController(api.getZr()); + this._controllerHost = { + target: group + }; + this.group = group; + group.add(this._regionsGroup = new Group()); + group.add(this._svgGroup = new Group()); + } + MapDraw.prototype.draw = function (mapOrGeoModel, ecModel, api, fromView, payload) { + var isGeo = mapOrGeoModel.mainType === 'geo'; + // Map series has data. GEO model that controlled by map series + // will be assigned with map data. Other GEO model has no data. + var data = mapOrGeoModel.getData && mapOrGeoModel.getData(); + isGeo && ecModel.eachComponent({ + mainType: 'series', + subType: 'map' + }, function (mapSeries) { + if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) { + data = mapSeries.getData(); + } + }); + var geo = mapOrGeoModel.coordinateSystem; + var regionsGroup = this._regionsGroup; + var group = this.group; + var transformInfo = geo.getTransformInfo(); + var transformInfoRaw = transformInfo.raw; + var transformInfoRoam = transformInfo.roam; + // No animation when first draw or in action + var isFirstDraw = !regionsGroup.childAt(0) || payload; + if (isFirstDraw) { + group.x = transformInfoRoam.x; + group.y = transformInfoRoam.y; + group.scaleX = transformInfoRoam.scaleX; + group.scaleY = transformInfoRoam.scaleY; + group.dirty(); + } else { + updateProps(group, transformInfoRoam, mapOrGeoModel); + } + var isVisualEncodedByVisualMap = data && data.getVisual('visualMeta') && data.getVisual('visualMeta').length > 0; + var viewBuildCtx = { + api: api, + geo: geo, + mapOrGeoModel: mapOrGeoModel, + data: data, + isVisualEncodedByVisualMap: isVisualEncodedByVisualMap, + isGeo: isGeo, + transformInfoRaw: transformInfoRaw + }; + if (geo.resourceType === 'geoJSON') { + this._buildGeoJSON(viewBuildCtx); + } else if (geo.resourceType === 'geoSVG') { + this._buildSVG(viewBuildCtx); + } + this._updateController(mapOrGeoModel, ecModel, api); + this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView); + }; + MapDraw.prototype._buildGeoJSON = function (viewBuildCtx) { + var regionsGroupByName = this._regionsGroupByName = createHashMap(); + var regionsInfoByName = createHashMap(); + var regionsGroup = this._regionsGroup; + var transformInfoRaw = viewBuildCtx.transformInfoRaw; + var mapOrGeoModel = viewBuildCtx.mapOrGeoModel; + var data = viewBuildCtx.data; + var projection = viewBuildCtx.geo.projection; + var projectionStream = projection && projection.stream; + function transformPoint(point, project) { + if (project) { + // projection may return null point. + point = project(point); + } + return point && [point[0] * transformInfoRaw.scaleX + transformInfoRaw.x, point[1] * transformInfoRaw.scaleY + transformInfoRaw.y]; + } + function transformPolygonPoints(inPoints) { + var outPoints = []; + // If projectionStream is provided. Use it instead of single point project. + var project = !projectionStream && projection && projection.project; + for (var i = 0; i < inPoints.length; ++i) { + var newPt = transformPoint(inPoints[i], project); + newPt && outPoints.push(newPt); + } + return outPoints; + } + function getPolyShape(points) { + return { + shape: { + points: transformPolygonPoints(points) + } + }; + } + regionsGroup.removeAll(); + // Only when the resource is GeoJSON, there is `geo.regions`. + each(viewBuildCtx.geo.regions, function (region) { + var regionName = region.name; + // Consider in GeoJson properties.name may be duplicated, for example, + // there is multiple region named "United Kindom" or "France" (so many + // colonies). And it is not appropriate to merge them in geo, which + // will make them share the same label and bring trouble in label + // location calculation. + var regionGroup = regionsGroupByName.get(regionName); + var _a = regionsInfoByName.get(regionName) || {}, + dataIdx = _a.dataIdx, + regionModel = _a.regionModel; + if (!regionGroup) { + regionGroup = regionsGroupByName.set(regionName, new Group()); + regionsGroup.add(regionGroup); + dataIdx = data ? data.indexOfName(regionName) : null; + regionModel = viewBuildCtx.isGeo ? mapOrGeoModel.getRegionModel(regionName) : data ? data.getItemModel(dataIdx) : null; + regionsInfoByName.set(regionName, { + dataIdx: dataIdx, + regionModel: regionModel + }); + } + var polygonSubpaths = []; + var polylineSubpaths = []; + each(region.geometries, function (geometry) { + // Polygon and MultiPolygon + if (geometry.type === 'polygon') { + var polys = [geometry.exterior].concat(geometry.interiors || []); + if (projectionStream) { + polys = projectPolys(polys, projectionStream); + } + each(polys, function (poly) { + polygonSubpaths.push(new Polygon(getPolyShape(poly))); + }); + } + // LineString and MultiLineString + else { + var points = geometry.points; + if (projectionStream) { + points = projectPolys(points, projectionStream, true); + } + each(points, function (points) { + polylineSubpaths.push(new Polyline(getPolyShape(points))); + }); + } + }); + var centerPt = transformPoint(region.getCenter(), projection && projection.project); + function createCompoundPath(subpaths, isLine) { + if (!subpaths.length) { + return; + } + var compoundPath = new CompoundPath({ + culling: true, + segmentIgnoreThreshold: 1, + shape: { + paths: subpaths + } + }); + regionGroup.add(compoundPath); + applyOptionStyleForRegion(viewBuildCtx, compoundPath, dataIdx, regionModel); + resetLabelForRegion(viewBuildCtx, compoundPath, regionName, regionModel, mapOrGeoModel, dataIdx, centerPt); + if (isLine) { + fixLineStyle(compoundPath); + each(compoundPath.states, fixLineStyle); + } + } + createCompoundPath(polygonSubpaths); + createCompoundPath(polylineSubpaths, true); + }); + // Ensure children have been added to `regionGroup` before calling them. + regionsGroupByName.each(function (regionGroup, regionName) { + var _a = regionsInfoByName.get(regionName), + dataIdx = _a.dataIdx, + regionModel = _a.regionModel; + resetEventTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel, dataIdx); + resetTooltipForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel); + resetStateTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel); + }, this); + }; + MapDraw.prototype._buildSVG = function (viewBuildCtx) { + var mapName = viewBuildCtx.geo.map; + var transformInfoRaw = viewBuildCtx.transformInfoRaw; + this._svgGroup.x = transformInfoRaw.x; + this._svgGroup.y = transformInfoRaw.y; + this._svgGroup.scaleX = transformInfoRaw.scaleX; + this._svgGroup.scaleY = transformInfoRaw.scaleY; + if (this._svgResourceChanged(mapName)) { + this._freeSVG(); + this._useSVG(mapName); + } + var svgDispatcherMap = this._svgDispatcherMap = createHashMap(); + var focusSelf = false; + each(this._svgGraphicRecord.named, function (namedItem) { + // Note that we also allow different elements have the same name. + // For example, a glyph of a city and the label of the city have + // the same name and their tooltip info can be defined in a single + // region option. + var regionName = namedItem.name; + var mapOrGeoModel = viewBuildCtx.mapOrGeoModel; + var data = viewBuildCtx.data; + var svgNodeTagLower = namedItem.svgNodeTagLower; + var el = namedItem.el; + var dataIdx = data ? data.indexOfName(regionName) : null; + var regionModel = mapOrGeoModel.getRegionModel(regionName); + if (OPTION_STYLE_ENABLED_TAG_MAP.get(svgNodeTagLower) != null && el instanceof Displayable) { + applyOptionStyleForRegion(viewBuildCtx, el, dataIdx, regionModel); + } + if (el instanceof Displayable) { + el.culling = true; + } + // We do not know how the SVG like so we'd better not to change z2. + // Otherwise it might bring some unexpected result. For example, + // an area hovered that make some inner city can not be clicked. + el.z2EmphasisLift = 0; + // If self named: + if (!namedItem.namedFrom) { + // label should batter to be displayed based on the center of + // if it is named rather than displayed on each child. + if (LABEL_HOST_MAP.get(svgNodeTagLower) != null) { + resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, null); + } + resetEventTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx); + resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel); + if (STATE_TRIGGER_TAG_MAP.get(svgNodeTagLower) != null) { + var focus_1 = resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel); + if (focus_1 === 'self') { + focusSelf = true; + } + var els = svgDispatcherMap.get(regionName) || svgDispatcherMap.set(regionName, []); + els.push(el); + } + } + }, this); + this._enableBlurEntireSVG(focusSelf, viewBuildCtx); + }; + MapDraw.prototype._enableBlurEntireSVG = function (focusSelf, viewBuildCtx) { + // It's a little complicated to support blurring the entire geoSVG in series-map. + // So do not support it until some requirements come. + // At present, in series-map, only regions can be blurred. + if (focusSelf && viewBuildCtx.isGeo) { + var blurStyle = viewBuildCtx.mapOrGeoModel.getModel(['blur', 'itemStyle']).getItemStyle(); + // Only support `opacity` here. Because not sure that other props are suitable for + // all of the elements generated by SVG (especially for Text/TSpan/Image/... ). + var opacity_1 = blurStyle.opacity; + this._svgGraphicRecord.root.traverse(function (el) { + if (!el.isGroup) { + // PENDING: clear those settings to SVG elements when `_freeSVG`. + // (Currently it happen not to be needed.) + setDefaultStateProxy(el); + var style = el.ensureState('blur').style || {}; + // Do not overwrite the region style that already set from region option. + if (style.opacity == null && opacity_1 != null) { + style.opacity = opacity_1; + } + // If `ensureState('blur').style = {}`, there will be default opacity. + // Enable `stateTransition` (animation). + el.ensureState('emphasis'); + } + }); + } + }; + MapDraw.prototype.remove = function () { + this._regionsGroup.removeAll(); + this._regionsGroupByName = null; + this._svgGroup.removeAll(); + this._freeSVG(); + this._controller.dispose(); + this._controllerHost = null; + }; + MapDraw.prototype.findHighDownDispatchers = function (name, geoModel) { + if (name == null) { + return []; + } + var geo = geoModel.coordinateSystem; + if (geo.resourceType === 'geoJSON') { + var regionsGroupByName = this._regionsGroupByName; + if (regionsGroupByName) { + var regionGroup = regionsGroupByName.get(name); + return regionGroup ? [regionGroup] : []; + } + } else if (geo.resourceType === 'geoSVG') { + return this._svgDispatcherMap && this._svgDispatcherMap.get(name) || []; + } + }; + MapDraw.prototype._svgResourceChanged = function (mapName) { + return this._svgMapName !== mapName; + }; + MapDraw.prototype._useSVG = function (mapName) { + var resource = geoSourceManager.getGeoResource(mapName); + if (resource && resource.type === 'geoSVG') { + var svgGraphic = resource.useGraphic(this.uid); + this._svgGroup.add(svgGraphic.root); + this._svgGraphicRecord = svgGraphic; + this._svgMapName = mapName; + } + }; + MapDraw.prototype._freeSVG = function () { + var mapName = this._svgMapName; + if (mapName == null) { + return; + } + var resource = geoSourceManager.getGeoResource(mapName); + if (resource && resource.type === 'geoSVG') { + resource.freeGraphic(this.uid); + } + this._svgGraphicRecord = null; + this._svgDispatcherMap = null; + this._svgGroup.removeAll(); + this._svgMapName = null; + }; + MapDraw.prototype._updateController = function (mapOrGeoModel, ecModel, api) { + var geo = mapOrGeoModel.coordinateSystem; + var controller = this._controller; + var controllerHost = this._controllerHost; + // @ts-ignore FIXME:TS + controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit'); + controllerHost.zoom = geo.getZoom(); + // roamType is will be set default true if it is null + // @ts-ignore FIXME:TS + controller.enable(mapOrGeoModel.get('roam') || false); + var mainType = mapOrGeoModel.mainType; + function makeActionBase() { + var action = { + type: 'geoRoam', + componentType: mainType + }; + action[mainType + 'Id'] = mapOrGeoModel.id; + return action; + } + controller.off('pan').on('pan', function (e) { + this._mouseDownFlag = false; + updateViewOnPan(controllerHost, e.dx, e.dy); + api.dispatchAction(extend(makeActionBase(), { + dx: e.dx, + dy: e.dy, + animation: { + duration: 0 + } + })); + }, this); + controller.off('zoom').on('zoom', function (e) { + this._mouseDownFlag = false; + updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY); + api.dispatchAction(extend(makeActionBase(), { + zoom: e.scale, + originX: e.originX, + originY: e.originY, + animation: { + duration: 0 + } + })); + }, this); + controller.setPointerChecker(function (e, x, y) { + return geo.containPoint([x, y]) && !onIrrelevantElement(e, api, mapOrGeoModel); + }); + }; + /** + * FIXME: this is a temporarily workaround. + * When `geoRoam` the elements need to be reset in `MapView['render']`, because the props like + * `ignore` might have been modified by `LabelManager`, and `LabelManager#addLabelsOfSeries` + * will subsequently cache `defaultAttr` like `ignore`. If do not do this reset, the modified + * props will have no chance to be restored. + * Note: This reset should be after `clearStates` in `renderSeries` because `useStates` in + * `renderSeries` will cache the modified `ignore` to `el._normalState`. + * TODO: + * Use clone/immutable in `LabelManager`? + */ + MapDraw.prototype.resetForLabelLayout = function () { + this.group.traverse(function (el) { + var label = el.getTextContent(); + if (label) { + label.ignore = mapLabelRaw(label).ignore; + } + }); + }; + MapDraw.prototype._updateMapSelectHandler = function (mapOrGeoModel, regionsGroup, api, fromView) { + var mapDraw = this; + regionsGroup.off('mousedown'); + regionsGroup.off('click'); + // @ts-ignore FIXME:TS resolve type conflict + if (mapOrGeoModel.get('selectedMode')) { + regionsGroup.on('mousedown', function () { + mapDraw._mouseDownFlag = true; + }); + regionsGroup.on('click', function (e) { + if (!mapDraw._mouseDownFlag) { + return; + } + mapDraw._mouseDownFlag = false; + }); + } + }; + return MapDraw; + }(); + function applyOptionStyleForRegion(viewBuildCtx, el, dataIndex, regionModel) { + // All of the path are using `itemStyle`, because + // (1) Some SVG also use fill on polyline (The different between + // polyline and polygon is "open" or "close" but not fill or not). + // (2) For the common props like opacity, if some use itemStyle + // and some use `lineStyle`, it might confuse users. + // (3) Most SVG use , where can not detect whether to draw a "line" + // or a filled shape, so use `itemStyle` for . + var normalStyleModel = regionModel.getModel('itemStyle'); + var emphasisStyleModel = regionModel.getModel(['emphasis', 'itemStyle']); + var blurStyleModel = regionModel.getModel(['blur', 'itemStyle']); + var selectStyleModel = regionModel.getModel(['select', 'itemStyle']); + // NOTE: DON'T use 'style' in visual when drawing map. + // This component is used for drawing underlying map for both geo component and map series. + var normalStyle = getFixedItemStyle(normalStyleModel); + var emphasisStyle = getFixedItemStyle(emphasisStyleModel); + var selectStyle = getFixedItemStyle(selectStyleModel); + var blurStyle = getFixedItemStyle(blurStyleModel); + // Update the itemStyle if has data visual + var data = viewBuildCtx.data; + if (data) { + // Only visual color of each item will be used. It can be encoded by visualMap + // But visual color of series is used in symbol drawing + // Visual color for each series is for the symbol draw + var style = data.getItemVisual(dataIndex, 'style'); + var decal = data.getItemVisual(dataIndex, 'decal'); + if (viewBuildCtx.isVisualEncodedByVisualMap && style.fill) { + normalStyle.fill = style.fill; + } + if (decal) { + normalStyle.decal = createOrUpdatePatternFromDecal(decal, viewBuildCtx.api); + } + } + // SVG text, tspan and image can be named but not supporeted + // to be styled by region option yet. + el.setStyle(normalStyle); + el.style.strokeNoScale = true; + el.ensureState('emphasis').style = emphasisStyle; + el.ensureState('select').style = selectStyle; + el.ensureState('blur').style = blurStyle; + // Enable blur + setDefaultStateProxy(el); + } + function resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, + // Exist only if `viewBuildCtx.data` exists. + dataIdx, + // If labelXY not provided, use `textConfig.position: 'inside'` + labelXY) { + var data = viewBuildCtx.data; + var isGeo = viewBuildCtx.isGeo; + var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx)); + var itemLayout = data && data.getItemLayout(dataIdx); + // In the following cases label will be drawn + // 1. In map series and data value is NaN + // 2. In geo component + // 3. Region has no series legendIcon, which will be add a showLabel flag in mapSymbolLayout + if (isGeo || isDataNaN || itemLayout && itemLayout.showLabel) { + var query = !isGeo ? dataIdx : regionName; + var labelFetcher = void 0; + // Consider dataIdx not found. + if (!data || dataIdx >= 0) { + labelFetcher = mapOrGeoModel; + } + var specifiedTextOpt = labelXY ? { + normal: { + align: 'center', + verticalAlign: 'middle' + } + } : null; + // Caveat: must be called after `setDefaultStateProxy(el);` called. + // because textContent will be assign with `el.stateProxy` inside. + setLabelStyle(el, getLabelStatesModels(regionModel), { + labelFetcher: labelFetcher, + labelDataIndex: query, + defaultText: regionName + }, specifiedTextOpt); + var textEl = el.getTextContent(); + if (textEl) { + mapLabelRaw(textEl).ignore = textEl.ignore; + if (el.textConfig && labelXY) { + // Compute a relative offset based on the el bounding rect. + var rect = el.getBoundingRect().clone(); + // Need to make sure the percent position base on the same rect in normal and + // emphasis state. Otherwise if using boundingRect of el, but the emphasis state + // has borderWidth (even 0.5px), the text position will be changed obviously + // if the position is very big like ['1234%', '1345%']. + el.textConfig.layoutRect = rect; + el.textConfig.position = [(labelXY[0] - rect.x) / rect.width * 100 + '%', (labelXY[1] - rect.y) / rect.height * 100 + '%']; + } + } + // PENDING: + // If labelLayout is enabled (test/label-layout.html), el.dataIndex should be specified. + // But el.dataIndex is also used to determine whether user event should be triggered, + // where el.seriesIndex or el.dataModel must be specified. At present for a single el + // there is not case that "only label layout enabled but user event disabled", so here + // we depends `resetEventTriggerForRegion` to do the job of setting `el.dataIndex`. + el.disableLabelAnimation = true; + } else { + el.removeTextContent(); + el.removeTextConfig(); + el.disableLabelAnimation = null; + } + } + function resetEventTriggerForRegion(viewBuildCtx, eventTrigger, regionName, regionModel, mapOrGeoModel, + // Exist only if `viewBuildCtx.data` exists. + dataIdx) { + // setItemGraphicEl, setHoverStyle after all polygons and labels + // are added to the regionGroup + if (viewBuildCtx.data) { + // FIXME: when series-map use a SVG map, and there are duplicated name specified + // on different SVG elements, after `data.setItemGraphicEl(...)`: + // (1) all of them will be mounted with `dataIndex`, `seriesIndex`, so that tooltip + // can be triggered only mouse hover. That's correct. + // (2) only the last element will be kept in `data`, so that if trigger tooltip + // by `dispatchAction`, only the last one can be found and triggered. That might be + // not correct. We will fix it in future if anyone demanding that. + viewBuildCtx.data.setItemGraphicEl(dataIdx, eventTrigger); + } + // series-map will not trigger "geoselectchange" no matter it is + // based on a declared geo component. Because series-map will + // trigger "selectchange". If it trigger both the two events, + // If users call `chart.dispatchAction({type: 'toggleSelect'})`, + // it not easy to also fire event "geoselectchanged". + else { + // Package custom mouse event for geo component + getECData(eventTrigger).eventData = { + componentType: 'geo', + componentIndex: mapOrGeoModel.componentIndex, + geoIndex: mapOrGeoModel.componentIndex, + name: regionName, + region: regionModel && regionModel.option || {} + }; + } + } + function resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) { + if (!viewBuildCtx.data) { + setTooltipConfig({ + el: el, + componentModel: mapOrGeoModel, + itemName: regionName, + // @ts-ignore FIXME:TS fix the "compatible with each other"? + itemTooltipOption: regionModel.get('tooltip') + }); + } + } + function resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) { + // @ts-ignore FIXME:TS fix the "compatible with each other"? + el.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode'); + // @ts-ignore FIXME:TS fix the "compatible with each other"? + var emphasisModel = regionModel.getModel('emphasis'); + var focus = emphasisModel.get('focus'); + toggleHoverEmphasis(el, focus, emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + if (viewBuildCtx.isGeo) { + enableComponentHighDownFeatures(el, mapOrGeoModel, regionName); + } + return focus; + } + function projectPolys(rings, + // Polygons include exterior and interiors. Or polylines. + createStream, isLine) { + var polygons = []; + var curPoly; + function startPolygon() { + curPoly = []; + } + function endPolygon() { + if (curPoly.length) { + polygons.push(curPoly); + curPoly = []; + } + } + var stream = createStream({ + polygonStart: startPolygon, + polygonEnd: endPolygon, + lineStart: startPolygon, + lineEnd: endPolygon, + point: function (x, y) { + // May have NaN values from stream. + if (isFinite(x) && isFinite(y)) { + curPoly.push([x, y]); + } + }, + sphere: function () {} + }); + !isLine && stream.polygonStart(); + each(rings, function (ring) { + stream.lineStart(); + for (var i = 0; i < ring.length; i++) { + stream.point(ring[i][0], ring[i][1]); + } + stream.lineEnd(); + }); + !isLine && stream.polygonEnd(); + return polygons; + } + // @ts-ignore FIXME:TS fix the "compatible with each other"? + + var MapView = /** @class */function (_super) { + __extends(MapView, _super); + function MapView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MapView.type; + return _this; + } + MapView.prototype.render = function (mapModel, ecModel, api, payload) { + // Not render if it is an toggleSelect action from self + if (payload && payload.type === 'mapToggleSelect' && payload.from === this.uid) { + return; + } + var group = this.group; + group.removeAll(); + if (mapModel.getHostGeoModel()) { + return; + } + if (this._mapDraw && payload && payload.type === 'geoRoam') { + this._mapDraw.resetForLabelLayout(); + } + // Not update map if it is an roam action from self + if (!(payload && payload.type === 'geoRoam' && payload.componentType === 'series' && payload.seriesId === mapModel.id)) { + if (mapModel.needsDrawMap) { + var mapDraw = this._mapDraw || new MapDraw(api); + group.add(mapDraw.group); + mapDraw.draw(mapModel, ecModel, api, this, payload); + this._mapDraw = mapDraw; + } else { + // Remove drawn map + this._mapDraw && this._mapDraw.remove(); + this._mapDraw = null; + } + } else { + var mapDraw = this._mapDraw; + mapDraw && group.add(mapDraw.group); + } + mapModel.get('showLegendSymbol') && ecModel.getComponent('legend') && this._renderSymbols(mapModel, ecModel, api); + }; + MapView.prototype.remove = function () { + this._mapDraw && this._mapDraw.remove(); + this._mapDraw = null; + this.group.removeAll(); + }; + MapView.prototype.dispose = function () { + this._mapDraw && this._mapDraw.remove(); + this._mapDraw = null; + }; + MapView.prototype._renderSymbols = function (mapModel, ecModel, api) { + var originalData = mapModel.originalData; + var group = this.group; + originalData.each(originalData.mapDimension('value'), function (value, originalDataIndex) { + if (isNaN(value)) { + return; + } + var layout = originalData.getItemLayout(originalDataIndex); + if (!layout || !layout.point) { + // Not exists in map + return; + } + var point = layout.point; + var offset = layout.offset; + var circle = new Circle({ + style: { + // Because the special of map draw. + // Which needs statistic of multiple series and draw on one map. + // And each series also need a symbol with legend color + // + // Layout and visual are put one the different data + // TODO + fill: mapModel.getData().getVisual('style').fill + }, + shape: { + cx: point[0] + offset * 9, + cy: point[1], + r: 3 + }, + silent: true, + // Do not overlap the first series, on which labels are displayed. + z2: 8 + (!offset ? Z2_EMPHASIS_LIFT + 1 : 0) + }); + // Only the series that has the first value on the same region is in charge of rendering the label. + // But consider the case: + // series: [ + // {id: 'X', type: 'map', map: 'm', {data: [{name: 'A', value: 11}, {name: 'B', {value: 22}]}, + // {id: 'Y', type: 'map', map: 'm', {data: [{name: 'A', value: 21}, {name: 'C', {value: 33}]} + // ] + // The offset `0` of item `A` is at series `X`, but of item `C` is at series `Y`. + // For backward compatibility, we follow the rule that render label `A` by the + // settings on series `X` but render label `C` by the settings on series `Y`. + if (!offset) { + var fullData = mapModel.mainSeries.getData(); + var name_1 = originalData.getName(originalDataIndex); + var fullIndex_1 = fullData.indexOfName(name_1); + var itemModel = originalData.getItemModel(originalDataIndex); + var labelModel = itemModel.getModel('label'); + var regionGroup = fullData.getItemGraphicEl(fullIndex_1); + // `getFormattedLabel` needs to use `getData` inside. Here + // `mapModel.getData()` is shallow cloned from `mainSeries.getData()`. + // FIXME + // If this is not the `mainSeries`, the item model (like label formatter) + // set on original data item will never get. But it has been working + // like that from the beginning, and this scenario is rarely encountered. + // So it won't be fixed until we have to. + setLabelStyle(circle, getLabelStatesModels(itemModel), { + labelFetcher: { + getFormattedLabel: function (idx, state) { + return mapModel.getFormattedLabel(fullIndex_1, state); + } + }, + defaultText: name_1 + }); + circle.disableLabelAnimation = true; + if (!labelModel.get('position')) { + circle.setTextConfig({ + position: 'bottom' + }); + } + regionGroup.onHoverStateChange = function (toState) { + setStatesFlag(circle, toState); + }; + } + group.add(circle); + }); + }; + MapView.type = 'map'; + return MapView; + }(ChartView); + + var MapSeries = /** @class */function (_super) { + __extends(MapSeries, _super); + function MapSeries() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MapSeries.type; + // Only first map series of same mapType will drawMap. + _this.needsDrawMap = false; + // Group of all map series with same mapType + _this.seriesGroup = []; + _this.getTooltipPosition = function (dataIndex) { + if (dataIndex != null) { + var name_1 = this.getData().getName(dataIndex); + var geo = this.coordinateSystem; + var region = geo.getRegion(name_1); + return region && geo.dataToPoint(region.getCenter()); + } + }; + return _this; + } + MapSeries.prototype.getInitialData = function (option) { + var data = createSeriesDataSimply(this, { + coordDimensions: ['value'], + encodeDefaulter: curry(makeSeriesEncodeForNameBased, this) + }); + var dataNameMap = createHashMap(); + var toAppendNames = []; + for (var i = 0, len = data.count(); i < len; i++) { + var name_2 = data.getName(i); + dataNameMap.set(name_2, true); + } + var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty); + each(geoSource.regions, function (region) { + var name = region.name; + if (!dataNameMap.get(name)) { + toAppendNames.push(name); + } + }); + // Complete data with missing regions. The consequent processes (like visual + // map and render) can not be performed without a "full data". For example, + // find `dataIndex` by name. + data.appendValues([], toAppendNames); + return data; + }; + /** + * If no host geo model, return null, which means using a + * inner exclusive geo model. + */ + MapSeries.prototype.getHostGeoModel = function () { + var geoIndex = this.option.geoIndex; + return geoIndex != null ? this.ecModel.getComponent('geo', geoIndex) : null; + }; + MapSeries.prototype.getMapType = function () { + return (this.getHostGeoModel() || this).option.map; + }; + // _fillOption(option, mapName) { + // Shallow clone + // option = zrUtil.extend({}, option); + // option.data = geoCreator.getFilledRegions(option.data, mapName, option.nameMap); + // return option; + // } + MapSeries.prototype.getRawValue = function (dataIndex) { + // Use value stored in data instead because it is calculated from multiple series + // FIXME Provide all value of multiple series ? + var data = this.getData(); + return data.get(data.mapDimension('value'), dataIndex); + }; + /** + * Get model of region + */ + MapSeries.prototype.getRegionModel = function (regionName) { + var data = this.getData(); + return data.getItemModel(data.indexOfName(regionName)); + }; + /** + * Map tooltip formatter + */ + MapSeries.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + // FIXME orignalData and data is a bit confusing + var data = this.getData(); + var value = this.getRawValue(dataIndex); + var name = data.getName(dataIndex); + var seriesGroup = this.seriesGroup; + var seriesNames = []; + for (var i = 0; i < seriesGroup.length; i++) { + var otherIndex = seriesGroup[i].originalData.indexOfName(name); + var valueDim = data.mapDimension('value'); + if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) { + seriesNames.push(seriesGroup[i].name); + } + } + return createTooltipMarkup('section', { + header: seriesNames.join(', '), + noHeader: !seriesNames.length, + blocks: [createTooltipMarkup('nameValue', { + name: name, + value: value + })] + }); + }; + MapSeries.prototype.setZoom = function (zoom) { + this.option.zoom = zoom; + }; + MapSeries.prototype.setCenter = function (center) { + this.option.center = center; + }; + MapSeries.prototype.getLegendIcon = function (opt) { + var iconType = opt.icon || 'roundRect'; + var icon = createSymbol(iconType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill); + icon.setStyle(opt.itemStyle); + // Map do not use itemStyle.borderWidth as border width + icon.style.stroke = 'none'; + // No rotation because no series visual symbol for map + if (iconType.indexOf('empty') > -1) { + icon.style.stroke = icon.style.fill; + icon.style.fill = '#fff'; + icon.style.lineWidth = 2; + } + return icon; + }; + MapSeries.type = 'series.map'; + MapSeries.dependencies = ['geo']; + MapSeries.layoutMode = 'box'; + MapSeries.defaultOption = { + // 一级层叠 + // zlevel: 0, + // 二级层叠 + z: 2, + coordinateSystem: 'geo', + // map should be explicitly specified since ec3. + map: '', + // If `geoIndex` is not specified, a exclusive geo will be + // created. Otherwise use the specified geo component, and + // `map` and `mapType` are ignored. + // geoIndex: 0, + // 'center' | 'left' | 'right' | 'x%' | {number} + left: 'center', + // 'center' | 'top' | 'bottom' | 'x%' | {number} + top: 'center', + // right + // bottom + // width: + // height + // Aspect is width / height. Inited to be geoJson bbox aspect + // This parameter is used for scale this aspect + // Default value: + // for geoSVG source: 1, + // for geoJSON source: 0.75. + aspectScale: null, + // Layout with center and size + // If you want to put map in a fixed size box with right aspect ratio + // This two properties may be more convenient. + // layoutCenter: [50%, 50%] + // layoutSize: 100 + showLegendSymbol: true, + // Define left-top, right-bottom coords to control view + // For example, [ [180, 90], [-180, -90] ], + // higher priority than center and zoom + boundingCoords: null, + // Default on center of map + center: null, + zoom: 1, + scaleLimit: null, + selectedMode: true, + label: { + show: false, + color: '#000' + }, + // scaleLimit: null, + itemStyle: { + borderWidth: 0.5, + borderColor: '#444', + areaColor: '#eee' + }, + emphasis: { + label: { + show: true, + color: 'rgb(100,0,0)' + }, + itemStyle: { + areaColor: 'rgba(255,215,0,0.8)' + } + }, + select: { + label: { + show: true, + color: 'rgb(100,0,0)' + }, + itemStyle: { + color: 'rgba(255,215,0,0.8)' + } + }, + nameProperty: 'name' + }; + return MapSeries; + }(SeriesModel); + + // FIXME 公用? + function dataStatistics(datas, statisticType) { + var dataNameMap = {}; + each(datas, function (data) { + data.each(data.mapDimension('value'), function (value, idx) { + // Add prefix to avoid conflict with Object.prototype. + var mapKey = 'ec-' + data.getName(idx); + dataNameMap[mapKey] = dataNameMap[mapKey] || []; + if (!isNaN(value)) { + dataNameMap[mapKey].push(value); + } + }); + }); + return datas[0].map(datas[0].mapDimension('value'), function (value, idx) { + var mapKey = 'ec-' + datas[0].getName(idx); + var sum = 0; + var min = Infinity; + var max = -Infinity; + var len = dataNameMap[mapKey].length; + for (var i = 0; i < len; i++) { + min = Math.min(min, dataNameMap[mapKey][i]); + max = Math.max(max, dataNameMap[mapKey][i]); + sum += dataNameMap[mapKey][i]; + } + var result; + if (statisticType === 'min') { + result = min; + } else if (statisticType === 'max') { + result = max; + } else if (statisticType === 'average') { + result = sum / len; + } else { + result = sum; + } + return len === 0 ? NaN : result; + }); + } + function mapDataStatistic(ecModel) { + var seriesGroups = {}; + ecModel.eachSeriesByType('map', function (seriesModel) { + var hostGeoModel = seriesModel.getHostGeoModel(); + var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType(); + (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel); + }); + each(seriesGroups, function (seriesList, key) { + var data = dataStatistics(map(seriesList, function (seriesModel) { + return seriesModel.getData(); + }), seriesList[0].get('mapValueCalculation')); + for (var i = 0; i < seriesList.length; i++) { + seriesList[i].originalData = seriesList[i].getData(); + } + // FIXME Put where? + for (var i = 0; i < seriesList.length; i++) { + seriesList[i].seriesGroup = seriesList; + seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel(); + seriesList[i].setData(data.cloneShallow()); + seriesList[i].mainSeries = seriesList[0]; + } + }); + } + + function mapSymbolLayout(ecModel) { + var processedMapType = {}; + ecModel.eachSeriesByType('map', function (mapSeries) { + var mapType = mapSeries.getMapType(); + if (mapSeries.getHostGeoModel() || processedMapType[mapType]) { + return; + } + var mapSymbolOffsets = {}; + each(mapSeries.seriesGroup, function (subMapSeries) { + var geo = subMapSeries.coordinateSystem; + var data = subMapSeries.originalData; + if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) { + data.each(data.mapDimension('value'), function (value, idx) { + var name = data.getName(idx); + var region = geo.getRegion(name); + // If input series.data is [11, 22, '-'/null/undefined, 44], + // it will be filled with NaN: [11, 22, NaN, 44] and NaN will + // not be drawn. So here must validate if value is NaN. + if (!region || isNaN(value)) { + return; + } + var offset = mapSymbolOffsets[name] || 0; + var point = geo.dataToPoint(region.getCenter()); + mapSymbolOffsets[name] = offset + 1; + data.setItemLayout(idx, { + point: point, + offset: offset + }); + }); + } + }); + // Show label of those region not has legendIcon (which is offset 0) + var data = mapSeries.getData(); + data.each(function (idx) { + var name = data.getName(idx); + var layout = data.getItemLayout(idx) || {}; + layout.showLabel = !mapSymbolOffsets[name]; + data.setItemLayout(idx, layout); + }); + processedMapType[mapType] = true; + }); + } + + var v2ApplyTransform = applyTransform; + var View = /** @class */function (_super) { + __extends(View, _super); + function View(name) { + var _this = _super.call(this) || this; + _this.type = 'view'; + _this.dimensions = ['x', 'y']; + /** + * Represents the transform brought by roam/zoom. + * If `View['_viewRect']` applies roam transform, + * we can get the final displayed rect. + */ + _this._roamTransformable = new Transformable(); + /** + * Represents the transform from `View['_rect']` to `View['_viewRect']`. + */ + _this._rawTransformable = new Transformable(); + _this.name = name; + return _this; + } + View.prototype.setBoundingRect = function (x, y, width, height) { + this._rect = new BoundingRect(x, y, width, height); + return this._rect; + }; + /** + * @return {module:zrender/core/BoundingRect} + */ + View.prototype.getBoundingRect = function () { + return this._rect; + }; + View.prototype.setViewRect = function (x, y, width, height) { + this._transformTo(x, y, width, height); + this._viewRect = new BoundingRect(x, y, width, height); + }; + /** + * Transformed to particular position and size + */ + View.prototype._transformTo = function (x, y, width, height) { + var rect = this.getBoundingRect(); + var rawTransform = this._rawTransformable; + rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height)); + var rawParent = rawTransform.parent; + rawTransform.parent = null; + rawTransform.decomposeTransform(); + rawTransform.parent = rawParent; + this._updateTransform(); + }; + /** + * Set center of view + */ + View.prototype.setCenter = function (centerCoord, api) { + if (!centerCoord) { + return; + } + this._center = [parsePercent$1(centerCoord[0], api.getWidth()), parsePercent$1(centerCoord[1], api.getHeight())]; + this._updateCenterAndZoom(); + }; + View.prototype.setZoom = function (zoom) { + zoom = zoom || 1; + var zoomLimit = this.zoomLimit; + if (zoomLimit) { + if (zoomLimit.max != null) { + zoom = Math.min(zoomLimit.max, zoom); + } + if (zoomLimit.min != null) { + zoom = Math.max(zoomLimit.min, zoom); + } + } + this._zoom = zoom; + this._updateCenterAndZoom(); + }; + /** + * Get default center without roam + */ + View.prototype.getDefaultCenter = function () { + // Rect before any transform + var rawRect = this.getBoundingRect(); + var cx = rawRect.x + rawRect.width / 2; + var cy = rawRect.y + rawRect.height / 2; + return [cx, cy]; + }; + View.prototype.getCenter = function () { + return this._center || this.getDefaultCenter(); + }; + View.prototype.getZoom = function () { + return this._zoom || 1; + }; + View.prototype.getRoamTransform = function () { + return this._roamTransformable.getLocalTransform(); + }; + /** + * Remove roam + */ + View.prototype._updateCenterAndZoom = function () { + // Must update after view transform updated + var rawTransformMatrix = this._rawTransformable.getLocalTransform(); + var roamTransform = this._roamTransformable; + var defaultCenter = this.getDefaultCenter(); + var center = this.getCenter(); + var zoom = this.getZoom(); + center = applyTransform([], center, rawTransformMatrix); + defaultCenter = applyTransform([], defaultCenter, rawTransformMatrix); + roamTransform.originX = center[0]; + roamTransform.originY = center[1]; + roamTransform.x = defaultCenter[0] - center[0]; + roamTransform.y = defaultCenter[1] - center[1]; + roamTransform.scaleX = roamTransform.scaleY = zoom; + this._updateTransform(); + }; + /** + * Update transform props on `this` based on the current + * `this._roamTransformable` and `this._rawTransformable`. + */ + View.prototype._updateTransform = function () { + var roamTransformable = this._roamTransformable; + var rawTransformable = this._rawTransformable; + rawTransformable.parent = roamTransformable; + roamTransformable.updateTransform(); + rawTransformable.updateTransform(); + copy$1(this.transform || (this.transform = []), rawTransformable.transform || create$1()); + this._rawTransform = rawTransformable.getLocalTransform(); + this.invTransform = this.invTransform || []; + invert(this.invTransform, this.transform); + this.decomposeTransform(); + }; + View.prototype.getTransformInfo = function () { + var rawTransformable = this._rawTransformable; + var roamTransformable = this._roamTransformable; + // Because roamTransformabel has `originX/originY` modified, + // but the caller of `getTransformInfo` can not handle `originX/originY`, + // so need to recalculate them. + var dummyTransformable = new Transformable(); + dummyTransformable.transform = roamTransformable.transform; + dummyTransformable.decomposeTransform(); + return { + roam: { + x: dummyTransformable.x, + y: dummyTransformable.y, + scaleX: dummyTransformable.scaleX, + scaleY: dummyTransformable.scaleY + }, + raw: { + x: rawTransformable.x, + y: rawTransformable.y, + scaleX: rawTransformable.scaleX, + scaleY: rawTransformable.scaleY + } + }; + }; + View.prototype.getViewRect = function () { + return this._viewRect; + }; + /** + * Get view rect after roam transform + */ + View.prototype.getViewRectAfterRoam = function () { + var rect = this.getBoundingRect().clone(); + rect.applyTransform(this.transform); + return rect; + }; + /** + * Convert a single (lon, lat) data item to (x, y) point. + */ + View.prototype.dataToPoint = function (data, noRoam, out) { + var transform = noRoam ? this._rawTransform : this.transform; + out = out || []; + return transform ? v2ApplyTransform(out, data, transform) : copy(out, data); + }; + /** + * Convert a (x, y) point to (lon, lat) data + */ + View.prototype.pointToData = function (point) { + var invTransform = this.invTransform; + return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]]; + }; + View.prototype.convertToPixel = function (ecModel, finder, value) { + var coordSys = getCoordSys(finder); + return coordSys === this ? coordSys.dataToPoint(value) : null; + }; + View.prototype.convertFromPixel = function (ecModel, finder, pixel) { + var coordSys = getCoordSys(finder); + return coordSys === this ? coordSys.pointToData(pixel) : null; + }; + /** + * @implements + */ + View.prototype.containPoint = function (point) { + return this.getViewRectAfterRoam().contain(point[0], point[1]); + }; + View.dimensions = ['x', 'y']; + return View; + }(Transformable); + function getCoordSys(finder) { + var seriesModel = finder.seriesModel; + return seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph. + } + + var GEO_DEFAULT_PARAMS = { + 'geoJSON': { + aspectScale: 0.75, + invertLongitute: true + }, + 'geoSVG': { + aspectScale: 1, + invertLongitute: false + } + }; + var geo2DDimensions = ['lng', 'lat']; + var Geo = /** @class */function (_super) { + __extends(Geo, _super); + function Geo(name, map, opt) { + var _this = _super.call(this, name) || this; + _this.dimensions = geo2DDimensions; + _this.type = 'geo'; + // Only store specified name coord via `addGeoCoord`. + _this._nameCoordMap = createHashMap(); + _this.map = map; + var projection = opt.projection; + var source = geoSourceManager.load(map, opt.nameMap, opt.nameProperty); + var resource = geoSourceManager.getGeoResource(map); + var resourceType = _this.resourceType = resource ? resource.type : null; + var regions = _this.regions = source.regions; + var defaultParams = GEO_DEFAULT_PARAMS[resource.type]; + _this._regionsMap = source.regionsMap; + _this.regions = source.regions; + if ("development" !== 'production' && projection) { + // Do some check + if (resourceType === 'geoSVG') { + if ("development" !== 'production') { + warn("Map " + map + " with SVG source can't use projection. Only GeoJSON source supports projection."); + } + projection = null; + } + if (!(projection.project && projection.unproject)) { + if ("development" !== 'production') { + warn('project and unproject must be both provided in the projeciton.'); + } + projection = null; + } + } + _this.projection = projection; + var boundingRect; + if (projection) { + // Can't reuse the raw bounding rect + for (var i = 0; i < regions.length; i++) { + var regionRect = regions[i].getBoundingRect(projection); + boundingRect = boundingRect || regionRect.clone(); + boundingRect.union(regionRect); + } + } else { + boundingRect = source.boundingRect; + } + _this.setBoundingRect(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height); + // aspectScale and invertLongitute actually is the parameters default raw projection. + // So we ignore them if projection is given. + // Ignore default aspect scale if projection exits. + _this.aspectScale = projection ? 1 : retrieve2(opt.aspectScale, defaultParams.aspectScale); + // Not invert longitude if projection exits. + _this._invertLongitute = projection ? false : defaultParams.invertLongitute; + return _this; + } + Geo.prototype._transformTo = function (x, y, width, height) { + var rect = this.getBoundingRect(); + var invertLongitute = this._invertLongitute; + rect = rect.clone(); + if (invertLongitute) { + // Longitude is inverted. + rect.y = -rect.y - rect.height; + } + var rawTransformable = this._rawTransformable; + rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height)); + var rawParent = rawTransformable.parent; + rawTransformable.parent = null; + rawTransformable.decomposeTransform(); + rawTransformable.parent = rawParent; + if (invertLongitute) { + rawTransformable.scaleY = -rawTransformable.scaleY; + } + this._updateTransform(); + }; + Geo.prototype.getRegion = function (name) { + return this._regionsMap.get(name); + }; + Geo.prototype.getRegionByCoord = function (coord) { + var regions = this.regions; + for (var i = 0; i < regions.length; i++) { + var region = regions[i]; + if (region.type === 'geoJSON' && region.contain(coord)) { + return regions[i]; + } + } + }; + /** + * Add geoCoord for indexing by name + */ + Geo.prototype.addGeoCoord = function (name, geoCoord) { + this._nameCoordMap.set(name, geoCoord); + }; + /** + * Get geoCoord by name + */ + Geo.prototype.getGeoCoord = function (name) { + var region = this._regionsMap.get(name); + // Calculate center only on demand. + return this._nameCoordMap.get(name) || region && region.getCenter(); + }; + Geo.prototype.dataToPoint = function (data, noRoam, out) { + if (isString(data)) { + // Map area name to geoCoord + data = this.getGeoCoord(data); + } + if (data) { + var projection = this.projection; + if (projection) { + // projection may return null point. + data = projection.project(data); + } + return data && this.projectedToPoint(data, noRoam, out); + } + }; + Geo.prototype.pointToData = function (point) { + var projection = this.projection; + if (projection) { + // projection may return null point. + point = projection.unproject(point); + } + return point && this.pointToProjected(point); + }; + /** + * Point to projected data. Same with pointToData when projection is used. + */ + Geo.prototype.pointToProjected = function (point) { + return _super.prototype.pointToData.call(this, point); + }; + Geo.prototype.projectedToPoint = function (projected, noRoam, out) { + return _super.prototype.dataToPoint.call(this, projected, noRoam, out); + }; + Geo.prototype.convertToPixel = function (ecModel, finder, value) { + var coordSys = getCoordSys$1(finder); + return coordSys === this ? coordSys.dataToPoint(value) : null; + }; + Geo.prototype.convertFromPixel = function (ecModel, finder, pixel) { + var coordSys = getCoordSys$1(finder); + return coordSys === this ? coordSys.pointToData(pixel) : null; + }; + return Geo; + }(View); + mixin(Geo, View); + function getCoordSys$1(finder) { + var geoModel = finder.geoModel; + var seriesModel = finder.seriesModel; + return geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem // For map series. + || (seriesModel.getReferringComponents('geo', SINGLE_REFERRING).models[0] || {}).coordinateSystem : null; + } + + /** + * Resize method bound to the geo + */ + function resizeGeo(geoModel, api) { + var boundingCoords = geoModel.get('boundingCoords'); + if (boundingCoords != null) { + var leftTop_1 = boundingCoords[0]; + var rightBottom_1 = boundingCoords[1]; + if (!(isFinite(leftTop_1[0]) && isFinite(leftTop_1[1]) && isFinite(rightBottom_1[0]) && isFinite(rightBottom_1[1]))) { + if ("development" !== 'production') { + console.error('Invalid boundingCoords'); + } + } else { + // Sample around the lng/lat rect and use projection to calculate actual bounding rect. + var projection_1 = this.projection; + if (projection_1) { + var xMin = leftTop_1[0]; + var yMin = leftTop_1[1]; + var xMax = rightBottom_1[0]; + var yMax = rightBottom_1[1]; + leftTop_1 = [Infinity, Infinity]; + rightBottom_1 = [-Infinity, -Infinity]; + // TODO better way? + var sampleLine = function (x0, y0, x1, y1) { + var dx = x1 - x0; + var dy = y1 - y0; + for (var i = 0; i <= 100; i++) { + var p = i / 100; + var pt = projection_1.project([x0 + dx * p, y0 + dy * p]); + min(leftTop_1, leftTop_1, pt); + max(rightBottom_1, rightBottom_1, pt); + } + }; + // Top + sampleLine(xMin, yMin, xMax, yMin); + // Right + sampleLine(xMax, yMin, xMax, yMax); + // Bottom + sampleLine(xMax, yMax, xMin, yMax); + // Left + sampleLine(xMin, yMax, xMax, yMin); + } + this.setBoundingRect(leftTop_1[0], leftTop_1[1], rightBottom_1[0] - leftTop_1[0], rightBottom_1[1] - leftTop_1[1]); + } + } + var rect = this.getBoundingRect(); + var centerOption = geoModel.get('layoutCenter'); + var sizeOption = geoModel.get('layoutSize'); + var viewWidth = api.getWidth(); + var viewHeight = api.getHeight(); + var aspect = rect.width / rect.height * this.aspectScale; + var useCenterAndSize = false; + var center; + var size; + if (centerOption && sizeOption) { + center = [parsePercent$1(centerOption[0], viewWidth), parsePercent$1(centerOption[1], viewHeight)]; + size = parsePercent$1(sizeOption, Math.min(viewWidth, viewHeight)); + if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) { + useCenterAndSize = true; + } else { + if ("development" !== 'production') { + console.warn('Given layoutCenter or layoutSize data are invalid. Use left/top/width/height instead.'); + } + } + } + var viewRect; + if (useCenterAndSize) { + viewRect = {}; + if (aspect > 1) { + // Width is same with size + viewRect.width = size; + viewRect.height = size / aspect; + } else { + viewRect.height = size; + viewRect.width = size * aspect; + } + viewRect.y = center[1] - viewRect.height / 2; + viewRect.x = center[0] - viewRect.width / 2; + } else { + // Use left/top/width/height + var boxLayoutOption = geoModel.getBoxLayoutParams(); + boxLayoutOption.aspect = aspect; + viewRect = getLayoutRect(boxLayoutOption, { + width: viewWidth, + height: viewHeight + }); + } + this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height); + this.setCenter(geoModel.get('center'), api); + this.setZoom(geoModel.get('zoom')); + } + // Back compat for ECharts2, where the coord map is set on map series: + // {type: 'map', geoCoord: {'cityA': [116.46,39.92], 'cityA': [119.12,24.61]}}, + function setGeoCoords(geo, model) { + each(model.get('geoCoord'), function (geoCoord, name) { + geo.addGeoCoord(name, geoCoord); + }); + } + var GeoCreator = /** @class */function () { + function GeoCreator() { + // For deciding which dimensions to use when creating list data + this.dimensions = geo2DDimensions; + } + GeoCreator.prototype.create = function (ecModel, api) { + var geoList = []; + function getCommonGeoProperties(model) { + return { + nameProperty: model.get('nameProperty'), + aspectScale: model.get('aspectScale'), + projection: model.get('projection') + }; + } + // FIXME Create each time may be slow + ecModel.eachComponent('geo', function (geoModel, idx) { + var mapName = geoModel.get('map'); + var geo = new Geo(mapName + idx, mapName, extend({ + nameMap: geoModel.get('nameMap') + }, getCommonGeoProperties(geoModel))); + geo.zoomLimit = geoModel.get('scaleLimit'); + geoList.push(geo); + // setGeoCoords(geo, geoModel); + geoModel.coordinateSystem = geo; + geo.model = geoModel; + // Inject resize method + geo.resize = resizeGeo; + geo.resize(geoModel, api); + }); + ecModel.eachSeries(function (seriesModel) { + var coordSys = seriesModel.get('coordinateSystem'); + if (coordSys === 'geo') { + var geoIndex = seriesModel.get('geoIndex') || 0; + seriesModel.coordinateSystem = geoList[geoIndex]; + } + }); + // If has map series + var mapModelGroupBySeries = {}; + ecModel.eachSeriesByType('map', function (seriesModel) { + if (!seriesModel.getHostGeoModel()) { + var mapType = seriesModel.getMapType(); + mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || []; + mapModelGroupBySeries[mapType].push(seriesModel); + } + }); + each(mapModelGroupBySeries, function (mapSeries, mapType) { + var nameMapList = map(mapSeries, function (singleMapSeries) { + return singleMapSeries.get('nameMap'); + }); + var geo = new Geo(mapType, mapType, extend({ + nameMap: mergeAll(nameMapList) + }, getCommonGeoProperties(mapSeries[0]))); + geo.zoomLimit = retrieve.apply(null, map(mapSeries, function (singleMapSeries) { + return singleMapSeries.get('scaleLimit'); + })); + geoList.push(geo); + // Inject resize method + geo.resize = resizeGeo; + geo.resize(mapSeries[0], api); + each(mapSeries, function (singleMapSeries) { + singleMapSeries.coordinateSystem = geo; + setGeoCoords(geo, singleMapSeries); + }); + }); + return geoList; + }; + /** + * Fill given regions array + */ + GeoCreator.prototype.getFilledRegions = function (originRegionArr, mapName, nameMap, nameProperty) { + // Not use the original + var regionsArr = (originRegionArr || []).slice(); + var dataNameMap = createHashMap(); + for (var i = 0; i < regionsArr.length; i++) { + dataNameMap.set(regionsArr[i].name, regionsArr[i]); + } + var source = geoSourceManager.load(mapName, nameMap, nameProperty); + each(source.regions, function (region) { + var name = region.name; + !dataNameMap.get(name) && regionsArr.push({ + name: name + }); + }); + return regionsArr; + }; + return GeoCreator; + }(); + var geoCreator = new GeoCreator(); + + var GeoModel = /** @class */function (_super) { + __extends(GeoModel, _super); + function GeoModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = GeoModel.type; + return _this; + } + GeoModel.prototype.init = function (option, parentModel, ecModel) { + var source = geoSourceManager.getGeoResource(option.map); + if (source && source.type === 'geoJSON') { + var itemStyle = option.itemStyle = option.itemStyle || {}; + if (!('color' in itemStyle)) { + itemStyle.color = '#eee'; + } + } + this.mergeDefaultAndTheme(option, ecModel); + // Default label emphasis `show` + defaultEmphasis(option, 'label', ['show']); + }; + GeoModel.prototype.optionUpdated = function () { + var _this = this; + var option = this.option; + option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap, option.nameProperty); + var selectedMap = {}; + this._optionModelMap = reduce(option.regions || [], function (optionModelMap, regionOpt) { + var regionName = regionOpt.name; + if (regionName) { + optionModelMap.set(regionName, new Model(regionOpt, _this, _this.ecModel)); + if (regionOpt.selected) { + selectedMap[regionName] = true; + } + } + return optionModelMap; + }, createHashMap()); + if (!option.selectedMap) { + option.selectedMap = selectedMap; + } + }; + /** + * Get model of region. + */ + GeoModel.prototype.getRegionModel = function (name) { + return this._optionModelMap.get(name) || new Model(null, this, this.ecModel); + }; + /** + * Format label + * @param name Region name + */ + GeoModel.prototype.getFormattedLabel = function (name, status) { + var regionModel = this.getRegionModel(name); + var formatter = status === 'normal' ? regionModel.get(['label', 'formatter']) : regionModel.get(['emphasis', 'label', 'formatter']); + var params = { + name: name + }; + if (isFunction(formatter)) { + params.status = status; + return formatter(params); + } else if (isString(formatter)) { + return formatter.replace('{a}', name != null ? name : ''); + } + }; + GeoModel.prototype.setZoom = function (zoom) { + this.option.zoom = zoom; + }; + GeoModel.prototype.setCenter = function (center) { + this.option.center = center; + }; + // PENGING If selectedMode is null ? + GeoModel.prototype.select = function (name) { + var option = this.option; + var selectedMode = option.selectedMode; + if (!selectedMode) { + return; + } + if (selectedMode !== 'multiple') { + option.selectedMap = null; + } + var selectedMap = option.selectedMap || (option.selectedMap = {}); + selectedMap[name] = true; + }; + GeoModel.prototype.unSelect = function (name) { + var selectedMap = this.option.selectedMap; + if (selectedMap) { + selectedMap[name] = false; + } + }; + GeoModel.prototype.toggleSelected = function (name) { + this[this.isSelected(name) ? 'unSelect' : 'select'](name); + }; + GeoModel.prototype.isSelected = function (name) { + var selectedMap = this.option.selectedMap; + return !!(selectedMap && selectedMap[name]); + }; + GeoModel.type = 'geo'; + GeoModel.layoutMode = 'box'; + GeoModel.defaultOption = { + // zlevel: 0, + z: 0, + show: true, + left: 'center', + top: 'center', + // Default value: + // for geoSVG source: 1, + // for geoJSON source: 0.75. + aspectScale: null, + // /// Layout with center and size + // If you want to put map in a fixed size box with right aspect ratio + // This two properties may be more convenient + // layoutCenter: [50%, 50%] + // layoutSize: 100 + silent: false, + // Map type + map: '', + // Define left-top, right-bottom coords to control view + // For example, [ [180, 90], [-180, -90] ] + boundingCoords: null, + // Default on center of map + center: null, + zoom: 1, + scaleLimit: null, + // selectedMode: false + label: { + show: false, + color: '#000' + }, + itemStyle: { + borderWidth: 0.5, + borderColor: '#444' + // Default color: + // + geoJSON: #eee + // + geoSVG: null (use SVG original `fill`) + // color: '#eee' + }, + + emphasis: { + label: { + show: true, + color: 'rgb(100,0,0)' + }, + itemStyle: { + color: 'rgba(255,215,0,0.8)' + } + }, + select: { + label: { + show: true, + color: 'rgb(100,0,0)' + }, + itemStyle: { + color: 'rgba(255,215,0,0.8)' + } + }, + regions: [] + // tooltip: { + // show: false + // } + }; + + return GeoModel; + }(ComponentModel); + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function getCenterCoord(view, point) { + // Use projected coord as center because it's linear. + return view.pointToProjected ? view.pointToProjected(point) : view.pointToData(point); + } + function updateCenterAndZoom(view, payload, zoomLimit, api) { + var previousZoom = view.getZoom(); + var center = view.getCenter(); + var zoom = payload.zoom; + var point = view.projectedToPoint ? view.projectedToPoint(center) : view.dataToPoint(center); + if (payload.dx != null && payload.dy != null) { + point[0] -= payload.dx; + point[1] -= payload.dy; + view.setCenter(getCenterCoord(view, point), api); + } + if (zoom != null) { + if (zoomLimit) { + var zoomMin = zoomLimit.min || 0; + var zoomMax = zoomLimit.max || Infinity; + zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom; + } + // Zoom on given point(originX, originY) + view.scaleX *= zoom; + view.scaleY *= zoom; + var fixX = (payload.originX - view.x) * (zoom - 1); + var fixY = (payload.originY - view.y) * (zoom - 1); + view.x -= fixX; + view.y -= fixY; + view.updateTransform(); + // Get the new center + view.setCenter(getCenterCoord(view, point), api); + view.setZoom(zoom * previousZoom); + } + return { + center: view.getCenter(), + zoom: view.getZoom() + }; + } + + var GeoView = /** @class */function (_super) { + __extends(GeoView, _super); + function GeoView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = GeoView.type; + _this.focusBlurEnabled = true; + return _this; + } + GeoView.prototype.init = function (ecModel, api) { + this._api = api; + }; + GeoView.prototype.render = function (geoModel, ecModel, api, payload) { + this._model = geoModel; + if (!geoModel.get('show')) { + this._mapDraw && this._mapDraw.remove(); + this._mapDraw = null; + return; + } + if (!this._mapDraw) { + this._mapDraw = new MapDraw(api); + } + var mapDraw = this._mapDraw; + mapDraw.draw(geoModel, ecModel, api, this, payload); + mapDraw.group.on('click', this._handleRegionClick, this); + mapDraw.group.silent = geoModel.get('silent'); + this.group.add(mapDraw.group); + this.updateSelectStatus(geoModel, ecModel, api); + }; + GeoView.prototype._handleRegionClick = function (e) { + var eventData; + findEventDispatcher(e.target, function (current) { + return (eventData = getECData(current).eventData) != null; + }, true); + if (eventData) { + this._api.dispatchAction({ + type: 'geoToggleSelect', + geoId: this._model.id, + name: eventData.name + }); + } + }; + GeoView.prototype.updateSelectStatus = function (model, ecModel, api) { + var _this = this; + this._mapDraw.group.traverse(function (node) { + var eventData = getECData(node).eventData; + if (eventData) { + _this._model.isSelected(eventData.name) ? api.enterSelect(node) : api.leaveSelect(node); + // No need to traverse children. + return true; + } + }); + }; + GeoView.prototype.findHighDownDispatchers = function (name) { + return this._mapDraw && this._mapDraw.findHighDownDispatchers(name, this._model); + }; + GeoView.prototype.dispose = function () { + this._mapDraw && this._mapDraw.remove(); + }; + GeoView.type = 'geo'; + return GeoView; + }(ComponentView); + + function registerMap$1(mapName, geoJson, specialAreas) { + geoSourceManager.registerMap(mapName, geoJson, specialAreas); + } + function install$9(registers) { + registers.registerCoordinateSystem('geo', geoCreator); + registers.registerComponentModel(GeoModel); + registers.registerComponentView(GeoView); + registers.registerImpl('registerMap', registerMap$1); + registers.registerImpl('getMap', function (mapName) { + return geoSourceManager.getMapForUser(mapName); + }); + function makeAction(method, actionInfo) { + actionInfo.update = 'geo:updateSelectStatus'; + registers.registerAction(actionInfo, function (payload, ecModel) { + var selected = {}; + var allSelected = []; + ecModel.eachComponent({ + mainType: 'geo', + query: payload + }, function (geoModel) { + geoModel[method](payload.name); + var geo = geoModel.coordinateSystem; + each(geo.regions, function (region) { + selected[region.name] = geoModel.isSelected(region.name) || false; + }); + // Notice: there might be duplicated name in different regions. + var names = []; + each(selected, function (v, name) { + selected[name] && names.push(name); + }); + allSelected.push({ + geoIndex: geoModel.componentIndex, + // Use singular, the same naming convention as the event `selectchanged`. + name: names + }); + }); + return { + selected: selected, + allSelected: allSelected, + name: payload.name + }; + }); + } + makeAction('toggleSelected', { + type: 'geoToggleSelect', + event: 'geoselectchanged' + }); + makeAction('select', { + type: 'geoSelect', + event: 'geoselected' + }); + makeAction('unSelect', { + type: 'geoUnSelect', + event: 'geounselected' + }); + /** + * @payload + * @property {string} [componentType=series] + * @property {number} [dx] + * @property {number} [dy] + * @property {number} [zoom] + * @property {number} [originX] + * @property {number} [originY] + */ + registers.registerAction({ + type: 'geoRoam', + event: 'geoRoam', + update: 'updateTransform' + }, function (payload, ecModel, api) { + var componentType = payload.componentType || 'series'; + ecModel.eachComponent({ + mainType: componentType, + query: payload + }, function (componentModel) { + var geo = componentModel.coordinateSystem; + if (geo.type !== 'geo') { + return; + } + var res = updateCenterAndZoom(geo, payload, componentModel.get('scaleLimit'), api); + componentModel.setCenter && componentModel.setCenter(res.center); + componentModel.setZoom && componentModel.setZoom(res.zoom); + // All map series with same `map` use the same geo coordinate system + // So the center and zoom must be in sync. Include the series not selected by legend + if (componentType === 'series') { + each(componentModel.seriesGroup, function (seriesModel) { + seriesModel.setCenter(res.center); + seriesModel.setZoom(res.zoom); + }); + } + }); + }); + } + + function install$a(registers) { + use(install$9); + registers.registerChartView(MapView); + registers.registerSeriesModel(MapSeries); + registers.registerLayout(mapSymbolLayout); + registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic); + createLegacyDataSelectAction('map', registers.registerAction); + } + + /** + * Initialize all computational message for following algorithm. + */ + function init$2(inRoot) { + var root = inRoot; + root.hierNode = { + defaultAncestor: null, + ancestor: root, + prelim: 0, + modifier: 0, + change: 0, + shift: 0, + i: 0, + thread: null + }; + var nodes = [root]; + var node; + var children; + while (node = nodes.pop()) { + // jshint ignore:line + children = node.children; + if (node.isExpand && children.length) { + var n = children.length; + for (var i = n - 1; i >= 0; i--) { + var child = children[i]; + child.hierNode = { + defaultAncestor: null, + ancestor: child, + prelim: 0, + modifier: 0, + change: 0, + shift: 0, + i: i, + thread: null + }; + nodes.push(child); + } + } + } + } + /** + * The implementation of this function was originally copied from "d3.js" + * + * with some modifications made for this program. + * See the license statement at the head of this file. + * + * Computes a preliminary x coordinate for node. Before that, this function is + * applied recursively to the children of node, as well as the function + * apportion(). After spacing out the children by calling executeShifts(), the + * node is placed to the midpoint of its outermost children. + */ + function firstWalk(node, separation) { + var children = node.isExpand ? node.children : []; + var siblings = node.parentNode.children; + var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null; + if (children.length) { + executeShifts(node); + var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2; + if (subtreeW) { + node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW); + node.hierNode.modifier = node.hierNode.prelim - midPoint; + } else { + node.hierNode.prelim = midPoint; + } + } else if (subtreeW) { + node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW); + } + node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation); + } + /** + * The implementation of this function was originally copied from "d3.js" + * + * with some modifications made for this program. + * See the license statement at the head of this file. + * + * Computes all real x-coordinates by summing up the modifiers recursively. + */ + function secondWalk(node) { + var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier; + node.setLayout({ + x: nodeX + }, true); + node.hierNode.modifier += node.parentNode.hierNode.modifier; + } + function separation(cb) { + return arguments.length ? cb : defaultSeparation; + } + /** + * Transform the common coordinate to radial coordinate. + */ + function radialCoordinate(rad, r) { + rad -= Math.PI / 2; + return { + x: r * Math.cos(rad), + y: r * Math.sin(rad) + }; + } + /** + * Get the layout position of the whole view. + */ + function getViewRect$1(seriesModel, api) { + return getLayoutRect(seriesModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }); + } + /** + * All other shifts, applied to the smaller subtrees between w- and w+, are + * performed by this function. + * + * The implementation of this function was originally copied from "d3.js" + * + * with some modifications made for this program. + * See the license statement at the head of this file. + */ + function executeShifts(node) { + var children = node.children; + var n = children.length; + var shift = 0; + var change = 0; + while (--n >= 0) { + var child = children[n]; + child.hierNode.prelim += shift; + child.hierNode.modifier += shift; + change += child.hierNode.change; + shift += child.hierNode.shift + change; + } + } + /** + * The implementation of this function was originally copied from "d3.js" + * + * with some modifications made for this program. + * See the license statement at the head of this file. + * + * The core of the algorithm. Here, a new subtree is combined with the + * previous subtrees. Threads are used to traverse the inside and outside + * contours of the left and right subtree up to the highest common level. + * Whenever two nodes of the inside contours conflict, we compute the left + * one of the greatest uncommon ancestors using the function nextAncestor() + * and call moveSubtree() to shift the subtree and prepare the shifts of + * smaller subtrees. Finally, we add a new thread (if necessary). + */ + function apportion(subtreeV, subtreeW, ancestor, separation) { + if (subtreeW) { + var nodeOutRight = subtreeV; + var nodeInRight = subtreeV; + var nodeOutLeft = nodeInRight.parentNode.children[0]; + var nodeInLeft = subtreeW; + var sumOutRight = nodeOutRight.hierNode.modifier; + var sumInRight = nodeInRight.hierNode.modifier; + var sumOutLeft = nodeOutLeft.hierNode.modifier; + var sumInLeft = nodeInLeft.hierNode.modifier; + while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) { + nodeOutRight = nextRight(nodeOutRight); + nodeOutLeft = nextLeft(nodeOutLeft); + nodeOutRight.hierNode.ancestor = subtreeV; + var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation(nodeInLeft, nodeInRight); + if (shift > 0) { + moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift); + sumInRight += shift; + sumOutRight += shift; + } + sumInLeft += nodeInLeft.hierNode.modifier; + sumInRight += nodeInRight.hierNode.modifier; + sumOutRight += nodeOutRight.hierNode.modifier; + sumOutLeft += nodeOutLeft.hierNode.modifier; + } + if (nodeInLeft && !nextRight(nodeOutRight)) { + nodeOutRight.hierNode.thread = nodeInLeft; + nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight; + } + if (nodeInRight && !nextLeft(nodeOutLeft)) { + nodeOutLeft.hierNode.thread = nodeInRight; + nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft; + ancestor = subtreeV; + } + } + return ancestor; + } + /** + * This function is used to traverse the right contour of a subtree. + * It returns the rightmost child of node or the thread of node. The function + * returns null if and only if node is on the highest depth of its subtree. + */ + function nextRight(node) { + var children = node.children; + return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread; + } + /** + * This function is used to traverse the left contour of a subtree (or a subforest). + * It returns the leftmost child of node or the thread of node. The function + * returns null if and only if node is on the highest depth of its subtree. + */ + function nextLeft(node) { + var children = node.children; + return children.length && node.isExpand ? children[0] : node.hierNode.thread; + } + /** + * If nodeInLeft’s ancestor is a sibling of node, returns nodeInLeft’s ancestor. + * Otherwise, returns the specified ancestor. + */ + function nextAncestor(nodeInLeft, node, ancestor) { + return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor; + } + /** + * The implementation of this function was originally copied from "d3.js" + * + * with some modifications made for this program. + * See the license statement at the head of this file. + * + * Shifts the current subtree rooted at wr. + * This is done by increasing prelim(w+) and modifier(w+) by shift. + */ + function moveSubtree(wl, wr, shift) { + var change = shift / (wr.hierNode.i - wl.hierNode.i); + wr.hierNode.change -= change; + wr.hierNode.shift += shift; + wr.hierNode.modifier += shift; + wr.hierNode.prelim += shift; + wl.hierNode.change += change; + } + /** + * The implementation of this function was originally copied from "d3.js" + * + * with some modifications made for this program. + * See the license statement at the head of this file. + */ + function defaultSeparation(node1, node2) { + return node1.parentNode === node2.parentNode ? 1 : 2; + } + + var TreeEdgeShape = /** @class */function () { + function TreeEdgeShape() { + this.parentPoint = []; + this.childPoints = []; + } + return TreeEdgeShape; + }(); + var TreePath = /** @class */function (_super) { + __extends(TreePath, _super); + function TreePath(opts) { + return _super.call(this, opts) || this; + } + TreePath.prototype.getDefaultStyle = function () { + return { + stroke: '#000', + fill: null + }; + }; + TreePath.prototype.getDefaultShape = function () { + return new TreeEdgeShape(); + }; + TreePath.prototype.buildPath = function (ctx, shape) { + var childPoints = shape.childPoints; + var childLen = childPoints.length; + var parentPoint = shape.parentPoint; + var firstChildPos = childPoints[0]; + var lastChildPos = childPoints[childLen - 1]; + if (childLen === 1) { + ctx.moveTo(parentPoint[0], parentPoint[1]); + ctx.lineTo(firstChildPos[0], firstChildPos[1]); + return; + } + var orient = shape.orient; + var forkDim = orient === 'TB' || orient === 'BT' ? 0 : 1; + var otherDim = 1 - forkDim; + var forkPosition = parsePercent$1(shape.forkPosition, 1); + var tmpPoint = []; + tmpPoint[forkDim] = parentPoint[forkDim]; + tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition; + ctx.moveTo(parentPoint[0], parentPoint[1]); + ctx.lineTo(tmpPoint[0], tmpPoint[1]); + ctx.moveTo(firstChildPos[0], firstChildPos[1]); + tmpPoint[forkDim] = firstChildPos[forkDim]; + ctx.lineTo(tmpPoint[0], tmpPoint[1]); + tmpPoint[forkDim] = lastChildPos[forkDim]; + ctx.lineTo(tmpPoint[0], tmpPoint[1]); + ctx.lineTo(lastChildPos[0], lastChildPos[1]); + for (var i = 1; i < childLen - 1; i++) { + var point = childPoints[i]; + ctx.moveTo(point[0], point[1]); + tmpPoint[forkDim] = point[forkDim]; + ctx.lineTo(tmpPoint[0], tmpPoint[1]); + } + }; + return TreePath; + }(Path); + var TreeView = /** @class */function (_super) { + __extends(TreeView, _super); + function TreeView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = TreeView.type; + _this._mainGroup = new Group(); + return _this; + } + TreeView.prototype.init = function (ecModel, api) { + this._controller = new RoamController(api.getZr()); + this._controllerHost = { + target: this.group + }; + this.group.add(this._mainGroup); + }; + TreeView.prototype.render = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var layoutInfo = seriesModel.layoutInfo; + var group = this._mainGroup; + var layout = seriesModel.get('layout'); + if (layout === 'radial') { + group.x = layoutInfo.x + layoutInfo.width / 2; + group.y = layoutInfo.y + layoutInfo.height / 2; + } else { + group.x = layoutInfo.x; + group.y = layoutInfo.y; + } + this._updateViewCoordSys(seriesModel, api); + this._updateController(seriesModel, ecModel, api); + var oldData = this._data; + data.diff(oldData).add(function (newIdx) { + if (symbolNeedsDraw$1(data, newIdx)) { + // Create node and edge + updateNode(data, newIdx, null, group, seriesModel); + } + }).update(function (newIdx, oldIdx) { + var symbolEl = oldData.getItemGraphicEl(oldIdx); + if (!symbolNeedsDraw$1(data, newIdx)) { + symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel); + return; + } + // Update node and edge + updateNode(data, newIdx, symbolEl, group, seriesModel); + }).remove(function (oldIdx) { + var symbolEl = oldData.getItemGraphicEl(oldIdx); + // When remove a collapsed node of subtree, since the collapsed + // node haven't been initialized with a symbol element, + // you can't found it's symbol element through index. + // so if we want to remove the symbol element we should insure + // that the symbol element is not null. + if (symbolEl) { + removeNode(oldData, oldIdx, symbolEl, group, seriesModel); + } + }).execute(); + this._nodeScaleRatio = seriesModel.get('nodeScaleRatio'); + this._updateNodeAndLinkScale(seriesModel); + if (seriesModel.get('expandAndCollapse') === true) { + data.eachItemGraphicEl(function (el, dataIndex) { + el.off('click').on('click', function () { + api.dispatchAction({ + type: 'treeExpandAndCollapse', + seriesId: seriesModel.id, + dataIndex: dataIndex + }); + }); + }); + } + this._data = data; + }; + TreeView.prototype._updateViewCoordSys = function (seriesModel, api) { + var data = seriesModel.getData(); + var points = []; + data.each(function (idx) { + var layout = data.getItemLayout(idx); + if (layout && !isNaN(layout.x) && !isNaN(layout.y)) { + points.push([+layout.x, +layout.y]); + } + }); + var min = []; + var max = []; + fromPoints(points, min, max); + // If don't Store min max when collapse the root node after roam, + // the root node will disappear. + var oldMin = this._min; + var oldMax = this._max; + // If width or height is 0 + if (max[0] - min[0] === 0) { + min[0] = oldMin ? oldMin[0] : min[0] - 1; + max[0] = oldMax ? oldMax[0] : max[0] + 1; + } + if (max[1] - min[1] === 0) { + min[1] = oldMin ? oldMin[1] : min[1] - 1; + max[1] = oldMax ? oldMax[1] : max[1] + 1; + } + var viewCoordSys = seriesModel.coordinateSystem = new View(); + viewCoordSys.zoomLimit = seriesModel.get('scaleLimit'); + viewCoordSys.setBoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]); + viewCoordSys.setCenter(seriesModel.get('center'), api); + viewCoordSys.setZoom(seriesModel.get('zoom')); + // Here we use viewCoordSys just for computing the 'position' and 'scale' of the group + this.group.attr({ + x: viewCoordSys.x, + y: viewCoordSys.y, + scaleX: viewCoordSys.scaleX, + scaleY: viewCoordSys.scaleY + }); + this._min = min; + this._max = max; + }; + TreeView.prototype._updateController = function (seriesModel, ecModel, api) { + var _this = this; + var controller = this._controller; + var controllerHost = this._controllerHost; + var group = this.group; + controller.setPointerChecker(function (e, x, y) { + var rect = group.getBoundingRect(); + rect.applyTransform(group.transform); + return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel); + }); + controller.enable(seriesModel.get('roam')); + controllerHost.zoomLimit = seriesModel.get('scaleLimit'); + controllerHost.zoom = seriesModel.coordinateSystem.getZoom(); + controller.off('pan').off('zoom').on('pan', function (e) { + updateViewOnPan(controllerHost, e.dx, e.dy); + api.dispatchAction({ + seriesId: seriesModel.id, + type: 'treeRoam', + dx: e.dx, + dy: e.dy + }); + }).on('zoom', function (e) { + updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY); + api.dispatchAction({ + seriesId: seriesModel.id, + type: 'treeRoam', + zoom: e.scale, + originX: e.originX, + originY: e.originY + }); + _this._updateNodeAndLinkScale(seriesModel); + // Only update label layout on zoom + api.updateLabelLayout(); + }); + }; + TreeView.prototype._updateNodeAndLinkScale = function (seriesModel) { + var data = seriesModel.getData(); + var nodeScale = this._getNodeGlobalScale(seriesModel); + data.eachItemGraphicEl(function (el, idx) { + el.setSymbolScale(nodeScale); + }); + }; + TreeView.prototype._getNodeGlobalScale = function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys.type !== 'view') { + return 1; + } + var nodeScaleRatio = this._nodeScaleRatio; + var groupZoom = coordSys.scaleX || 1; + // Scale node when zoom changes + var roamZoom = coordSys.getZoom(); + var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1; + return nodeScale / groupZoom; + }; + TreeView.prototype.dispose = function () { + this._controller && this._controller.dispose(); + this._controllerHost = null; + }; + TreeView.prototype.remove = function () { + this._mainGroup.removeAll(); + this._data = null; + }; + TreeView.type = 'tree'; + return TreeView; + }(ChartView); + function symbolNeedsDraw$1(data, dataIndex) { + var layout = data.getItemLayout(dataIndex); + return layout && !isNaN(layout.x) && !isNaN(layout.y); + } + function updateNode(data, dataIndex, symbolEl, group, seriesModel) { + var isInit = !symbolEl; + var node = data.tree.getNodeByDataIndex(dataIndex); + var itemModel = node.getModel(); + var visualColor = node.getVisual('style').fill; + var symbolInnerColor = node.isExpand === false && node.children.length !== 0 ? visualColor : '#fff'; + var virtualRoot = data.tree.root; + var source = node.parentNode === virtualRoot ? node : node.parentNode || node; + var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex); + var sourceLayout = source.getLayout(); + var sourceOldLayout = sourceSymbolEl ? { + x: sourceSymbolEl.__oldX, + y: sourceSymbolEl.__oldY, + rawX: sourceSymbolEl.__radialOldRawX, + rawY: sourceSymbolEl.__radialOldRawY + } : sourceLayout; + var targetLayout = node.getLayout(); + if (isInit) { + symbolEl = new Symbol(data, dataIndex, null, { + symbolInnerColor: symbolInnerColor, + useNameLabel: true + }); + symbolEl.x = sourceOldLayout.x; + symbolEl.y = sourceOldLayout.y; + } else { + symbolEl.updateData(data, dataIndex, null, { + symbolInnerColor: symbolInnerColor, + useNameLabel: true + }); + } + symbolEl.__radialOldRawX = symbolEl.__radialRawX; + symbolEl.__radialOldRawY = symbolEl.__radialRawY; + symbolEl.__radialRawX = targetLayout.rawX; + symbolEl.__radialRawY = targetLayout.rawY; + group.add(symbolEl); + data.setItemGraphicEl(dataIndex, symbolEl); + symbolEl.__oldX = symbolEl.x; + symbolEl.__oldY = symbolEl.y; + updateProps(symbolEl, { + x: targetLayout.x, + y: targetLayout.y + }, seriesModel); + var symbolPath = symbolEl.getSymbolPath(); + if (seriesModel.get('layout') === 'radial') { + var realRoot = virtualRoot.children[0]; + var rootLayout = realRoot.getLayout(); + var length_1 = realRoot.children.length; + var rad = void 0; + var isLeft = void 0; + if (targetLayout.x === rootLayout.x && node.isExpand === true && realRoot.children.length) { + var center = { + x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2, + y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2 + }; + rad = Math.atan2(center.y - rootLayout.y, center.x - rootLayout.x); + if (rad < 0) { + rad = Math.PI * 2 + rad; + } + isLeft = center.x < rootLayout.x; + if (isLeft) { + rad = rad - Math.PI; + } + } else { + rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x); + if (rad < 0) { + rad = Math.PI * 2 + rad; + } + if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) { + isLeft = targetLayout.x < rootLayout.x; + if (isLeft) { + rad = rad - Math.PI; + } + } else { + isLeft = targetLayout.x > rootLayout.x; + if (!isLeft) { + rad = rad - Math.PI; + } + } + } + var textPosition = isLeft ? 'left' : 'right'; + var normalLabelModel = itemModel.getModel('label'); + var rotate = normalLabelModel.get('rotate'); + var labelRotateRadian = rotate * (Math.PI / 180); + var textContent = symbolPath.getTextContent(); + if (textContent) { + symbolPath.setTextConfig({ + position: normalLabelModel.get('position') || textPosition, + rotation: rotate == null ? -rad : labelRotateRadian, + origin: 'center' + }); + textContent.setStyle('verticalAlign', 'middle'); + } + } + // Handle status + var focus = itemModel.get(['emphasis', 'focus']); + var focusDataIndices = focus === 'relative' ? concatArray(node.getAncestorsIndices(), node.getDescendantIndices()) : focus === 'ancestor' ? node.getAncestorsIndices() : focus === 'descendant' ? node.getDescendantIndices() : null; + if (focusDataIndices) { + // Modify the focus to data indices. + getECData(symbolEl).focus = focusDataIndices; + } + drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group); + if (symbolEl.__edge) { + symbolEl.onHoverStateChange = function (toState) { + if (toState !== 'blur') { + // NOTE: Ensure the parent elements will been blurred firstly. + // According to the return of getAncestorsIndices and getDescendantIndices + // TODO: A bit tricky. + var parentEl = node.parentNode && data.getItemGraphicEl(node.parentNode.dataIndex); + if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR)) { + setStatesFlag(symbolEl.__edge, toState); + } + } + }; + } + } + function drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) { + var itemModel = node.getModel(); + var edgeShape = seriesModel.get('edgeShape'); + var layout = seriesModel.get('layout'); + var orient = seriesModel.getOrient(); + var curvature = seriesModel.get(['lineStyle', 'curveness']); + var edgeForkPosition = seriesModel.get('edgeForkPosition'); + var lineStyle = itemModel.getModel('lineStyle').getLineStyle(); + var edge = symbolEl.__edge; + // curve edge from node -> parent + // polyline edge from node -> children + if (edgeShape === 'curve') { + if (node.parentNode && node.parentNode !== virtualRoot) { + if (!edge) { + edge = symbolEl.__edge = new BezierCurve({ + shape: getEdgeShape(layout, orient, curvature, sourceOldLayout, sourceOldLayout) + }); + } + updateProps(edge, { + shape: getEdgeShape(layout, orient, curvature, sourceLayout, targetLayout) + }, seriesModel); + } + } else if (edgeShape === 'polyline') { + if (layout === 'orthogonal') { + if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) { + var children = node.children; + var childPoints = []; + for (var i = 0; i < children.length; i++) { + var childLayout = children[i].getLayout(); + childPoints.push([childLayout.x, childLayout.y]); + } + if (!edge) { + edge = symbolEl.__edge = new TreePath({ + shape: { + parentPoint: [targetLayout.x, targetLayout.y], + childPoints: [[targetLayout.x, targetLayout.y]], + orient: orient, + forkPosition: edgeForkPosition + } + }); + } + updateProps(edge, { + shape: { + parentPoint: [targetLayout.x, targetLayout.y], + childPoints: childPoints + } + }, seriesModel); + } + } else { + if ("development" !== 'production') { + throw new Error('The polyline edgeShape can only be used in orthogonal layout'); + } + } + } + // show all edge when edgeShape is 'curve', filter node `isExpand` is false when edgeShape is 'polyline' + if (edge && !(edgeShape === 'polyline' && !node.isExpand)) { + edge.useStyle(defaults({ + strokeNoScale: true, + fill: null + }, lineStyle)); + setStatesStylesFromModel(edge, itemModel, 'lineStyle'); + setDefaultStateProxy(edge); + group.add(edge); + } + } + function removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt) { + var virtualRoot = data.tree.root; + var _a = getSourceNode(virtualRoot, node), + source = _a.source, + sourceLayout = _a.sourceLayout; + var symbolEl = data.getItemGraphicEl(node.dataIndex); + if (!symbolEl) { + return; + } + var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex); + var sourceEdge = sourceSymbolEl.__edge; + // 1. when expand the sub tree, delete the children node should delete the edge of + // the source at the same time. because the polyline edge shape is only owned by the source. + // 2.when the node is the only children of the source, delete the node should delete the edge of + // the source at the same time. the same reason as above. + var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : undefined); + var edgeShape = seriesModel.get('edgeShape'); + var layoutOpt = seriesModel.get('layout'); + var orient = seriesModel.get('orient'); + var curvature = seriesModel.get(['lineStyle', 'curveness']); + if (edge) { + if (edgeShape === 'curve') { + removeElement(edge, { + shape: getEdgeShape(layoutOpt, orient, curvature, sourceLayout, sourceLayout), + style: { + opacity: 0 + } + }, seriesModel, { + cb: function () { + group.remove(edge); + }, + removeOpt: removeAnimationOpt + }); + } else if (edgeShape === 'polyline' && seriesModel.get('layout') === 'orthogonal') { + removeElement(edge, { + shape: { + parentPoint: [sourceLayout.x, sourceLayout.y], + childPoints: [[sourceLayout.x, sourceLayout.y]] + }, + style: { + opacity: 0 + } + }, seriesModel, { + cb: function () { + group.remove(edge); + }, + removeOpt: removeAnimationOpt + }); + } + } + } + function getSourceNode(virtualRoot, node) { + var source = node.parentNode === virtualRoot ? node : node.parentNode || node; + var sourceLayout; + while (sourceLayout = source.getLayout(), sourceLayout == null) { + source = source.parentNode === virtualRoot ? source : source.parentNode || source; + } + return { + source: source, + sourceLayout: sourceLayout + }; + } + function removeNode(data, dataIndex, symbolEl, group, seriesModel) { + var node = data.tree.getNodeByDataIndex(dataIndex); + var virtualRoot = data.tree.root; + var sourceLayout = getSourceNode(virtualRoot, node).sourceLayout; + // Use same duration and easing with update to have more consistent animation. + var removeAnimationOpt = { + duration: seriesModel.get('animationDurationUpdate'), + easing: seriesModel.get('animationEasingUpdate') + }; + removeElement(symbolEl, { + x: sourceLayout.x + 1, + y: sourceLayout.y + 1 + }, seriesModel, { + cb: function () { + group.remove(symbolEl); + data.setItemGraphicEl(dataIndex, null); + }, + removeOpt: removeAnimationOpt + }); + symbolEl.fadeOut(null, data.hostModel, { + fadeLabel: true, + animation: removeAnimationOpt + }); + // remove edge as parent node + node.children.forEach(function (childNode) { + removeNodeEdge(childNode, data, group, seriesModel, removeAnimationOpt); + }); + // remove edge as child node + removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt); + } + function getEdgeShape(layoutOpt, orient, curvature, sourceLayout, targetLayout) { + var cpx1; + var cpy1; + var cpx2; + var cpy2; + var x1; + var x2; + var y1; + var y2; + if (layoutOpt === 'radial') { + x1 = sourceLayout.rawX; + y1 = sourceLayout.rawY; + x2 = targetLayout.rawX; + y2 = targetLayout.rawY; + var radialCoor1 = radialCoordinate(x1, y1); + var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature); + var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature); + var radialCoor4 = radialCoordinate(x2, y2); + return { + x1: radialCoor1.x || 0, + y1: radialCoor1.y || 0, + x2: radialCoor4.x || 0, + y2: radialCoor4.y || 0, + cpx1: radialCoor2.x || 0, + cpy1: radialCoor2.y || 0, + cpx2: radialCoor3.x || 0, + cpy2: radialCoor3.y || 0 + }; + } else { + x1 = sourceLayout.x; + y1 = sourceLayout.y; + x2 = targetLayout.x; + y2 = targetLayout.y; + if (orient === 'LR' || orient === 'RL') { + cpx1 = x1 + (x2 - x1) * curvature; + cpy1 = y1; + cpx2 = x2 + (x1 - x2) * curvature; + cpy2 = y2; + } + if (orient === 'TB' || orient === 'BT') { + cpx1 = x1; + cpy1 = y1 + (y2 - y1) * curvature; + cpx2 = x2; + cpy2 = y2 + (y1 - y2) * curvature; + } + } + return { + x1: x1, + y1: y1, + x2: x2, + y2: y2, + cpx1: cpx1, + cpy1: cpy1, + cpx2: cpx2, + cpy2: cpy2 + }; + } + + var inner$7 = makeInner(); + function linkSeriesData(opt) { + var mainData = opt.mainData; + var datas = opt.datas; + if (!datas) { + datas = { + main: mainData + }; + opt.datasAttr = { + main: 'data' + }; + } + opt.datas = opt.mainData = null; + linkAll(mainData, datas, opt); + // Porxy data original methods. + each(datas, function (data) { + each(mainData.TRANSFERABLE_METHODS, function (methodName) { + data.wrapMethod(methodName, curry(transferInjection, opt)); + }); + }); + // Beyond transfer, additional features should be added to `cloneShallow`. + mainData.wrapMethod('cloneShallow', curry(cloneShallowInjection, opt)); + // Only mainData trigger change, because struct.update may trigger + // another changable methods, which may bring about dead lock. + each(mainData.CHANGABLE_METHODS, function (methodName) { + mainData.wrapMethod(methodName, curry(changeInjection, opt)); + }); + // Make sure datas contains mainData. + assert(datas[mainData.dataType] === mainData); + } + function transferInjection(opt, res) { + if (isMainData(this)) { + // Transfer datas to new main data. + var datas = extend({}, inner$7(this).datas); + datas[this.dataType] = res; + linkAll(res, datas, opt); + } else { + // Modify the reference in main data to point newData. + linkSingle(res, this.dataType, inner$7(this).mainData, opt); + } + return res; + } + function changeInjection(opt, res) { + opt.struct && opt.struct.update(); + return res; + } + function cloneShallowInjection(opt, res) { + // cloneShallow, which brings about some fragilities, may be inappropriate + // to be exposed as an API. So for implementation simplicity we can make + // the restriction that cloneShallow of not-mainData should not be invoked + // outside, but only be invoked here. + each(inner$7(res).datas, function (data, dataType) { + data !== res && linkSingle(data.cloneShallow(), dataType, res, opt); + }); + return res; + } + /** + * Supplement method to List. + * + * @public + * @param [dataType] If not specified, return mainData. + */ + function getLinkedData(dataType) { + var mainData = inner$7(this).mainData; + return dataType == null || mainData == null ? mainData : inner$7(mainData).datas[dataType]; + } + /** + * Get list of all linked data + */ + function getLinkedDataAll() { + var mainData = inner$7(this).mainData; + return mainData == null ? [{ + data: mainData + }] : map(keys(inner$7(mainData).datas), function (type) { + return { + type: type, + data: inner$7(mainData).datas[type] + }; + }); + } + function isMainData(data) { + return inner$7(data).mainData === data; + } + function linkAll(mainData, datas, opt) { + inner$7(mainData).datas = {}; + each(datas, function (data, dataType) { + linkSingle(data, dataType, mainData, opt); + }); + } + function linkSingle(data, dataType, mainData, opt) { + inner$7(mainData).datas[dataType] = data; + inner$7(data).mainData = mainData; + data.dataType = dataType; + if (opt.struct) { + data[opt.structAttr] = opt.struct; + opt.struct[opt.datasAttr[dataType]] = data; + } + // Supplement method. + data.getLinkedData = getLinkedData; + data.getLinkedDataAll = getLinkedDataAll; + } + + var TreeNode = /** @class */function () { + function TreeNode(name, hostTree) { + this.depth = 0; + this.height = 0; + /** + * Reference to list item. + * Do not persistent dataIndex outside, + * besause it may be changed by list. + * If dataIndex -1, + * this node is logical deleted (filtered) in list. + */ + this.dataIndex = -1; + this.children = []; + this.viewChildren = []; + this.isExpand = false; + this.name = name || ''; + this.hostTree = hostTree; + } + /** + * The node is removed. + */ + TreeNode.prototype.isRemoved = function () { + return this.dataIndex < 0; + }; + TreeNode.prototype.eachNode = function (options, cb, context) { + if (isFunction(options)) { + context = cb; + cb = options; + options = null; + } + options = options || {}; + if (isString(options)) { + options = { + order: options + }; + } + var order = options.order || 'preorder'; + var children = this[options.attr || 'children']; + var suppressVisitSub; + order === 'preorder' && (suppressVisitSub = cb.call(context, this)); + for (var i = 0; !suppressVisitSub && i < children.length; i++) { + children[i].eachNode(options, cb, context); + } + order === 'postorder' && cb.call(context, this); + }; + /** + * Update depth and height of this subtree. + */ + TreeNode.prototype.updateDepthAndHeight = function (depth) { + var height = 0; + this.depth = depth; + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + child.updateDepthAndHeight(depth + 1); + if (child.height > height) { + height = child.height; + } + } + this.height = height + 1; + }; + TreeNode.prototype.getNodeById = function (id) { + if (this.getId() === id) { + return this; + } + for (var i = 0, children = this.children, len = children.length; i < len; i++) { + var res = children[i].getNodeById(id); + if (res) { + return res; + } + } + }; + TreeNode.prototype.contains = function (node) { + if (node === this) { + return true; + } + for (var i = 0, children = this.children, len = children.length; i < len; i++) { + var res = children[i].contains(node); + if (res) { + return res; + } + } + }; + /** + * @param includeSelf Default false. + * @return order: [root, child, grandchild, ...] + */ + TreeNode.prototype.getAncestors = function (includeSelf) { + var ancestors = []; + var node = includeSelf ? this : this.parentNode; + while (node) { + ancestors.push(node); + node = node.parentNode; + } + ancestors.reverse(); + return ancestors; + }; + TreeNode.prototype.getAncestorsIndices = function () { + var indices = []; + var currNode = this; + while (currNode) { + indices.push(currNode.dataIndex); + currNode = currNode.parentNode; + } + indices.reverse(); + return indices; + }; + TreeNode.prototype.getDescendantIndices = function () { + var indices = []; + this.eachNode(function (childNode) { + indices.push(childNode.dataIndex); + }); + return indices; + }; + TreeNode.prototype.getValue = function (dimension) { + var data = this.hostTree.data; + return data.getStore().get(data.getDimensionIndex(dimension || 'value'), this.dataIndex); + }; + TreeNode.prototype.setLayout = function (layout, merge) { + this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge); + }; + /** + * @return {Object} layout + */ + TreeNode.prototype.getLayout = function () { + return this.hostTree.data.getItemLayout(this.dataIndex); + }; + // @depcrecated + // getModel(path: S): Model + // eslint-disable-next-line @typescript-eslint/no-unused-vars + TreeNode.prototype.getModel = function (path) { + if (this.dataIndex < 0) { + return; + } + var hostTree = this.hostTree; + var itemModel = hostTree.data.getItemModel(this.dataIndex); + return itemModel.getModel(path); + }; + // TODO: TYPE More specific model + TreeNode.prototype.getLevelModel = function () { + return (this.hostTree.levelModels || [])[this.depth]; + }; + TreeNode.prototype.setVisual = function (key, value) { + this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value); + }; + /** + * Get item visual + * FIXME: make return type better + */ + TreeNode.prototype.getVisual = function (key) { + return this.hostTree.data.getItemVisual(this.dataIndex, key); + }; + TreeNode.prototype.getRawIndex = function () { + return this.hostTree.data.getRawIndex(this.dataIndex); + }; + TreeNode.prototype.getId = function () { + return this.hostTree.data.getId(this.dataIndex); + }; + /** + * index in parent's children + */ + TreeNode.prototype.getChildIndex = function () { + if (this.parentNode) { + var children = this.parentNode.children; + for (var i = 0; i < children.length; ++i) { + if (children[i] === this) { + return i; + } + } + return -1; + } + return -1; + }; + /** + * if this is an ancestor of another node + * + * @param node another node + * @return if is ancestor + */ + TreeNode.prototype.isAncestorOf = function (node) { + var parent = node.parentNode; + while (parent) { + if (parent === this) { + return true; + } + parent = parent.parentNode; + } + return false; + }; + /** + * if this is an descendant of another node + * + * @param node another node + * @return if is descendant + */ + TreeNode.prototype.isDescendantOf = function (node) { + return node !== this && node.isAncestorOf(this); + }; + return TreeNode; + }(); + var Tree = /** @class */function () { + function Tree(hostModel) { + this.type = 'tree'; + this._nodes = []; + this.hostModel = hostModel; + } + Tree.prototype.eachNode = function (options, cb, context) { + this.root.eachNode(options, cb, context); + }; + Tree.prototype.getNodeByDataIndex = function (dataIndex) { + var rawIndex = this.data.getRawIndex(dataIndex); + return this._nodes[rawIndex]; + }; + Tree.prototype.getNodeById = function (name) { + return this.root.getNodeById(name); + }; + /** + * Update item available by list, + * when list has been performed options like 'filterSelf' or 'map'. + */ + Tree.prototype.update = function () { + var data = this.data; + var nodes = this._nodes; + for (var i = 0, len = nodes.length; i < len; i++) { + nodes[i].dataIndex = -1; + } + for (var i = 0, len = data.count(); i < len; i++) { + nodes[data.getRawIndex(i)].dataIndex = i; + } + }; + /** + * Clear all layouts + */ + Tree.prototype.clearLayouts = function () { + this.data.clearItemLayouts(); + }; + /** + * data node format: + * { + * name: ... + * value: ... + * children: [ + * { + * name: ... + * value: ... + * children: ... + * }, + * ... + * ] + * } + */ + Tree.createTree = function (dataRoot, hostModel, beforeLink) { + var tree = new Tree(hostModel); + var listData = []; + var dimMax = 1; + buildHierarchy(dataRoot); + function buildHierarchy(dataNode, parentNode) { + var value = dataNode.value; + dimMax = Math.max(dimMax, isArray(value) ? value.length : 1); + listData.push(dataNode); + var node = new TreeNode(convertOptionIdName(dataNode.name, ''), tree); + parentNode ? addChild(node, parentNode) : tree.root = node; + tree._nodes.push(node); + var children = dataNode.children; + if (children) { + for (var i = 0; i < children.length; i++) { + buildHierarchy(children[i], node); + } + } + } + tree.root.updateDepthAndHeight(0); + var dimensions = prepareSeriesDataSchema(listData, { + coordDimensions: ['value'], + dimensionsCount: dimMax + }).dimensions; + var list = new SeriesData(dimensions, hostModel); + list.initData(listData); + beforeLink && beforeLink(list); + linkSeriesData({ + mainData: list, + struct: tree, + structAttr: 'tree' + }); + tree.update(); + return tree; + }; + return Tree; + }(); + /** + * It is needed to consider the mess of 'list', 'hostModel' when creating a TreeNote, + * so this function is not ready and not necessary to be public. + */ + function addChild(child, node) { + var children = node.children; + if (child.parentNode === node) { + return; + } + children.push(child); + child.parentNode = node; + } + + function retrieveTargetInfo(payload, validPayloadTypes, seriesModel) { + if (payload && indexOf(validPayloadTypes, payload.type) >= 0) { + var root = seriesModel.getData().tree.root; + var targetNode = payload.targetNode; + if (isString(targetNode)) { + targetNode = root.getNodeById(targetNode); + } + if (targetNode && root.contains(targetNode)) { + return { + node: targetNode + }; + } + var targetNodeId = payload.targetNodeId; + if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) { + return { + node: targetNode + }; + } + } + } + // Not includes the given node at the last item. + function getPathToRoot(node) { + var path = []; + while (node) { + node = node.parentNode; + node && path.push(node); + } + return path.reverse(); + } + function aboveViewRoot(viewRoot, node) { + var viewPath = getPathToRoot(viewRoot); + return indexOf(viewPath, node) >= 0; + } + // From root to the input node (the input node will be included). + function wrapTreePathInfo(node, seriesModel) { + var treePathInfo = []; + while (node) { + var nodeDataIndex = node.dataIndex; + treePathInfo.push({ + name: node.name, + dataIndex: nodeDataIndex, + value: seriesModel.getRawValue(nodeDataIndex) + }); + node = node.parentNode; + } + treePathInfo.reverse(); + return treePathInfo; + } + + var TreeSeriesModel = /** @class */function (_super) { + __extends(TreeSeriesModel, _super); + function TreeSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.hasSymbolVisual = true; + // Do it self. + _this.ignoreStyleOnData = true; + return _this; + } + /** + * Init a tree data structure from data in option series + */ + TreeSeriesModel.prototype.getInitialData = function (option) { + // create a virtual root + var root = { + name: option.name, + children: option.data + }; + var leaves = option.leaves || {}; + var leavesModel = new Model(leaves, this, this.ecModel); + var tree = Tree.createTree(root, this, beforeLink); + function beforeLink(nodeData) { + nodeData.wrapMethod('getItemModel', function (model, idx) { + var node = tree.getNodeByDataIndex(idx); + if (!(node && node.children.length && node.isExpand)) { + model.parentModel = leavesModel; + } + return model; + }); + } + var treeDepth = 0; + tree.eachNode('preorder', function (node) { + if (node.depth > treeDepth) { + treeDepth = node.depth; + } + }); + var expandAndCollapse = option.expandAndCollapse; + var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth; + tree.root.eachNode('preorder', function (node) { + var item = node.hostTree.data.getRawDataItem(node.dataIndex); + // Add item.collapsed != null, because users can collapse node original in the series.data. + node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth; + }); + return tree.data; + }; + /** + * Make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'. + * @returns {string} orient + */ + TreeSeriesModel.prototype.getOrient = function () { + var orient = this.get('orient'); + if (orient === 'horizontal') { + orient = 'LR'; + } else if (orient === 'vertical') { + orient = 'TB'; + } + return orient; + }; + TreeSeriesModel.prototype.setZoom = function (zoom) { + this.option.zoom = zoom; + }; + TreeSeriesModel.prototype.setCenter = function (center) { + this.option.center = center; + }; + TreeSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + var tree = this.getData().tree; + var realRoot = tree.root.children[0]; + var node = tree.getNodeByDataIndex(dataIndex); + var value = node.getValue(); + var name = node.name; + while (node && node !== realRoot) { + name = node.parentNode.name + '.' + name; + node = node.parentNode; + } + return createTooltipMarkup('nameValue', { + name: name, + value: value, + noValue: isNaN(value) || value == null + }); + }; + // Add tree path to tooltip param + TreeSeriesModel.prototype.getDataParams = function (dataIndex) { + var params = _super.prototype.getDataParams.apply(this, arguments); + var node = this.getData().tree.getNodeByDataIndex(dataIndex); + params.treeAncestors = wrapTreePathInfo(node, this); + params.collapsed = !node.isExpand; + return params; + }; + TreeSeriesModel.type = 'series.tree'; + // can support the position parameters 'left', 'top','right','bottom', 'width', + // 'height' in the setOption() with 'merge' mode normal. + TreeSeriesModel.layoutMode = 'box'; + TreeSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: 'view', + // the position of the whole view + left: '12%', + top: '12%', + right: '12%', + bottom: '12%', + // the layout of the tree, two value can be selected, 'orthogonal' or 'radial' + layout: 'orthogonal', + // value can be 'polyline' + edgeShape: 'curve', + edgeForkPosition: '50%', + // true | false | 'move' | 'scale', see module:component/helper/RoamController. + roam: false, + // Symbol size scale ratio in roam + nodeScaleRatio: 0.4, + // Default on center of graph + center: null, + zoom: 1, + orient: 'LR', + symbol: 'emptyCircle', + symbolSize: 7, + expandAndCollapse: true, + initialTreeDepth: 2, + lineStyle: { + color: '#ccc', + width: 1.5, + curveness: 0.5 + }, + itemStyle: { + color: 'lightsteelblue', + // borderColor: '#c23531', + borderWidth: 1.5 + }, + label: { + show: true + }, + animationEasing: 'linear', + animationDuration: 700, + animationDurationUpdate: 500 + }; + return TreeSeriesModel; + }(SeriesModel); + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /** + * Traverse the tree from bottom to top and do something + */ + function eachAfter(root, callback, separation) { + var nodes = [root]; + var next = []; + var node; + while (node = nodes.pop()) { + // jshint ignore:line + next.push(node); + if (node.isExpand) { + var children = node.children; + if (children.length) { + for (var i = 0; i < children.length; i++) { + nodes.push(children[i]); + } + } + } + } + while (node = next.pop()) { + // jshint ignore:line + callback(node, separation); + } + } + /** + * Traverse the tree from top to bottom and do something + */ + function eachBefore(root, callback) { + var nodes = [root]; + var node; + while (node = nodes.pop()) { + // jshint ignore:line + callback(node); + if (node.isExpand) { + var children = node.children; + if (children.length) { + for (var i = children.length - 1; i >= 0; i--) { + nodes.push(children[i]); + } + } + } + } + } + + function treeLayout(ecModel, api) { + ecModel.eachSeriesByType('tree', function (seriesModel) { + commonLayout(seriesModel, api); + }); + } + function commonLayout(seriesModel, api) { + var layoutInfo = getViewRect$1(seriesModel, api); + seriesModel.layoutInfo = layoutInfo; + var layout = seriesModel.get('layout'); + var width = 0; + var height = 0; + var separation$1 = null; + if (layout === 'radial') { + width = 2 * Math.PI; + height = Math.min(layoutInfo.height, layoutInfo.width) / 2; + separation$1 = separation(function (node1, node2) { + return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth; + }); + } else { + width = layoutInfo.width; + height = layoutInfo.height; + separation$1 = separation(); + } + var virtualRoot = seriesModel.getData().tree.root; + var realRoot = virtualRoot.children[0]; + if (realRoot) { + init$2(virtualRoot); + eachAfter(realRoot, firstWalk, separation$1); + virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim; + eachBefore(realRoot, secondWalk); + var left_1 = realRoot; + var right_1 = realRoot; + var bottom_1 = realRoot; + eachBefore(realRoot, function (node) { + var x = node.getLayout().x; + if (x < left_1.getLayout().x) { + left_1 = node; + } + if (x > right_1.getLayout().x) { + right_1 = node; + } + if (node.depth > bottom_1.depth) { + bottom_1 = node; + } + }); + var delta = left_1 === right_1 ? 1 : separation$1(left_1, right_1) / 2; + var tx_1 = delta - left_1.getLayout().x; + var kx_1 = 0; + var ky_1 = 0; + var coorX_1 = 0; + var coorY_1 = 0; + if (layout === 'radial') { + kx_1 = width / (right_1.getLayout().x + delta + tx_1); + // here we use (node.depth - 1), bucause the real root's depth is 1 + ky_1 = height / (bottom_1.depth - 1 || 1); + eachBefore(realRoot, function (node) { + coorX_1 = (node.getLayout().x + tx_1) * kx_1; + coorY_1 = (node.depth - 1) * ky_1; + var finalCoor = radialCoordinate(coorX_1, coorY_1); + node.setLayout({ + x: finalCoor.x, + y: finalCoor.y, + rawX: coorX_1, + rawY: coorY_1 + }, true); + }); + } else { + var orient_1 = seriesModel.getOrient(); + if (orient_1 === 'RL' || orient_1 === 'LR') { + ky_1 = height / (right_1.getLayout().x + delta + tx_1); + kx_1 = width / (bottom_1.depth - 1 || 1); + eachBefore(realRoot, function (node) { + coorY_1 = (node.getLayout().x + tx_1) * ky_1; + coorX_1 = orient_1 === 'LR' ? (node.depth - 1) * kx_1 : width - (node.depth - 1) * kx_1; + node.setLayout({ + x: coorX_1, + y: coorY_1 + }, true); + }); + } else if (orient_1 === 'TB' || orient_1 === 'BT') { + kx_1 = width / (right_1.getLayout().x + delta + tx_1); + ky_1 = height / (bottom_1.depth - 1 || 1); + eachBefore(realRoot, function (node) { + coorX_1 = (node.getLayout().x + tx_1) * kx_1; + coorY_1 = orient_1 === 'TB' ? (node.depth - 1) * ky_1 : height - (node.depth - 1) * ky_1; + node.setLayout({ + x: coorX_1, + y: coorY_1 + }, true); + }); + } + } + } + } + + function treeVisual(ecModel) { + ecModel.eachSeriesByType('tree', function (seriesModel) { + var data = seriesModel.getData(); + var tree = data.tree; + tree.eachNode(function (node) { + var model = node.getModel(); + // TODO Optimize + var style = model.getModel('itemStyle').getItemStyle(); + var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style'); + extend(existsStyle, style); + }); + }); + } + + function installTreeAction(registers) { + registers.registerAction({ + type: 'treeExpandAndCollapse', + event: 'treeExpandAndCollapse', + update: 'update' + }, function (payload, ecModel) { + ecModel.eachComponent({ + mainType: 'series', + subType: 'tree', + query: payload + }, function (seriesModel) { + var dataIndex = payload.dataIndex; + var tree = seriesModel.getData().tree; + var node = tree.getNodeByDataIndex(dataIndex); + node.isExpand = !node.isExpand; + }); + }); + registers.registerAction({ + type: 'treeRoam', + event: 'treeRoam', + // Here we set 'none' instead of 'update', because roam action + // just need to update the transform matrix without having to recalculate + // the layout. So don't need to go through the whole update process, such + // as 'dataPrcocess', 'coordSystemUpdate', 'layout' and so on. + update: 'none' + }, function (payload, ecModel, api) { + ecModel.eachComponent({ + mainType: 'series', + subType: 'tree', + query: payload + }, function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + var res = updateCenterAndZoom(coordSys, payload, undefined, api); + seriesModel.setCenter && seriesModel.setCenter(res.center); + seriesModel.setZoom && seriesModel.setZoom(res.zoom); + }); + }); + } + + function install$b(registers) { + registers.registerChartView(TreeView); + registers.registerSeriesModel(TreeSeriesModel); + registers.registerLayout(treeLayout); + registers.registerVisual(treeVisual); + installTreeAction(registers); + } + + var actionTypes = ['treemapZoomToNode', 'treemapRender', 'treemapMove']; + function installTreemapAction(registers) { + for (var i = 0; i < actionTypes.length; i++) { + registers.registerAction({ + type: actionTypes[i], + update: 'updateView' + }, noop); + } + registers.registerAction({ + type: 'treemapRootToNode', + update: 'updateView' + }, function (payload, ecModel) { + ecModel.eachComponent({ + mainType: 'series', + subType: 'treemap', + query: payload + }, handleRootToNode); + function handleRootToNode(model, index) { + var types = ['treemapZoomToNode', 'treemapRootToNode']; + var targetInfo = retrieveTargetInfo(payload, types, model); + if (targetInfo) { + var originViewRoot = model.getViewRoot(); + if (originViewRoot) { + payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown'; + } + model.resetViewRoot(targetInfo.node); + } + } + }); + } + + function enableAriaDecalForTree(seriesModel) { + var data = seriesModel.getData(); + var tree = data.tree; + var decalPaletteScope = {}; + tree.eachNode(function (node) { + // Use decal of level 1 node + var current = node; + while (current && current.depth > 1) { + current = current.parentNode; + } + var decal = getDecalFromPalette(seriesModel.ecModel, current.name || current.dataIndex + '', decalPaletteScope); + node.setVisual('decal', decal); + }); + } + + var TreemapSeriesModel = /** @class */function (_super) { + __extends(TreemapSeriesModel, _super); + function TreemapSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = TreemapSeriesModel.type; + _this.preventUsingHoverLayer = true; + return _this; + } + /** + * @override + */ + TreemapSeriesModel.prototype.getInitialData = function (option, ecModel) { + // Create a virtual root. + var root = { + name: option.name, + children: option.data + }; + completeTreeValue(root); + var levels = option.levels || []; + // Used in "visual priority" in `treemapVisual.js`. + // This way is a little tricky, must satisfy the precondition: + // 1. There is no `treeNode.getModel('itemStyle.xxx')` used. + // 2. The `Model.prototype.getModel()` will not use any clone-like way. + var designatedVisualItemStyle = this.designatedVisualItemStyle = {}; + var designatedVisualModel = new Model({ + itemStyle: designatedVisualItemStyle + }, this, ecModel); + levels = option.levels = setDefault(levels, ecModel); + var levelModels = map(levels || [], function (levelDefine) { + return new Model(levelDefine, designatedVisualModel, ecModel); + }, this); + // Make sure always a new tree is created when setOption, + // in TreemapView, we check whether oldTree === newTree + // to choose mappings approach among old shapes and new shapes. + var tree = Tree.createTree(root, this, beforeLink); + function beforeLink(nodeData) { + nodeData.wrapMethod('getItemModel', function (model, idx) { + var node = tree.getNodeByDataIndex(idx); + var levelModel = node ? levelModels[node.depth] : null; + // If no levelModel, we also need `designatedVisualModel`. + model.parentModel = levelModel || designatedVisualModel; + return model; + }); + } + return tree.data; + }; + TreemapSeriesModel.prototype.optionUpdated = function () { + this.resetViewRoot(); + }; + /** + * @override + * @param {number} dataIndex + * @param {boolean} [mutipleSeries=false] + */ + TreemapSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + var data = this.getData(); + var value = this.getRawValue(dataIndex); + var name = data.getName(dataIndex); + return createTooltipMarkup('nameValue', { + name: name, + value: value + }); + }; + /** + * Add tree path to tooltip param + * + * @override + * @param {number} dataIndex + * @return {Object} + */ + TreemapSeriesModel.prototype.getDataParams = function (dataIndex) { + var params = _super.prototype.getDataParams.apply(this, arguments); + var node = this.getData().tree.getNodeByDataIndex(dataIndex); + params.treeAncestors = wrapTreePathInfo(node, this); + // compatitable the previous code. + params.treePathInfo = params.treeAncestors; + return params; + }; + /** + * @public + * @param {Object} layoutInfo { + * x: containerGroup x + * y: containerGroup y + * width: containerGroup width + * height: containerGroup height + * } + */ + TreemapSeriesModel.prototype.setLayoutInfo = function (layoutInfo) { + /** + * @readOnly + * @type {Object} + */ + this.layoutInfo = this.layoutInfo || {}; + extend(this.layoutInfo, layoutInfo); + }; + /** + * @param {string} id + * @return {number} index + */ + TreemapSeriesModel.prototype.mapIdToIndex = function (id) { + // A feature is implemented: + // index is monotone increasing with the sequence of + // input id at the first time. + // This feature can make sure that each data item and its + // mapped color have the same index between data list and + // color list at the beginning, which is useful for user + // to adjust data-color mapping. + /** + * @private + * @type {Object} + */ + var idIndexMap = this._idIndexMap; + if (!idIndexMap) { + idIndexMap = this._idIndexMap = createHashMap(); + /** + * @private + * @type {number} + */ + this._idIndexMapCount = 0; + } + var index = idIndexMap.get(id); + if (index == null) { + idIndexMap.set(id, index = this._idIndexMapCount++); + } + return index; + }; + TreemapSeriesModel.prototype.getViewRoot = function () { + return this._viewRoot; + }; + TreemapSeriesModel.prototype.resetViewRoot = function (viewRoot) { + viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot; + var root = this.getRawData().tree.root; + if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) { + this._viewRoot = root; + } + }; + TreemapSeriesModel.prototype.enableAriaDecal = function () { + enableAriaDecalForTree(this); + }; + TreemapSeriesModel.type = 'series.treemap'; + TreemapSeriesModel.layoutMode = 'box'; + TreemapSeriesModel.defaultOption = { + // Disable progressive rendering + progressive: 0, + // size: ['80%', '80%'], // deprecated, compatible with ec2. + left: 'center', + top: 'middle', + width: '80%', + height: '80%', + sort: true, + clipWindow: 'origin', + squareRatio: 0.5 * (1 + Math.sqrt(5)), + leafDepth: null, + drillDownIcon: '▶', + // to align specialized icon. ▷▶❒❐▼✚ + zoomToNodeRatio: 0.32 * 0.32, + roam: true, + nodeClick: 'zoomToNode', + animation: true, + animationDurationUpdate: 900, + animationEasing: 'quinticInOut', + breadcrumb: { + show: true, + height: 22, + left: 'center', + top: 'bottom', + // right + // bottom + emptyItemWidth: 25, + itemStyle: { + color: 'rgba(0,0,0,0.7)', + textStyle: { + color: '#fff' + } + }, + emphasis: { + itemStyle: { + color: 'rgba(0,0,0,0.9)' // '#5793f3', + } + } + }, + + label: { + show: true, + // Do not use textDistance, for ellipsis rect just the same as treemap node rect. + distance: 0, + padding: 5, + position: 'inside', + // formatter: null, + color: '#fff', + overflow: 'truncate' + // align + // verticalAlign + }, + + upperLabel: { + show: false, + position: [0, '50%'], + height: 20, + // formatter: null, + // color: '#fff', + overflow: 'truncate', + // align: null, + verticalAlign: 'middle' + }, + itemStyle: { + color: null, + colorAlpha: null, + colorSaturation: null, + borderWidth: 0, + gapWidth: 0, + borderColor: '#fff', + borderColorSaturation: null // If specified, borderColor will be ineffective, and the + // border color is evaluated by color of current node and + // borderColorSaturation. + }, + + emphasis: { + upperLabel: { + show: true, + position: [0, '50%'], + overflow: 'truncate', + verticalAlign: 'middle' + } + }, + visualDimension: 0, + visualMin: null, + visualMax: null, + color: [], + // level[n].color (if necessary). + // + Specify color list of each level. level[0].color would be global + // color list if not specified. (see method `setDefault`). + // + But set as a empty array to forbid fetch color from global palette + // when using nodeModel.get('color'), otherwise nodes on deep level + // will always has color palette set and are not able to inherit color + // from parent node. + // + TreemapSeries.color can not be set as 'none', otherwise effect + // legend color fetching (see seriesColor.js). + colorAlpha: null, + colorSaturation: null, + colorMappingBy: 'index', + visibleMin: 10, + // be rendered. Only works when sort is 'asc' or 'desc'. + childrenVisibleMin: null, + // grandchildren will not show. + // Why grandchildren? If not grandchildren but children, + // some siblings show children and some not, + // the appearance may be mess and not consistent, + levels: [] // Each item: { + // visibleMin, itemStyle, visualDimension, label + // } + }; + + return TreemapSeriesModel; + }(SeriesModel); + /** + * @param {Object} dataNode + */ + function completeTreeValue(dataNode) { + // Postorder travel tree. + // If value of none-leaf node is not set, + // calculate it by suming up the value of all children. + var sum = 0; + each(dataNode.children, function (child) { + completeTreeValue(child); + var childValue = child.value; + isArray(childValue) && (childValue = childValue[0]); + sum += childValue; + }); + var thisValue = dataNode.value; + if (isArray(thisValue)) { + thisValue = thisValue[0]; + } + if (thisValue == null || isNaN(thisValue)) { + thisValue = sum; + } + // Value should not less than 0. + if (thisValue < 0) { + thisValue = 0; + } + isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue; + } + /** + * set default to level configuration + */ + function setDefault(levels, ecModel) { + var globalColorList = normalizeToArray(ecModel.get('color')); + var globalDecalList = normalizeToArray(ecModel.get(['aria', 'decal', 'decals'])); + if (!globalColorList) { + return; + } + levels = levels || []; + var hasColorDefine; + var hasDecalDefine; + each(levels, function (levelDefine) { + var model = new Model(levelDefine); + var modelColor = model.get('color'); + var modelDecal = model.get('decal'); + if (model.get(['itemStyle', 'color']) || modelColor && modelColor !== 'none') { + hasColorDefine = true; + } + if (model.get(['itemStyle', 'decal']) || modelDecal && modelDecal !== 'none') { + hasDecalDefine = true; + } + }); + var level0 = levels[0] || (levels[0] = {}); + if (!hasColorDefine) { + level0.color = globalColorList.slice(); + } + if (!hasDecalDefine && globalDecalList) { + level0.decal = globalDecalList.slice(); + } + return levels; + } + + var TEXT_PADDING = 8; + var ITEM_GAP = 8; + var ARRAY_LENGTH = 5; + var Breadcrumb = /** @class */function () { + function Breadcrumb(containerGroup) { + this.group = new Group(); + containerGroup.add(this.group); + } + Breadcrumb.prototype.render = function (seriesModel, api, targetNode, onSelect) { + var model = seriesModel.getModel('breadcrumb'); + var thisGroup = this.group; + thisGroup.removeAll(); + if (!model.get('show') || !targetNode) { + return; + } + var normalStyleModel = model.getModel('itemStyle'); + var emphasisModel = model.getModel('emphasis'); + var textStyleModel = normalStyleModel.getModel('textStyle'); + var emphasisTextStyleModel = emphasisModel.getModel(['itemStyle', 'textStyle']); + var layoutParam = { + pos: { + left: model.get('left'), + right: model.get('right'), + top: model.get('top'), + bottom: model.get('bottom') + }, + box: { + width: api.getWidth(), + height: api.getHeight() + }, + emptyItemWidth: model.get('emptyItemWidth'), + totalWidth: 0, + renderList: [] + }; + this._prepare(targetNode, layoutParam, textStyleModel); + this._renderContent(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect); + positionElement(thisGroup, layoutParam.pos, layoutParam.box); + }; + /** + * Prepare render list and total width + * @private + */ + Breadcrumb.prototype._prepare = function (targetNode, layoutParam, textStyleModel) { + for (var node = targetNode; node; node = node.parentNode) { + var text = convertOptionIdName(node.getModel().get('name'), ''); + var textRect = textStyleModel.getTextRect(text); + var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth); + layoutParam.totalWidth += itemWidth + ITEM_GAP; + layoutParam.renderList.push({ + node: node, + text: text, + width: itemWidth + }); + } + }; + /** + * @private + */ + Breadcrumb.prototype._renderContent = function (seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect) { + // Start rendering. + var lastX = 0; + var emptyItemWidth = layoutParam.emptyItemWidth; + var height = seriesModel.get(['breadcrumb', 'height']); + var availableSize = getAvailableSize(layoutParam.pos, layoutParam.box); + var totalWidth = layoutParam.totalWidth; + var renderList = layoutParam.renderList; + var emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle(); + for (var i = renderList.length - 1; i >= 0; i--) { + var item = renderList[i]; + var itemNode = item.node; + var itemWidth = item.width; + var text = item.text; + // Hdie text and shorten width if necessary. + if (totalWidth > availableSize.width) { + totalWidth -= itemWidth - emptyItemWidth; + itemWidth = emptyItemWidth; + text = null; + } + var el = new Polygon({ + shape: { + points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0) + }, + style: defaults(normalStyleModel.getItemStyle(), { + lineJoin: 'bevel' + }), + textContent: new ZRText({ + style: createTextStyle(textStyleModel, { + text: text + }) + }), + textConfig: { + position: 'inside' + }, + z2: Z2_EMPHASIS_LIFT * 1e4, + onclick: curry(onSelect, itemNode) + }); + el.disableLabelAnimation = true; + el.getTextContent().ensureState('emphasis').style = createTextStyle(emphasisTextStyleModel, { + text: text + }); + el.ensureState('emphasis').style = emphasisItemStyle; + toggleHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + this.group.add(el); + packEventData(el, seriesModel, itemNode); + lastX += itemWidth + ITEM_GAP; + } + }; + Breadcrumb.prototype.remove = function () { + this.group.removeAll(); + }; + return Breadcrumb; + }(); + function makeItemPoints(x, y, itemWidth, itemHeight, head, tail) { + var points = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]]; + !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]); + !head && points.push([x, y + itemHeight / 2]); + return points; + } + // Package custom mouse event. + function packEventData(el, seriesModel, itemNode) { + getECData(el).eventData = { + componentType: 'series', + componentSubType: 'treemap', + componentIndex: seriesModel.componentIndex, + seriesIndex: seriesModel.seriesIndex, + seriesName: seriesModel.name, + seriesType: 'treemap', + selfType: 'breadcrumb', + nodeData: { + dataIndex: itemNode && itemNode.dataIndex, + name: itemNode && itemNode.name + }, + treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel) + }; + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /** + * Animate multiple elements with a single done-callback. + * + * @example + * animation + * .createWrap() + * .add(el1, {x: 10, y: 10}) + * .add(el2, {shape: {width: 500}, style: {fill: 'red'}}, 400) + * .done(function () { // done }) + * .start('cubicOut'); + */ + var AnimationWrap = /** @class */function () { + function AnimationWrap() { + this._storage = []; + this._elExistsMap = {}; + } + /** + * Caution: a el can only be added once, otherwise 'done' + * might not be called. This method checks this (by el.id), + * suppresses adding and returns false when existing el found. + * + * @return Whether adding succeeded. + */ + AnimationWrap.prototype.add = function (el, target, duration, delay, easing) { + if (this._elExistsMap[el.id]) { + return false; + } + this._elExistsMap[el.id] = true; + this._storage.push({ + el: el, + target: target, + duration: duration, + delay: delay, + easing: easing + }); + return true; + }; + /** + * Only execute when animation done/aborted. + */ + AnimationWrap.prototype.finished = function (callback) { + this._finishedCallback = callback; + return this; + }; + /** + * Will stop exist animation firstly. + */ + AnimationWrap.prototype.start = function () { + var _this = this; + var count = this._storage.length; + var checkTerminate = function () { + count--; + if (count <= 0) { + // Guard. + _this._storage.length = 0; + _this._elExistsMap = {}; + _this._finishedCallback && _this._finishedCallback(); + } + }; + for (var i = 0, len = this._storage.length; i < len; i++) { + var item = this._storage[i]; + item.el.animateTo(item.target, { + duration: item.duration, + delay: item.delay, + easing: item.easing, + setToFinal: true, + done: checkTerminate, + aborted: checkTerminate + }); + } + return this; + }; + return AnimationWrap; + }(); + function createWrap() { + return new AnimationWrap(); + } + + var Group$1 = Group; + var Rect$1 = Rect; + var DRAG_THRESHOLD = 3; + var PATH_LABEL_NOAMAL = 'label'; + var PATH_UPPERLABEL_NORMAL = 'upperLabel'; + // Should larger than emphasis states lift z + var Z2_BASE = Z2_EMPHASIS_LIFT * 10; // Should bigger than every z2. + var Z2_BG = Z2_EMPHASIS_LIFT * 2; + var Z2_CONTENT = Z2_EMPHASIS_LIFT * 3; + var getStateItemStyle = makeStyleMapper([['fill', 'color'], + // `borderColor` and `borderWidth` has been occupied, + // so use `stroke` to indicate the stroke of the rect. + ['stroke', 'strokeColor'], ['lineWidth', 'strokeWidth'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. + ]); + + var getItemStyleNormal = function (model) { + // Normal style props should include emphasis style props. + var itemStyle = getStateItemStyle(model); + // Clear styles set by emphasis. + itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null; + return itemStyle; + }; + var inner$8 = makeInner(); + var TreemapView = /** @class */function (_super) { + __extends(TreemapView, _super); + function TreemapView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = TreemapView.type; + _this._state = 'ready'; + _this._storage = createStorage(); + return _this; + } + /** + * @override + */ + TreemapView.prototype.render = function (seriesModel, ecModel, api, payload) { + var models = ecModel.findComponents({ + mainType: 'series', + subType: 'treemap', + query: payload + }); + if (indexOf(models, seriesModel) < 0) { + return; + } + this.seriesModel = seriesModel; + this.api = api; + this.ecModel = ecModel; + var types = ['treemapZoomToNode', 'treemapRootToNode']; + var targetInfo = retrieveTargetInfo(payload, types, seriesModel); + var payloadType = payload && payload.type; + var layoutInfo = seriesModel.layoutInfo; + var isInit = !this._oldTree; + var thisStorage = this._storage; + // Mark new root when action is treemapRootToNode. + var reRoot = payloadType === 'treemapRootToNode' && targetInfo && thisStorage ? { + rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()], + direction: payload.direction + } : null; + var containerGroup = this._giveContainerGroup(layoutInfo); + var hasAnimation = seriesModel.get('animation'); + var renderResult = this._doRender(containerGroup, seriesModel, reRoot); + hasAnimation && !isInit && (!payloadType || payloadType === 'treemapZoomToNode' || payloadType === 'treemapRootToNode') ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally(); + this._resetController(api); + this._renderBreadcrumb(seriesModel, api, targetInfo); + }; + TreemapView.prototype._giveContainerGroup = function (layoutInfo) { + var containerGroup = this._containerGroup; + if (!containerGroup) { + // FIXME + // 加一层containerGroup是为了clip,但是现在clip功能并没有实现。 + containerGroup = this._containerGroup = new Group$1(); + this._initEvents(containerGroup); + this.group.add(containerGroup); + } + containerGroup.x = layoutInfo.x; + containerGroup.y = layoutInfo.y; + return containerGroup; + }; + TreemapView.prototype._doRender = function (containerGroup, seriesModel, reRoot) { + var thisTree = seriesModel.getData().tree; + var oldTree = this._oldTree; + // Clear last shape records. + var lastsForAnimation = createStorage(); + var thisStorage = createStorage(); + var oldStorage = this._storage; + var willInvisibleEls = []; + function doRenderNode(thisNode, oldNode, parentGroup, depth) { + return renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth); + } + // Notice: When thisTree and oldTree are the same tree (see list.cloneShallow), + // the oldTree is actually losted, so we cannot find all of the old graphic + // elements from tree. So we use this strategy: make element storage, move + // from old storage to new storage, clear old storage. + dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0); + // Process all removing. + var willDeleteEls = clearStorage(oldStorage); + this._oldTree = thisTree; + this._storage = thisStorage; + return { + lastsForAnimation: lastsForAnimation, + willDeleteEls: willDeleteEls, + renderFinally: renderFinally + }; + function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) { + // When 'render' is triggered by action, + // 'this' and 'old' may be the same tree, + // we use rawIndex in that case. + if (sameTree) { + oldViewChildren = thisViewChildren; + each(thisViewChildren, function (child, index) { + !child.isRemoved() && processNode(index, index); + }); + } + // Diff hierarchically (diff only in each subtree, but not whole). + // because, consistency of view is important. + else { + new DataDiffer(oldViewChildren, thisViewChildren, getKey, getKey).add(processNode).update(processNode).remove(curry(processNode, null)).execute(); + } + function getKey(node) { + // Identify by name or raw index. + return node.getId(); + } + function processNode(newIndex, oldIndex) { + var thisNode = newIndex != null ? thisViewChildren[newIndex] : null; + var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null; + var group = doRenderNode(thisNode, oldNode, parentGroup, depth); + group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1); + } + } + function clearStorage(storage) { + var willDeleteEls = createStorage(); + storage && each(storage, function (store, storageName) { + var delEls = willDeleteEls[storageName]; + each(store, function (el) { + el && (delEls.push(el), inner$8(el).willDelete = true); + }); + }); + return willDeleteEls; + } + function renderFinally() { + each(willDeleteEls, function (els) { + each(els, function (el) { + el.parent && el.parent.remove(el); + }); + }); + each(willInvisibleEls, function (el) { + el.invisible = true; + // Setting invisible is for optimizing, so no need to set dirty, + // just mark as invisible. + el.dirty(); + }); + } + }; + TreemapView.prototype._doAnimation = function (containerGroup, renderResult, seriesModel, reRoot) { + var durationOption = seriesModel.get('animationDurationUpdate'); + var easingOption = seriesModel.get('animationEasing'); + // TODO: do not support function until necessary. + var duration = (isFunction(durationOption) ? 0 : durationOption) || 0; + var easing = (isFunction(easingOption) ? null : easingOption) || 'cubicOut'; + var animationWrap = createWrap(); + // Make delete animations. + each(renderResult.willDeleteEls, function (store, storageName) { + each(store, function (el, rawIndex) { + if (el.invisible) { + return; + } + var parent = el.parent; // Always has parent, and parent is nodeGroup. + var target; + var innerStore = inner$8(parent); + if (reRoot && reRoot.direction === 'drillDown') { + target = parent === reRoot.rootNodeGroup + // This is the content element of view root. + // Only `content` will enter this branch, because + // `background` and `nodeGroup` will not be deleted. + ? { + shape: { + x: 0, + y: 0, + width: innerStore.nodeWidth, + height: innerStore.nodeHeight + }, + style: { + opacity: 0 + } + } + // Others. + : { + style: { + opacity: 0 + } + }; + } else { + var targetX = 0; + var targetY = 0; + if (!innerStore.willDelete) { + // Let node animate to right-bottom corner, cooperating with fadeout, + // which is appropriate for user understanding. + // Divided by 2 for reRoot rolling up effect. + targetX = innerStore.nodeWidth / 2; + targetY = innerStore.nodeHeight / 2; + } + target = storageName === 'nodeGroup' ? { + x: targetX, + y: targetY, + style: { + opacity: 0 + } + } : { + shape: { + x: targetX, + y: targetY, + width: 0, + height: 0 + }, + style: { + opacity: 0 + } + }; + } + // TODO: do not support delay until necessary. + target && animationWrap.add(el, target, duration, 0, easing); + }); + }); + // Make other animations + each(this._storage, function (store, storageName) { + each(store, function (el, rawIndex) { + var last = renderResult.lastsForAnimation[storageName][rawIndex]; + var target = {}; + if (!last) { + return; + } + if (el instanceof Group) { + if (last.oldX != null) { + target.x = el.x; + target.y = el.y; + el.x = last.oldX; + el.y = last.oldY; + } + } else { + if (last.oldShape) { + target.shape = extend({}, el.shape); + el.setShape(last.oldShape); + } + if (last.fadein) { + el.setStyle('opacity', 0); + target.style = { + opacity: 1 + }; + } + // When animation is stopped for succedent animation starting, + // el.style.opacity might not be 1 + else if (el.style.opacity !== 1) { + target.style = { + opacity: 1 + }; + } + } + animationWrap.add(el, target, duration, 0, easing); + }); + }, this); + this._state = 'animating'; + animationWrap.finished(bind(function () { + this._state = 'ready'; + renderResult.renderFinally(); + }, this)).start(); + }; + TreemapView.prototype._resetController = function (api) { + var controller = this._controller; + // Init controller. + if (!controller) { + controller = this._controller = new RoamController(api.getZr()); + controller.enable(this.seriesModel.get('roam')); + controller.on('pan', bind(this._onPan, this)); + controller.on('zoom', bind(this._onZoom, this)); + } + var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight()); + controller.setPointerChecker(function (e, x, y) { + return rect.contain(x, y); + }); + }; + TreemapView.prototype._clearController = function () { + var controller = this._controller; + if (controller) { + controller.dispose(); + controller = null; + } + }; + TreemapView.prototype._onPan = function (e) { + if (this._state !== 'animating' && (Math.abs(e.dx) > DRAG_THRESHOLD || Math.abs(e.dy) > DRAG_THRESHOLD)) { + // These param must not be cached. + var root = this.seriesModel.getData().tree.root; + if (!root) { + return; + } + var rootLayout = root.getLayout(); + if (!rootLayout) { + return; + } + this.api.dispatchAction({ + type: 'treemapMove', + from: this.uid, + seriesId: this.seriesModel.id, + rootRect: { + x: rootLayout.x + e.dx, + y: rootLayout.y + e.dy, + width: rootLayout.width, + height: rootLayout.height + } + }); + } + }; + TreemapView.prototype._onZoom = function (e) { + var mouseX = e.originX; + var mouseY = e.originY; + if (this._state !== 'animating') { + // These param must not be cached. + var root = this.seriesModel.getData().tree.root; + if (!root) { + return; + } + var rootLayout = root.getLayout(); + if (!rootLayout) { + return; + } + var rect = new BoundingRect(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height); + var layoutInfo = this.seriesModel.layoutInfo; + // Transform mouse coord from global to containerGroup. + mouseX -= layoutInfo.x; + mouseY -= layoutInfo.y; + // Scale root bounding rect. + var m = create$1(); + translate(m, m, [-mouseX, -mouseY]); + scale$1(m, m, [e.scale, e.scale]); + translate(m, m, [mouseX, mouseY]); + rect.applyTransform(m); + this.api.dispatchAction({ + type: 'treemapRender', + from: this.uid, + seriesId: this.seriesModel.id, + rootRect: { + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height + } + }); + } + }; + TreemapView.prototype._initEvents = function (containerGroup) { + var _this = this; + containerGroup.on('click', function (e) { + if (_this._state !== 'ready') { + return; + } + var nodeClick = _this.seriesModel.get('nodeClick', true); + if (!nodeClick) { + return; + } + var targetInfo = _this.findTarget(e.offsetX, e.offsetY); + if (!targetInfo) { + return; + } + var node = targetInfo.node; + if (node.getLayout().isLeafRoot) { + _this._rootToNode(targetInfo); + } else { + if (nodeClick === 'zoomToNode') { + _this._zoomToNode(targetInfo); + } else if (nodeClick === 'link') { + var itemModel = node.hostTree.data.getItemModel(node.dataIndex); + var link = itemModel.get('link', true); + var linkTarget = itemModel.get('target', true) || 'blank'; + link && windowOpen(link, linkTarget); + } + } + }, this); + }; + TreemapView.prototype._renderBreadcrumb = function (seriesModel, api, targetInfo) { + var _this = this; + if (!targetInfo) { + targetInfo = seriesModel.get('leafDepth', true) != null ? { + node: seriesModel.getViewRoot() + } + // FIXME + // better way? + // Find breadcrumb tail on center of containerGroup. + : this.findTarget(api.getWidth() / 2, api.getHeight() / 2); + if (!targetInfo) { + targetInfo = { + node: seriesModel.getData().tree.root + }; + } + } + (this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group))).render(seriesModel, api, targetInfo.node, function (node) { + if (_this._state !== 'animating') { + aboveViewRoot(seriesModel.getViewRoot(), node) ? _this._rootToNode({ + node: node + }) : _this._zoomToNode({ + node: node + }); + } + }); + }; + /** + * @override + */ + TreemapView.prototype.remove = function () { + this._clearController(); + this._containerGroup && this._containerGroup.removeAll(); + this._storage = createStorage(); + this._state = 'ready'; + this._breadcrumb && this._breadcrumb.remove(); + }; + TreemapView.prototype.dispose = function () { + this._clearController(); + }; + TreemapView.prototype._zoomToNode = function (targetInfo) { + this.api.dispatchAction({ + type: 'treemapZoomToNode', + from: this.uid, + seriesId: this.seriesModel.id, + targetNode: targetInfo.node + }); + }; + TreemapView.prototype._rootToNode = function (targetInfo) { + this.api.dispatchAction({ + type: 'treemapRootToNode', + from: this.uid, + seriesId: this.seriesModel.id, + targetNode: targetInfo.node + }); + }; + /** + * @public + * @param {number} x Global coord x. + * @param {number} y Global coord y. + * @return {Object} info If not found, return undefined; + * @return {number} info.node Target node. + * @return {number} info.offsetX x refer to target node. + * @return {number} info.offsetY y refer to target node. + */ + TreemapView.prototype.findTarget = function (x, y) { + var targetInfo; + var viewRoot = this.seriesModel.getViewRoot(); + viewRoot.eachNode({ + attr: 'viewChildren', + order: 'preorder' + }, function (node) { + var bgEl = this._storage.background[node.getRawIndex()]; + // If invisible, there might be no element. + if (bgEl) { + var point = bgEl.transformCoordToLocal(x, y); + var shape = bgEl.shape; + // For performance consideration, don't use 'getBoundingRect'. + if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) { + targetInfo = { + node: node, + offsetX: point[0], + offsetY: point[1] + }; + } else { + return false; // Suppress visit subtree. + } + } + }, this); + return targetInfo; + }; + TreemapView.type = 'treemap'; + return TreemapView; + }(ChartView); + /** + * @inner + */ + function createStorage() { + return { + nodeGroup: [], + background: [], + content: [] + }; + } + /** + * @inner + * @return Return undefined means do not travel further. + */ + function renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) { + // Whether under viewRoot. + if (!thisNode) { + // Deleting nodes will be performed finally. This method just find + // element from old storage, or create new element, set them to new + // storage, and set styles. + return; + } + // ------------------------------------------------------------------- + // Start of closure variables available in "Procedures in renderNode". + var thisLayout = thisNode.getLayout(); + var data = seriesModel.getData(); + var nodeModel = thisNode.getModel(); + // Only for enabling highlight/downplay. Clear firstly. + // Because some node will not be rendered. + data.setItemGraphicEl(thisNode.dataIndex, null); + if (!thisLayout || !thisLayout.isInView) { + return; + } + var thisWidth = thisLayout.width; + var thisHeight = thisLayout.height; + var borderWidth = thisLayout.borderWidth; + var thisInvisible = thisLayout.invisible; + var thisRawIndex = thisNode.getRawIndex(); + var oldRawIndex = oldNode && oldNode.getRawIndex(); + var thisViewChildren = thisNode.viewChildren; + var upperHeight = thisLayout.upperHeight; + var isParent = thisViewChildren && thisViewChildren.length; + var itemStyleNormalModel = nodeModel.getModel('itemStyle'); + var itemStyleEmphasisModel = nodeModel.getModel(['emphasis', 'itemStyle']); + var itemStyleBlurModel = nodeModel.getModel(['blur', 'itemStyle']); + var itemStyleSelectModel = nodeModel.getModel(['select', 'itemStyle']); + var borderRadius = itemStyleNormalModel.get('borderRadius') || 0; + // End of closure ariables available in "Procedures in renderNode". + // ----------------------------------------------------------------- + // Node group + var group = giveGraphic('nodeGroup', Group$1); + if (!group) { + return; + } + parentGroup.add(group); + // x,y are not set when el is above view root. + group.x = thisLayout.x || 0; + group.y = thisLayout.y || 0; + group.markRedraw(); + inner$8(group).nodeWidth = thisWidth; + inner$8(group).nodeHeight = thisHeight; + if (thisLayout.isAboveViewRoot) { + return group; + } + // Background + var bg = giveGraphic('background', Rect$1, depth, Z2_BG); + bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight); + var emphasisModel = nodeModel.getModel('emphasis'); + var focus = emphasisModel.get('focus'); + var blurScope = emphasisModel.get('blurScope'); + var isDisabled = emphasisModel.get('disabled'); + var focusOrIndices = focus === 'ancestor' ? thisNode.getAncestorsIndices() : focus === 'descendant' ? thisNode.getDescendantIndices() : focus; + // No children, render content. + if (isParent) { + // Because of the implementation about "traverse" in graphic hover style, we + // can not set hover listener on the "group" of non-leaf node. Otherwise the + // hover event from the descendents will be listenered. + if (isHighDownDispatcher(group)) { + setAsHighDownDispatcher(group, false); + } + if (bg) { + setAsHighDownDispatcher(bg, !isDisabled); + // Only for enabling highlight/downplay. + data.setItemGraphicEl(thisNode.dataIndex, bg); + enableHoverFocus(bg, focusOrIndices, blurScope); + } + } else { + var content = giveGraphic('content', Rect$1, depth, Z2_CONTENT); + content && renderContent(group, content); + bg.disableMorphing = true; + if (bg && isHighDownDispatcher(bg)) { + setAsHighDownDispatcher(bg, false); + } + setAsHighDownDispatcher(group, !isDisabled); + // Only for enabling highlight/downplay. + data.setItemGraphicEl(thisNode.dataIndex, group); + enableHoverFocus(group, focusOrIndices, blurScope); + } + return group; + // ---------------------------- + // | Procedures in renderNode | + // ---------------------------- + function renderBackground(group, bg, useUpperLabel) { + var ecData = getECData(bg); + // For tooltip. + ecData.dataIndex = thisNode.dataIndex; + ecData.seriesIndex = seriesModel.seriesIndex; + bg.setShape({ + x: 0, + y: 0, + width: thisWidth, + height: thisHeight, + r: borderRadius + }); + if (thisInvisible) { + // If invisible, do not set visual, otherwise the element will + // change immediately before animation. We think it is OK to + // remain its origin color when moving out of the view window. + processInvisible(bg); + } else { + bg.invisible = false; + var style = thisNode.getVisual('style'); + var visualBorderColor = style.stroke; + var normalStyle = getItemStyleNormal(itemStyleNormalModel); + normalStyle.fill = visualBorderColor; + var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel); + emphasisStyle.fill = itemStyleEmphasisModel.get('borderColor'); + var blurStyle = getStateItemStyle(itemStyleBlurModel); + blurStyle.fill = itemStyleBlurModel.get('borderColor'); + var selectStyle = getStateItemStyle(itemStyleSelectModel); + selectStyle.fill = itemStyleSelectModel.get('borderColor'); + if (useUpperLabel) { + var upperLabelWidth = thisWidth - 2 * borderWidth; + prepareText( + // PENDING: convert ZRColor to ColorString for text. + bg, visualBorderColor, style.opacity, { + x: borderWidth, + y: 0, + width: upperLabelWidth, + height: upperHeight + }); + } + // For old bg. + else { + bg.removeTextContent(); + } + bg.setStyle(normalStyle); + bg.ensureState('emphasis').style = emphasisStyle; + bg.ensureState('blur').style = blurStyle; + bg.ensureState('select').style = selectStyle; + setDefaultStateProxy(bg); + } + group.add(bg); + } + function renderContent(group, content) { + var ecData = getECData(content); + // For tooltip. + ecData.dataIndex = thisNode.dataIndex; + ecData.seriesIndex = seriesModel.seriesIndex; + var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0); + var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0); + content.culling = true; + content.setShape({ + x: borderWidth, + y: borderWidth, + width: contentWidth, + height: contentHeight, + r: borderRadius + }); + if (thisInvisible) { + // If invisible, do not set visual, otherwise the element will + // change immediately before animation. We think it is OK to + // remain its origin color when moving out of the view window. + processInvisible(content); + } else { + content.invisible = false; + var nodeStyle = thisNode.getVisual('style'); + var visualColor = nodeStyle.fill; + var normalStyle = getItemStyleNormal(itemStyleNormalModel); + normalStyle.fill = visualColor; + normalStyle.decal = nodeStyle.decal; + var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel); + var blurStyle = getStateItemStyle(itemStyleBlurModel); + var selectStyle = getStateItemStyle(itemStyleSelectModel); + // PENDING: convert ZRColor to ColorString for text. + prepareText(content, visualColor, nodeStyle.opacity, null); + content.setStyle(normalStyle); + content.ensureState('emphasis').style = emphasisStyle; + content.ensureState('blur').style = blurStyle; + content.ensureState('select').style = selectStyle; + setDefaultStateProxy(content); + } + group.add(content); + } + function processInvisible(element) { + // Delay invisible setting utill animation finished, + // avoid element vanish suddenly before animation. + !element.invisible && willInvisibleEls.push(element); + } + function prepareText(rectEl, visualColor, visualOpacity, + // Can be null/undefined + upperLabelRect) { + var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL); + var defaultText = convertOptionIdName(nodeModel.get('name'), null); + var isShow = normalLabelModel.getShallow('show'); + setLabelStyle(rectEl, getLabelStatesModels(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL), { + defaultText: isShow ? defaultText : null, + inheritColor: visualColor, + defaultOpacity: visualOpacity, + labelFetcher: seriesModel, + labelDataIndex: thisNode.dataIndex + }); + var textEl = rectEl.getTextContent(); + if (!textEl) { + return; + } + var textStyle = textEl.style; + var textPadding = normalizeCssArray(textStyle.padding || 0); + if (upperLabelRect) { + rectEl.setTextConfig({ + layoutRect: upperLabelRect + }); + textEl.disableLabelLayout = true; + } + textEl.beforeUpdate = function () { + var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0); + var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0); + if (textStyle.width !== width || textStyle.height !== height) { + textEl.setStyle({ + width: width, + height: height + }); + } + }; + textStyle.truncateMinChar = 2; + textStyle.lineOverflow = 'truncate'; + addDrillDownIcon(textStyle, upperLabelRect, thisLayout); + var textEmphasisState = textEl.getState('emphasis'); + addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout); + } + function addDrillDownIcon(style, upperLabelRect, thisLayout) { + var text = style ? style.text : null; + if (!upperLabelRect && thisLayout.isLeafRoot && text != null) { + var iconChar = seriesModel.get('drillDownIcon', true); + style.text = iconChar ? iconChar + ' ' + text : text; + } + } + function giveGraphic(storageName, Ctor, depth, z) { + var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex]; + var lasts = lastsForAnimation[storageName]; + if (element) { + // Remove from oldStorage + oldStorage[storageName][oldRawIndex] = null; + prepareAnimationWhenHasOld(lasts, element); + } + // If invisible and no old element, do not create new element (for optimizing). + else if (!thisInvisible) { + element = new Ctor(); + if (element instanceof Displayable) { + element.z2 = calculateZ2(depth, z); + } + prepareAnimationWhenNoOld(lasts, element); + } + // Set to thisStorage + return thisStorage[storageName][thisRawIndex] = element; + } + function prepareAnimationWhenHasOld(lasts, element) { + var lastCfg = lasts[thisRawIndex] = {}; + if (element instanceof Group$1) { + lastCfg.oldX = element.x; + lastCfg.oldY = element.y; + } else { + lastCfg.oldShape = extend({}, element.shape); + } + } + // If a element is new, we need to find the animation start point carefully, + // otherwise it will looks strange when 'zoomToNode'. + function prepareAnimationWhenNoOld(lasts, element) { + var lastCfg = lasts[thisRawIndex] = {}; + var parentNode = thisNode.parentNode; + var isGroup = element instanceof Group; + if (parentNode && (!reRoot || reRoot.direction === 'drillDown')) { + var parentOldX = 0; + var parentOldY = 0; + // New nodes appear from right-bottom corner in 'zoomToNode' animation. + // For convenience, get old bounding rect from background. + var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()]; + if (!reRoot && parentOldBg && parentOldBg.oldShape) { + parentOldX = parentOldBg.oldShape.width; + parentOldY = parentOldBg.oldShape.height; + } + // When no parent old shape found, its parent is new too, + // so we can just use {x:0, y:0}. + if (isGroup) { + lastCfg.oldX = 0; + lastCfg.oldY = parentOldY; + } else { + lastCfg.oldShape = { + x: parentOldX, + y: parentOldY, + width: 0, + height: 0 + }; + } + } + // Fade in, user can be aware that these nodes are new. + lastCfg.fadein = !isGroup; + } + } + // We cannot set all background with the same z, because the behaviour of + // drill down and roll up differ background creation sequence from tree + // hierarchy sequence, which cause lower background elements to overlap + // upper ones. So we calculate z based on depth. + // Moreover, we try to shrink down z interval to [0, 1] to avoid that + // treemap with large z overlaps other components. + function calculateZ2(depth, z2InLevel) { + return depth * Z2_BASE + z2InLevel; + } + + var each$3 = each; + var isObject$3 = isObject; + var CATEGORY_DEFAULT_VISUAL_INDEX = -1; + var VisualMapping = /** @class */function () { + function VisualMapping(option) { + var mappingMethod = option.mappingMethod; + var visualType = option.type; + var thisOption = this.option = clone(option); + this.type = visualType; + this.mappingMethod = mappingMethod; + this._normalizeData = normalizers[mappingMethod]; + var visualHandler = VisualMapping.visualHandlers[visualType]; + this.applyVisual = visualHandler.applyVisual; + this.getColorMapper = visualHandler.getColorMapper; + this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod]; + if (mappingMethod === 'piecewise') { + normalizeVisualRange(thisOption); + preprocessForPiecewise(thisOption); + } else if (mappingMethod === 'category') { + thisOption.categories ? preprocessForSpecifiedCategory(thisOption) + // categories is ordinal when thisOption.categories not specified, + // which need no more preprocess except normalize visual. + : normalizeVisualRange(thisOption, true); + } else { + // mappingMethod === 'linear' or 'fixed' + assert(mappingMethod !== 'linear' || thisOption.dataExtent); + normalizeVisualRange(thisOption); + } + } + VisualMapping.prototype.mapValueToVisual = function (value) { + var normalized = this._normalizeData(value); + return this._normalizedToVisual(normalized, value); + }; + VisualMapping.prototype.getNormalizer = function () { + return bind(this._normalizeData, this); + }; + /** + * List available visual types. + * + * @public + * @return {Array.} + */ + VisualMapping.listVisualTypes = function () { + return keys(VisualMapping.visualHandlers); + }; + // /** + // * @public + // */ + // static addVisualHandler(name, handler) { + // visualHandlers[name] = handler; + // } + /** + * @public + */ + VisualMapping.isValidType = function (visualType) { + return VisualMapping.visualHandlers.hasOwnProperty(visualType); + }; + /** + * Convenient method. + * Visual can be Object or Array or primary type. + */ + VisualMapping.eachVisual = function (visual, callback, context) { + if (isObject(visual)) { + each(visual, callback, context); + } else { + callback.call(context, visual); + } + }; + VisualMapping.mapVisual = function (visual, callback, context) { + var isPrimary; + var newVisual = isArray(visual) ? [] : isObject(visual) ? {} : (isPrimary = true, null); + VisualMapping.eachVisual(visual, function (v, key) { + var newVal = callback.call(context, v, key); + isPrimary ? newVisual = newVal : newVisual[key] = newVal; + }); + return newVisual; + }; + /** + * Retrieve visual properties from given object. + */ + VisualMapping.retrieveVisuals = function (obj) { + var ret = {}; + var hasVisual; + obj && each$3(VisualMapping.visualHandlers, function (h, visualType) { + if (obj.hasOwnProperty(visualType)) { + ret[visualType] = obj[visualType]; + hasVisual = true; + } + }); + return hasVisual ? ret : null; + }; + /** + * Give order to visual types, considering colorSaturation, colorAlpha depends on color. + * + * @public + * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...} + * IF Array, like: ['color', 'symbol', 'colorSaturation'] + * @return {Array.} Sorted visual types. + */ + VisualMapping.prepareVisualTypes = function (visualTypes) { + if (isArray(visualTypes)) { + visualTypes = visualTypes.slice(); + } else if (isObject$3(visualTypes)) { + var types_1 = []; + each$3(visualTypes, function (item, type) { + types_1.push(type); + }); + visualTypes = types_1; + } else { + return []; + } + visualTypes.sort(function (type1, type2) { + // color should be front of colorSaturation, colorAlpha, ... + // symbol and symbolSize do not matter. + return type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0 ? 1 : -1; + }); + return visualTypes; + }; + /** + * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'. + * Other visuals are only depends on themself. + */ + VisualMapping.dependsOn = function (visualType1, visualType2) { + return visualType2 === 'color' ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2; + }; + /** + * @param value + * @param pieceList [{value: ..., interval: [min, max]}, ...] + * Always from small to big. + * @param findClosestWhenOutside Default to be false + * @return index + */ + VisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) { + var possibleI; + var abs = Infinity; + // value has the higher priority. + for (var i = 0, len = pieceList.length; i < len; i++) { + var pieceValue = pieceList[i].value; + if (pieceValue != null) { + if (pieceValue === value + // FIXME + // It is supposed to compare value according to value type of dimension, + // but currently value type can exactly be string or number. + // Compromise for numeric-like string (like '12'), especially + // in the case that visualMap.categories is ['22', '33']. + || isString(pieceValue) && pieceValue === value + '') { + return i; + } + findClosestWhenOutside && updatePossible(pieceValue, i); + } + } + for (var i = 0, len = pieceList.length; i < len; i++) { + var piece = pieceList[i]; + var interval = piece.interval; + var close_1 = piece.close; + if (interval) { + if (interval[0] === -Infinity) { + if (littleThan(close_1[1], value, interval[1])) { + return i; + } + } else if (interval[1] === Infinity) { + if (littleThan(close_1[0], interval[0], value)) { + return i; + } + } else if (littleThan(close_1[0], interval[0], value) && littleThan(close_1[1], value, interval[1])) { + return i; + } + findClosestWhenOutside && updatePossible(interval[0], i); + findClosestWhenOutside && updatePossible(interval[1], i); + } + } + if (findClosestWhenOutside) { + return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI; + } + function updatePossible(val, index) { + var newAbs = Math.abs(val - value); + if (newAbs < abs) { + abs = newAbs; + possibleI = index; + } + } + }; + VisualMapping.visualHandlers = { + color: { + applyVisual: makeApplyVisual('color'), + getColorMapper: function () { + var thisOption = this.option; + return bind(thisOption.mappingMethod === 'category' ? function (value, isNormalized) { + !isNormalized && (value = this._normalizeData(value)); + return doMapCategory.call(this, value); + } : function (value, isNormalized, out) { + // If output rgb array + // which will be much faster and useful in pixel manipulation + var returnRGBArray = !!out; + !isNormalized && (value = this._normalizeData(value)); + out = fastLerp(value, thisOption.parsedVisual, out); + return returnRGBArray ? out : stringify(out, 'rgba'); + }, this); + }, + _normalizedToVisual: { + linear: function (normalized) { + return stringify(fastLerp(normalized, this.option.parsedVisual), 'rgba'); + }, + category: doMapCategory, + piecewise: function (normalized, value) { + var result = getSpecifiedVisual.call(this, value); + if (result == null) { + result = stringify(fastLerp(normalized, this.option.parsedVisual), 'rgba'); + } + return result; + }, + fixed: doMapFixed + } + }, + colorHue: makePartialColorVisualHandler(function (color$1, value) { + return modifyHSL(color$1, value); + }), + colorSaturation: makePartialColorVisualHandler(function (color$1, value) { + return modifyHSL(color$1, null, value); + }), + colorLightness: makePartialColorVisualHandler(function (color$1, value) { + return modifyHSL(color$1, null, null, value); + }), + colorAlpha: makePartialColorVisualHandler(function (color$1, value) { + return modifyAlpha(color$1, value); + }), + decal: { + applyVisual: makeApplyVisual('decal'), + _normalizedToVisual: { + linear: null, + category: doMapCategory, + piecewise: null, + fixed: null + } + }, + opacity: { + applyVisual: makeApplyVisual('opacity'), + _normalizedToVisual: createNormalizedToNumericVisual([0, 1]) + }, + liftZ: { + applyVisual: makeApplyVisual('liftZ'), + _normalizedToVisual: { + linear: doMapFixed, + category: doMapFixed, + piecewise: doMapFixed, + fixed: doMapFixed + } + }, + symbol: { + applyVisual: function (value, getter, setter) { + var symbolCfg = this.mapValueToVisual(value); + setter('symbol', symbolCfg); + }, + _normalizedToVisual: { + linear: doMapToArray, + category: doMapCategory, + piecewise: function (normalized, value) { + var result = getSpecifiedVisual.call(this, value); + if (result == null) { + result = doMapToArray.call(this, normalized); + } + return result; + }, + fixed: doMapFixed + } + }, + symbolSize: { + applyVisual: makeApplyVisual('symbolSize'), + _normalizedToVisual: createNormalizedToNumericVisual([0, 1]) + } + }; + return VisualMapping; + }(); + function preprocessForPiecewise(thisOption) { + var pieceList = thisOption.pieceList; + thisOption.hasSpecialVisual = false; + each(pieceList, function (piece, index) { + piece.originIndex = index; + // piece.visual is "result visual value" but not + // a visual range, so it does not need to be normalized. + if (piece.visual != null) { + thisOption.hasSpecialVisual = true; + } + }); + } + function preprocessForSpecifiedCategory(thisOption) { + // Hash categories. + var categories = thisOption.categories; + var categoryMap = thisOption.categoryMap = {}; + var visual = thisOption.visual; + each$3(categories, function (cate, index) { + categoryMap[cate] = index; + }); + // Process visual map input. + if (!isArray(visual)) { + var visualArr_1 = []; + if (isObject(visual)) { + each$3(visual, function (v, cate) { + var index = categoryMap[cate]; + visualArr_1[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v; + }); + } else { + // Is primary type, represents default visual. + visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX] = visual; + } + visual = setVisualToOption(thisOption, visualArr_1); + } + // Remove categories that has no visual, + // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX. + for (var i = categories.length - 1; i >= 0; i--) { + if (visual[i] == null) { + delete categoryMap[categories[i]]; + categories.pop(); + } + } + } + function normalizeVisualRange(thisOption, isCategory) { + var visual = thisOption.visual; + var visualArr = []; + if (isObject(visual)) { + each$3(visual, function (v) { + visualArr.push(v); + }); + } else if (visual != null) { + visualArr.push(visual); + } + var doNotNeedPair = { + color: 1, + symbol: 1 + }; + if (!isCategory && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) { + // Do not care visualArr.length === 0, which is illegal. + visualArr[1] = visualArr[0]; + } + setVisualToOption(thisOption, visualArr); + } + function makePartialColorVisualHandler(applyValue) { + return { + applyVisual: function (value, getter, setter) { + // Only used in HSL + var colorChannel = this.mapValueToVisual(value); + // Must not be array value + setter('color', applyValue(getter('color'), colorChannel)); + }, + _normalizedToVisual: createNormalizedToNumericVisual([0, 1]) + }; + } + function doMapToArray(normalized) { + var visual = this.option.visual; + return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {}; // TODO {}? + } + + function makeApplyVisual(visualType) { + return function (value, getter, setter) { + setter(visualType, this.mapValueToVisual(value)); + }; + } + function doMapCategory(normalized) { + var visual = this.option.visual; + return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized]; + } + function doMapFixed() { + // visual will be convert to array. + return this.option.visual[0]; + } + /** + * Create mapped to numeric visual + */ + function createNormalizedToNumericVisual(sourceExtent) { + return { + linear: function (normalized) { + return linearMap(normalized, sourceExtent, this.option.visual, true); + }, + category: doMapCategory, + piecewise: function (normalized, value) { + var result = getSpecifiedVisual.call(this, value); + if (result == null) { + result = linearMap(normalized, sourceExtent, this.option.visual, true); + } + return result; + }, + fixed: doMapFixed + }; + } + function getSpecifiedVisual(value) { + var thisOption = this.option; + var pieceList = thisOption.pieceList; + if (thisOption.hasSpecialVisual) { + var pieceIndex = VisualMapping.findPieceIndex(value, pieceList); + var piece = pieceList[pieceIndex]; + if (piece && piece.visual) { + return piece.visual[this.type]; + } + } + } + function setVisualToOption(thisOption, visualArr) { + thisOption.visual = visualArr; + if (thisOption.type === 'color') { + thisOption.parsedVisual = map(visualArr, function (item) { + var color$1 = parse(item); + if (!color$1 && "development" !== 'production') { + warn("'" + item + "' is an illegal color, fallback to '#000000'", true); + } + return color$1 || [0, 0, 0, 1]; + }); + } + return visualArr; + } + /** + * Normalizers by mapping methods. + */ + var normalizers = { + linear: function (value) { + return linearMap(value, this.option.dataExtent, [0, 1], true); + }, + piecewise: function (value) { + var pieceList = this.option.pieceList; + var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true); + if (pieceIndex != null) { + return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true); + } + }, + category: function (value) { + var index = this.option.categories ? this.option.categoryMap[value] : value; // ordinal value + return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index; + }, + fixed: noop + }; + function littleThan(close, a, b) { + return close ? a <= b : a < b; + } + + var ITEM_STYLE_NORMAL = 'itemStyle'; + var inner$9 = makeInner(); + var treemapVisual = { + seriesType: 'treemap', + reset: function (seriesModel) { + var tree = seriesModel.getData().tree; + var root = tree.root; + if (root.isRemoved()) { + return; + } + travelTree(root, + // Visual should calculate from tree root but not view root. + {}, seriesModel.getViewRoot().getAncestors(), seriesModel); + } + }; + function travelTree(node, designatedVisual, viewRootAncestors, seriesModel) { + var nodeModel = node.getModel(); + var nodeLayout = node.getLayout(); + var data = node.hostTree.data; + // Optimize + if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) { + return; + } + var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL); + var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel); + var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style'); + // calculate border color + var borderColor = nodeItemStyleModel.get('borderColor'); + var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation'); + var thisNodeColor; + if (borderColorSaturation != null) { + // For performance, do not always execute 'calculateColor'. + thisNodeColor = calculateColor(visuals); + borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor); + } + existsStyle.stroke = borderColor; + var viewChildren = node.viewChildren; + if (!viewChildren || !viewChildren.length) { + thisNodeColor = calculateColor(visuals); + // Apply visual to this node. + existsStyle.fill = thisNodeColor; + } else { + var mapping_1 = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren); + // Designate visual to children. + each(viewChildren, function (child, index) { + // If higher than viewRoot, only ancestors of viewRoot is needed to visit. + if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) { + var childVisual = mapVisual(nodeModel, visuals, child, index, mapping_1, seriesModel); + travelTree(child, childVisual, viewRootAncestors, seriesModel); + } + }); + } + } + function buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) { + var visuals = extend({}, designatedVisual); + var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle; + each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) { + // Priority: thisNode > thisLevel > parentNodeDesignated > seriesModel + designatedVisualItemStyle[visualName] = designatedVisual[visualName]; + var val = nodeItemStyleModel.get(visualName); + designatedVisualItemStyle[visualName] = null; + val != null && (visuals[visualName] = val); + }); + return visuals; + } + function calculateColor(visuals) { + var color = getValueVisualDefine(visuals, 'color'); + if (color) { + var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha'); + var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation'); + if (colorSaturation) { + color = modifyHSL(color, null, null, colorSaturation); + } + if (colorAlpha) { + color = modifyAlpha(color, colorAlpha); + } + return color; + } + } + function calculateBorderColor(borderColorSaturation, thisNodeColor) { + return thisNodeColor != null + // Can only be string + ? modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null; + } + function getValueVisualDefine(visuals, name) { + var value = visuals[name]; + if (value != null && value !== 'none') { + return value; + } + } + function buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) { + if (!viewChildren || !viewChildren.length) { + return; + } + var rangeVisual = getRangeVisual(nodeModel, 'color') || visuals.color != null && visuals.color !== 'none' && (getRangeVisual(nodeModel, 'colorAlpha') || getRangeVisual(nodeModel, 'colorSaturation')); + if (!rangeVisual) { + return; + } + var visualMin = nodeModel.get('visualMin'); + var visualMax = nodeModel.get('visualMax'); + var dataExtent = nodeLayout.dataExtent.slice(); + visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin); + visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax); + var colorMappingBy = nodeModel.get('colorMappingBy'); + var opt = { + type: rangeVisual.name, + dataExtent: dataExtent, + visual: rangeVisual.range + }; + if (opt.type === 'color' && (colorMappingBy === 'index' || colorMappingBy === 'id')) { + opt.mappingMethod = 'category'; + opt.loop = true; + // categories is ordinal, so do not set opt.categories. + } else { + opt.mappingMethod = 'linear'; + } + var mapping = new VisualMapping(opt); + inner$9(mapping).drColorMappingBy = colorMappingBy; + return mapping; + } + // Notice: If we don't have the attribute 'colorRange', but only use + // attribute 'color' to represent both concepts of 'colorRange' and 'color', + // (It means 'colorRange' when 'color' is Array, means 'color' when not array), + // this problem will be encountered: + // If a level-1 node doesn't have children, and its siblings have children, + // and colorRange is set on level-1, then the node cannot be colored. + // So we separate 'colorRange' and 'color' to different attributes. + function getRangeVisual(nodeModel, name) { + // 'colorRange', 'colorARange', 'colorSRange'. + // If not exists on this node, fetch from levels and series. + var range = nodeModel.get(name); + return isArray(range) && range.length ? { + name: name, + range: range + } : null; + } + function mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) { + var childVisuals = extend({}, visuals); + if (mapping) { + // Only support color, colorAlpha, colorSaturation. + var mappingType = mapping.type; + var colorMappingBy = mappingType === 'color' && inner$9(mapping).drColorMappingBy; + var value = colorMappingBy === 'index' ? index : colorMappingBy === 'id' ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get('visualDimension')); + childVisuals[mappingType] = mapping.mapValueToVisual(value); + } + return childVisuals; + } + + var mathMax$7 = Math.max; + var mathMin$7 = Math.min; + var retrieveValue = retrieve; + var each$4 = each; + var PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth']; + var PATH_GAP_WIDTH = ['itemStyle', 'gapWidth']; + var PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show']; + var PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height']; + /** + * @public + */ + var treemapLayout = { + seriesType: 'treemap', + reset: function (seriesModel, ecModel, api, payload) { + // Layout result in each node: + // {x, y, width, height, area, borderWidth} + var ecWidth = api.getWidth(); + var ecHeight = api.getHeight(); + var seriesOption = seriesModel.option; + var layoutInfo = getLayoutRect(seriesModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }); + var size = seriesOption.size || []; // Compatible with ec2. + var containerWidth = parsePercent$1(retrieveValue(layoutInfo.width, size[0]), ecWidth); + var containerHeight = parsePercent$1(retrieveValue(layoutInfo.height, size[1]), ecHeight); + // Fetch payload info. + var payloadType = payload && payload.type; + var types = ['treemapZoomToNode', 'treemapRootToNode']; + var targetInfo = retrieveTargetInfo(payload, types, seriesModel); + var rootRect = payloadType === 'treemapRender' || payloadType === 'treemapMove' ? payload.rootRect : null; + var viewRoot = seriesModel.getViewRoot(); + var viewAbovePath = getPathToRoot(viewRoot); + if (payloadType !== 'treemapMove') { + var rootSize = payloadType === 'treemapZoomToNode' ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight]; + var sort_1 = seriesOption.sort; + if (sort_1 && sort_1 !== 'asc' && sort_1 !== 'desc') { + // Default to be desc order. + sort_1 = 'desc'; + } + var options = { + squareRatio: seriesOption.squareRatio, + sort: sort_1, + leafDepth: seriesOption.leafDepth + }; + // layout should be cleared because using updateView but not update. + viewRoot.hostTree.clearLayouts(); + // TODO + // optimize: if out of view clip, do not layout. + // But take care that if do not render node out of view clip, + // how to calculate start po + var viewRootLayout_1 = { + x: 0, + y: 0, + width: rootSize[0], + height: rootSize[1], + area: rootSize[0] * rootSize[1] + }; + viewRoot.setLayout(viewRootLayout_1); + squarify(viewRoot, options, false, 0); + // Supplement layout. + viewRootLayout_1 = viewRoot.getLayout(); + each$4(viewAbovePath, function (node, index) { + var childValue = (viewAbovePath[index + 1] || viewRoot).getValue(); + node.setLayout(extend({ + dataExtent: [childValue, childValue], + borderWidth: 0, + upperHeight: 0 + }, viewRootLayout_1)); + }); + } + var treeRoot = seriesModel.getData().tree.root; + treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true); + seriesModel.setLayoutInfo(layoutInfo); + // FIXME + // 现在没有clip功能,暂时取ec高宽。 + prunning(treeRoot, + // Transform to base element coordinate system. + new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), viewAbovePath, viewRoot, 0); + } + }; + /** + * Layout treemap with squarify algorithm. + * The original presentation of this algorithm + * was made by Mark Bruls, Kees Huizing, and Jarke J. van Wijk + * . + * The implementation of this algorithm was originally copied from "d3.js" + * + * with some modifications made for this program. + * See the license statement at the head of this file. + * + * @protected + * @param {module:echarts/data/Tree~TreeNode} node + * @param {Object} options + * @param {string} options.sort 'asc' or 'desc' + * @param {number} options.squareRatio + * @param {boolean} hideChildren + * @param {number} depth + */ + function squarify(node, options, hideChildren, depth) { + var width; + var height; + if (node.isRemoved()) { + return; + } + var thisLayout = node.getLayout(); + width = thisLayout.width; + height = thisLayout.height; + // Considering border and gap + var nodeModel = node.getModel(); + var borderWidth = nodeModel.get(PATH_BORDER_WIDTH); + var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2; + var upperLabelHeight = getUpperLabelHeight(nodeModel); + var upperHeight = Math.max(borderWidth, upperLabelHeight); + var layoutOffset = borderWidth - halfGapWidth; + var layoutOffsetUpper = upperHeight - halfGapWidth; + node.setLayout({ + borderWidth: borderWidth, + upperHeight: upperHeight, + upperLabelHeight: upperLabelHeight + }, true); + width = mathMax$7(width - 2 * layoutOffset, 0); + height = mathMax$7(height - layoutOffset - layoutOffsetUpper, 0); + var totalArea = width * height; + var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth); + if (!viewChildren.length) { + return; + } + var rect = { + x: layoutOffset, + y: layoutOffsetUpper, + width: width, + height: height + }; + var rowFixedLength = mathMin$7(width, height); + var best = Infinity; // the best row score so far + var row = []; + row.area = 0; + for (var i = 0, len = viewChildren.length; i < len;) { + var child = viewChildren[i]; + row.push(child); + row.area += child.getLayout().area; + var score = worst(row, rowFixedLength, options.squareRatio); + // continue with this orientation + if (score <= best) { + i++; + best = score; + } + // abort, and try a different orientation + else { + row.area -= row.pop().getLayout().area; + position(row, rowFixedLength, rect, halfGapWidth, false); + rowFixedLength = mathMin$7(rect.width, rect.height); + row.length = row.area = 0; + best = Infinity; + } + } + if (row.length) { + position(row, rowFixedLength, rect, halfGapWidth, true); + } + if (!hideChildren) { + var childrenVisibleMin = nodeModel.get('childrenVisibleMin'); + if (childrenVisibleMin != null && totalArea < childrenVisibleMin) { + hideChildren = true; + } + } + for (var i = 0, len = viewChildren.length; i < len; i++) { + squarify(viewChildren[i], options, hideChildren, depth + 1); + } + } + /** + * Set area to each child, and calculate data extent for visual coding. + */ + function initChildren(node, nodeModel, totalArea, options, hideChildren, depth) { + var viewChildren = node.children || []; + var orderBy = options.sort; + orderBy !== 'asc' && orderBy !== 'desc' && (orderBy = null); + var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; + // leafDepth has higher priority. + if (hideChildren && !overLeafDepth) { + return node.viewChildren = []; + } + // Sort children, order by desc. + viewChildren = filter(viewChildren, function (child) { + return !child.isRemoved(); + }); + sort$1(viewChildren, orderBy); + var info = statistic(nodeModel, viewChildren, orderBy); + if (info.sum === 0) { + return node.viewChildren = []; + } + info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren); + if (info.sum === 0) { + return node.viewChildren = []; + } + // Set area to each child. + for (var i = 0, len = viewChildren.length; i < len; i++) { + var area = viewChildren[i].getValue() / info.sum * totalArea; + // Do not use setLayout({...}, true), because it is needed to clear last layout. + viewChildren[i].setLayout({ + area: area + }); + } + if (overLeafDepth) { + viewChildren.length && node.setLayout({ + isLeafRoot: true + }, true); + viewChildren.length = 0; + } + node.viewChildren = viewChildren; + node.setLayout({ + dataExtent: info.dataExtent + }, true); + return viewChildren; + } + /** + * Consider 'visibleMin'. Modify viewChildren and get new sum. + */ + function filterByThreshold(nodeModel, totalArea, sum, orderBy, orderedChildren) { + // visibleMin is not supported yet when no option.sort. + if (!orderBy) { + return sum; + } + var visibleMin = nodeModel.get('visibleMin'); + var len = orderedChildren.length; + var deletePoint = len; + // Always travel from little value to big value. + for (var i = len - 1; i >= 0; i--) { + var value = orderedChildren[orderBy === 'asc' ? len - i - 1 : i].getValue(); + if (value / sum * totalArea < visibleMin) { + deletePoint = i; + sum -= value; + } + } + orderBy === 'asc' ? orderedChildren.splice(0, len - deletePoint) : orderedChildren.splice(deletePoint, len - deletePoint); + return sum; + } + /** + * Sort + */ + function sort$1(viewChildren, orderBy) { + if (orderBy) { + viewChildren.sort(function (a, b) { + var diff = orderBy === 'asc' ? a.getValue() - b.getValue() : b.getValue() - a.getValue(); + return diff === 0 ? orderBy === 'asc' ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff; + }); + } + return viewChildren; + } + /** + * Statistic + */ + function statistic(nodeModel, children, orderBy) { + // Calculate sum. + var sum = 0; + for (var i = 0, len = children.length; i < len; i++) { + sum += children[i].getValue(); + } + // Statistic data extent for latter visual coding. + // Notice: data extent should be calculate based on raw children + // but not filtered view children, otherwise visual mapping will not + // be stable when zoom (where children is filtered by visibleMin). + var dimension = nodeModel.get('visualDimension'); + var dataExtent; + // The same as area dimension. + if (!children || !children.length) { + dataExtent = [NaN, NaN]; + } else if (dimension === 'value' && orderBy) { + dataExtent = [children[children.length - 1].getValue(), children[0].getValue()]; + orderBy === 'asc' && dataExtent.reverse(); + } + // Other dimension. + else { + dataExtent = [Infinity, -Infinity]; + each$4(children, function (child) { + var value = child.getValue(dimension); + value < dataExtent[0] && (dataExtent[0] = value); + value > dataExtent[1] && (dataExtent[1] = value); + }); + } + return { + sum: sum, + dataExtent: dataExtent + }; + } + /** + * Computes the score for the specified row, + * as the worst aspect ratio. + */ + function worst(row, rowFixedLength, ratio) { + var areaMax = 0; + var areaMin = Infinity; + for (var i = 0, area = void 0, len = row.length; i < len; i++) { + area = row[i].getLayout().area; + if (area) { + area < areaMin && (areaMin = area); + area > areaMax && (areaMax = area); + } + } + var squareArea = row.area * row.area; + var f = rowFixedLength * rowFixedLength * ratio; + return squareArea ? mathMax$7(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity; + } + /** + * Positions the specified row of nodes. Modifies `rect`. + */ + function position(row, rowFixedLength, rect, halfGapWidth, flush) { + // When rowFixedLength === rect.width, + // it is horizontal subdivision, + // rowFixedLength is the width of the subdivision, + // rowOtherLength is the height of the subdivision, + // and nodes will be positioned from left to right. + // wh[idx0WhenH] means: when horizontal, + // wh[idx0WhenH] => wh[0] => 'width'. + // xy[idx1WhenH] => xy[1] => 'y'. + var idx0WhenH = rowFixedLength === rect.width ? 0 : 1; + var idx1WhenH = 1 - idx0WhenH; + var xy = ['x', 'y']; + var wh = ['width', 'height']; + var last = rect[xy[idx0WhenH]]; + var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0; + if (flush || rowOtherLength > rect[wh[idx1WhenH]]) { + rowOtherLength = rect[wh[idx1WhenH]]; // over+underflow + } + + for (var i = 0, rowLen = row.length; i < rowLen; i++) { + var node = row[i]; + var nodeLayout = {}; + var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0; + var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax$7(rowOtherLength - 2 * halfGapWidth, 0); + // We use Math.max/min to avoid negative width/height when considering gap width. + var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last; + var modWH = i === rowLen - 1 || remain < step ? remain : step; + var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax$7(modWH - 2 * halfGapWidth, 0); + nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin$7(halfGapWidth, wh1 / 2); + nodeLayout[xy[idx0WhenH]] = last + mathMin$7(halfGapWidth, wh0 / 2); + last += modWH; + node.setLayout(nodeLayout, true); + } + rect[xy[idx1WhenH]] += rowOtherLength; + rect[wh[idx1WhenH]] -= rowOtherLength; + } + // Return [containerWidth, containerHeight] as default. + function estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) { + // If targetInfo.node exists, we zoom to the node, + // so estimate whole width and height by target node. + var currNode = (targetInfo || {}).node; + var defaultSize = [containerWidth, containerHeight]; + if (!currNode || currNode === viewRoot) { + return defaultSize; + } + var parent; + var viewArea = containerWidth * containerHeight; + var area = viewArea * seriesModel.option.zoomToNodeRatio; + while (parent = currNode.parentNode) { + // jshint ignore:line + var sum = 0; + var siblings = parent.children; + for (var i = 0, len = siblings.length; i < len; i++) { + sum += siblings[i].getValue(); + } + var currNodeValue = currNode.getValue(); + if (currNodeValue === 0) { + return defaultSize; + } + area *= sum / currNodeValue; + // Considering border, suppose aspect ratio is 1. + var parentModel = parent.getModel(); + var borderWidth = parentModel.get(PATH_BORDER_WIDTH); + var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel)); + area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5); + area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER); + currNode = parent; + } + area < viewArea && (area = viewArea); + var scale = Math.pow(area / viewArea, 0.5); + return [containerWidth * scale, containerHeight * scale]; + } + // Root position based on coord of containerGroup + function calculateRootPosition(layoutInfo, rootRect, targetInfo) { + if (rootRect) { + return { + x: rootRect.x, + y: rootRect.y + }; + } + var defaultPosition = { + x: 0, + y: 0 + }; + if (!targetInfo) { + return defaultPosition; + } + // If targetInfo is fetched by 'retrieveTargetInfo', + // old tree and new tree are the same tree, + // so the node still exists and we can visit it. + var targetNode = targetInfo.node; + var layout = targetNode.getLayout(); + if (!layout) { + return defaultPosition; + } + // Transform coord from local to container. + var targetCenter = [layout.width / 2, layout.height / 2]; + var node = targetNode; + while (node) { + var nodeLayout = node.getLayout(); + targetCenter[0] += nodeLayout.x; + targetCenter[1] += nodeLayout.y; + node = node.parentNode; + } + return { + x: layoutInfo.width / 2 - targetCenter[0], + y: layoutInfo.height / 2 - targetCenter[1] + }; + } + // Mark nodes visible for prunning when visual coding and rendering. + // Prunning depends on layout and root position, so we have to do it after layout. + function prunning(node, clipRect, viewAbovePath, viewRoot, depth) { + var nodeLayout = node.getLayout(); + var nodeInViewAbovePath = viewAbovePath[depth]; + var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node; + if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) { + return; + } + node.setLayout({ + // isInView means: viewRoot sub tree + viewAbovePath + isInView: true, + // invisible only means: outside view clip so that the node can not + // see but still layout for animation preparation but not render. + invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout), + isAboveViewRoot: isAboveViewRoot + }, true); + // Transform to child coordinate. + var childClipRect = new BoundingRect(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height); + each$4(node.viewChildren || [], function (child) { + prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1); + }); + } + function getUpperLabelHeight(model) { + return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0; + } + + function install$c(registers) { + registers.registerSeriesModel(TreemapSeriesModel); + registers.registerChartView(TreemapView); + registers.registerVisual(treemapVisual); + registers.registerLayout(treemapLayout); + installTreemapAction(registers); + } + + function categoryFilter(ecModel) { + var legendModels = ecModel.findComponents({ + mainType: 'legend' + }); + if (!legendModels || !legendModels.length) { + return; + } + ecModel.eachSeriesByType('graph', function (graphSeries) { + var categoriesData = graphSeries.getCategoriesData(); + var graph = graphSeries.getGraph(); + var data = graph.data; + var categoryNames = categoriesData.mapArray(categoriesData.getName); + data.filterSelf(function (idx) { + var model = data.getItemModel(idx); + var category = model.getShallow('category'); + if (category != null) { + if (isNumber(category)) { + category = categoryNames[category]; + } + // If in any legend component the status is not selected. + for (var i = 0; i < legendModels.length; i++) { + if (!legendModels[i].isSelected(category)) { + return false; + } + } + } + return true; + }); + }); + } + + function categoryVisual(ecModel) { + var paletteScope = {}; + ecModel.eachSeriesByType('graph', function (seriesModel) { + var categoriesData = seriesModel.getCategoriesData(); + var data = seriesModel.getData(); + var categoryNameIdxMap = {}; + categoriesData.each(function (idx) { + var name = categoriesData.getName(idx); + // Add prefix to avoid conflict with Object.prototype. + categoryNameIdxMap['ec-' + name] = idx; + var itemModel = categoriesData.getItemModel(idx); + var style = itemModel.getModel('itemStyle').getItemStyle(); + if (!style.fill) { + // Get color from palette. + style.fill = seriesModel.getColorFromPalette(name, paletteScope); + } + categoriesData.setItemVisual(idx, 'style', style); + var symbolVisualList = ['symbol', 'symbolSize', 'symbolKeepAspect']; + for (var i = 0; i < symbolVisualList.length; i++) { + var symbolVisual = itemModel.getShallow(symbolVisualList[i], true); + if (symbolVisual != null) { + categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual); + } + } + }); + // Assign category color to visual + if (categoriesData.count()) { + data.each(function (idx) { + var model = data.getItemModel(idx); + var categoryIdx = model.getShallow('category'); + if (categoryIdx != null) { + if (isString(categoryIdx)) { + categoryIdx = categoryNameIdxMap['ec-' + categoryIdx]; + } + var categoryStyle = categoriesData.getItemVisual(categoryIdx, 'style'); + var style = data.ensureUniqueItemVisual(idx, 'style'); + extend(style, categoryStyle); + var visualList = ['symbol', 'symbolSize', 'symbolKeepAspect']; + for (var i = 0; i < visualList.length; i++) { + data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i])); + } + } + }); + } + }); + } + + function normalize$2(a) { + if (!(a instanceof Array)) { + a = [a, a]; + } + return a; + } + function graphEdgeVisual(ecModel) { + ecModel.eachSeriesByType('graph', function (seriesModel) { + var graph = seriesModel.getGraph(); + var edgeData = seriesModel.getEdgeData(); + var symbolType = normalize$2(seriesModel.get('edgeSymbol')); + var symbolSize = normalize$2(seriesModel.get('edgeSymbolSize')); + // const colorQuery = ['lineStyle', 'color'] as const; + // const opacityQuery = ['lineStyle', 'opacity'] as const; + edgeData.setVisual('fromSymbol', symbolType && symbolType[0]); + edgeData.setVisual('toSymbol', symbolType && symbolType[1]); + edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]); + edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]); + edgeData.setVisual('style', seriesModel.getModel('lineStyle').getLineStyle()); + edgeData.each(function (idx) { + var itemModel = edgeData.getItemModel(idx); + var edge = graph.getEdgeByIndex(idx); + var symbolType = normalize$2(itemModel.getShallow('symbol', true)); + var symbolSize = normalize$2(itemModel.getShallow('symbolSize', true)); + // Edge visual must after node visual + var style = itemModel.getModel('lineStyle').getLineStyle(); + var existsStyle = edgeData.ensureUniqueItemVisual(idx, 'style'); + extend(existsStyle, style); + switch (existsStyle.stroke) { + case 'source': + { + var nodeStyle = edge.node1.getVisual('style'); + existsStyle.stroke = nodeStyle && nodeStyle.fill; + break; + } + case 'target': + { + var nodeStyle = edge.node2.getVisual('style'); + existsStyle.stroke = nodeStyle && nodeStyle.fill; + break; + } + } + symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]); + symbolType[1] && edge.setVisual('toSymbol', symbolType[1]); + symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]); + symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]); + }); + }); + } + + var KEY_DELIMITER = '-->'; + /** + * params handler + * @param {module:echarts/model/SeriesModel} seriesModel + * @returns {*} + */ + var getAutoCurvenessParams = function (seriesModel) { + return seriesModel.get('autoCurveness') || null; + }; + /** + * Generate a list of edge curvatures, 20 is the default + * @param {module:echarts/model/SeriesModel} seriesModel + * @param {number} appendLength + * @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2] + */ + var createCurveness = function (seriesModel, appendLength) { + var autoCurvenessParmas = getAutoCurvenessParams(seriesModel); + var length = 20; + var curvenessList = []; + // handler the function set + if (isNumber(autoCurvenessParmas)) { + length = autoCurvenessParmas; + } else if (isArray(autoCurvenessParmas)) { + seriesModel.__curvenessList = autoCurvenessParmas; + return; + } + // append length + if (appendLength > length) { + length = appendLength; + } + // make sure the length is even + var len = length % 2 ? length + 2 : length + 3; + curvenessList = []; + for (var i = 0; i < len; i++) { + curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1)); + } + seriesModel.__curvenessList = curvenessList; + }; + /** + * Create different cache key data in the positive and negative directions, in order to set the curvature later + * @param {number|string|module:echarts/data/Graph.Node} n1 + * @param {number|string|module:echarts/data/Graph.Node} n2 + * @param {module:echarts/model/SeriesModel} seriesModel + * @returns {string} key + */ + var getKeyOfEdges = function (n1, n2, seriesModel) { + var source = [n1.id, n1.dataIndex].join('.'); + var target = [n2.id, n2.dataIndex].join('.'); + return [seriesModel.uid, source, target].join(KEY_DELIMITER); + }; + /** + * get opposite key + * @param {string} key + * @returns {string} + */ + var getOppositeKey = function (key) { + var keys = key.split(KEY_DELIMITER); + return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER); + }; + /** + * get edgeMap with key + * @param edge + * @param {module:echarts/model/SeriesModel} seriesModel + */ + var getEdgeFromMap = function (edge, seriesModel) { + var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel); + return seriesModel.__edgeMap[key]; + }; + /** + * calculate all cases total length + * @param edge + * @param seriesModel + * @returns {number} + */ + var getTotalLengthBetweenNodes = function (edge, seriesModel) { + var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel); + var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel); + return len + lenV; + }; + /** + * + * @param key + */ + var getEdgeMapLengthWithKey = function (key, seriesModel) { + var edgeMap = seriesModel.__edgeMap; + return edgeMap[key] ? edgeMap[key].length : 0; + }; + /** + * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge + * @see /graph/GraphSeries.js@getInitialData + * @param {module:echarts/model/SeriesModel} seriesModel + */ + function initCurvenessList(seriesModel) { + if (!getAutoCurvenessParams(seriesModel)) { + return; + } + seriesModel.__curvenessList = []; + seriesModel.__edgeMap = {}; + // calc the array of curveness List + createCurveness(seriesModel); + } + /** + * set edgeMap with key + * @param {number|string|module:echarts/data/Graph.Node} n1 + * @param {number|string|module:echarts/data/Graph.Node} n2 + * @param {module:echarts/model/SeriesModel} seriesModel + * @param {number} index + */ + function createEdgeMapForCurveness(n1, n2, seriesModel, index) { + if (!getAutoCurvenessParams(seriesModel)) { + return; + } + var key = getKeyOfEdges(n1, n2, seriesModel); + var edgeMap = seriesModel.__edgeMap; + var oppositeEdges = edgeMap[getOppositeKey(key)]; + // set direction + if (edgeMap[key] && !oppositeEdges) { + edgeMap[key].isForward = true; + } else if (oppositeEdges && edgeMap[key]) { + oppositeEdges.isForward = true; + edgeMap[key].isForward = false; + } + edgeMap[key] = edgeMap[key] || []; + edgeMap[key].push(index); + } + /** + * get curvature for edge + * @param edge + * @param {module:echarts/model/SeriesModel} seriesModel + * @param index + */ + function getCurvenessForEdge(edge, seriesModel, index, needReverse) { + var autoCurvenessParams = getAutoCurvenessParams(seriesModel); + var isArrayParam = isArray(autoCurvenessParams); + if (!autoCurvenessParams) { + return null; + } + var edgeArray = getEdgeFromMap(edge, seriesModel); + if (!edgeArray) { + return null; + } + var edgeIndex = -1; + for (var i = 0; i < edgeArray.length; i++) { + if (edgeArray[i] === index) { + edgeIndex = i; + break; + } + } + // if totalLen is Longer createCurveness + var totalLen = getTotalLengthBetweenNodes(edge, seriesModel); + createCurveness(seriesModel, totalLen); + edge.lineStyle = edge.lineStyle || {}; + // if is opposite edge, must set curvenss to opposite number + var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel); + var curvenessList = seriesModel.__curvenessList; + // if pass array no need parity + var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1; + if (!edgeArray.isForward) { + // the opposite edge show outside + var oppositeKey = getOppositeKey(curKey); + var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel); + var resValue = curvenessList[edgeIndex + len + parityCorrection]; + // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite + if (needReverse) { + // set as array may make the parity handle with the len of opposite + if (isArrayParam) { + if (autoCurvenessParams && autoCurvenessParams[0] === 0) { + return (len + parityCorrection) % 2 ? resValue : -resValue; + } else { + return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue; + } + } else { + return (len + parityCorrection) % 2 ? resValue : -resValue; + } + } else { + return curvenessList[edgeIndex + len + parityCorrection]; + } + } else { + return curvenessList[parityCorrection + edgeIndex]; + } + } + + function simpleLayout(seriesModel) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.type !== 'view') { + return; + } + var graph = seriesModel.getGraph(); + graph.eachNode(function (node) { + var model = node.getModel(); + node.setLayout([+model.get('x'), +model.get('y')]); + }); + simpleLayoutEdge(graph, seriesModel); + } + function simpleLayoutEdge(graph, seriesModel) { + graph.eachEdge(function (edge, index) { + var curveness = retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, seriesModel, index, true), 0); + var p1 = clone$1(edge.node1.getLayout()); + var p2 = clone$1(edge.node2.getLayout()); + var points = [p1, p2]; + if (+curveness) { + points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]); + } + edge.setLayout(points); + }); + } + + function graphSimpleLayout(ecModel, api) { + ecModel.eachSeriesByType('graph', function (seriesModel) { + var layout = seriesModel.get('layout'); + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.type !== 'view') { + var data_1 = seriesModel.getData(); + var dimensions_1 = []; + each(coordSys.dimensions, function (coordDim) { + dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim)); + }); + for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) { + var value = []; + var hasValue = false; + for (var i = 0; i < dimensions_1.length; i++) { + var val = data_1.get(dimensions_1[i], dataIndex); + if (!isNaN(val)) { + hasValue = true; + } + value.push(val); + } + if (hasValue) { + data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value)); + } else { + // Also {Array.}, not undefined to avoid if...else... statement + data_1.setItemLayout(dataIndex, [NaN, NaN]); + } + } + simpleLayoutEdge(data_1.graph, seriesModel); + } else if (!layout || layout === 'none') { + simpleLayout(seriesModel); + } + }); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function getNodeGlobalScale(seriesModel) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys.type !== 'view') { + return 1; + } + var nodeScaleRatio = seriesModel.option.nodeScaleRatio; + var groupZoom = coordSys.scaleX; + // Scale node when zoom changes + var roamZoom = coordSys.getZoom(); + var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1; + return nodeScale / groupZoom; + } + function getSymbolSize(node) { + var symbolSize = node.getVisual('symbolSize'); + if (symbolSize instanceof Array) { + symbolSize = (symbolSize[0] + symbolSize[1]) / 2; + } + return +symbolSize; + } + + var PI$6 = Math.PI; + var _symbolRadiansHalf = []; + /** + * `basedOn` can be: + * 'value': + * This layout is not accurate and have same bad case. For example, + * if the min value is very smaller than the max value, the nodes + * with the min value probably overlap even though there is enough + * space to layout them. So we only use this approach in the as the + * init layout of the force layout. + * FIXME + * Probably we do not need this method any more but use + * `basedOn: 'symbolSize'` in force layout if + * delay its init operations to GraphView. + * 'symbolSize': + * This approach work only if all of the symbol size calculated. + * That is, the progressive rendering is not applied to graph. + * FIXME + * If progressive rendering is applied to graph some day, + * probably we have to use `basedOn: 'value'`. + */ + function circularLayout(seriesModel, basedOn, draggingNode, pointer) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.type !== 'view') { + return; + } + var rect = coordSys.getBoundingRect(); + var nodeData = seriesModel.getData(); + var graph = nodeData.graph; + var cx = rect.width / 2 + rect.x; + var cy = rect.height / 2 + rect.y; + var r = Math.min(rect.width, rect.height) / 2; + var count = nodeData.count(); + nodeData.setLayout({ + cx: cx, + cy: cy + }); + if (!count) { + return; + } + if (draggingNode) { + var _a = coordSys.pointToData(pointer), + tempX = _a[0], + tempY = _a[1]; + var v = [tempX - cx, tempY - cy]; + normalize(v, v); + scale(v, v, r); + draggingNode.setLayout([cx + v[0], cy + v[1]], true); + var circularRotateLabel = seriesModel.get(['circular', 'rotateLabel']); + rotateNodeLabel(draggingNode, circularRotateLabel, cx, cy); + } + _layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r, cx, cy, count); + graph.eachEdge(function (edge, index) { + var curveness = retrieve3(edge.getModel().get(['lineStyle', 'curveness']), getCurvenessForEdge(edge, seriesModel, index), 0); + var p1 = clone$1(edge.node1.getLayout()); + var p2 = clone$1(edge.node2.getLayout()); + var cp1; + var x12 = (p1[0] + p2[0]) / 2; + var y12 = (p1[1] + p2[1]) / 2; + if (+curveness) { + curveness *= 3; + cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)]; + } + edge.setLayout([p1, p2, cp1]); + }); + } + var _layoutNodesBasedOn = { + value: function (seriesModel, graph, nodeData, r, cx, cy, count) { + var angle = 0; + var sum = nodeData.getSum('value'); + var unitAngle = Math.PI * 2 / (sum || count); + graph.eachNode(function (node) { + var value = node.getValue('value'); + var radianHalf = unitAngle * (sum ? value : 1) / 2; + angle += radianHalf; + node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]); + angle += radianHalf; + }); + }, + symbolSize: function (seriesModel, graph, nodeData, r, cx, cy, count) { + var sumRadian = 0; + _symbolRadiansHalf.length = count; + var nodeScale = getNodeGlobalScale(seriesModel); + graph.eachNode(function (node) { + var symbolSize = getSymbolSize(node); + // Normally this case will not happen, but we still add + // some the defensive code (2px is an arbitrary value). + isNaN(symbolSize) && (symbolSize = 2); + symbolSize < 0 && (symbolSize = 0); + symbolSize *= nodeScale; + var symbolRadianHalf = Math.asin(symbolSize / 2 / r); + // when `symbolSize / 2` is bigger than `r`. + isNaN(symbolRadianHalf) && (symbolRadianHalf = PI$6 / 2); + _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf; + sumRadian += symbolRadianHalf * 2; + }); + var halfRemainRadian = (2 * PI$6 - sumRadian) / count / 2; + var angle = 0; + graph.eachNode(function (node) { + var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex]; + angle += radianHalf; + // init circular layout for + // 1. layout undefined node + // 2. not fixed node + (!node.getLayout() || !node.getLayout().fixed) && node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]); + angle += radianHalf; + }); + } + }; + function rotateNodeLabel(node, circularRotateLabel, cx, cy) { + var el = node.getGraphicEl(); + // need to check if el exists. '-' value may not create node element. + if (!el) { + return; + } + var nodeModel = node.getModel(); + var labelRotate = nodeModel.get(['label', 'rotate']) || 0; + var symbolPath = el.getSymbolPath(); + if (circularRotateLabel) { + var pos = node.getLayout(); + var rad = Math.atan2(pos[1] - cy, pos[0] - cx); + if (rad < 0) { + rad = Math.PI * 2 + rad; + } + var isLeft = pos[0] < cx; + if (isLeft) { + rad = rad - Math.PI; + } + var textPosition = isLeft ? 'left' : 'right'; + symbolPath.setTextConfig({ + rotation: -rad, + position: textPosition, + origin: 'center' + }); + var emphasisState = symbolPath.ensureState('emphasis'); + extend(emphasisState.textConfig || (emphasisState.textConfig = {}), { + position: textPosition + }); + } else { + symbolPath.setTextConfig({ + rotation: labelRotate *= Math.PI / 180 + }); + } + } + + function graphCircularLayout(ecModel) { + ecModel.eachSeriesByType('graph', function (seriesModel) { + if (seriesModel.get('layout') === 'circular') { + circularLayout(seriesModel, 'symbolSize'); + } + }); + } + + var scaleAndAdd$1 = scaleAndAdd; + // function adjacentNode(n, e) { + // return e.n1 === n ? e.n2 : e.n1; + // } + function forceLayout(inNodes, inEdges, opts) { + var nodes = inNodes; + var edges = inEdges; + var rect = opts.rect; + var width = rect.width; + var height = rect.height; + var center = [rect.x + width / 2, rect.y + height / 2]; + // let scale = opts.scale || 1; + var gravity = opts.gravity == null ? 0.1 : opts.gravity; + // for (let i = 0; i < edges.length; i++) { + // let e = edges[i]; + // let n1 = e.n1; + // let n2 = e.n2; + // n1.edges = n1.edges || []; + // n2.edges = n2.edges || []; + // n1.edges.push(e); + // n2.edges.push(e); + // } + // Init position + for (var i = 0; i < nodes.length; i++) { + var n = nodes[i]; + if (!n.p) { + n.p = create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]); + } + n.pp = clone$1(n.p); + n.edges = null; + } + // Formula in 'Graph Drawing by Force-directed Placement' + // let k = scale * Math.sqrt(width * height / nodes.length); + // let k2 = k * k; + var initialFriction = opts.friction == null ? 0.6 : opts.friction; + var friction = initialFriction; + var beforeStepCallback; + var afterStepCallback; + return { + warmUp: function () { + friction = initialFriction * 0.8; + }, + setFixed: function (idx) { + nodes[idx].fixed = true; + }, + setUnfixed: function (idx) { + nodes[idx].fixed = false; + }, + /** + * Before step hook + */ + beforeStep: function (cb) { + beforeStepCallback = cb; + }, + /** + * After step hook + */ + afterStep: function (cb) { + afterStepCallback = cb; + }, + /** + * Some formulas were originally copied from "d3.js" + * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js + * with some modifications made for this project. + * See the license statement at the head of this file. + */ + step: function (cb) { + beforeStepCallback && beforeStepCallback(nodes, edges); + var v12 = []; + var nLen = nodes.length; + for (var i = 0; i < edges.length; i++) { + var e = edges[i]; + if (e.ignoreForceLayout) { + continue; + } + var n1 = e.n1; + var n2 = e.n2; + sub(v12, n2.p, n1.p); + var d = len(v12) - e.d; + var w = n2.w / (n1.w + n2.w); + if (isNaN(w)) { + w = 0; + } + normalize(v12, v12); + !n1.fixed && scaleAndAdd$1(n1.p, n1.p, v12, w * d * friction); + !n2.fixed && scaleAndAdd$1(n2.p, n2.p, v12, -(1 - w) * d * friction); + } + // Gravity + for (var i = 0; i < nLen; i++) { + var n = nodes[i]; + if (!n.fixed) { + sub(v12, center, n.p); + // let d = vec2.len(v12); + // vec2.scale(v12, v12, 1 / d); + // let gravityFactor = gravity; + scaleAndAdd$1(n.p, n.p, v12, gravity * friction); + } + } + // Repulsive + // PENDING + for (var i = 0; i < nLen; i++) { + var n1 = nodes[i]; + for (var j = i + 1; j < nLen; j++) { + var n2 = nodes[j]; + sub(v12, n2.p, n1.p); + var d = len(v12); + if (d === 0) { + // Random repulse + set(v12, Math.random() - 0.5, Math.random() - 0.5); + d = 1; + } + var repFact = (n1.rep + n2.rep) / d / d; + !n1.fixed && scaleAndAdd$1(n1.pp, n1.pp, v12, repFact); + !n2.fixed && scaleAndAdd$1(n2.pp, n2.pp, v12, -repFact); + } + } + var v = []; + for (var i = 0; i < nLen; i++) { + var n = nodes[i]; + if (!n.fixed) { + sub(v, n.p, n.pp); + scaleAndAdd$1(n.p, n.p, v, friction); + copy(n.pp, n.p); + } + } + friction = friction * 0.992; + var finished = friction < 0.01; + afterStepCallback && afterStepCallback(nodes, edges, finished); + cb && cb(finished); + } + }; + } + + function graphForceLayout(ecModel) { + ecModel.eachSeriesByType('graph', function (graphSeries) { + var coordSys = graphSeries.coordinateSystem; + if (coordSys && coordSys.type !== 'view') { + return; + } + if (graphSeries.get('layout') === 'force') { + var preservedPoints_1 = graphSeries.preservedPoints || {}; + var graph_1 = graphSeries.getGraph(); + var nodeData_1 = graph_1.data; + var edgeData = graph_1.edgeData; + var forceModel = graphSeries.getModel('force'); + var initLayout = forceModel.get('initLayout'); + if (graphSeries.preservedPoints) { + nodeData_1.each(function (idx) { + var id = nodeData_1.getId(idx); + nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]); + }); + } else if (!initLayout || initLayout === 'none') { + simpleLayout(graphSeries); + } else if (initLayout === 'circular') { + circularLayout(graphSeries, 'value'); + } + var nodeDataExtent_1 = nodeData_1.getDataExtent('value'); + var edgeDataExtent_1 = edgeData.getDataExtent('value'); + // let edgeDataExtent = edgeData.getDataExtent('value'); + var repulsion = forceModel.get('repulsion'); + var edgeLength = forceModel.get('edgeLength'); + var repulsionArr_1 = isArray(repulsion) ? repulsion : [repulsion, repulsion]; + var edgeLengthArr_1 = isArray(edgeLength) ? edgeLength : [edgeLength, edgeLength]; + // Larger value has smaller length + edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]]; + var nodes_1 = nodeData_1.mapArray('value', function (value, idx) { + var point = nodeData_1.getItemLayout(idx); + var rep = linearMap(value, nodeDataExtent_1, repulsionArr_1); + if (isNaN(rep)) { + rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2; + } + return { + w: rep, + rep: rep, + fixed: nodeData_1.getItemModel(idx).get('fixed'), + p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point + }; + }); + var edges = edgeData.mapArray('value', function (value, idx) { + var edge = graph_1.getEdgeByIndex(idx); + var d = linearMap(value, edgeDataExtent_1, edgeLengthArr_1); + if (isNaN(d)) { + d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2; + } + var edgeModel = edge.getModel(); + var curveness = retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, graphSeries, idx, true), 0); + return { + n1: nodes_1[edge.node1.dataIndex], + n2: nodes_1[edge.node2.dataIndex], + d: d, + curveness: curveness, + ignoreForceLayout: edgeModel.get('ignoreForceLayout') + }; + }); + // let coordSys = graphSeries.coordinateSystem; + var rect = coordSys.getBoundingRect(); + var forceInstance = forceLayout(nodes_1, edges, { + rect: rect, + gravity: forceModel.get('gravity'), + friction: forceModel.get('friction') + }); + forceInstance.beforeStep(function (nodes, edges) { + for (var i = 0, l = nodes.length; i < l; i++) { + if (nodes[i].fixed) { + // Write back to layout instance + copy(nodes[i].p, graph_1.getNodeByIndex(i).getLayout()); + } + } + }); + forceInstance.afterStep(function (nodes, edges, stopped) { + for (var i = 0, l = nodes.length; i < l; i++) { + if (!nodes[i].fixed) { + graph_1.getNodeByIndex(i).setLayout(nodes[i].p); + } + preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p; + } + for (var i = 0, l = edges.length; i < l; i++) { + var e = edges[i]; + var edge = graph_1.getEdgeByIndex(i); + var p1 = e.n1.p; + var p2 = e.n2.p; + var points = edge.getLayout(); + points = points ? points.slice() : []; + points[0] = points[0] || []; + points[1] = points[1] || []; + copy(points[0], p1); + copy(points[1], p2); + if (+e.curveness) { + points[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness]; + } + edge.setLayout(points); + } + }); + graphSeries.forceLayout = forceInstance; + graphSeries.preservedPoints = preservedPoints_1; + // Step to get the layout + forceInstance.step(); + } else { + // Remove prev injected forceLayout instance + graphSeries.forceLayout = null; + } + }); + } + + function getViewRect$2(seriesModel, api, aspect) { + var option = extend(seriesModel.getBoxLayoutParams(), { + aspect: aspect + }); + return getLayoutRect(option, { + width: api.getWidth(), + height: api.getHeight() + }); + } + function createViewCoordSys(ecModel, api) { + var viewList = []; + ecModel.eachSeriesByType('graph', function (seriesModel) { + var coordSysType = seriesModel.get('coordinateSystem'); + if (!coordSysType || coordSysType === 'view') { + var data_1 = seriesModel.getData(); + var positions = data_1.mapArray(function (idx) { + var itemModel = data_1.getItemModel(idx); + return [+itemModel.get('x'), +itemModel.get('y')]; + }); + var min = []; + var max = []; + fromPoints(positions, min, max); + // If width or height is 0 + if (max[0] - min[0] === 0) { + max[0] += 1; + min[0] -= 1; + } + if (max[1] - min[1] === 0) { + max[1] += 1; + min[1] -= 1; + } + var aspect = (max[0] - min[0]) / (max[1] - min[1]); + // FIXME If get view rect after data processed? + var viewRect = getViewRect$2(seriesModel, api, aspect); + // Position may be NaN, use view rect instead + if (isNaN(aspect)) { + min = [viewRect.x, viewRect.y]; + max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height]; + } + var bbWidth = max[0] - min[0]; + var bbHeight = max[1] - min[1]; + var viewWidth = viewRect.width; + var viewHeight = viewRect.height; + var viewCoordSys = seriesModel.coordinateSystem = new View(); + viewCoordSys.zoomLimit = seriesModel.get('scaleLimit'); + viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight); + viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight); + // Update roam info + viewCoordSys.setCenter(seriesModel.get('center'), api); + viewCoordSys.setZoom(seriesModel.get('zoom')); + viewList.push(viewCoordSys); + } + }); + return viewList; + } + + var straightLineProto = Line.prototype; + var bezierCurveProto = BezierCurve.prototype; + var StraightLineShape = /** @class */function () { + function StraightLineShape() { + // Start point + this.x1 = 0; + this.y1 = 0; + // End point + this.x2 = 0; + this.y2 = 0; + this.percent = 1; + } + return StraightLineShape; + }(); + var CurveShape = /** @class */function (_super) { + __extends(CurveShape, _super); + function CurveShape() { + return _super !== null && _super.apply(this, arguments) || this; + } + return CurveShape; + }(StraightLineShape); + function isStraightLine(shape) { + return isNaN(+shape.cpx1) || isNaN(+shape.cpy1); + } + var ECLinePath = /** @class */function (_super) { + __extends(ECLinePath, _super); + function ECLinePath(opts) { + var _this = _super.call(this, opts) || this; + _this.type = 'ec-line'; + return _this; + } + ECLinePath.prototype.getDefaultStyle = function () { + return { + stroke: '#000', + fill: null + }; + }; + ECLinePath.prototype.getDefaultShape = function () { + return new StraightLineShape(); + }; + ECLinePath.prototype.buildPath = function (ctx, shape) { + if (isStraightLine(shape)) { + straightLineProto.buildPath.call(this, ctx, shape); + } else { + bezierCurveProto.buildPath.call(this, ctx, shape); + } + }; + ECLinePath.prototype.pointAt = function (t) { + if (isStraightLine(this.shape)) { + return straightLineProto.pointAt.call(this, t); + } else { + return bezierCurveProto.pointAt.call(this, t); + } + }; + ECLinePath.prototype.tangentAt = function (t) { + var shape = this.shape; + var p = isStraightLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto.tangentAt.call(this, t); + return normalize(p, p); + }; + return ECLinePath; + }(Path); + + var SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol']; + function makeSymbolTypeKey(symbolCategory) { + return '_' + symbolCategory + 'Type'; + } + function makeSymbolTypeValue(name, lineData, idx) { + var symbolType = lineData.getItemVisual(idx, name); + if (!symbolType || symbolType === 'none') { + return symbolType; + } + var symbolSize = lineData.getItemVisual(idx, name + 'Size'); + var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate'); + var symbolOffset = lineData.getItemVisual(idx, name + 'Offset'); + var symbolKeepAspect = lineData.getItemVisual(idx, name + 'KeepAspect'); + var symbolSizeArr = normalizeSymbolSize(symbolSize); + var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr); + return symbolType + symbolSizeArr + symbolOffsetArr + (symbolRotate || '') + (symbolKeepAspect || ''); + } + /** + * @inner + */ + function createSymbol$1(name, lineData, idx) { + var symbolType = lineData.getItemVisual(idx, name); + if (!symbolType || symbolType === 'none') { + return; + } + var symbolSize = lineData.getItemVisual(idx, name + 'Size'); + var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate'); + var symbolOffset = lineData.getItemVisual(idx, name + 'Offset'); + var symbolKeepAspect = lineData.getItemVisual(idx, name + 'KeepAspect'); + var symbolSizeArr = normalizeSymbolSize(symbolSize); + var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr); + var symbolPath = createSymbol(symbolType, -symbolSizeArr[0] / 2 + symbolOffsetArr[0], -symbolSizeArr[1] / 2 + symbolOffsetArr[1], symbolSizeArr[0], symbolSizeArr[1], null, symbolKeepAspect); + symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0; + symbolPath.name = name; + return symbolPath; + } + function createLine(points) { + var line = new ECLinePath({ + name: 'line', + subPixelOptimize: true + }); + setLinePoints(line.shape, points); + return line; + } + function setLinePoints(targetShape, points) { + targetShape.x1 = points[0][0]; + targetShape.y1 = points[0][1]; + targetShape.x2 = points[1][0]; + targetShape.y2 = points[1][1]; + targetShape.percent = 1; + var cp1 = points[2]; + if (cp1) { + targetShape.cpx1 = cp1[0]; + targetShape.cpy1 = cp1[1]; + } else { + targetShape.cpx1 = NaN; + targetShape.cpy1 = NaN; + } + } + var Line$1 = /** @class */function (_super) { + __extends(Line, _super); + function Line(lineData, idx, seriesScope) { + var _this = _super.call(this) || this; + _this._createLine(lineData, idx, seriesScope); + return _this; + } + Line.prototype._createLine = function (lineData, idx, seriesScope) { + var seriesModel = lineData.hostModel; + var linePoints = lineData.getItemLayout(idx); + var line = createLine(linePoints); + line.shape.percent = 0; + initProps(line, { + shape: { + percent: 1 + } + }, seriesModel, idx); + this.add(line); + each(SYMBOL_CATEGORIES, function (symbolCategory) { + var symbol = createSymbol$1(symbolCategory, lineData, idx); + // symbols must added after line to make sure + // it will be updated after line#update. + // Or symbol position and rotation update in line#beforeUpdate will be one frame slow + this.add(symbol); + this[makeSymbolTypeKey(symbolCategory)] = makeSymbolTypeValue(symbolCategory, lineData, idx); + }, this); + this._updateCommonStl(lineData, idx, seriesScope); + }; + // TODO More strict on the List type in parameters? + Line.prototype.updateData = function (lineData, idx, seriesScope) { + var seriesModel = lineData.hostModel; + var line = this.childOfName('line'); + var linePoints = lineData.getItemLayout(idx); + var target = { + shape: {} + }; + setLinePoints(target.shape, linePoints); + updateProps(line, target, seriesModel, idx); + each(SYMBOL_CATEGORIES, function (symbolCategory) { + var symbolType = makeSymbolTypeValue(symbolCategory, lineData, idx); + var key = makeSymbolTypeKey(symbolCategory); + // Symbol changed + if (this[key] !== symbolType) { + this.remove(this.childOfName(symbolCategory)); + var symbol = createSymbol$1(symbolCategory, lineData, idx); + this.add(symbol); + } + this[key] = symbolType; + }, this); + this._updateCommonStl(lineData, idx, seriesScope); + }; + Line.prototype.getLinePath = function () { + return this.childAt(0); + }; + Line.prototype._updateCommonStl = function (lineData, idx, seriesScope) { + var seriesModel = lineData.hostModel; + var line = this.childOfName('line'); + var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle; + var blurLineStyle = seriesScope && seriesScope.blurLineStyle; + var selectLineStyle = seriesScope && seriesScope.selectLineStyle; + var labelStatesModels = seriesScope && seriesScope.labelStatesModels; + var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled; + var focus = seriesScope && seriesScope.focus; + var blurScope = seriesScope && seriesScope.blurScope; + // Optimization for large dataset + if (!seriesScope || lineData.hasItemOption) { + var itemModel = lineData.getItemModel(idx); + var emphasisModel = itemModel.getModel('emphasis'); + emphasisLineStyle = emphasisModel.getModel('lineStyle').getLineStyle(); + blurLineStyle = itemModel.getModel(['blur', 'lineStyle']).getLineStyle(); + selectLineStyle = itemModel.getModel(['select', 'lineStyle']).getLineStyle(); + emphasisDisabled = emphasisModel.get('disabled'); + focus = emphasisModel.get('focus'); + blurScope = emphasisModel.get('blurScope'); + labelStatesModels = getLabelStatesModels(itemModel); + } + var lineStyle = lineData.getItemVisual(idx, 'style'); + var visualColor = lineStyle.stroke; + line.useStyle(lineStyle); + line.style.fill = null; + line.style.strokeNoScale = true; + line.ensureState('emphasis').style = emphasisLineStyle; + line.ensureState('blur').style = blurLineStyle; + line.ensureState('select').style = selectLineStyle; + // Update symbol + each(SYMBOL_CATEGORIES, function (symbolCategory) { + var symbol = this.childOfName(symbolCategory); + if (symbol) { + // Share opacity and color with line. + symbol.setColor(visualColor); + symbol.style.opacity = lineStyle.opacity; + for (var i = 0; i < SPECIAL_STATES.length; i++) { + var stateName = SPECIAL_STATES[i]; + var lineState = line.getState(stateName); + if (lineState) { + var lineStateStyle = lineState.style || {}; + var state = symbol.ensureState(stateName); + var stateStyle = state.style || (state.style = {}); + if (lineStateStyle.stroke != null) { + stateStyle[symbol.__isEmptyBrush ? 'stroke' : 'fill'] = lineStateStyle.stroke; + } + if (lineStateStyle.opacity != null) { + stateStyle.opacity = lineStateStyle.opacity; + } + } + } + symbol.markRedraw(); + } + }, this); + var rawVal = seriesModel.getRawValue(idx); + setLabelStyle(this, labelStatesModels, { + labelDataIndex: idx, + labelFetcher: { + getFormattedLabel: function (dataIndex, stateName) { + return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType); + } + }, + inheritColor: visualColor || '#000', + defaultOpacity: lineStyle.opacity, + defaultText: (rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal) + '' + }); + var label = this.getTextContent(); + // Always set `textStyle` even if `normalStyle.text` is null, because default + // values have to be set on `normalStyle`. + if (label) { + var labelNormalModel = labelStatesModels.normal; + label.__align = label.style.align; + label.__verticalAlign = label.style.verticalAlign; + // 'start', 'middle', 'end' + label.__position = labelNormalModel.get('position') || 'middle'; + var distance = labelNormalModel.get('distance'); + if (!isArray(distance)) { + distance = [distance, distance]; + } + label.__labelDistance = distance; + } + this.setTextConfig({ + position: null, + local: true, + inside: false // Can't be inside for stroke element. + }); + + toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled); + }; + Line.prototype.highlight = function () { + enterEmphasis(this); + }; + Line.prototype.downplay = function () { + leaveEmphasis(this); + }; + Line.prototype.updateLayout = function (lineData, idx) { + this.setLinePoints(lineData.getItemLayout(idx)); + }; + Line.prototype.setLinePoints = function (points) { + var linePath = this.childOfName('line'); + setLinePoints(linePath.shape, points); + linePath.dirty(); + }; + Line.prototype.beforeUpdate = function () { + var lineGroup = this; + var symbolFrom = lineGroup.childOfName('fromSymbol'); + var symbolTo = lineGroup.childOfName('toSymbol'); + var label = lineGroup.getTextContent(); + // Quick reject + if (!symbolFrom && !symbolTo && (!label || label.ignore)) { + return; + } + var invScale = 1; + var parentNode = this.parent; + while (parentNode) { + if (parentNode.scaleX) { + invScale /= parentNode.scaleX; + } + parentNode = parentNode.parent; + } + var line = lineGroup.childOfName('line'); + // If line not changed + // FIXME Parent scale changed + if (!this.__dirty && !line.__dirty) { + return; + } + var percent = line.shape.percent; + var fromPos = line.pointAt(0); + var toPos = line.pointAt(percent); + var d = sub([], toPos, fromPos); + normalize(d, d); + function setSymbolRotation(symbol, percent) { + // Fix #12388 + // when symbol is set to be 'arrow' in markLine, + // symbolRotate value will be ignored, and compulsively use tangent angle. + // rotate by default if symbol rotation is not specified + var specifiedRotation = symbol.__specifiedRotation; + if (specifiedRotation == null) { + var tangent = line.tangentAt(percent); + symbol.attr('rotation', (percent === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent[1], tangent[0])); + } else { + symbol.attr('rotation', specifiedRotation); + } + } + if (symbolFrom) { + symbolFrom.setPosition(fromPos); + setSymbolRotation(symbolFrom, 0); + symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent; + symbolFrom.markRedraw(); + } + if (symbolTo) { + symbolTo.setPosition(toPos); + setSymbolRotation(symbolTo, 1); + symbolTo.scaleX = symbolTo.scaleY = invScale * percent; + symbolTo.markRedraw(); + } + if (label && !label.ignore) { + label.x = label.y = 0; + label.originX = label.originY = 0; + var textAlign = void 0; + var textVerticalAlign = void 0; + var distance = label.__labelDistance; + var distanceX = distance[0] * invScale; + var distanceY = distance[1] * invScale; + var halfPercent = percent / 2; + var tangent = line.tangentAt(halfPercent); + var n = [tangent[1], -tangent[0]]; + var cp = line.pointAt(halfPercent); + if (n[1] > 0) { + n[0] = -n[0]; + n[1] = -n[1]; + } + var dir = tangent[0] < 0 ? -1 : 1; + if (label.__position !== 'start' && label.__position !== 'end') { + var rotation = -Math.atan2(tangent[1], tangent[0]); + if (toPos[0] < fromPos[0]) { + rotation = Math.PI + rotation; + } + label.rotation = rotation; + } + var dy = void 0; + switch (label.__position) { + case 'insideStartTop': + case 'insideMiddleTop': + case 'insideEndTop': + case 'middle': + dy = -distanceY; + textVerticalAlign = 'bottom'; + break; + case 'insideStartBottom': + case 'insideMiddleBottom': + case 'insideEndBottom': + dy = distanceY; + textVerticalAlign = 'top'; + break; + default: + dy = 0; + textVerticalAlign = 'middle'; + } + switch (label.__position) { + case 'end': + label.x = d[0] * distanceX + toPos[0]; + label.y = d[1] * distanceY + toPos[1]; + textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center'; + textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle'; + break; + case 'start': + label.x = -d[0] * distanceX + fromPos[0]; + label.y = -d[1] * distanceY + fromPos[1]; + textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center'; + textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle'; + break; + case 'insideStartTop': + case 'insideStart': + case 'insideStartBottom': + label.x = distanceX * dir + fromPos[0]; + label.y = fromPos[1] + dy; + textAlign = tangent[0] < 0 ? 'right' : 'left'; + label.originX = -distanceX * dir; + label.originY = -dy; + break; + case 'insideMiddleTop': + case 'insideMiddle': + case 'insideMiddleBottom': + case 'middle': + label.x = cp[0]; + label.y = cp[1] + dy; + textAlign = 'center'; + label.originY = -dy; + break; + case 'insideEndTop': + case 'insideEnd': + case 'insideEndBottom': + label.x = -distanceX * dir + toPos[0]; + label.y = toPos[1] + dy; + textAlign = tangent[0] >= 0 ? 'right' : 'left'; + label.originX = distanceX * dir; + label.originY = -dy; + break; + } + label.scaleX = label.scaleY = invScale; + label.setStyle({ + // Use the user specified text align and baseline first + verticalAlign: label.__verticalAlign || textVerticalAlign, + align: label.__align || textAlign + }); + } + }; + return Line; + }(Group); + + var LineDraw = /** @class */function () { + function LineDraw(LineCtor) { + this.group = new Group(); + this._LineCtor = LineCtor || Line$1; + } + LineDraw.prototype.updateData = function (lineData) { + var _this = this; + // Remove progressive els. + this._progressiveEls = null; + var lineDraw = this; + var group = lineDraw.group; + var oldLineData = lineDraw._lineData; + lineDraw._lineData = lineData; + // There is no oldLineData only when first rendering or switching from + // stream mode to normal mode, where previous elements should be removed. + if (!oldLineData) { + group.removeAll(); + } + var seriesScope = makeSeriesScope$1(lineData); + lineData.diff(oldLineData).add(function (idx) { + _this._doAdd(lineData, idx, seriesScope); + }).update(function (newIdx, oldIdx) { + _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope); + }).remove(function (idx) { + group.remove(oldLineData.getItemGraphicEl(idx)); + }).execute(); + }; + LineDraw.prototype.updateLayout = function () { + var lineData = this._lineData; + // Do not support update layout in incremental mode. + if (!lineData) { + return; + } + lineData.eachItemGraphicEl(function (el, idx) { + el.updateLayout(lineData, idx); + }, this); + }; + LineDraw.prototype.incrementalPrepareUpdate = function (lineData) { + this._seriesScope = makeSeriesScope$1(lineData); + this._lineData = null; + this.group.removeAll(); + }; + LineDraw.prototype.incrementalUpdate = function (taskParams, lineData) { + this._progressiveEls = []; + function updateIncrementalAndHover(el) { + if (!el.isGroup && !isEffectObject(el)) { + el.incremental = true; + el.ensureState('emphasis').hoverLayer = true; + } + } + for (var idx = taskParams.start; idx < taskParams.end; idx++) { + var itemLayout = lineData.getItemLayout(idx); + if (lineNeedsDraw(itemLayout)) { + var el = new this._LineCtor(lineData, idx, this._seriesScope); + el.traverse(updateIncrementalAndHover); + this.group.add(el); + lineData.setItemGraphicEl(idx, el); + this._progressiveEls.push(el); + } + } + }; + LineDraw.prototype.remove = function () { + this.group.removeAll(); + }; + LineDraw.prototype.eachRendered = function (cb) { + traverseElements(this._progressiveEls || this.group, cb); + }; + LineDraw.prototype._doAdd = function (lineData, idx, seriesScope) { + var itemLayout = lineData.getItemLayout(idx); + if (!lineNeedsDraw(itemLayout)) { + return; + } + var el = new this._LineCtor(lineData, idx, seriesScope); + lineData.setItemGraphicEl(idx, el); + this.group.add(el); + }; + LineDraw.prototype._doUpdate = function (oldLineData, newLineData, oldIdx, newIdx, seriesScope) { + var itemEl = oldLineData.getItemGraphicEl(oldIdx); + if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) { + this.group.remove(itemEl); + return; + } + if (!itemEl) { + itemEl = new this._LineCtor(newLineData, newIdx, seriesScope); + } else { + itemEl.updateData(newLineData, newIdx, seriesScope); + } + newLineData.setItemGraphicEl(newIdx, itemEl); + this.group.add(itemEl); + }; + return LineDraw; + }(); + function isEffectObject(el) { + return el.animators && el.animators.length > 0; + } + function makeSeriesScope$1(lineData) { + var hostModel = lineData.hostModel; + var emphasisModel = hostModel.getModel('emphasis'); + return { + lineStyle: hostModel.getModel('lineStyle').getLineStyle(), + emphasisLineStyle: emphasisModel.getModel(['lineStyle']).getLineStyle(), + blurLineStyle: hostModel.getModel(['blur', 'lineStyle']).getLineStyle(), + selectLineStyle: hostModel.getModel(['select', 'lineStyle']).getLineStyle(), + emphasisDisabled: emphasisModel.get('disabled'), + blurScope: emphasisModel.get('blurScope'), + focus: emphasisModel.get('focus'), + labelStatesModels: getLabelStatesModels(hostModel) + }; + } + function isPointNaN(pt) { + return isNaN(pt[0]) || isNaN(pt[1]); + } + function lineNeedsDraw(pts) { + return pts && !isPointNaN(pts[0]) && !isPointNaN(pts[1]); + } + + var v1 = []; + var v2 = []; + var v3 = []; + var quadraticAt$1 = quadraticAt; + var v2DistSquare = distSquare; + var mathAbs$2 = Math.abs; + function intersectCurveCircle(curvePoints, center, radius) { + var p0 = curvePoints[0]; + var p1 = curvePoints[1]; + var p2 = curvePoints[2]; + var d = Infinity; + var t; + var radiusSquare = radius * radius; + var interval = 0.1; + for (var _t = 0.1; _t <= 0.9; _t += 0.1) { + v1[0] = quadraticAt$1(p0[0], p1[0], p2[0], _t); + v1[1] = quadraticAt$1(p0[1], p1[1], p2[1], _t); + var diff = mathAbs$2(v2DistSquare(v1, center) - radiusSquare); + if (diff < d) { + d = diff; + t = _t; + } + } + // Assume the segment is monotone,Find root through Bisection method + // At most 32 iteration + for (var i = 0; i < 32; i++) { + // let prev = t - interval; + var next = t + interval; + // v1[0] = quadraticAt(p0[0], p1[0], p2[0], prev); + // v1[1] = quadraticAt(p0[1], p1[1], p2[1], prev); + v2[0] = quadraticAt$1(p0[0], p1[0], p2[0], t); + v2[1] = quadraticAt$1(p0[1], p1[1], p2[1], t); + v3[0] = quadraticAt$1(p0[0], p1[0], p2[0], next); + v3[1] = quadraticAt$1(p0[1], p1[1], p2[1], next); + var diff = v2DistSquare(v2, center) - radiusSquare; + if (mathAbs$2(diff) < 1e-2) { + break; + } + // let prevDiff = v2DistSquare(v1, center) - radiusSquare; + var nextDiff = v2DistSquare(v3, center) - radiusSquare; + interval /= 2; + if (diff < 0) { + if (nextDiff >= 0) { + t = t + interval; + } else { + t = t - interval; + } + } else { + if (nextDiff >= 0) { + t = t - interval; + } else { + t = t + interval; + } + } + } + return t; + } + // Adjust edge to avoid + function adjustEdge(graph, scale) { + var tmp0 = []; + var quadraticSubdivide$1 = quadraticSubdivide; + var pts = [[], [], []]; + var pts2 = [[], []]; + var v = []; + scale /= 2; + graph.eachEdge(function (edge, idx) { + var linePoints = edge.getLayout(); + var fromSymbol = edge.getVisual('fromSymbol'); + var toSymbol = edge.getVisual('toSymbol'); + if (!linePoints.__original) { + linePoints.__original = [clone$1(linePoints[0]), clone$1(linePoints[1])]; + if (linePoints[2]) { + linePoints.__original.push(clone$1(linePoints[2])); + } + } + var originalPoints = linePoints.__original; + // Quadratic curve + if (linePoints[2] != null) { + copy(pts[0], originalPoints[0]); + copy(pts[1], originalPoints[2]); + copy(pts[2], originalPoints[1]); + if (fromSymbol && fromSymbol !== 'none') { + var symbolSize = getSymbolSize(edge.node1); + var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale); + // Subdivide and get the second + quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0); + pts[0][0] = tmp0[3]; + pts[1][0] = tmp0[4]; + quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0); + pts[0][1] = tmp0[3]; + pts[1][1] = tmp0[4]; + } + if (toSymbol && toSymbol !== 'none') { + var symbolSize = getSymbolSize(edge.node2); + var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale); + // Subdivide and get the first + quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0); + pts[1][0] = tmp0[1]; + pts[2][0] = tmp0[2]; + quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0); + pts[1][1] = tmp0[1]; + pts[2][1] = tmp0[2]; + } + // Copy back to layout + copy(linePoints[0], pts[0]); + copy(linePoints[1], pts[2]); + copy(linePoints[2], pts[1]); + } + // Line + else { + copy(pts2[0], originalPoints[0]); + copy(pts2[1], originalPoints[1]); + sub(v, pts2[1], pts2[0]); + normalize(v, v); + if (fromSymbol && fromSymbol !== 'none') { + var symbolSize = getSymbolSize(edge.node1); + scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale); + } + if (toSymbol && toSymbol !== 'none') { + var symbolSize = getSymbolSize(edge.node2); + scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale); + } + copy(linePoints[0], pts2[0]); + copy(linePoints[1], pts2[1]); + } + }); + } + + function isViewCoordSys(coordSys) { + return coordSys.type === 'view'; + } + var GraphView = /** @class */function (_super) { + __extends(GraphView, _super); + function GraphView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = GraphView.type; + return _this; + } + GraphView.prototype.init = function (ecModel, api) { + var symbolDraw = new SymbolDraw(); + var lineDraw = new LineDraw(); + var group = this.group; + this._controller = new RoamController(api.getZr()); + this._controllerHost = { + target: group + }; + group.add(symbolDraw.group); + group.add(lineDraw.group); + this._symbolDraw = symbolDraw; + this._lineDraw = lineDraw; + this._firstRender = true; + }; + GraphView.prototype.render = function (seriesModel, ecModel, api) { + var _this = this; + var coordSys = seriesModel.coordinateSystem; + this._model = seriesModel; + var symbolDraw = this._symbolDraw; + var lineDraw = this._lineDraw; + var group = this.group; + if (isViewCoordSys(coordSys)) { + var groupNewProp = { + x: coordSys.x, + y: coordSys.y, + scaleX: coordSys.scaleX, + scaleY: coordSys.scaleY + }; + if (this._firstRender) { + group.attr(groupNewProp); + } else { + updateProps(group, groupNewProp, seriesModel); + } + } + // Fix edge contact point with node + adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel)); + var data = seriesModel.getData(); + symbolDraw.updateData(data); + var edgeData = seriesModel.getEdgeData(); + // TODO: TYPE + lineDraw.updateData(edgeData); + this._updateNodeAndLinkScale(); + this._updateController(seriesModel, ecModel, api); + clearTimeout(this._layoutTimeout); + var forceLayout = seriesModel.forceLayout; + var layoutAnimation = seriesModel.get(['force', 'layoutAnimation']); + if (forceLayout) { + this._startForceLayoutIteration(forceLayout, layoutAnimation); + } + var layout = seriesModel.get('layout'); + data.graph.eachNode(function (node) { + var idx = node.dataIndex; + var el = node.getGraphicEl(); + var itemModel = node.getModel(); + if (!el) { + return; + } + // Update draggable + el.off('drag').off('dragend'); + var draggable = itemModel.get('draggable'); + if (draggable) { + el.on('drag', function (e) { + switch (layout) { + case 'force': + forceLayout.warmUp(); + !_this._layouting && _this._startForceLayoutIteration(forceLayout, layoutAnimation); + forceLayout.setFixed(idx); + // Write position back to layout + data.setItemLayout(idx, [el.x, el.y]); + break; + case 'circular': + data.setItemLayout(idx, [el.x, el.y]); + // mark node fixed + node.setLayout({ + fixed: true + }, true); + // recalculate circular layout + circularLayout(seriesModel, 'symbolSize', node, [e.offsetX, e.offsetY]); + _this.updateLayout(seriesModel); + break; + case 'none': + default: + data.setItemLayout(idx, [el.x, el.y]); + // update edge + simpleLayoutEdge(seriesModel.getGraph(), seriesModel); + _this.updateLayout(seriesModel); + break; + } + }).on('dragend', function () { + if (forceLayout) { + forceLayout.setUnfixed(idx); + } + }); + } + el.setDraggable(draggable, !!itemModel.get('cursor')); + var focus = itemModel.get(['emphasis', 'focus']); + if (focus === 'adjacency') { + getECData(el).focus = node.getAdjacentDataIndices(); + } + }); + data.graph.eachEdge(function (edge) { + var el = edge.getGraphicEl(); + var focus = edge.getModel().get(['emphasis', 'focus']); + if (!el) { + return; + } + if (focus === 'adjacency') { + getECData(el).focus = { + edge: [edge.dataIndex], + node: [edge.node1.dataIndex, edge.node2.dataIndex] + }; + } + }); + var circularRotateLabel = seriesModel.get('layout') === 'circular' && seriesModel.get(['circular', 'rotateLabel']); + var cx = data.getLayout('cx'); + var cy = data.getLayout('cy'); + data.graph.eachNode(function (node) { + rotateNodeLabel(node, circularRotateLabel, cx, cy); + }); + this._firstRender = false; + }; + GraphView.prototype.dispose = function () { + this.remove(); + this._controller && this._controller.dispose(); + this._controllerHost = null; + }; + GraphView.prototype._startForceLayoutIteration = function (forceLayout, layoutAnimation) { + var self = this; + (function step() { + forceLayout.step(function (stopped) { + self.updateLayout(self._model); + (self._layouting = !stopped) && (layoutAnimation ? self._layoutTimeout = setTimeout(step, 16) : step()); + }); + })(); + }; + GraphView.prototype._updateController = function (seriesModel, ecModel, api) { + var _this = this; + var controller = this._controller; + var controllerHost = this._controllerHost; + var group = this.group; + controller.setPointerChecker(function (e, x, y) { + var rect = group.getBoundingRect(); + rect.applyTransform(group.transform); + return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel); + }); + if (!isViewCoordSys(seriesModel.coordinateSystem)) { + controller.disable(); + return; + } + controller.enable(seriesModel.get('roam')); + controllerHost.zoomLimit = seriesModel.get('scaleLimit'); + controllerHost.zoom = seriesModel.coordinateSystem.getZoom(); + controller.off('pan').off('zoom').on('pan', function (e) { + updateViewOnPan(controllerHost, e.dx, e.dy); + api.dispatchAction({ + seriesId: seriesModel.id, + type: 'graphRoam', + dx: e.dx, + dy: e.dy + }); + }).on('zoom', function (e) { + updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY); + api.dispatchAction({ + seriesId: seriesModel.id, + type: 'graphRoam', + zoom: e.scale, + originX: e.originX, + originY: e.originY + }); + _this._updateNodeAndLinkScale(); + adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel)); + _this._lineDraw.updateLayout(); + // Only update label layout on zoom + api.updateLabelLayout(); + }); + }; + GraphView.prototype._updateNodeAndLinkScale = function () { + var seriesModel = this._model; + var data = seriesModel.getData(); + var nodeScale = getNodeGlobalScale(seriesModel); + data.eachItemGraphicEl(function (el, idx) { + el && el.setSymbolScale(nodeScale); + }); + }; + GraphView.prototype.updateLayout = function (seriesModel) { + adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel)); + this._symbolDraw.updateLayout(); + this._lineDraw.updateLayout(); + }; + GraphView.prototype.remove = function () { + clearTimeout(this._layoutTimeout); + this._layouting = false; + this._layoutTimeout = null; + this._symbolDraw && this._symbolDraw.remove(); + this._lineDraw && this._lineDraw.remove(); + }; + GraphView.type = 'graph'; + return GraphView; + }(ChartView); + + // id may be function name of Object, add a prefix to avoid this problem. + function generateNodeKey(id) { + return '_EC_' + id; + } + var Graph = /** @class */function () { + function Graph(directed) { + this.type = 'graph'; + this.nodes = []; + this.edges = []; + this._nodesMap = {}; + /** + * @type {Object.} + * @private + */ + this._edgesMap = {}; + this._directed = directed || false; + } + /** + * If is directed graph + */ + Graph.prototype.isDirected = function () { + return this._directed; + }; + /** + * Add a new node + */ + Graph.prototype.addNode = function (id, dataIndex) { + id = id == null ? '' + dataIndex : '' + id; + var nodesMap = this._nodesMap; + if (nodesMap[generateNodeKey(id)]) { + if ("development" !== 'production') { + console.error('Graph nodes have duplicate name or id'); + } + return; + } + var node = new GraphNode(id, dataIndex); + node.hostGraph = this; + this.nodes.push(node); + nodesMap[generateNodeKey(id)] = node; + return node; + }; + /** + * Get node by data index + */ + Graph.prototype.getNodeByIndex = function (dataIndex) { + var rawIdx = this.data.getRawIndex(dataIndex); + return this.nodes[rawIdx]; + }; + /** + * Get node by id + */ + Graph.prototype.getNodeById = function (id) { + return this._nodesMap[generateNodeKey(id)]; + }; + /** + * Add a new edge + */ + Graph.prototype.addEdge = function (n1, n2, dataIndex) { + var nodesMap = this._nodesMap; + var edgesMap = this._edgesMap; + // PENDING + if (isNumber(n1)) { + n1 = this.nodes[n1]; + } + if (isNumber(n2)) { + n2 = this.nodes[n2]; + } + if (!(n1 instanceof GraphNode)) { + n1 = nodesMap[generateNodeKey(n1)]; + } + if (!(n2 instanceof GraphNode)) { + n2 = nodesMap[generateNodeKey(n2)]; + } + if (!n1 || !n2) { + return; + } + var key = n1.id + '-' + n2.id; + var edge = new GraphEdge(n1, n2, dataIndex); + edge.hostGraph = this; + if (this._directed) { + n1.outEdges.push(edge); + n2.inEdges.push(edge); + } + n1.edges.push(edge); + if (n1 !== n2) { + n2.edges.push(edge); + } + this.edges.push(edge); + edgesMap[key] = edge; + return edge; + }; + /** + * Get edge by data index + */ + Graph.prototype.getEdgeByIndex = function (dataIndex) { + var rawIdx = this.edgeData.getRawIndex(dataIndex); + return this.edges[rawIdx]; + }; + /** + * Get edge by two linked nodes + */ + Graph.prototype.getEdge = function (n1, n2) { + if (n1 instanceof GraphNode) { + n1 = n1.id; + } + if (n2 instanceof GraphNode) { + n2 = n2.id; + } + var edgesMap = this._edgesMap; + if (this._directed) { + return edgesMap[n1 + '-' + n2]; + } else { + return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1]; + } + }; + /** + * Iterate all nodes + */ + Graph.prototype.eachNode = function (cb, context) { + var nodes = this.nodes; + var len = nodes.length; + for (var i = 0; i < len; i++) { + if (nodes[i].dataIndex >= 0) { + cb.call(context, nodes[i], i); + } + } + }; + /** + * Iterate all edges + */ + Graph.prototype.eachEdge = function (cb, context) { + var edges = this.edges; + var len = edges.length; + for (var i = 0; i < len; i++) { + if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) { + cb.call(context, edges[i], i); + } + } + }; + /** + * Breadth first traverse + * Return true to stop traversing + */ + Graph.prototype.breadthFirstTraverse = function (cb, startNode, direction, context) { + if (!(startNode instanceof GraphNode)) { + startNode = this._nodesMap[generateNodeKey(startNode)]; + } + if (!startNode) { + return; + } + var edgeType = direction === 'out' ? 'outEdges' : direction === 'in' ? 'inEdges' : 'edges'; + for (var i = 0; i < this.nodes.length; i++) { + this.nodes[i].__visited = false; + } + if (cb.call(context, startNode, null)) { + return; + } + var queue = [startNode]; + while (queue.length) { + var currentNode = queue.shift(); + var edges = currentNode[edgeType]; + for (var i = 0; i < edges.length; i++) { + var e = edges[i]; + var otherNode = e.node1 === currentNode ? e.node2 : e.node1; + if (!otherNode.__visited) { + if (cb.call(context, otherNode, currentNode)) { + // Stop traversing + return; + } + queue.push(otherNode); + otherNode.__visited = true; + } + } + } + }; + // TODO + // depthFirstTraverse( + // cb, startNode, direction, context + // ) { + // }; + // Filter update + Graph.prototype.update = function () { + var data = this.data; + var edgeData = this.edgeData; + var nodes = this.nodes; + var edges = this.edges; + for (var i = 0, len = nodes.length; i < len; i++) { + nodes[i].dataIndex = -1; + } + for (var i = 0, len = data.count(); i < len; i++) { + nodes[data.getRawIndex(i)].dataIndex = i; + } + edgeData.filterSelf(function (idx) { + var edge = edges[edgeData.getRawIndex(idx)]; + return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0; + }); + // Update edge + for (var i = 0, len = edges.length; i < len; i++) { + edges[i].dataIndex = -1; + } + for (var i = 0, len = edgeData.count(); i < len; i++) { + edges[edgeData.getRawIndex(i)].dataIndex = i; + } + }; + /** + * @return {module:echarts/data/Graph} + */ + Graph.prototype.clone = function () { + var graph = new Graph(this._directed); + var nodes = this.nodes; + var edges = this.edges; + for (var i = 0; i < nodes.length; i++) { + graph.addNode(nodes[i].id, nodes[i].dataIndex); + } + for (var i = 0; i < edges.length; i++) { + var e = edges[i]; + graph.addEdge(e.node1.id, e.node2.id, e.dataIndex); + } + return graph; + }; + return Graph; + }(); + var GraphNode = /** @class */function () { + function GraphNode(id, dataIndex) { + this.inEdges = []; + this.outEdges = []; + this.edges = []; + this.dataIndex = -1; + this.id = id == null ? '' : id; + this.dataIndex = dataIndex == null ? -1 : dataIndex; + } + /** + * @return {number} + */ + GraphNode.prototype.degree = function () { + return this.edges.length; + }; + /** + * @return {number} + */ + GraphNode.prototype.inDegree = function () { + return this.inEdges.length; + }; + /** + * @return {number} + */ + GraphNode.prototype.outDegree = function () { + return this.outEdges.length; + }; + GraphNode.prototype.getModel = function (path) { + if (this.dataIndex < 0) { + return; + } + var graph = this.hostGraph; + var itemModel = graph.data.getItemModel(this.dataIndex); + return itemModel.getModel(path); + }; + GraphNode.prototype.getAdjacentDataIndices = function () { + var dataIndices = { + edge: [], + node: [] + }; + for (var i = 0; i < this.edges.length; i++) { + var adjacentEdge = this.edges[i]; + if (adjacentEdge.dataIndex < 0) { + continue; + } + dataIndices.edge.push(adjacentEdge.dataIndex); + dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex); + } + return dataIndices; + }; + GraphNode.prototype.getTrajectoryDataIndices = function () { + var connectedEdgesMap = createHashMap(); + var connectedNodesMap = createHashMap(); + for (var i = 0; i < this.edges.length; i++) { + var adjacentEdge = this.edges[i]; + if (adjacentEdge.dataIndex < 0) { + continue; + } + connectedEdgesMap.set(adjacentEdge.dataIndex, true); + var sourceNodesQueue = [adjacentEdge.node1]; + var targetNodesQueue = [adjacentEdge.node2]; + var nodeIteratorIndex = 0; + while (nodeIteratorIndex < sourceNodesQueue.length) { + var sourceNode = sourceNodesQueue[nodeIteratorIndex]; + nodeIteratorIndex++; + connectedNodesMap.set(sourceNode.dataIndex, true); + for (var j = 0; j < sourceNode.inEdges.length; j++) { + connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true); + sourceNodesQueue.push(sourceNode.inEdges[j].node1); + } + } + nodeIteratorIndex = 0; + while (nodeIteratorIndex < targetNodesQueue.length) { + var targetNode = targetNodesQueue[nodeIteratorIndex]; + nodeIteratorIndex++; + connectedNodesMap.set(targetNode.dataIndex, true); + for (var j = 0; j < targetNode.outEdges.length; j++) { + connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true); + targetNodesQueue.push(targetNode.outEdges[j].node2); + } + } + } + return { + edge: connectedEdgesMap.keys(), + node: connectedNodesMap.keys() + }; + }; + return GraphNode; + }(); + var GraphEdge = /** @class */function () { + function GraphEdge(n1, n2, dataIndex) { + this.dataIndex = -1; + this.node1 = n1; + this.node2 = n2; + this.dataIndex = dataIndex == null ? -1 : dataIndex; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + GraphEdge.prototype.getModel = function (path) { + if (this.dataIndex < 0) { + return; + } + var graph = this.hostGraph; + var itemModel = graph.edgeData.getItemModel(this.dataIndex); + return itemModel.getModel(path); + }; + GraphEdge.prototype.getAdjacentDataIndices = function () { + return { + edge: [this.dataIndex], + node: [this.node1.dataIndex, this.node2.dataIndex] + }; + }; + GraphEdge.prototype.getTrajectoryDataIndices = function () { + var connectedEdgesMap = createHashMap(); + var connectedNodesMap = createHashMap(); + connectedEdgesMap.set(this.dataIndex, true); + var sourceNodes = [this.node1]; + var targetNodes = [this.node2]; + var nodeIteratorIndex = 0; + while (nodeIteratorIndex < sourceNodes.length) { + var sourceNode = sourceNodes[nodeIteratorIndex]; + nodeIteratorIndex++; + connectedNodesMap.set(sourceNode.dataIndex, true); + for (var j = 0; j < sourceNode.inEdges.length; j++) { + connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true); + sourceNodes.push(sourceNode.inEdges[j].node1); + } + } + nodeIteratorIndex = 0; + while (nodeIteratorIndex < targetNodes.length) { + var targetNode = targetNodes[nodeIteratorIndex]; + nodeIteratorIndex++; + connectedNodesMap.set(targetNode.dataIndex, true); + for (var j = 0; j < targetNode.outEdges.length; j++) { + connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true); + targetNodes.push(targetNode.outEdges[j].node2); + } + } + return { + edge: connectedEdgesMap.keys(), + node: connectedNodesMap.keys() + }; + }; + return GraphEdge; + }(); + function createGraphDataProxyMixin(hostName, dataName) { + return { + /** + * @param Default 'value'. can be 'a', 'b', 'c', 'd', 'e'. + */ + getValue: function (dimension) { + var data = this[hostName][dataName]; + return data.getStore().get(data.getDimensionIndex(dimension || 'value'), this.dataIndex); + }, + // TODO: TYPE stricter type. + setVisual: function (key, value) { + this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value); + }, + getVisual: function (key) { + return this[hostName][dataName].getItemVisual(this.dataIndex, key); + }, + setLayout: function (layout, merge) { + this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge); + }, + getLayout: function () { + return this[hostName][dataName].getItemLayout(this.dataIndex); + }, + getGraphicEl: function () { + return this[hostName][dataName].getItemGraphicEl(this.dataIndex); + }, + getRawIndex: function () { + return this[hostName][dataName].getRawIndex(this.dataIndex); + } + }; + } + mixin(GraphNode, createGraphDataProxyMixin('hostGraph', 'data')); + mixin(GraphEdge, createGraphDataProxyMixin('hostGraph', 'edgeData')); + + function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) { + // ??? TODO + // support dataset? + var graph = new Graph(directed); + for (var i = 0; i < nodes.length; i++) { + graph.addNode(retrieve( + // Id, name, dataIndex + nodes[i].id, nodes[i].name, i), i); + } + var linkNameList = []; + var validEdges = []; + var linkCount = 0; + for (var i = 0; i < edges.length; i++) { + var link = edges[i]; + var source = link.source; + var target = link.target; + // addEdge may fail when source or target not exists + if (graph.addEdge(source, target, linkCount)) { + validEdges.push(link); + linkNameList.push(retrieve(convertOptionIdName(link.id, null), source + ' > ' + target)); + linkCount++; + } + } + var coordSys = seriesModel.get('coordinateSystem'); + var nodeData; + if (coordSys === 'cartesian2d' || coordSys === 'polar') { + nodeData = createSeriesData(nodes, seriesModel); + } else { + var coordSysCtor = CoordinateSystemManager.get(coordSys); + var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : []; + // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs + // `value` dimension, but graph need `value` dimension. It's better to + // uniform this behavior. + if (indexOf(coordDimensions, 'value') < 0) { + coordDimensions.concat(['value']); + } + var dimensions = prepareSeriesDataSchema(nodes, { + coordDimensions: coordDimensions, + encodeDefine: seriesModel.getEncode() + }).dimensions; + nodeData = new SeriesData(dimensions, seriesModel); + nodeData.initData(nodes); + } + var edgeData = new SeriesData(['value'], seriesModel); + edgeData.initData(validEdges, linkNameList); + beforeLink && beforeLink(nodeData, edgeData); + linkSeriesData({ + mainData: nodeData, + struct: graph, + structAttr: 'graph', + datas: { + node: nodeData, + edge: edgeData + }, + datasAttr: { + node: 'data', + edge: 'edgeData' + } + }); + // Update dataIndex of nodes and edges because invalid edge may be removed + graph.update(); + return graph; + } + + var GraphSeriesModel = /** @class */function (_super) { + __extends(GraphSeriesModel, _super); + function GraphSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = GraphSeriesModel.type; + _this.hasSymbolVisual = true; + return _this; + } + GraphSeriesModel.prototype.init = function (option) { + _super.prototype.init.apply(this, arguments); + var self = this; + function getCategoriesData() { + return self._categoriesData; + } + // Provide data for legend select + this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData); + this.fillDataTextStyle(option.edges || option.links); + this._updateCategoriesData(); + }; + GraphSeriesModel.prototype.mergeOption = function (option) { + _super.prototype.mergeOption.apply(this, arguments); + this.fillDataTextStyle(option.edges || option.links); + this._updateCategoriesData(); + }; + GraphSeriesModel.prototype.mergeDefaultAndTheme = function (option) { + _super.prototype.mergeDefaultAndTheme.apply(this, arguments); + defaultEmphasis(option, 'edgeLabel', ['show']); + }; + GraphSeriesModel.prototype.getInitialData = function (option, ecModel) { + var edges = option.edges || option.links || []; + var nodes = option.data || option.nodes || []; + var self = this; + if (nodes && edges) { + // auto curveness + initCurvenessList(this); + var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink); + each(graph.edges, function (edge) { + createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex); + }, this); + return graph.data; + } + function beforeLink(nodeData, edgeData) { + // Overwrite nodeData.getItemModel to + nodeData.wrapMethod('getItemModel', function (model) { + var categoriesModels = self._categoriesModels; + var categoryIdx = model.getShallow('category'); + var categoryModel = categoriesModels[categoryIdx]; + if (categoryModel) { + categoryModel.parentModel = model.parentModel; + model.parentModel = categoryModel; + } + return model; + }); + // TODO Inherit resolveParentPath by default in Model#getModel? + var oldGetModel = Model.prototype.getModel; + function newGetModel(path, parentModel) { + var model = oldGetModel.call(this, path, parentModel); + model.resolveParentPath = resolveParentPath; + return model; + } + edgeData.wrapMethod('getItemModel', function (model) { + model.resolveParentPath = resolveParentPath; + model.getModel = newGetModel; + return model; + }); + function resolveParentPath(pathArr) { + if (pathArr && (pathArr[0] === 'label' || pathArr[1] === 'label')) { + var newPathArr = pathArr.slice(); + if (pathArr[0] === 'label') { + newPathArr[0] = 'edgeLabel'; + } else if (pathArr[1] === 'label') { + newPathArr[1] = 'edgeLabel'; + } + return newPathArr; + } + return pathArr; + } + } + }; + GraphSeriesModel.prototype.getGraph = function () { + return this.getData().graph; + }; + GraphSeriesModel.prototype.getEdgeData = function () { + return this.getGraph().edgeData; + }; + GraphSeriesModel.prototype.getCategoriesData = function () { + return this._categoriesData; + }; + GraphSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + if (dataType === 'edge') { + var nodeData = this.getData(); + var params = this.getDataParams(dataIndex, dataType); + var edge = nodeData.graph.getEdgeByIndex(dataIndex); + var sourceName = nodeData.getName(edge.node1.dataIndex); + var targetName = nodeData.getName(edge.node2.dataIndex); + var nameArr = []; + sourceName != null && nameArr.push(sourceName); + targetName != null && nameArr.push(targetName); + return createTooltipMarkup('nameValue', { + name: nameArr.join(' > '), + value: params.value, + noValue: params.value == null + }); + } + // dataType === 'node' or empty + var nodeMarkup = defaultSeriesFormatTooltip({ + series: this, + dataIndex: dataIndex, + multipleSeries: multipleSeries + }); + return nodeMarkup; + }; + GraphSeriesModel.prototype._updateCategoriesData = function () { + var categories = map(this.option.categories || [], function (category) { + // Data must has value + return category.value != null ? category : extend({ + value: 0 + }, category); + }); + var categoriesData = new SeriesData(['value'], this); + categoriesData.initData(categories); + this._categoriesData = categoriesData; + this._categoriesModels = categoriesData.mapArray(function (idx) { + return categoriesData.getItemModel(idx); + }); + }; + GraphSeriesModel.prototype.setZoom = function (zoom) { + this.option.zoom = zoom; + }; + GraphSeriesModel.prototype.setCenter = function (center) { + this.option.center = center; + }; + GraphSeriesModel.prototype.isAnimationEnabled = function () { + return _super.prototype.isAnimationEnabled.call(this) + // Not enable animation when do force layout + && !(this.get('layout') === 'force' && this.get(['force', 'layoutAnimation'])); + }; + GraphSeriesModel.type = 'series.graph'; + GraphSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar']; + GraphSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: 'view', + // Default option for all coordinate systems + // xAxisIndex: 0, + // yAxisIndex: 0, + // polarIndex: 0, + // geoIndex: 0, + legendHoverLink: true, + layout: null, + // Configuration of circular layout + circular: { + rotateLabel: false + }, + // Configuration of force directed layout + force: { + initLayout: null, + // Node repulsion. Can be an array to represent range. + repulsion: [0, 50], + gravity: 0.1, + // Initial friction + friction: 0.6, + // Edge length. Can be an array to represent range. + edgeLength: 30, + layoutAnimation: true + }, + left: 'center', + top: 'center', + // right: null, + // bottom: null, + // width: '80%', + // height: '80%', + symbol: 'circle', + symbolSize: 10, + edgeSymbol: ['none', 'none'], + edgeSymbolSize: 10, + edgeLabel: { + position: 'middle', + distance: 5 + }, + draggable: false, + roam: false, + // Default on center of graph + center: null, + zoom: 1, + // Symbol size scale ratio in roam + nodeScaleRatio: 0.6, + // cursor: null, + // categories: [], + // data: [] + // Or + // nodes: [] + // + // links: [] + // Or + // edges: [] + label: { + show: false, + formatter: '{b}' + }, + itemStyle: {}, + lineStyle: { + color: '#aaa', + width: 1, + opacity: 0.5 + }, + emphasis: { + scale: true, + label: { + show: true + } + }, + select: { + itemStyle: { + borderColor: '#212121' + } + } + }; + return GraphSeriesModel; + }(SeriesModel); + + var actionInfo = { + type: 'graphRoam', + event: 'graphRoam', + update: 'none' + }; + function install$d(registers) { + registers.registerChartView(GraphView); + registers.registerSeriesModel(GraphSeriesModel); + registers.registerProcessor(categoryFilter); + registers.registerVisual(categoryVisual); + registers.registerVisual(graphEdgeVisual); + registers.registerLayout(graphSimpleLayout); + registers.registerLayout(registers.PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout); + registers.registerLayout(graphForceLayout); + registers.registerCoordinateSystem('graphView', { + dimensions: View.dimensions, + create: createViewCoordSys + }); + // Register legacy focus actions + registers.registerAction({ + type: 'focusNodeAdjacency', + event: 'focusNodeAdjacency', + update: 'series:focusNodeAdjacency' + }, noop); + registers.registerAction({ + type: 'unfocusNodeAdjacency', + event: 'unfocusNodeAdjacency', + update: 'series:unfocusNodeAdjacency' + }, noop); + // Register roam action. + registers.registerAction(actionInfo, function (payload, ecModel, api) { + ecModel.eachComponent({ + mainType: 'series', + query: payload + }, function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + var res = updateCenterAndZoom(coordSys, payload, undefined, api); + seriesModel.setCenter && seriesModel.setCenter(res.center); + seriesModel.setZoom && seriesModel.setZoom(res.zoom); + }); + }); + } + + var PointerShape = /** @class */function () { + function PointerShape() { + this.angle = 0; + this.width = 10; + this.r = 10; + this.x = 0; + this.y = 0; + } + return PointerShape; + }(); + var PointerPath = /** @class */function (_super) { + __extends(PointerPath, _super); + function PointerPath(opts) { + var _this = _super.call(this, opts) || this; + _this.type = 'pointer'; + return _this; + } + PointerPath.prototype.getDefaultShape = function () { + return new PointerShape(); + }; + PointerPath.prototype.buildPath = function (ctx, shape) { + var mathCos = Math.cos; + var mathSin = Math.sin; + var r = shape.r; + var width = shape.width; + var angle = shape.angle; + var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2); + var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2); + angle = shape.angle - Math.PI / 2; + ctx.moveTo(x, y); + ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width); + ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r); + ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width); + ctx.lineTo(x, y); + }; + return PointerPath; + }(Path); + + function parsePosition(seriesModel, api) { + var center = seriesModel.get('center'); + var width = api.getWidth(); + var height = api.getHeight(); + var size = Math.min(width, height); + var cx = parsePercent$1(center[0], api.getWidth()); + var cy = parsePercent$1(center[1], api.getHeight()); + var r = parsePercent$1(seriesModel.get('radius'), size / 2); + return { + cx: cx, + cy: cy, + r: r + }; + } + function formatLabel(value, labelFormatter) { + var label = value == null ? '' : value + ''; + if (labelFormatter) { + if (isString(labelFormatter)) { + label = labelFormatter.replace('{value}', label); + } else if (isFunction(labelFormatter)) { + label = labelFormatter(value); + } + } + return label; + } + var GaugeView = /** @class */function (_super) { + __extends(GaugeView, _super); + function GaugeView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = GaugeView.type; + return _this; + } + GaugeView.prototype.render = function (seriesModel, ecModel, api) { + this.group.removeAll(); + var colorList = seriesModel.get(['axisLine', 'lineStyle', 'color']); + var posInfo = parsePosition(seriesModel, api); + this._renderMain(seriesModel, ecModel, api, colorList, posInfo); + this._data = seriesModel.getData(); + }; + GaugeView.prototype.dispose = function () {}; + GaugeView.prototype._renderMain = function (seriesModel, ecModel, api, colorList, posInfo) { + var group = this.group; + var clockwise = seriesModel.get('clockwise'); + var startAngle = -seriesModel.get('startAngle') / 180 * Math.PI; + var endAngle = -seriesModel.get('endAngle') / 180 * Math.PI; + var axisLineModel = seriesModel.getModel('axisLine'); + var roundCap = axisLineModel.get('roundCap'); + var MainPath = roundCap ? SausagePath : Sector; + var showAxis = axisLineModel.get('show'); + var lineStyleModel = axisLineModel.getModel('lineStyle'); + var axisLineWidth = lineStyleModel.get('width'); + var angles = [startAngle, endAngle]; + normalizeArcAngles(angles, !clockwise); + startAngle = angles[0]; + endAngle = angles[1]; + var angleRangeSpan = endAngle - startAngle; + var prevEndAngle = startAngle; + var sectors = []; + for (var i = 0; showAxis && i < colorList.length; i++) { + // Clamp + var percent = Math.min(Math.max(colorList[i][0], 0), 1); + endAngle = startAngle + angleRangeSpan * percent; + var sector = new MainPath({ + shape: { + startAngle: prevEndAngle, + endAngle: endAngle, + cx: posInfo.cx, + cy: posInfo.cy, + clockwise: clockwise, + r0: posInfo.r - axisLineWidth, + r: posInfo.r + }, + silent: true + }); + sector.setStyle({ + fill: colorList[i][1] + }); + sector.setStyle(lineStyleModel.getLineStyle( + // Because we use sector to simulate arc + // so the properties for stroking are useless + ['color', 'width'])); + sectors.push(sector); + prevEndAngle = endAngle; + } + sectors.reverse(); + each(sectors, function (sector) { + return group.add(sector); + }); + var getColor = function (percent) { + // Less than 0 + if (percent <= 0) { + return colorList[0][1]; + } + var i; + for (i = 0; i < colorList.length; i++) { + if (colorList[i][0] >= percent && (i === 0 ? 0 : colorList[i - 1][0]) < percent) { + return colorList[i][1]; + } + } + // More than 1 + return colorList[i - 1][1]; + }; + this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth); + this._renderTitleAndDetail(seriesModel, ecModel, api, getColor, posInfo); + this._renderAnchor(seriesModel, posInfo); + this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth); + }; + GaugeView.prototype._renderTicks = function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) { + var group = this.group; + var cx = posInfo.cx; + var cy = posInfo.cy; + var r = posInfo.r; + var minVal = +seriesModel.get('min'); + var maxVal = +seriesModel.get('max'); + var splitLineModel = seriesModel.getModel('splitLine'); + var tickModel = seriesModel.getModel('axisTick'); + var labelModel = seriesModel.getModel('axisLabel'); + var splitNumber = seriesModel.get('splitNumber'); + var subSplitNumber = tickModel.get('splitNumber'); + var splitLineLen = parsePercent$1(splitLineModel.get('length'), r); + var tickLen = parsePercent$1(tickModel.get('length'), r); + var angle = startAngle; + var step = (endAngle - startAngle) / splitNumber; + var subStep = step / subSplitNumber; + var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle(); + var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle(); + var splitLineDistance = splitLineModel.get('distance'); + var unitX; + var unitY; + for (var i = 0; i <= splitNumber; i++) { + unitX = Math.cos(angle); + unitY = Math.sin(angle); + // Split line + if (splitLineModel.get('show')) { + var distance = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth; + var splitLine = new Line({ + shape: { + x1: unitX * (r - distance) + cx, + y1: unitY * (r - distance) + cy, + x2: unitX * (r - splitLineLen - distance) + cx, + y2: unitY * (r - splitLineLen - distance) + cy + }, + style: splitLineStyle, + silent: true + }); + if (splitLineStyle.stroke === 'auto') { + splitLine.setStyle({ + stroke: getColor(i / splitNumber) + }); + } + group.add(splitLine); + } + // Label + if (labelModel.get('show')) { + var distance = labelModel.get('distance') + splitLineDistance; + var label = formatLabel(round(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get('formatter')); + var autoColor = getColor(i / splitNumber); + var textStyleX = unitX * (r - splitLineLen - distance) + cx; + var textStyleY = unitY * (r - splitLineLen - distance) + cy; + var rotateType = labelModel.get('rotate'); + var rotate = 0; + if (rotateType === 'radial') { + rotate = -angle + 2 * Math.PI; + if (rotate > Math.PI / 2) { + rotate += Math.PI; + } + } else if (rotateType === 'tangential') { + rotate = -angle - Math.PI / 2; + } else if (isNumber(rotateType)) { + rotate = rotateType * Math.PI / 180; + } + if (rotate === 0) { + group.add(new ZRText({ + style: createTextStyle(labelModel, { + text: label, + x: textStyleX, + y: textStyleY, + verticalAlign: unitY < -0.8 ? 'top' : unitY > 0.8 ? 'bottom' : 'middle', + align: unitX < -0.4 ? 'left' : unitX > 0.4 ? 'right' : 'center' + }, { + inheritColor: autoColor + }), + silent: true + })); + } else { + group.add(new ZRText({ + style: createTextStyle(labelModel, { + text: label, + x: textStyleX, + y: textStyleY, + verticalAlign: 'middle', + align: 'center' + }, { + inheritColor: autoColor + }), + silent: true, + originX: textStyleX, + originY: textStyleY, + rotation: rotate + })); + } + } + // Axis tick + if (tickModel.get('show') && i !== splitNumber) { + var distance = tickModel.get('distance'); + distance = distance ? distance + axisLineWidth : axisLineWidth; + for (var j = 0; j <= subSplitNumber; j++) { + unitX = Math.cos(angle); + unitY = Math.sin(angle); + var tickLine = new Line({ + shape: { + x1: unitX * (r - distance) + cx, + y1: unitY * (r - distance) + cy, + x2: unitX * (r - tickLen - distance) + cx, + y2: unitY * (r - tickLen - distance) + cy + }, + silent: true, + style: tickLineStyle + }); + if (tickLineStyle.stroke === 'auto') { + tickLine.setStyle({ + stroke: getColor((i + j / subSplitNumber) / splitNumber) + }); + } + group.add(tickLine); + angle += subStep; + } + angle -= subStep; + } else { + angle += step; + } + } + }; + GaugeView.prototype._renderPointer = function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) { + var group = this.group; + var oldData = this._data; + var oldProgressData = this._progressEls; + var progressList = []; + var showPointer = seriesModel.get(['pointer', 'show']); + var progressModel = seriesModel.getModel('progress'); + var showProgress = progressModel.get('show'); + var data = seriesModel.getData(); + var valueDim = data.mapDimension('value'); + var minVal = +seriesModel.get('min'); + var maxVal = +seriesModel.get('max'); + var valueExtent = [minVal, maxVal]; + var angleExtent = [startAngle, endAngle]; + function createPointer(idx, angle) { + var itemModel = data.getItemModel(idx); + var pointerModel = itemModel.getModel('pointer'); + var pointerWidth = parsePercent$1(pointerModel.get('width'), posInfo.r); + var pointerLength = parsePercent$1(pointerModel.get('length'), posInfo.r); + var pointerStr = seriesModel.get(['pointer', 'icon']); + var pointerOffset = pointerModel.get('offsetCenter'); + var pointerOffsetX = parsePercent$1(pointerOffset[0], posInfo.r); + var pointerOffsetY = parsePercent$1(pointerOffset[1], posInfo.r); + var pointerKeepAspect = pointerModel.get('keepAspect'); + var pointer; + // not exist icon type will be set 'rect' + if (pointerStr) { + pointer = createSymbol(pointerStr, pointerOffsetX - pointerWidth / 2, pointerOffsetY - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect); + } else { + pointer = new PointerPath({ + shape: { + angle: -Math.PI / 2, + width: pointerWidth, + r: pointerLength, + x: pointerOffsetX, + y: pointerOffsetY + } + }); + } + pointer.rotation = -(angle + Math.PI / 2); + pointer.x = posInfo.cx; + pointer.y = posInfo.cy; + return pointer; + } + function createProgress(idx, endAngle) { + var roundCap = progressModel.get('roundCap'); + var ProgressPath = roundCap ? SausagePath : Sector; + var isOverlap = progressModel.get('overlap'); + var progressWidth = isOverlap ? progressModel.get('width') : axisLineWidth / data.count(); + var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth; + var r = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth; + var progress = new ProgressPath({ + shape: { + startAngle: startAngle, + endAngle: endAngle, + cx: posInfo.cx, + cy: posInfo.cy, + clockwise: clockwise, + r0: r0, + r: r + } + }); + isOverlap && (progress.z2 = maxVal - data.get(valueDim, idx) % maxVal); + return progress; + } + if (showProgress || showPointer) { + data.diff(oldData).add(function (idx) { + var val = data.get(valueDim, idx); + if (showPointer) { + var pointer = createPointer(idx, startAngle); + // TODO hide pointer on NaN value? + initProps(pointer, { + rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2) + }, seriesModel); + group.add(pointer); + data.setItemGraphicEl(idx, pointer); + } + if (showProgress) { + var progress = createProgress(idx, startAngle); + var isClip = progressModel.get('clip'); + initProps(progress, { + shape: { + endAngle: linearMap(val, valueExtent, angleExtent, isClip) + } + }, seriesModel); + group.add(progress); + // Add data index and series index for indexing the data by element + // Useful in tooltip + setCommonECData(seriesModel.seriesIndex, data.dataType, idx, progress); + progressList[idx] = progress; + } + }).update(function (newIdx, oldIdx) { + var val = data.get(valueDim, newIdx); + if (showPointer) { + var previousPointer = oldData.getItemGraphicEl(oldIdx); + var previousRotate = previousPointer ? previousPointer.rotation : startAngle; + var pointer = createPointer(newIdx, previousRotate); + pointer.rotation = previousRotate; + updateProps(pointer, { + rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2) + }, seriesModel); + group.add(pointer); + data.setItemGraphicEl(newIdx, pointer); + } + if (showProgress) { + var previousProgress = oldProgressData[oldIdx]; + var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle; + var progress = createProgress(newIdx, previousEndAngle); + var isClip = progressModel.get('clip'); + updateProps(progress, { + shape: { + endAngle: linearMap(val, valueExtent, angleExtent, isClip) + } + }, seriesModel); + group.add(progress); + // Add data index and series index for indexing the data by element + // Useful in tooltip + setCommonECData(seriesModel.seriesIndex, data.dataType, newIdx, progress); + progressList[newIdx] = progress; + } + }).execute(); + data.each(function (idx) { + var itemModel = data.getItemModel(idx); + var emphasisModel = itemModel.getModel('emphasis'); + var focus = emphasisModel.get('focus'); + var blurScope = emphasisModel.get('blurScope'); + var emphasisDisabled = emphasisModel.get('disabled'); + if (showPointer) { + var pointer = data.getItemGraphicEl(idx); + var symbolStyle = data.getItemVisual(idx, 'style'); + var visualColor = symbolStyle.fill; + if (pointer instanceof ZRImage) { + var pathStyle = pointer.style; + pointer.useStyle(extend({ + image: pathStyle.image, + x: pathStyle.x, + y: pathStyle.y, + width: pathStyle.width, + height: pathStyle.height + }, symbolStyle)); + } else { + pointer.useStyle(symbolStyle); + pointer.type !== 'pointer' && pointer.setColor(visualColor); + } + pointer.setStyle(itemModel.getModel(['pointer', 'itemStyle']).getItemStyle()); + if (pointer.style.fill === 'auto') { + pointer.setStyle('fill', getColor(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true))); + } + pointer.z2EmphasisLift = 0; + setStatesStylesFromModel(pointer, itemModel); + toggleHoverEmphasis(pointer, focus, blurScope, emphasisDisabled); + } + if (showProgress) { + var progress = progressList[idx]; + progress.useStyle(data.getItemVisual(idx, 'style')); + progress.setStyle(itemModel.getModel(['progress', 'itemStyle']).getItemStyle()); + progress.z2EmphasisLift = 0; + setStatesStylesFromModel(progress, itemModel); + toggleHoverEmphasis(progress, focus, blurScope, emphasisDisabled); + } + }); + this._progressEls = progressList; + } + }; + GaugeView.prototype._renderAnchor = function (seriesModel, posInfo) { + var anchorModel = seriesModel.getModel('anchor'); + var showAnchor = anchorModel.get('show'); + if (showAnchor) { + var anchorSize = anchorModel.get('size'); + var anchorType = anchorModel.get('icon'); + var offsetCenter = anchorModel.get('offsetCenter'); + var anchorKeepAspect = anchorModel.get('keepAspect'); + var anchor = createSymbol(anchorType, posInfo.cx - anchorSize / 2 + parsePercent$1(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent$1(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect); + anchor.z2 = anchorModel.get('showAbove') ? 1 : 0; + anchor.setStyle(anchorModel.getModel('itemStyle').getItemStyle()); + this.group.add(anchor); + } + }; + GaugeView.prototype._renderTitleAndDetail = function (seriesModel, ecModel, api, getColor, posInfo) { + var _this = this; + var data = seriesModel.getData(); + var valueDim = data.mapDimension('value'); + var minVal = +seriesModel.get('min'); + var maxVal = +seriesModel.get('max'); + var contentGroup = new Group(); + var newTitleEls = []; + var newDetailEls = []; + var hasAnimation = seriesModel.isAnimationEnabled(); + var showPointerAbove = seriesModel.get(['pointer', 'showAbove']); + data.diff(this._data).add(function (idx) { + newTitleEls[idx] = new ZRText({ + silent: true + }); + newDetailEls[idx] = new ZRText({ + silent: true + }); + }).update(function (idx, oldIdx) { + newTitleEls[idx] = _this._titleEls[oldIdx]; + newDetailEls[idx] = _this._detailEls[oldIdx]; + }).execute(); + data.each(function (idx) { + var itemModel = data.getItemModel(idx); + var value = data.get(valueDim, idx); + var itemGroup = new Group(); + var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true)); + var itemTitleModel = itemModel.getModel('title'); + if (itemTitleModel.get('show')) { + var titleOffsetCenter = itemTitleModel.get('offsetCenter'); + var titleX = posInfo.cx + parsePercent$1(titleOffsetCenter[0], posInfo.r); + var titleY = posInfo.cy + parsePercent$1(titleOffsetCenter[1], posInfo.r); + var labelEl = newTitleEls[idx]; + labelEl.attr({ + z2: showPointerAbove ? 0 : 2, + style: createTextStyle(itemTitleModel, { + x: titleX, + y: titleY, + text: data.getName(idx), + align: 'center', + verticalAlign: 'middle' + }, { + inheritColor: autoColor + }) + }); + itemGroup.add(labelEl); + } + var itemDetailModel = itemModel.getModel('detail'); + if (itemDetailModel.get('show')) { + var detailOffsetCenter = itemDetailModel.get('offsetCenter'); + var detailX = posInfo.cx + parsePercent$1(detailOffsetCenter[0], posInfo.r); + var detailY = posInfo.cy + parsePercent$1(detailOffsetCenter[1], posInfo.r); + var width = parsePercent$1(itemDetailModel.get('width'), posInfo.r); + var height = parsePercent$1(itemDetailModel.get('height'), posInfo.r); + var detailColor = seriesModel.get(['progress', 'show']) ? data.getItemVisual(idx, 'style').fill : autoColor; + var labelEl = newDetailEls[idx]; + var formatter_1 = itemDetailModel.get('formatter'); + labelEl.attr({ + z2: showPointerAbove ? 0 : 2, + style: createTextStyle(itemDetailModel, { + x: detailX, + y: detailY, + text: formatLabel(value, formatter_1), + width: isNaN(width) ? null : width, + height: isNaN(height) ? null : height, + align: 'center', + verticalAlign: 'middle' + }, { + inheritColor: detailColor + }) + }); + setLabelValueAnimation(labelEl, { + normal: itemDetailModel + }, value, function (value) { + return formatLabel(value, formatter_1); + }); + hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel, { + getFormattedLabel: function (labelDataIndex, status, dataType, labelDimIndex, fmt, extendParams) { + return formatLabel(extendParams ? extendParams.interpolatedValue : value, formatter_1); + } + }); + itemGroup.add(labelEl); + } + contentGroup.add(itemGroup); + }); + this.group.add(contentGroup); + this._titleEls = newTitleEls; + this._detailEls = newDetailEls; + }; + GaugeView.type = 'gauge'; + return GaugeView; + }(ChartView); + + var GaugeSeriesModel = /** @class */function (_super) { + __extends(GaugeSeriesModel, _super); + function GaugeSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = GaugeSeriesModel.type; + _this.visualStyleAccessPath = 'itemStyle'; + return _this; + } + GaugeSeriesModel.prototype.getInitialData = function (option, ecModel) { + return createSeriesDataSimply(this, ['value']); + }; + GaugeSeriesModel.type = 'series.gauge'; + GaugeSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + colorBy: 'data', + // 默认全局居中 + center: ['50%', '50%'], + legendHoverLink: true, + radius: '75%', + startAngle: 225, + endAngle: -45, + clockwise: true, + // 最小值 + min: 0, + // 最大值 + max: 100, + // 分割段数,默认为10 + splitNumber: 10, + // 坐标轴线 + axisLine: { + // 默认显示,属性show控制显示与否 + show: true, + roundCap: false, + lineStyle: { + color: [[1, '#E6EBF8']], + width: 10 + } + }, + // 坐标轴线 + progress: { + // 默认显示,属性show控制显示与否 + show: false, + overlap: true, + width: 10, + roundCap: false, + clip: true + }, + // 分隔线 + splitLine: { + // 默认显示,属性show控制显示与否 + show: true, + // 属性length控制线长 + length: 10, + distance: 10, + // 属性lineStyle(详见lineStyle)控制线条样式 + lineStyle: { + color: '#63677A', + width: 3, + type: 'solid' + } + }, + // 坐标轴小标记 + axisTick: { + // 属性show控制显示与否,默认不显示 + show: true, + // 每份split细分多少段 + splitNumber: 5, + // 属性length控制线长 + length: 6, + distance: 10, + // 属性lineStyle控制线条样式 + lineStyle: { + color: '#63677A', + width: 1, + type: 'solid' + } + }, + axisLabel: { + show: true, + distance: 15, + // formatter: null, + color: '#464646', + fontSize: 12, + rotate: 0 + }, + pointer: { + icon: null, + offsetCenter: [0, 0], + show: true, + showAbove: true, + length: '60%', + width: 6, + keepAspect: false + }, + anchor: { + show: false, + showAbove: false, + size: 6, + icon: 'circle', + offsetCenter: [0, 0], + keepAspect: false, + itemStyle: { + color: '#fff', + borderWidth: 0, + borderColor: '#5470c6' + } + }, + title: { + show: true, + // x, y,单位px + offsetCenter: [0, '20%'], + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: '#464646', + fontSize: 16, + valueAnimation: false + }, + detail: { + show: true, + backgroundColor: 'rgba(0,0,0,0)', + borderWidth: 0, + borderColor: '#ccc', + width: 100, + height: null, + padding: [5, 10], + // x, y,单位px + offsetCenter: [0, '40%'], + // formatter: null, + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: '#464646', + fontSize: 30, + fontWeight: 'bold', + lineHeight: 30, + valueAnimation: false + } + }; + return GaugeSeriesModel; + }(SeriesModel); + + function install$e(registers) { + registers.registerChartView(GaugeView); + registers.registerSeriesModel(GaugeSeriesModel); + } + + var opacityAccessPath = ['itemStyle', 'opacity']; + /** + * Piece of pie including Sector, Label, LabelLine + */ + var FunnelPiece = /** @class */function (_super) { + __extends(FunnelPiece, _super); + function FunnelPiece(data, idx) { + var _this = _super.call(this) || this; + var polygon = _this; + var labelLine = new Polyline(); + var text = new ZRText(); + polygon.setTextContent(text); + _this.setTextGuideLine(labelLine); + _this.updateData(data, idx, true); + return _this; + } + FunnelPiece.prototype.updateData = function (data, idx, firstCreate) { + var polygon = this; + var seriesModel = data.hostModel; + var itemModel = data.getItemModel(idx); + var layout = data.getItemLayout(idx); + var emphasisModel = itemModel.getModel('emphasis'); + var opacity = itemModel.get(opacityAccessPath); + opacity = opacity == null ? 1 : opacity; + if (!firstCreate) { + saveOldStyle(polygon); + } + // Update common style + polygon.useStyle(data.getItemVisual(idx, 'style')); + polygon.style.lineJoin = 'round'; + if (firstCreate) { + polygon.setShape({ + points: layout.points + }); + polygon.style.opacity = 0; + initProps(polygon, { + style: { + opacity: opacity + } + }, seriesModel, idx); + } else { + updateProps(polygon, { + style: { + opacity: opacity + }, + shape: { + points: layout.points + } + }, seriesModel, idx); + } + setStatesStylesFromModel(polygon, itemModel); + this._updateLabel(data, idx); + toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + }; + FunnelPiece.prototype._updateLabel = function (data, idx) { + var polygon = this; + var labelLine = this.getTextGuideLine(); + var labelText = polygon.getTextContent(); + var seriesModel = data.hostModel; + var itemModel = data.getItemModel(idx); + var layout = data.getItemLayout(idx); + var labelLayout = layout.label; + var style = data.getItemVisual(idx, 'style'); + var visualColor = style.fill; + setLabelStyle( + // position will not be used in setLabelStyle + labelText, getLabelStatesModels(itemModel), { + labelFetcher: data.hostModel, + labelDataIndex: idx, + defaultOpacity: style.opacity, + defaultText: data.getName(idx) + }, { + normal: { + align: labelLayout.textAlign, + verticalAlign: labelLayout.verticalAlign + } + }); + polygon.setTextConfig({ + local: true, + inside: !!labelLayout.inside, + insideStroke: visualColor, + // insideFill: 'auto', + outsideFill: visualColor + }); + var linePoints = labelLayout.linePoints; + labelLine.setShape({ + points: linePoints + }); + polygon.textGuideLineConfig = { + anchor: linePoints ? new Point(linePoints[0][0], linePoints[0][1]) : null + }; + // Make sure update style on labelText after setLabelStyle. + // Because setLabelStyle will replace a new style on it. + updateProps(labelText, { + style: { + x: labelLayout.x, + y: labelLayout.y + } + }, seriesModel, idx); + labelText.attr({ + rotation: labelLayout.rotation, + originX: labelLayout.x, + originY: labelLayout.y, + z2: 10 + }); + setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), { + // Default use item visual color + stroke: visualColor + }); + }; + return FunnelPiece; + }(Polygon); + var FunnelView = /** @class */function (_super) { + __extends(FunnelView, _super); + function FunnelView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = FunnelView.type; + _this.ignoreLabelLineUpdate = true; + return _this; + } + FunnelView.prototype.render = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var oldData = this._data; + var group = this.group; + data.diff(oldData).add(function (idx) { + var funnelPiece = new FunnelPiece(data, idx); + data.setItemGraphicEl(idx, funnelPiece); + group.add(funnelPiece); + }).update(function (newIdx, oldIdx) { + var piece = oldData.getItemGraphicEl(oldIdx); + piece.updateData(data, newIdx); + group.add(piece); + data.setItemGraphicEl(newIdx, piece); + }).remove(function (idx) { + var piece = oldData.getItemGraphicEl(idx); + removeElementWithFadeOut(piece, seriesModel, idx); + }).execute(); + this._data = data; + }; + FunnelView.prototype.remove = function () { + this.group.removeAll(); + this._data = null; + }; + FunnelView.prototype.dispose = function () {}; + FunnelView.type = 'funnel'; + return FunnelView; + }(ChartView); + + var FunnelSeriesModel = /** @class */function (_super) { + __extends(FunnelSeriesModel, _super); + function FunnelSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = FunnelSeriesModel.type; + return _this; + } + FunnelSeriesModel.prototype.init = function (option) { + _super.prototype.init.apply(this, arguments); + // Enable legend selection for each data item + // Use a function instead of direct access because data reference may changed + this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this)); + // Extend labelLine emphasis + this._defaultLabelLine(option); + }; + FunnelSeriesModel.prototype.getInitialData = function (option, ecModel) { + return createSeriesDataSimply(this, { + coordDimensions: ['value'], + encodeDefaulter: curry(makeSeriesEncodeForNameBased, this) + }); + }; + FunnelSeriesModel.prototype._defaultLabelLine = function (option) { + // Extend labelLine emphasis + defaultEmphasis(option, 'labelLine', ['show']); + var labelLineNormalOpt = option.labelLine; + var labelLineEmphasisOpt = option.emphasis.labelLine; + // Not show label line if `label.normal.show = false` + labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show; + labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show; + }; + // Overwrite + FunnelSeriesModel.prototype.getDataParams = function (dataIndex) { + var data = this.getData(); + var params = _super.prototype.getDataParams.call(this, dataIndex); + var valueDim = data.mapDimension('value'); + var sum = data.getSum(valueDim); + // Percent is 0 if sum is 0 + params.percent = !sum ? 0 : +(data.get(valueDim, dataIndex) / sum * 100).toFixed(2); + params.$vars.push('percent'); + return params; + }; + FunnelSeriesModel.type = 'series.funnel'; + FunnelSeriesModel.defaultOption = { + // zlevel: 0, // 一级层叠 + z: 2, + legendHoverLink: true, + colorBy: 'data', + left: 80, + top: 60, + right: 80, + bottom: 60, + // width: {totalWidth} - left - right, + // height: {totalHeight} - top - bottom, + // 默认取数据最小最大值 + // min: 0, + // max: 100, + minSize: '0%', + maxSize: '100%', + sort: 'descending', + orient: 'vertical', + gap: 0, + funnelAlign: 'center', + label: { + show: true, + position: 'outer' + // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 + }, + + labelLine: { + show: true, + length: 20, + lineStyle: { + // color: 各异, + width: 1 + } + }, + itemStyle: { + // color: 各异, + borderColor: '#fff', + borderWidth: 1 + }, + emphasis: { + label: { + show: true + } + }, + select: { + itemStyle: { + borderColor: '#212121' + } + } + }; + return FunnelSeriesModel; + }(SeriesModel); + + function getViewRect$3(seriesModel, api) { + return getLayoutRect(seriesModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }); + } + function getSortedIndices(data, sort) { + var valueDim = data.mapDimension('value'); + var valueArr = data.mapArray(valueDim, function (val) { + return val; + }); + var indices = []; + var isAscending = sort === 'ascending'; + for (var i = 0, len = data.count(); i < len; i++) { + indices[i] = i; + } + // Add custom sortable function & none sortable opetion by "options.sort" + if (isFunction(sort)) { + indices.sort(sort); + } else if (sort !== 'none') { + indices.sort(function (a, b) { + return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a]; + }); + } + return indices; + } + function labelLayout(data) { + var seriesModel = data.hostModel; + var orient = seriesModel.get('orient'); + data.each(function (idx) { + var itemModel = data.getItemModel(idx); + var labelModel = itemModel.getModel('label'); + var labelPosition = labelModel.get('position'); + var labelLineModel = itemModel.getModel('labelLine'); + var layout = data.getItemLayout(idx); + var points = layout.points; + var isLabelInside = labelPosition === 'inner' || labelPosition === 'inside' || labelPosition === 'center' || labelPosition === 'insideLeft' || labelPosition === 'insideRight'; + var textAlign; + var textX; + var textY; + var linePoints; + if (isLabelInside) { + if (labelPosition === 'insideLeft') { + textX = (points[0][0] + points[3][0]) / 2 + 5; + textY = (points[0][1] + points[3][1]) / 2; + textAlign = 'left'; + } else if (labelPosition === 'insideRight') { + textX = (points[1][0] + points[2][0]) / 2 - 5; + textY = (points[1][1] + points[2][1]) / 2; + textAlign = 'right'; + } else { + textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4; + textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4; + textAlign = 'center'; + } + linePoints = [[textX, textY], [textX, textY]]; + } else { + var x1 = void 0; + var y1 = void 0; + var x2 = void 0; + var y2 = void 0; + var labelLineLen = labelLineModel.get('length'); + if ("development" !== 'production') { + if (orient === 'vertical' && ['top', 'bottom'].indexOf(labelPosition) > -1) { + labelPosition = 'left'; + console.warn('Position error: Funnel chart on vertical orient dose not support top and bottom.'); + } + if (orient === 'horizontal' && ['left', 'right'].indexOf(labelPosition) > -1) { + labelPosition = 'bottom'; + console.warn('Position error: Funnel chart on horizontal orient dose not support left and right.'); + } + } + if (labelPosition === 'left') { + // Left side + x1 = (points[3][0] + points[0][0]) / 2; + y1 = (points[3][1] + points[0][1]) / 2; + x2 = x1 - labelLineLen; + textX = x2 - 5; + textAlign = 'right'; + } else if (labelPosition === 'right') { + // Right side + x1 = (points[1][0] + points[2][0]) / 2; + y1 = (points[1][1] + points[2][1]) / 2; + x2 = x1 + labelLineLen; + textX = x2 + 5; + textAlign = 'left'; + } else if (labelPosition === 'top') { + // Top side + x1 = (points[3][0] + points[0][0]) / 2; + y1 = (points[3][1] + points[0][1]) / 2; + y2 = y1 - labelLineLen; + textY = y2 - 5; + textAlign = 'center'; + } else if (labelPosition === 'bottom') { + // Bottom side + x1 = (points[1][0] + points[2][0]) / 2; + y1 = (points[1][1] + points[2][1]) / 2; + y2 = y1 + labelLineLen; + textY = y2 + 5; + textAlign = 'center'; + } else if (labelPosition === 'rightTop') { + // RightTop side + x1 = orient === 'horizontal' ? points[3][0] : points[1][0]; + y1 = orient === 'horizontal' ? points[3][1] : points[1][1]; + if (orient === 'horizontal') { + y2 = y1 - labelLineLen; + textY = y2 - 5; + textAlign = 'center'; + } else { + x2 = x1 + labelLineLen; + textX = x2 + 5; + textAlign = 'top'; + } + } else if (labelPosition === 'rightBottom') { + // RightBottom side + x1 = points[2][0]; + y1 = points[2][1]; + if (orient === 'horizontal') { + y2 = y1 + labelLineLen; + textY = y2 + 5; + textAlign = 'center'; + } else { + x2 = x1 + labelLineLen; + textX = x2 + 5; + textAlign = 'bottom'; + } + } else if (labelPosition === 'leftTop') { + // LeftTop side + x1 = points[0][0]; + y1 = orient === 'horizontal' ? points[0][1] : points[1][1]; + if (orient === 'horizontal') { + y2 = y1 - labelLineLen; + textY = y2 - 5; + textAlign = 'center'; + } else { + x2 = x1 - labelLineLen; + textX = x2 - 5; + textAlign = 'right'; + } + } else if (labelPosition === 'leftBottom') { + // LeftBottom side + x1 = orient === 'horizontal' ? points[1][0] : points[3][0]; + y1 = orient === 'horizontal' ? points[1][1] : points[2][1]; + if (orient === 'horizontal') { + y2 = y1 + labelLineLen; + textY = y2 + 5; + textAlign = 'center'; + } else { + x2 = x1 - labelLineLen; + textX = x2 - 5; + textAlign = 'right'; + } + } else { + // Right side or Bottom side + x1 = (points[1][0] + points[2][0]) / 2; + y1 = (points[1][1] + points[2][1]) / 2; + if (orient === 'horizontal') { + y2 = y1 + labelLineLen; + textY = y2 + 5; + textAlign = 'center'; + } else { + x2 = x1 + labelLineLen; + textX = x2 + 5; + textAlign = 'left'; + } + } + if (orient === 'horizontal') { + x2 = x1; + textX = x2; + } else { + y2 = y1; + textY = y2; + } + linePoints = [[x1, y1], [x2, y2]]; + } + layout.label = { + linePoints: linePoints, + x: textX, + y: textY, + verticalAlign: 'middle', + textAlign: textAlign, + inside: isLabelInside + }; + }); + } + function funnelLayout(ecModel, api) { + ecModel.eachSeriesByType('funnel', function (seriesModel) { + var data = seriesModel.getData(); + var valueDim = data.mapDimension('value'); + var sort = seriesModel.get('sort'); + var viewRect = getViewRect$3(seriesModel, api); + var orient = seriesModel.get('orient'); + var viewWidth = viewRect.width; + var viewHeight = viewRect.height; + var indices = getSortedIndices(data, sort); + var x = viewRect.x; + var y = viewRect.y; + var sizeExtent = orient === 'horizontal' ? [parsePercent$1(seriesModel.get('minSize'), viewHeight), parsePercent$1(seriesModel.get('maxSize'), viewHeight)] : [parsePercent$1(seriesModel.get('minSize'), viewWidth), parsePercent$1(seriesModel.get('maxSize'), viewWidth)]; + var dataExtent = data.getDataExtent(valueDim); + var min = seriesModel.get('min'); + var max = seriesModel.get('max'); + if (min == null) { + min = Math.min(dataExtent[0], 0); + } + if (max == null) { + max = dataExtent[1]; + } + var funnelAlign = seriesModel.get('funnelAlign'); + var gap = seriesModel.get('gap'); + var viewSize = orient === 'horizontal' ? viewWidth : viewHeight; + var itemSize = (viewSize - gap * (data.count() - 1)) / data.count(); + var getLinePoints = function (idx, offset) { + // End point index is data.count() and we assign it 0 + if (orient === 'horizontal') { + var val_1 = data.get(valueDim, idx) || 0; + var itemHeight = linearMap(val_1, [min, max], sizeExtent, true); + var y0 = void 0; + switch (funnelAlign) { + case 'top': + y0 = y; + break; + case 'center': + y0 = y + (viewHeight - itemHeight) / 2; + break; + case 'bottom': + y0 = y + (viewHeight - itemHeight); + break; + } + return [[offset, y0], [offset, y0 + itemHeight]]; + } + var val = data.get(valueDim, idx) || 0; + var itemWidth = linearMap(val, [min, max], sizeExtent, true); + var x0; + switch (funnelAlign) { + case 'left': + x0 = x; + break; + case 'center': + x0 = x + (viewWidth - itemWidth) / 2; + break; + case 'right': + x0 = x + viewWidth - itemWidth; + break; + } + return [[x0, offset], [x0 + itemWidth, offset]]; + }; + if (sort === 'ascending') { + // From bottom to top + itemSize = -itemSize; + gap = -gap; + if (orient === 'horizontal') { + x += viewWidth; + } else { + y += viewHeight; + } + indices = indices.reverse(); + } + for (var i = 0; i < indices.length; i++) { + var idx = indices[i]; + var nextIdx = indices[i + 1]; + var itemModel = data.getItemModel(idx); + if (orient === 'horizontal') { + var width = itemModel.get(['itemStyle', 'width']); + if (width == null) { + width = itemSize; + } else { + width = parsePercent$1(width, viewWidth); + if (sort === 'ascending') { + width = -width; + } + } + var start = getLinePoints(idx, x); + var end = getLinePoints(nextIdx, x + width); + x += width + gap; + data.setItemLayout(idx, { + points: start.concat(end.slice().reverse()) + }); + } else { + var height = itemModel.get(['itemStyle', 'height']); + if (height == null) { + height = itemSize; + } else { + height = parsePercent$1(height, viewHeight); + if (sort === 'ascending') { + height = -height; + } + } + var start = getLinePoints(idx, y); + var end = getLinePoints(nextIdx, y + height); + y += height + gap; + data.setItemLayout(idx, { + points: start.concat(end.slice().reverse()) + }); + } + } + labelLayout(data); + }); + } + + function install$f(registers) { + registers.registerChartView(FunnelView); + registers.registerSeriesModel(FunnelSeriesModel); + registers.registerLayout(funnelLayout); + registers.registerProcessor(dataFilter('funnel')); + } + + var DEFAULT_SMOOTH = 0.3; + var ParallelView = /** @class */function (_super) { + __extends(ParallelView, _super); + function ParallelView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ParallelView.type; + _this._dataGroup = new Group(); + _this._initialized = false; + return _this; + } + ParallelView.prototype.init = function () { + this.group.add(this._dataGroup); + }; + /** + * @override + */ + ParallelView.prototype.render = function (seriesModel, ecModel, api, payload) { + // Clear previously rendered progressive elements. + this._progressiveEls = null; + var dataGroup = this._dataGroup; + var data = seriesModel.getData(); + var oldData = this._data; + var coordSys = seriesModel.coordinateSystem; + var dimensions = coordSys.dimensions; + var seriesScope = makeSeriesScope$2(seriesModel); + data.diff(oldData).add(add).update(update).remove(remove).execute(); + function add(newDataIndex) { + var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys); + updateElCommon(line, data, newDataIndex, seriesScope); + } + function update(newDataIndex, oldDataIndex) { + var line = oldData.getItemGraphicEl(oldDataIndex); + var points = createLinePoints(data, newDataIndex, dimensions, coordSys); + data.setItemGraphicEl(newDataIndex, line); + updateProps(line, { + shape: { + points: points + } + }, seriesModel, newDataIndex); + saveOldStyle(line); + updateElCommon(line, data, newDataIndex, seriesScope); + } + function remove(oldDataIndex) { + var line = oldData.getItemGraphicEl(oldDataIndex); + dataGroup.remove(line); + } + // First create + if (!this._initialized) { + this._initialized = true; + var clipPath = createGridClipShape(coordSys, seriesModel, function () { + // Callback will be invoked immediately if there is no animation + setTimeout(function () { + dataGroup.removeClipPath(); + }); + }); + dataGroup.setClipPath(clipPath); + } + this._data = data; + }; + ParallelView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) { + this._initialized = true; + this._data = null; + this._dataGroup.removeAll(); + }; + ParallelView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) { + var data = seriesModel.getData(); + var coordSys = seriesModel.coordinateSystem; + var dimensions = coordSys.dimensions; + var seriesScope = makeSeriesScope$2(seriesModel); + var progressiveEls = this._progressiveEls = []; + for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) { + var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys); + line.incremental = true; + updateElCommon(line, data, dataIndex, seriesScope); + progressiveEls.push(line); + } + }; + ParallelView.prototype.remove = function () { + this._dataGroup && this._dataGroup.removeAll(); + this._data = null; + }; + ParallelView.type = 'parallel'; + return ParallelView; + }(ChartView); + function createGridClipShape(coordSys, seriesModel, cb) { + var parallelModel = coordSys.model; + var rect = coordSys.getRect(); + var rectEl = new Rect({ + shape: { + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height + } + }); + var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height'; + rectEl.setShape(dim, 0); + initProps(rectEl, { + shape: { + width: rect.width, + height: rect.height + } + }, seriesModel, cb); + return rectEl; + } + function createLinePoints(data, dataIndex, dimensions, coordSys) { + var points = []; + for (var i = 0; i < dimensions.length; i++) { + var dimName = dimensions[i]; + var value = data.get(data.mapDimension(dimName), dataIndex); + if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) { + points.push(coordSys.dataToPoint(value, dimName)); + } + } + return points; + } + function addEl(data, dataGroup, dataIndex, dimensions, coordSys) { + var points = createLinePoints(data, dataIndex, dimensions, coordSys); + var line = new Polyline({ + shape: { + points: points + }, + // silent: true, + z2: 10 + }); + dataGroup.add(line); + data.setItemGraphicEl(dataIndex, line); + return line; + } + function makeSeriesScope$2(seriesModel) { + var smooth = seriesModel.get('smooth', true); + smooth === true && (smooth = DEFAULT_SMOOTH); + smooth = numericToNumber(smooth); + eqNaN(smooth) && (smooth = 0); + return { + smooth: smooth + }; + } + function updateElCommon(el, data, dataIndex, seriesScope) { + el.useStyle(data.getItemVisual(dataIndex, 'style')); + el.style.fill = null; + el.setShape('smooth', seriesScope.smooth); + var itemModel = data.getItemModel(dataIndex); + var emphasisModel = itemModel.getModel('emphasis'); + setStatesStylesFromModel(el, itemModel, 'lineStyle'); + toggleHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + } + // function simpleDiff(oldData, newData, dimensions) { + // let oldLen; + // if (!oldData + // || !oldData.__plProgressive + // || (oldLen = oldData.count()) !== newData.count() + // ) { + // return true; + // } + // let dimLen = dimensions.length; + // for (let i = 0; i < oldLen; i++) { + // for (let j = 0; j < dimLen; j++) { + // if (oldData.get(dimensions[j], i) !== newData.get(dimensions[j], i)) { + // return true; + // } + // } + // } + // return false; + // } + // FIXME put in common util? + function isEmptyValue(val, axisType) { + return axisType === 'category' ? val == null : val == null || isNaN(val); // axisType === 'value' + } + + var ParallelSeriesModel = /** @class */function (_super) { + __extends(ParallelSeriesModel, _super); + function ParallelSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ParallelSeriesModel.type; + _this.visualStyleAccessPath = 'lineStyle'; + _this.visualDrawType = 'stroke'; + return _this; + } + ParallelSeriesModel.prototype.getInitialData = function (option, ecModel) { + return createSeriesData(null, this, { + useEncodeDefaulter: bind(makeDefaultEncode, null, this) + }); + }; + /** + * User can get data raw indices on 'axisAreaSelected' event received. + * + * @return Raw indices + */ + ParallelSeriesModel.prototype.getRawIndicesByActiveState = function (activeState) { + var coordSys = this.coordinateSystem; + var data = this.getData(); + var indices = []; + coordSys.eachActiveState(data, function (theActiveState, dataIndex) { + if (activeState === theActiveState) { + indices.push(data.getRawIndex(dataIndex)); + } + }); + return indices; + }; + ParallelSeriesModel.type = 'series.parallel'; + ParallelSeriesModel.dependencies = ['parallel']; + ParallelSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: 'parallel', + parallelIndex: 0, + label: { + show: false + }, + inactiveOpacity: 0.05, + activeOpacity: 1, + lineStyle: { + width: 1, + opacity: 0.45, + type: 'solid' + }, + emphasis: { + label: { + show: false + } + }, + progressive: 500, + smooth: false, + animationEasing: 'linear' + }; + return ParallelSeriesModel; + }(SeriesModel); + function makeDefaultEncode(seriesModel) { + // The mapping of parallelAxis dimension to data dimension can + // be specified in parallelAxis.option.dim. For example, if + // parallelAxis.option.dim is 'dim3', it mapping to the third + // dimension of data. But `data.encode` has higher priority. + // Moreover, parallelModel.dimension should not be regarded as data + // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6']; + var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex')); + if (!parallelModel) { + return; + } + var encodeDefine = {}; + each(parallelModel.dimensions, function (axisDim) { + var dataDimIndex = convertDimNameToNumber(axisDim); + encodeDefine[axisDim] = dataDimIndex; + }); + return encodeDefine; + } + function convertDimNameToNumber(dimName) { + return +dimName.replace('dim', ''); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var opacityAccessPath$1 = ['lineStyle', 'opacity']; + var parallelVisual = { + seriesType: 'parallel', + reset: function (seriesModel, ecModel) { + var coordSys = seriesModel.coordinateSystem; + var opacityMap = { + normal: seriesModel.get(['lineStyle', 'opacity']), + active: seriesModel.get('activeOpacity'), + inactive: seriesModel.get('inactiveOpacity') + }; + return { + progress: function (params, data) { + coordSys.eachActiveState(data, function (activeState, dataIndex) { + var opacity = opacityMap[activeState]; + if (activeState === 'normal' && data.hasItemOption) { + var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath$1, true); + itemOpacity != null && (opacity = itemOpacity); + } + var existsStyle = data.ensureUniqueItemVisual(dataIndex, 'style'); + existsStyle.opacity = opacity; + }, params.start, params.end); + } + }; + } + }; + + function parallelPreprocessor(option) { + createParallelIfNeeded(option); + mergeAxisOptionFromParallel(option); + } + /** + * Create a parallel coordinate if not exists. + * @inner + */ + function createParallelIfNeeded(option) { + if (option.parallel) { + return; + } + var hasParallelSeries = false; + each(option.series, function (seriesOpt) { + if (seriesOpt && seriesOpt.type === 'parallel') { + hasParallelSeries = true; + } + }); + if (hasParallelSeries) { + option.parallel = [{}]; + } + } + /** + * Merge aixs definition from parallel option (if exists) to axis option. + * @inner + */ + function mergeAxisOptionFromParallel(option) { + var axes = normalizeToArray(option.parallelAxis); + each(axes, function (axisOption) { + if (!isObject(axisOption)) { + return; + } + var parallelIndex = axisOption.parallelIndex || 0; + var parallelOption = normalizeToArray(option.parallel)[parallelIndex]; + if (parallelOption && parallelOption.parallelAxisDefault) { + merge(axisOption, parallelOption.parallelAxisDefault, false); + } + }); + } + + var CLICK_THRESHOLD = 5; // > 4 + var ParallelView$1 = /** @class */function (_super) { + __extends(ParallelView, _super); + function ParallelView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ParallelView.type; + return _this; + } + ParallelView.prototype.render = function (parallelModel, ecModel, api) { + this._model = parallelModel; + this._api = api; + if (!this._handlers) { + this._handlers = {}; + each(handlers, function (handler, eventName) { + api.getZr().on(eventName, this._handlers[eventName] = bind(handler, this)); + }, this); + } + createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate'); + }; + ParallelView.prototype.dispose = function (ecModel, api) { + clear(this, '_throttledDispatchExpand'); + each(this._handlers, function (handler, eventName) { + api.getZr().off(eventName, handler); + }); + this._handlers = null; + }; + /** + * @internal + * @param {Object} [opt] If null, cancel the last action triggering for debounce. + */ + ParallelView.prototype._throttledDispatchExpand = function (opt) { + this._dispatchExpand(opt); + }; + /** + * @internal + */ + ParallelView.prototype._dispatchExpand = function (opt) { + opt && this._api.dispatchAction(extend({ + type: 'parallelAxisExpand' + }, opt)); + }; + ParallelView.type = 'parallel'; + return ParallelView; + }(ComponentView); + var handlers = { + mousedown: function (e) { + if (checkTrigger(this, 'click')) { + this._mouseDownPoint = [e.offsetX, e.offsetY]; + } + }, + mouseup: function (e) { + var mouseDownPoint = this._mouseDownPoint; + if (checkTrigger(this, 'click') && mouseDownPoint) { + var point = [e.offsetX, e.offsetY]; + var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2); + if (dist > CLICK_THRESHOLD) { + return; + } + var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]); + result.behavior !== 'none' && this._dispatchExpand({ + axisExpandWindow: result.axisExpandWindow + }); + } + this._mouseDownPoint = null; + }, + mousemove: function (e) { + // Should do nothing when brushing. + if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) { + return; + } + var model = this._model; + var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]); + var behavior = result.behavior; + behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce')); + this._throttledDispatchExpand(behavior === 'none' ? null // Cancel the last trigger, in case that mouse slide out of the area quickly. + : { + axisExpandWindow: result.axisExpandWindow, + // Jumping uses animation, and sliding suppresses animation. + animation: behavior === 'jump' ? null : { + duration: 0 // Disable animation. + } + }); + } + }; + + function checkTrigger(view, triggerOn) { + var model = view._model; + return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn; + } + + var ParallelModel = /** @class */function (_super) { + __extends(ParallelModel, _super); + function ParallelModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ParallelModel.type; + return _this; + } + ParallelModel.prototype.init = function () { + _super.prototype.init.apply(this, arguments); + this.mergeOption({}); + }; + ParallelModel.prototype.mergeOption = function (newOption) { + var thisOption = this.option; + newOption && merge(thisOption, newOption, true); + this._initDimensions(); + }; + /** + * Whether series or axis is in this coordinate system. + */ + ParallelModel.prototype.contains = function (model, ecModel) { + var parallelIndex = model.get('parallelIndex'); + return parallelIndex != null && ecModel.getComponent('parallel', parallelIndex) === this; + }; + ParallelModel.prototype.setAxisExpand = function (opt) { + each(['axisExpandable', 'axisExpandCenter', 'axisExpandCount', 'axisExpandWidth', 'axisExpandWindow'], function (name) { + if (opt.hasOwnProperty(name)) { + // @ts-ignore FIXME: why "never" inferred in this.option[name]? + this.option[name] = opt[name]; + } + }, this); + }; + ParallelModel.prototype._initDimensions = function () { + var dimensions = this.dimensions = []; + var parallelAxisIndex = this.parallelAxisIndex = []; + var axisModels = filter(this.ecModel.queryComponents({ + mainType: 'parallelAxis' + }), function (axisModel) { + // Can not use this.contains here, because + // initialization has not been completed yet. + return (axisModel.get('parallelIndex') || 0) === this.componentIndex; + }, this); + each(axisModels, function (axisModel) { + dimensions.push('dim' + axisModel.get('dim')); + parallelAxisIndex.push(axisModel.componentIndex); + }); + }; + ParallelModel.type = 'parallel'; + ParallelModel.dependencies = ['parallelAxis']; + ParallelModel.layoutMode = 'box'; + ParallelModel.defaultOption = { + // zlevel: 0, + z: 0, + left: 80, + top: 60, + right: 80, + bottom: 60, + // width: {totalWidth} - left - right, + // height: {totalHeight} - top - bottom, + layout: 'horizontal', + // FIXME + // naming? + axisExpandable: false, + axisExpandCenter: null, + axisExpandCount: 0, + axisExpandWidth: 50, + axisExpandRate: 17, + axisExpandDebounce: 50, + // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full. + // Do not doc to user until necessary. + axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4], + axisExpandTriggerOn: 'click', + parallelAxisDefault: null + }; + return ParallelModel; + }(ComponentModel); + + var ParallelAxis = /** @class */function (_super) { + __extends(ParallelAxis, _super); + function ParallelAxis(dim, scale, coordExtent, axisType, axisIndex) { + var _this = _super.call(this, dim, scale, coordExtent) || this; + _this.type = axisType || 'value'; + _this.axisIndex = axisIndex; + return _this; + } + ParallelAxis.prototype.isHorizontal = function () { + return this.coordinateSystem.getModel().get('layout') !== 'horizontal'; + }; + return ParallelAxis; + }(Axis); + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /** + * Calculate slider move result. + * Usage: + * (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as + * maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`. + * (2) If handle0 is forbidden to cross handle1, set minSpan as `0`. + * + * @param delta Move length. + * @param handleEnds handleEnds[0] can be bigger then handleEnds[1]. + * handleEnds will be modified in this method. + * @param extent handleEnds is restricted by extent. + * extent[0] should less or equals than extent[1]. + * @param handleIndex Can be 'all', means that both move the two handleEnds. + * @param minSpan The range of dataZoom can not be smaller than that. + * If not set, handle0 and cross handle1. If set as a non-negative + * number (including `0`), handles will push each other when reaching + * the minSpan. + * @param maxSpan The range of dataZoom can not be larger than that. + * @return The input handleEnds. + */ + function sliderMove(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) { + delta = delta || 0; + var extentSpan = extent[1] - extent[0]; + // Notice maxSpan and minSpan can be null/undefined. + if (minSpan != null) { + minSpan = restrict(minSpan, [0, extentSpan]); + } + if (maxSpan != null) { + maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0); + } + if (handleIndex === 'all') { + var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]); + handleSpan = restrict(handleSpan, [0, extentSpan]); + minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]); + handleIndex = 0; + } + handleEnds[0] = restrict(handleEnds[0], extent); + handleEnds[1] = restrict(handleEnds[1], extent); + var originalDistSign = getSpanSign(handleEnds, handleIndex); + handleEnds[handleIndex] += delta; + // Restrict in extent. + var extentMinSpan = minSpan || 0; + var realExtent = extent.slice(); + originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan; + handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); + // Expand span. + var currDistSign; + currDistSign = getSpanSign(handleEnds, handleIndex); + if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) { + // If minSpan exists, 'cross' is forbidden. + handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan; + } + // Shrink span. + currDistSign = getSpanSign(handleEnds, handleIndex); + if (maxSpan != null && currDistSign.span > maxSpan) { + handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan; + } + return handleEnds; + } + function getSpanSign(handleEnds, handleIndex) { + var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; + // If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0] + // is at left of handleEnds[1] for non-cross case. + return { + span: Math.abs(dist), + sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1 + }; + } + function restrict(value, extend) { + return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value)); + } + + var each$5 = each; + var mathMin$8 = Math.min; + var mathMax$8 = Math.max; + var mathFloor$1 = Math.floor; + var mathCeil$1 = Math.ceil; + var round$3 = round; + var PI$7 = Math.PI; + var Parallel = /** @class */function () { + function Parallel(parallelModel, ecModel, api) { + this.type = 'parallel'; + /** + * key: dimension + */ + this._axesMap = createHashMap(); + /** + * key: dimension + * value: {position: [], rotation, } + */ + this._axesLayout = {}; + this.dimensions = parallelModel.dimensions; + this._model = parallelModel; + this._init(parallelModel, ecModel, api); + } + Parallel.prototype._init = function (parallelModel, ecModel, api) { + var dimensions = parallelModel.dimensions; + var parallelAxisIndex = parallelModel.parallelAxisIndex; + each$5(dimensions, function (dim, idx) { + var axisIndex = parallelAxisIndex[idx]; + var axisModel = ecModel.getComponent('parallelAxis', axisIndex); + var axis = this._axesMap.set(dim, new ParallelAxis(dim, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisIndex)); + var isCategory = axis.type === 'category'; + axis.onBand = isCategory && axisModel.get('boundaryGap'); + axis.inverse = axisModel.get('inverse'); + // Injection + axisModel.axis = axis; + axis.model = axisModel; + axis.coordinateSystem = axisModel.coordinateSystem = this; + }, this); + }; + /** + * Update axis scale after data processed + */ + Parallel.prototype.update = function (ecModel, api) { + this._updateAxesFromSeries(this._model, ecModel); + }; + Parallel.prototype.containPoint = function (point) { + var layoutInfo = this._makeLayoutInfo(); + var axisBase = layoutInfo.axisBase; + var layoutBase = layoutInfo.layoutBase; + var pixelDimIndex = layoutInfo.pixelDimIndex; + var pAxis = point[1 - pixelDimIndex]; + var pLayout = point[pixelDimIndex]; + return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength; + }; + Parallel.prototype.getModel = function () { + return this._model; + }; + /** + * Update properties from series + */ + Parallel.prototype._updateAxesFromSeries = function (parallelModel, ecModel) { + ecModel.eachSeries(function (seriesModel) { + if (!parallelModel.contains(seriesModel, ecModel)) { + return; + } + var data = seriesModel.getData(); + each$5(this.dimensions, function (dim) { + var axis = this._axesMap.get(dim); + axis.scale.unionExtentFromData(data, data.mapDimension(dim)); + niceScaleExtent(axis.scale, axis.model); + }, this); + }, this); + }; + /** + * Resize the parallel coordinate system. + */ + Parallel.prototype.resize = function (parallelModel, api) { + this._rect = getLayoutRect(parallelModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }); + this._layoutAxes(); + }; + Parallel.prototype.getRect = function () { + return this._rect; + }; + Parallel.prototype._makeLayoutInfo = function () { + var parallelModel = this._model; + var rect = this._rect; + var xy = ['x', 'y']; + var wh = ['width', 'height']; + var layout = parallelModel.get('layout'); + var pixelDimIndex = layout === 'horizontal' ? 0 : 1; + var layoutLength = rect[wh[pixelDimIndex]]; + var layoutExtent = [0, layoutLength]; + var axisCount = this.dimensions.length; + var axisExpandWidth = restrict$1(parallelModel.get('axisExpandWidth'), layoutExtent); + var axisExpandCount = restrict$1(parallelModel.get('axisExpandCount') || 0, [0, axisCount]); + var axisExpandable = parallelModel.get('axisExpandable') && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; + // `axisExpandWindow` is According to the coordinates of [0, axisExpandLength], + // for sake of consider the case that axisCollapseWidth is 0 (when screen is narrow), + // where collapsed axes should be overlapped. + var axisExpandWindow = parallelModel.get('axisExpandWindow'); + var winSize; + if (!axisExpandWindow) { + winSize = restrict$1(axisExpandWidth * (axisExpandCount - 1), layoutExtent); + var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor$1(axisCount / 2); + axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2]; + axisExpandWindow[1] = axisExpandWindow[0] + winSize; + } else { + winSize = restrict$1(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent); + axisExpandWindow[1] = axisExpandWindow[0] + winSize; + } + var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); + // Avoid axisCollapseWidth is too small. + axisCollapseWidth < 3 && (axisCollapseWidth = 0); + // Find the first and last indices > ewin[0] and < ewin[1]. + var winInnerIndices = [mathFloor$1(round$3(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil$1(round$3(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; + // Pos in ec coordinates. + var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0]; + return { + layout: layout, + pixelDimIndex: pixelDimIndex, + layoutBase: rect[xy[pixelDimIndex]], + layoutLength: layoutLength, + axisBase: rect[xy[1 - pixelDimIndex]], + axisLength: rect[wh[1 - pixelDimIndex]], + axisExpandable: axisExpandable, + axisExpandWidth: axisExpandWidth, + axisCollapseWidth: axisCollapseWidth, + axisExpandWindow: axisExpandWindow, + axisCount: axisCount, + winInnerIndices: winInnerIndices, + axisExpandWindow0Pos: axisExpandWindow0Pos + }; + }; + Parallel.prototype._layoutAxes = function () { + var rect = this._rect; + var axes = this._axesMap; + var dimensions = this.dimensions; + var layoutInfo = this._makeLayoutInfo(); + var layout = layoutInfo.layout; + axes.each(function (axis) { + var axisExtent = [0, layoutInfo.axisLength]; + var idx = axis.inverse ? 1 : 0; + axis.setExtent(axisExtent[idx], axisExtent[1 - idx]); + }); + each$5(dimensions, function (dim, idx) { + var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo); + var positionTable = { + horizontal: { + x: posInfo.position, + y: layoutInfo.axisLength + }, + vertical: { + x: 0, + y: posInfo.position + } + }; + var rotationTable = { + horizontal: PI$7 / 2, + vertical: 0 + }; + var position = [positionTable[layout].x + rect.x, positionTable[layout].y + rect.y]; + var rotation = rotationTable[layout]; + var transform = create$1(); + rotate(transform, transform, rotation); + translate(transform, transform, position); + // TODO + // tick layout info + // TODO + // update dimensions info based on axis order. + this._axesLayout[dim] = { + position: position, + rotation: rotation, + transform: transform, + axisNameAvailableWidth: posInfo.axisNameAvailableWidth, + axisLabelShow: posInfo.axisLabelShow, + nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth, + tickDirection: 1, + labelDirection: 1 + }; + }, this); + }; + /** + * Get axis by dim. + */ + Parallel.prototype.getAxis = function (dim) { + return this._axesMap.get(dim); + }; + /** + * Convert a dim value of a single item of series data to Point. + */ + Parallel.prototype.dataToPoint = function (value, dim) { + return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim); + }; + /** + * Travel data for one time, get activeState of each data item. + * @param start the start dataIndex that travel from. + * @param end the next dataIndex of the last dataIndex will be travel. + */ + Parallel.prototype.eachActiveState = function (data, callback, start, end) { + start == null && (start = 0); + end == null && (end = data.count()); + var axesMap = this._axesMap; + var dimensions = this.dimensions; + var dataDimensions = []; + var axisModels = []; + each(dimensions, function (axisDim) { + dataDimensions.push(data.mapDimension(axisDim)); + axisModels.push(axesMap.get(axisDim).model); + }); + var hasActiveSet = this.hasAxisBrushed(); + for (var dataIndex = start; dataIndex < end; dataIndex++) { + var activeState = void 0; + if (!hasActiveSet) { + activeState = 'normal'; + } else { + activeState = 'active'; + var values = data.getValues(dataDimensions, dataIndex); + for (var j = 0, lenj = dimensions.length; j < lenj; j++) { + var state = axisModels[j].getActiveState(values[j]); + if (state === 'inactive') { + activeState = 'inactive'; + break; + } + } + } + callback(activeState, dataIndex); + } + }; + /** + * Whether has any activeSet. + */ + Parallel.prototype.hasAxisBrushed = function () { + var dimensions = this.dimensions; + var axesMap = this._axesMap; + var hasActiveSet = false; + for (var j = 0, lenj = dimensions.length; j < lenj; j++) { + if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') { + hasActiveSet = true; + } + } + return hasActiveSet; + }; + /** + * Convert coords of each axis to Point. + * Return point. For example: [10, 20] + */ + Parallel.prototype.axisCoordToPoint = function (coord, dim) { + var axisLayout = this._axesLayout[dim]; + return applyTransform$1([coord, 0], axisLayout.transform); + }; + /** + * Get axis layout. + */ + Parallel.prototype.getAxisLayout = function (dim) { + return clone(this._axesLayout[dim]); + }; + /** + * @return {Object} {axisExpandWindow, delta, behavior: 'jump' | 'slide' | 'none'}. + */ + Parallel.prototype.getSlidedAxisExpandWindow = function (point) { + var layoutInfo = this._makeLayoutInfo(); + var pixelDimIndex = layoutInfo.pixelDimIndex; + var axisExpandWindow = layoutInfo.axisExpandWindow.slice(); + var winSize = axisExpandWindow[1] - axisExpandWindow[0]; + var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; + // Out of the area of coordinate system. + if (!this.containPoint(point)) { + return { + behavior: 'none', + axisExpandWindow: axisExpandWindow + }; + } + // Convert the point from global to expand coordinates. + var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; + // For dragging operation convenience, the window should not be + // slided when mouse is the center area of the window. + var delta; + var behavior = 'slide'; + var axisCollapseWidth = layoutInfo.axisCollapseWidth; + var triggerArea = this._model.get('axisExpandSlideTriggerArea'); + // But consider touch device, jump is necessary. + var useJump = triggerArea[0] != null; + if (axisCollapseWidth) { + if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) { + behavior = 'jump'; + delta = pointCoord - winSize * triggerArea[2]; + } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) { + behavior = 'jump'; + delta = pointCoord - winSize * (1 - triggerArea[2]); + } else { + (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0); + } + delta *= layoutInfo.axisExpandWidth / axisCollapseWidth; + delta ? sliderMove(delta, axisExpandWindow, extent, 'all') + // Avoid nonsense triger on mousemove. + : behavior = 'none'; + } + // When screen is too narrow, make it visible and slidable, although it is hard to interact. + else { + var winSize2 = axisExpandWindow[1] - axisExpandWindow[0]; + var pos = extent[1] * pointCoord / winSize2; + axisExpandWindow = [mathMax$8(0, pos - winSize2 / 2)]; + axisExpandWindow[1] = mathMin$8(extent[1], axisExpandWindow[0] + winSize2); + axisExpandWindow[0] = axisExpandWindow[1] - winSize2; + } + return { + axisExpandWindow: axisExpandWindow, + behavior: behavior + }; + }; + return Parallel; + }(); + function restrict$1(len, extent) { + return mathMin$8(mathMax$8(len, extent[0]), extent[1]); + } + function layoutAxisWithoutExpand(axisIndex, layoutInfo) { + var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1); + return { + position: step * axisIndex, + axisNameAvailableWidth: step, + axisLabelShow: true + }; + } + function layoutAxisWithExpand(axisIndex, layoutInfo) { + var layoutLength = layoutInfo.layoutLength; + var axisExpandWidth = layoutInfo.axisExpandWidth; + var axisCount = layoutInfo.axisCount; + var axisCollapseWidth = layoutInfo.axisCollapseWidth; + var winInnerIndices = layoutInfo.winInnerIndices; + var position; + var axisNameAvailableWidth = axisCollapseWidth; + var axisLabelShow = false; + var nameTruncateMaxWidth; + if (axisIndex < winInnerIndices[0]) { + position = axisIndex * axisCollapseWidth; + nameTruncateMaxWidth = axisCollapseWidth; + } else if (axisIndex <= winInnerIndices[1]) { + position = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0]; + axisNameAvailableWidth = axisExpandWidth; + axisLabelShow = true; + } else { + position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth; + nameTruncateMaxWidth = axisCollapseWidth; + } + return { + position: position, + axisNameAvailableWidth: axisNameAvailableWidth, + axisLabelShow: axisLabelShow, + nameTruncateMaxWidth: nameTruncateMaxWidth + }; + } + + function createParallelCoordSys(ecModel, api) { + var coordSysList = []; + ecModel.eachComponent('parallel', function (parallelModel, idx) { + var coordSys = new Parallel(parallelModel, ecModel, api); + coordSys.name = 'parallel_' + idx; + coordSys.resize(parallelModel, api); + parallelModel.coordinateSystem = coordSys; + coordSys.model = parallelModel; + coordSysList.push(coordSys); + }); + // Inject the coordinateSystems into seriesModel + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.get('coordinateSystem') === 'parallel') { + var parallelModel = seriesModel.getReferringComponents('parallel', SINGLE_REFERRING).models[0]; + seriesModel.coordinateSystem = parallelModel.coordinateSystem; + } + }); + return coordSysList; + } + var parallelCoordSysCreator = { + create: createParallelCoordSys + }; + + var ParallelAxisModel = /** @class */function (_super) { + __extends(ParallelAxisModel, _super); + function ParallelAxisModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ParallelAxisModel.type; + /** + * @readOnly + */ + _this.activeIntervals = []; + return _this; + } + ParallelAxisModel.prototype.getAreaSelectStyle = function () { + return makeStyleMapper([['fill', 'color'], ['lineWidth', 'borderWidth'], ['stroke', 'borderColor'], ['width', 'width'], ['opacity', 'opacity'] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. + ])(this.getModel('areaSelectStyle')); + }; + /** + * The code of this feature is put on AxisModel but not ParallelAxis, + * because axisModel can be alive after echarts updating but instance of + * ParallelAxis having been disposed. this._activeInterval should be kept + * when action dispatched (i.e. legend click). + * + * @param intervals `interval.length === 0` means set all active. + */ + ParallelAxisModel.prototype.setActiveIntervals = function (intervals) { + var activeIntervals = this.activeIntervals = clone(intervals); + // Normalize + if (activeIntervals) { + for (var i = activeIntervals.length - 1; i >= 0; i--) { + asc(activeIntervals[i]); + } + } + }; + /** + * @param value When only attempting detect whether 'no activeIntervals set', + * `value` is not needed to be input. + */ + ParallelAxisModel.prototype.getActiveState = function (value) { + var activeIntervals = this.activeIntervals; + if (!activeIntervals.length) { + return 'normal'; + } + if (value == null || isNaN(+value)) { + return 'inactive'; + } + // Simple optimization + if (activeIntervals.length === 1) { + var interval = activeIntervals[0]; + if (interval[0] <= value && value <= interval[1]) { + return 'active'; + } + } else { + for (var i = 0, len = activeIntervals.length; i < len; i++) { + if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) { + return 'active'; + } + } + } + return 'inactive'; + }; + return ParallelAxisModel; + }(ComponentModel); + mixin(ParallelAxisModel, AxisModelCommonMixin); + + var BRUSH_PANEL_GLOBAL = true; + var mathMin$9 = Math.min; + var mathMax$9 = Math.max; + var mathPow$2 = Math.pow; + var COVER_Z = 10000; + var UNSELECT_THRESHOLD = 6; + var MIN_RESIZE_LINE_WIDTH = 6; + var MUTEX_RESOURCE_KEY = 'globalPan'; + var DIRECTION_MAP = { + w: [0, 0], + e: [0, 1], + n: [1, 0], + s: [1, 1] + }; + var CURSOR_MAP = { + w: 'ew', + e: 'ew', + n: 'ns', + s: 'ns', + ne: 'nesw', + sw: 'nesw', + nw: 'nwse', + se: 'nwse' + }; + var DEFAULT_BRUSH_OPT = { + brushStyle: { + lineWidth: 2, + stroke: 'rgba(210,219,238,0.3)', + fill: '#D2DBEE' + }, + transformable: true, + brushMode: 'single', + removeOnClick: false + }; + var baseUID = 0; + /** + * params: + * areas: Array., coord relates to container group, + * If no container specified, to global. + * opt { + * isEnd: boolean, + * removeOnClick: boolean + * } + */ + var BrushController = /** @class */function (_super) { + __extends(BrushController, _super); + function BrushController(zr) { + var _this = _super.call(this) || this; + /** + * @internal + */ + _this._track = []; + /** + * @internal + */ + _this._covers = []; + _this._handlers = {}; + if ("development" !== 'production') { + assert(zr); + } + _this._zr = zr; + _this.group = new Group(); + _this._uid = 'brushController_' + baseUID++; + each(pointerHandlers, function (handler, eventName) { + this._handlers[eventName] = bind(handler, this); + }, _this); + return _this; + } + /** + * If set to `false`, select disabled. + */ + BrushController.prototype.enableBrush = function (brushOption) { + if ("development" !== 'production') { + assert(this._mounted); + } + this._brushType && this._doDisableBrush(); + brushOption.brushType && this._doEnableBrush(brushOption); + return this; + }; + BrushController.prototype._doEnableBrush = function (brushOption) { + var zr = this._zr; + // Consider roam, which takes globalPan too. + if (!this._enableGlobalPan) { + take(zr, MUTEX_RESOURCE_KEY, this._uid); + } + each(this._handlers, function (handler, eventName) { + zr.on(eventName, handler); + }); + this._brushType = brushOption.brushType; + this._brushOption = merge(clone(DEFAULT_BRUSH_OPT), brushOption, true); + }; + BrushController.prototype._doDisableBrush = function () { + var zr = this._zr; + release(zr, MUTEX_RESOURCE_KEY, this._uid); + each(this._handlers, function (handler, eventName) { + zr.off(eventName, handler); + }); + this._brushType = this._brushOption = null; + }; + /** + * @param panelOpts If not pass, it is global brush. + */ + BrushController.prototype.setPanels = function (panelOpts) { + if (panelOpts && panelOpts.length) { + var panels_1 = this._panels = {}; + each(panelOpts, function (panelOpts) { + panels_1[panelOpts.panelId] = clone(panelOpts); + }); + } else { + this._panels = null; + } + return this; + }; + BrushController.prototype.mount = function (opt) { + opt = opt || {}; + if ("development" !== 'production') { + this._mounted = true; // should be at first. + } + + this._enableGlobalPan = opt.enableGlobalPan; + var thisGroup = this.group; + this._zr.add(thisGroup); + thisGroup.attr({ + x: opt.x || 0, + y: opt.y || 0, + rotation: opt.rotation || 0, + scaleX: opt.scaleX || 1, + scaleY: opt.scaleY || 1 + }); + this._transform = thisGroup.getLocalTransform(); + return this; + }; + // eachCover(cb, context): void { + // each(this._covers, cb, context); + // } + /** + * Update covers. + * @param coverConfigList + * If coverConfigList is null/undefined, all covers removed. + */ + BrushController.prototype.updateCovers = function (coverConfigList) { + if ("development" !== 'production') { + assert(this._mounted); + } + coverConfigList = map(coverConfigList, function (coverConfig) { + return merge(clone(DEFAULT_BRUSH_OPT), coverConfig, true); + }); + var tmpIdPrefix = '\0-brush-index-'; + var oldCovers = this._covers; + var newCovers = this._covers = []; + var controller = this; + var creatingCover = this._creatingCover; + new DataDiffer(oldCovers, coverConfigList, oldGetKey, getKey).add(addOrUpdate).update(addOrUpdate).remove(remove).execute(); + return this; + function getKey(brushOption, index) { + return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + '-' + brushOption.brushType; + } + function oldGetKey(cover, index) { + return getKey(cover.__brushOption, index); + } + function addOrUpdate(newIndex, oldIndex) { + var newBrushInternal = coverConfigList[newIndex]; + // Consider setOption in event listener of brushSelect, + // where updating cover when creating should be forbidden. + if (oldIndex != null && oldCovers[oldIndex] === creatingCover) { + newCovers[newIndex] = oldCovers[oldIndex]; + } else { + var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushInternal, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushInternal)); + updateCoverAfterCreation(controller, cover); + } + } + function remove(oldIndex) { + if (oldCovers[oldIndex] !== creatingCover) { + controller.group.remove(oldCovers[oldIndex]); + } + } + }; + BrushController.prototype.unmount = function () { + if ("development" !== 'production') { + if (!this._mounted) { + return; + } + } + this.enableBrush(false); + // container may 'removeAll' outside. + clearCovers(this); + this._zr.remove(this.group); + if ("development" !== 'production') { + this._mounted = false; // should be at last. + } + + return this; + }; + BrushController.prototype.dispose = function () { + this.unmount(); + this.off(); + }; + return BrushController; + }(Eventful); + function createCover(controller, brushOption) { + var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption); + cover.__brushOption = brushOption; + updateZ(cover, brushOption); + controller.group.add(cover); + return cover; + } + function endCreating(controller, creatingCover) { + var coverRenderer = getCoverRenderer(creatingCover); + if (coverRenderer.endCreating) { + coverRenderer.endCreating(controller, creatingCover); + updateZ(creatingCover, creatingCover.__brushOption); + } + return creatingCover; + } + function updateCoverShape(controller, cover) { + var brushOption = cover.__brushOption; + getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption); + } + function updateZ(cover, brushOption) { + var z = brushOption.z; + z == null && (z = COVER_Z); + cover.traverse(function (el) { + el.z = z; + el.z2 = z; // Consider in given container. + }); + } + + function updateCoverAfterCreation(controller, cover) { + getCoverRenderer(cover).updateCommon(controller, cover); + updateCoverShape(controller, cover); + } + function getCoverRenderer(cover) { + return coverRenderers[cover.__brushOption.brushType]; + } + // return target panel or `true` (means global panel) + function getPanelByPoint(controller, e, localCursorPoint) { + var panels = controller._panels; + if (!panels) { + return BRUSH_PANEL_GLOBAL; // Global panel + } + + var panel; + var transform = controller._transform; + each(panels, function (pn) { + pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn); + }); + return panel; + } + // Return a panel or true + function getPanelByCover(controller, cover) { + var panels = controller._panels; + if (!panels) { + return BRUSH_PANEL_GLOBAL; // Global panel + } + + var panelId = cover.__brushOption.panelId; + // User may give cover without coord sys info, + // which is then treated as global panel. + return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL; + } + function clearCovers(controller) { + var covers = controller._covers; + var originalLength = covers.length; + each(covers, function (cover) { + controller.group.remove(cover); + }, controller); + covers.length = 0; + return !!originalLength; + } + function trigger$1(controller, opt) { + var areas = map(controller._covers, function (cover) { + var brushOption = cover.__brushOption; + var range = clone(brushOption.range); + return { + brushType: brushOption.brushType, + panelId: brushOption.panelId, + range: range + }; + }); + controller.trigger('brush', { + areas: areas, + isEnd: !!opt.isEnd, + removeOnClick: !!opt.removeOnClick + }); + } + function shouldShowCover(controller) { + var track = controller._track; + if (!track.length) { + return false; + } + var p2 = track[track.length - 1]; + var p1 = track[0]; + var dx = p2[0] - p1[0]; + var dy = p2[1] - p1[1]; + var dist = mathPow$2(dx * dx + dy * dy, 0.5); + return dist > UNSELECT_THRESHOLD; + } + function getTrackEnds(track) { + var tail = track.length - 1; + tail < 0 && (tail = 0); + return [track[0], track[tail]]; + } + function createBaseRectCover(rectRangeConverter, controller, brushOption, edgeNameSequences) { + var cover = new Group(); + cover.add(new Rect({ + name: 'main', + style: makeStyle(brushOption), + silent: true, + draggable: true, + cursor: 'move', + drift: curry(driftRect, rectRangeConverter, controller, cover, ['n', 's', 'w', 'e']), + ondragend: curry(trigger$1, controller, { + isEnd: true + }) + })); + each(edgeNameSequences, function (nameSequence) { + cover.add(new Rect({ + name: nameSequence.join(''), + style: { + opacity: 0 + }, + draggable: true, + silent: true, + invisible: true, + drift: curry(driftRect, rectRangeConverter, controller, cover, nameSequence), + ondragend: curry(trigger$1, controller, { + isEnd: true + }) + })); + }); + return cover; + } + function updateBaseRect(controller, cover, localRange, brushOption) { + var lineWidth = brushOption.brushStyle.lineWidth || 0; + var handleSize = mathMax$9(lineWidth, MIN_RESIZE_LINE_WIDTH); + var x = localRange[0][0]; + var y = localRange[1][0]; + var xa = x - lineWidth / 2; + var ya = y - lineWidth / 2; + var x2 = localRange[0][1]; + var y2 = localRange[1][1]; + var x2a = x2 - handleSize + lineWidth / 2; + var y2a = y2 - handleSize + lineWidth / 2; + var width = x2 - x; + var height = y2 - y; + var widtha = width + lineWidth; + var heighta = height + lineWidth; + updateRectShape(controller, cover, 'main', x, y, width, height); + if (brushOption.transformable) { + updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta); + updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta); + updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize); + updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize); + updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize); + updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize); + updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize); + updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize); + } + } + function updateCommon(controller, cover) { + var brushOption = cover.__brushOption; + var transformable = brushOption.transformable; + var mainEl = cover.childAt(0); + mainEl.useStyle(makeStyle(brushOption)); + mainEl.attr({ + silent: !transformable, + cursor: transformable ? 'move' : 'default' + }); + each([['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']], function (nameSequence) { + var el = cover.childOfName(nameSequence.join('')); + var globalDir = nameSequence.length === 1 ? getGlobalDirection1(controller, nameSequence[0]) : getGlobalDirection2(controller, nameSequence); + el && el.attr({ + silent: !transformable, + invisible: !transformable, + cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null + }); + }); + } + function updateRectShape(controller, cover, name, x, y, w, h) { + var el = cover.childOfName(name); + el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]]))); + } + function makeStyle(brushOption) { + return defaults({ + strokeNoScale: true + }, brushOption.brushStyle); + } + function formatRectRange(x, y, x2, y2) { + var min = [mathMin$9(x, x2), mathMin$9(y, y2)]; + var max = [mathMax$9(x, x2), mathMax$9(y, y2)]; + return [[min[0], max[0]], [min[1], max[1]] // y range + ]; + } + + function getTransform$1(controller) { + return getTransform(controller.group); + } + function getGlobalDirection1(controller, localDirName) { + var map = { + w: 'left', + e: 'right', + n: 'top', + s: 'bottom' + }; + var inverseMap = { + left: 'w', + right: 'e', + top: 'n', + bottom: 's' + }; + var dir = transformDirection(map[localDirName], getTransform$1(controller)); + return inverseMap[dir]; + } + function getGlobalDirection2(controller, localDirNameSeq) { + var globalDir = [getGlobalDirection1(controller, localDirNameSeq[0]), getGlobalDirection1(controller, localDirNameSeq[1])]; + (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse(); + return globalDir.join(''); + } + function driftRect(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) { + var brushOption = cover.__brushOption; + var rectRange = rectRangeConverter.toRectRange(brushOption.range); + var localDelta = toLocalDelta(controller, dx, dy); + each(dirNameSequence, function (dirName) { + var ind = DIRECTION_MAP[dirName]; + rectRange[ind[0]][ind[1]] += localDelta[ind[0]]; + }); + brushOption.range = rectRangeConverter.fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1])); + updateCoverAfterCreation(controller, cover); + trigger$1(controller, { + isEnd: false + }); + } + function driftPolygon(controller, cover, dx, dy) { + var range = cover.__brushOption.range; + var localDelta = toLocalDelta(controller, dx, dy); + each(range, function (point) { + point[0] += localDelta[0]; + point[1] += localDelta[1]; + }); + updateCoverAfterCreation(controller, cover); + trigger$1(controller, { + isEnd: false + }); + } + function toLocalDelta(controller, dx, dy) { + var thisGroup = controller.group; + var localD = thisGroup.transformCoordToLocal(dx, dy); + var localZero = thisGroup.transformCoordToLocal(0, 0); + return [localD[0] - localZero[0], localD[1] - localZero[1]]; + } + function clipByPanel(controller, cover, data) { + var panel = getPanelByCover(controller, cover); + return panel && panel !== BRUSH_PANEL_GLOBAL ? panel.clipPath(data, controller._transform) : clone(data); + } + function pointsToRect(points) { + var xmin = mathMin$9(points[0][0], points[1][0]); + var ymin = mathMin$9(points[0][1], points[1][1]); + var xmax = mathMax$9(points[0][0], points[1][0]); + var ymax = mathMax$9(points[0][1], points[1][1]); + return { + x: xmin, + y: ymin, + width: xmax - xmin, + height: ymax - ymin + }; + } + function resetCursor(controller, e, localCursorPoint) { + if ( + // Check active + !controller._brushType + // resetCursor should be always called when mouse is in zr area, + // but not called when mouse is out of zr area to avoid bad influence + // if `mousemove`, `mouseup` are triggered from `document` event. + || isOutsideZrArea(controller, e.offsetX, e.offsetY)) { + return; + } + var zr = controller._zr; + var covers = controller._covers; + var currPanel = getPanelByPoint(controller, e, localCursorPoint); + // Check whether in covers. + if (!controller._dragging) { + for (var i = 0; i < covers.length; i++) { + var brushOption = covers[i].__brushOption; + if (currPanel && (currPanel === BRUSH_PANEL_GLOBAL || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) { + // Use cursor style set on cover. + return; + } + } + } + currPanel && zr.setCursorStyle('crosshair'); + } + function preventDefault(e) { + var rawE = e.event; + rawE.preventDefault && rawE.preventDefault(); + } + function mainShapeContain(cover, x, y) { + return cover.childOfName('main').contain(x, y); + } + function updateCoverByMouse(controller, e, localCursorPoint, isEnd) { + var creatingCover = controller._creatingCover; + var panel = controller._creatingPanel; + var thisBrushOption = controller._brushOption; + var eventParams; + controller._track.push(localCursorPoint.slice()); + if (shouldShowCover(controller) || creatingCover) { + if (panel && !creatingCover) { + thisBrushOption.brushMode === 'single' && clearCovers(controller); + var brushOption = clone(thisBrushOption); + brushOption.brushType = determineBrushType(brushOption.brushType, panel); + brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId; + creatingCover = controller._creatingCover = createCover(controller, brushOption); + controller._covers.push(creatingCover); + } + if (creatingCover) { + var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)]; + var coverBrushOption = creatingCover.__brushOption; + coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track)); + if (isEnd) { + endCreating(controller, creatingCover); + coverRenderer.updateCommon(controller, creatingCover); + } + updateCoverShape(controller, creatingCover); + eventParams = { + isEnd: isEnd + }; + } + } else if (isEnd && thisBrushOption.brushMode === 'single' && thisBrushOption.removeOnClick) { + // Help user to remove covers easily, only by a tiny drag, in 'single' mode. + // But a single click do not clear covers, because user may have casual + // clicks (for example, click on other component and do not expect covers + // disappear). + // Only some cover removed, trigger action, but not every click trigger action. + if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) { + eventParams = { + isEnd: isEnd, + removeOnClick: true + }; + } + } + return eventParams; + } + function determineBrushType(brushType, panel) { + if (brushType === 'auto') { + if ("development" !== 'production') { + assert(panel && panel.defaultBrushType, 'MUST have defaultBrushType when brushType is "atuo"'); + } + return panel.defaultBrushType; + } + return brushType; + } + var pointerHandlers = { + mousedown: function (e) { + if (this._dragging) { + // In case some browser do not support globalOut, + // and release mouse out side the browser. + handleDragEnd(this, e); + } else if (!e.target || !e.target.draggable) { + preventDefault(e); + var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY); + this._creatingCover = null; + var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint); + if (panel) { + this._dragging = true; + this._track = [localCursorPoint.slice()]; + } + } + }, + mousemove: function (e) { + var x = e.offsetX; + var y = e.offsetY; + var localCursorPoint = this.group.transformCoordToLocal(x, y); + resetCursor(this, e, localCursorPoint); + if (this._dragging) { + preventDefault(e); + var eventParams = updateCoverByMouse(this, e, localCursorPoint, false); + eventParams && trigger$1(this, eventParams); + } + }, + mouseup: function (e) { + handleDragEnd(this, e); + } + }; + function handleDragEnd(controller, e) { + if (controller._dragging) { + preventDefault(e); + var x = e.offsetX; + var y = e.offsetY; + var localCursorPoint = controller.group.transformCoordToLocal(x, y); + var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true); + controller._dragging = false; + controller._track = []; + controller._creatingCover = null; + // trigger event should be at final, after procedure will be nested. + eventParams && trigger$1(controller, eventParams); + } + } + function isOutsideZrArea(controller, x, y) { + var zr = controller._zr; + return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight(); + } + /** + * key: brushType + */ + var coverRenderers = { + lineX: getLineRenderer(0), + lineY: getLineRenderer(1), + rect: { + createCover: function (controller, brushOption) { + function returnInput(range) { + return range; + } + return createBaseRectCover({ + toRectRange: returnInput, + fromRectRange: returnInput + }, controller, brushOption, [['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']]); + }, + getCreatingRange: function (localTrack) { + var ends = getTrackEnds(localTrack); + return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]); + }, + updateCoverShape: function (controller, cover, localRange, brushOption) { + updateBaseRect(controller, cover, localRange, brushOption); + }, + updateCommon: updateCommon, + contain: mainShapeContain + }, + polygon: { + createCover: function (controller, brushOption) { + var cover = new Group(); + // Do not use graphic.Polygon because graphic.Polyline do not close the + // border of the shape when drawing, which is a better experience for user. + cover.add(new Polyline({ + name: 'main', + style: makeStyle(brushOption), + silent: true + })); + return cover; + }, + getCreatingRange: function (localTrack) { + return localTrack; + }, + endCreating: function (controller, cover) { + cover.remove(cover.childAt(0)); + // Use graphic.Polygon close the shape. + cover.add(new Polygon({ + name: 'main', + draggable: true, + drift: curry(driftPolygon, controller, cover), + ondragend: curry(trigger$1, controller, { + isEnd: true + }) + })); + }, + updateCoverShape: function (controller, cover, localRange, brushOption) { + cover.childAt(0).setShape({ + points: clipByPanel(controller, cover, localRange) + }); + }, + updateCommon: updateCommon, + contain: mainShapeContain + } + }; + function getLineRenderer(xyIndex) { + return { + createCover: function (controller, brushOption) { + return createBaseRectCover({ + toRectRange: function (range) { + var rectRange = [range, [0, 100]]; + xyIndex && rectRange.reverse(); + return rectRange; + }, + fromRectRange: function (rectRange) { + return rectRange[xyIndex]; + } + }, controller, brushOption, [[['w'], ['e']], [['n'], ['s']]][xyIndex]); + }, + getCreatingRange: function (localTrack) { + var ends = getTrackEnds(localTrack); + var min = mathMin$9(ends[0][xyIndex], ends[1][xyIndex]); + var max = mathMax$9(ends[0][xyIndex], ends[1][xyIndex]); + return [min, max]; + }, + updateCoverShape: function (controller, cover, localRange, brushOption) { + var otherExtent; + // If brushWidth not specified, fit the panel. + var panel = getPanelByCover(controller, cover); + if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) { + otherExtent = panel.getLinearBrushOtherExtent(xyIndex); + } else { + var zr = controller._zr; + otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]]; + } + var rectRange = [localRange, otherExtent]; + xyIndex && rectRange.reverse(); + updateBaseRect(controller, cover, rectRange, brushOption); + }, + updateCommon: updateCommon, + contain: mainShapeContain + }; + } + + function makeRectPanelClipPath(rect) { + rect = normalizeRect(rect); + return function (localPoints) { + return clipPointsByRect(localPoints, rect); + }; + } + function makeLinearBrushOtherExtent(rect, specifiedXYIndex) { + rect = normalizeRect(rect); + return function (xyIndex) { + var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex; + var brushWidth = idx ? rect.width : rect.height; + var base = idx ? rect.x : rect.y; + return [base, base + (brushWidth || 0)]; + }; + } + function makeRectIsTargetByCursor(rect, api, targetModel) { + var boundingRect = normalizeRect(rect); + return function (e, localCursorPoint) { + return boundingRect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e, api, targetModel); + }; + } + // Consider width/height is negative. + function normalizeRect(rect) { + return BoundingRect.create(rect); + } + + var elementList = ['axisLine', 'axisTickLabel', 'axisName']; + var ParallelAxisView = /** @class */function (_super) { + __extends(ParallelAxisView, _super); + function ParallelAxisView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ParallelAxisView.type; + return _this; + } + ParallelAxisView.prototype.init = function (ecModel, api) { + _super.prototype.init.apply(this, arguments); + (this._brushController = new BrushController(api.getZr())).on('brush', bind(this._onBrush, this)); + }; + ParallelAxisView.prototype.render = function (axisModel, ecModel, api, payload) { + if (fromAxisAreaSelect(axisModel, ecModel, payload)) { + return; + } + this.axisModel = axisModel; + this.api = api; + this.group.removeAll(); + var oldAxisGroup = this._axisGroup; + this._axisGroup = new Group(); + this.group.add(this._axisGroup); + if (!axisModel.get('show')) { + return; + } + var coordSysModel = getCoordSysModel(axisModel, ecModel); + var coordSys = coordSysModel.coordinateSystem; + var areaSelectStyle = axisModel.getAreaSelectStyle(); + var areaWidth = areaSelectStyle.width; + var dim = axisModel.axis.dim; + var axisLayout = coordSys.getAxisLayout(dim); + var builderOpt = extend({ + strokeContainThreshold: areaWidth + }, axisLayout); + var axisBuilder = new AxisBuilder(axisModel, builderOpt); + each(elementList, axisBuilder.add, axisBuilder); + this._axisGroup.add(axisBuilder.getGroup()); + this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api); + groupTransition(oldAxisGroup, this._axisGroup, axisModel); + }; + // /** + // * @override + // */ + // updateVisual(axisModel, ecModel, api, payload) { + // this._brushController && this._brushController + // .updateCovers(getCoverInfoList(axisModel)); + // } + ParallelAxisView.prototype._refreshBrushController = function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) { + // After filtering, axis may change, select area needs to be update. + var extent = axisModel.axis.getExtent(); + var extentLen = extent[1] - extent[0]; + var extra = Math.min(30, Math.abs(extentLen) * 0.1); // Arbitrary value. + // width/height might be negative, which will be + // normalized in BoundingRect. + var rect = BoundingRect.create({ + x: extent[0], + y: -areaWidth / 2, + width: extentLen, + height: areaWidth + }); + rect.x -= extra; + rect.width += 2 * extra; + this._brushController.mount({ + enableGlobalPan: true, + rotation: builderOpt.rotation, + x: builderOpt.position[0], + y: builderOpt.position[1] + }).setPanels([{ + panelId: 'pl', + clipPath: makeRectPanelClipPath(rect), + isTargetByCursor: makeRectIsTargetByCursor(rect, api, coordSysModel), + getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect, 0) + }]).enableBrush({ + brushType: 'lineX', + brushStyle: areaSelectStyle, + removeOnClick: true + }).updateCovers(getCoverInfoList(axisModel)); + }; + ParallelAxisView.prototype._onBrush = function (eventParam) { + var coverInfoList = eventParam.areas; + // Do not cache these object, because the mey be changed. + var axisModel = this.axisModel; + var axis = axisModel.axis; + var intervals = map(coverInfoList, function (coverInfo) { + return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)]; + }); + // If realtime is true, action is not dispatched on drag end, because + // the drag end emits the same params with the last drag move event, + // and may have some delay when using touch pad. + if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) { + // jshint ignore:line + this.api.dispatchAction({ + type: 'axisAreaSelect', + parallelAxisId: axisModel.id, + intervals: intervals + }); + } + }; + ParallelAxisView.prototype.dispose = function () { + this._brushController.dispose(); + }; + ParallelAxisView.type = 'parallelAxis'; + return ParallelAxisView; + }(ComponentView); + function fromAxisAreaSelect(axisModel, ecModel, payload) { + return payload && payload.type === 'axisAreaSelect' && ecModel.findComponents({ + mainType: 'parallelAxis', + query: payload + })[0] === axisModel; + } + function getCoverInfoList(axisModel) { + var axis = axisModel.axis; + return map(axisModel.activeIntervals, function (interval) { + return { + brushType: 'lineX', + panelId: 'pl', + range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)] + }; + }); + } + function getCoordSysModel(axisModel, ecModel) { + return ecModel.getComponent('parallel', axisModel.get('parallelIndex')); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var actionInfo$1 = { + type: 'axisAreaSelect', + event: 'axisAreaSelected' + // update: 'updateVisual' + }; + + function installParallelActions(registers) { + registers.registerAction(actionInfo$1, function (payload, ecModel) { + ecModel.eachComponent({ + mainType: 'parallelAxis', + query: payload + }, function (parallelAxisModel) { + parallelAxisModel.axis.model.setActiveIntervals(payload.intervals); + }); + }); + /** + * @payload + */ + registers.registerAction('parallelAxisExpand', function (payload, ecModel) { + ecModel.eachComponent({ + mainType: 'parallel', + query: payload + }, function (parallelModel) { + parallelModel.setAxisExpand(payload); + }); + }); + } + + var defaultAxisOption = { + type: 'value', + areaSelectStyle: { + width: 20, + borderWidth: 1, + borderColor: 'rgba(160,197,232)', + color: 'rgba(160,197,232)', + opacity: 0.3 + }, + realtime: true, + z: 10 + }; + function install$g(registers) { + registers.registerComponentView(ParallelView$1); + registers.registerComponentModel(ParallelModel); + registers.registerCoordinateSystem('parallel', parallelCoordSysCreator); + registers.registerPreprocessor(parallelPreprocessor); + registers.registerComponentModel(ParallelAxisModel); + registers.registerComponentView(ParallelAxisView); + axisModelCreator(registers, 'parallel', ParallelAxisModel, defaultAxisOption); + installParallelActions(registers); + } + + function install$h(registers) { + use(install$g); + registers.registerChartView(ParallelView); + registers.registerSeriesModel(ParallelSeriesModel); + registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, parallelVisual); + } + + var SankeyPathShape = /** @class */function () { + function SankeyPathShape() { + 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; + } + return SankeyPathShape; + }(); + var SankeyPath = /** @class */function (_super) { + __extends(SankeyPath, _super); + function SankeyPath(opts) { + return _super.call(this, opts) || this; + } + SankeyPath.prototype.getDefaultShape = function () { + return new SankeyPathShape(); + }; + SankeyPath.prototype.buildPath = function (ctx, shape) { + var extent = shape.extent; + ctx.moveTo(shape.x1, shape.y1); + ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2); + if (shape.orient === 'vertical') { + ctx.lineTo(shape.x2 + extent, shape.y2); + ctx.bezierCurveTo(shape.cpx2 + extent, shape.cpy2, shape.cpx1 + extent, shape.cpy1, shape.x1 + extent, shape.y1); + } else { + ctx.lineTo(shape.x2, shape.y2 + extent); + ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent, shape.cpx1, shape.cpy1 + extent, shape.x1, shape.y1 + extent); + } + ctx.closePath(); + }; + SankeyPath.prototype.highlight = function () { + enterEmphasis(this); + }; + SankeyPath.prototype.downplay = function () { + leaveEmphasis(this); + }; + return SankeyPath; + }(Path); + var SankeyView = /** @class */function (_super) { + __extends(SankeyView, _super); + function SankeyView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SankeyView.type; + _this._focusAdjacencyDisabled = false; + return _this; + } + SankeyView.prototype.render = function (seriesModel, ecModel, api) { + var sankeyView = this; + var graph = seriesModel.getGraph(); + var group = this.group; + var layoutInfo = seriesModel.layoutInfo; + // view width + var width = layoutInfo.width; + // view height + var height = layoutInfo.height; + var nodeData = seriesModel.getData(); + var edgeData = seriesModel.getData('edge'); + var orient = seriesModel.get('orient'); + this._model = seriesModel; + group.removeAll(); + group.x = layoutInfo.x; + group.y = layoutInfo.y; + // generate a bezire Curve for each edge + graph.eachEdge(function (edge) { + var curve = new SankeyPath(); + var ecData = getECData(curve); + ecData.dataIndex = edge.dataIndex; + ecData.seriesIndex = seriesModel.seriesIndex; + ecData.dataType = 'edge'; + var edgeModel = edge.getModel(); + var lineStyleModel = edgeModel.getModel('lineStyle'); + var curvature = lineStyleModel.get('curveness'); + var n1Layout = edge.node1.getLayout(); + var node1Model = edge.node1.getModel(); + var dragX1 = node1Model.get('localX'); + var dragY1 = node1Model.get('localY'); + var n2Layout = edge.node2.getLayout(); + var node2Model = edge.node2.getModel(); + var dragX2 = node2Model.get('localX'); + var dragY2 = node2Model.get('localY'); + var edgeLayout = edge.getLayout(); + var x1; + var y1; + var x2; + var y2; + var cpx1; + var cpy1; + var cpx2; + var cpy2; + curve.shape.extent = Math.max(1, edgeLayout.dy); + curve.shape.orient = orient; + if (orient === 'vertical') { + x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy; + y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy; + x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty; + y2 = dragY2 != null ? dragY2 * height : n2Layout.y; + cpx1 = x1; + cpy1 = y1 * (1 - curvature) + y2 * curvature; + cpx2 = x2; + cpy2 = y1 * curvature + y2 * (1 - curvature); + } else { + x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx; + y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy; + x2 = dragX2 != null ? dragX2 * width : n2Layout.x; + y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty; + cpx1 = x1 * (1 - curvature) + x2 * curvature; + cpy1 = y1; + cpx2 = x1 * curvature + x2 * (1 - curvature); + cpy2 = y2; + } + curve.setShape({ + x1: x1, + y1: y1, + x2: x2, + y2: y2, + cpx1: cpx1, + cpy1: cpy1, + cpx2: cpx2, + cpy2: cpy2 + }); + curve.useStyle(lineStyleModel.getItemStyle()); + // Special color, use source node color or target node color + applyCurveStyle(curve.style, orient, edge); + var defaultEdgeLabelText = "" + edgeModel.get('value'); + var edgeLabelStateModels = getLabelStatesModels(edgeModel, 'edgeLabel'); + setLabelStyle(curve, edgeLabelStateModels, { + labelFetcher: { + getFormattedLabel: function (dataIndex, stateName, dataType, labelDimIndex, formatter, extendParams) { + return seriesModel.getFormattedLabel(dataIndex, stateName, 'edge', labelDimIndex, + // ensure edgeLabel formatter is provided + // to prevent the inheritance from `label.formatter` of the series + retrieve3(formatter, edgeLabelStateModels.normal && edgeLabelStateModels.normal.get('formatter'), defaultEdgeLabelText), extendParams); + } + }, + labelDataIndex: edge.dataIndex, + defaultText: defaultEdgeLabelText + }); + curve.setTextConfig({ + position: 'inside' + }); + var emphasisModel = edgeModel.getModel('emphasis'); + setStatesStylesFromModel(curve, edgeModel, 'lineStyle', function (model) { + var style = model.getItemStyle(); + applyCurveStyle(style, orient, edge); + return style; + }); + group.add(curve); + edgeData.setItemGraphicEl(edge.dataIndex, curve); + var focus = emphasisModel.get('focus'); + toggleHoverEmphasis(curve, focus === 'adjacency' ? edge.getAdjacentDataIndices() : focus === 'trajectory' ? edge.getTrajectoryDataIndices() : focus, emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + }); + // Generate a rect for each node + graph.eachNode(function (node) { + var layout = node.getLayout(); + var itemModel = node.getModel(); + var dragX = itemModel.get('localX'); + var dragY = itemModel.get('localY'); + var emphasisModel = itemModel.getModel('emphasis'); + var rect = new Rect({ + shape: { + x: dragX != null ? dragX * width : layout.x, + y: dragY != null ? dragY * height : layout.y, + width: layout.dx, + height: layout.dy + }, + style: itemModel.getModel('itemStyle').getItemStyle(), + z2: 10 + }); + setLabelStyle(rect, getLabelStatesModels(itemModel), { + labelFetcher: { + getFormattedLabel: function (dataIndex, stateName) { + return seriesModel.getFormattedLabel(dataIndex, stateName, 'node'); + } + }, + labelDataIndex: node.dataIndex, + defaultText: node.id + }); + rect.disableLabelAnimation = true; + rect.setStyle('fill', node.getVisual('color')); + rect.setStyle('decal', node.getVisual('style').decal); + setStatesStylesFromModel(rect, itemModel); + group.add(rect); + nodeData.setItemGraphicEl(node.dataIndex, rect); + getECData(rect).dataType = 'node'; + var focus = emphasisModel.get('focus'); + toggleHoverEmphasis(rect, focus === 'adjacency' ? node.getAdjacentDataIndices() : focus === 'trajectory' ? node.getTrajectoryDataIndices() : focus, emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + }); + nodeData.eachItemGraphicEl(function (el, dataIndex) { + var itemModel = nodeData.getItemModel(dataIndex); + if (itemModel.get('draggable')) { + el.drift = function (dx, dy) { + sankeyView._focusAdjacencyDisabled = true; + this.shape.x += dx; + this.shape.y += dy; + this.dirty(); + api.dispatchAction({ + type: 'dragNode', + seriesId: seriesModel.id, + dataIndex: nodeData.getRawIndex(dataIndex), + localX: this.shape.x / width, + localY: this.shape.y / height + }); + }; + el.ondragend = function () { + sankeyView._focusAdjacencyDisabled = false; + }; + el.draggable = true; + el.cursor = 'move'; + } + }); + if (!this._data && seriesModel.isAnimationEnabled()) { + group.setClipPath(createGridClipShape$1(group.getBoundingRect(), seriesModel, function () { + group.removeClipPath(); + })); + } + this._data = seriesModel.getData(); + }; + SankeyView.prototype.dispose = function () {}; + SankeyView.type = 'sankey'; + return SankeyView; + }(ChartView); + /** + * Special color, use source node color or target node color + * @param curveProps curve's style to parse + * @param orient direction + * @param edge current curve data + */ + function applyCurveStyle(curveProps, orient, edge) { + switch (curveProps.fill) { + case 'source': + curveProps.fill = edge.node1.getVisual('color'); + curveProps.decal = edge.node1.getVisual('style').decal; + break; + case 'target': + curveProps.fill = edge.node2.getVisual('color'); + curveProps.decal = edge.node2.getVisual('style').decal; + break; + case 'gradient': + var sourceColor = edge.node1.getVisual('color'); + var targetColor = edge.node2.getVisual('color'); + if (isString(sourceColor) && isString(targetColor)) { + curveProps.fill = new LinearGradient(0, 0, +(orient === 'horizontal'), +(orient === 'vertical'), [{ + color: sourceColor, + offset: 0 + }, { + color: targetColor, + offset: 1 + }]); + } + } + } + // Add animation to the view + function createGridClipShape$1(rect, seriesModel, cb) { + var rectEl = new Rect({ + shape: { + x: rect.x - 10, + y: rect.y - 10, + width: 0, + height: rect.height + 20 + } + }); + initProps(rectEl, { + shape: { + width: rect.width + 20 + } + }, seriesModel, cb); + return rectEl; + } + + var SankeySeriesModel = /** @class */function (_super) { + __extends(SankeySeriesModel, _super); + function SankeySeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SankeySeriesModel.type; + return _this; + } + /** + * Init a graph data structure from data in option series + */ + SankeySeriesModel.prototype.getInitialData = function (option, ecModel) { + var links = option.edges || option.links; + var nodes = option.data || option.nodes; + var levels = option.levels; + this.levelModels = []; + var levelModels = this.levelModels; + for (var i = 0; i < levels.length; i++) { + if (levels[i].depth != null && levels[i].depth >= 0) { + levelModels[levels[i].depth] = new Model(levels[i], this, ecModel); + } else { + if ("development" !== 'production') { + throw new Error('levels[i].depth is mandatory and should be natural number'); + } + } + } + if (nodes && links) { + var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink); + return graph.data; + } + function beforeLink(nodeData, edgeData) { + nodeData.wrapMethod('getItemModel', function (model, idx) { + var seriesModel = model.parentModel; + var layout = seriesModel.getData().getItemLayout(idx); + if (layout) { + var nodeDepth = layout.depth; + var levelModel = seriesModel.levelModels[nodeDepth]; + if (levelModel) { + model.parentModel = levelModel; + } + } + return model; + }); + edgeData.wrapMethod('getItemModel', function (model, idx) { + var seriesModel = model.parentModel; + var edge = seriesModel.getGraph().getEdgeByIndex(idx); + var layout = edge.node1.getLayout(); + if (layout) { + var depth = layout.depth; + var levelModel = seriesModel.levelModels[depth]; + if (levelModel) { + model.parentModel = levelModel; + } + } + return model; + }); + } + }; + SankeySeriesModel.prototype.setNodePosition = function (dataIndex, localPosition) { + var nodes = this.option.data || this.option.nodes; + var dataItem = nodes[dataIndex]; + dataItem.localX = localPosition[0]; + dataItem.localY = localPosition[1]; + }; + /** + * Return the graphic data structure + * + * @return graphic data structure + */ + SankeySeriesModel.prototype.getGraph = function () { + return this.getData().graph; + }; + /** + * Get edge data of graphic data structure + * + * @return data structure of list + */ + SankeySeriesModel.prototype.getEdgeData = function () { + return this.getGraph().edgeData; + }; + SankeySeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + function noValue(val) { + return isNaN(val) || val == null; + } + // dataType === 'node' or empty do not show tooltip by default + if (dataType === 'edge') { + var params = this.getDataParams(dataIndex, dataType); + var rawDataOpt = params.data; + var edgeValue = params.value; + var edgeName = rawDataOpt.source + ' -- ' + rawDataOpt.target; + return createTooltipMarkup('nameValue', { + name: edgeName, + value: edgeValue, + noValue: noValue(edgeValue) + }); + } + // dataType === 'node' + else { + var node = this.getGraph().getNodeByIndex(dataIndex); + var value = node.getLayout().value; + var name_1 = this.getDataParams(dataIndex, dataType).data.name; + return createTooltipMarkup('nameValue', { + name: name_1 != null ? name_1 + '' : null, + value: value, + noValue: noValue(value) + }); + } + }; + SankeySeriesModel.prototype.optionUpdated = function () {}; + // Override Series.getDataParams() + SankeySeriesModel.prototype.getDataParams = function (dataIndex, dataType) { + var params = _super.prototype.getDataParams.call(this, dataIndex, dataType); + if (params.value == null && dataType === 'node') { + var node = this.getGraph().getNodeByIndex(dataIndex); + var nodeValue = node.getLayout().value; + params.value = nodeValue; + } + return params; + }; + SankeySeriesModel.type = 'series.sankey'; + SankeySeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: 'view', + left: '5%', + top: '5%', + right: '20%', + bottom: '5%', + orient: 'horizontal', + nodeWidth: 20, + nodeGap: 8, + draggable: true, + layoutIterations: 32, + label: { + show: true, + position: 'right', + fontSize: 12 + }, + edgeLabel: { + show: false, + fontSize: 12 + }, + levels: [], + nodeAlign: 'justify', + lineStyle: { + color: '#314656', + opacity: 0.2, + curveness: 0.5 + }, + emphasis: { + label: { + show: true + }, + lineStyle: { + opacity: 0.5 + } + }, + select: { + itemStyle: { + borderColor: '#212121' + } + }, + animationEasing: 'linear', + animationDuration: 1000 + }; + return SankeySeriesModel; + }(SeriesModel); + + function sankeyLayout(ecModel, api) { + ecModel.eachSeriesByType('sankey', function (seriesModel) { + var nodeWidth = seriesModel.get('nodeWidth'); + var nodeGap = seriesModel.get('nodeGap'); + var layoutInfo = getViewRect$4(seriesModel, api); + seriesModel.layoutInfo = layoutInfo; + var width = layoutInfo.width; + var height = layoutInfo.height; + var graph = seriesModel.getGraph(); + var nodes = graph.nodes; + var edges = graph.edges; + computeNodeValues(nodes); + var filteredNodes = filter(nodes, function (node) { + return node.getLayout().value === 0; + }); + var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get('layoutIterations'); + var orient = seriesModel.get('orient'); + var nodeAlign = seriesModel.get('nodeAlign'); + layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign); + }); + } + /** + * Get the layout position of the whole view + */ + function getViewRect$4(seriesModel, api) { + return getLayoutRect(seriesModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }); + } + function layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) { + computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign); + computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient); + computeEdgeDepths(nodes, orient); + } + /** + * Compute the value of each node by summing the associated edge's value + */ + function computeNodeValues(nodes) { + each(nodes, function (node) { + var value1 = sum(node.outEdges, getEdgeValue); + var value2 = sum(node.inEdges, getEdgeValue); + var nodeRawValue = node.getValue() || 0; + var value = Math.max(value1, value2, nodeRawValue); + node.setLayout({ + value: value + }, true); + }); + } + /** + * Compute the x-position for each node. + * + * Here we use Kahn algorithm to detect cycle when we traverse + * the node to computer the initial x position. + */ + function computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) { + // Used to mark whether the edge is deleted. if it is deleted, + // the value is 0, otherwise it is 1. + var remainEdges = []; + // Storage each node's indegree. + var indegreeArr = []; + // Used to storage the node with indegree is equal to 0. + var zeroIndegrees = []; + var nextTargetNode = []; + var x = 0; + // let kx = 0; + for (var i = 0; i < edges.length; i++) { + remainEdges[i] = 1; + } + for (var i = 0; i < nodes.length; i++) { + indegreeArr[i] = nodes[i].inEdges.length; + if (indegreeArr[i] === 0) { + zeroIndegrees.push(nodes[i]); + } + } + var maxNodeDepth = -1; + // Traversing nodes using topological sorting to calculate the + // horizontal(if orient === 'horizontal') or vertical(if orient === 'vertical') + // position of the nodes. + while (zeroIndegrees.length) { + for (var idx = 0; idx < zeroIndegrees.length; idx++) { + var node = zeroIndegrees[idx]; + var item = node.hostGraph.data.getRawDataItem(node.dataIndex); + var isItemDepth = item.depth != null && item.depth >= 0; + if (isItemDepth && item.depth > maxNodeDepth) { + maxNodeDepth = item.depth; + } + node.setLayout({ + depth: isItemDepth ? item.depth : x + }, true); + orient === 'vertical' ? node.setLayout({ + dy: nodeWidth + }, true) : node.setLayout({ + dx: nodeWidth + }, true); + for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) { + var edge = node.outEdges[edgeIdx]; + var indexEdge = edges.indexOf(edge); + remainEdges[indexEdge] = 0; + var targetNode = edge.node2; + var nodeIndex = nodes.indexOf(targetNode); + if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) { + nextTargetNode.push(targetNode); + } + } + } + ++x; + zeroIndegrees = nextTargetNode; + nextTargetNode = []; + } + for (var i = 0; i < remainEdges.length; i++) { + if (remainEdges[i] === 1) { + throw new Error('Sankey is a DAG, the original data has cycle!'); + } + } + var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1; + if (nodeAlign && nodeAlign !== 'left') { + adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth); + } + var kx = orient === 'vertical' ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth; + scaleNodeBreadths(nodes, kx, orient); + } + function isNodeDepth(node) { + var item = node.hostGraph.data.getRawDataItem(node.dataIndex); + return item.depth != null && item.depth >= 0; + } + function adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) { + if (nodeAlign === 'right') { + var nextSourceNode = []; + var remainNodes = nodes; + var nodeHeight = 0; + while (remainNodes.length) { + for (var i = 0; i < remainNodes.length; i++) { + var node = remainNodes[i]; + node.setLayout({ + skNodeHeight: nodeHeight + }, true); + for (var j = 0; j < node.inEdges.length; j++) { + var edge = node.inEdges[j]; + if (nextSourceNode.indexOf(edge.node1) < 0) { + nextSourceNode.push(edge.node1); + } + } + } + remainNodes = nextSourceNode; + nextSourceNode = []; + ++nodeHeight; + } + each(nodes, function (node) { + if (!isNodeDepth(node)) { + node.setLayout({ + depth: Math.max(0, maxDepth - node.getLayout().skNodeHeight) + }, true); + } + }); + } else if (nodeAlign === 'justify') { + moveSinksRight(nodes, maxDepth); + } + } + /** + * All the node without outEgdes are assigned maximum x-position and + * be aligned in the last column. + * + * @param nodes. node of sankey view. + * @param maxDepth. use to assign to node without outEdges as x-position. + */ + function moveSinksRight(nodes, maxDepth) { + each(nodes, function (node) { + if (!isNodeDepth(node) && !node.outEdges.length) { + node.setLayout({ + depth: maxDepth + }, true); + } + }); + } + /** + * Scale node x-position to the width + * + * @param nodes node of sankey view + * @param kx multiple used to scale nodes + */ + function scaleNodeBreadths(nodes, kx, orient) { + each(nodes, function (node) { + var nodeDepth = node.getLayout().depth * kx; + orient === 'vertical' ? node.setLayout({ + y: nodeDepth + }, true) : node.setLayout({ + x: nodeDepth + }, true); + }); + } + /** + * Using Gauss-Seidel iterations method to compute the node depth(y-position) + * + * @param nodes node of sankey view + * @param edges edge of sankey view + * @param height the whole height of the area to draw the view + * @param nodeGap the vertical distance between two nodes + * in the same column. + * @param iterations the number of iterations for the algorithm + */ + function computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) { + var nodesByBreadth = prepareNodesByBreadth(nodes, orient); + initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient); + resolveCollisions(nodesByBreadth, nodeGap, height, width, orient); + for (var alpha = 1; iterations > 0; iterations--) { + // 0.99 is a experience parameter, ensure that each iterations of + // changes as small as possible. + alpha *= 0.99; + relaxRightToLeft(nodesByBreadth, alpha, orient); + resolveCollisions(nodesByBreadth, nodeGap, height, width, orient); + relaxLeftToRight(nodesByBreadth, alpha, orient); + resolveCollisions(nodesByBreadth, nodeGap, height, width, orient); + } + } + function prepareNodesByBreadth(nodes, orient) { + var nodesByBreadth = []; + var keyAttr = orient === 'vertical' ? 'y' : 'x'; + var groupResult = groupData(nodes, function (node) { + return node.getLayout()[keyAttr]; + }); + groupResult.keys.sort(function (a, b) { + return a - b; + }); + each(groupResult.keys, function (key) { + nodesByBreadth.push(groupResult.buckets.get(key)); + }); + return nodesByBreadth; + } + /** + * Compute the original y-position for each node + */ + function initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) { + var minKy = Infinity; + each(nodesByBreadth, function (nodes) { + var n = nodes.length; + var sum = 0; + each(nodes, function (node) { + sum += node.getLayout().value; + }); + var ky = orient === 'vertical' ? (width - (n - 1) * nodeGap) / sum : (height - (n - 1) * nodeGap) / sum; + if (ky < minKy) { + minKy = ky; + } + }); + each(nodesByBreadth, function (nodes) { + each(nodes, function (node, i) { + var nodeDy = node.getLayout().value * minKy; + if (orient === 'vertical') { + node.setLayout({ + x: i + }, true); + node.setLayout({ + dx: nodeDy + }, true); + } else { + node.setLayout({ + y: i + }, true); + node.setLayout({ + dy: nodeDy + }, true); + } + }); + }); + each(edges, function (edge) { + var edgeDy = +edge.getValue() * minKy; + edge.setLayout({ + dy: edgeDy + }, true); + }); + } + /** + * Resolve the collision of initialized depth (y-position) + */ + function resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) { + var keyAttr = orient === 'vertical' ? 'x' : 'y'; + each(nodesByBreadth, function (nodes) { + nodes.sort(function (a, b) { + return a.getLayout()[keyAttr] - b.getLayout()[keyAttr]; + }); + var nodeX; + var node; + var dy; + var y0 = 0; + var n = nodes.length; + var nodeDyAttr = orient === 'vertical' ? 'dx' : 'dy'; + for (var i = 0; i < n; i++) { + node = nodes[i]; + dy = y0 - node.getLayout()[keyAttr]; + if (dy > 0) { + nodeX = node.getLayout()[keyAttr] + dy; + orient === 'vertical' ? node.setLayout({ + x: nodeX + }, true) : node.setLayout({ + y: nodeX + }, true); + } + y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap; + } + var viewWidth = orient === 'vertical' ? width : height; + // If the bottommost node goes outside the bounds, push it back up + dy = y0 - nodeGap - viewWidth; + if (dy > 0) { + nodeX = node.getLayout()[keyAttr] - dy; + orient === 'vertical' ? node.setLayout({ + x: nodeX + }, true) : node.setLayout({ + y: nodeX + }, true); + y0 = nodeX; + for (var i = n - 2; i >= 0; --i) { + node = nodes[i]; + dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0; + if (dy > 0) { + nodeX = node.getLayout()[keyAttr] - dy; + orient === 'vertical' ? node.setLayout({ + x: nodeX + }, true) : node.setLayout({ + y: nodeX + }, true); + } + y0 = node.getLayout()[keyAttr]; + } + } + }); + } + /** + * Change the y-position of the nodes, except most the right side nodes + * @param nodesByBreadth + * @param alpha parameter used to adjust the nodes y-position + */ + function relaxRightToLeft(nodesByBreadth, alpha, orient) { + each(nodesByBreadth.slice().reverse(), function (nodes) { + each(nodes, function (node) { + if (node.outEdges.length) { + var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue); + if (isNaN(y)) { + var len = node.outEdges.length; + y = len ? sum(node.outEdges, centerTarget, orient) / len : 0; + } + if (orient === 'vertical') { + var nodeX = node.getLayout().x + (y - center$1(node, orient)) * alpha; + node.setLayout({ + x: nodeX + }, true); + } else { + var nodeY = node.getLayout().y + (y - center$1(node, orient)) * alpha; + node.setLayout({ + y: nodeY + }, true); + } + } + }); + }); + } + function weightedTarget(edge, orient) { + return center$1(edge.node2, orient) * edge.getValue(); + } + function centerTarget(edge, orient) { + return center$1(edge.node2, orient); + } + function weightedSource(edge, orient) { + return center$1(edge.node1, orient) * edge.getValue(); + } + function centerSource(edge, orient) { + return center$1(edge.node1, orient); + } + function center$1(node, orient) { + return orient === 'vertical' ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2; + } + function getEdgeValue(edge) { + return edge.getValue(); + } + function sum(array, cb, orient) { + var sum = 0; + var len = array.length; + var i = -1; + while (++i < len) { + var value = +cb(array[i], orient); + if (!isNaN(value)) { + sum += value; + } + } + return sum; + } + /** + * Change the y-position of the nodes, except most the left side nodes + */ + function relaxLeftToRight(nodesByBreadth, alpha, orient) { + each(nodesByBreadth, function (nodes) { + each(nodes, function (node) { + if (node.inEdges.length) { + var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue); + if (isNaN(y)) { + var len = node.inEdges.length; + y = len ? sum(node.inEdges, centerSource, orient) / len : 0; + } + if (orient === 'vertical') { + var nodeX = node.getLayout().x + (y - center$1(node, orient)) * alpha; + node.setLayout({ + x: nodeX + }, true); + } else { + var nodeY = node.getLayout().y + (y - center$1(node, orient)) * alpha; + node.setLayout({ + y: nodeY + }, true); + } + } + }); + }); + } + /** + * Compute the depth(y-position) of each edge + */ + function computeEdgeDepths(nodes, orient) { + var keyAttr = orient === 'vertical' ? 'x' : 'y'; + each(nodes, function (node) { + node.outEdges.sort(function (a, b) { + return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr]; + }); + node.inEdges.sort(function (a, b) { + return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr]; + }); + }); + each(nodes, function (node) { + var sy = 0; + var ty = 0; + each(node.outEdges, function (edge) { + edge.setLayout({ + sy: sy + }, true); + sy += edge.getLayout().dy; + }); + each(node.inEdges, function (edge) { + edge.setLayout({ + ty: ty + }, true); + ty += edge.getLayout().dy; + }); + }); + } + + function sankeyVisual(ecModel) { + ecModel.eachSeriesByType('sankey', function (seriesModel) { + var graph = seriesModel.getGraph(); + var nodes = graph.nodes; + var edges = graph.edges; + if (nodes.length) { + var minValue_1 = Infinity; + var maxValue_1 = -Infinity; + each(nodes, function (node) { + var nodeValue = node.getLayout().value; + if (nodeValue < minValue_1) { + minValue_1 = nodeValue; + } + if (nodeValue > maxValue_1) { + maxValue_1 = nodeValue; + } + }); + each(nodes, function (node) { + var mapping = new VisualMapping({ + type: 'color', + mappingMethod: 'linear', + dataExtent: [minValue_1, maxValue_1], + visual: seriesModel.get('color') + }); + var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value); + var customColor = node.getModel().get(['itemStyle', 'color']); + if (customColor != null) { + node.setVisual('color', customColor); + node.setVisual('style', { + fill: customColor + }); + } else { + node.setVisual('color', mapValueToColor); + node.setVisual('style', { + fill: mapValueToColor + }); + } + }); + } + if (edges.length) { + each(edges, function (edge) { + var edgeStyle = edge.getModel().get('lineStyle'); + edge.setVisual('style', edgeStyle); + }); + } + }); + } + + function install$i(registers) { + registers.registerChartView(SankeyView); + registers.registerSeriesModel(SankeySeriesModel); + registers.registerLayout(sankeyLayout); + registers.registerVisual(sankeyVisual); + registers.registerAction({ + type: 'dragNode', + event: 'dragnode', + // here can only use 'update' now, other value is not support in echarts. + update: 'update' + }, function (payload, ecModel) { + ecModel.eachComponent({ + mainType: 'series', + subType: 'sankey', + query: payload + }, function (seriesModel) { + seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]); + }); + }); + } + + var WhiskerBoxCommonMixin = /** @class */function () { + function WhiskerBoxCommonMixin() {} + /** + * @override + */ + WhiskerBoxCommonMixin.prototype.getInitialData = function (option, ecModel) { + // When both types of xAxis and yAxis are 'value', layout is + // needed to be specified by user. Otherwise, layout can be + // judged by which axis is category. + var ordinalMeta; + var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex')); + var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex')); + var xAxisType = xAxisModel.get('type'); + var yAxisType = yAxisModel.get('type'); + var addOrdinal; + // FIXME + // Consider time axis. + if (xAxisType === 'category') { + option.layout = 'horizontal'; + ordinalMeta = xAxisModel.getOrdinalMeta(); + addOrdinal = true; + } else if (yAxisType === 'category') { + option.layout = 'vertical'; + ordinalMeta = yAxisModel.getOrdinalMeta(); + addOrdinal = true; + } else { + option.layout = option.layout || 'horizontal'; + } + var coordDims = ['x', 'y']; + var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1; + var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex]; + var otherAxisDim = coordDims[1 - baseAxisDimIndex]; + var axisModels = [xAxisModel, yAxisModel]; + var baseAxisType = axisModels[baseAxisDimIndex].get('type'); + var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type'); + var data = option.data; + // Clone a new data for next setOption({}) usage. + // Avoid modifying current data will affect further update. + if (data && addOrdinal) { + var newOptionData_1 = []; + each(data, function (item, index) { + var newItem; + if (isArray(item)) { + newItem = item.slice(); + // Modify current using data. + item.unshift(index); + } else if (isArray(item.value)) { + newItem = extend({}, item); + newItem.value = newItem.value.slice(); + // Modify current using data. + item.value.unshift(index); + } else { + newItem = item; + } + newOptionData_1.push(newItem); + }); + option.data = newOptionData_1; + } + var defaultValueDimensions = this.defaultValueDimensions; + var coordDimensions = [{ + name: baseAxisDim, + type: getDimensionTypeByAxis(baseAxisType), + ordinalMeta: ordinalMeta, + otherDims: { + tooltip: false, + itemName: 0 + }, + dimsDef: ['base'] + }, { + name: otherAxisDim, + type: getDimensionTypeByAxis(otherAxisType), + dimsDef: defaultValueDimensions.slice() + }]; + return createSeriesDataSimply(this, { + coordDimensions: coordDimensions, + dimensionsCount: defaultValueDimensions.length + 1, + encodeDefaulter: curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this) + }); + }; + /** + * If horizontal, base axis is x, otherwise y. + * @override + */ + WhiskerBoxCommonMixin.prototype.getBaseAxis = function () { + var dim = this._baseAxisDim; + return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis; + }; + return WhiskerBoxCommonMixin; + }(); + + var BoxplotSeriesModel = /** @class */function (_super) { + __extends(BoxplotSeriesModel, _super); + function BoxplotSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = BoxplotSeriesModel.type; + // TODO + // box width represents group size, so dimension should have 'size'. + /** + * @see + * The meanings of 'min' and 'max' depend on user, + * and echarts do not need to know it. + * @readOnly + */ + _this.defaultValueDimensions = [{ + name: 'min', + defaultTooltip: true + }, { + name: 'Q1', + defaultTooltip: true + }, { + name: 'median', + defaultTooltip: true + }, { + name: 'Q3', + defaultTooltip: true + }, { + name: 'max', + defaultTooltip: true + }]; + _this.visualDrawType = 'stroke'; + return _this; + } + BoxplotSeriesModel.type = 'series.boxplot'; + BoxplotSeriesModel.dependencies = ['xAxis', 'yAxis', 'grid']; + BoxplotSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: 'cartesian2d', + legendHoverLink: true, + layout: null, + boxWidth: [7, 50], + itemStyle: { + color: '#fff', + borderWidth: 1 + }, + emphasis: { + scale: true, + itemStyle: { + borderWidth: 2, + shadowBlur: 5, + shadowOffsetX: 1, + shadowOffsetY: 1, + shadowColor: 'rgba(0,0,0,0.2)' + } + }, + animationDuration: 800 + }; + return BoxplotSeriesModel; + }(SeriesModel); + mixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true); + + var BoxplotView = /** @class */function (_super) { + __extends(BoxplotView, _super); + function BoxplotView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = BoxplotView.type; + return _this; + } + BoxplotView.prototype.render = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var group = this.group; + var oldData = this._data; + // There is no old data only when first rendering or switching from + // stream mode to normal mode, where previous elements should be removed. + if (!this._data) { + group.removeAll(); + } + var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0; + data.diff(oldData).add(function (newIdx) { + if (data.hasValue(newIdx)) { + var itemLayout = data.getItemLayout(newIdx); + var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true); + data.setItemGraphicEl(newIdx, symbolEl); + group.add(symbolEl); + } + }).update(function (newIdx, oldIdx) { + var symbolEl = oldData.getItemGraphicEl(oldIdx); + // Empty data + if (!data.hasValue(newIdx)) { + group.remove(symbolEl); + return; + } + var itemLayout = data.getItemLayout(newIdx); + if (!symbolEl) { + symbolEl = createNormalBox(itemLayout, data, newIdx, constDim); + } else { + saveOldStyle(symbolEl); + updateNormalBoxData(itemLayout, symbolEl, data, newIdx); + } + group.add(symbolEl); + data.setItemGraphicEl(newIdx, symbolEl); + }).remove(function (oldIdx) { + var el = oldData.getItemGraphicEl(oldIdx); + el && group.remove(el); + }).execute(); + this._data = data; + }; + BoxplotView.prototype.remove = function (ecModel) { + var group = this.group; + var data = this._data; + this._data = null; + data && data.eachItemGraphicEl(function (el) { + el && group.remove(el); + }); + }; + BoxplotView.type = 'boxplot'; + return BoxplotView; + }(ChartView); + var BoxPathShape = /** @class */function () { + function BoxPathShape() {} + return BoxPathShape; + }(); + var BoxPath = /** @class */function (_super) { + __extends(BoxPath, _super); + function BoxPath(opts) { + var _this = _super.call(this, opts) || this; + _this.type = 'boxplotBoxPath'; + return _this; + } + BoxPath.prototype.getDefaultShape = function () { + return new BoxPathShape(); + }; + BoxPath.prototype.buildPath = function (ctx, shape) { + var ends = shape.points; + var i = 0; + ctx.moveTo(ends[i][0], ends[i][1]); + i++; + for (; i < 4; i++) { + ctx.lineTo(ends[i][0], ends[i][1]); + } + ctx.closePath(); + for (; i < ends.length; i++) { + ctx.moveTo(ends[i][0], ends[i][1]); + i++; + ctx.lineTo(ends[i][0], ends[i][1]); + } + }; + return BoxPath; + }(Path); + function createNormalBox(itemLayout, data, dataIndex, constDim, isInit) { + var ends = itemLayout.ends; + var el = new BoxPath({ + shape: { + points: isInit ? transInit(ends, constDim, itemLayout) : ends + } + }); + updateNormalBoxData(itemLayout, el, data, dataIndex, isInit); + return el; + } + function updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) { + var seriesModel = data.hostModel; + var updateMethod = graphic[isInit ? 'initProps' : 'updateProps']; + updateMethod(el, { + shape: { + points: itemLayout.ends + } + }, seriesModel, dataIndex); + el.useStyle(data.getItemVisual(dataIndex, 'style')); + el.style.strokeNoScale = true; + el.z2 = 100; + var itemModel = data.getItemModel(dataIndex); + var emphasisModel = itemModel.getModel('emphasis'); + setStatesStylesFromModel(el, itemModel); + toggleHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + } + function transInit(points, dim, itemLayout) { + return map(points, function (point) { + point = point.slice(); + point[dim] = itemLayout.initBaseline; + return point; + }); + } + + var each$6 = each; + function boxplotLayout(ecModel) { + var groupResult = groupSeriesByAxis(ecModel); + each$6(groupResult, function (groupItem) { + var seriesModels = groupItem.seriesModels; + if (!seriesModels.length) { + return; + } + calculateBase(groupItem); + each$6(seriesModels, function (seriesModel, idx) { + layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]); + }); + }); + } + /** + * Group series by axis. + */ + function groupSeriesByAxis(ecModel) { + var result = []; + var axisList = []; + ecModel.eachSeriesByType('boxplot', function (seriesModel) { + var baseAxis = seriesModel.getBaseAxis(); + var idx = indexOf(axisList, baseAxis); + if (idx < 0) { + idx = axisList.length; + axisList[idx] = baseAxis; + result[idx] = { + axis: baseAxis, + seriesModels: [] + }; + } + result[idx].seriesModels.push(seriesModel); + }); + return result; + } + /** + * Calculate offset and box width for each series. + */ + function calculateBase(groupItem) { + var baseAxis = groupItem.axis; + var seriesModels = groupItem.seriesModels; + var seriesCount = seriesModels.length; + var boxWidthList = groupItem.boxWidthList = []; + var boxOffsetList = groupItem.boxOffsetList = []; + var boundList = []; + var bandWidth; + if (baseAxis.type === 'category') { + bandWidth = baseAxis.getBandWidth(); + } else { + var maxDataCount_1 = 0; + each$6(seriesModels, function (seriesModel) { + maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count()); + }); + var extent = baseAxis.getExtent(); + bandWidth = Math.abs(extent[1] - extent[0]) / maxDataCount_1; + } + each$6(seriesModels, function (seriesModel) { + var boxWidthBound = seriesModel.get('boxWidth'); + if (!isArray(boxWidthBound)) { + boxWidthBound = [boxWidthBound, boxWidthBound]; + } + boundList.push([parsePercent$1(boxWidthBound[0], bandWidth) || 0, parsePercent$1(boxWidthBound[1], bandWidth) || 0]); + }); + var availableWidth = bandWidth * 0.8 - 2; + var boxGap = availableWidth / seriesCount * 0.3; + var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount; + var base = boxWidth / 2 - availableWidth / 2; + each$6(seriesModels, function (seriesModel, idx) { + boxOffsetList.push(base); + base += boxGap + boxWidth; + boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1])); + }); + } + /** + * Calculate points location for each series. + */ + function layoutSingleSeries(seriesModel, offset, boxWidth) { + var coordSys = seriesModel.coordinateSystem; + var data = seriesModel.getData(); + var halfWidth = boxWidth / 2; + var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1; + var vDimIdx = 1 - cDimIdx; + var coordDims = ['x', 'y']; + var cDim = data.mapDimension(coordDims[cDimIdx]); + var vDims = data.mapDimensionsAll(coordDims[vDimIdx]); + if (cDim == null || vDims.length < 5) { + return; + } + for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) { + var axisDimVal = data.get(cDim, dataIndex); + var median = getPoint(axisDimVal, vDims[2], dataIndex); + var end1 = getPoint(axisDimVal, vDims[0], dataIndex); + var end2 = getPoint(axisDimVal, vDims[1], dataIndex); + var end4 = getPoint(axisDimVal, vDims[3], dataIndex); + var end5 = getPoint(axisDimVal, vDims[4], dataIndex); + var ends = []; + addBodyEnd(ends, end2, false); + addBodyEnd(ends, end4, true); + ends.push(end1, end2, end5, end4); + layEndLine(ends, end1); + layEndLine(ends, end5); + layEndLine(ends, median); + data.setItemLayout(dataIndex, { + initBaseline: median[vDimIdx], + ends: ends + }); + } + function getPoint(axisDimVal, dim, dataIndex) { + var val = data.get(dim, dataIndex); + var p = []; + p[cDimIdx] = axisDimVal; + p[vDimIdx] = val; + var point; + if (isNaN(axisDimVal) || isNaN(val)) { + point = [NaN, NaN]; + } else { + point = coordSys.dataToPoint(p); + point[cDimIdx] += offset; + } + return point; + } + function addBodyEnd(ends, point, start) { + var point1 = point.slice(); + var point2 = point.slice(); + point1[cDimIdx] += halfWidth; + point2[cDimIdx] -= halfWidth; + start ? ends.push(point1, point2) : ends.push(point2, point1); + } + function layEndLine(ends, endCenter) { + var from = endCenter.slice(); + var to = endCenter.slice(); + from[cDimIdx] -= halfWidth; + to[cDimIdx] += halfWidth; + ends.push(from, to); + } + } + + /** + * See: + * + * + * + * Helper method for preparing data. + * + * @param rawData like + * [ + * [12,232,443], (raw data set for the first box) + * [3843,5545,1232], (raw data set for the second box) + * ... + * ] + * @param opt.boundIQR=1.5 Data less than min bound is outlier. + * default 1.5, means Q1 - 1.5 * (Q3 - Q1). + * If 'none'/0 passed, min bound will not be used. + */ + function prepareBoxplotData(rawData, opt) { + opt = opt || {}; + var boxData = []; + var outliers = []; + var boundIQR = opt.boundIQR; + var useExtreme = boundIQR === 'none' || boundIQR === 0; + for (var i = 0; i < rawData.length; i++) { + var ascList = asc(rawData[i].slice()); + var Q1 = quantile(ascList, 0.25); + var Q2 = quantile(ascList, 0.5); + var Q3 = quantile(ascList, 0.75); + var min = ascList[0]; + var max = ascList[ascList.length - 1]; + var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1); + var low = useExtreme ? min : Math.max(min, Q1 - bound); + var high = useExtreme ? max : Math.min(max, Q3 + bound); + var itemNameFormatter = opt.itemNameFormatter; + var itemName = isFunction(itemNameFormatter) ? itemNameFormatter({ + value: i + }) : isString(itemNameFormatter) ? itemNameFormatter.replace('{value}', i + '') : i + ''; + boxData.push([itemName, low, Q1, Q2, Q3, high]); + for (var j = 0; j < ascList.length; j++) { + var dataItem = ascList[j]; + if (dataItem < low || dataItem > high) { + var outlier = [itemName, dataItem]; + outliers.push(outlier); + } + } + } + return { + boxData: boxData, + outliers: outliers + }; + } + + var boxplotTransform = { + type: 'echarts:boxplot', + transform: function transform(params) { + var upstream = params.upstream; + if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) { + var errMsg = ''; + if ("development" !== 'production') { + errMsg = makePrintable('source data is not applicable for this boxplot transform. Expect number[][].'); + } + throwError(errMsg); + } + var result = prepareBoxplotData(upstream.getRawData(), params.config); + return [{ + dimensions: ['ItemName', 'Low', 'Q1', 'Q2', 'Q3', 'High'], + data: result.boxData + }, { + data: result.outliers + }]; + } + }; + + function install$j(registers) { + registers.registerSeriesModel(BoxplotSeriesModel); + registers.registerChartView(BoxplotView); + registers.registerLayout(boxplotLayout); + registers.registerTransform(boxplotTransform); + } + + var SKIP_PROPS = ['color', 'borderColor']; + var CandlestickView = /** @class */function (_super) { + __extends(CandlestickView, _super); + function CandlestickView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = CandlestickView.type; + return _this; + } + CandlestickView.prototype.render = function (seriesModel, ecModel, api) { + // If there is clipPath created in large mode. Remove it. + this.group.removeClipPath(); + // Clear previously rendered progressive elements. + this._progressiveEls = null; + this._updateDrawMode(seriesModel); + this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel); + }; + CandlestickView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) { + this._clear(); + this._updateDrawMode(seriesModel); + }; + CandlestickView.prototype.incrementalRender = function (params, seriesModel, ecModel, api) { + this._progressiveEls = []; + this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel); + }; + CandlestickView.prototype.eachRendered = function (cb) { + traverseElements(this._progressiveEls || this.group, cb); + }; + CandlestickView.prototype._updateDrawMode = function (seriesModel) { + var isLargeDraw = seriesModel.pipelineContext.large; + if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) { + this._isLargeDraw = isLargeDraw; + this._clear(); + } + }; + CandlestickView.prototype._renderNormal = function (seriesModel) { + var data = seriesModel.getData(); + var oldData = this._data; + var group = this.group; + var isSimpleBox = data.getLayout('isSimpleBox'); + var needsClip = seriesModel.get('clip', true); + var coord = seriesModel.coordinateSystem; + var clipArea = coord.getArea && coord.getArea(); + // There is no old data only when first rendering or switching from + // stream mode to normal mode, where previous elements should be removed. + if (!this._data) { + group.removeAll(); + } + data.diff(oldData).add(function (newIdx) { + if (data.hasValue(newIdx)) { + var itemLayout = data.getItemLayout(newIdx); + if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) { + return; + } + var el = createNormalBox$1(itemLayout, newIdx, true); + initProps(el, { + shape: { + points: itemLayout.ends + } + }, seriesModel, newIdx); + setBoxCommon(el, data, newIdx, isSimpleBox); + group.add(el); + data.setItemGraphicEl(newIdx, el); + } + }).update(function (newIdx, oldIdx) { + var el = oldData.getItemGraphicEl(oldIdx); + // Empty data + if (!data.hasValue(newIdx)) { + group.remove(el); + return; + } + var itemLayout = data.getItemLayout(newIdx); + if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) { + group.remove(el); + return; + } + if (!el) { + el = createNormalBox$1(itemLayout); + } else { + updateProps(el, { + shape: { + points: itemLayout.ends + } + }, seriesModel, newIdx); + saveOldStyle(el); + } + setBoxCommon(el, data, newIdx, isSimpleBox); + group.add(el); + data.setItemGraphicEl(newIdx, el); + }).remove(function (oldIdx) { + var el = oldData.getItemGraphicEl(oldIdx); + el && group.remove(el); + }).execute(); + this._data = data; + }; + CandlestickView.prototype._renderLarge = function (seriesModel) { + this._clear(); + createLarge$1(seriesModel, this.group); + var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null; + if (clipPath) { + this.group.setClipPath(clipPath); + } else { + this.group.removeClipPath(); + } + }; + CandlestickView.prototype._incrementalRenderNormal = function (params, seriesModel) { + var data = seriesModel.getData(); + var isSimpleBox = data.getLayout('isSimpleBox'); + var dataIndex; + while ((dataIndex = params.next()) != null) { + var itemLayout = data.getItemLayout(dataIndex); + var el = createNormalBox$1(itemLayout); + setBoxCommon(el, data, dataIndex, isSimpleBox); + el.incremental = true; + this.group.add(el); + this._progressiveEls.push(el); + } + }; + CandlestickView.prototype._incrementalRenderLarge = function (params, seriesModel) { + createLarge$1(seriesModel, this.group, this._progressiveEls, true); + }; + CandlestickView.prototype.remove = function (ecModel) { + this._clear(); + }; + CandlestickView.prototype._clear = function () { + this.group.removeAll(); + this._data = null; + }; + CandlestickView.type = 'candlestick'; + return CandlestickView; + }(ChartView); + var NormalBoxPathShape = /** @class */function () { + function NormalBoxPathShape() {} + return NormalBoxPathShape; + }(); + var NormalBoxPath = /** @class */function (_super) { + __extends(NormalBoxPath, _super); + function NormalBoxPath(opts) { + var _this = _super.call(this, opts) || this; + _this.type = 'normalCandlestickBox'; + return _this; + } + NormalBoxPath.prototype.getDefaultShape = function () { + return new NormalBoxPathShape(); + }; + NormalBoxPath.prototype.buildPath = function (ctx, shape) { + var ends = shape.points; + if (this.__simpleBox) { + ctx.moveTo(ends[4][0], ends[4][1]); + ctx.lineTo(ends[6][0], ends[6][1]); + } else { + ctx.moveTo(ends[0][0], ends[0][1]); + ctx.lineTo(ends[1][0], ends[1][1]); + ctx.lineTo(ends[2][0], ends[2][1]); + ctx.lineTo(ends[3][0], ends[3][1]); + ctx.closePath(); + ctx.moveTo(ends[4][0], ends[4][1]); + ctx.lineTo(ends[5][0], ends[5][1]); + ctx.moveTo(ends[6][0], ends[6][1]); + ctx.lineTo(ends[7][0], ends[7][1]); + } + }; + return NormalBoxPath; + }(Path); + function createNormalBox$1(itemLayout, dataIndex, isInit) { + var ends = itemLayout.ends; + return new NormalBoxPath({ + shape: { + points: isInit ? transInit$1(ends, itemLayout) : ends + }, + z2: 100 + }); + } + function isNormalBoxClipped(clipArea, itemLayout) { + var clipped = true; + for (var i = 0; i < itemLayout.ends.length; i++) { + // If any point are in the region. + if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) { + clipped = false; + break; + } + } + return clipped; + } + function setBoxCommon(el, data, dataIndex, isSimpleBox) { + var itemModel = data.getItemModel(dataIndex); + el.useStyle(data.getItemVisual(dataIndex, 'style')); + el.style.strokeNoScale = true; + el.__simpleBox = isSimpleBox; + setStatesStylesFromModel(el, itemModel); + } + function transInit$1(points, itemLayout) { + return map(points, function (point) { + point = point.slice(); + point[1] = itemLayout.initBaseline; + return point; + }); + } + var LargeBoxPathShape = /** @class */function () { + function LargeBoxPathShape() {} + return LargeBoxPathShape; + }(); + var LargeBoxPath = /** @class */function (_super) { + __extends(LargeBoxPath, _super); + function LargeBoxPath(opts) { + var _this = _super.call(this, opts) || this; + _this.type = 'largeCandlestickBox'; + return _this; + } + LargeBoxPath.prototype.getDefaultShape = function () { + return new LargeBoxPathShape(); + }; + LargeBoxPath.prototype.buildPath = function (ctx, shape) { + // Drawing lines is more efficient than drawing + // a whole line or drawing rects. + var points = shape.points; + for (var i = 0; i < points.length;) { + if (this.__sign === points[i++]) { + var x = points[i++]; + ctx.moveTo(x, points[i++]); + ctx.lineTo(x, points[i++]); + } else { + i += 3; + } + } + }; + return LargeBoxPath; + }(Path); + function createLarge$1(seriesModel, group, progressiveEls, incremental) { + var data = seriesModel.getData(); + var largePoints = data.getLayout('largePoints'); + var elP = new LargeBoxPath({ + shape: { + points: largePoints + }, + __sign: 1, + ignoreCoarsePointer: true + }); + group.add(elP); + var elN = new LargeBoxPath({ + shape: { + points: largePoints + }, + __sign: -1, + ignoreCoarsePointer: true + }); + group.add(elN); + var elDoji = new LargeBoxPath({ + shape: { + points: largePoints + }, + __sign: 0, + ignoreCoarsePointer: true + }); + group.add(elDoji); + setLargeStyle(1, elP, seriesModel); + setLargeStyle(-1, elN, seriesModel); + setLargeStyle(0, elDoji, seriesModel); + if (incremental) { + elP.incremental = true; + elN.incremental = true; + } + if (progressiveEls) { + progressiveEls.push(elP, elN); + } + } + function setLargeStyle(sign, el, seriesModel, data) { + // TODO put in visual? + var borderColor = seriesModel.get(['itemStyle', sign > 0 ? 'borderColor' : 'borderColor0']) + // Use color for border color by default. + || seriesModel.get(['itemStyle', sign > 0 ? 'color' : 'color0']); + if (sign === 0) { + borderColor = seriesModel.get(['itemStyle', 'borderColorDoji']); + } + // Color must be excluded. + // Because symbol provide setColor individually to set fill and stroke + var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(SKIP_PROPS); + el.useStyle(itemStyle); + el.style.fill = null; + el.style.stroke = borderColor; + } + + var CandlestickSeriesModel = /** @class */function (_super) { + __extends(CandlestickSeriesModel, _super); + function CandlestickSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = CandlestickSeriesModel.type; + _this.defaultValueDimensions = [{ + name: 'open', + defaultTooltip: true + }, { + name: 'close', + defaultTooltip: true + }, { + name: 'lowest', + defaultTooltip: true + }, { + name: 'highest', + defaultTooltip: true + }]; + return _this; + } + /** + * Get dimension for shadow in dataZoom + * @return dimension name + */ + CandlestickSeriesModel.prototype.getShadowDim = function () { + return 'open'; + }; + CandlestickSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) { + var itemLayout = data.getItemLayout(dataIndex); + return itemLayout && selectors.rect(itemLayout.brushRect); + }; + CandlestickSeriesModel.type = 'series.candlestick'; + CandlestickSeriesModel.dependencies = ['xAxis', 'yAxis', 'grid']; + CandlestickSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: 'cartesian2d', + legendHoverLink: true, + // xAxisIndex: 0, + // yAxisIndex: 0, + layout: null, + clip: true, + itemStyle: { + color: '#eb5454', + color0: '#47b262', + borderColor: '#eb5454', + borderColor0: '#47b262', + borderColorDoji: null, + // borderColor: '#d24040', + // borderColor0: '#398f4f', + borderWidth: 1 + }, + emphasis: { + scale: true, + itemStyle: { + borderWidth: 2 + } + }, + barMaxWidth: null, + barMinWidth: null, + barWidth: null, + large: true, + largeThreshold: 600, + progressive: 3e3, + progressiveThreshold: 1e4, + progressiveChunkMode: 'mod', + animationEasing: 'linear', + animationDuration: 300 + }; + return CandlestickSeriesModel; + }(SeriesModel); + mixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true); + + function candlestickPreprocessor(option) { + if (!option || !isArray(option.series)) { + return; + } + // Translate 'k' to 'candlestick'. + each(option.series, function (seriesItem) { + if (isObject(seriesItem) && seriesItem.type === 'k') { + seriesItem.type = 'candlestick'; + } + }); + } + + var positiveBorderColorQuery = ['itemStyle', 'borderColor']; + var negativeBorderColorQuery = ['itemStyle', 'borderColor0']; + var dojiBorderColorQuery = ['itemStyle', 'borderColorDoji']; + var positiveColorQuery = ['itemStyle', 'color']; + var negativeColorQuery = ['itemStyle', 'color0']; + var candlestickVisual = { + seriesType: 'candlestick', + plan: createRenderPlanner(), + // For legend. + performRawSeries: true, + reset: function (seriesModel, ecModel) { + function getColor(sign, model) { + return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery); + } + function getBorderColor(sign, model) { + return model.get(sign === 0 ? dojiBorderColorQuery : sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery); + } + // Only visible series has each data be visual encoded + if (ecModel.isSeriesFiltered(seriesModel)) { + return; + } + var isLargeRender = seriesModel.pipelineContext.large; + return !isLargeRender && { + progress: function (params, data) { + var dataIndex; + while ((dataIndex = params.next()) != null) { + var itemModel = data.getItemModel(dataIndex); + var sign = data.getItemLayout(dataIndex).sign; + var style = itemModel.getItemStyle(); + style.fill = getColor(sign, itemModel); + style.stroke = getBorderColor(sign, itemModel) || style.fill; + var existsStyle = data.ensureUniqueItemVisual(dataIndex, 'style'); + extend(existsStyle, style); + } + } + }; + } + }; + + var candlestickLayout = { + seriesType: 'candlestick', + plan: createRenderPlanner(), + reset: function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + var data = seriesModel.getData(); + var candleWidth = calculateCandleWidth(seriesModel, data); + var cDimIdx = 0; + var vDimIdx = 1; + var coordDims = ['x', 'y']; + var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx])); + var vDimsI = map(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data); + var openDimI = vDimsI[0]; + var closeDimI = vDimsI[1]; + var lowestDimI = vDimsI[2]; + var highestDimI = vDimsI[3]; + data.setLayout({ + candleWidth: candleWidth, + // The value is experimented visually. + isSimpleBox: candleWidth <= 1.3 + }); + if (cDimI < 0 || vDimsI.length < 4) { + return; + } + return { + progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress + }; + function normalProgress(params, data) { + var dataIndex; + var store = data.getStore(); + while ((dataIndex = params.next()) != null) { + var axisDimVal = store.get(cDimI, dataIndex); + var openVal = store.get(openDimI, dataIndex); + var closeVal = store.get(closeDimI, dataIndex); + var lowestVal = store.get(lowestDimI, dataIndex); + var highestVal = store.get(highestDimI, dataIndex); + var ocLow = Math.min(openVal, closeVal); + var ocHigh = Math.max(openVal, closeVal); + var ocLowPoint = getPoint(ocLow, axisDimVal); + var ocHighPoint = getPoint(ocHigh, axisDimVal); + var lowestPoint = getPoint(lowestVal, axisDimVal); + var highestPoint = getPoint(highestVal, axisDimVal); + var ends = []; + addBodyEnd(ends, ocHighPoint, 0); + addBodyEnd(ends, ocLowPoint, 1); + ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint)); + var itemModel = data.getItemModel(dataIndex); + var hasDojiColor = !!itemModel.get(['itemStyle', 'borderColorDoji']); + data.setItemLayout(dataIndex, { + sign: getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor), + initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx], + ends: ends, + brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal) + }); + } + function getPoint(val, axisDimVal) { + var p = []; + p[cDimIdx] = axisDimVal; + p[vDimIdx] = val; + return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p); + } + function addBodyEnd(ends, point, start) { + var point1 = point.slice(); + var point2 = point.slice(); + point1[cDimIdx] = subPixelOptimize$1(point1[cDimIdx] + candleWidth / 2, 1, false); + point2[cDimIdx] = subPixelOptimize$1(point2[cDimIdx] - candleWidth / 2, 1, true); + start ? ends.push(point1, point2) : ends.push(point2, point1); + } + function makeBrushRect(lowestVal, highestVal, axisDimVal) { + var pmin = getPoint(lowestVal, axisDimVal); + var pmax = getPoint(highestVal, axisDimVal); + pmin[cDimIdx] -= candleWidth / 2; + pmax[cDimIdx] -= candleWidth / 2; + return { + x: pmin[0], + y: pmin[1], + width: candleWidth , + height: pmax[1] - pmin[1] + }; + } + function subPixelOptimizePoint(point) { + point[cDimIdx] = subPixelOptimize$1(point[cDimIdx], 1); + return point; + } + } + function largeProgress(params, data) { + // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...] + var points = createFloat32Array(params.count * 4); + var offset = 0; + var point; + var tmpIn = []; + var tmpOut = []; + var dataIndex; + var store = data.getStore(); + var hasDojiColor = !!seriesModel.get(['itemStyle', 'borderColorDoji']); + while ((dataIndex = params.next()) != null) { + var axisDimVal = store.get(cDimI, dataIndex); + var openVal = store.get(openDimI, dataIndex); + var closeVal = store.get(closeDimI, dataIndex); + var lowestVal = store.get(lowestDimI, dataIndex); + var highestVal = store.get(highestDimI, dataIndex); + if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) { + points[offset++] = NaN; + offset += 3; + continue; + } + points[offset++] = getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor); + tmpIn[cDimIdx] = axisDimVal; + tmpIn[vDimIdx] = lowestVal; + point = coordSys.dataToPoint(tmpIn, null, tmpOut); + points[offset++] = point ? point[0] : NaN; + points[offset++] = point ? point[1] : NaN; + tmpIn[vDimIdx] = highestVal; + point = coordSys.dataToPoint(tmpIn, null, tmpOut); + points[offset++] = point ? point[1] : NaN; + } + data.setLayout('largePoints', points); + } + } + }; + /** + * Get the sign of a single data. + * + * @returns 0 for doji with hasDojiColor: true, + * 1 for positive, + * -1 for negative. + */ + function getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor) { + var sign; + if (openVal > closeVal) { + sign = -1; + } else if (openVal < closeVal) { + sign = 1; + } else { + sign = hasDojiColor + // When doji color is set, use it instead of color/color0. + ? 0 : dataIndex > 0 + // If close === open, compare with close of last record + ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 + // No record of previous, set to be positive + : 1; + } + return sign; + } + function calculateCandleWidth(seriesModel, data) { + var baseAxis = seriesModel.getBaseAxis(); + var extent; + var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count()); + var barMaxWidth = parsePercent$1(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth); + var barMinWidth = parsePercent$1(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth); + var barWidth = seriesModel.get('barWidth'); + return barWidth != null ? parsePercent$1(barWidth, bandWidth) + // Put max outer to ensure bar visible in spite of overlap. + : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth); + } + + function install$k(registers) { + registers.registerChartView(CandlestickView); + registers.registerSeriesModel(CandlestickSeriesModel); + registers.registerPreprocessor(candlestickPreprocessor); + registers.registerVisual(candlestickVisual); + registers.registerLayout(candlestickLayout); + } + + function updateRipplePath(rippleGroup, effectCfg) { + var color = effectCfg.rippleEffectColor || effectCfg.color; + rippleGroup.eachChild(function (ripplePath) { + ripplePath.attr({ + z: effectCfg.z, + zlevel: effectCfg.zlevel, + style: { + stroke: effectCfg.brushType === 'stroke' ? color : null, + fill: effectCfg.brushType === 'fill' ? color : null + } + }); + }); + } + var EffectSymbol = /** @class */function (_super) { + __extends(EffectSymbol, _super); + function EffectSymbol(data, idx) { + var _this = _super.call(this) || this; + var symbol = new Symbol(data, idx); + var rippleGroup = new Group(); + _this.add(symbol); + _this.add(rippleGroup); + _this.updateData(data, idx); + return _this; + } + EffectSymbol.prototype.stopEffectAnimation = function () { + this.childAt(1).removeAll(); + }; + EffectSymbol.prototype.startEffectAnimation = function (effectCfg) { + var symbolType = effectCfg.symbolType; + var color = effectCfg.color; + var rippleNumber = effectCfg.rippleNumber; + var rippleGroup = this.childAt(1); + for (var i = 0; i < rippleNumber; i++) { + // If width/height are set too small (e.g., set to 1) on ios10 + // and macOS Sierra, a circle stroke become a rect, no matter what + // the scale is set. So we set width/height as 2. See #4136. + var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color); + ripplePath.attr({ + style: { + strokeNoScale: true + }, + z2: 99, + silent: true, + scaleX: 0.5, + scaleY: 0.5 + }); + var delay = -i / rippleNumber * effectCfg.period + effectCfg.effectOffset; + ripplePath.animate('', true).when(effectCfg.period, { + scaleX: effectCfg.rippleScale / 2, + scaleY: effectCfg.rippleScale / 2 + }).delay(delay).start(); + ripplePath.animateStyle(true).when(effectCfg.period, { + opacity: 0 + }).delay(delay).start(); + rippleGroup.add(ripplePath); + } + updateRipplePath(rippleGroup, effectCfg); + }; + /** + * Update effect symbol + */ + EffectSymbol.prototype.updateEffectAnimation = function (effectCfg) { + var oldEffectCfg = this._effectCfg; + var rippleGroup = this.childAt(1); + // Must reinitialize effect if following configuration changed + var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale', 'rippleNumber']; + for (var i = 0; i < DIFFICULT_PROPS.length; i++) { + var propName = DIFFICULT_PROPS[i]; + if (oldEffectCfg[propName] !== effectCfg[propName]) { + this.stopEffectAnimation(); + this.startEffectAnimation(effectCfg); + return; + } + } + updateRipplePath(rippleGroup, effectCfg); + }; + /** + * Highlight symbol + */ + EffectSymbol.prototype.highlight = function () { + enterEmphasis(this); + }; + /** + * Downplay symbol + */ + EffectSymbol.prototype.downplay = function () { + leaveEmphasis(this); + }; + EffectSymbol.prototype.getSymbolType = function () { + var symbol = this.childAt(0); + return symbol && symbol.getSymbolType(); + }; + /** + * Update symbol properties + */ + EffectSymbol.prototype.updateData = function (data, idx) { + var _this = this; + var seriesModel = data.hostModel; + this.childAt(0).updateData(data, idx); + var rippleGroup = this.childAt(1); + var itemModel = data.getItemModel(idx); + var symbolType = data.getItemVisual(idx, 'symbol'); + var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize')); + var symbolStyle = data.getItemVisual(idx, 'style'); + var color = symbolStyle && symbolStyle.fill; + var emphasisModel = itemModel.getModel('emphasis'); + rippleGroup.setScale(symbolSize); + rippleGroup.traverse(function (ripplePath) { + ripplePath.setStyle('fill', color); + }); + var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, 'symbolOffset'), symbolSize); + if (symbolOffset) { + rippleGroup.x = symbolOffset[0]; + rippleGroup.y = symbolOffset[1]; + } + var symbolRotate = data.getItemVisual(idx, 'symbolRotate'); + rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; + var effectCfg = {}; + effectCfg.showEffectOn = seriesModel.get('showEffectOn'); + effectCfg.rippleScale = itemModel.get(['rippleEffect', 'scale']); + effectCfg.brushType = itemModel.get(['rippleEffect', 'brushType']); + effectCfg.period = itemModel.get(['rippleEffect', 'period']) * 1000; + effectCfg.effectOffset = idx / data.count(); + effectCfg.z = seriesModel.getShallow('z') || 0; + effectCfg.zlevel = seriesModel.getShallow('zlevel') || 0; + effectCfg.symbolType = symbolType; + effectCfg.color = color; + effectCfg.rippleEffectColor = itemModel.get(['rippleEffect', 'color']); + effectCfg.rippleNumber = itemModel.get(['rippleEffect', 'number']); + if (effectCfg.showEffectOn === 'render') { + this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg); + this._effectCfg = effectCfg; + } else { + // Not keep old effect config + this._effectCfg = null; + this.stopEffectAnimation(); + this.onHoverStateChange = function (toState) { + if (toState === 'emphasis') { + if (effectCfg.showEffectOn !== 'render') { + _this.startEffectAnimation(effectCfg); + } + } else if (toState === 'normal') { + if (effectCfg.showEffectOn !== 'render') { + _this.stopEffectAnimation(); + } + } + }; + } + this._effectCfg = effectCfg; + toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + }; + EffectSymbol.prototype.fadeOut = function (cb) { + cb && cb(); + }; + return EffectSymbol; + }(Group); + + var EffectScatterView = /** @class */function (_super) { + __extends(EffectScatterView, _super); + function EffectScatterView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = EffectScatterView.type; + return _this; + } + EffectScatterView.prototype.init = function () { + this._symbolDraw = new SymbolDraw(EffectSymbol); + }; + EffectScatterView.prototype.render = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var effectSymbolDraw = this._symbolDraw; + effectSymbolDraw.updateData(data, { + clipShape: this._getClipShape(seriesModel) + }); + this.group.add(effectSymbolDraw.group); + }; + EffectScatterView.prototype._getClipShape = function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + var clipArea = coordSys && coordSys.getArea && coordSys.getArea(); + return seriesModel.get('clip', true) ? clipArea : null; + }; + EffectScatterView.prototype.updateTransform = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + this.group.dirty(); + var res = pointsLayout('').reset(seriesModel, ecModel, api); + if (res.progress) { + res.progress({ + start: 0, + end: data.count(), + count: data.count() + }, data); + } + this._symbolDraw.updateLayout(); + }; + EffectScatterView.prototype._updateGroupTransform = function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.getRoamTransform) { + this.group.transform = clone$2(coordSys.getRoamTransform()); + this.group.decomposeTransform(); + } + }; + EffectScatterView.prototype.remove = function (ecModel, api) { + this._symbolDraw && this._symbolDraw.remove(true); + }; + EffectScatterView.type = 'effectScatter'; + return EffectScatterView; + }(ChartView); + + var EffectScatterSeriesModel = /** @class */function (_super) { + __extends(EffectScatterSeriesModel, _super); + function EffectScatterSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = EffectScatterSeriesModel.type; + _this.hasSymbolVisual = true; + return _this; + } + EffectScatterSeriesModel.prototype.getInitialData = function (option, ecModel) { + return createSeriesData(null, this, { + useEncodeDefaulter: true + }); + }; + EffectScatterSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) { + return selectors.point(data.getItemLayout(dataIndex)); + }; + EffectScatterSeriesModel.type = 'series.effectScatter'; + EffectScatterSeriesModel.dependencies = ['grid', 'polar']; + EffectScatterSeriesModel.defaultOption = { + coordinateSystem: 'cartesian2d', + // zlevel: 0, + z: 2, + legendHoverLink: true, + effectType: 'ripple', + progressive: 0, + // When to show the effect, option: 'render'|'emphasis' + showEffectOn: 'render', + clip: true, + // Ripple effect config + rippleEffect: { + period: 4, + // Scale of ripple + scale: 2.5, + // Brush type can be fill or stroke + brushType: 'fill', + // Ripple number + number: 3 + }, + universalTransition: { + divideShape: 'clone' + }, + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + // Polar coordinate system + // polarIndex: 0, + // Geo coordinate system + // geoIndex: 0, + // symbol: null, // 图形类型 + symbolSize: 10 // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 + // symbolRotate: null, // 图形旋转控制 + // itemStyle: { + // opacity: 1 + // } + }; + + return EffectScatterSeriesModel; + }(SeriesModel); + + function install$l(registers) { + registers.registerChartView(EffectScatterView); + registers.registerSeriesModel(EffectScatterSeriesModel); + registers.registerLayout(pointsLayout('effectScatter')); + } + + var EffectLine = /** @class */function (_super) { + __extends(EffectLine, _super); + function EffectLine(lineData, idx, seriesScope) { + var _this = _super.call(this) || this; + _this.add(_this.createLine(lineData, idx, seriesScope)); + _this._updateEffectSymbol(lineData, idx); + return _this; + } + EffectLine.prototype.createLine = function (lineData, idx, seriesScope) { + return new Line$1(lineData, idx, seriesScope); + }; + EffectLine.prototype._updateEffectSymbol = function (lineData, idx) { + var itemModel = lineData.getItemModel(idx); + var effectModel = itemModel.getModel('effect'); + var size = effectModel.get('symbolSize'); + var symbolType = effectModel.get('symbol'); + if (!isArray(size)) { + size = [size, size]; + } + var lineStyle = lineData.getItemVisual(idx, 'style'); + var color = effectModel.get('color') || lineStyle && lineStyle.stroke; + var symbol = this.childAt(1); + if (this._symbolType !== symbolType) { + // Remove previous + this.remove(symbol); + symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color); + symbol.z2 = 100; + symbol.culling = true; + this.add(symbol); + } + // Symbol may be removed if loop is false + if (!symbol) { + return; + } + // Shadow color is same with color in default + symbol.setStyle('shadowColor', color); + symbol.setStyle(effectModel.getItemStyle(['color'])); + symbol.scaleX = size[0]; + symbol.scaleY = size[1]; + symbol.setColor(color); + this._symbolType = symbolType; + this._symbolScale = size; + this._updateEffectAnimation(lineData, effectModel, idx); + }; + EffectLine.prototype._updateEffectAnimation = function (lineData, effectModel, idx) { + var symbol = this.childAt(1); + if (!symbol) { + return; + } + var points = lineData.getItemLayout(idx); + var period = effectModel.get('period') * 1000; + var loop = effectModel.get('loop'); + var roundTrip = effectModel.get('roundTrip'); + var constantSpeed = effectModel.get('constantSpeed'); + var delayExpr = retrieve(effectModel.get('delay'), function (idx) { + return idx / lineData.count() * period / 3; + }); + // Ignore when updating + symbol.ignore = true; + this._updateAnimationPoints(symbol, points); + if (constantSpeed > 0) { + period = this._getLineLength(symbol) / constantSpeed * 1000; + } + if (period !== this._period || loop !== this._loop || roundTrip !== this._roundTrip) { + symbol.stopAnimation(); + var delayNum = void 0; + if (isFunction(delayExpr)) { + delayNum = delayExpr(idx); + } else { + delayNum = delayExpr; + } + if (symbol.__t > 0) { + delayNum = -period * symbol.__t; + } + this._animateSymbol(symbol, period, delayNum, loop, roundTrip); + } + this._period = period; + this._loop = loop; + this._roundTrip = roundTrip; + }; + EffectLine.prototype._animateSymbol = function (symbol, period, delayNum, loop, roundTrip) { + if (period > 0) { + symbol.__t = 0; + var self_1 = this; + var animator = symbol.animate('', loop).when(roundTrip ? period * 2 : period, { + __t: roundTrip ? 2 : 1 + }).delay(delayNum).during(function () { + self_1._updateSymbolPosition(symbol); + }); + if (!loop) { + animator.done(function () { + self_1.remove(symbol); + }); + } + animator.start(); + } + }; + EffectLine.prototype._getLineLength = function (symbol) { + // Not so accurate + return dist(symbol.__p1, symbol.__cp1) + dist(symbol.__cp1, symbol.__p2); + }; + EffectLine.prototype._updateAnimationPoints = function (symbol, points) { + symbol.__p1 = points[0]; + symbol.__p2 = points[1]; + symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2]; + }; + EffectLine.prototype.updateData = function (lineData, idx, seriesScope) { + this.childAt(0).updateData(lineData, idx, seriesScope); + this._updateEffectSymbol(lineData, idx); + }; + EffectLine.prototype._updateSymbolPosition = function (symbol) { + var p1 = symbol.__p1; + var p2 = symbol.__p2; + var cp1 = symbol.__cp1; + var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t; + var pos = [symbol.x, symbol.y]; + var lastPos = pos.slice(); + var quadraticAt$1 = quadraticAt; + var quadraticDerivativeAt$1 = quadraticDerivativeAt; + pos[0] = quadraticAt$1(p1[0], cp1[0], p2[0], t); + pos[1] = quadraticAt$1(p1[1], cp1[1], p2[1], t); + // Tangent + var tx = symbol.__t < 1 ? quadraticDerivativeAt$1(p1[0], cp1[0], p2[0], t) : quadraticDerivativeAt$1(p2[0], cp1[0], p1[0], 1 - t); + var ty = symbol.__t < 1 ? quadraticDerivativeAt$1(p1[1], cp1[1], p2[1], t) : quadraticDerivativeAt$1(p2[1], cp1[1], p1[1], 1 - t); + symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; + // enable continuity trail for 'line', 'rect', 'roundRect' symbolType + if (this._symbolType === 'line' || this._symbolType === 'rect' || this._symbolType === 'roundRect') { + if (symbol.__lastT !== undefined && symbol.__lastT < symbol.__t) { + symbol.scaleY = dist(lastPos, pos) * 1.05; + // make sure the last segment render within endPoint + if (t === 1) { + pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2; + pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2; + } + } else if (symbol.__lastT === 1) { + // After first loop, symbol.__t does NOT start with 0, so connect p1 to pos directly. + symbol.scaleY = 2 * dist(p1, pos); + } else { + symbol.scaleY = this._symbolScale[1]; + } + } + symbol.__lastT = symbol.__t; + symbol.ignore = false; + symbol.x = pos[0]; + symbol.y = pos[1]; + }; + EffectLine.prototype.updateLayout = function (lineData, idx) { + this.childAt(0).updateLayout(lineData, idx); + var effectModel = lineData.getItemModel(idx).getModel('effect'); + this._updateEffectAnimation(lineData, effectModel, idx); + }; + return EffectLine; + }(Group); + + var Polyline$1 = /** @class */function (_super) { + __extends(Polyline$1, _super); + function Polyline$1(lineData, idx, seriesScope) { + var _this = _super.call(this) || this; + _this._createPolyline(lineData, idx, seriesScope); + return _this; + } + Polyline$1.prototype._createPolyline = function (lineData, idx, seriesScope) { + // let seriesModel = lineData.hostModel; + var points = lineData.getItemLayout(idx); + var line = new Polyline({ + shape: { + points: points + } + }); + this.add(line); + this._updateCommonStl(lineData, idx, seriesScope); + }; + Polyline$1.prototype.updateData = function (lineData, idx, seriesScope) { + var seriesModel = lineData.hostModel; + var line = this.childAt(0); + var target = { + shape: { + points: lineData.getItemLayout(idx) + } + }; + updateProps(line, target, seriesModel, idx); + this._updateCommonStl(lineData, idx, seriesScope); + }; + Polyline$1.prototype._updateCommonStl = function (lineData, idx, seriesScope) { + var line = this.childAt(0); + var itemModel = lineData.getItemModel(idx); + var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle; + var focus = seriesScope && seriesScope.focus; + var blurScope = seriesScope && seriesScope.blurScope; + var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled; + if (!seriesScope || lineData.hasItemOption) { + var emphasisModel = itemModel.getModel('emphasis'); + emphasisLineStyle = emphasisModel.getModel('lineStyle').getLineStyle(); + emphasisDisabled = emphasisModel.get('disabled'); + focus = emphasisModel.get('focus'); + blurScope = emphasisModel.get('blurScope'); + } + line.useStyle(lineData.getItemVisual(idx, 'style')); + line.style.fill = null; + line.style.strokeNoScale = true; + var lineEmphasisState = line.ensureState('emphasis'); + lineEmphasisState.style = emphasisLineStyle; + toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled); + }; + Polyline$1.prototype.updateLayout = function (lineData, idx) { + var polyline = this.childAt(0); + polyline.setShape('points', lineData.getItemLayout(idx)); + }; + return Polyline$1; + }(Group); + + var EffectPolyline = /** @class */function (_super) { + __extends(EffectPolyline, _super); + function EffectPolyline() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._lastFrame = 0; + _this._lastFramePercent = 0; + return _this; + } + // Override + EffectPolyline.prototype.createLine = function (lineData, idx, seriesScope) { + return new Polyline$1(lineData, idx, seriesScope); + }; + // Override + EffectPolyline.prototype._updateAnimationPoints = function (symbol, points) { + this._points = points; + var accLenArr = [0]; + var len = 0; + for (var i = 1; i < points.length; i++) { + var p1 = points[i - 1]; + var p2 = points[i]; + len += dist(p1, p2); + accLenArr.push(len); + } + if (len === 0) { + this._length = 0; + return; + } + for (var i = 0; i < accLenArr.length; i++) { + accLenArr[i] /= len; + } + this._offsets = accLenArr; + this._length = len; + }; + // Override + EffectPolyline.prototype._getLineLength = function () { + return this._length; + }; + // Override + EffectPolyline.prototype._updateSymbolPosition = function (symbol) { + var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t; + var points = this._points; + var offsets = this._offsets; + var len = points.length; + if (!offsets) { + // Has length 0 + return; + } + var lastFrame = this._lastFrame; + var frame; + if (t < this._lastFramePercent) { + // Start from the next frame + // PENDING start from lastFrame ? + var start = Math.min(lastFrame + 1, len - 1); + for (frame = start; frame >= 0; frame--) { + if (offsets[frame] <= t) { + break; + } + } + // PENDING really need to do this ? + frame = Math.min(frame, len - 2); + } else { + for (frame = lastFrame; frame < len; frame++) { + if (offsets[frame] > t) { + break; + } + } + frame = Math.min(frame - 1, len - 2); + } + var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]); + var p0 = points[frame]; + var p1 = points[frame + 1]; + symbol.x = p0[0] * (1 - p) + p * p1[0]; + symbol.y = p0[1] * (1 - p) + p * p1[1]; + var tx = symbol.__t < 1 ? p1[0] - p0[0] : p0[0] - p1[0]; + var ty = symbol.__t < 1 ? p1[1] - p0[1] : p0[1] - p1[1]; + symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; + this._lastFrame = frame; + this._lastFramePercent = t; + symbol.ignore = false; + }; + return EffectPolyline; + }(EffectLine); + + var LargeLinesPathShape = /** @class */function () { + function LargeLinesPathShape() { + this.polyline = false; + this.curveness = 0; + this.segs = []; + } + return LargeLinesPathShape; + }(); + var LargeLinesPath = /** @class */function (_super) { + __extends(LargeLinesPath, _super); + function LargeLinesPath(opts) { + var _this = _super.call(this, opts) || this; + _this._off = 0; + _this.hoverDataIdx = -1; + return _this; + } + LargeLinesPath.prototype.reset = function () { + this.notClear = false; + this._off = 0; + }; + LargeLinesPath.prototype.getDefaultStyle = function () { + return { + stroke: '#000', + fill: null + }; + }; + LargeLinesPath.prototype.getDefaultShape = function () { + return new LargeLinesPathShape(); + }; + LargeLinesPath.prototype.buildPath = function (ctx, shape) { + var segs = shape.segs; + var curveness = shape.curveness; + var i; + if (shape.polyline) { + for (i = this._off; i < segs.length;) { + var count = segs[i++]; + if (count > 0) { + ctx.moveTo(segs[i++], segs[i++]); + for (var k = 1; k < count; k++) { + ctx.lineTo(segs[i++], segs[i++]); + } + } + } + } else { + for (i = this._off; i < segs.length;) { + var x0 = segs[i++]; + var y0 = segs[i++]; + var x1 = segs[i++]; + var y1 = segs[i++]; + ctx.moveTo(x0, y0); + if (curveness > 0) { + var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness; + var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness; + ctx.quadraticCurveTo(x2, y2, x1, y1); + } else { + ctx.lineTo(x1, y1); + } + } + } + if (this.incremental) { + this._off = i; + this.notClear = true; + } + }; + LargeLinesPath.prototype.findDataIndex = function (x, y) { + var shape = this.shape; + var segs = shape.segs; + var curveness = shape.curveness; + var lineWidth = this.style.lineWidth; + if (shape.polyline) { + var dataIndex = 0; + for (var i = 0; i < segs.length;) { + var count = segs[i++]; + if (count > 0) { + var x0 = segs[i++]; + var y0 = segs[i++]; + for (var k = 1; k < count; k++) { + var x1 = segs[i++]; + var y1 = segs[i++]; + if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) { + return dataIndex; + } + } + } + dataIndex++; + } + } else { + var dataIndex = 0; + for (var i = 0; i < segs.length;) { + var x0 = segs[i++]; + var y0 = segs[i++]; + var x1 = segs[i++]; + var y1 = segs[i++]; + if (curveness > 0) { + var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness; + var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness; + if (containStroke$2(x0, y0, x2, y2, x1, y1, lineWidth, x, y)) { + return dataIndex; + } + } else { + if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) { + return dataIndex; + } + } + dataIndex++; + } + } + return -1; + }; + LargeLinesPath.prototype.contain = function (x, y) { + var localPos = this.transformCoordToLocal(x, y); + var rect = this.getBoundingRect(); + x = localPos[0]; + y = localPos[1]; + if (rect.contain(x, y)) { + // Cache found data index. + var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y); + return dataIdx >= 0; + } + this.hoverDataIdx = -1; + return false; + }; + LargeLinesPath.prototype.getBoundingRect = function () { + // Ignore stroke for large symbol draw. + var rect = this._rect; + if (!rect) { + var shape = this.shape; + var points = shape.segs; + var minX = Infinity; + var minY = Infinity; + var maxX = -Infinity; + var maxY = -Infinity; + for (var i = 0; i < points.length;) { + var x = points[i++]; + var y = points[i++]; + minX = Math.min(x, minX); + maxX = Math.max(x, maxX); + minY = Math.min(y, minY); + maxY = Math.max(y, maxY); + } + rect = this._rect = new BoundingRect(minX, minY, maxX, maxY); + } + return rect; + }; + return LargeLinesPath; + }(Path); + var LargeLineDraw = /** @class */function () { + function LargeLineDraw() { + this.group = new Group(); + } + /** + * Update symbols draw by new data + */ + LargeLineDraw.prototype.updateData = function (data) { + this._clear(); + var lineEl = this._create(); + lineEl.setShape({ + segs: data.getLayout('linesPoints') + }); + this._setCommon(lineEl, data); + }; + /** + * @override + */ + LargeLineDraw.prototype.incrementalPrepareUpdate = function (data) { + this.group.removeAll(); + this._clear(); + }; + /** + * @override + */ + LargeLineDraw.prototype.incrementalUpdate = function (taskParams, data) { + var lastAdded = this._newAdded[0]; + var linePoints = data.getLayout('linesPoints'); + var oldSegs = lastAdded && lastAdded.shape.segs; + // Merging the exists. Each element has 1e4 points. + // Consider the performance balance between too much elements and too much points in one shape(may affect hover optimization) + if (oldSegs && oldSegs.length < 2e4) { + var oldLen = oldSegs.length; + var newSegs = new Float32Array(oldLen + linePoints.length); + // Concat two array + newSegs.set(oldSegs); + newSegs.set(linePoints, oldLen); + lastAdded.setShape({ + segs: newSegs + }); + } else { + // Clear + this._newAdded = []; + var lineEl = this._create(); + lineEl.incremental = true; + lineEl.setShape({ + segs: linePoints + }); + this._setCommon(lineEl, data); + lineEl.__startIndex = taskParams.start; + } + }; + /** + * @override + */ + LargeLineDraw.prototype.remove = function () { + this._clear(); + }; + LargeLineDraw.prototype.eachRendered = function (cb) { + this._newAdded[0] && cb(this._newAdded[0]); + }; + LargeLineDraw.prototype._create = function () { + var lineEl = new LargeLinesPath({ + cursor: 'default', + ignoreCoarsePointer: true + }); + this._newAdded.push(lineEl); + this.group.add(lineEl); + return lineEl; + }; + LargeLineDraw.prototype._setCommon = function (lineEl, data, isIncremental) { + var hostModel = data.hostModel; + lineEl.setShape({ + polyline: hostModel.get('polyline'), + curveness: hostModel.get(['lineStyle', 'curveness']) + }); + lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle()); + lineEl.style.strokeNoScale = true; + var style = data.getVisual('style'); + if (style && style.stroke) { + lineEl.setStyle('stroke', style.stroke); + } + lineEl.setStyle('fill', null); + var ecData = getECData(lineEl); + // Enable tooltip + // PENDING May have performance issue when path is extremely large + ecData.seriesIndex = hostModel.seriesIndex; + lineEl.on('mousemove', function (e) { + ecData.dataIndex = null; + var dataIndex = lineEl.hoverDataIdx; + if (dataIndex > 0) { + // Provide dataIndex for tooltip + ecData.dataIndex = dataIndex + lineEl.__startIndex; + } + }); + }; + LargeLineDraw.prototype._clear = function () { + this._newAdded = []; + this.group.removeAll(); + }; + return LargeLineDraw; + }(); + + var linesLayout = { + seriesType: 'lines', + plan: createRenderPlanner(), + reset: function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + if (!coordSys) { + if ("development" !== 'production') { + error('The lines series must have a coordinate system.'); + } + return; + } + var isPolyline = seriesModel.get('polyline'); + var isLarge = seriesModel.pipelineContext.large; + return { + progress: function (params, lineData) { + var lineCoords = []; + if (isLarge) { + var points = void 0; + var segCount = params.end - params.start; + if (isPolyline) { + var totalCoordsCount = 0; + for (var i = params.start; i < params.end; i++) { + totalCoordsCount += seriesModel.getLineCoordsCount(i); + } + points = new Float32Array(segCount + totalCoordsCount * 2); + } else { + points = new Float32Array(segCount * 4); + } + var offset = 0; + var pt = []; + for (var i = params.start; i < params.end; i++) { + var len = seriesModel.getLineCoords(i, lineCoords); + if (isPolyline) { + points[offset++] = len; + } + for (var k = 0; k < len; k++) { + pt = coordSys.dataToPoint(lineCoords[k], false, pt); + points[offset++] = pt[0]; + points[offset++] = pt[1]; + } + } + lineData.setLayout('linesPoints', points); + } else { + for (var i = params.start; i < params.end; i++) { + var itemModel = lineData.getItemModel(i); + var len = seriesModel.getLineCoords(i, lineCoords); + var pts = []; + if (isPolyline) { + for (var j = 0; j < len; j++) { + pts.push(coordSys.dataToPoint(lineCoords[j])); + } + } else { + pts[0] = coordSys.dataToPoint(lineCoords[0]); + pts[1] = coordSys.dataToPoint(lineCoords[1]); + var curveness = itemModel.get(['lineStyle', 'curveness']); + if (+curveness) { + pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness]; + } + } + lineData.setItemLayout(i, pts); + } + } + } + }; + } + }; + + var LinesView = /** @class */function (_super) { + __extends(LinesView, _super); + function LinesView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = LinesView.type; + return _this; + } + LinesView.prototype.render = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var lineDraw = this._updateLineDraw(data, seriesModel); + var zlevel = seriesModel.get('zlevel'); + var trailLength = seriesModel.get(['effect', 'trailLength']); + var zr = api.getZr(); + // Avoid the drag cause ghost shadow + // FIXME Better way ? + // SVG doesn't support + var isSvg = zr.painter.getType() === 'svg'; + if (!isSvg) { + zr.painter.getLayer(zlevel).clear(true); + } + // Config layer with motion blur + if (this._lastZlevel != null && !isSvg) { + zr.configLayer(this._lastZlevel, { + motionBlur: false + }); + } + if (this._showEffect(seriesModel) && trailLength > 0) { + if (!isSvg) { + zr.configLayer(zlevel, { + motionBlur: true, + lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0) + }); + } else if ("development" !== 'production') { + console.warn('SVG render mode doesn\'t support lines with trail effect'); + } + } + lineDraw.updateData(data); + var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel); + if (clipPath) { + this.group.setClipPath(clipPath); + } else { + this.group.removeClipPath(); + } + this._lastZlevel = zlevel; + this._finished = true; + }; + LinesView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var lineDraw = this._updateLineDraw(data, seriesModel); + lineDraw.incrementalPrepareUpdate(data); + this._clearLayer(api); + this._finished = false; + }; + LinesView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) { + this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData()); + this._finished = taskParams.end === seriesModel.getData().count(); + }; + LinesView.prototype.eachRendered = function (cb) { + this._lineDraw && this._lineDraw.eachRendered(cb); + }; + LinesView.prototype.updateTransform = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var pipelineContext = seriesModel.pipelineContext; + if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) { + // TODO Don't have to do update in large mode. Only do it when there are millions of data. + return { + update: true + }; + } else { + // TODO Use same logic with ScatterView. + // Manually update layout + var res = linesLayout.reset(seriesModel, ecModel, api); + if (res.progress) { + res.progress({ + start: 0, + end: data.count(), + count: data.count() + }, data); + } + // Not in large mode + this._lineDraw.updateLayout(); + this._clearLayer(api); + } + }; + LinesView.prototype._updateLineDraw = function (data, seriesModel) { + var lineDraw = this._lineDraw; + var hasEffect = this._showEffect(seriesModel); + var isPolyline = !!seriesModel.get('polyline'); + var pipelineContext = seriesModel.pipelineContext; + var isLargeDraw = pipelineContext.large; + if ("development" !== 'production') { + if (hasEffect && isLargeDraw) { + console.warn('Large lines not support effect'); + } + } + if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) { + if (lineDraw) { + lineDraw.remove(); + } + lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline$1 : hasEffect ? EffectLine : Line$1); + this._hasEffet = hasEffect; + this._isPolyline = isPolyline; + this._isLargeDraw = isLargeDraw; + } + this.group.add(lineDraw.group); + return lineDraw; + }; + LinesView.prototype._showEffect = function (seriesModel) { + return !!seriesModel.get(['effect', 'show']); + }; + LinesView.prototype._clearLayer = function (api) { + // Not use motion when dragging or zooming + var zr = api.getZr(); + var isSvg = zr.painter.getType() === 'svg'; + if (!isSvg && this._lastZlevel != null) { + zr.painter.getLayer(this._lastZlevel).clear(true); + } + }; + LinesView.prototype.remove = function (ecModel, api) { + this._lineDraw && this._lineDraw.remove(); + this._lineDraw = null; + // Clear motion when lineDraw is removed + this._clearLayer(api); + }; + LinesView.prototype.dispose = function (ecModel, api) { + this.remove(ecModel, api); + }; + LinesView.type = 'lines'; + return LinesView; + }(ChartView); + + var Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array; + var Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array; + function compatEc2(seriesOpt) { + var data = seriesOpt.data; + if (data && data[0] && data[0][0] && data[0][0].coord) { + if ("development" !== 'production') { + console.warn('Lines data configuration has been changed to' + ' { coords:[[1,2],[2,3]] }'); + } + seriesOpt.data = map(data, function (itemOpt) { + var coords = [itemOpt[0].coord, itemOpt[1].coord]; + var target = { + coords: coords + }; + if (itemOpt[0].name) { + target.fromName = itemOpt[0].name; + } + if (itemOpt[1].name) { + target.toName = itemOpt[1].name; + } + return mergeAll([target, itemOpt[0], itemOpt[1]]); + }); + } + } + var LinesSeriesModel = /** @class */function (_super) { + __extends(LinesSeriesModel, _super); + function LinesSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = LinesSeriesModel.type; + _this.visualStyleAccessPath = 'lineStyle'; + _this.visualDrawType = 'stroke'; + return _this; + } + LinesSeriesModel.prototype.init = function (option) { + // The input data may be null/undefined. + option.data = option.data || []; + // Not using preprocessor because mergeOption may not have series.type + compatEc2(option); + var result = this._processFlatCoordsArray(option.data); + this._flatCoords = result.flatCoords; + this._flatCoordsOffset = result.flatCoordsOffset; + if (result.flatCoords) { + option.data = new Float32Array(result.count); + } + _super.prototype.init.apply(this, arguments); + }; + LinesSeriesModel.prototype.mergeOption = function (option) { + compatEc2(option); + if (option.data) { + // Only update when have option data to merge. + var result = this._processFlatCoordsArray(option.data); + this._flatCoords = result.flatCoords; + this._flatCoordsOffset = result.flatCoordsOffset; + if (result.flatCoords) { + option.data = new Float32Array(result.count); + } + } + _super.prototype.mergeOption.apply(this, arguments); + }; + LinesSeriesModel.prototype.appendData = function (params) { + var result = this._processFlatCoordsArray(params.data); + if (result.flatCoords) { + if (!this._flatCoords) { + this._flatCoords = result.flatCoords; + this._flatCoordsOffset = result.flatCoordsOffset; + } else { + this._flatCoords = concatArray(this._flatCoords, result.flatCoords); + this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset); + } + params.data = new Float32Array(result.count); + } + this.getRawData().appendData(params.data); + }; + LinesSeriesModel.prototype._getCoordsFromItemModel = function (idx) { + var itemModel = this.getData().getItemModel(idx); + var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow('coords'); + if ("development" !== 'production') { + if (!(coords instanceof Array && coords.length > 0 && coords[0] instanceof Array)) { + throw new Error('Invalid coords ' + JSON.stringify(coords) + '. Lines must have 2d coords array in data item.'); + } + } + return coords; + }; + LinesSeriesModel.prototype.getLineCoordsCount = function (idx) { + if (this._flatCoordsOffset) { + return this._flatCoordsOffset[idx * 2 + 1]; + } else { + return this._getCoordsFromItemModel(idx).length; + } + }; + LinesSeriesModel.prototype.getLineCoords = function (idx, out) { + if (this._flatCoordsOffset) { + var offset = this._flatCoordsOffset[idx * 2]; + var len = this._flatCoordsOffset[idx * 2 + 1]; + for (var i = 0; i < len; i++) { + out[i] = out[i] || []; + out[i][0] = this._flatCoords[offset + i * 2]; + out[i][1] = this._flatCoords[offset + i * 2 + 1]; + } + return len; + } else { + var coords = this._getCoordsFromItemModel(idx); + for (var i = 0; i < coords.length; i++) { + out[i] = out[i] || []; + out[i][0] = coords[i][0]; + out[i][1] = coords[i][1]; + } + return coords.length; + } + }; + LinesSeriesModel.prototype._processFlatCoordsArray = function (data) { + var startOffset = 0; + if (this._flatCoords) { + startOffset = this._flatCoords.length; + } + // Stored as a typed array. In format + // Points Count(2) | x | y | x | y | Points Count(3) | x | y | x | y | x | y | + if (isNumber(data[0])) { + var len = data.length; + // Store offset and len of each segment + var coordsOffsetAndLenStorage = new Uint32Arr(len); + var coordsStorage = new Float64Arr(len); + var coordsCursor = 0; + var offsetCursor = 0; + var dataCount = 0; + for (var i = 0; i < len;) { + dataCount++; + var count = data[i++]; + // Offset + coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; + // Len + coordsOffsetAndLenStorage[offsetCursor++] = count; + for (var k = 0; k < count; k++) { + var x = data[i++]; + var y = data[i++]; + coordsStorage[coordsCursor++] = x; + coordsStorage[coordsCursor++] = y; + if (i > len) { + if ("development" !== 'production') { + throw new Error('Invalid data format.'); + } + } + } + } + return { + flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor), + flatCoords: coordsStorage, + count: dataCount + }; + } + return { + flatCoordsOffset: null, + flatCoords: null, + count: data.length + }; + }; + LinesSeriesModel.prototype.getInitialData = function (option, ecModel) { + if ("development" !== 'production') { + var CoordSys = CoordinateSystemManager.get(option.coordinateSystem); + if (!CoordSys) { + throw new Error('Unknown coordinate system ' + option.coordinateSystem); + } + } + var lineData = new SeriesData(['value'], this); + lineData.hasItemOption = false; + lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) { + // dataItem is simply coords + if (dataItem instanceof Array) { + return NaN; + } else { + lineData.hasItemOption = true; + var value = dataItem.value; + if (value != null) { + return value instanceof Array ? value[dimIndex] : value; + } + } + }); + return lineData; + }; + LinesSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + var data = this.getData(); + var itemModel = data.getItemModel(dataIndex); + var name = itemModel.get('name'); + if (name) { + return name; + } + var fromName = itemModel.get('fromName'); + var toName = itemModel.get('toName'); + var nameArr = []; + fromName != null && nameArr.push(fromName); + toName != null && nameArr.push(toName); + return createTooltipMarkup('nameValue', { + name: nameArr.join(' > ') + }); + }; + LinesSeriesModel.prototype.preventIncremental = function () { + return !!this.get(['effect', 'show']); + }; + LinesSeriesModel.prototype.getProgressive = function () { + var progressive = this.option.progressive; + if (progressive == null) { + return this.option.large ? 1e4 : this.get('progressive'); + } + return progressive; + }; + LinesSeriesModel.prototype.getProgressiveThreshold = function () { + var progressiveThreshold = this.option.progressiveThreshold; + if (progressiveThreshold == null) { + return this.option.large ? 2e4 : this.get('progressiveThreshold'); + } + return progressiveThreshold; + }; + LinesSeriesModel.prototype.getZLevelKey = function () { + var effectModel = this.getModel('effect'); + var trailLength = effectModel.get('trailLength'); + return this.getData().count() > this.getProgressiveThreshold() + // Each progressive series has individual key. + ? this.id : effectModel.get('show') && trailLength > 0 ? trailLength + '' : ''; + }; + LinesSeriesModel.type = 'series.lines'; + LinesSeriesModel.dependencies = ['grid', 'polar', 'geo', 'calendar']; + LinesSeriesModel.defaultOption = { + coordinateSystem: 'geo', + // zlevel: 0, + z: 2, + legendHoverLink: true, + // Cartesian coordinate system + xAxisIndex: 0, + yAxisIndex: 0, + symbol: ['none', 'none'], + symbolSize: [10, 10], + // Geo coordinate system + geoIndex: 0, + effect: { + show: false, + period: 4, + constantSpeed: 0, + symbol: 'circle', + symbolSize: 3, + loop: true, + trailLength: 0.2 + }, + large: false, + // Available when large is true + largeThreshold: 2000, + polyline: false, + clip: true, + label: { + show: false, + position: 'end' + // distance: 5, + // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 + }, + + lineStyle: { + opacity: 0.5 + } + }; + return LinesSeriesModel; + }(SeriesModel); + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function normalize$3(a) { + if (!(a instanceof Array)) { + a = [a, a]; + } + return a; + } + var linesVisual = { + seriesType: 'lines', + reset: function (seriesModel) { + var symbolType = normalize$3(seriesModel.get('symbol')); + var symbolSize = normalize$3(seriesModel.get('symbolSize')); + var data = seriesModel.getData(); + data.setVisual('fromSymbol', symbolType && symbolType[0]); + data.setVisual('toSymbol', symbolType && symbolType[1]); + data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]); + data.setVisual('toSymbolSize', symbolSize && symbolSize[1]); + function dataEach(data, idx) { + var itemModel = data.getItemModel(idx); + var symbolType = normalize$3(itemModel.getShallow('symbol', true)); + var symbolSize = normalize$3(itemModel.getShallow('symbolSize', true)); + symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]); + symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]); + symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]); + symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]); + } + return { + dataEach: data.hasItemOption ? dataEach : null + }; + } + }; + + function install$m(registers) { + registers.registerChartView(LinesView); + registers.registerSeriesModel(LinesSeriesModel); + registers.registerLayout(linesLayout); + registers.registerVisual(linesVisual); + } + + var GRADIENT_LEVELS = 256; + var HeatmapLayer = /** @class */function () { + function HeatmapLayer() { + this.blurSize = 30; + this.pointSize = 20; + this.maxOpacity = 1; + this.minOpacity = 0; + this._gradientPixels = { + inRange: null, + outOfRange: null + }; + var canvas = platformApi.createCanvas(); + this.canvas = canvas; + } + /** + * Renders Heatmap and returns the rendered canvas + * @param data array of data, each has x, y, value + * @param width canvas width + * @param height canvas height + */ + HeatmapLayer.prototype.update = function (data, width, height, normalize, colorFunc, isInRange) { + var brush = this._getBrush(); + var gradientInRange = this._getGradient(colorFunc, 'inRange'); + var gradientOutOfRange = this._getGradient(colorFunc, 'outOfRange'); + var r = this.pointSize + this.blurSize; + var canvas = this.canvas; + var ctx = canvas.getContext('2d'); + var len = data.length; + canvas.width = width; + canvas.height = height; + for (var i = 0; i < len; ++i) { + var p = data[i]; + var x = p[0]; + var y = p[1]; + var value = p[2]; + // calculate alpha using value + var alpha = normalize(value); + // draw with the circle brush with alpha + ctx.globalAlpha = alpha; + ctx.drawImage(brush, x - r, y - r); + } + if (!canvas.width || !canvas.height) { + // Avoid "Uncaught DOMException: Failed to execute 'getImageData' on + // 'CanvasRenderingContext2D': The source height is 0." + return canvas; + } + // colorize the canvas using alpha value and set with gradient + var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); + var pixels = imageData.data; + var offset = 0; + var pixelLen = pixels.length; + var minOpacity = this.minOpacity; + var maxOpacity = this.maxOpacity; + var diffOpacity = maxOpacity - minOpacity; + while (offset < pixelLen) { + var alpha = pixels[offset + 3] / 256; + var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4; + // Simple optimize to ignore the empty data + if (alpha > 0) { + var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; + // Any alpha > 0 will be mapped to [minOpacity, maxOpacity] + alpha > 0 && (alpha = alpha * diffOpacity + minOpacity); + pixels[offset++] = gradient[gradientOffset]; + pixels[offset++] = gradient[gradientOffset + 1]; + pixels[offset++] = gradient[gradientOffset + 2]; + pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256; + } else { + offset += 4; + } + } + ctx.putImageData(imageData, 0, 0); + return canvas; + }; + /** + * get canvas of a black circle brush used for canvas to draw later + */ + HeatmapLayer.prototype._getBrush = function () { + var brushCanvas = this._brushCanvas || (this._brushCanvas = platformApi.createCanvas()); + // set brush size + var r = this.pointSize + this.blurSize; + var d = r * 2; + brushCanvas.width = d; + brushCanvas.height = d; + var ctx = brushCanvas.getContext('2d'); + ctx.clearRect(0, 0, d, d); + // in order to render shadow without the distinct circle, + // draw the distinct circle in an invisible place, + // and use shadowOffset to draw shadow in the center of the canvas + ctx.shadowOffsetX = d; + ctx.shadowBlur = this.blurSize; + // draw the shadow in black, and use alpha and shadow blur to generate + // color in color map + ctx.shadowColor = '#000'; + // draw circle in the left to the canvas + ctx.beginPath(); + ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true); + ctx.closePath(); + ctx.fill(); + return brushCanvas; + }; + /** + * get gradient color map + * @private + */ + HeatmapLayer.prototype._getGradient = function (colorFunc, state) { + var gradientPixels = this._gradientPixels; + var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4)); + var color = [0, 0, 0, 0]; + var off = 0; + for (var i = 0; i < 256; i++) { + colorFunc[state](i / 255, true, color); + pixelsSingleState[off++] = color[0]; + pixelsSingleState[off++] = color[1]; + pixelsSingleState[off++] = color[2]; + pixelsSingleState[off++] = color[3]; + } + return pixelsSingleState; + }; + return HeatmapLayer; + }(); + + function getIsInPiecewiseRange(dataExtent, pieceList, selected) { + var dataSpan = dataExtent[1] - dataExtent[0]; + pieceList = map(pieceList, function (piece) { + return { + interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan] + }; + }); + var len = pieceList.length; + var lastIndex = 0; + return function (val) { + var i; + // Try to find in the location of the last found + for (i = lastIndex; i < len; i++) { + var interval = pieceList[i].interval; + if (interval[0] <= val && val <= interval[1]) { + lastIndex = i; + break; + } + } + if (i === len) { + // Not found, back interation + for (i = lastIndex - 1; i >= 0; i--) { + var interval = pieceList[i].interval; + if (interval[0] <= val && val <= interval[1]) { + lastIndex = i; + break; + } + } + } + return i >= 0 && i < len && selected[i]; + }; + } + function getIsInContinuousRange(dataExtent, range) { + var dataSpan = dataExtent[1] - dataExtent[0]; + range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan]; + return function (val) { + return val >= range[0] && val <= range[1]; + }; + } + function isGeoCoordSys(coordSys) { + var dimensions = coordSys.dimensions; + // Not use coordSys.type === 'geo' because coordSys maybe extended + return dimensions[0] === 'lng' && dimensions[1] === 'lat'; + } + var HeatmapView = /** @class */function (_super) { + __extends(HeatmapView, _super); + function HeatmapView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = HeatmapView.type; + return _this; + } + HeatmapView.prototype.render = function (seriesModel, ecModel, api) { + var visualMapOfThisSeries; + ecModel.eachComponent('visualMap', function (visualMap) { + visualMap.eachTargetSeries(function (targetSeries) { + if (targetSeries === seriesModel) { + visualMapOfThisSeries = visualMap; + } + }); + }); + if ("development" !== 'production') { + if (!visualMapOfThisSeries) { + throw new Error('Heatmap must use with visualMap'); + } + } + // Clear previously rendered progressive elements. + this._progressiveEls = null; + this.group.removeAll(); + var coordSys = seriesModel.coordinateSystem; + if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') { + this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count()); + } else if (isGeoCoordSys(coordSys)) { + this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api); + } + }; + HeatmapView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) { + this.group.removeAll(); + }; + HeatmapView.prototype.incrementalRender = function (params, seriesModel, ecModel, api) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys) { + // geo does not support incremental rendering? + if (isGeoCoordSys(coordSys)) { + this.render(seriesModel, ecModel, api); + } else { + this._progressiveEls = []; + this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true); + } + } + }; + HeatmapView.prototype.eachRendered = function (cb) { + traverseElements(this._progressiveEls || this.group, cb); + }; + HeatmapView.prototype._renderOnCartesianAndCalendar = function (seriesModel, api, start, end, incremental) { + var coordSys = seriesModel.coordinateSystem; + var isCartesian2d = isCoordinateSystemType(coordSys, 'cartesian2d'); + var width; + var height; + var xAxisExtent; + var yAxisExtent; + if (isCartesian2d) { + var xAxis = coordSys.getAxis('x'); + var yAxis = coordSys.getAxis('y'); + if ("development" !== 'production') { + if (!(xAxis.type === 'category' && yAxis.type === 'category')) { + throw new Error('Heatmap on cartesian must have two category axes'); + } + if (!(xAxis.onBand && yAxis.onBand)) { + throw new Error('Heatmap on cartesian must have two axes with boundaryGap true'); + } + } + // add 0.5px to avoid the gaps + width = xAxis.getBandWidth() + .5; + height = yAxis.getBandWidth() + .5; + xAxisExtent = xAxis.scale.getExtent(); + yAxisExtent = yAxis.scale.getExtent(); + } + var group = this.group; + var data = seriesModel.getData(); + var emphasisStyle = seriesModel.getModel(['emphasis', 'itemStyle']).getItemStyle(); + var blurStyle = seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(); + var selectStyle = seriesModel.getModel(['select', 'itemStyle']).getItemStyle(); + var borderRadius = seriesModel.get(['itemStyle', 'borderRadius']); + var labelStatesModels = getLabelStatesModels(seriesModel); + var emphasisModel = seriesModel.getModel('emphasis'); + var focus = emphasisModel.get('focus'); + var blurScope = emphasisModel.get('blurScope'); + var emphasisDisabled = emphasisModel.get('disabled'); + var dataDims = isCartesian2d ? [data.mapDimension('x'), data.mapDimension('y'), data.mapDimension('value')] : [data.mapDimension('time'), data.mapDimension('value')]; + for (var idx = start; idx < end; idx++) { + var rect = void 0; + var style = data.getItemVisual(idx, 'style'); + if (isCartesian2d) { + var dataDimX = data.get(dataDims[0], idx); + var dataDimY = data.get(dataDims[1], idx); + // Ignore empty data and out of extent data + if (isNaN(data.get(dataDims[2], idx)) || isNaN(dataDimX) || isNaN(dataDimY) || dataDimX < xAxisExtent[0] || dataDimX > xAxisExtent[1] || dataDimY < yAxisExtent[0] || dataDimY > yAxisExtent[1]) { + continue; + } + var point = coordSys.dataToPoint([dataDimX, dataDimY]); + rect = new Rect({ + shape: { + x: point[0] - width / 2, + y: point[1] - height / 2, + width: width, + height: height + }, + style: style + }); + } else { + // Ignore empty data + if (isNaN(data.get(dataDims[1], idx))) { + continue; + } + rect = new Rect({ + z2: 1, + shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape, + style: style + }); + } + // Optimization for large dataset + if (data.hasItemOption) { + var itemModel = data.getItemModel(idx); + var emphasisModel_1 = itemModel.getModel('emphasis'); + emphasisStyle = emphasisModel_1.getModel('itemStyle').getItemStyle(); + blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle(); + selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle(); + // Each item value struct in the data would be firstly + // { + // itemStyle: { borderRadius: [30, 30] }, + // value: [2022, 02, 22] + // } + borderRadius = itemModel.get(['itemStyle', 'borderRadius']); + focus = emphasisModel_1.get('focus'); + blurScope = emphasisModel_1.get('blurScope'); + emphasisDisabled = emphasisModel_1.get('disabled'); + labelStatesModels = getLabelStatesModels(itemModel); + } + rect.shape.r = borderRadius; + var rawValue = seriesModel.getRawValue(idx); + var defaultText = '-'; + if (rawValue && rawValue[2] != null) { + defaultText = rawValue[2] + ''; + } + setLabelStyle(rect, labelStatesModels, { + labelFetcher: seriesModel, + labelDataIndex: idx, + defaultOpacity: style.opacity, + defaultText: defaultText + }); + rect.ensureState('emphasis').style = emphasisStyle; + rect.ensureState('blur').style = blurStyle; + rect.ensureState('select').style = selectStyle; + toggleHoverEmphasis(rect, focus, blurScope, emphasisDisabled); + rect.incremental = incremental; + // PENDING + if (incremental) { + // Rect must use hover layer if it's incremental. + rect.states.emphasis.hoverLayer = true; + } + group.add(rect); + data.setItemGraphicEl(idx, rect); + if (this._progressiveEls) { + this._progressiveEls.push(rect); + } + } + }; + HeatmapView.prototype._renderOnGeo = function (geo, seriesModel, visualMapModel, api) { + var inRangeVisuals = visualMapModel.targetVisuals.inRange; + var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; + // if (!visualMapping) { + // throw new Error('Data range must have color visuals'); + // } + var data = seriesModel.getData(); + var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer(); + hmLayer.blurSize = seriesModel.get('blurSize'); + hmLayer.pointSize = seriesModel.get('pointSize'); + hmLayer.minOpacity = seriesModel.get('minOpacity'); + hmLayer.maxOpacity = seriesModel.get('maxOpacity'); + var rect = geo.getViewRect().clone(); + var roamTransform = geo.getRoamTransform(); + rect.applyTransform(roamTransform); + // Clamp on viewport + var x = Math.max(rect.x, 0); + var y = Math.max(rect.y, 0); + var x2 = Math.min(rect.width + rect.x, api.getWidth()); + var y2 = Math.min(rect.height + rect.y, api.getHeight()); + var width = x2 - x; + var height = y2 - y; + var dims = [data.mapDimension('lng'), data.mapDimension('lat'), data.mapDimension('value')]; + var points = data.mapArray(dims, function (lng, lat, value) { + var pt = geo.dataToPoint([lng, lat]); + pt[0] -= x; + pt[1] -= y; + pt.push(value); + return pt; + }); + var dataExtent = visualMapModel.getExtent(); + var isInRange = visualMapModel.type === 'visualMap.continuous' ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected); + hmLayer.update(points, width, height, inRangeVisuals.color.getNormalizer(), { + inRange: inRangeVisuals.color.getColorMapper(), + outOfRange: outOfRangeVisuals.color.getColorMapper() + }, isInRange); + var img = new ZRImage({ + style: { + width: width, + height: height, + x: x, + y: y, + image: hmLayer.canvas + }, + silent: true + }); + this.group.add(img); + }; + HeatmapView.type = 'heatmap'; + return HeatmapView; + }(ChartView); + + var HeatmapSeriesModel = /** @class */function (_super) { + __extends(HeatmapSeriesModel, _super); + function HeatmapSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = HeatmapSeriesModel.type; + return _this; + } + HeatmapSeriesModel.prototype.getInitialData = function (option, ecModel) { + return createSeriesData(null, this, { + generateCoord: 'value' + }); + }; + HeatmapSeriesModel.prototype.preventIncremental = function () { + var coordSysCreator = CoordinateSystemManager.get(this.get('coordinateSystem')); + if (coordSysCreator && coordSysCreator.dimensions) { + return coordSysCreator.dimensions[0] === 'lng' && coordSysCreator.dimensions[1] === 'lat'; + } + }; + HeatmapSeriesModel.type = 'series.heatmap'; + HeatmapSeriesModel.dependencies = ['grid', 'geo', 'calendar']; + HeatmapSeriesModel.defaultOption = { + coordinateSystem: 'cartesian2d', + // zlevel: 0, + z: 2, + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + // Geo coordinate system + geoIndex: 0, + blurSize: 30, + pointSize: 20, + maxOpacity: 1, + minOpacity: 0, + select: { + itemStyle: { + borderColor: '#212121' + } + } + }; + return HeatmapSeriesModel; + }(SeriesModel); + + function install$n(registers) { + registers.registerChartView(HeatmapView); + registers.registerSeriesModel(HeatmapSeriesModel); + } + + var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth']; + // index: +isHorizontal + var LAYOUT_ATTRS = [{ + xy: 'x', + wh: 'width', + index: 0, + posDesc: ['left', 'right'] + }, { + xy: 'y', + wh: 'height', + index: 1, + posDesc: ['top', 'bottom'] + }]; + var pathForLineWidth = new Circle(); + var PictorialBarView = /** @class */function (_super) { + __extends(PictorialBarView, _super); + function PictorialBarView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = PictorialBarView.type; + return _this; + } + PictorialBarView.prototype.render = function (seriesModel, ecModel, api) { + var group = this.group; + var data = seriesModel.getData(); + var oldData = this._data; + var cartesian = seriesModel.coordinateSystem; + var baseAxis = cartesian.getBaseAxis(); + var isHorizontal = baseAxis.isHorizontal(); + var coordSysRect = cartesian.master.getRect(); + var opt = { + ecSize: { + width: api.getWidth(), + height: api.getHeight() + }, + seriesModel: seriesModel, + coordSys: cartesian, + coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]], + isHorizontal: isHorizontal, + valueDim: LAYOUT_ATTRS[+isHorizontal], + categoryDim: LAYOUT_ATTRS[1 - +isHorizontal] + }; + data.diff(oldData).add(function (dataIndex) { + if (!data.hasValue(dataIndex)) { + return; + } + var itemModel = getItemModel(data, dataIndex); + var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt); + var bar = createBar(data, opt, symbolMeta); + data.setItemGraphicEl(dataIndex, bar); + group.add(bar); + updateCommon$1(bar, opt, symbolMeta); + }).update(function (newIndex, oldIndex) { + var bar = oldData.getItemGraphicEl(oldIndex); + if (!data.hasValue(newIndex)) { + group.remove(bar); + return; + } + var itemModel = getItemModel(data, newIndex); + var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt); + var pictorialShapeStr = getShapeStr(data, symbolMeta); + if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) { + group.remove(bar); + data.setItemGraphicEl(newIndex, null); + bar = null; + } + if (bar) { + updateBar(bar, opt, symbolMeta); + } else { + bar = createBar(data, opt, symbolMeta, true); + } + data.setItemGraphicEl(newIndex, bar); + bar.__pictorialSymbolMeta = symbolMeta; + // Add back + group.add(bar); + updateCommon$1(bar, opt, symbolMeta); + }).remove(function (dataIndex) { + var bar = oldData.getItemGraphicEl(dataIndex); + bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar); + }).execute(); + // Do clipping + var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null; + if (clipPath) { + group.setClipPath(clipPath); + } else { + group.removeClipPath(); + } + this._data = data; + return this.group; + }; + PictorialBarView.prototype.remove = function (ecModel, api) { + var group = this.group; + var data = this._data; + if (ecModel.get('animation')) { + if (data) { + data.eachItemGraphicEl(function (bar) { + removeBar(data, getECData(bar).dataIndex, ecModel, bar); + }); + } + } else { + group.removeAll(); + } + }; + PictorialBarView.type = 'pictorialBar'; + return PictorialBarView; + }(ChartView); + // Set or calculate default value about symbol, and calculate layout info. + function getSymbolMeta(data, dataIndex, itemModel, opt) { + var layout = data.getItemLayout(dataIndex); + var symbolRepeat = itemModel.get('symbolRepeat'); + var symbolClip = itemModel.get('symbolClip'); + var symbolPosition = itemModel.get('symbolPosition') || 'start'; + var symbolRotate = itemModel.get('symbolRotate'); + var rotation = (symbolRotate || 0) * Math.PI / 180 || 0; + var symbolPatternSize = itemModel.get('symbolPatternSize') || 2; + var isAnimationEnabled = itemModel.isAnimationEnabled(); + var symbolMeta = { + dataIndex: dataIndex, + layout: layout, + itemModel: itemModel, + symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle', + style: data.getItemVisual(dataIndex, 'style'), + symbolClip: symbolClip, + symbolRepeat: symbolRepeat, + symbolRepeatDirection: itemModel.get('symbolRepeatDirection'), + symbolPatternSize: symbolPatternSize, + rotation: rotation, + animationModel: isAnimationEnabled ? itemModel : null, + hoverScale: isAnimationEnabled && itemModel.get(['emphasis', 'scale']), + z2: itemModel.getShallow('z', true) || 0 + }; + prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta); + prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta); + prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta); + var symbolSize = symbolMeta.symbolSize; + var symbolOffset = normalizeSymbolOffset(itemModel.get('symbolOffset'), symbolSize); + prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta); + return symbolMeta; + } + // bar length can be negative. + function prepareBarLength(itemModel, symbolRepeat, layout, opt, outputSymbolMeta) { + var valueDim = opt.valueDim; + var symbolBoundingData = itemModel.get('symbolBoundingData'); + var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis()); + var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0)); + var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0); + var boundingLength; + if (isArray(symbolBoundingData)) { + var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx]; + symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse(); + boundingLength = symbolBoundingExtent[pxSignIdx]; + } else if (symbolBoundingData != null) { + boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx; + } else if (symbolRepeat) { + boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx; + } else { + boundingLength = layout[valueDim.wh]; + } + outputSymbolMeta.boundingLength = boundingLength; + if (symbolRepeat) { + outputSymbolMeta.repeatCutLength = layout[valueDim.wh]; + } + // if 'pxSign' means sign of pixel, it can't be zero, or symbolScale will be zero + // and when borderWidth be settled, the actual linewidth will be NaN + outputSymbolMeta.pxSign = boundingLength > 0 ? 1 : -1; + } + function convertToCoordOnAxis(axis, value) { + return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value))); + } + // Support ['100%', '100%'] + function prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) { + var valueDim = opt.valueDim; + var categoryDim = opt.categoryDim; + var categorySize = Math.abs(layout[categoryDim.wh]); + var symbolSize = data.getItemVisual(dataIndex, 'symbolSize'); + var parsedSymbolSize; + if (isArray(symbolSize)) { + parsedSymbolSize = symbolSize.slice(); + } else { + if (symbolSize == null) { + // will parse to number below + parsedSymbolSize = ['100%', '100%']; + } else { + parsedSymbolSize = [symbolSize, symbolSize]; + } + } + // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is + // to complicated to calculate real percent value if considering scaled lineWidth. + // So the actual size will bigger than layout size if lineWidth is bigger than zero, + // which can be tolerated in pictorial chart. + parsedSymbolSize[categoryDim.index] = parsePercent$1(parsedSymbolSize[categoryDim.index], categorySize); + parsedSymbolSize[valueDim.index] = parsePercent$1(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength)); + outputSymbolMeta.symbolSize = parsedSymbolSize; + // If x or y is less than zero, show reversed shape. + var symbolScale = outputSymbolMeta.symbolScale = [parsedSymbolSize[0] / symbolPatternSize, parsedSymbolSize[1] / symbolPatternSize]; + // Follow convention, 'right' and 'top' is the normal scale. + symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign; + } + function prepareLineWidth(itemModel, symbolScale, rotation, opt, outputSymbolMeta) { + // In symbols are drawn with scale, so do not need to care about the case that width + // or height are too small. But symbol use strokeNoScale, where acture lineWidth should + // be calculated. + var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; + if (valueLineWidth) { + pathForLineWidth.attr({ + scaleX: symbolScale[0], + scaleY: symbolScale[1], + rotation: rotation + }); + pathForLineWidth.updateTransform(); + valueLineWidth /= pathForLineWidth.getLineScale(); + valueLineWidth *= symbolScale[opt.valueDim.index]; + } + outputSymbolMeta.valueLineWidth = valueLineWidth || 0; + } + function prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) { + var categoryDim = opt.categoryDim; + var valueDim = opt.valueDim; + var pxSign = outputSymbolMeta.pxSign; + var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0); + var pathLen = unitLength; + // Note: rotation will not effect the layout of symbols, because user may + // want symbols to rotate on its center, which should not be translated + // when rotating. + if (symbolRepeat) { + var absBoundingLength = Math.abs(boundingLength); + var symbolMargin = retrieve(itemModel.get('symbolMargin'), '15%') + ''; + var hasEndGap = false; + if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) { + hasEndGap = true; + symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1); + } + var symbolMarginNumeric = parsePercent$1(symbolMargin, symbolSize[valueDim.index]); + var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0); + // When symbol margin is less than 0, margin at both ends will be subtracted + // to ensure that all of the symbols will not be overflow the given area. + var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; + // Both final repeatTimes and final symbolMarginNumeric area calculated based on + // boundingLength. + var repeatSpecified = isNumeric(symbolRepeat); + var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); + // Adjust calculate margin, to ensure each symbol is displayed + // entirely in the given layout area. + var mDiff = absBoundingLength - repeatTimes * unitLength; + symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : Math.max(repeatTimes - 1, 1)); + uLenWithMargin = unitLength + symbolMarginNumeric * 2; + endFix = hasEndGap ? 0 : symbolMarginNumeric * 2; + // Update repeatTimes when not all symbol will be shown. + if (!repeatSpecified && symbolRepeat !== 'fixed') { + repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0; + } + pathLen = repeatTimes * uLenWithMargin - endFix; + outputSymbolMeta.repeatTimes = repeatTimes; + outputSymbolMeta.symbolMargin = symbolMarginNumeric; + } + var sizeFix = pxSign * (pathLen / 2); + var pathPosition = outputSymbolMeta.pathPosition = []; + pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2; + pathPosition[valueDim.index] = symbolPosition === 'start' ? sizeFix : symbolPosition === 'end' ? boundingLength - sizeFix : boundingLength / 2; // 'center' + if (symbolOffset) { + pathPosition[0] += symbolOffset[0]; + pathPosition[1] += symbolOffset[1]; + } + var bundlePosition = outputSymbolMeta.bundlePosition = []; + bundlePosition[categoryDim.index] = layout[categoryDim.xy]; + bundlePosition[valueDim.index] = layout[valueDim.xy]; + var barRectShape = outputSymbolMeta.barRectShape = extend({}, layout); + barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix)); + barRectShape[categoryDim.wh] = layout[categoryDim.wh]; + var clipShape = outputSymbolMeta.clipShape = {}; + // Consider that symbol may be overflow layout rect. + clipShape[categoryDim.xy] = -layout[categoryDim.xy]; + clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh]; + clipShape[valueDim.xy] = 0; + clipShape[valueDim.wh] = layout[valueDim.wh]; + } + function createPath(symbolMeta) { + var symbolPatternSize = symbolMeta.symbolPatternSize; + var path = createSymbol( + // Consider texture img, make a big size. + symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize); + path.attr({ + culling: true + }); + path.type !== 'image' && path.setStyle({ + strokeNoScale: true + }); + return path; + } + function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) { + var bundle = bar.__pictorialBundle; + var symbolSize = symbolMeta.symbolSize; + var valueLineWidth = symbolMeta.valueLineWidth; + var pathPosition = symbolMeta.pathPosition; + var valueDim = opt.valueDim; + var repeatTimes = symbolMeta.repeatTimes || 0; + var index = 0; + var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2; + eachPath(bar, function (path) { + path.__pictorialAnimationIndex = index; + path.__pictorialRepeatTimes = repeatTimes; + if (index < repeatTimes) { + updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate); + } else { + updateAttr(path, null, { + scaleX: 0, + scaleY: 0 + }, symbolMeta, isUpdate, function () { + bundle.remove(path); + }); + } + // updateHoverAnimation(path, symbolMeta); + index++; + }); + for (; index < repeatTimes; index++) { + var path = createPath(symbolMeta); + path.__pictorialAnimationIndex = index; + path.__pictorialRepeatTimes = repeatTimes; + bundle.add(path); + var target = makeTarget(index); + updateAttr(path, { + x: target.x, + y: target.y, + scaleX: 0, + scaleY: 0 + }, { + scaleX: target.scaleX, + scaleY: target.scaleY, + rotation: target.rotation + }, symbolMeta, isUpdate); + } + function makeTarget(index) { + var position = pathPosition.slice(); + // (start && pxSign > 0) || (end && pxSign < 0): i = repeatTimes - index + // Otherwise: i = index; + var pxSign = symbolMeta.pxSign; + var i = index; + if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) { + i = repeatTimes - 1 - index; + } + position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index]; + return { + x: position[0], + y: position[1], + scaleX: symbolMeta.symbolScale[0], + scaleY: symbolMeta.symbolScale[1], + rotation: symbolMeta.rotation + }; + } + } + function createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) { + var bundle = bar.__pictorialBundle; + var mainPath = bar.__pictorialMainPath; + if (!mainPath) { + mainPath = bar.__pictorialMainPath = createPath(symbolMeta); + bundle.add(mainPath); + updateAttr(mainPath, { + x: symbolMeta.pathPosition[0], + y: symbolMeta.pathPosition[1], + scaleX: 0, + scaleY: 0, + rotation: symbolMeta.rotation + }, { + scaleX: symbolMeta.symbolScale[0], + scaleY: symbolMeta.symbolScale[1] + }, symbolMeta, isUpdate); + } else { + updateAttr(mainPath, null, { + x: symbolMeta.pathPosition[0], + y: symbolMeta.pathPosition[1], + scaleX: symbolMeta.symbolScale[0], + scaleY: symbolMeta.symbolScale[1], + rotation: symbolMeta.rotation + }, symbolMeta, isUpdate); + } + } + // bar rect is used for label. + function createOrUpdateBarRect(bar, symbolMeta, isUpdate) { + var rectShape = extend({}, symbolMeta.barRectShape); + var barRect = bar.__pictorialBarRect; + if (!barRect) { + barRect = bar.__pictorialBarRect = new Rect({ + z2: 2, + shape: rectShape, + silent: true, + style: { + stroke: 'transparent', + fill: 'transparent', + lineWidth: 0 + } + }); + barRect.disableMorphing = true; + bar.add(barRect); + } else { + updateAttr(barRect, null, { + shape: rectShape + }, symbolMeta, isUpdate); + } + } + function createOrUpdateClip(bar, opt, symbolMeta, isUpdate) { + // If not clip, symbol will be remove and rebuilt. + if (symbolMeta.symbolClip) { + var clipPath = bar.__pictorialClipPath; + var clipShape = extend({}, symbolMeta.clipShape); + var valueDim = opt.valueDim; + var animationModel = symbolMeta.animationModel; + var dataIndex = symbolMeta.dataIndex; + if (clipPath) { + updateProps(clipPath, { + shape: clipShape + }, animationModel, dataIndex); + } else { + clipShape[valueDim.wh] = 0; + clipPath = new Rect({ + shape: clipShape + }); + bar.__pictorialBundle.setClipPath(clipPath); + bar.__pictorialClipPath = clipPath; + var target = {}; + target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh]; + graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, { + shape: target + }, animationModel, dataIndex); + } + } + } + function getItemModel(data, dataIndex) { + var itemModel = data.getItemModel(dataIndex); + itemModel.getAnimationDelayParams = getAnimationDelayParams; + itemModel.isAnimationEnabled = isAnimationEnabled; + return itemModel; + } + function getAnimationDelayParams(path) { + // The order is the same as the z-order, see `symbolRepeatDiretion`. + return { + index: path.__pictorialAnimationIndex, + count: path.__pictorialRepeatTimes + }; + } + function isAnimationEnabled() { + // `animation` prop can be set on itemModel in pictorial bar chart. + return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation'); + } + function createBar(data, opt, symbolMeta, isUpdate) { + // bar is the main element for each data. + var bar = new Group(); + // bundle is used for location and clip. + var bundle = new Group(); + bar.add(bundle); + bar.__pictorialBundle = bundle; + bundle.x = symbolMeta.bundlePosition[0]; + bundle.y = symbolMeta.bundlePosition[1]; + if (symbolMeta.symbolRepeat) { + createOrUpdateRepeatSymbols(bar, opt, symbolMeta); + } else { + createOrUpdateSingleSymbol(bar, opt, symbolMeta); + } + createOrUpdateBarRect(bar, symbolMeta, isUpdate); + createOrUpdateClip(bar, opt, symbolMeta, isUpdate); + bar.__pictorialShapeStr = getShapeStr(data, symbolMeta); + bar.__pictorialSymbolMeta = symbolMeta; + return bar; + } + function updateBar(bar, opt, symbolMeta) { + var animationModel = symbolMeta.animationModel; + var dataIndex = symbolMeta.dataIndex; + var bundle = bar.__pictorialBundle; + updateProps(bundle, { + x: symbolMeta.bundlePosition[0], + y: symbolMeta.bundlePosition[1] + }, animationModel, dataIndex); + if (symbolMeta.symbolRepeat) { + createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true); + } else { + createOrUpdateSingleSymbol(bar, opt, symbolMeta, true); + } + createOrUpdateBarRect(bar, symbolMeta, true); + createOrUpdateClip(bar, opt, symbolMeta, true); + } + function removeBar(data, dataIndex, animationModel, bar) { + // Not show text when animating + var labelRect = bar.__pictorialBarRect; + labelRect && labelRect.removeTextContent(); + var paths = []; + eachPath(bar, function (path) { + paths.push(path); + }); + bar.__pictorialMainPath && paths.push(bar.__pictorialMainPath); + // I do not find proper remove animation for clip yet. + bar.__pictorialClipPath && (animationModel = null); + each(paths, function (path) { + removeElement(path, { + scaleX: 0, + scaleY: 0 + }, animationModel, dataIndex, function () { + bar.parent && bar.parent.remove(bar); + }); + }); + data.setItemGraphicEl(dataIndex, null); + } + function getShapeStr(data, symbolMeta) { + return [data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none', !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(':'); + } + function eachPath(bar, cb, context) { + // Do not use Group#eachChild, because it do not support remove. + each(bar.__pictorialBundle.children(), function (el) { + el !== bar.__pictorialBarRect && cb.call(context, el); + }); + } + function updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) { + immediateAttrs && el.attr(immediateAttrs); + // when symbolCip used, only clip path has init animation, otherwise it would be weird effect. + if (symbolMeta.symbolClip && !isUpdate) { + animationAttrs && el.attr(animationAttrs); + } else { + animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb); + } + } + function updateCommon$1(bar, opt, symbolMeta) { + var dataIndex = symbolMeta.dataIndex; + var itemModel = symbolMeta.itemModel; + // Color must be excluded. + // Because symbol provide setColor individually to set fill and stroke + var emphasisModel = itemModel.getModel('emphasis'); + var emphasisStyle = emphasisModel.getModel('itemStyle').getItemStyle(); + var blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle(); + var selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle(); + var cursorStyle = itemModel.getShallow('cursor'); + var focus = emphasisModel.get('focus'); + var blurScope = emphasisModel.get('blurScope'); + var hoverScale = emphasisModel.get('scale'); + eachPath(bar, function (path) { + if (path instanceof ZRImage) { + var pathStyle = path.style; + path.useStyle(extend({ + // TODO other properties like dx, dy ? + image: pathStyle.image, + x: pathStyle.x, + y: pathStyle.y, + width: pathStyle.width, + height: pathStyle.height + }, symbolMeta.style)); + } else { + path.useStyle(symbolMeta.style); + } + var emphasisState = path.ensureState('emphasis'); + emphasisState.style = emphasisStyle; + if (hoverScale) { + // NOTE: Must after scale is set after updateAttr + emphasisState.scaleX = path.scaleX * 1.1; + emphasisState.scaleY = path.scaleY * 1.1; + } + path.ensureState('blur').style = blurStyle; + path.ensureState('select').style = selectStyle; + cursorStyle && (path.cursor = cursorStyle); + path.z2 = symbolMeta.z2; + }); + var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)]; + var barRect = bar.__pictorialBarRect; + barRect.ignoreClip = true; + setLabelStyle(barRect, getLabelStatesModels(itemModel), { + labelFetcher: opt.seriesModel, + labelDataIndex: dataIndex, + defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex), + inheritColor: symbolMeta.style.fill, + defaultOpacity: symbolMeta.style.opacity, + defaultOutsidePosition: barPositionOutside + }); + toggleHoverEmphasis(bar, focus, blurScope, emphasisModel.get('disabled')); + } + function toIntTimes(times) { + var roundedTimes = Math.round(times); + // Escapse accurate error + return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times); + } + + var PictorialBarSeriesModel = /** @class */function (_super) { + __extends(PictorialBarSeriesModel, _super); + function PictorialBarSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = PictorialBarSeriesModel.type; + _this.hasSymbolVisual = true; + _this.defaultSymbol = 'roundRect'; + return _this; + } + PictorialBarSeriesModel.prototype.getInitialData = function (option) { + // Disable stack. + option.stack = null; + return _super.prototype.getInitialData.apply(this, arguments); + }; + PictorialBarSeriesModel.type = 'series.pictorialBar'; + PictorialBarSeriesModel.dependencies = ['grid']; + PictorialBarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, { + symbol: 'circle', + symbolSize: null, + symbolRotate: null, + symbolPosition: null, + symbolOffset: null, + symbolMargin: null, + symbolRepeat: false, + symbolRepeatDirection: 'end', + symbolClip: false, + symbolBoundingData: null, + symbolPatternSize: 400, + barGap: '-100%', + // Pictorial bar do not clip by default because in many cases + // xAxis and yAxis are not displayed and it's expected not to clip + clip: false, + // z can be set in data item, which is z2 actually. + // Disable progressive + progressive: 0, + emphasis: { + // By default pictorialBar do not hover scale. Hover scale is not suitable + // for the case that both has foreground and background. + scale: false + }, + select: { + itemStyle: { + borderColor: '#212121' + } + } + }); + return PictorialBarSeriesModel; + }(BaseBarSeriesModel); + + function install$o(registers) { + registers.registerChartView(PictorialBarView); + registers.registerSeriesModel(PictorialBarSeriesModel); + registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, 'pictorialBar')); + // Do layout after other overall layout, which can prepare some information. + registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout('pictorialBar')); + } + + var ThemeRiverView = /** @class */function (_super) { + __extends(ThemeRiverView, _super); + function ThemeRiverView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ThemeRiverView.type; + _this._layers = []; + return _this; + } + ThemeRiverView.prototype.render = function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var self = this; + var group = this.group; + var layersSeries = seriesModel.getLayerSeries(); + var layoutInfo = data.getLayout('layoutInfo'); + var rect = layoutInfo.rect; + var boundaryGap = layoutInfo.boundaryGap; + group.x = 0; + group.y = rect.y + boundaryGap[0]; + function keyGetter(item) { + return item.name; + } + var dataDiffer = new DataDiffer(this._layersSeries || [], layersSeries, keyGetter, keyGetter); + var newLayersGroups = []; + dataDiffer.add(bind(process, this, 'add')).update(bind(process, this, 'update')).remove(bind(process, this, 'remove')).execute(); + function process(status, idx, oldIdx) { + var oldLayersGroups = self._layers; + if (status === 'remove') { + group.remove(oldLayersGroups[idx]); + return; + } + var points0 = []; + var points1 = []; + var style; + var indices = layersSeries[idx].indices; + var j = 0; + for (; j < indices.length; j++) { + var layout = data.getItemLayout(indices[j]); + var x = layout.x; + var y0 = layout.y0; + var y = layout.y; + points0.push(x, y0); + points1.push(x, y0 + y); + style = data.getItemVisual(indices[j], 'style'); + } + var polygon; + var textLayout = data.getItemLayout(indices[0]); + var labelModel = seriesModel.getModel('label'); + var margin = labelModel.get('margin'); + var emphasisModel = seriesModel.getModel('emphasis'); + if (status === 'add') { + var layerGroup = newLayersGroups[idx] = new Group(); + polygon = new ECPolygon({ + shape: { + points: points0, + stackedOnPoints: points1, + smooth: 0.4, + stackedOnSmooth: 0.4, + smoothConstraint: false + }, + z2: 0 + }); + layerGroup.add(polygon); + group.add(layerGroup); + if (seriesModel.isAnimationEnabled()) { + polygon.setClipPath(createGridClipShape$2(polygon.getBoundingRect(), seriesModel, function () { + polygon.removeClipPath(); + })); + } + } else { + var layerGroup = oldLayersGroups[oldIdx]; + polygon = layerGroup.childAt(0); + group.add(layerGroup); + newLayersGroups[idx] = layerGroup; + updateProps(polygon, { + shape: { + points: points0, + stackedOnPoints: points1 + } + }, seriesModel); + saveOldStyle(polygon); + } + setLabelStyle(polygon, getLabelStatesModels(seriesModel), { + labelDataIndex: indices[j - 1], + defaultText: data.getName(indices[j - 1]), + inheritColor: style.fill + }, { + normal: { + verticalAlign: 'middle' + // align: 'right' + } + }); + + polygon.setTextConfig({ + position: null, + local: true + }); + var labelEl = polygon.getTextContent(); + // TODO More label position options. + if (labelEl) { + labelEl.x = textLayout.x - margin; + labelEl.y = textLayout.y0 + textLayout.y / 2; + } + polygon.useStyle(style); + data.setItemGraphicEl(idx, polygon); + setStatesStylesFromModel(polygon, seriesModel); + toggleHoverEmphasis(polygon, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + } + this._layersSeries = layersSeries; + this._layers = newLayersGroups; + }; + ThemeRiverView.type = 'themeRiver'; + return ThemeRiverView; + }(ChartView); + // add animation to the view + function createGridClipShape$2(rect, seriesModel, cb) { + var rectEl = new Rect({ + shape: { + x: rect.x - 10, + y: rect.y - 10, + width: 0, + height: rect.height + 20 + } + }); + initProps(rectEl, { + shape: { + x: rect.x - 50, + width: rect.width + 100, + height: rect.height + 20 + } + }, seriesModel, cb); + return rectEl; + } + + var DATA_NAME_INDEX = 2; + var ThemeRiverSeriesModel = /** @class */function (_super) { + __extends(ThemeRiverSeriesModel, _super); + function ThemeRiverSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ThemeRiverSeriesModel.type; + return _this; + } + /** + * @override + */ + ThemeRiverSeriesModel.prototype.init = function (option) { + // eslint-disable-next-line + _super.prototype.init.apply(this, arguments); + // Put this function here is for the sake of consistency of code style. + // Enable legend selection for each data item + // Use a function instead of direct access because data reference may changed + this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this)); + }; + /** + * If there is no value of a certain point in the time for some event,set it value to 0. + * + * @param {Array} data initial data in the option + * @return {Array} + */ + ThemeRiverSeriesModel.prototype.fixData = function (data) { + var rawDataLength = data.length; + /** + * Make sure every layer data get the same keys. + * The value index tells which layer has visited. + * { + * 2014/01/01: -1 + * } + */ + var timeValueKeys = {}; + // grouped data by name + var groupResult = groupData(data, function (item) { + if (!timeValueKeys.hasOwnProperty(item[0] + '')) { + timeValueKeys[item[0] + ''] = -1; + } + return item[2]; + }); + var layerData = []; + groupResult.buckets.each(function (items, key) { + layerData.push({ + name: key, + dataList: items + }); + }); + var layerNum = layerData.length; + for (var k = 0; k < layerNum; ++k) { + var name_1 = layerData[k].name; + for (var j = 0; j < layerData[k].dataList.length; ++j) { + var timeValue = layerData[k].dataList[j][0] + ''; + timeValueKeys[timeValue] = k; + } + for (var timeValue in timeValueKeys) { + if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) { + timeValueKeys[timeValue] = k; + data[rawDataLength] = [timeValue, 0, name_1]; + rawDataLength++; + } + } + } + return data; + }; + /** + * @override + * @param option the initial option that user gave + * @param ecModel the model object for themeRiver option + */ + ThemeRiverSeriesModel.prototype.getInitialData = function (option, ecModel) { + var singleAxisModel = this.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0]; + var axisType = singleAxisModel.get('type'); + // filter the data item with the value of label is undefined + var filterData = filter(option.data, function (dataItem) { + return dataItem[2] !== undefined; + }); + // ??? TODO design a stage to transfer data for themeRiver and lines? + var data = this.fixData(filterData || []); + var nameList = []; + var nameMap = this.nameMap = createHashMap(); + var count = 0; + for (var i = 0; i < data.length; ++i) { + nameList.push(data[i][DATA_NAME_INDEX]); + if (!nameMap.get(data[i][DATA_NAME_INDEX])) { + nameMap.set(data[i][DATA_NAME_INDEX], count); + count++; + } + } + var dimensions = prepareSeriesDataSchema(data, { + coordDimensions: ['single'], + dimensionsDefine: [{ + name: 'time', + type: getDimensionTypeByAxis(axisType) + }, { + name: 'value', + type: 'float' + }, { + name: 'name', + type: 'ordinal' + }], + encodeDefine: { + single: 0, + value: 1, + itemName: 2 + } + }).dimensions; + var list = new SeriesData(dimensions, this); + list.initData(data); + return list; + }; + /** + * The raw data is divided into multiple layers and each layer + * has same name. + */ + ThemeRiverSeriesModel.prototype.getLayerSeries = function () { + var data = this.getData(); + var lenCount = data.count(); + var indexArr = []; + for (var i = 0; i < lenCount; ++i) { + indexArr[i] = i; + } + var timeDim = data.mapDimension('single'); + // data group by name + var groupResult = groupData(indexArr, function (index) { + return data.get('name', index); + }); + var layerSeries = []; + groupResult.buckets.each(function (items, key) { + items.sort(function (index1, index2) { + return data.get(timeDim, index1) - data.get(timeDim, index2); + }); + layerSeries.push({ + name: key, + indices: items + }); + }); + return layerSeries; + }; + /** + * Get data indices for show tooltip content + */ + ThemeRiverSeriesModel.prototype.getAxisTooltipData = function (dim, value, baseAxis) { + if (!isArray(dim)) { + dim = dim ? [dim] : []; + } + var data = this.getData(); + var layerSeries = this.getLayerSeries(); + var indices = []; + var layerNum = layerSeries.length; + var nestestValue; + for (var i = 0; i < layerNum; ++i) { + var minDist = Number.MAX_VALUE; + var nearestIdx = -1; + var pointNum = layerSeries[i].indices.length; + for (var j = 0; j < pointNum; ++j) { + var theValue = data.get(dim[0], layerSeries[i].indices[j]); + var dist = Math.abs(theValue - value); + if (dist <= minDist) { + nestestValue = theValue; + minDist = dist; + nearestIdx = layerSeries[i].indices[j]; + } + } + indices.push(nearestIdx); + } + return { + dataIndices: indices, + nestestValue: nestestValue + }; + }; + ThemeRiverSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + var data = this.getData(); + var name = data.getName(dataIndex); + var value = data.get(data.mapDimension('value'), dataIndex); + return createTooltipMarkup('nameValue', { + name: name, + value: value + }); + }; + ThemeRiverSeriesModel.type = 'series.themeRiver'; + ThemeRiverSeriesModel.dependencies = ['singleAxis']; + ThemeRiverSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + colorBy: 'data', + coordinateSystem: 'singleAxis', + // gap in axis's orthogonal orientation + boundaryGap: ['10%', '10%'], + // legendHoverLink: true, + singleAxisIndex: 0, + animationEasing: 'linear', + label: { + margin: 4, + show: true, + position: 'left', + fontSize: 11 + }, + emphasis: { + label: { + show: true + } + } + }; + return ThemeRiverSeriesModel; + }(SeriesModel); + + function themeRiverLayout(ecModel, api) { + ecModel.eachSeriesByType('themeRiver', function (seriesModel) { + var data = seriesModel.getData(); + var single = seriesModel.coordinateSystem; + var layoutInfo = {}; + // use the axis boundingRect for view + var rect = single.getRect(); + layoutInfo.rect = rect; + var boundaryGap = seriesModel.get('boundaryGap'); + var axis = single.getAxis(); + layoutInfo.boundaryGap = boundaryGap; + if (axis.orient === 'horizontal') { + boundaryGap[0] = parsePercent$1(boundaryGap[0], rect.height); + boundaryGap[1] = parsePercent$1(boundaryGap[1], rect.height); + var height = rect.height - boundaryGap[0] - boundaryGap[1]; + doThemeRiverLayout(data, seriesModel, height); + } else { + boundaryGap[0] = parsePercent$1(boundaryGap[0], rect.width); + boundaryGap[1] = parsePercent$1(boundaryGap[1], rect.width); + var width = rect.width - boundaryGap[0] - boundaryGap[1]; + doThemeRiverLayout(data, seriesModel, width); + } + data.setLayout('layoutInfo', layoutInfo); + }); + } + /** + * The layout information about themeriver + * + * @param data data in the series + * @param seriesModel the model object of themeRiver series + * @param height value used to compute every series height + */ + function doThemeRiverLayout(data, seriesModel, height) { + if (!data.count()) { + return; + } + var coordSys = seriesModel.coordinateSystem; + // the data in each layer are organized into a series. + var layerSeries = seriesModel.getLayerSeries(); + // the points in each layer. + var timeDim = data.mapDimension('single'); + var valueDim = data.mapDimension('value'); + var layerPoints = map(layerSeries, function (singleLayer) { + return map(singleLayer.indices, function (idx) { + var pt = coordSys.dataToPoint(data.get(timeDim, idx)); + pt[1] = data.get(valueDim, idx); + return pt; + }); + }); + var base = computeBaseline(layerPoints); + var baseLine = base.y0; + var ky = height / base.max; + // set layout information for each item. + var n = layerSeries.length; + var m = layerSeries[0].indices.length; + var baseY0; + for (var j = 0; j < m; ++j) { + baseY0 = baseLine[j] * ky; + data.setItemLayout(layerSeries[0].indices[j], { + layerIndex: 0, + x: layerPoints[0][j][0], + y0: baseY0, + y: layerPoints[0][j][1] * ky + }); + for (var i = 1; i < n; ++i) { + baseY0 += layerPoints[i - 1][j][1] * ky; + data.setItemLayout(layerSeries[i].indices[j], { + layerIndex: i, + x: layerPoints[i][j][0], + y0: baseY0, + y: layerPoints[i][j][1] * ky + }); + } + } + } + /** + * Compute the baseLine of the rawdata + * Inspired by Lee Byron's paper Stacked Graphs - Geometry & Aesthetics + * + * @param data the points in each layer + */ + function computeBaseline(data) { + var layerNum = data.length; + var pointNum = data[0].length; + var sums = []; + var y0 = []; + var max = 0; + for (var i = 0; i < pointNum; ++i) { + var temp = 0; + for (var j = 0; j < layerNum; ++j) { + temp += data[j][i][1]; + } + if (temp > max) { + max = temp; + } + sums.push(temp); + } + for (var k = 0; k < pointNum; ++k) { + y0[k] = (max - sums[k]) / 2; + } + max = 0; + for (var l = 0; l < pointNum; ++l) { + var sum = sums[l] + y0[l]; + if (sum > max) { + max = sum; + } + } + return { + y0: y0, + max: max + }; + } + + function install$p(registers) { + registers.registerChartView(ThemeRiverView); + registers.registerSeriesModel(ThemeRiverSeriesModel); + registers.registerLayout(themeRiverLayout); + registers.registerProcessor(dataFilter('themeRiver')); + } + + var DEFAULT_SECTOR_Z = 2; + var DEFAULT_TEXT_Z = 4; + /** + * Sunburstce of Sunburst including Sector, Label, LabelLine + */ + var SunburstPiece = /** @class */function (_super) { + __extends(SunburstPiece, _super); + function SunburstPiece(node, seriesModel, ecModel, api) { + var _this = _super.call(this) || this; + _this.z2 = DEFAULT_SECTOR_Z; + _this.textConfig = { + inside: true + }; + getECData(_this).seriesIndex = seriesModel.seriesIndex; + var text = new ZRText({ + z2: DEFAULT_TEXT_Z, + silent: node.getModel().get(['label', 'silent']) + }); + _this.setTextContent(text); + _this.updateData(true, node, seriesModel, ecModel, api); + return _this; + } + SunburstPiece.prototype.updateData = function (firstCreate, node, + // state: 'emphasis' | 'normal' | 'highlight' | 'downplay', + seriesModel, ecModel, api) { + this.node = node; + node.piece = this; + seriesModel = seriesModel || this._seriesModel; + ecModel = ecModel || this._ecModel; + var sector = this; + getECData(sector).dataIndex = node.dataIndex; + var itemModel = node.getModel(); + var emphasisModel = itemModel.getModel('emphasis'); + var layout = node.getLayout(); + var sectorShape = extend({}, layout); + sectorShape.label = null; + var normalStyle = node.getVisual('style'); + normalStyle.lineJoin = 'bevel'; + var decal = node.getVisual('decal'); + if (decal) { + normalStyle.decal = createOrUpdatePatternFromDecal(decal, api); + } + var cornerRadius = getSectorCornerRadius(itemModel.getModel('itemStyle'), sectorShape, true); + extend(sectorShape, cornerRadius); + each(SPECIAL_STATES, function (stateName) { + var state = sector.ensureState(stateName); + var itemStyleModel = itemModel.getModel([stateName, 'itemStyle']); + state.style = itemStyleModel.getItemStyle(); + // border radius + var cornerRadius = getSectorCornerRadius(itemStyleModel, sectorShape); + if (cornerRadius) { + state.shape = cornerRadius; + } + }); + if (firstCreate) { + sector.setShape(sectorShape); + sector.shape.r = layout.r0; + initProps(sector, { + shape: { + r: layout.r + } + }, seriesModel, node.dataIndex); + } else { + // Disable animation for gradient since no interpolation method + // is supported for gradient + updateProps(sector, { + shape: sectorShape + }, seriesModel); + saveOldStyle(sector); + } + sector.useStyle(normalStyle); + this._updateLabel(seriesModel); + var cursorStyle = itemModel.getShallow('cursor'); + cursorStyle && sector.attr('cursor', cursorStyle); + this._seriesModel = seriesModel || this._seriesModel; + this._ecModel = ecModel || this._ecModel; + var focus = emphasisModel.get('focus'); + var focusOrIndices = focus === 'ancestor' ? node.getAncestorsIndices() : focus === 'descendant' ? node.getDescendantIndices() : focus; + toggleHoverEmphasis(this, focusOrIndices, emphasisModel.get('blurScope'), emphasisModel.get('disabled')); + }; + SunburstPiece.prototype._updateLabel = function (seriesModel) { + var _this = this; + var itemModel = this.node.getModel(); + var normalLabelModel = itemModel.getModel('label'); + var layout = this.node.getLayout(); + var angle = layout.endAngle - layout.startAngle; + var midAngle = (layout.startAngle + layout.endAngle) / 2; + var dx = Math.cos(midAngle); + var dy = Math.sin(midAngle); + var sector = this; + var label = sector.getTextContent(); + var dataIndex = this.node.dataIndex; + var labelMinAngle = normalLabelModel.get('minAngle') / 180 * Math.PI; + var isNormalShown = normalLabelModel.get('show') && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle); + label.ignore = !isNormalShown; + // TODO use setLabelStyle + each(DISPLAY_STATES, function (stateName) { + var labelStateModel = stateName === 'normal' ? itemModel.getModel('label') : itemModel.getModel([stateName, 'label']); + var isNormal = stateName === 'normal'; + var state = isNormal ? label : label.ensureState(stateName); + var text = seriesModel.getFormattedLabel(dataIndex, stateName); + if (isNormal) { + text = text || _this.node.name; + } + state.style = createTextStyle(labelStateModel, {}, null, stateName !== 'normal', true); + if (text) { + state.style.text = text; + } + // Not displaying text when angle is too small + var isShown = labelStateModel.get('show'); + if (isShown != null && !isNormal) { + state.ignore = !isShown; + } + var labelPosition = getLabelAttr(labelStateModel, 'position'); + var sectorState = isNormal ? sector : sector.states[stateName]; + var labelColor = sectorState.style.fill; + sectorState.textConfig = { + outsideFill: labelStateModel.get('color') === 'inherit' ? labelColor : null, + inside: labelPosition !== 'outside' + }; + var r; + var labelPadding = getLabelAttr(labelStateModel, 'distance') || 0; + var textAlign = getLabelAttr(labelStateModel, 'align'); + var rotateType = getLabelAttr(labelStateModel, 'rotate'); + var flipStartAngle = Math.PI * 0.5; + var flipEndAngle = Math.PI * 1.5; + var midAngleNormal = normalizeRadian(rotateType === 'tangential' ? Math.PI / 2 - midAngle : midAngle); + // For text that is up-side down, rotate 180 degrees to make sure + // it's readable + var needsFlip = midAngleNormal > flipStartAngle && !isRadianAroundZero(midAngleNormal - flipStartAngle) && midAngleNormal < flipEndAngle; + if (labelPosition === 'outside') { + r = layout.r + labelPadding; + textAlign = needsFlip ? 'right' : 'left'; + } else { + if (!textAlign || textAlign === 'center') { + // Put label in the center if it's a circle + if (angle === 2 * Math.PI && layout.r0 === 0) { + r = 0; + } else { + r = (layout.r + layout.r0) / 2; + } + textAlign = 'center'; + } else if (textAlign === 'left') { + r = layout.r0 + labelPadding; + textAlign = needsFlip ? 'right' : 'left'; + } else if (textAlign === 'right') { + r = layout.r - labelPadding; + textAlign = needsFlip ? 'left' : 'right'; + } + } + state.style.align = textAlign; + state.style.verticalAlign = getLabelAttr(labelStateModel, 'verticalAlign') || 'middle'; + state.x = r * dx + layout.cx; + state.y = r * dy + layout.cy; + var rotate = 0; + if (rotateType === 'radial') { + rotate = normalizeRadian(-midAngle) + (needsFlip ? Math.PI : 0); + } else if (rotateType === 'tangential') { + rotate = normalizeRadian(Math.PI / 2 - midAngle) + (needsFlip ? Math.PI : 0); + } else if (isNumber(rotateType)) { + rotate = rotateType * Math.PI / 180; + } + state.rotation = normalizeRadian(rotate); + }); + function getLabelAttr(model, name) { + var stateAttr = model.get(name); + if (stateAttr == null) { + return normalLabelModel.get(name); + } + return stateAttr; + } + label.dirtyStyle(); + }; + return SunburstPiece; + }(Sector); + + var ROOT_TO_NODE_ACTION = 'sunburstRootToNode'; + var HIGHLIGHT_ACTION = 'sunburstHighlight'; + var UNHIGHLIGHT_ACTION = 'sunburstUnhighlight'; + function installSunburstAction(registers) { + registers.registerAction({ + type: ROOT_TO_NODE_ACTION, + update: 'updateView' + }, function (payload, ecModel) { + ecModel.eachComponent({ + mainType: 'series', + subType: 'sunburst', + query: payload + }, handleRootToNode); + function handleRootToNode(model, index) { + var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model); + if (targetInfo) { + var originViewRoot = model.getViewRoot(); + if (originViewRoot) { + payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown'; + } + model.resetViewRoot(targetInfo.node); + } + } + }); + registers.registerAction({ + type: HIGHLIGHT_ACTION, + update: 'none' + }, function (payload, ecModel, api) { + // Clone + payload = extend({}, payload); + ecModel.eachComponent({ + mainType: 'series', + subType: 'sunburst', + query: payload + }, handleHighlight); + function handleHighlight(model) { + var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model); + if (targetInfo) { + payload.dataIndex = targetInfo.node.dataIndex; + } + } + if ("development" !== 'production') { + deprecateReplaceLog('sunburstHighlight', 'highlight'); + } + // Fast forward action + api.dispatchAction(extend(payload, { + type: 'highlight' + })); + }); + registers.registerAction({ + type: UNHIGHLIGHT_ACTION, + update: 'updateView' + }, function (payload, ecModel, api) { + payload = extend({}, payload); + if ("development" !== 'production') { + deprecateReplaceLog('sunburstUnhighlight', 'downplay'); + } + api.dispatchAction(extend(payload, { + type: 'downplay' + })); + }); + } + + var SunburstView = /** @class */function (_super) { + __extends(SunburstView, _super); + function SunburstView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SunburstView.type; + return _this; + } + SunburstView.prototype.render = function (seriesModel, ecModel, api, + // @ts-ignore + payload) { + var self = this; + this.seriesModel = seriesModel; + this.api = api; + this.ecModel = ecModel; + var data = seriesModel.getData(); + var virtualRoot = data.tree.root; + var newRoot = seriesModel.getViewRoot(); + var group = this.group; + var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData'); + var newChildren = []; + newRoot.eachNode(function (node) { + newChildren.push(node); + }); + var oldChildren = this._oldChildren || []; + dualTravel(newChildren, oldChildren); + renderRollUp(virtualRoot, newRoot); + this._initEvents(); + this._oldChildren = newChildren; + function dualTravel(newChildren, oldChildren) { + if (newChildren.length === 0 && oldChildren.length === 0) { + return; + } + new DataDiffer(oldChildren, newChildren, getKey, getKey).add(processNode).update(processNode).remove(curry(processNode, null)).execute(); + function getKey(node) { + return node.getId(); + } + function processNode(newIdx, oldIdx) { + var newNode = newIdx == null ? null : newChildren[newIdx]; + var oldNode = oldIdx == null ? null : oldChildren[oldIdx]; + doRenderNode(newNode, oldNode); + } + } + function doRenderNode(newNode, oldNode) { + if (!renderLabelForZeroData && newNode && !newNode.getValue()) { + // Not render data with value 0 + newNode = null; + } + if (newNode !== virtualRoot && oldNode !== virtualRoot) { + if (oldNode && oldNode.piece) { + if (newNode) { + // Update + oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api); + // For tooltip + data.setItemGraphicEl(newNode.dataIndex, oldNode.piece); + } else { + // Remove + removeNode(oldNode); + } + } else if (newNode) { + // Add + var piece = new SunburstPiece(newNode, seriesModel, ecModel, api); + group.add(piece); + // For tooltip + data.setItemGraphicEl(newNode.dataIndex, piece); + } + } + } + function removeNode(node) { + if (!node) { + return; + } + if (node.piece) { + group.remove(node.piece); + node.piece = null; + } + } + function renderRollUp(virtualRoot, viewRoot) { + if (viewRoot.depth > 0) { + // Render + if (self.virtualPiece) { + // Update + self.virtualPiece.updateData(false, virtualRoot, seriesModel, ecModel, api); + } else { + // Add + self.virtualPiece = new SunburstPiece(virtualRoot, seriesModel, ecModel, api); + group.add(self.virtualPiece); + } + // TODO event scope + viewRoot.piece.off('click'); + self.virtualPiece.on('click', function (e) { + self._rootToNode(viewRoot.parentNode); + }); + } else if (self.virtualPiece) { + // Remove + group.remove(self.virtualPiece); + self.virtualPiece = null; + } + } + }; + /** + * @private + */ + SunburstView.prototype._initEvents = function () { + var _this = this; + this.group.off('click'); + this.group.on('click', function (e) { + var targetFound = false; + var viewRoot = _this.seriesModel.getViewRoot(); + viewRoot.eachNode(function (node) { + if (!targetFound && node.piece && node.piece === e.target) { + var nodeClick = node.getModel().get('nodeClick'); + if (nodeClick === 'rootToNode') { + _this._rootToNode(node); + } else if (nodeClick === 'link') { + var itemModel = node.getModel(); + var link = itemModel.get('link'); + if (link) { + var linkTarget = itemModel.get('target', true) || '_blank'; + windowOpen(link, linkTarget); + } + } + targetFound = true; + } + }); + }); + }; + /** + * @private + */ + SunburstView.prototype._rootToNode = function (node) { + if (node !== this.seriesModel.getViewRoot()) { + this.api.dispatchAction({ + type: ROOT_TO_NODE_ACTION, + from: this.uid, + seriesId: this.seriesModel.id, + targetNode: node + }); + } + }; + /** + * @implement + */ + SunburstView.prototype.containPoint = function (point, seriesModel) { + var treeRoot = seriesModel.getData(); + var itemLayout = treeRoot.getItemLayout(0); + if (itemLayout) { + var dx = point[0] - itemLayout.cx; + var dy = point[1] - itemLayout.cy; + var radius = Math.sqrt(dx * dx + dy * dy); + return radius <= itemLayout.r && radius >= itemLayout.r0; + } + }; + SunburstView.type = 'sunburst'; + return SunburstView; + }(ChartView); + + var SunburstSeriesModel = /** @class */function (_super) { + __extends(SunburstSeriesModel, _super); + function SunburstSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SunburstSeriesModel.type; + _this.ignoreStyleOnData = true; + return _this; + } + SunburstSeriesModel.prototype.getInitialData = function (option, ecModel) { + // Create a virtual root. + var root = { + name: option.name, + children: option.data + }; + completeTreeValue$1(root); + var levelModels = this._levelModels = map(option.levels || [], function (levelDefine) { + return new Model(levelDefine, this, ecModel); + }, this); + // Make sure always a new tree is created when setOption, + // in TreemapView, we check whether oldTree === newTree + // to choose mappings approach among old shapes and new shapes. + var tree = Tree.createTree(root, this, beforeLink); + function beforeLink(nodeData) { + nodeData.wrapMethod('getItemModel', function (model, idx) { + var node = tree.getNodeByDataIndex(idx); + var levelModel = levelModels[node.depth]; + levelModel && (model.parentModel = levelModel); + return model; + }); + } + return tree.data; + }; + SunburstSeriesModel.prototype.optionUpdated = function () { + this.resetViewRoot(); + }; + /* + * @override + */ + SunburstSeriesModel.prototype.getDataParams = function (dataIndex) { + var params = _super.prototype.getDataParams.apply(this, arguments); + var node = this.getData().tree.getNodeByDataIndex(dataIndex); + params.treePathInfo = wrapTreePathInfo(node, this); + return params; + }; + SunburstSeriesModel.prototype.getLevelModel = function (node) { + return this._levelModels && this._levelModels[node.depth]; + }; + SunburstSeriesModel.prototype.getViewRoot = function () { + return this._viewRoot; + }; + SunburstSeriesModel.prototype.resetViewRoot = function (viewRoot) { + viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot; + var root = this.getRawData().tree.root; + if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) { + this._viewRoot = root; + } + }; + SunburstSeriesModel.prototype.enableAriaDecal = function () { + enableAriaDecalForTree(this); + }; + SunburstSeriesModel.type = 'series.sunburst'; + SunburstSeriesModel.defaultOption = { + // zlevel: 0, + z: 2, + // 默认全局居中 + center: ['50%', '50%'], + radius: [0, '75%'], + // 默认顺时针 + clockwise: true, + startAngle: 90, + // 最小角度改为0 + minAngle: 0, + // If still show when all data zero. + stillShowZeroSum: true, + // 'rootToNode', 'link', or false + nodeClick: 'rootToNode', + renderLabelForZeroData: false, + label: { + // could be: 'radial', 'tangential', or 'none' + rotate: 'radial', + show: true, + opacity: 1, + // 'left' is for inner side of inside, and 'right' is for outer + // side for inside + align: 'center', + position: 'inside', + distance: 5, + silent: true + }, + 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 + } + }, + // Animation type can be expansion, scale. + animationType: 'expansion', + animationDuration: 1000, + animationDurationUpdate: 500, + data: [], + /** + * Sort order. + * + * Valid values: 'desc', 'asc', null, or callback function. + * 'desc' and 'asc' for descend and ascendant order; + * null for not sorting; + * example of callback function: + * function(nodeA, nodeB) { + * return nodeA.getValue() - nodeB.getValue(); + * } + */ + sort: 'desc' + }; + return SunburstSeriesModel; + }(SeriesModel); + function completeTreeValue$1(dataNode) { + // Postorder travel tree. + // If value of none-leaf node is not set, + // calculate it by suming up the value of all children. + var sum = 0; + each(dataNode.children, function (child) { + completeTreeValue$1(child); + var childValue = child.value; + // TODO First value of array must be a number + isArray(childValue) && (childValue = childValue[0]); + sum += childValue; + }); + var thisValue = dataNode.value; + if (isArray(thisValue)) { + thisValue = thisValue[0]; + } + if (thisValue == null || isNaN(thisValue)) { + thisValue = sum; + } + // Value should not less than 0. + if (thisValue < 0) { + thisValue = 0; + } + isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue; + } + + // let PI2 = Math.PI * 2; + var RADIAN$2 = Math.PI / 180; + function sunburstLayout(seriesType, ecModel, api) { + ecModel.eachSeriesByType(seriesType, function (seriesModel) { + var center = seriesModel.get('center'); + var radius = seriesModel.get('radius'); + if (!isArray(radius)) { + radius = [0, radius]; + } + if (!isArray(center)) { + center = [center, center]; + } + var width = api.getWidth(); + var height = api.getHeight(); + var size = Math.min(width, height); + var cx = parsePercent$1(center[0], width); + var cy = parsePercent$1(center[1], height); + var r0 = parsePercent$1(radius[0], size / 2); + var r = parsePercent$1(radius[1], size / 2); + var startAngle = -seriesModel.get('startAngle') * RADIAN$2; + var minAngle = seriesModel.get('minAngle') * RADIAN$2; + var virtualRoot = seriesModel.getData().tree.root; + var treeRoot = seriesModel.getViewRoot(); + var rootDepth = treeRoot.depth; + var sort = seriesModel.get('sort'); + if (sort != null) { + initChildren$1(treeRoot, sort); + } + var validDataCount = 0; + each(treeRoot.children, function (child) { + !isNaN(child.getValue()) && validDataCount++; + }); + var sum = treeRoot.getValue(); + // Sum may be 0 + var unitRadian = Math.PI / (sum || validDataCount) * 2; + var renderRollupNode = treeRoot.depth > 0; + var levels = treeRoot.height - (renderRollupNode ? -1 : 1); + var rPerLevel = (r - r0) / (levels || 1); + var clockwise = seriesModel.get('clockwise'); + var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); + // In the case some sector angle is smaller than minAngle + // let restAngle = PI2; + // let valueSumLargerThanMinAngle = 0; + var dir = clockwise ? 1 : -1; + /** + * Render a tree + * @return increased angle + */ + var renderNode = function (node, startAngle) { + if (!node) { + return; + } + var endAngle = startAngle; + // Render self + if (node !== virtualRoot) { + // Tree node is virtual, so it doesn't need to be drawn + var value = node.getValue(); + var angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian; + if (angle < minAngle) { + angle = minAngle; + // restAngle -= minAngle; + } + // else { + // valueSumLargerThanMinAngle += value; + // } + endAngle = startAngle + dir * angle; + var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1); + var rStart = r0 + rPerLevel * depth; + var rEnd = r0 + rPerLevel * (depth + 1); + var levelModel = seriesModel.getLevelModel(node); + if (levelModel) { + var r0_1 = levelModel.get('r0', true); + var r_1 = levelModel.get('r', true); + var radius_1 = levelModel.get('radius', true); + if (radius_1 != null) { + r0_1 = radius_1[0]; + r_1 = radius_1[1]; + } + r0_1 != null && (rStart = parsePercent$1(r0_1, size / 2)); + r_1 != null && (rEnd = parsePercent$1(r_1, size / 2)); + } + node.setLayout({ + angle: angle, + startAngle: startAngle, + endAngle: endAngle, + clockwise: clockwise, + cx: cx, + cy: cy, + r0: rStart, + r: rEnd + }); + } + // Render children + if (node.children && node.children.length) { + // currentAngle = startAngle; + var siblingAngle_1 = 0; + each(node.children, function (node) { + siblingAngle_1 += renderNode(node, startAngle + siblingAngle_1); + }); + } + return endAngle - startAngle; + }; + // Virtual root node for roll up + if (renderRollupNode) { + var rStart = r0; + var rEnd = r0 + rPerLevel; + var angle = Math.PI * 2; + virtualRoot.setLayout({ + angle: angle, + startAngle: startAngle, + endAngle: startAngle + angle, + clockwise: clockwise, + cx: cx, + cy: cy, + r0: rStart, + r: rEnd + }); + } + renderNode(treeRoot, startAngle); + }); + } + /** + * Init node children by order and update visual + */ + function initChildren$1(node, sortOrder) { + var children = node.children || []; + node.children = sort$2(children, sortOrder); + // Init children recursively + if (children.length) { + each(node.children, function (child) { + initChildren$1(child, sortOrder); + }); + } + } + /** + * Sort children nodes + * + * @param {TreeNode[]} children children of node to be sorted + * @param {string | function | null} sort sort method + * See SunburstSeries.js for details. + */ + function sort$2(children, sortOrder) { + if (isFunction(sortOrder)) { + var sortTargets = map(children, function (child, idx) { + var value = child.getValue(); + return { + params: { + depth: child.depth, + height: child.height, + dataIndex: child.dataIndex, + getValue: function () { + return value; + } + }, + index: idx + }; + }); + sortTargets.sort(function (a, b) { + return sortOrder(a.params, b.params); + }); + return map(sortTargets, function (target) { + return children[target.index]; + }); + } else { + var isAsc_1 = sortOrder === 'asc'; + return children.sort(function (a, b) { + var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1); + return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1) : diff; + }); + } + } + + function sunburstVisual(ecModel) { + var paletteScope = {}; + // Default color strategy + function pickColor(node, seriesModel, treeHeight) { + // Choose color from palette based on the first level. + var current = node; + while (current && current.depth > 1) { + current = current.parentNode; + } + var color = seriesModel.getColorFromPalette(current.name || current.dataIndex + '', paletteScope); + if (node.depth > 1 && isString(color)) { + // Lighter on the deeper level. + color = lift(color, (node.depth - 1) / (treeHeight - 1) * 0.5); + } + return color; + } + ecModel.eachSeriesByType('sunburst', function (seriesModel) { + var data = seriesModel.getData(); + var tree = data.tree; + tree.eachNode(function (node) { + var model = node.getModel(); + var style = model.getModel('itemStyle').getItemStyle(); + if (!style.fill) { + style.fill = pickColor(node, seriesModel, tree.root.height); + } + var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style'); + extend(existsStyle, style); + }); + }); + } + + function install$q(registers) { + registers.registerChartView(SunburstView); + registers.registerSeriesModel(SunburstSeriesModel); + registers.registerLayout(curry(sunburstLayout, 'sunburst')); + registers.registerProcessor(curry(dataFilter, 'sunburst')); + registers.registerVisual(sunburstVisual); + installSunburstAction(registers); + } + + // Also compat with ec4, where + // `visual('color') visual('borderColor')` is supported. + var STYLE_VISUAL_TYPE = { + color: 'fill', + borderColor: 'stroke' + }; + var NON_STYLE_VISUAL_PROPS = { + symbol: 1, + symbolSize: 1, + symbolKeepAspect: 1, + legendIcon: 1, + visualMeta: 1, + liftZ: 1, + decal: 1 + }; + var customInnerStore = makeInner(); + var CustomSeriesModel = /** @class */function (_super) { + __extends(CustomSeriesModel, _super); + function CustomSeriesModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = CustomSeriesModel.type; + return _this; + } + CustomSeriesModel.prototype.optionUpdated = function () { + this.currentZLevel = this.get('zlevel', true); + this.currentZ = this.get('z', true); + }; + CustomSeriesModel.prototype.getInitialData = function (option, ecModel) { + return createSeriesData(null, this); + }; + CustomSeriesModel.prototype.getDataParams = function (dataIndex, dataType, el) { + var params = _super.prototype.getDataParams.call(this, dataIndex, dataType); + el && (params.info = customInnerStore(el).info); + return params; + }; + CustomSeriesModel.type = 'series.custom'; + CustomSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar']; + CustomSeriesModel.defaultOption = { + coordinateSystem: 'cartesian2d', + // zlevel: 0, + z: 2, + legendHoverLink: true, + // Custom series will not clip by default. + // Some case will use custom series to draw label + // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight + clip: false + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + // Polar coordinate system + // polarIndex: 0, + // Geo coordinate system + // geoIndex: 0, + }; + + return CustomSeriesModel; + }(SeriesModel); + + function dataToCoordSize(dataSize, dataItem) { + // dataItem is necessary in log axis. + dataItem = dataItem || [0, 0]; + return map(['x', 'y'], function (dim, dimIdx) { + var axis = this.getAxis(dim); + var val = dataItem[dimIdx]; + var halfSize = dataSize[dimIdx] / 2; + return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); + }, this); + } + function cartesianPrepareCustom(coordSys) { + var rect = coordSys.master.getRect(); + return { + coordSys: { + // The name exposed to user is always 'cartesian2d' but not 'grid'. + type: 'cartesian2d', + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height + }, + api: { + coord: function (data) { + // do not provide "out" param + return coordSys.dataToPoint(data); + }, + size: bind(dataToCoordSize, coordSys) + } + }; + } + + function dataToCoordSize$1(dataSize, dataItem) { + dataItem = dataItem || [0, 0]; + return map([0, 1], function (dimIdx) { + var val = dataItem[dimIdx]; + var halfSize = dataSize[dimIdx] / 2; + var p1 = []; + var p2 = []; + p1[dimIdx] = val - halfSize; + p2[dimIdx] = val + halfSize; + p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx]; + return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]); + }, this); + } + function geoPrepareCustom(coordSys) { + var rect = coordSys.getBoundingRect(); + return { + coordSys: { + type: 'geo', + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height, + zoom: coordSys.getZoom() + }, + api: { + coord: function (data) { + // do not provide "out" and noRoam param, + // Compatible with this usage: + // echarts.util.map(item.points, api.coord) + return coordSys.dataToPoint(data); + }, + size: bind(dataToCoordSize$1, coordSys) + } + }; + } + + function dataToCoordSize$2(dataSize, dataItem) { + // dataItem is necessary in log axis. + var axis = this.getAxis(); + var val = dataItem instanceof Array ? dataItem[0] : dataItem; + var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2; + return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); + } + function singlePrepareCustom(coordSys) { + var rect = coordSys.getRect(); + return { + coordSys: { + type: 'singleAxis', + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height + }, + api: { + coord: function (val) { + // do not provide "out" param + return coordSys.dataToPoint(val); + }, + size: bind(dataToCoordSize$2, coordSys) + } + }; + } + + // import AngleAxis from './AngleAxis.js'; + function dataToCoordSize$3(dataSize, dataItem) { + // dataItem is necessary in log axis. + dataItem = dataItem || [0, 0]; + return map(['Radius', 'Angle'], function (dim, dimIdx) { + var getterName = 'get' + dim + 'Axis'; + // TODO: TYPE Check Angle Axis + var axis = this[getterName](); + var val = dataItem[dimIdx]; + var halfSize = dataSize[dimIdx] / 2; + var result = axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); + if (dim === 'Angle') { + result = result * Math.PI / 180; + } + return result; + }, this); + } + function polarPrepareCustom(coordSys) { + var radiusAxis = coordSys.getRadiusAxis(); + var angleAxis = coordSys.getAngleAxis(); + var radius = radiusAxis.getExtent(); + radius[0] > radius[1] && radius.reverse(); + return { + coordSys: { + type: 'polar', + cx: coordSys.cx, + cy: coordSys.cy, + r: radius[1], + r0: radius[0] + }, + api: { + coord: function (data) { + var radius = radiusAxis.dataToRadius(data[0]); + var angle = angleAxis.dataToAngle(data[1]); + var coord = coordSys.coordToPoint([radius, angle]); + coord.push(radius, angle * Math.PI / 180); + return coord; + }, + size: bind(dataToCoordSize$3, coordSys) + } + }; + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function calendarPrepareCustom(coordSys) { + var rect = coordSys.getRect(); + var rangeInfo = coordSys.getRangeInfo(); + return { + coordSys: { + type: 'calendar', + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height, + cellWidth: coordSys.getCellWidth(), + cellHeight: coordSys.getCellHeight(), + rangeInfo: { + start: rangeInfo.start, + end: rangeInfo.end, + weeks: rangeInfo.weeks, + dayCount: rangeInfo.allDay + } + }, + api: { + coord: function (data, clamp) { + return coordSys.dataToPoint(data, clamp); + } + } + }; + } + + var deprecatedLogs = {}; + /** + * Whether need to call `convertEC4CompatibleStyle`. + */ + function isEC4CompatibleStyle(style, elType, hasOwnTextContentOption, hasOwnTextConfig) { + // Since echarts5, `RectText` is separated from its host element and style.text + // does not exist any more. The compat work brings some extra burden on performance. + // So we provide: + // `legacy: true` force make compat. + // `legacy: false`, force do not compat. + // `legacy` not set: auto detect whether legacy. + // But in this case we do not compat (difficult to detect and rare case): + // Becuse custom series and graphic component support "merge", users may firstly + // only set `textStrokeWidth` style or secondly only set `text`. + return style && (style.legacy || style.legacy !== false && !hasOwnTextContentOption && !hasOwnTextConfig && elType !== 'tspan' + // Difficult to detect whether legacy for a "text" el. + && (elType === 'text' || hasOwn(style, 'text'))); + } + /** + * `EC4CompatibleStyle` is style that might be in echarts4 format or echarts5 format. + * @param hostStyle The properties might be modified. + * @return If be text el, `textContentStyle` and `textConfig` will not be returned. + * Otherwise a `textContentStyle` and `textConfig` will be created, whose props area + * retried from the `hostStyle`. + */ + function convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) { + var srcStyle = hostStyle; + var textConfig; + var textContent; + var textContentStyle; + if (elType === 'text') { + textContentStyle = srcStyle; + } else { + textContentStyle = {}; + hasOwn(srcStyle, 'text') && (textContentStyle.text = srcStyle.text); + hasOwn(srcStyle, 'rich') && (textContentStyle.rich = srcStyle.rich); + hasOwn(srcStyle, 'textFill') && (textContentStyle.fill = srcStyle.textFill); + hasOwn(srcStyle, 'textStroke') && (textContentStyle.stroke = srcStyle.textStroke); + hasOwn(srcStyle, 'fontFamily') && (textContentStyle.fontFamily = srcStyle.fontFamily); + hasOwn(srcStyle, 'fontSize') && (textContentStyle.fontSize = srcStyle.fontSize); + hasOwn(srcStyle, 'fontStyle') && (textContentStyle.fontStyle = srcStyle.fontStyle); + hasOwn(srcStyle, 'fontWeight') && (textContentStyle.fontWeight = srcStyle.fontWeight); + textContent = { + type: 'text', + style: textContentStyle, + // ec4 does not support rectText trigger. + // And when text position is different in normal and emphasis + // => hover text trigger emphasis; + // => text position changed, leave mouse pointer immediately; + // That might cause incorrect state. + silent: true + }; + textConfig = {}; + var hasOwnPos = hasOwn(srcStyle, 'textPosition'); + if (isNormal) { + textConfig.position = hasOwnPos ? srcStyle.textPosition : 'inside'; + } else { + hasOwnPos && (textConfig.position = srcStyle.textPosition); + } + hasOwn(srcStyle, 'textPosition') && (textConfig.position = srcStyle.textPosition); + hasOwn(srcStyle, 'textOffset') && (textConfig.offset = srcStyle.textOffset); + hasOwn(srcStyle, 'textRotation') && (textConfig.rotation = srcStyle.textRotation); + hasOwn(srcStyle, 'textDistance') && (textConfig.distance = srcStyle.textDistance); + } + convertEC4CompatibleRichItem(textContentStyle, hostStyle); + each(textContentStyle.rich, function (richItem) { + convertEC4CompatibleRichItem(richItem, richItem); + }); + return { + textConfig: textConfig, + textContent: textContent + }; + } + /** + * The result will be set to `out`. + */ + function convertEC4CompatibleRichItem(out, richItem) { + if (!richItem) { + return; + } + // (1) For simplicity, make textXXX properties (deprecated since ec5) has + // higher priority. For example, consider in ec4 `borderColor: 5, textBorderColor: 10` + // on a rect means `borderColor: 4` on the rect and `borderColor: 10` on an attached + // richText in ec5. + // (2) `out === richItem` if and only if `out` is text el or rich item. + // So we can overwrite existing props in `out` since textXXX has higher priority. + richItem.font = richItem.textFont || richItem.font; + hasOwn(richItem, 'textStrokeWidth') && (out.lineWidth = richItem.textStrokeWidth); + hasOwn(richItem, 'textAlign') && (out.align = richItem.textAlign); + hasOwn(richItem, 'textVerticalAlign') && (out.verticalAlign = richItem.textVerticalAlign); + hasOwn(richItem, 'textLineHeight') && (out.lineHeight = richItem.textLineHeight); + hasOwn(richItem, 'textWidth') && (out.width = richItem.textWidth); + hasOwn(richItem, 'textHeight') && (out.height = richItem.textHeight); + hasOwn(richItem, 'textBackgroundColor') && (out.backgroundColor = richItem.textBackgroundColor); + hasOwn(richItem, 'textPadding') && (out.padding = richItem.textPadding); + hasOwn(richItem, 'textBorderColor') && (out.borderColor = richItem.textBorderColor); + hasOwn(richItem, 'textBorderWidth') && (out.borderWidth = richItem.textBorderWidth); + hasOwn(richItem, 'textBorderRadius') && (out.borderRadius = richItem.textBorderRadius); + hasOwn(richItem, 'textBoxShadowColor') && (out.shadowColor = richItem.textBoxShadowColor); + hasOwn(richItem, 'textBoxShadowBlur') && (out.shadowBlur = richItem.textBoxShadowBlur); + hasOwn(richItem, 'textBoxShadowOffsetX') && (out.shadowOffsetX = richItem.textBoxShadowOffsetX); + hasOwn(richItem, 'textBoxShadowOffsetY') && (out.shadowOffsetY = richItem.textBoxShadowOffsetY); + } + /** + * Convert to pure echarts4 format style. + * `itemStyle` will be modified, added with ec4 style properties from + * `textStyle` and `textConfig`. + * + * [Caveat]: For simplicity, `insideRollback` in ec4 does not compat, where + * `styleEmphasis: {textFill: 'red'}` will remove the normal auto added stroke. + */ + function convertToEC4StyleForCustomSerise(itemStl, txStl, txCfg) { + var out = itemStl; + // See `custom.ts`, a trick to set extra `textPosition` firstly. + out.textPosition = out.textPosition || txCfg.position || 'inside'; + txCfg.offset != null && (out.textOffset = txCfg.offset); + txCfg.rotation != null && (out.textRotation = txCfg.rotation); + txCfg.distance != null && (out.textDistance = txCfg.distance); + var isInside = out.textPosition.indexOf('inside') >= 0; + var hostFill = itemStl.fill || '#000'; + convertToEC4RichItem(out, txStl); + var textFillNotSet = out.textFill == null; + if (isInside) { + if (textFillNotSet) { + out.textFill = txCfg.insideFill || '#fff'; + !out.textStroke && txCfg.insideStroke && (out.textStroke = txCfg.insideStroke); + !out.textStroke && (out.textStroke = hostFill); + out.textStrokeWidth == null && (out.textStrokeWidth = 2); + } + } else { + if (textFillNotSet) { + out.textFill = itemStl.fill || txCfg.outsideFill || '#000'; + } + !out.textStroke && txCfg.outsideStroke && (out.textStroke = txCfg.outsideStroke); + } + out.text = txStl.text; + out.rich = txStl.rich; + each(txStl.rich, function (richItem) { + convertToEC4RichItem(richItem, richItem); + }); + return out; + } + function convertToEC4RichItem(out, richItem) { + if (!richItem) { + return; + } + hasOwn(richItem, 'fill') && (out.textFill = richItem.fill); + hasOwn(richItem, 'stroke') && (out.textStroke = richItem.fill); + hasOwn(richItem, 'lineWidth') && (out.textStrokeWidth = richItem.lineWidth); + hasOwn(richItem, 'font') && (out.font = richItem.font); + hasOwn(richItem, 'fontStyle') && (out.fontStyle = richItem.fontStyle); + hasOwn(richItem, 'fontWeight') && (out.fontWeight = richItem.fontWeight); + hasOwn(richItem, 'fontSize') && (out.fontSize = richItem.fontSize); + hasOwn(richItem, 'fontFamily') && (out.fontFamily = richItem.fontFamily); + hasOwn(richItem, 'align') && (out.textAlign = richItem.align); + hasOwn(richItem, 'verticalAlign') && (out.textVerticalAlign = richItem.verticalAlign); + hasOwn(richItem, 'lineHeight') && (out.textLineHeight = richItem.lineHeight); + hasOwn(richItem, 'width') && (out.textWidth = richItem.width); + hasOwn(richItem, 'height') && (out.textHeight = richItem.height); + hasOwn(richItem, 'backgroundColor') && (out.textBackgroundColor = richItem.backgroundColor); + hasOwn(richItem, 'padding') && (out.textPadding = richItem.padding); + hasOwn(richItem, 'borderColor') && (out.textBorderColor = richItem.borderColor); + hasOwn(richItem, 'borderWidth') && (out.textBorderWidth = richItem.borderWidth); + hasOwn(richItem, 'borderRadius') && (out.textBorderRadius = richItem.borderRadius); + hasOwn(richItem, 'shadowColor') && (out.textBoxShadowColor = richItem.shadowColor); + hasOwn(richItem, 'shadowBlur') && (out.textBoxShadowBlur = richItem.shadowBlur); + hasOwn(richItem, 'shadowOffsetX') && (out.textBoxShadowOffsetX = richItem.shadowOffsetX); + hasOwn(richItem, 'shadowOffsetY') && (out.textBoxShadowOffsetY = richItem.shadowOffsetY); + hasOwn(richItem, 'textShadowColor') && (out.textShadowColor = richItem.textShadowColor); + hasOwn(richItem, 'textShadowBlur') && (out.textShadowBlur = richItem.textShadowBlur); + hasOwn(richItem, 'textShadowOffsetX') && (out.textShadowOffsetX = richItem.textShadowOffsetX); + hasOwn(richItem, 'textShadowOffsetY') && (out.textShadowOffsetY = richItem.textShadowOffsetY); + } + function warnDeprecated(deprecated, insteadApproach) { + if ("development" !== 'production') { + var key = deprecated + '^_^' + insteadApproach; + if (!deprecatedLogs[key]) { + console.warn("[ECharts] DEPRECATED: \"" + deprecated + "\" has been deprecated. " + insteadApproach); + deprecatedLogs[key] = true; + } + } + } + + var LEGACY_TRANSFORM_PROPS_MAP = { + position: ['x', 'y'], + scale: ['scaleX', 'scaleY'], + origin: ['originX', 'originY'] + }; + var LEGACY_TRANSFORM_PROPS = keys(LEGACY_TRANSFORM_PROPS_MAP); + var TRANSFORM_PROPS_MAP = reduce(TRANSFORMABLE_PROPS, function (obj, key) { + obj[key] = 1; + return obj; + }, {}); + var transformPropNamesStr = TRANSFORMABLE_PROPS.join(', '); + // '' means root + var ELEMENT_ANIMATABLE_PROPS = ['', 'style', 'shape', 'extra']; + var transitionInnerStore = makeInner(); + function getElementAnimationConfig(animationType, el, elOption, parentModel, dataIndex) { + var animationProp = animationType + "Animation"; + var config = getAnimationConfig(animationType, parentModel, dataIndex) || {}; + var userDuring = transitionInnerStore(el).userDuring; + // Only set when duration is > 0 and it's need to be animated. + if (config.duration > 0) { + // For simplicity, if during not specified, the previous during will not work any more. + config.during = userDuring ? bind(duringCall, { + el: el, + userDuring: userDuring + }) : null; + config.setToFinal = true; + config.scope = animationType; + } + extend(config, elOption[animationProp]); + return config; + } + function applyUpdateTransition(el, elOption, animatableModel, opts) { + opts = opts || {}; + var dataIndex = opts.dataIndex, + isInit = opts.isInit, + clearStyle = opts.clearStyle; + var hasAnimation = animatableModel.isAnimationEnabled(); + // Save the meta info for further morphing. Like apply on the sub morphing elements. + var store = transitionInnerStore(el); + var styleOpt = elOption.style; + store.userDuring = elOption.during; + var transFromProps = {}; + var propsToSet = {}; + prepareTransformAllPropsFinal(el, elOption, propsToSet); + prepareShapeOrExtraAllPropsFinal('shape', elOption, propsToSet); + prepareShapeOrExtraAllPropsFinal('extra', elOption, propsToSet); + if (!isInit && hasAnimation) { + prepareTransformTransitionFrom(el, elOption, transFromProps); + prepareShapeOrExtraTransitionFrom('shape', el, elOption, transFromProps); + prepareShapeOrExtraTransitionFrom('extra', el, elOption, transFromProps); + prepareStyleTransitionFrom(el, elOption, styleOpt, transFromProps); + } + propsToSet.style = styleOpt; + applyPropsDirectly(el, propsToSet, clearStyle); + applyMiscProps(el, elOption); + if (hasAnimation) { + if (isInit) { + var enterFromProps_1 = {}; + each(ELEMENT_ANIMATABLE_PROPS, function (propName) { + var prop = propName ? elOption[propName] : elOption; + if (prop && prop.enterFrom) { + if (propName) { + enterFromProps_1[propName] = enterFromProps_1[propName] || {}; + } + extend(propName ? enterFromProps_1[propName] : enterFromProps_1, prop.enterFrom); + } + }); + var config = getElementAnimationConfig('enter', el, elOption, animatableModel, dataIndex); + if (config.duration > 0) { + el.animateFrom(enterFromProps_1, config); + } + } else { + applyPropsTransition(el, elOption, dataIndex || 0, animatableModel, transFromProps); + } + } + // Store leave to be used in leave transition. + updateLeaveTo(el, elOption); + styleOpt ? el.dirty() : el.markRedraw(); + } + function updateLeaveTo(el, elOption) { + // Try merge to previous set leaveTo + var leaveToProps = transitionInnerStore(el).leaveToProps; + for (var i = 0; i < ELEMENT_ANIMATABLE_PROPS.length; i++) { + var propName = ELEMENT_ANIMATABLE_PROPS[i]; + var prop = propName ? elOption[propName] : elOption; + if (prop && prop.leaveTo) { + if (!leaveToProps) { + leaveToProps = transitionInnerStore(el).leaveToProps = {}; + } + if (propName) { + leaveToProps[propName] = leaveToProps[propName] || {}; + } + extend(propName ? leaveToProps[propName] : leaveToProps, prop.leaveTo); + } + } + } + function applyLeaveTransition(el, elOption, animatableModel, onRemove) { + if (el) { + var parent_1 = el.parent; + var leaveToProps = transitionInnerStore(el).leaveToProps; + if (leaveToProps) { + // TODO TODO use leave after leaveAnimation in series is introduced + // TODO Data index? + var config = getElementAnimationConfig('update', el, elOption, animatableModel, 0); + config.done = function () { + parent_1.remove(el); + onRemove && onRemove(); + }; + el.animateTo(leaveToProps, config); + } else { + parent_1.remove(el); + onRemove && onRemove(); + } + } + } + function isTransitionAll(transition) { + return transition === 'all'; + } + function applyPropsDirectly(el, + // Can be null/undefined + allPropsFinal, clearStyle) { + var styleOpt = allPropsFinal.style; + if (!el.isGroup && styleOpt) { + if (clearStyle) { + el.useStyle({}); + // When style object changed, how to trade the existing animation? + // It is probably complicated and not needed to cover all the cases. + // But still need consider the case: + // (1) When using init animation on `style.opacity`, and before the animation + // ended users triggers an update by mousewhel. At that time the init + // animation should better be continued rather than terminated. + // So after `useStyle` called, we should change the animation target manually + // to continue the effect of the init animation. + // (2) PENDING: If the previous animation targeted at a `val1`, and currently we need + // to update the value to `val2` and no animation declared, should be terminate + // the previous animation or just modify the target of the animation? + // Therotically That will happen not only on `style` but also on `shape` and + // `transfrom` props. But we haven't handle this case at present yet. + // (3) PENDING: Is it proper to visit `animators` and `targetName`? + var animators = el.animators; + for (var i = 0; i < animators.length; i++) { + var animator = animators[i]; + // targetName is the "topKey". + if (animator.targetName === 'style') { + animator.changeTarget(el.style); + } + } + } + el.setStyle(styleOpt); + } + if (allPropsFinal) { + // Not set style here. + allPropsFinal.style = null; + // Set el to the final state firstly. + allPropsFinal && el.attr(allPropsFinal); + allPropsFinal.style = styleOpt; + } + } + function applyPropsTransition(el, elOption, dataIndex, model, + // Can be null/undefined + transFromProps) { + if (transFromProps) { + var config = getElementAnimationConfig('update', el, elOption, model, dataIndex); + if (config.duration > 0) { + el.animateFrom(transFromProps, config); + } + } + } + function applyMiscProps(el, elOption) { + // Merge by default. + hasOwn(elOption, 'silent') && (el.silent = elOption.silent); + hasOwn(elOption, 'ignore') && (el.ignore = elOption.ignore); + if (el instanceof Displayable) { + hasOwn(elOption, 'invisible') && (el.invisible = elOption.invisible); + } + if (el instanceof Path) { + hasOwn(elOption, 'autoBatch') && (el.autoBatch = elOption.autoBatch); + } + } + // Use it to avoid it be exposed to user. + var tmpDuringScope = {}; + var transitionDuringAPI = { + // Usually other props do not need to be changed in animation during. + setTransform: function (key, val) { + if ("development" !== 'production') { + assert(hasOwn(TRANSFORM_PROPS_MAP, key), 'Only ' + transformPropNamesStr + ' available in `setTransform`.'); + } + tmpDuringScope.el[key] = val; + return this; + }, + getTransform: function (key) { + if ("development" !== 'production') { + assert(hasOwn(TRANSFORM_PROPS_MAP, key), 'Only ' + transformPropNamesStr + ' available in `getTransform`.'); + } + return tmpDuringScope.el[key]; + }, + setShape: function (key, val) { + if ("development" !== 'production') { + assertNotReserved(key); + } + var el = tmpDuringScope.el; + var shape = el.shape || (el.shape = {}); + shape[key] = val; + el.dirtyShape && el.dirtyShape(); + return this; + }, + getShape: function (key) { + if ("development" !== 'production') { + assertNotReserved(key); + } + var shape = tmpDuringScope.el.shape; + if (shape) { + return shape[key]; + } + }, + setStyle: function (key, val) { + if ("development" !== 'production') { + assertNotReserved(key); + } + var el = tmpDuringScope.el; + var style = el.style; + if (style) { + if ("development" !== 'production') { + if (eqNaN(val)) { + warn('style.' + key + ' must not be assigned with NaN.'); + } + } + style[key] = val; + el.dirtyStyle && el.dirtyStyle(); + } + return this; + }, + getStyle: function (key) { + if ("development" !== 'production') { + assertNotReserved(key); + } + var style = tmpDuringScope.el.style; + if (style) { + return style[key]; + } + }, + setExtra: function (key, val) { + if ("development" !== 'production') { + assertNotReserved(key); + } + var extra = tmpDuringScope.el.extra || (tmpDuringScope.el.extra = {}); + extra[key] = val; + return this; + }, + getExtra: function (key) { + if ("development" !== 'production') { + assertNotReserved(key); + } + var extra = tmpDuringScope.el.extra; + if (extra) { + return extra[key]; + } + } + }; + function assertNotReserved(key) { + if ("development" !== 'production') { + if (key === 'transition' || key === 'enterFrom' || key === 'leaveTo') { + throw new Error('key must not be "' + key + '"'); + } + } + } + function duringCall() { + // Do not provide "percent" until some requirements come. + // Because consider thies case: + // enterFrom: {x: 100, y: 30}, transition: 'x'. + // And enter duration is different from update duration. + // Thus it might be confused about the meaning of "percent" in during callback. + var scope = this; + var el = scope.el; + if (!el) { + return; + } + // If el is remove from zr by reason like legend, during still need to called, + // because el will be added back to zr and the prop value should not be incorrect. + var latestUserDuring = transitionInnerStore(el).userDuring; + var scopeUserDuring = scope.userDuring; + // Ensured a during is only called once in each animation frame. + // If a during is called multiple times in one frame, maybe some users' calculation logic + // might be wrong (not sure whether this usage exists). + // The case of a during might be called twice can be: by default there is a animator for + // 'x', 'y' when init. Before the init animation finished, call `setOption` to start + // another animators for 'style'/'shape'/'extra'. + if (latestUserDuring !== scopeUserDuring) { + // release + scope.el = scope.userDuring = null; + return; + } + tmpDuringScope.el = el; + // Give no `this` to user in "during" calling. + scopeUserDuring(transitionDuringAPI); + // FIXME: if in future meet the case that some prop will be both modified in `during` and `state`, + // consider the issue that the prop might be incorrect when return to "normal" state. + } + + function prepareShapeOrExtraTransitionFrom(mainAttr, fromEl, elOption, transFromProps) { + var attrOpt = elOption[mainAttr]; + if (!attrOpt) { + return; + } + var elPropsInAttr = fromEl[mainAttr]; + var transFromPropsInAttr; + if (elPropsInAttr) { + var transition = elOption.transition; + var attrTransition = attrOpt.transition; + if (attrTransition) { + !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {}); + if (isTransitionAll(attrTransition)) { + extend(transFromPropsInAttr, elPropsInAttr); + } else { + var transitionKeys = normalizeToArray(attrTransition); + for (var i = 0; i < transitionKeys.length; i++) { + var key = transitionKeys[i]; + var elVal = elPropsInAttr[key]; + transFromPropsInAttr[key] = elVal; + } + } + } else if (isTransitionAll(transition) || indexOf(transition, mainAttr) >= 0) { + !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {}); + var elPropsInAttrKeys = keys(elPropsInAttr); + for (var i = 0; i < elPropsInAttrKeys.length; i++) { + var key = elPropsInAttrKeys[i]; + var elVal = elPropsInAttr[key]; + if (isNonStyleTransitionEnabled(attrOpt[key], elVal)) { + transFromPropsInAttr[key] = elVal; + } + } + } + } + } + function prepareShapeOrExtraAllPropsFinal(mainAttr, elOption, allProps) { + var attrOpt = elOption[mainAttr]; + if (!attrOpt) { + return; + } + var allPropsInAttr = allProps[mainAttr] = {}; + var keysInAttr = keys(attrOpt); + for (var i = 0; i < keysInAttr.length; i++) { + var key = keysInAttr[i]; + // To avoid share one object with different element, and + // to avoid user modify the object inexpectedly, have to clone. + allPropsInAttr[key] = cloneValue(attrOpt[key]); + } + } + function prepareTransformTransitionFrom(el, elOption, transFromProps) { + var transition = elOption.transition; + var transitionKeys = isTransitionAll(transition) ? TRANSFORMABLE_PROPS : normalizeToArray(transition || []); + for (var i = 0; i < transitionKeys.length; i++) { + var key = transitionKeys[i]; + if (key === 'style' || key === 'shape' || key === 'extra') { + continue; + } + var elVal = el[key]; + if ("development" !== 'production') { + checkTransformPropRefer(key, 'el.transition'); + } + // Do not clone, animator will perform that clone. + transFromProps[key] = elVal; + } + } + function prepareTransformAllPropsFinal(el, elOption, allProps) { + for (var i = 0; i < LEGACY_TRANSFORM_PROPS.length; i++) { + var legacyName = LEGACY_TRANSFORM_PROPS[i]; + var xyName = LEGACY_TRANSFORM_PROPS_MAP[legacyName]; + var legacyArr = elOption[legacyName]; + if (legacyArr) { + allProps[xyName[0]] = legacyArr[0]; + allProps[xyName[1]] = legacyArr[1]; + } + } + for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) { + var key = TRANSFORMABLE_PROPS[i]; + if (elOption[key] != null) { + allProps[key] = elOption[key]; + } + } + } + function prepareStyleTransitionFrom(fromEl, elOption, styleOpt, transFromProps) { + if (!styleOpt) { + return; + } + var fromElStyle = fromEl.style; + var transFromStyleProps; + if (fromElStyle) { + var styleTransition = styleOpt.transition; + var elTransition = elOption.transition; + if (styleTransition && !isTransitionAll(styleTransition)) { + var transitionKeys = normalizeToArray(styleTransition); + !transFromStyleProps && (transFromStyleProps = transFromProps.style = {}); + for (var i = 0; i < transitionKeys.length; i++) { + var key = transitionKeys[i]; + var elVal = fromElStyle[key]; + // Do not clone, see `checkNonStyleTansitionRefer`. + transFromStyleProps[key] = elVal; + } + } else if (fromEl.getAnimationStyleProps && (isTransitionAll(elTransition) || isTransitionAll(styleTransition) || indexOf(elTransition, 'style') >= 0)) { + var animationProps = fromEl.getAnimationStyleProps(); + var animationStyleProps = animationProps ? animationProps.style : null; + if (animationStyleProps) { + !transFromStyleProps && (transFromStyleProps = transFromProps.style = {}); + var styleKeys = keys(styleOpt); + for (var i = 0; i < styleKeys.length; i++) { + var key = styleKeys[i]; + if (animationStyleProps[key]) { + var elVal = fromElStyle[key]; + transFromStyleProps[key] = elVal; + } + } + } + } + } + } + function isNonStyleTransitionEnabled(optVal, elVal) { + // The same as `checkNonStyleTansitionRefer`. + return !isArrayLike(optVal) ? optVal != null && isFinite(optVal) : optVal !== elVal; + } + var checkTransformPropRefer; + if ("development" !== 'production') { + checkTransformPropRefer = function (key, usedIn) { + if (!hasOwn(TRANSFORM_PROPS_MAP, key)) { + warn('Prop `' + key + '` is not a permitted in `' + usedIn + '`. ' + 'Only `' + keys(TRANSFORM_PROPS_MAP).join('`, `') + '` are permitted.'); + } + }; + } + + var getStateToRestore = makeInner(); + var KEYFRAME_EXCLUDE_KEYS = ['percent', 'easing', 'shape', 'style', 'extra']; + /** + * Stop previous keyframe animation and restore the attributes. + * Avoid new keyframe animation starts with wrong internal state when the percent: 0 is not set. + */ + function stopPreviousKeyframeAnimationAndRestore(el) { + // Stop previous keyframe animation. + el.stopAnimation('keyframe'); + // Restore + el.attr(getStateToRestore(el)); + } + function applyKeyframeAnimation(el, animationOpts, animatableModel) { + if (!animatableModel.isAnimationEnabled() || !animationOpts) { + return; + } + if (isArray(animationOpts)) { + each(animationOpts, function (singleAnimationOpts) { + applyKeyframeAnimation(el, singleAnimationOpts, animatableModel); + }); + return; + } + var keyframes = animationOpts.keyframes; + var duration = animationOpts.duration; + if (animatableModel && duration == null) { + // Default to use duration of config. + // NOTE: animation config from payload will be ignored because they are mainly for transitions. + var config = getAnimationConfig('enter', animatableModel, 0); + duration = config && config.duration; + } + if (!keyframes || !duration) { + return; + } + var stateToRestore = getStateToRestore(el); + each(ELEMENT_ANIMATABLE_PROPS, function (targetPropName) { + if (targetPropName && !el[targetPropName]) { + return; + } + var animator; + var endFrameIsSet = false; + // Sort keyframes by percent. + keyframes.sort(function (a, b) { + return a.percent - b.percent; + }); + each(keyframes, function (kf) { + // Stop current animation. + var animators = el.animators; + var kfValues = targetPropName ? kf[targetPropName] : kf; + if ("development" !== 'production') { + if (kf.percent >= 1) { + endFrameIsSet = true; + } + } + if (!kfValues) { + return; + } + var propKeys = keys(kfValues); + if (!targetPropName) { + // PENDING performance? + propKeys = filter(propKeys, function (key) { + return indexOf(KEYFRAME_EXCLUDE_KEYS, key) < 0; + }); + } + if (!propKeys.length) { + return; + } + if (!animator) { + animator = el.animate(targetPropName, animationOpts.loop, true); + animator.scope = 'keyframe'; + } + for (var i = 0; i < animators.length; i++) { + // Stop all other animation that is not keyframe. + if (animators[i] !== animator && animators[i].targetName === animator.targetName) { + animators[i].stopTracks(propKeys); + } + } + targetPropName && (stateToRestore[targetPropName] = stateToRestore[targetPropName] || {}); + var savedTarget = targetPropName ? stateToRestore[targetPropName] : stateToRestore; + each(propKeys, function (key) { + // Save original value. + savedTarget[key] = ((targetPropName ? el[targetPropName] : el) || {})[key]; + }); + animator.whenWithKeys(duration * kf.percent, kfValues, propKeys, kf.easing); + }); + if (!animator) { + return; + } + if ("development" !== 'production') { + if (!endFrameIsSet) { + warn('End frame with percent: 1 is missing in the keyframeAnimation.', true); + } + } + animator.delay(animationOpts.delay || 0).duration(duration).start(animationOpts.easing); + }); + } + + var EMPHASIS = 'emphasis'; + var NORMAL = 'normal'; + var BLUR = 'blur'; + var SELECT = 'select'; + var STATES = [NORMAL, EMPHASIS, BLUR, SELECT]; + var PATH_ITEM_STYLE = { + normal: ['itemStyle'], + emphasis: [EMPHASIS, 'itemStyle'], + blur: [BLUR, 'itemStyle'], + select: [SELECT, 'itemStyle'] + }; + var PATH_LABEL = { + normal: ['label'], + emphasis: [EMPHASIS, 'label'], + blur: [BLUR, 'label'], + select: [SELECT, 'label'] + }; + var DEFAULT_TRANSITION = ['x', 'y']; + // Use prefix to avoid index to be the same as el.name, + // which will cause weird update animation. + var GROUP_DIFF_PREFIX = 'e\0\0'; + var attachedTxInfoTmp = { + normal: {}, + emphasis: {}, + blur: {}, + select: {} + }; + /** + * To reduce total package size of each coordinate systems, the modules `prepareCustom` + * of each coordinate systems are not required by each coordinate systems directly, but + * required by the module `custom`. + * + * prepareInfoForCustomSeries {Function}: optional + * @return {Object} {coordSys: {...}, api: { + * coord: function (data, clamp) {}, // return point in global. + * size: function (dataSize, dataItem) {} // return size of each axis in coordSys. + * }} + */ + var prepareCustoms = { + cartesian2d: cartesianPrepareCustom, + geo: geoPrepareCustom, + single: singlePrepareCustom, + polar: polarPrepareCustom, + calendar: calendarPrepareCustom + }; + function isPath$1(el) { + return el instanceof Path; + } + function isDisplayable(el) { + return el instanceof Displayable; + } + function copyElement(sourceEl, targetEl) { + targetEl.copyTransform(sourceEl); + if (isDisplayable(targetEl) && isDisplayable(sourceEl)) { + targetEl.setStyle(sourceEl.style); + targetEl.z = sourceEl.z; + targetEl.z2 = sourceEl.z2; + targetEl.zlevel = sourceEl.zlevel; + targetEl.invisible = sourceEl.invisible; + targetEl.ignore = sourceEl.ignore; + if (isPath$1(targetEl) && isPath$1(sourceEl)) { + targetEl.setShape(sourceEl.shape); + } + } + } + var CustomChartView = /** @class */function (_super) { + __extends(CustomChartView, _super); + function CustomChartView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = CustomChartView.type; + return _this; + } + CustomChartView.prototype.render = function (customSeries, ecModel, api, payload) { + // Clear previously rendered progressive elements. + this._progressiveEls = null; + var oldData = this._data; + var data = customSeries.getData(); + var group = this.group; + var renderItem = makeRenderItem(customSeries, data, ecModel, api); + if (!oldData) { + // Previous render is incremental render or first render. + // Needs remove the incremental rendered elements. + group.removeAll(); + } + data.diff(oldData).add(function (newIdx) { + createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data); + }).remove(function (oldIdx) { + var el = oldData.getItemGraphicEl(oldIdx); + el && applyLeaveTransition(el, customInnerStore(el).option, customSeries); + }).update(function (newIdx, oldIdx) { + var oldEl = oldData.getItemGraphicEl(oldIdx); + createOrUpdateItem(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data); + }).execute(); + // Do clipping + var clipPath = customSeries.get('clip', true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null; + if (clipPath) { + group.setClipPath(clipPath); + } else { + group.removeClipPath(); + } + this._data = data; + }; + CustomChartView.prototype.incrementalPrepareRender = function (customSeries, ecModel, api) { + this.group.removeAll(); + this._data = null; + }; + CustomChartView.prototype.incrementalRender = function (params, customSeries, ecModel, api, payload) { + var data = customSeries.getData(); + var renderItem = makeRenderItem(customSeries, data, ecModel, api); + var progressiveEls = this._progressiveEls = []; + function setIncrementalAndHoverLayer(el) { + if (!el.isGroup) { + el.incremental = true; + el.ensureState('emphasis').hoverLayer = true; + } + } + for (var idx = params.start; idx < params.end; idx++) { + var el = createOrUpdateItem(null, null, idx, renderItem(idx, payload), customSeries, this.group, data); + if (el) { + el.traverse(setIncrementalAndHoverLayer); + progressiveEls.push(el); + } + } + }; + CustomChartView.prototype.eachRendered = function (cb) { + traverseElements(this._progressiveEls || this.group, cb); + }; + CustomChartView.prototype.filterForExposedEvent = function (eventType, query, targetEl, packedEvent) { + var elementName = query.element; + if (elementName == null || targetEl.name === elementName) { + return true; + } + // Enable to give a name on a group made by `renderItem`, and listen + // events that are triggered by its descendents. + while ((targetEl = targetEl.__hostTarget || targetEl.parent) && targetEl !== this.group) { + if (targetEl.name === elementName) { + return true; + } + } + return false; + }; + CustomChartView.type = 'custom'; + return CustomChartView; + }(ChartView); + function createEl(elOption) { + var graphicType = elOption.type; + var el; + // Those graphic elements are not shapes. They should not be + // overwritten by users, so do them first. + if (graphicType === 'path') { + var shape = elOption.shape; + // Using pathRect brings convenience to users sacle svg path. + var pathRect = shape.width != null && shape.height != null ? { + x: shape.x || 0, + y: shape.y || 0, + width: shape.width, + height: shape.height + } : null; + var pathData = getPathData(shape); + // Path is also used for icon, so layout 'center' by default. + el = makePath(pathData, null, pathRect, shape.layout || 'center'); + customInnerStore(el).customPathData = pathData; + } else if (graphicType === 'image') { + el = new ZRImage({}); + customInnerStore(el).customImagePath = elOption.style.image; + } else if (graphicType === 'text') { + el = new ZRText({}); + // customInnerStore(el).customText = (elOption.style as TextStyleProps).text; + } else if (graphicType === 'group') { + el = new Group(); + } else if (graphicType === 'compoundPath') { + throw new Error('"compoundPath" is not supported yet.'); + } else { + var Clz = getShapeClass(graphicType); + if (!Clz) { + var errMsg = ''; + if ("development" !== 'production') { + errMsg = 'graphic type "' + graphicType + '" can not be found.'; + } + throwError(errMsg); + } + el = new Clz(); + } + customInnerStore(el).customGraphicType = graphicType; + el.name = elOption.name; + // Compat ec4: the default z2 lift is 1. If changing the number, + // some cases probably be broken: hierarchy layout along z, like circle packing, + // where emphasis only intending to modify color/border rather than lift z2. + el.z2EmphasisLift = 1; + el.z2SelectLift = 1; + return el; + } + function updateElNormal( + // Can be null/undefined + api, el, dataIndex, elOption, attachedTxInfo, seriesModel, isInit) { + // Stop and restore before update any other attributes. + stopPreviousKeyframeAnimationAndRestore(el); + var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg; + if (txCfgOpt) { + // PENDING: whether use user object directly rather than clone? + // TODO:5.0 textConfig transition animation? + el.setTextConfig(txCfgOpt); + } + // Default transition ['x', 'y'] + if (elOption && elOption.transition == null) { + elOption.transition = DEFAULT_TRANSITION; + } + // Do some normalization on style. + var styleOpt = elOption && elOption.style; + if (styleOpt) { + if (el.type === 'text') { + var textOptionStyle = styleOpt; + // Compatible with ec4: if `textFill` or `textStroke` exists use them. + hasOwn(textOptionStyle, 'textFill') && (textOptionStyle.fill = textOptionStyle.textFill); + hasOwn(textOptionStyle, 'textStroke') && (textOptionStyle.stroke = textOptionStyle.textStroke); + } + var decalPattern = void 0; + var decalObj = isPath$1(el) ? styleOpt.decal : null; + if (api && decalObj) { + decalObj.dirty = true; + decalPattern = createOrUpdatePatternFromDecal(decalObj, api); + } + // Always overwrite in case user specify this prop. + styleOpt.__decalPattern = decalPattern; + } + if (isDisplayable(el)) { + if (styleOpt) { + var decalPattern = styleOpt.__decalPattern; + if (decalPattern) { + styleOpt.decal = decalPattern; + } + } + } + applyUpdateTransition(el, elOption, seriesModel, { + dataIndex: dataIndex, + isInit: isInit, + clearStyle: true + }); + applyKeyframeAnimation(el, elOption.keyframeAnimation, seriesModel); + } + function updateElOnState(state, el, elStateOpt, styleOpt, attachedTxInfo) { + var elDisplayable = el.isGroup ? null : el; + var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg; + // PENDING:5.0 support customize scale change and transition animation? + if (elDisplayable) { + // By default support auto lift color when hover whether `emphasis` specified. + var stateObj = elDisplayable.ensureState(state); + if (styleOpt === false) { + var existingEmphasisState = elDisplayable.getState(state); + if (existingEmphasisState) { + existingEmphasisState.style = null; + } + } else { + // style is needed to enable default emphasis. + stateObj.style = styleOpt || null; + } + // If `elOption.styleEmphasis` or `elOption.emphasis.style` is `false`, + // remove hover style. + // If `elOption.textConfig` or `elOption.emphasis.textConfig` is null/undefined, it does not + // make sense. So for simplicity, we do not ditinguish `hasOwnProperty` and null/undefined. + if (txCfgOpt) { + stateObj.textConfig = txCfgOpt; + } + setDefaultStateProxy(elDisplayable); + } + } + function updateZ$1(el, elOption, seriesModel) { + // Group not support textContent and not support z yet. + if (el.isGroup) { + return; + } + var elDisplayable = el; + var currentZ = seriesModel.currentZ; + var currentZLevel = seriesModel.currentZLevel; + // Always erase. + elDisplayable.z = currentZ; + elDisplayable.zlevel = currentZLevel; + // z2 must not be null/undefined, otherwise sort error may occur. + var optZ2 = elOption.z2; + optZ2 != null && (elDisplayable.z2 = optZ2 || 0); + for (var i = 0; i < STATES.length; i++) { + updateZForEachState(elDisplayable, elOption, STATES[i]); + } + } + function updateZForEachState(elDisplayable, elOption, state) { + var isNormal = state === NORMAL; + var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state); + var optZ2 = elStateOpt ? elStateOpt.z2 : null; + var stateObj; + if (optZ2 != null) { + // Do not `ensureState` until required. + stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state); + stateObj.z2 = optZ2 || 0; + } + } + function makeRenderItem(customSeries, data, ecModel, api) { + var renderItem = customSeries.get('renderItem'); + var coordSys = customSeries.coordinateSystem; + var prepareResult = {}; + if (coordSys) { + if ("development" !== 'production') { + assert(renderItem, 'series.render is required.'); + assert(coordSys.prepareCustoms || prepareCustoms[coordSys.type], 'This coordSys does not support custom series.'); + } + // `coordSys.prepareCustoms` is used for external coord sys like bmap. + prepareResult = coordSys.prepareCustoms ? coordSys.prepareCustoms(coordSys) : prepareCustoms[coordSys.type](coordSys); + } + var userAPI = defaults({ + getWidth: api.getWidth, + getHeight: api.getHeight, + getZr: api.getZr, + getDevicePixelRatio: api.getDevicePixelRatio, + value: value, + style: style, + ordinalRawValue: ordinalRawValue, + styleEmphasis: styleEmphasis, + visual: visual, + barLayout: barLayout, + currentSeriesIndices: currentSeriesIndices, + font: font + }, prepareResult.api || {}); + var userParams = { + // The life cycle of context: current round of rendering. + // The global life cycle is probably not necessary, because + // user can store global status by themselves. + context: {}, + seriesId: customSeries.id, + seriesName: customSeries.name, + seriesIndex: customSeries.seriesIndex, + coordSys: prepareResult.coordSys, + dataInsideLength: data.count(), + encode: wrapEncodeDef(customSeries.getData()) + }; + // If someday intending to refactor them to a class, should consider do not + // break change: currently these attribute member are encapsulated in a closure + // so that do not need to force user to call these method with a scope. + // Do not support call `api` asynchronously without dataIndexInside input. + var currDataIndexInside; + var currItemModel; + var currItemStyleModels = {}; + var currLabelModels = {}; + var seriesItemStyleModels = {}; + var seriesLabelModels = {}; + for (var i = 0; i < STATES.length; i++) { + var stateName = STATES[i]; + seriesItemStyleModels[stateName] = customSeries.getModel(PATH_ITEM_STYLE[stateName]); + seriesLabelModels[stateName] = customSeries.getModel(PATH_LABEL[stateName]); + } + function getItemModel(dataIndexInside) { + return dataIndexInside === currDataIndexInside ? currItemModel || (currItemModel = data.getItemModel(dataIndexInside)) : data.getItemModel(dataIndexInside); + } + function getItemStyleModel(dataIndexInside, state) { + return !data.hasItemOption ? seriesItemStyleModels[state] : dataIndexInside === currDataIndexInside ? currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel(dataIndexInside).getModel(PATH_ITEM_STYLE[state])) : getItemModel(dataIndexInside).getModel(PATH_ITEM_STYLE[state]); + } + function getLabelModel(dataIndexInside, state) { + return !data.hasItemOption ? seriesLabelModels[state] : dataIndexInside === currDataIndexInside ? currLabelModels[state] || (currLabelModels[state] = getItemModel(dataIndexInside).getModel(PATH_LABEL[state])) : getItemModel(dataIndexInside).getModel(PATH_LABEL[state]); + } + return function (dataIndexInside, payload) { + currDataIndexInside = dataIndexInside; + currItemModel = null; + currItemStyleModels = {}; + currLabelModels = {}; + return renderItem && renderItem(defaults({ + dataIndexInside: dataIndexInside, + dataIndex: data.getRawIndex(dataIndexInside), + // Can be used for optimization when zoom or roam. + actionType: payload ? payload.type : null + }, userParams), userAPI); + }; + /** + * @public + * @param dim by default 0. + * @param dataIndexInside by default `currDataIndexInside`. + */ + function value(dim, dataIndexInside) { + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + return data.getStore().get(data.getDimensionIndex(dim || 0), dataIndexInside); + } + /** + * @public + * @param dim by default 0. + * @param dataIndexInside by default `currDataIndexInside`. + */ + function ordinalRawValue(dim, dataIndexInside) { + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + dim = dim || 0; + var dimInfo = data.getDimensionInfo(dim); + if (!dimInfo) { + var dimIndex = data.getDimensionIndex(dim); + return dimIndex >= 0 ? data.getStore().get(dimIndex, dataIndexInside) : undefined; + } + var val = data.get(dimInfo.name, dataIndexInside); + var ordinalMeta = dimInfo && dimInfo.ordinalMeta; + return ordinalMeta ? ordinalMeta.categories[val] : val; + } + /** + * @deprecated The original intention of `api.style` is enable to set itemStyle + * like other series. But it is not necessary and not easy to give a strict definition + * of what it returns. And since echarts5 it needs to be make compat work. So + * deprecates it since echarts5. + * + * By default, `visual` is applied to style (to support visualMap). + * `visual.color` is applied at `fill`. If user want apply visual.color on `stroke`, + * it can be implemented as: + * `api.style({stroke: api.visual('color'), fill: null})`; + * + * [Compat]: since ec5, RectText has been separated from its hosts el. + * so `api.style()` will only return the style from `itemStyle` but not handle `label` + * any more. But `series.label` config is never published in doc. + * We still compat it in `api.style()`. But not encourage to use it and will still not + * to pulish it to doc. + * @public + * @param dataIndexInside by default `currDataIndexInside`. + */ + function style(userProps, dataIndexInside) { + if ("development" !== 'production') { + warnDeprecated('api.style', 'Please write literal style directly instead.'); + } + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + var style = data.getItemVisual(dataIndexInside, 'style'); + var visualColor = style && style.fill; + var opacity = style && style.opacity; + var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle(); + visualColor != null && (itemStyle.fill = visualColor); + opacity != null && (itemStyle.opacity = opacity); + var opt = { + inheritColor: isString(visualColor) ? visualColor : '#000' + }; + var labelModel = getLabelModel(dataIndexInside, NORMAL); + // Now that the feature of "auto adjust text fill/stroke" has been migrated to zrender + // since ec5, we should set `isAttached` as `false` here and make compat in + // `convertToEC4StyleForCustomSerise`. + var textStyle = createTextStyle(labelModel, null, opt, false, true); + textStyle.text = labelModel.getShallow('show') ? retrieve2(customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null; + var textConfig = createTextConfig(labelModel, opt, false); + preFetchFromExtra(userProps, itemStyle); + itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig); + userProps && applyUserPropsAfter(itemStyle, userProps); + itemStyle.legacy = true; + return itemStyle; + } + /** + * @deprecated The reason see `api.style()` + * @public + * @param dataIndexInside by default `currDataIndexInside`. + */ + function styleEmphasis(userProps, dataIndexInside) { + if ("development" !== 'production') { + warnDeprecated('api.styleEmphasis', 'Please write literal style directly instead.'); + } + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle(); + var labelModel = getLabelModel(dataIndexInside, EMPHASIS); + var textStyle = createTextStyle(labelModel, null, null, true, true); + textStyle.text = labelModel.getShallow('show') ? retrieve3(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS), customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null; + var textConfig = createTextConfig(labelModel, null, true); + preFetchFromExtra(userProps, itemStyle); + itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig); + userProps && applyUserPropsAfter(itemStyle, userProps); + itemStyle.legacy = true; + return itemStyle; + } + function applyUserPropsAfter(itemStyle, extra) { + for (var key in extra) { + if (hasOwn(extra, key)) { + itemStyle[key] = extra[key]; + } + } + } + function preFetchFromExtra(extra, itemStyle) { + // A trick to retrieve those props firstly, which are used to + // apply auto inside fill/stroke in `convertToEC4StyleForCustomSerise`. + // (It's not reasonable but only for a degree of compat) + if (extra) { + extra.textFill && (itemStyle.textFill = extra.textFill); + extra.textPosition && (itemStyle.textPosition = extra.textPosition); + } + } + /** + * @public + * @param dataIndexInside by default `currDataIndexInside`. + */ + function visual(visualType, dataIndexInside) { + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + if (hasOwn(STYLE_VISUAL_TYPE, visualType)) { + var style_1 = data.getItemVisual(dataIndexInside, 'style'); + return style_1 ? style_1[STYLE_VISUAL_TYPE[visualType]] : null; + } + // Only support these visuals. Other visual might be inner tricky + // for performance (like `style`), do not expose to users. + if (hasOwn(NON_STYLE_VISUAL_PROPS, visualType)) { + return data.getItemVisual(dataIndexInside, visualType); + } + } + /** + * @public + * @return If not support, return undefined. + */ + function barLayout(opt) { + if (coordSys.type === 'cartesian2d') { + var baseAxis = coordSys.getBaseAxis(); + return getLayoutOnAxis(defaults({ + axis: baseAxis + }, opt)); + } + } + /** + * @public + */ + function currentSeriesIndices() { + return ecModel.getCurrentSeriesIndices(); + } + /** + * @public + * @return font string + */ + function font(opt) { + return getFont(opt, ecModel); + } + } + function wrapEncodeDef(data) { + var encodeDef = {}; + each(data.dimensions, function (dimName) { + var dimInfo = data.getDimensionInfo(dimName); + if (!dimInfo.isExtraCoord) { + var coordDim = dimInfo.coordDim; + var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || []; + dataDims[dimInfo.coordDimIndex] = data.getDimensionIndex(dimName); + } + }); + return encodeDef; + } + function createOrUpdateItem(api, existsEl, dataIndex, elOption, seriesModel, group, data) { + // [Rule] + // If `renderItem` returns `null`/`undefined`/`false`, remove the previous el if existing. + // (It seems that violate the "merge" principle, but most of users probably intuitively + // regard "return;" as "show nothing element whatever", so make a exception to meet the + // most cases.) + // The rule or "merge" see [STRATEGY_MERGE]. + // If `elOption` is `null`/`undefined`/`false` (when `renderItem` returns nothing). + if (!elOption) { + group.remove(existsEl); + return; + } + var el = doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group); + el && data.setItemGraphicEl(dataIndex, el); + el && toggleHoverEmphasis(el, elOption.focus, elOption.blurScope, elOption.emphasisDisabled); + return el; + } + function doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group) { + if ("development" !== 'production') { + assert(elOption, 'should not have an null/undefined element setting'); + } + var toBeReplacedIdx = -1; + var oldEl = existsEl; + if (existsEl && doesElNeedRecreate(existsEl, elOption, seriesModel) + // || ( + // // PENDING: even in one-to-one mapping case, if el is marked as morph, + // // do not sure whether the el will be mapped to another el with different + // // hierarchy in Group tree. So always recreate el rather than reuse the el. + // morphHelper && morphHelper.isOneToOneFrom(el) + // ) + ) { + // Should keep at the original index, otherwise "merge by index" will be incorrect. + toBeReplacedIdx = indexOf(group.childrenRef(), existsEl); + existsEl = null; + } + var isInit = !existsEl; + var el = existsEl; + if (!el) { + el = createEl(elOption); + if (oldEl) { + copyElement(oldEl, el); + } + } else { + // FIMXE:NEXT unified clearState? + // If in some case the performance issue arised, consider + // do not clearState but update cached normal state directly. + el.clearStates(); + } + // Need to set morph: false explictly to disable automatically morphing. + if (elOption.morph === false) { + el.disableMorphing = true; + } else if (el.disableMorphing) { + el.disableMorphing = false; + } + attachedTxInfoTmp.normal.cfg = attachedTxInfoTmp.normal.conOpt = attachedTxInfoTmp.emphasis.cfg = attachedTxInfoTmp.emphasis.conOpt = attachedTxInfoTmp.blur.cfg = attachedTxInfoTmp.blur.conOpt = attachedTxInfoTmp.select.cfg = attachedTxInfoTmp.select.conOpt = null; + attachedTxInfoTmp.isLegacy = false; + doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp); + doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit); + updateElNormal(api, el, dataIndex, elOption, attachedTxInfoTmp, seriesModel, isInit); + // `elOption.info` enables user to mount some info on + // elements and use them in event handlers. + // Update them only when user specified, otherwise, remain. + hasOwn(elOption, 'info') && (customInnerStore(el).info = elOption.info); + for (var i = 0; i < STATES.length; i++) { + var stateName = STATES[i]; + if (stateName !== NORMAL) { + var otherStateOpt = retrieveStateOption(elOption, stateName); + var otherStyleOpt = retrieveStyleOptionOnState(elOption, otherStateOpt, stateName); + updateElOnState(stateName, el, otherStateOpt, otherStyleOpt, attachedTxInfoTmp); + } + } + updateZ$1(el, elOption, seriesModel); + if (elOption.type === 'group') { + mergeChildren(api, el, dataIndex, elOption, seriesModel); + } + if (toBeReplacedIdx >= 0) { + group.replaceAt(el, toBeReplacedIdx); + } else { + group.add(el); + } + return el; + } + // `el` must not be null/undefined. + function doesElNeedRecreate(el, elOption, seriesModel) { + var elInner = customInnerStore(el); + var elOptionType = elOption.type; + var elOptionShape = elOption.shape; + var elOptionStyle = elOption.style; + return ( + // Always create new if universal transition is enabled. + // Because we do transition after render. It needs to know what old element is. Replacement will loose it. + seriesModel.isUniversalTransitionEnabled() + // If `elOptionType` is `null`, follow the merge principle. + || elOptionType != null && elOptionType !== elInner.customGraphicType || elOptionType === 'path' && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== elInner.customPathData || elOptionType === 'image' && hasOwn(elOptionStyle, 'image') && elOptionStyle.image !== elInner.customImagePath + // // FIXME test and remove this restriction? + // || (elOptionType === 'text' + // && hasOwn(elOptionStyle, 'text') + // && (elOptionStyle as TextStyleProps).text !== elInner.customText + // ) + ); + } + + function doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit) { + // Based on the "merge" principle, if no clipPath provided, + // do nothing. The exists clip will be totally removed only if + // `el.clipPath` is `false`. Otherwise it will be merged/replaced. + var clipPathOpt = elOption.clipPath; + if (clipPathOpt === false) { + if (el && el.getClipPath()) { + el.removeClipPath(); + } + } else if (clipPathOpt) { + var clipPath = el.getClipPath(); + if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt, seriesModel)) { + clipPath = null; + } + if (!clipPath) { + clipPath = createEl(clipPathOpt); + if ("development" !== 'production') { + assert(isPath$1(clipPath), 'Only any type of `path` can be used in `clipPath`, rather than ' + clipPath.type + '.'); + } + el.setClipPath(clipPath); + } + updateElNormal(null, clipPath, dataIndex, clipPathOpt, null, seriesModel, isInit); + } + // If not define `clipPath` in option, do nothing unnecessary. + } + + function doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) { + // Group does not support textContent temporarily until necessary. + if (el.isGroup) { + return; + } + // Normal must be called before emphasis, for `isLegacy` detection. + processTxInfo(elOption, null, attachedTxInfo); + processTxInfo(elOption, EMPHASIS, attachedTxInfo); + // If `elOption.textConfig` or `elOption.textContent` is null/undefined, it does not make sense. + // So for simplicity, if "elOption hasOwnProperty of them but be null/undefined", we do not + // trade them as set to null to el. + // Especially: + // `elOption.textContent: false` means remove textContent. + // `elOption.textContent.emphasis.style: false` means remove the style from emphasis state. + var txConOptNormal = attachedTxInfo.normal.conOpt; + var txConOptEmphasis = attachedTxInfo.emphasis.conOpt; + var txConOptBlur = attachedTxInfo.blur.conOpt; + var txConOptSelect = attachedTxInfo.select.conOpt; + if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) { + var textContent = el.getTextContent(); + if (txConOptNormal === false) { + textContent && el.removeTextContent(); + } else { + txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || { + type: 'text' + }; + if (!textContent) { + textContent = createEl(txConOptNormal); + el.setTextContent(textContent); + } else { + // If in some case the performance issue arised, consider + // do not clearState but update cached normal state directly. + textContent.clearStates(); + } + updateElNormal(null, textContent, dataIndex, txConOptNormal, null, seriesModel, isInit); + var txConStlOptNormal = txConOptNormal && txConOptNormal.style; + for (var i = 0; i < STATES.length; i++) { + var stateName = STATES[i]; + if (stateName !== NORMAL) { + var txConOptOtherState = attachedTxInfo[stateName].conOpt; + updateElOnState(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState(txConOptNormal, txConOptOtherState, stateName), null); + } + } + txConStlOptNormal ? textContent.dirty() : textContent.markRedraw(); + } + } + } + function processTxInfo(elOption, state, attachedTxInfo) { + var stateOpt = !state ? elOption : retrieveStateOption(elOption, state); + var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS); + var elType = elOption.type; + var txCfg = stateOpt ? stateOpt.textConfig : null; + var txConOptNormal = elOption.textContent; + var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption(txConOptNormal, state); + if (styleOpt && ( + // Because emphasis style has little info to detect legacy, + // if normal is legacy, emphasis is trade as legacy. + attachedTxInfo.isLegacy || isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))) { + attachedTxInfo.isLegacy = true; + var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state); + // Explicitly specified `textConfig` and `textContent` has higher priority than + // the ones generated by legacy style. Otherwise if users use them and `api.style` + // at the same time, they not both work and hardly to known why. + if (!txCfg && convertResult.textConfig) { + txCfg = convertResult.textConfig; + } + if (!txConOpt && convertResult.textContent) { + txConOpt = convertResult.textContent; + } + } + if (!state && txConOpt) { + var txConOptNormal_1 = txConOpt; + // `textContent: {type: 'text'}`, the "type" is easy to be missing. So we tolerate it. + !txConOptNormal_1.type && (txConOptNormal_1.type = 'text'); + if ("development" !== 'production') { + // Do not tolerate incorrcet type for forward compat. + assert(txConOptNormal_1.type === 'text', 'textContent.type must be "text"'); + } + } + var info = !state ? attachedTxInfo.normal : attachedTxInfo[state]; + info.cfg = txCfg; + info.conOpt = txConOpt; + } + function retrieveStateOption(elOption, state) { + return !state ? elOption : elOption ? elOption[state] : null; + } + function retrieveStyleOptionOnState(stateOptionNormal, stateOption, state) { + var style = stateOption && stateOption.style; + if (style == null && state === EMPHASIS && stateOptionNormal) { + style = stateOptionNormal.styleEmphasis; + } + return style; + } + // Usage: + // (1) By default, `elOption.$mergeChildren` is `'byIndex'`, which indicates + // that the existing children will not be removed, and enables the feature + // that update some of the props of some of the children simply by construct + // the returned children of `renderItem` like: + // `var children = group.children = []; children[3] = {opacity: 0.5};` + // (2) If `elOption.$mergeChildren` is `'byName'`, add/update/remove children + // by child.name. But that might be lower performance. + // (3) If `elOption.$mergeChildren` is `false`, the existing children will be + // replaced totally. + // (4) If `!elOption.children`, following the "merge" principle, nothing will + // happen. + // (5) If `elOption.$mergeChildren` is not `false` neither `'byName'` and the + // `el` is a group, and if any of the new child is null, it means to remove + // the element at the same index, if exists. On the other hand, if the new + // child is and empty object `{}`, it means to keep the element not changed. + // + // For implementation simpleness, do not provide a direct way to remove single + // child (otherwise the total indices of the children array have to be modified). + // User can remove a single child by setting its `ignore` to `true`. + function mergeChildren(api, el, dataIndex, elOption, seriesModel) { + var newChildren = elOption.children; + var newLen = newChildren ? newChildren.length : 0; + var mergeChildren = elOption.$mergeChildren; + // `diffChildrenByName` has been deprecated. + var byName = mergeChildren === 'byName' || elOption.diffChildrenByName; + var notMerge = mergeChildren === false; + // For better performance on roam update, only enter if necessary. + if (!newLen && !byName && !notMerge) { + return; + } + if (byName) { + diffGroupChildren({ + api: api, + oldChildren: el.children() || [], + newChildren: newChildren || [], + dataIndex: dataIndex, + seriesModel: seriesModel, + group: el + }); + return; + } + notMerge && el.removeAll(); + // Mapping children of a group simply by index, which + // might be better performance. + var index = 0; + for (; index < newLen; index++) { + var newChild = newChildren[index]; + var oldChild = el.childAt(index); + if (newChild) { + if (newChild.ignore == null) { + // The old child is set to be ignored if null (see comments + // below). So we need to set ignore to be false back. + newChild.ignore = false; + } + doCreateOrUpdateEl(api, oldChild, dataIndex, newChild, seriesModel, el); + } else { + if ("development" !== 'production') { + assert(oldChild, 'renderItem should not return a group containing elements' + ' as null/undefined/{} if they do not exist before.'); + } + // If the new element option is null, it means to remove the old + // element. But we cannot really remove the element from the group + // directly, because the element order may not be stable when this + // element is added back. So we set the element to be ignored. + oldChild.ignore = true; + } + } + for (var i = el.childCount() - 1; i >= index; i--) { + var child = el.childAt(i); + removeChildFromGroup(el, child, seriesModel); + } + } + function removeChildFromGroup(group, child, seriesModel) { + // Do not support leave elements that are not mentioned in the latest + // `renderItem` return. Otherwise users may not have a clear and simple + // concept that how to control all of the elements. + child && applyLeaveTransition(child, customInnerStore(group).option, seriesModel); + } + function diffGroupChildren(context) { + new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute(); + } + function getKey(item, idx) { + var name = item && item.name; + return name != null ? name : GROUP_DIFF_PREFIX + idx; + } + function processAddUpdate(newIndex, oldIndex) { + var context = this.context; + var childOption = newIndex != null ? context.newChildren[newIndex] : null; + var child = oldIndex != null ? context.oldChildren[oldIndex] : null; + doCreateOrUpdateEl(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group); + } + function processRemove(oldIndex) { + var context = this.context; + var child = context.oldChildren[oldIndex]; + child && applyLeaveTransition(child, customInnerStore(child).option, context.seriesModel); + } + /** + * @return SVG Path data. + */ + function getPathData(shape) { + // "d" follows the SVG convention. + return shape && (shape.pathData || shape.d); + } + function hasOwnPathData(shape) { + return shape && (hasOwn(shape, 'pathData') || hasOwn(shape, 'd')); + } + + function install$r(registers) { + registers.registerChartView(CustomChartView); + registers.registerSeriesModel(CustomSeriesModel); + } + + var inner$a = makeInner(); + var clone$3 = clone; + var bind$1 = bind; + /** + * Base axis pointer class in 2D. + */ + var BaseAxisPointer = /** @class */function () { + function BaseAxisPointer() { + this._dragging = false; + /** + * In px, arbitrary value. Do not set too small, + * no animation is ok for most cases. + */ + this.animationThreshold = 15; + } + /** + * @implement + */ + BaseAxisPointer.prototype.render = function (axisModel, axisPointerModel, api, forceRender) { + var value = axisPointerModel.get('value'); + var status = axisPointerModel.get('status'); + // Bind them to `this`, not in closure, otherwise they will not + // be replaced when user calling setOption in not merge mode. + this._axisModel = axisModel; + this._axisPointerModel = axisPointerModel; + this._api = api; + // Optimize: `render` will be called repeatedly during mouse move. + // So it is power consuming if performing `render` each time, + // especially on mobile device. + if (!forceRender && this._lastValue === value && this._lastStatus === status) { + return; + } + this._lastValue = value; + this._lastStatus = status; + var group = this._group; + var handle = this._handle; + if (!status || status === 'hide') { + // Do not clear here, for animation better. + group && group.hide(); + handle && handle.hide(); + return; + } + group && group.show(); + handle && handle.show(); + // Otherwise status is 'show' + var elOption = {}; + this.makeElOption(elOption, value, axisModel, axisPointerModel, api); + // Enable change axis pointer type. + var graphicKey = elOption.graphicKey; + if (graphicKey !== this._lastGraphicKey) { + this.clear(api); + } + this._lastGraphicKey = graphicKey; + var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel); + if (!group) { + group = this._group = new Group(); + this.createPointerEl(group, elOption, axisModel, axisPointerModel); + this.createLabelEl(group, elOption, axisModel, axisPointerModel); + api.getZr().add(group); + } else { + var doUpdateProps = curry(updateProps$1, axisPointerModel, moveAnimation); + this.updatePointerEl(group, elOption, doUpdateProps); + this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel); + } + updateMandatoryProps(group, axisPointerModel, true); + this._renderHandle(value); + }; + /** + * @implement + */ + BaseAxisPointer.prototype.remove = function (api) { + this.clear(api); + }; + /** + * @implement + */ + BaseAxisPointer.prototype.dispose = function (api) { + this.clear(api); + }; + /** + * @protected + */ + BaseAxisPointer.prototype.determineAnimation = function (axisModel, axisPointerModel) { + var animation = axisPointerModel.get('animation'); + var axis = axisModel.axis; + var isCategoryAxis = axis.type === 'category'; + var useSnap = axisPointerModel.get('snap'); + // Value axis without snap always do not snap. + if (!useSnap && !isCategoryAxis) { + return false; + } + if (animation === 'auto' || animation == null) { + var animationThreshold = this.animationThreshold; + if (isCategoryAxis && axis.getBandWidth() > animationThreshold) { + return true; + } + // It is important to auto animation when snap used. Consider if there is + // a dataZoom, animation will be disabled when too many points exist, while + // it will be enabled for better visual effect when little points exist. + if (useSnap) { + var seriesDataCount = getAxisInfo(axisModel).seriesDataCount; + var axisExtent = axis.getExtent(); + // Approximate band width + return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold; + } + return false; + } + return animation === true; + }; + /** + * add {pointer, label, graphicKey} to elOption + * @protected + */ + BaseAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) { + // Should be implemenented by sub-class. + }; + /** + * @protected + */ + BaseAxisPointer.prototype.createPointerEl = function (group, elOption, axisModel, axisPointerModel) { + var pointerOption = elOption.pointer; + if (pointerOption) { + var pointerEl = inner$a(group).pointerEl = new graphic[pointerOption.type](clone$3(elOption.pointer)); + group.add(pointerEl); + } + }; + /** + * @protected + */ + BaseAxisPointer.prototype.createLabelEl = function (group, elOption, axisModel, axisPointerModel) { + if (elOption.label) { + var labelEl = inner$a(group).labelEl = new ZRText(clone$3(elOption.label)); + group.add(labelEl); + updateLabelShowHide(labelEl, axisPointerModel); + } + }; + /** + * @protected + */ + BaseAxisPointer.prototype.updatePointerEl = function (group, elOption, updateProps) { + var pointerEl = inner$a(group).pointerEl; + if (pointerEl && elOption.pointer) { + pointerEl.setStyle(elOption.pointer.style); + updateProps(pointerEl, { + shape: elOption.pointer.shape + }); + } + }; + /** + * @protected + */ + BaseAxisPointer.prototype.updateLabelEl = function (group, elOption, updateProps, axisPointerModel) { + var labelEl = inner$a(group).labelEl; + if (labelEl) { + labelEl.setStyle(elOption.label.style); + updateProps(labelEl, { + // Consider text length change in vertical axis, animation should + // be used on shape, otherwise the effect will be weird. + // TODOTODO + // shape: elOption.label.shape, + x: elOption.label.x, + y: elOption.label.y + }); + updateLabelShowHide(labelEl, axisPointerModel); + } + }; + /** + * @private + */ + BaseAxisPointer.prototype._renderHandle = function (value) { + if (this._dragging || !this.updateHandleTransform) { + return; + } + var axisPointerModel = this._axisPointerModel; + var zr = this._api.getZr(); + var handle = this._handle; + var handleModel = axisPointerModel.getModel('handle'); + var status = axisPointerModel.get('status'); + if (!handleModel.get('show') || !status || status === 'hide') { + handle && zr.remove(handle); + this._handle = null; + return; + } + var isInit; + if (!this._handle) { + isInit = true; + handle = this._handle = createIcon(handleModel.get('icon'), { + cursor: 'move', + draggable: true, + onmousemove: function (e) { + // For mobile device, prevent screen slider on the button. + stop(e.event); + }, + onmousedown: bind$1(this._onHandleDragMove, this, 0, 0), + drift: bind$1(this._onHandleDragMove, this), + ondragend: bind$1(this._onHandleDragEnd, this) + }); + zr.add(handle); + } + updateMandatoryProps(handle, axisPointerModel, false); + // update style + handle.setStyle(handleModel.getItemStyle(null, ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'])); + // update position + var handleSize = handleModel.get('size'); + if (!isArray(handleSize)) { + handleSize = [handleSize, handleSize]; + } + handle.scaleX = handleSize[0] / 2; + handle.scaleY = handleSize[1] / 2; + createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate'); + this._moveHandleToValue(value, isInit); + }; + BaseAxisPointer.prototype._moveHandleToValue = function (value, isInit) { + updateProps$1(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel))); + }; + BaseAxisPointer.prototype._onHandleDragMove = function (dx, dy) { + var handle = this._handle; + if (!handle) { + return; + } + this._dragging = true; + // Persistent for throttle. + var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel); + this._payloadInfo = trans; + handle.stopAnimation(); + handle.attr(getHandleTransProps(trans)); + inner$a(handle).lastProp = null; + this._doDispatchAxisPointer(); + }; + /** + * Throttled method. + */ + BaseAxisPointer.prototype._doDispatchAxisPointer = function () { + var handle = this._handle; + if (!handle) { + return; + } + var payloadInfo = this._payloadInfo; + var axisModel = this._axisModel; + this._api.dispatchAction({ + type: 'updateAxisPointer', + x: payloadInfo.cursorPoint[0], + y: payloadInfo.cursorPoint[1], + tooltipOption: payloadInfo.tooltipOption, + axesInfo: [{ + axisDim: axisModel.axis.dim, + axisIndex: axisModel.componentIndex + }] + }); + }; + BaseAxisPointer.prototype._onHandleDragEnd = function () { + this._dragging = false; + var handle = this._handle; + if (!handle) { + return; + } + var value = this._axisPointerModel.get('value'); + // Consider snap or categroy axis, handle may be not consistent with + // axisPointer. So move handle to align the exact value position when + // drag ended. + this._moveHandleToValue(value); + // For the effect: tooltip will be shown when finger holding on handle + // button, and will be hidden after finger left handle button. + this._api.dispatchAction({ + type: 'hideTip' + }); + }; + /** + * @private + */ + BaseAxisPointer.prototype.clear = function (api) { + this._lastValue = null; + this._lastStatus = null; + var zr = api.getZr(); + var group = this._group; + var handle = this._handle; + if (zr && group) { + this._lastGraphicKey = null; + group && zr.remove(group); + handle && zr.remove(handle); + this._group = null; + this._handle = null; + this._payloadInfo = null; + } + clear(this, '_doDispatchAxisPointer'); + }; + /** + * @protected + */ + BaseAxisPointer.prototype.doClear = function () { + // Implemented by sub-class if necessary. + }; + BaseAxisPointer.prototype.buildLabel = function (xy, wh, xDimIndex) { + xDimIndex = xDimIndex || 0; + return { + x: xy[xDimIndex], + y: xy[1 - xDimIndex], + width: wh[xDimIndex], + height: wh[1 - xDimIndex] + }; + }; + return BaseAxisPointer; + }(); + function updateProps$1(animationModel, moveAnimation, el, props) { + // Animation optimize. + if (!propsEqual(inner$a(el).lastProp, props)) { + inner$a(el).lastProp = props; + moveAnimation ? updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props)); + } + } + function propsEqual(lastProps, newProps) { + if (isObject(lastProps) && isObject(newProps)) { + var equals_1 = true; + each(newProps, function (item, key) { + equals_1 = equals_1 && propsEqual(lastProps[key], item); + }); + return !!equals_1; + } else { + return lastProps === newProps; + } + } + function updateLabelShowHide(labelEl, axisPointerModel) { + labelEl[axisPointerModel.get(['label', 'show']) ? 'show' : 'hide'](); + } + function getHandleTransProps(trans) { + return { + x: trans.x || 0, + y: trans.y || 0, + rotation: trans.rotation || 0 + }; + } + function updateMandatoryProps(group, axisPointerModel, silent) { + var z = axisPointerModel.get('z'); + var zlevel = axisPointerModel.get('zlevel'); + group && group.traverse(function (el) { + if (el.type !== 'group') { + z != null && (el.z = z); + zlevel != null && (el.zlevel = zlevel); + el.silent = silent; + } + }); + } + + function buildElStyle(axisPointerModel) { + var axisPointerType = axisPointerModel.get('type'); + var styleModel = axisPointerModel.getModel(axisPointerType + 'Style'); + var style; + if (axisPointerType === 'line') { + style = styleModel.getLineStyle(); + style.fill = null; + } else if (axisPointerType === 'shadow') { + style = styleModel.getAreaStyle(); + style.stroke = null; + } + return style; + } + /** + * @param {Function} labelPos {align, verticalAlign, position} + */ + function buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) { + var value = axisPointerModel.get('value'); + var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), { + precision: axisPointerModel.get(['label', 'precision']), + formatter: axisPointerModel.get(['label', 'formatter']) + }); + var labelModel = axisPointerModel.getModel('label'); + var paddings = normalizeCssArray$1(labelModel.get('padding') || 0); + var font = labelModel.getFont(); + var textRect = getBoundingRect(text, font); + var position = labelPos.position; + var width = textRect.width + paddings[1] + paddings[3]; + var height = textRect.height + paddings[0] + paddings[2]; + // Adjust by align. + var align = labelPos.align; + align === 'right' && (position[0] -= width); + align === 'center' && (position[0] -= width / 2); + var verticalAlign = labelPos.verticalAlign; + verticalAlign === 'bottom' && (position[1] -= height); + verticalAlign === 'middle' && (position[1] -= height / 2); + // Not overflow ec container + confineInContainer(position, width, height, api); + var bgColor = labelModel.get('backgroundColor'); + if (!bgColor || bgColor === 'auto') { + bgColor = axisModel.get(['axisLine', 'lineStyle', 'color']); + } + elOption.label = { + // shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')}, + x: position[0], + y: position[1], + style: createTextStyle(labelModel, { + text: text, + font: font, + fill: labelModel.getTextColor(), + padding: paddings, + backgroundColor: bgColor + }), + // Label should be over axisPointer. + z2: 10 + }; + } + // Do not overflow ec container + function confineInContainer(position, width, height, api) { + var viewWidth = api.getWidth(); + var viewHeight = api.getHeight(); + position[0] = Math.min(position[0] + width, viewWidth) - width; + position[1] = Math.min(position[1] + height, viewHeight) - height; + position[0] = Math.max(position[0], 0); + position[1] = Math.max(position[1], 0); + } + function getValueLabel(value, axis, ecModel, seriesDataIndices, opt) { + value = axis.scale.parse(value); + var text = axis.scale.getLabel({ + value: value + }, { + // If `precision` is set, width can be fixed (like '12.00500'), which + // helps to debounce when when moving label. + precision: opt.precision + }); + var formatter = opt.formatter; + if (formatter) { + var params_1 = { + value: getAxisRawValue(axis, { + value: value + }), + axisDimension: axis.dim, + axisIndex: axis.index, + seriesData: [] + }; + each(seriesDataIndices, function (idxItem) { + var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); + var dataIndex = idxItem.dataIndexInside; + var dataParams = series && series.getDataParams(dataIndex); + dataParams && params_1.seriesData.push(dataParams); + }); + if (isString(formatter)) { + text = formatter.replace('{value}', text); + } else if (isFunction(formatter)) { + text = formatter(params_1); + } + } + return text; + } + function getTransformedPosition(axis, value, layoutInfo) { + var transform = create$1(); + rotate(transform, transform, layoutInfo.rotation); + translate(transform, transform, layoutInfo.position); + return applyTransform$1([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform); + } + function buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) { + // @ts-ignore + var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection); + layoutInfo.labelMargin = axisPointerModel.get(['label', 'margin']); + buildLabelElOption(elOption, axisModel, axisPointerModel, api, { + position: getTransformedPosition(axisModel.axis, value, layoutInfo), + align: textLayout.textAlign, + verticalAlign: textLayout.textVerticalAlign + }); + } + function makeLineShape(p1, p2, xDimIndex) { + xDimIndex = xDimIndex || 0; + return { + x1: p1[xDimIndex], + y1: p1[1 - xDimIndex], + x2: p2[xDimIndex], + y2: p2[1 - xDimIndex] + }; + } + function makeRectShape(xy, wh, xDimIndex) { + xDimIndex = xDimIndex || 0; + return { + x: xy[xDimIndex], + y: xy[1 - xDimIndex], + width: wh[xDimIndex], + height: wh[1 - xDimIndex] + }; + } + function makeSectorShape(cx, cy, r0, r, startAngle, endAngle) { + return { + cx: cx, + cy: cy, + r0: r0, + r: r, + startAngle: startAngle, + endAngle: endAngle, + clockwise: true + }; + } + + var CartesianAxisPointer = /** @class */function (_super) { + __extends(CartesianAxisPointer, _super); + function CartesianAxisPointer() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @override + */ + CartesianAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) { + var axis = axisModel.axis; + var grid = axis.grid; + var axisPointerType = axisPointerModel.get('type'); + var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent(); + var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true)); + if (axisPointerType && axisPointerType !== 'none') { + var elStyle = buildElStyle(axisPointerModel); + var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent); + pointerOption.style = elStyle; + elOption.graphicKey = pointerOption.type; + elOption.pointer = pointerOption; + } + var layoutInfo = layout$1(grid.model, axisModel); + buildCartesianSingleLabelElOption( + // @ts-ignore + value, elOption, layoutInfo, axisModel, axisPointerModel, api); + }; + /** + * @override + */ + CartesianAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) { + var layoutInfo = layout$1(axisModel.axis.grid.model, axisModel, { + labelInside: false + }); + // @ts-ignore + layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']); + var pos = getTransformedPosition(axisModel.axis, value, layoutInfo); + return { + x: pos[0], + y: pos[1], + rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) + }; + }; + /** + * @override + */ + CartesianAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) { + var axis = axisModel.axis; + var grid = axis.grid; + var axisExtent = axis.getGlobalExtent(true); + var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent(); + var dimIndex = axis.dim === 'x' ? 0 : 1; + var currPosition = [transform.x, transform.y]; + currPosition[dimIndex] += delta[dimIndex]; + currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); + currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); + var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; + var cursorPoint = [cursorOtherValue, cursorOtherValue]; + cursorPoint[dimIndex] = currPosition[dimIndex]; + // Make tooltip do not overlap axisPointer and in the middle of the grid. + var tooltipOptions = [{ + verticalAlign: 'middle' + }, { + align: 'center' + }]; + return { + x: currPosition[0], + y: currPosition[1], + rotation: transform.rotation, + cursorPoint: cursorPoint, + tooltipOption: tooltipOptions[dimIndex] + }; + }; + return CartesianAxisPointer; + }(BaseAxisPointer); + function getCartesian(grid, axis) { + var opt = {}; + opt[axis.dim + 'AxisIndex'] = axis.index; + return grid.getCartesian(opt); + } + var pointerShapeBuilder = { + line: function (axis, pixelValue, otherExtent) { + var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis)); + return { + type: 'Line', + subPixelOptimize: true, + shape: targetShape + }; + }, + shadow: function (axis, pixelValue, otherExtent) { + var bandWidth = Math.max(1, axis.getBandWidth()); + var span = otherExtent[1] - otherExtent[0]; + return { + type: 'Rect', + shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis)) + }; + } + }; + function getAxisDimIndex(axis) { + return axis.dim === 'x' ? 0 : 1; + } + + var AxisPointerModel = /** @class */function (_super) { + __extends(AxisPointerModel, _super); + function AxisPointerModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = AxisPointerModel.type; + return _this; + } + AxisPointerModel.type = 'axisPointer'; + AxisPointerModel.defaultOption = { + // 'auto' means that show when triggered by tooltip or handle. + show: 'auto', + // zlevel: 0, + z: 50, + type: 'line', + // axispointer triggered by tootip determine snap automatically, + // see `modelHelper`. + snap: false, + triggerTooltip: true, + triggerEmphasis: true, + value: null, + status: null, + link: [], + // Do not set 'auto' here, otherwise global animation: false + // will not effect at this axispointer. + animation: null, + animationDurationUpdate: 200, + lineStyle: { + color: '#B9BEC9', + width: 1, + type: 'dashed' + }, + shadowStyle: { + color: 'rgba(210,219,238,0.2)' + }, + label: { + show: true, + formatter: null, + precision: 'auto', + margin: 3, + color: '#fff', + padding: [5, 7, 5, 7], + backgroundColor: 'auto', + borderColor: null, + borderWidth: 0, + borderRadius: 3 + }, + handle: { + show: false, + // eslint-disable-next-line + 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, + // handle margin is from symbol center to axis, which is stable when circular move. + margin: 50, + // color: '#1b8bbd' + // color: '#2f4554' + color: '#333', + shadowBlur: 3, + shadowColor: '#aaa', + shadowOffsetX: 0, + shadowOffsetY: 2, + // For mobile performance + throttle: 40 + } + }; + return AxisPointerModel; + }(ComponentModel); + + var inner$b = makeInner(); + var each$7 = each; + /** + * @param {string} key + * @param {module:echarts/ExtensionAPI} api + * @param {Function} handler + * param: {string} currTrigger + * param: {Array.} point + */ + function register(key, api, handler) { + if (env.node) { + return; + } + var zr = api.getZr(); + inner$b(zr).records || (inner$b(zr).records = {}); + initGlobalListeners(zr, api); + var record = inner$b(zr).records[key] || (inner$b(zr).records[key] = {}); + record.handler = handler; + } + function initGlobalListeners(zr, api) { + if (inner$b(zr).initialized) { + return; + } + inner$b(zr).initialized = true; + useHandler('click', curry(doEnter, 'click')); + useHandler('mousemove', curry(doEnter, 'mousemove')); + // useHandler('mouseout', onLeave); + useHandler('globalout', onLeave); + function useHandler(eventType, cb) { + zr.on(eventType, function (e) { + var dis = makeDispatchAction(api); + each$7(inner$b(zr).records, function (record) { + record && cb(record, e, dis.dispatchAction); + }); + dispatchTooltipFinally(dis.pendings, api); + }); + } + } + function dispatchTooltipFinally(pendings, api) { + var showLen = pendings.showTip.length; + var hideLen = pendings.hideTip.length; + var actuallyPayload; + if (showLen) { + actuallyPayload = pendings.showTip[showLen - 1]; + } else if (hideLen) { + actuallyPayload = pendings.hideTip[hideLen - 1]; + } + if (actuallyPayload) { + actuallyPayload.dispatchAction = null; + api.dispatchAction(actuallyPayload); + } + } + function onLeave(record, e, dispatchAction) { + record.handler('leave', null, dispatchAction); + } + function doEnter(currTrigger, record, e, dispatchAction) { + record.handler(currTrigger, e, dispatchAction); + } + function makeDispatchAction(api) { + var pendings = { + showTip: [], + hideTip: [] + }; + // FIXME + // better approach? + // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip, + // which may be conflict, (axisPointer call showTip but tooltip call hideTip); + // So we have to add "final stage" to merge those dispatched actions. + var dispatchAction = function (payload) { + var pendingList = pendings[payload.type]; + if (pendingList) { + pendingList.push(payload); + } else { + payload.dispatchAction = dispatchAction; + api.dispatchAction(payload); + } + }; + return { + dispatchAction: dispatchAction, + pendings: pendings + }; + } + function unregister(key, api) { + if (env.node) { + return; + } + var zr = api.getZr(); + var record = (inner$b(zr).records || {})[key]; + if (record) { + inner$b(zr).records[key] = null; + } + } + + var AxisPointerView = /** @class */function (_super) { + __extends(AxisPointerView, _super); + function AxisPointerView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = AxisPointerView.type; + return _this; + } + AxisPointerView.prototype.render = function (globalAxisPointerModel, ecModel, api) { + var globalTooltipModel = ecModel.getComponent('tooltip'); + var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; + // Register global listener in AxisPointerView to enable + // AxisPointerView to be independent to Tooltip. + register('axisPointer', api, function (currTrigger, e, dispatchAction) { + // If 'none', it is not controlled by mouse totally. + if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) { + dispatchAction({ + type: 'updateAxisPointer', + currTrigger: currTrigger, + x: e && e.offsetX, + y: e && e.offsetY + }); + } + }); + }; + AxisPointerView.prototype.remove = function (ecModel, api) { + unregister('axisPointer', api); + }; + AxisPointerView.prototype.dispose = function (ecModel, api) { + unregister('axisPointer', api); + }; + AxisPointerView.type = 'axisPointer'; + return AxisPointerView; + }(ComponentView); + + /** + * @param finder contains {seriesIndex, dataIndex, dataIndexInside} + * @param ecModel + * @return {point: [x, y], el: ...} point Will not be null. + */ + function findPointFromSeries(finder, ecModel) { + var point = []; + var seriesIndex = finder.seriesIndex; + var seriesModel; + if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) { + return { + point: [] + }; + } + var data = seriesModel.getData(); + var dataIndex = queryDataIndex(data, finder); + if (dataIndex == null || dataIndex < 0 || isArray(dataIndex)) { + return { + point: [] + }; + } + var el = data.getItemGraphicEl(dataIndex); + var coordSys = seriesModel.coordinateSystem; + if (seriesModel.getTooltipPosition) { + point = seriesModel.getTooltipPosition(dataIndex) || []; + } else if (coordSys && coordSys.dataToPoint) { + if (finder.isStacked) { + var baseAxis = coordSys.getBaseAxis(); + var valueAxis = coordSys.getOtherAxis(baseAxis); + var valueAxisDim = valueAxis.dim; + var baseAxisDim = baseAxis.dim; + var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0; + var baseDim = data.mapDimension(baseAxisDim); + var stackedData = []; + stackedData[baseDataOffset] = data.get(baseDim, dataIndex); + stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo('stackResultDimension'), dataIndex); + point = coordSys.dataToPoint(stackedData) || []; + } else { + point = coordSys.dataToPoint(data.getValues(map(coordSys.dimensions, function (dim) { + return data.mapDimension(dim); + }), dataIndex)) || []; + } + } else if (el) { + // Use graphic bounding rect + var rect = el.getBoundingRect().clone(); + rect.applyTransform(el.transform); + point = [rect.x + rect.width / 2, rect.y + rect.height / 2]; + } + return { + point: point, + el: el + }; + } + + var inner$c = makeInner(); + /** + * Basic logic: check all axis, if they do not demand show/highlight, + * then hide/downplay them. + * + * @return content of event obj for echarts.connect. + */ + function axisTrigger(payload, ecModel, api) { + var currTrigger = payload.currTrigger; + var point = [payload.x, payload.y]; + var finder = payload; + var dispatchAction = payload.dispatchAction || bind(api.dispatchAction, api); + var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; + // Pending + // See #6121. But we are not able to reproduce it yet. + if (!coordSysAxesInfo) { + return; + } + if (illegalPoint(point)) { + // Used in the default behavior of `connection`: use the sample seriesIndex + // and dataIndex. And also used in the tooltipView trigger. + point = findPointFromSeries({ + seriesIndex: finder.seriesIndex, + // Do not use dataIndexInside from other ec instance. + // FIXME: auto detect it? + dataIndex: finder.dataIndex + }, ecModel).point; + } + var isIllegalPoint = illegalPoint(point); + // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}). + // Notice: In this case, it is difficult to get the `point` (which is necessary to show + // tooltip, so if point is not given, we just use the point found by sample seriesIndex + // and dataIndex. + var inputAxesInfo = finder.axesInfo; + var axesInfo = coordSysAxesInfo.axesInfo; + var shouldHide = currTrigger === 'leave' || illegalPoint(point); + var outputPayload = {}; + var showValueMap = {}; + var dataByCoordSys = { + list: [], + map: {} + }; + var updaters = { + showPointer: curry(showPointer, showValueMap), + showTooltip: curry(showTooltip, dataByCoordSys) + }; + // Process for triggered axes. + each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) { + // If a point given, it must be contained by the coordinate system. + var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point); + each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) { + var axis = axisInfo.axis; + var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); + // If no inputAxesInfo, no axis is restricted. + if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) { + var val = inputAxisInfo && inputAxisInfo.value; + if (val == null && !isIllegalPoint) { + val = axis.pointToData(point); + } + val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload); + } + }); + }); + // Process for linked axes. + var linkTriggers = {}; + each(axesInfo, function (tarAxisInfo, tarKey) { + var linkGroup = tarAxisInfo.linkGroup; + // If axis has been triggered in the previous stage, it should not be triggered by link. + if (linkGroup && !showValueMap[tarKey]) { + each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) { + var srcValItem = showValueMap[srcKey]; + // If srcValItem exist, source axis is triggered, so link to target axis. + if (srcAxisInfo !== tarAxisInfo && srcValItem) { + var val = srcValItem.value; + linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo)))); + linkTriggers[tarAxisInfo.key] = val; + } + }); + } + }); + each(linkTriggers, function (val, tarKey) { + processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload); + }); + updateModelActually(showValueMap, axesInfo, outputPayload); + dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction); + dispatchHighDownActually(axesInfo, dispatchAction, api); + return outputPayload; + } + function processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) { + var axis = axisInfo.axis; + if (axis.scale.isBlank() || !axis.containData(newValue)) { + return; + } + if (!axisInfo.involveSeries) { + updaters.showPointer(axisInfo, newValue); + return; + } + // Heavy calculation. So put it after axis.containData checking. + var payloadInfo = buildPayloadsBySeries(newValue, axisInfo); + var payloadBatch = payloadInfo.payloadBatch; + var snapToValue = payloadInfo.snapToValue; + // Fill content of event obj for echarts.connect. + // By default use the first involved series data as a sample to connect. + if (payloadBatch[0] && outputFinder.seriesIndex == null) { + extend(outputFinder, payloadBatch[0]); + } + // If no linkSource input, this process is for collecting link + // target, where snap should not be accepted. + if (!noSnap && axisInfo.snap) { + if (axis.containData(snapToValue) && snapToValue != null) { + newValue = snapToValue; + } + } + updaters.showPointer(axisInfo, newValue, payloadBatch); + // Tooltip should always be snapToValue, otherwise there will be + // incorrect "axis value ~ series value" mapping displayed in tooltip. + updaters.showTooltip(axisInfo, payloadInfo, snapToValue); + } + function buildPayloadsBySeries(value, axisInfo) { + var axis = axisInfo.axis; + var dim = axis.dim; + var snapToValue = value; + var payloadBatch = []; + var minDist = Number.MAX_VALUE; + var minDiff = -1; + each(axisInfo.seriesModels, function (series, idx) { + var dataDim = series.getData().mapDimensionsAll(dim); + var seriesNestestValue; + var dataIndices; + if (series.getAxisTooltipData) { + var result = series.getAxisTooltipData(dataDim, value, axis); + dataIndices = result.dataIndices; + seriesNestestValue = result.nestestValue; + } else { + dataIndices = series.getData().indicesOfNearest(dataDim[0], value, + // Add a threshold to avoid find the wrong dataIndex + // when data length is not same. + // false, + axis.type === 'category' ? 0.5 : null); + if (!dataIndices.length) { + return; + } + seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]); + } + if (seriesNestestValue == null || !isFinite(seriesNestestValue)) { + return; + } + var diff = value - seriesNestestValue; + var dist = Math.abs(diff); + // Consider category case + if (dist <= minDist) { + if (dist < minDist || diff >= 0 && minDiff < 0) { + minDist = dist; + minDiff = diff; + snapToValue = seriesNestestValue; + payloadBatch.length = 0; + } + each(dataIndices, function (dataIndex) { + payloadBatch.push({ + seriesIndex: series.seriesIndex, + dataIndexInside: dataIndex, + dataIndex: series.getData().getRawIndex(dataIndex) + }); + }); + } + }); + return { + payloadBatch: payloadBatch, + snapToValue: snapToValue + }; + } + function showPointer(showValueMap, axisInfo, value, payloadBatch) { + showValueMap[axisInfo.key] = { + value: value, + payloadBatch: payloadBatch + }; + } + function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) { + var payloadBatch = payloadInfo.payloadBatch; + var axis = axisInfo.axis; + var axisModel = axis.model; + var axisPointerModel = axisInfo.axisPointerModel; + // If no data, do not create anything in dataByCoordSys, + // whose length will be used to judge whether dispatch action. + if (!axisInfo.triggerTooltip || !payloadBatch.length) { + return; + } + var coordSysModel = axisInfo.coordSys.model; + var coordSysKey = makeKey(coordSysModel); + var coordSysItem = dataByCoordSys.map[coordSysKey]; + if (!coordSysItem) { + coordSysItem = dataByCoordSys.map[coordSysKey] = { + coordSysId: coordSysModel.id, + coordSysIndex: coordSysModel.componentIndex, + coordSysType: coordSysModel.type, + coordSysMainType: coordSysModel.mainType, + dataByAxis: [] + }; + dataByCoordSys.list.push(coordSysItem); + } + coordSysItem.dataByAxis.push({ + axisDim: axis.dim, + axisIndex: axisModel.componentIndex, + axisType: axisModel.type, + axisId: axisModel.id, + value: value, + // Caustion: viewHelper.getValueLabel is actually on "view stage", which + // depends that all models have been updated. So it should not be performed + // here. Considering axisPointerModel used here is volatile, which is hard + // to be retrieve in TooltipView, we prepare parameters here. + valueLabelOpt: { + precision: axisPointerModel.get(['label', 'precision']), + formatter: axisPointerModel.get(['label', 'formatter']) + }, + seriesDataIndices: payloadBatch.slice() + }); + } + function updateModelActually(showValueMap, axesInfo, outputPayload) { + var outputAxesInfo = outputPayload.axesInfo = []; + // Basic logic: If no 'show' required, 'hide' this axisPointer. + each(axesInfo, function (axisInfo, key) { + var option = axisInfo.axisPointerModel.option; + var valItem = showValueMap[key]; + if (valItem) { + !axisInfo.useHandle && (option.status = 'show'); + option.value = valItem.value; + // For label formatter param and highlight. + option.seriesDataIndices = (valItem.payloadBatch || []).slice(); + } + // When always show (e.g., handle used), remain + // original value and status. + else { + // If hide, value still need to be set, consider + // click legend to toggle axis blank. + !axisInfo.useHandle && (option.status = 'hide'); + } + // If status is 'hide', should be no info in payload. + option.status === 'show' && outputAxesInfo.push({ + axisDim: axisInfo.axis.dim, + axisIndex: axisInfo.axis.model.componentIndex, + value: option.value + }); + }); + } + function dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) { + // Basic logic: If no showTip required, hideTip will be dispatched. + if (illegalPoint(point) || !dataByCoordSys.list.length) { + dispatchAction({ + type: 'hideTip' + }); + return; + } + // In most case only one axis (or event one series is used). It is + // convenient to fetch payload.seriesIndex and payload.dataIndex + // directly. So put the first seriesIndex and dataIndex of the first + // axis on the payload. + var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}; + dispatchAction({ + type: 'showTip', + escapeConnect: true, + x: point[0], + y: point[1], + tooltipOption: payload.tooltipOption, + position: payload.position, + dataIndexInside: sampleItem.dataIndexInside, + dataIndex: sampleItem.dataIndex, + seriesIndex: sampleItem.seriesIndex, + dataByCoordSys: dataByCoordSys.list + }); + } + function dispatchHighDownActually(axesInfo, dispatchAction, api) { + // FIXME + // highlight status modification should be a stage of main process? + // (Consider confilct (e.g., legend and axisPointer) and setOption) + var zr = api.getZr(); + var highDownKey = 'axisPointerLastHighlights'; + var lastHighlights = inner$c(zr)[highDownKey] || {}; + var newHighlights = inner$c(zr)[highDownKey] = {}; + // Update highlight/downplay status according to axisPointer model. + // Build hash map and remove duplicate incidentally. + each(axesInfo, function (axisInfo, key) { + var option = axisInfo.axisPointerModel.option; + option.status === 'show' && axisInfo.triggerEmphasis && each(option.seriesDataIndices, function (batchItem) { + var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex; + newHighlights[key] = batchItem; + }); + }); + // Diff. + var toHighlight = []; + var toDownplay = []; + each(lastHighlights, function (batchItem, key) { + !newHighlights[key] && toDownplay.push(batchItem); + }); + each(newHighlights, function (batchItem, key) { + !lastHighlights[key] && toHighlight.push(batchItem); + }); + toDownplay.length && api.dispatchAction({ + type: 'downplay', + escapeConnect: true, + // Not blur others when highlight in axisPointer. + notBlur: true, + batch: toDownplay + }); + toHighlight.length && api.dispatchAction({ + type: 'highlight', + escapeConnect: true, + // Not blur others when highlight in axisPointer. + notBlur: true, + batch: toHighlight + }); + } + function findInputAxisInfo(inputAxesInfo, axisInfo) { + for (var i = 0; i < (inputAxesInfo || []).length; i++) { + var inputAxisInfo = inputAxesInfo[i]; + if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) { + return inputAxisInfo; + } + } + } + function makeMapperParam(axisInfo) { + var axisModel = axisInfo.axis.model; + var item = {}; + var dim = item.axisDim = axisInfo.axis.dim; + item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex; + item.axisName = item[dim + 'AxisName'] = axisModel.name; + item.axisId = item[dim + 'AxisId'] = axisModel.id; + return item; + } + function illegalPoint(point) { + return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]); + } + + function install$s(registers) { + // CartesianAxisPointer is not supposed to be required here. But consider + // echarts.simple.js and online build tooltip, which only require gridSimple, + // CartesianAxisPointer should be able to required somewhere. + AxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer); + registers.registerComponentModel(AxisPointerModel); + registers.registerComponentView(AxisPointerView); + registers.registerPreprocessor(function (option) { + // Always has a global axisPointerModel for default setting. + if (option) { + (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {}); + var link = option.axisPointer.link; + // Normalize to array to avoid object mergin. But if link + // is not set, remain null/undefined, otherwise it will + // override existent link setting. + if (link && !isArray(link)) { + option.axisPointer.link = [link]; + } + } + }); + // This process should proformed after coordinate systems created + // and series data processed. So put it on statistic processing stage. + registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) { + // Build axisPointerModel, mergin tooltip.axisPointer model for each axis. + // allAxesInfo should be updated when setOption performed. + ecModel.getComponent('axisPointer').coordSysAxesInfo = collect(ecModel, api); + }); + // Broadcast to all views. + registers.registerAction({ + type: 'updateAxisPointer', + event: 'updateAxisPointer', + update: ':updateAxisPointer' + }, axisTrigger); + } + + function install$t(registers) { + use(install$5); + use(install$s); + } + + var PolarAxisPointer = /** @class */function (_super) { + __extends(PolarAxisPointer, _super); + function PolarAxisPointer() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @override + */ + PolarAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) { + var axis = axisModel.axis; + if (axis.dim === 'angle') { + this.animationThreshold = Math.PI / 18; + } + var polar = axis.polar; + var otherAxis = polar.getOtherAxis(axis); + var otherExtent = otherAxis.getExtent(); + var coordValue = axis.dataToCoord(value); + var axisPointerType = axisPointerModel.get('type'); + if (axisPointerType && axisPointerType !== 'none') { + var elStyle = buildElStyle(axisPointerModel); + var pointerOption = pointerShapeBuilder$1[axisPointerType](axis, polar, coordValue, otherExtent); + pointerOption.style = elStyle; + elOption.graphicKey = pointerOption.type; + elOption.pointer = pointerOption; + } + var labelMargin = axisPointerModel.get(['label', 'margin']); + var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin); + buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos); + }; + return PolarAxisPointer; + }(BaseAxisPointer); + function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) { + var axis = axisModel.axis; + var coord = axis.dataToCoord(value); + var axisAngle = polar.getAngleAxis().getExtent()[0]; + axisAngle = axisAngle / 180 * Math.PI; + var radiusExtent = polar.getRadiusAxis().getExtent(); + var position; + var align; + var verticalAlign; + if (axis.dim === 'radius') { + var transform = create$1(); + rotate(transform, transform, axisAngle); + translate(transform, transform, [polar.cx, polar.cy]); + position = applyTransform$1([coord, -labelMargin], transform); + var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0; + // @ts-ignore + var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1); + align = labelLayout.textAlign; + verticalAlign = labelLayout.textVerticalAlign; + } else { + // angle axis + var r = radiusExtent[1]; + position = polar.coordToPoint([r + labelMargin, coord]); + var cx = polar.cx; + var cy = polar.cy; + align = Math.abs(position[0] - cx) / r < 0.3 ? 'center' : position[0] > cx ? 'left' : 'right'; + verticalAlign = Math.abs(position[1] - cy) / r < 0.3 ? 'middle' : position[1] > cy ? 'top' : 'bottom'; + } + return { + position: position, + align: align, + verticalAlign: verticalAlign + }; + } + var pointerShapeBuilder$1 = { + line: function (axis, polar, coordValue, otherExtent) { + return axis.dim === 'angle' ? { + type: 'Line', + shape: makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue])) + } : { + type: 'Circle', + shape: { + cx: polar.cx, + cy: polar.cy, + r: coordValue + } + }; + }, + shadow: function (axis, polar, coordValue, otherExtent) { + var bandWidth = Math.max(1, axis.getBandWidth()); + var radian = Math.PI / 180; + return axis.dim === 'angle' ? { + type: 'Sector', + shape: makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], + // In ECharts y is negative if angle is positive + (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian) + } : { + type: 'Sector', + shape: makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2) + }; + } + }; + + var PolarModel = /** @class */function (_super) { + __extends(PolarModel, _super); + function PolarModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = PolarModel.type; + return _this; + } + PolarModel.prototype.findAxisModel = function (axisType) { + var foundAxisModel; + var ecModel = this.ecModel; + ecModel.eachComponent(axisType, function (axisModel) { + if (axisModel.getCoordSysModel() === this) { + foundAxisModel = axisModel; + } + }, this); + return foundAxisModel; + }; + PolarModel.type = 'polar'; + PolarModel.dependencies = ['radiusAxis', 'angleAxis']; + PolarModel.defaultOption = { + // zlevel: 0, + z: 0, + center: ['50%', '50%'], + radius: '80%' + }; + return PolarModel; + }(ComponentModel); + + var PolarAxisModel = /** @class */function (_super) { + __extends(PolarAxisModel, _super); + function PolarAxisModel() { + return _super !== null && _super.apply(this, arguments) || this; + } + PolarAxisModel.prototype.getCoordSysModel = function () { + return this.getReferringComponents('polar', SINGLE_REFERRING).models[0]; + }; + PolarAxisModel.type = 'polarAxis'; + return PolarAxisModel; + }(ComponentModel); + mixin(PolarAxisModel, AxisModelCommonMixin); + var AngleAxisModel = /** @class */function (_super) { + __extends(AngleAxisModel, _super); + function AngleAxisModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = AngleAxisModel.type; + return _this; + } + AngleAxisModel.type = 'angleAxis'; + return AngleAxisModel; + }(PolarAxisModel); + var RadiusAxisModel = /** @class */function (_super) { + __extends(RadiusAxisModel, _super); + function RadiusAxisModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = RadiusAxisModel.type; + return _this; + } + RadiusAxisModel.type = 'radiusAxis'; + return RadiusAxisModel; + }(PolarAxisModel); + + var RadiusAxis = /** @class */function (_super) { + __extends(RadiusAxis, _super); + function RadiusAxis(scale, radiusExtent) { + return _super.call(this, 'radius', scale, radiusExtent) || this; + } + RadiusAxis.prototype.pointToData = function (point, clamp) { + return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1]; + }; + return RadiusAxis; + }(Axis); + RadiusAxis.prototype.dataToRadius = Axis.prototype.dataToCoord; + RadiusAxis.prototype.radiusToData = Axis.prototype.coordToData; + + var inner$d = makeInner(); + var AngleAxis = /** @class */function (_super) { + __extends(AngleAxis, _super); + function AngleAxis(scale, angleExtent) { + return _super.call(this, 'angle', scale, angleExtent || [0, 360]) || this; + } + AngleAxis.prototype.pointToData = function (point, clamp) { + return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1]; + }; + /** + * Only be called in category axis. + * Angle axis uses text height to decide interval + * + * @override + * @return {number} Auto interval for cateogry axis tick and label + */ + AngleAxis.prototype.calculateCategoryInterval = function () { + var axis = this; + var labelModel = axis.getLabelModel(); + var ordinalScale = axis.scale; + var ordinalExtent = ordinalScale.getExtent(); + // Providing this method is for optimization: + // avoid generating a long array by `getTicks` + // in large category data case. + var tickCount = ordinalScale.count(); + if (ordinalExtent[1] - ordinalExtent[0] < 1) { + return 0; + } + var tickValue = ordinalExtent[0]; + var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue); + var unitH = Math.abs(unitSpan); + // Not precise, just use height as text width + // and each distance from axis line yet. + var rect = getBoundingRect(tickValue == null ? '' : tickValue + '', labelModel.getFont(), 'center', 'top'); + var maxH = Math.max(rect.height, 7); + var dh = maxH / unitH; + // 0/0 is NaN, 1/0 is Infinity. + isNaN(dh) && (dh = Infinity); + var interval = Math.max(0, Math.floor(dh)); + var cache = inner$d(axis.model); + var lastAutoInterval = cache.lastAutoInterval; + var lastTickCount = cache.lastTickCount; + // Use cache to keep interval stable while moving zoom window, + // otherwise the calculated interval might jitter when the zoom + // window size is close to the interval-changing size. + if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 + // Always choose the bigger one, otherwise the critical + // point is not the same when zooming in or zooming out. + && lastAutoInterval > interval) { + interval = lastAutoInterval; + } + // Only update cache if cache not used, otherwise the + // changing of interval is too insensitive. + else { + cache.lastTickCount = tickCount; + cache.lastAutoInterval = interval; + } + return interval; + }; + return AngleAxis; + }(Axis); + AngleAxis.prototype.dataToAngle = Axis.prototype.dataToCoord; + AngleAxis.prototype.angleToData = Axis.prototype.coordToData; + + var polarDimensions = ['radius', 'angle']; + var Polar = /** @class */function () { + function Polar(name) { + this.dimensions = polarDimensions; + this.type = 'polar'; + /** + * x of polar center + */ + this.cx = 0; + /** + * y of polar center + */ + this.cy = 0; + this._radiusAxis = new RadiusAxis(); + this._angleAxis = new AngleAxis(); + this.axisPointerEnabled = true; + this.name = name || ''; + this._radiusAxis.polar = this._angleAxis.polar = this; + } + /** + * If contain coord + */ + Polar.prototype.containPoint = function (point) { + var coord = this.pointToCoord(point); + return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]); + }; + /** + * If contain data + */ + Polar.prototype.containData = function (data) { + return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]); + }; + Polar.prototype.getAxis = function (dim) { + var key = '_' + dim + 'Axis'; + return this[key]; + }; + Polar.prototype.getAxes = function () { + return [this._radiusAxis, this._angleAxis]; + }; + /** + * Get axes by type of scale + */ + Polar.prototype.getAxesByScale = function (scaleType) { + var axes = []; + var angleAxis = this._angleAxis; + var radiusAxis = this._radiusAxis; + angleAxis.scale.type === scaleType && axes.push(angleAxis); + radiusAxis.scale.type === scaleType && axes.push(radiusAxis); + return axes; + }; + Polar.prototype.getAngleAxis = function () { + return this._angleAxis; + }; + Polar.prototype.getRadiusAxis = function () { + return this._radiusAxis; + }; + Polar.prototype.getOtherAxis = function (axis) { + var angleAxis = this._angleAxis; + return axis === angleAxis ? this._radiusAxis : angleAxis; + }; + /** + * Base axis will be used on stacking. + * + */ + Polar.prototype.getBaseAxis = function () { + return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAngleAxis(); + }; + Polar.prototype.getTooltipAxes = function (dim) { + var baseAxis = dim != null && dim !== 'auto' ? this.getAxis(dim) : this.getBaseAxis(); + return { + baseAxes: [baseAxis], + otherAxes: [this.getOtherAxis(baseAxis)] + }; + }; + /** + * Convert a single data item to (x, y) point. + * Parameter data is an array which the first element is radius and the second is angle + */ + Polar.prototype.dataToPoint = function (data, clamp) { + return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp), this._angleAxis.dataToAngle(data[1], clamp)]); + }; + /** + * Convert a (x, y) point to data + */ + Polar.prototype.pointToData = function (point, clamp) { + var coord = this.pointToCoord(point); + return [this._radiusAxis.radiusToData(coord[0], clamp), this._angleAxis.angleToData(coord[1], clamp)]; + }; + /** + * Convert a (x, y) point to (radius, angle) coord + */ + Polar.prototype.pointToCoord = function (point) { + var dx = point[0] - this.cx; + var dy = point[1] - this.cy; + var angleAxis = this.getAngleAxis(); + var extent = angleAxis.getExtent(); + var minAngle = Math.min(extent[0], extent[1]); + var maxAngle = Math.max(extent[0], extent[1]); + // Fix fixed extent in polarCreator + // FIXME + angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360; + var radius = Math.sqrt(dx * dx + dy * dy); + dx /= radius; + dy /= radius; + var radian = Math.atan2(-dy, dx) / Math.PI * 180; + // move to angleExtent + var dir = radian < minAngle ? 1 : -1; + while (radian < minAngle || radian > maxAngle) { + radian += dir * 360; + } + return [radius, radian]; + }; + /** + * Convert a (radius, angle) coord to (x, y) point + */ + Polar.prototype.coordToPoint = function (coord) { + var radius = coord[0]; + var radian = coord[1] / 180 * Math.PI; + var x = Math.cos(radian) * radius + this.cx; + // Inverse the y + var y = -Math.sin(radian) * radius + this.cy; + return [x, y]; + }; + /** + * Get ring area of cartesian. + * Area will have a contain function to determine if a point is in the coordinate system. + */ + Polar.prototype.getArea = function () { + var angleAxis = this.getAngleAxis(); + var radiusAxis = this.getRadiusAxis(); + var radiusExtent = radiusAxis.getExtent().slice(); + radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse(); + var angleExtent = angleAxis.getExtent(); + var RADIAN = Math.PI / 180; + return { + cx: this.cx, + cy: this.cy, + r0: radiusExtent[0], + r: radiusExtent[1], + startAngle: -angleExtent[0] * RADIAN, + endAngle: -angleExtent[1] * RADIAN, + clockwise: angleAxis.inverse, + contain: function (x, y) { + // It's a ring shape. + // Start angle and end angle don't matter + var dx = x - this.cx; + var dy = y - this.cy; + // minus a tiny value 1e-4 to avoid being clipped unexpectedly + var d2 = dx * dx + dy * dy - 1e-4; + var r = this.r; + var r0 = this.r0; + return d2 <= r * r && d2 >= r0 * r0; + } + }; + }; + Polar.prototype.convertToPixel = function (ecModel, finder, value) { + var coordSys = getCoordSys$2(finder); + return coordSys === this ? this.dataToPoint(value) : null; + }; + Polar.prototype.convertFromPixel = function (ecModel, finder, pixel) { + var coordSys = getCoordSys$2(finder); + return coordSys === this ? this.pointToData(pixel) : null; + }; + return Polar; + }(); + function getCoordSys$2(finder) { + var seriesModel = finder.seriesModel; + var polarModel = finder.polarModel; + return polarModel && polarModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; + } + + /** + * Resize method bound to the polar + */ + function resizePolar(polar, polarModel, api) { + var center = polarModel.get('center'); + var width = api.getWidth(); + var height = api.getHeight(); + polar.cx = parsePercent$1(center[0], width); + polar.cy = parsePercent$1(center[1], height); + var radiusAxis = polar.getRadiusAxis(); + var size = Math.min(width, height) / 2; + var radius = polarModel.get('radius'); + if (radius == null) { + radius = [0, '100%']; + } else if (!isArray(radius)) { + // r0 = 0 + radius = [0, radius]; + } + var parsedRadius = [parsePercent$1(radius[0], size), parsePercent$1(radius[1], size)]; + radiusAxis.inverse ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0]) : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]); + } + /** + * Update polar + */ + function updatePolarScale(ecModel, api) { + var polar = this; + var angleAxis = polar.getAngleAxis(); + var radiusAxis = polar.getRadiusAxis(); + // Reset scale + angleAxis.scale.setExtent(Infinity, -Infinity); + radiusAxis.scale.setExtent(Infinity, -Infinity); + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.coordinateSystem === polar) { + var data_1 = seriesModel.getData(); + each(getDataDimensionsOnAxis(data_1, 'radius'), function (dim) { + radiusAxis.scale.unionExtentFromData(data_1, dim); + }); + each(getDataDimensionsOnAxis(data_1, 'angle'), function (dim) { + angleAxis.scale.unionExtentFromData(data_1, dim); + }); + } + }); + niceScaleExtent(angleAxis.scale, angleAxis.model); + niceScaleExtent(radiusAxis.scale, radiusAxis.model); + // Fix extent of category angle axis + if (angleAxis.type === 'category' && !angleAxis.onBand) { + var extent = angleAxis.getExtent(); + var diff = 360 / angleAxis.scale.count(); + angleAxis.inverse ? extent[1] += diff : extent[1] -= diff; + angleAxis.setExtent(extent[0], extent[1]); + } + } + function isAngleAxisModel(axisModel) { + return axisModel.mainType === 'angleAxis'; + } + /** + * Set common axis properties + */ + function setAxis(axis, axisModel) { + var _a; + axis.type = axisModel.get('type'); + axis.scale = createScaleByModel(axisModel); + axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category'; + axis.inverse = axisModel.get('inverse'); + if (isAngleAxisModel(axisModel)) { + axis.inverse = axis.inverse !== axisModel.get('clockwise'); + var startAngle = axisModel.get('startAngle'); + var endAngle = (_a = axisModel.get('endAngle')) !== null && _a !== void 0 ? _a : startAngle + (axis.inverse ? -360 : 360); + axis.setExtent(startAngle, endAngle); + } + // Inject axis instance + axisModel.axis = axis; + axis.model = axisModel; + } + var polarCreator = { + dimensions: polarDimensions, + create: function (ecModel, api) { + var polarList = []; + ecModel.eachComponent('polar', function (polarModel, idx) { + var polar = new Polar(idx + ''); + // Inject resize and update method + polar.update = updatePolarScale; + var radiusAxis = polar.getRadiusAxis(); + var angleAxis = polar.getAngleAxis(); + var radiusAxisModel = polarModel.findAxisModel('radiusAxis'); + var angleAxisModel = polarModel.findAxisModel('angleAxis'); + setAxis(radiusAxis, radiusAxisModel); + setAxis(angleAxis, angleAxisModel); + resizePolar(polar, polarModel, api); + polarList.push(polar); + polarModel.coordinateSystem = polar; + polar.model = polarModel; + }); + // Inject coordinateSystem to series + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.get('coordinateSystem') === 'polar') { + var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0]; + if ("development" !== 'production') { + if (!polarModel) { + throw new Error('Polar "' + retrieve(seriesModel.get('polarIndex'), seriesModel.get('polarId'), 0) + '" not found'); + } + } + seriesModel.coordinateSystem = polarModel.coordinateSystem; + } + }); + return polarList; + } + }; + + var elementList$1 = ['axisLine', 'axisLabel', 'axisTick', 'minorTick', 'splitLine', 'minorSplitLine', 'splitArea']; + function getAxisLineShape(polar, rExtent, angle) { + rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse()); + var start = polar.coordToPoint([rExtent[0], angle]); + var end = polar.coordToPoint([rExtent[1], angle]); + return { + x1: start[0], + y1: start[1], + x2: end[0], + y2: end[1] + }; + } + function getRadiusIdx(polar) { + var radiusAxis = polar.getRadiusAxis(); + return radiusAxis.inverse ? 0 : 1; + } + // Remove the last tick which will overlap the first tick + function fixAngleOverlap(list) { + var firstItem = list[0]; + var lastItem = list[list.length - 1]; + if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) { + list.pop(); + } + } + var AngleAxisView = /** @class */function (_super) { + __extends(AngleAxisView, _super); + function AngleAxisView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = AngleAxisView.type; + _this.axisPointerClass = 'PolarAxisPointer'; + return _this; + } + AngleAxisView.prototype.render = function (angleAxisModel, ecModel) { + this.group.removeAll(); + if (!angleAxisModel.get('show')) { + return; + } + var angleAxis = angleAxisModel.axis; + var polar = angleAxis.polar; + var radiusExtent = polar.getRadiusAxis().getExtent(); + var ticksAngles = angleAxis.getTicksCoords(); + var minorTickAngles = angleAxis.getMinorTicksCoords(); + var labels = map(angleAxis.getViewLabels(), function (labelItem) { + labelItem = clone(labelItem); + var scale = angleAxis.scale; + var tickValue = scale.type === 'ordinal' ? scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue; + labelItem.coord = angleAxis.dataToCoord(tickValue); + return labelItem; + }); + fixAngleOverlap(labels); + fixAngleOverlap(ticksAngles); + each(elementList$1, function (name) { + if (angleAxisModel.get([name, 'show']) && (!angleAxis.scale.isBlank() || name === 'axisLine')) { + angelAxisElementsBuilders[name](this.group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels); + } + }, this); + }; + AngleAxisView.type = 'angleAxis'; + return AngleAxisView; + }(AxisView); + var angelAxisElementsBuilders = { + axisLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { + var lineStyleModel = angleAxisModel.getModel(['axisLine', 'lineStyle']); + var angleAxis = polar.getAngleAxis(); + var RADIAN = Math.PI / 180; + var angleExtent = angleAxis.getExtent(); + // extent id of the axis radius (r0 and r) + var rId = getRadiusIdx(polar); + var r0Id = rId ? 0 : 1; + var shape; + var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? 'Circle' : 'Arc'; + if (radiusExtent[r0Id] === 0) { + shape = new graphic[shapeType]({ + shape: { + cx: polar.cx, + cy: polar.cy, + r: radiusExtent[rId], + startAngle: -angleExtent[0] * RADIAN, + endAngle: -angleExtent[1] * RADIAN, + clockwise: angleAxis.inverse + }, + style: lineStyleModel.getLineStyle(), + z2: 1, + silent: true + }); + } else { + shape = new Ring({ + shape: { + cx: polar.cx, + cy: polar.cy, + r: radiusExtent[rId], + r0: radiusExtent[r0Id] + }, + style: lineStyleModel.getLineStyle(), + z2: 1, + silent: true + }); + } + shape.style.fill = null; + group.add(shape); + }, + axisTick: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { + var tickModel = angleAxisModel.getModel('axisTick'); + var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length'); + var radius = radiusExtent[getRadiusIdx(polar)]; + var lines = map(ticksAngles, function (tickAngleItem) { + return new Line({ + shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord) + }); + }); + group.add(mergePath$1(lines, { + style: defaults(tickModel.getModel('lineStyle').getLineStyle(), { + stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color']) + }) + })); + }, + minorTick: function (group, angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) { + if (!minorTickAngles.length) { + return; + } + var tickModel = angleAxisModel.getModel('axisTick'); + var minorTickModel = angleAxisModel.getModel('minorTick'); + var tickLen = (tickModel.get('inside') ? -1 : 1) * minorTickModel.get('length'); + var radius = radiusExtent[getRadiusIdx(polar)]; + var lines = []; + for (var i = 0; i < minorTickAngles.length; i++) { + for (var k = 0; k < minorTickAngles[i].length; k++) { + lines.push(new Line({ + shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord) + })); + } + } + group.add(mergePath$1(lines, { + style: defaults(minorTickModel.getModel('lineStyle').getLineStyle(), defaults(tickModel.getLineStyle(), { + stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color']) + })) + })); + }, + axisLabel: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) { + var rawCategoryData = angleAxisModel.getCategories(true); + var commonLabelModel = angleAxisModel.getModel('axisLabel'); + var labelMargin = commonLabelModel.get('margin'); + var triggerEvent = angleAxisModel.get('triggerEvent'); + // Use length of ticksAngles because it may remove the last tick to avoid overlapping + each(labels, function (labelItem, idx) { + var labelModel = commonLabelModel; + var tickValue = labelItem.tickValue; + var r = radiusExtent[getRadiusIdx(polar)]; + var p = polar.coordToPoint([r + labelMargin, labelItem.coord]); + var cx = polar.cx; + var cy = polar.cy; + var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? 'center' : p[0] > cx ? 'left' : 'right'; + var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? 'middle' : p[1] > cy ? 'top' : 'bottom'; + if (rawCategoryData && rawCategoryData[tickValue]) { + var rawCategoryItem = rawCategoryData[tickValue]; + if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) { + labelModel = new Model(rawCategoryItem.textStyle, commonLabelModel, commonLabelModel.ecModel); + } + } + var textEl = new ZRText({ + silent: AxisBuilder.isLabelSilent(angleAxisModel), + style: createTextStyle(labelModel, { + x: p[0], + y: p[1], + fill: labelModel.getTextColor() || angleAxisModel.get(['axisLine', 'lineStyle', 'color']), + text: labelItem.formattedLabel, + align: labelTextAlign, + verticalAlign: labelTextVerticalAlign + }) + }); + group.add(textEl); + // Pack data for mouse event + if (triggerEvent) { + var eventData = AxisBuilder.makeAxisEventDataBase(angleAxisModel); + eventData.targetType = 'axisLabel'; + eventData.value = labelItem.rawLabel; + getECData(textEl).eventData = eventData; + } + }, this); + }, + splitLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { + var splitLineModel = angleAxisModel.getModel('splitLine'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var lineColors = lineStyleModel.get('color'); + var lineCount = 0; + lineColors = lineColors instanceof Array ? lineColors : [lineColors]; + var splitLines = []; + for (var i = 0; i < ticksAngles.length; i++) { + var colorIndex = lineCount++ % lineColors.length; + splitLines[colorIndex] = splitLines[colorIndex] || []; + splitLines[colorIndex].push(new Line({ + shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord) + })); + } + // Simple optimization + // Batching the lines if color are the same + for (var i = 0; i < splitLines.length; i++) { + group.add(mergePath$1(splitLines[i], { + style: defaults({ + stroke: lineColors[i % lineColors.length] + }, lineStyleModel.getLineStyle()), + silent: true, + z: angleAxisModel.get('z') + })); + } + }, + minorSplitLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { + if (!minorTickAngles.length) { + return; + } + var minorSplitLineModel = angleAxisModel.getModel('minorSplitLine'); + var lineStyleModel = minorSplitLineModel.getModel('lineStyle'); + var lines = []; + for (var i = 0; i < minorTickAngles.length; i++) { + for (var k = 0; k < minorTickAngles[i].length; k++) { + lines.push(new Line({ + shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord) + })); + } + } + group.add(mergePath$1(lines, { + style: lineStyleModel.getLineStyle(), + silent: true, + z: angleAxisModel.get('z') + })); + }, + splitArea: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) { + if (!ticksAngles.length) { + return; + } + var splitAreaModel = angleAxisModel.getModel('splitArea'); + var areaStyleModel = splitAreaModel.getModel('areaStyle'); + var areaColors = areaStyleModel.get('color'); + var lineCount = 0; + areaColors = areaColors instanceof Array ? areaColors : [areaColors]; + var splitAreas = []; + var RADIAN = Math.PI / 180; + var prevAngle = -ticksAngles[0].coord * RADIAN; + var r0 = Math.min(radiusExtent[0], radiusExtent[1]); + var r1 = Math.max(radiusExtent[0], radiusExtent[1]); + var clockwise = angleAxisModel.get('clockwise'); + for (var i = 1, len = ticksAngles.length; i <= len; i++) { + var coord = i === len ? ticksAngles[0].coord : ticksAngles[i].coord; + var colorIndex = lineCount++ % areaColors.length; + splitAreas[colorIndex] = splitAreas[colorIndex] || []; + splitAreas[colorIndex].push(new Sector({ + shape: { + cx: polar.cx, + cy: polar.cy, + r0: r0, + r: r1, + startAngle: prevAngle, + endAngle: -coord * RADIAN, + clockwise: clockwise + }, + silent: true + })); + prevAngle = -coord * RADIAN; + } + // Simple optimization + // Batching the lines if color are the same + for (var i = 0; i < splitAreas.length; i++) { + group.add(mergePath$1(splitAreas[i], { + style: defaults({ + fill: areaColors[i % areaColors.length] + }, areaStyleModel.getAreaStyle()), + silent: true + })); + } + } + }; + + var axisBuilderAttrs$2 = ['axisLine', 'axisTickLabel', 'axisName']; + var selfBuilderAttrs$1 = ['splitLine', 'splitArea', 'minorSplitLine']; + var RadiusAxisView = /** @class */function (_super) { + __extends(RadiusAxisView, _super); + function RadiusAxisView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = RadiusAxisView.type; + _this.axisPointerClass = 'PolarAxisPointer'; + return _this; + } + RadiusAxisView.prototype.render = function (radiusAxisModel, ecModel) { + this.group.removeAll(); + if (!radiusAxisModel.get('show')) { + return; + } + var oldAxisGroup = this._axisGroup; + var newAxisGroup = this._axisGroup = new Group(); + this.group.add(newAxisGroup); + var radiusAxis = radiusAxisModel.axis; + var polar = radiusAxis.polar; + var angleAxis = polar.getAngleAxis(); + var ticksCoords = radiusAxis.getTicksCoords(); + var minorTicksCoords = radiusAxis.getMinorTicksCoords(); + var axisAngle = angleAxis.getExtent()[0]; + var radiusExtent = radiusAxis.getExtent(); + var layout = layoutAxis(polar, radiusAxisModel, axisAngle); + var axisBuilder = new AxisBuilder(radiusAxisModel, layout); + each(axisBuilderAttrs$2, axisBuilder.add, axisBuilder); + newAxisGroup.add(axisBuilder.getGroup()); + groupTransition(oldAxisGroup, newAxisGroup, radiusAxisModel); + each(selfBuilderAttrs$1, function (name) { + if (radiusAxisModel.get([name, 'show']) && !radiusAxis.scale.isBlank()) { + axisElementBuilders$1[name](this.group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords); + } + }, this); + }; + RadiusAxisView.type = 'radiusAxis'; + return RadiusAxisView; + }(AxisView); + var axisElementBuilders$1 = { + splitLine: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { + var splitLineModel = radiusAxisModel.getModel('splitLine'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var lineColors = lineStyleModel.get('color'); + var lineCount = 0; + var angleAxis = polar.getAngleAxis(); + var RADIAN = Math.PI / 180; + var angleExtent = angleAxis.getExtent(); + var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? 'Circle' : 'Arc'; + lineColors = lineColors instanceof Array ? lineColors : [lineColors]; + var splitLines = []; + for (var i = 0; i < ticksCoords.length; i++) { + var colorIndex = lineCount++ % lineColors.length; + splitLines[colorIndex] = splitLines[colorIndex] || []; + splitLines[colorIndex].push(new graphic[shapeType]({ + shape: { + cx: polar.cx, + cy: polar.cy, + // ensure circle radius >= 0 + r: Math.max(ticksCoords[i].coord, 0), + startAngle: -angleExtent[0] * RADIAN, + endAngle: -angleExtent[1] * RADIAN, + clockwise: angleAxis.inverse + } + })); + } + // Simple optimization + // Batching the lines if color are the same + for (var i = 0; i < splitLines.length; i++) { + group.add(mergePath$1(splitLines[i], { + style: defaults({ + stroke: lineColors[i % lineColors.length], + fill: null + }, lineStyleModel.getLineStyle()), + silent: true + })); + } + }, + minorSplitLine: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) { + if (!minorTicksCoords.length) { + return; + } + var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine'); + var lineStyleModel = minorSplitLineModel.getModel('lineStyle'); + var lines = []; + for (var i = 0; i < minorTicksCoords.length; i++) { + for (var k = 0; k < minorTicksCoords[i].length; k++) { + lines.push(new Circle({ + shape: { + cx: polar.cx, + cy: polar.cy, + r: minorTicksCoords[i][k].coord + } + })); + } + } + group.add(mergePath$1(lines, { + style: defaults({ + fill: null + }, lineStyleModel.getLineStyle()), + silent: true + })); + }, + splitArea: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { + if (!ticksCoords.length) { + return; + } + var splitAreaModel = radiusAxisModel.getModel('splitArea'); + var areaStyleModel = splitAreaModel.getModel('areaStyle'); + var areaColors = areaStyleModel.get('color'); + var lineCount = 0; + areaColors = areaColors instanceof Array ? areaColors : [areaColors]; + var splitAreas = []; + var prevRadius = ticksCoords[0].coord; + for (var i = 1; i < ticksCoords.length; i++) { + var colorIndex = lineCount++ % areaColors.length; + splitAreas[colorIndex] = splitAreas[colorIndex] || []; + splitAreas[colorIndex].push(new Sector({ + shape: { + cx: polar.cx, + cy: polar.cy, + r0: prevRadius, + r: ticksCoords[i].coord, + startAngle: 0, + endAngle: Math.PI * 2 + }, + silent: true + })); + prevRadius = ticksCoords[i].coord; + } + // Simple optimization + // Batching the lines if color are the same + for (var i = 0; i < splitAreas.length; i++) { + group.add(mergePath$1(splitAreas[i], { + style: defaults({ + fill: areaColors[i % areaColors.length] + }, areaStyleModel.getAreaStyle()), + silent: true + })); + } + } + }; + /** + * @inner + */ + function layoutAxis(polar, radiusAxisModel, axisAngle) { + return { + position: [polar.cx, polar.cy], + rotation: axisAngle / 180 * Math.PI, + labelDirection: -1, + tickDirection: -1, + nameDirection: 1, + labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'), + // Over splitLine and splitArea + z2: 1 + }; + } + + function getSeriesStackId$1(seriesModel) { + return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex; + } + function getAxisKey$1(polar, axis) { + return axis.dim + polar.model.componentIndex; + } + function barLayoutPolar(seriesType, ecModel, api) { + var lastStackCoords = {}; + var barWidthAndOffset = calRadialBar(filter(ecModel.getSeriesByType(seriesType), function (seriesModel) { + return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar'; + })); + ecModel.eachSeriesByType(seriesType, function (seriesModel) { + // Check series coordinate, do layout for polar only + if (seriesModel.coordinateSystem.type !== 'polar') { + return; + } + var data = seriesModel.getData(); + var polar = seriesModel.coordinateSystem; + var baseAxis = polar.getBaseAxis(); + var axisKey = getAxisKey$1(polar, baseAxis); + var stackId = getSeriesStackId$1(seriesModel); + var columnLayoutInfo = barWidthAndOffset[axisKey][stackId]; + var columnOffset = columnLayoutInfo.offset; + var columnWidth = columnLayoutInfo.width; + var valueAxis = polar.getOtherAxis(baseAxis); + var cx = seriesModel.coordinateSystem.cx; + var cy = seriesModel.coordinateSystem.cy; + var barMinHeight = seriesModel.get('barMinHeight') || 0; + var barMinAngle = seriesModel.get('barMinAngle') || 0; + lastStackCoords[stackId] = lastStackCoords[stackId] || []; + var valueDim = data.mapDimension(valueAxis.dim); + var baseDim = data.mapDimension(baseAxis.dim); + var stacked = isDimensionStacked(data, valueDim /* , baseDim */); + var clampLayout = baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true); + var valueAxisStart = valueAxis.dataToCoord(0); + for (var idx = 0, len = data.count(); idx < len; idx++) { + var value = data.get(valueDim, idx); + var baseValue = data.get(baseDim, idx); + var sign = value >= 0 ? 'p' : 'n'; + var baseCoord = valueAxisStart; + // Because of the barMinHeight, we can not use the value in + // stackResultDimension directly. + // Only ordinal axis can be stacked. + if (stacked) { + if (!lastStackCoords[stackId][baseValue]) { + lastStackCoords[stackId][baseValue] = { + p: valueAxisStart, + n: valueAxisStart // Negative stack + }; + } + // Should also consider #4243 + baseCoord = lastStackCoords[stackId][baseValue][sign]; + } + var r0 = void 0; + var r = void 0; + var startAngle = void 0; + var endAngle = void 0; + // radial sector + if (valueAxis.dim === 'radius') { + var radiusSpan = valueAxis.dataToCoord(value) - valueAxisStart; + var angle = baseAxis.dataToCoord(baseValue); + if (Math.abs(radiusSpan) < barMinHeight) { + radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight; + } + r0 = baseCoord; + r = baseCoord + radiusSpan; + startAngle = angle - columnOffset; + endAngle = startAngle - columnWidth; + stacked && (lastStackCoords[stackId][baseValue][sign] = r); + } + // tangential sector + else { + var angleSpan = valueAxis.dataToCoord(value, clampLayout) - valueAxisStart; + var radius = baseAxis.dataToCoord(baseValue); + if (Math.abs(angleSpan) < barMinAngle) { + angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle; + } + r0 = radius + columnOffset; + r = r0 + columnWidth; + startAngle = baseCoord; + endAngle = baseCoord + angleSpan; + // if the previous stack is at the end of the ring, + // add a round to differentiate it from origin + // let extent = angleAxis.getExtent(); + // let stackCoord = angle; + // if (stackCoord === extent[0] && value > 0) { + // stackCoord = extent[1]; + // } + // else if (stackCoord === extent[1] && value < 0) { + // stackCoord = extent[0]; + // } + stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle); + } + data.setItemLayout(idx, { + cx: cx, + cy: cy, + r0: r0, + r: r, + // Consider that positive angle is anti-clockwise, + // while positive radian of sector is clockwise + startAngle: -startAngle * Math.PI / 180, + endAngle: -endAngle * Math.PI / 180, + /** + * Keep the same logic with bar in catesion: use end value to + * control direction. Notice that if clockwise is true (by + * default), the sector will always draw clockwisely, no matter + * whether endAngle is greater or less than startAngle. + */ + clockwise: startAngle >= endAngle + }); + } + }); + } + /** + * Calculate bar width and offset for radial bar charts + */ + function calRadialBar(barSeries) { + // Columns info on each category axis. Key is polar name + var columnsMap = {}; + each(barSeries, function (seriesModel, idx) { + var data = seriesModel.getData(); + var polar = seriesModel.coordinateSystem; + var baseAxis = polar.getBaseAxis(); + var axisKey = getAxisKey$1(polar, baseAxis); + var axisExtent = baseAxis.getExtent(); + var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count(); + var columnsOnAxis = columnsMap[axisKey] || { + bandWidth: bandWidth, + remainedWidth: bandWidth, + autoWidthCount: 0, + categoryGap: '20%', + gap: '30%', + stacks: {} + }; + var stacks = columnsOnAxis.stacks; + columnsMap[axisKey] = columnsOnAxis; + var stackId = getSeriesStackId$1(seriesModel); + if (!stacks[stackId]) { + columnsOnAxis.autoWidthCount++; + } + stacks[stackId] = stacks[stackId] || { + width: 0, + maxWidth: 0 + }; + var barWidth = parsePercent$1(seriesModel.get('barWidth'), bandWidth); + var barMaxWidth = parsePercent$1(seriesModel.get('barMaxWidth'), bandWidth); + var barGap = seriesModel.get('barGap'); + var barCategoryGap = seriesModel.get('barCategoryGap'); + if (barWidth && !stacks[stackId].width) { + barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); + stacks[stackId].width = barWidth; + columnsOnAxis.remainedWidth -= barWidth; + } + barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); + barGap != null && (columnsOnAxis.gap = barGap); + barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap); + }); + var result = {}; + each(columnsMap, function (columnsOnAxis, coordSysName) { + result[coordSysName] = {}; + var stacks = columnsOnAxis.stacks; + var bandWidth = columnsOnAxis.bandWidth; + var categoryGap = parsePercent$1(columnsOnAxis.categoryGap, bandWidth); + var barGapPercent = parsePercent$1(columnsOnAxis.gap, 1); + var remainedWidth = columnsOnAxis.remainedWidth; + var autoWidthCount = columnsOnAxis.autoWidthCount; + var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); + autoWidth = Math.max(autoWidth, 0); + // Find if any auto calculated bar exceeded maxBarWidth + each(stacks, function (column, stack) { + var maxWidth = column.maxWidth; + if (maxWidth && maxWidth < autoWidth) { + maxWidth = Math.min(maxWidth, remainedWidth); + if (column.width) { + maxWidth = Math.min(maxWidth, column.width); + } + remainedWidth -= maxWidth; + column.width = maxWidth; + autoWidthCount--; + } + }); + // Recalculate width again + autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); + autoWidth = Math.max(autoWidth, 0); + var widthSum = 0; + var lastColumn; + each(stacks, function (column, idx) { + if (!column.width) { + column.width = autoWidth; + } + lastColumn = column; + widthSum += column.width * (1 + barGapPercent); + }); + if (lastColumn) { + widthSum -= lastColumn.width * barGapPercent; + } + var offset = -widthSum / 2; + each(stacks, function (column, stackId) { + result[coordSysName][stackId] = result[coordSysName][stackId] || { + offset: offset, + width: column.width + }; + offset += column.width * (1 + barGapPercent); + }); + }); + return result; + } + + var angleAxisExtraOption = { + startAngle: 90, + clockwise: true, + splitNumber: 12, + axisLabel: { + rotate: 0 + } + }; + var radiusAxisExtraOption = { + splitNumber: 5 + }; + var PolarView = /** @class */function (_super) { + __extends(PolarView, _super); + function PolarView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = PolarView.type; + return _this; + } + PolarView.type = 'polar'; + return PolarView; + }(ComponentView); + function install$u(registers) { + use(install$s); + AxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer); + registers.registerCoordinateSystem('polar', polarCreator); + registers.registerComponentModel(PolarModel); + registers.registerComponentView(PolarView); + // Model and view for angleAxis and radiusAxis + axisModelCreator(registers, 'angle', AngleAxisModel, angleAxisExtraOption); + axisModelCreator(registers, 'radius', RadiusAxisModel, radiusAxisExtraOption); + registers.registerComponentView(AngleAxisView); + registers.registerComponentView(RadiusAxisView); + registers.registerLayout(curry(barLayoutPolar, 'bar')); + } + + function layout$2(axisModel, opt) { + opt = opt || {}; + var single = axisModel.coordinateSystem; + var axis = axisModel.axis; + var layout = {}; + var axisPosition = axis.position; + var orient = axis.orient; + var rect = single.getRect(); + var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; + var positionMap = { + horizontal: { + top: rectBound[2], + bottom: rectBound[3] + }, + vertical: { + left: rectBound[0], + right: rectBound[1] + } + }; + layout.position = [orient === 'vertical' ? positionMap.vertical[axisPosition] : rectBound[0], orient === 'horizontal' ? positionMap.horizontal[axisPosition] : rectBound[3]]; + var r = { + horizontal: 0, + vertical: 1 + }; + layout.rotation = Math.PI / 2 * r[orient]; + var directionMap = { + top: -1, + bottom: 1, + right: 1, + left: -1 + }; + layout.labelDirection = layout.tickDirection = layout.nameDirection = directionMap[axisPosition]; + if (axisModel.get(['axisTick', 'inside'])) { + layout.tickDirection = -layout.tickDirection; + } + if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) { + layout.labelDirection = -layout.labelDirection; + } + var labelRotation = opt.rotate; + labelRotation == null && (labelRotation = axisModel.get(['axisLabel', 'rotate'])); + layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation; + layout.z2 = 1; + return layout; + } + + var axisBuilderAttrs$3 = ['axisLine', 'axisTickLabel', 'axisName']; + var selfBuilderAttrs$2 = ['splitArea', 'splitLine']; + var SingleAxisView = /** @class */function (_super) { + __extends(SingleAxisView, _super); + function SingleAxisView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SingleAxisView.type; + _this.axisPointerClass = 'SingleAxisPointer'; + return _this; + } + SingleAxisView.prototype.render = function (axisModel, ecModel, api, payload) { + var group = this.group; + group.removeAll(); + var oldAxisGroup = this._axisGroup; + this._axisGroup = new Group(); + var layout = layout$2(axisModel); + var axisBuilder = new AxisBuilder(axisModel, layout); + each(axisBuilderAttrs$3, axisBuilder.add, axisBuilder); + group.add(this._axisGroup); + group.add(axisBuilder.getGroup()); + each(selfBuilderAttrs$2, function (name) { + if (axisModel.get([name, 'show'])) { + axisElementBuilders$2[name](this, this.group, this._axisGroup, axisModel); + } + }, this); + groupTransition(oldAxisGroup, this._axisGroup, axisModel); + _super.prototype.render.call(this, axisModel, ecModel, api, payload); + }; + SingleAxisView.prototype.remove = function () { + rectCoordAxisHandleRemove(this); + }; + SingleAxisView.type = 'singleAxis'; + return SingleAxisView; + }(AxisView); + var axisElementBuilders$2 = { + splitLine: function (axisView, group, axisGroup, axisModel) { + var axis = axisModel.axis; + if (axis.scale.isBlank()) { + return; + } + var splitLineModel = axisModel.getModel('splitLine'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var lineColors = lineStyleModel.get('color'); + lineColors = lineColors instanceof Array ? lineColors : [lineColors]; + var lineWidth = lineStyleModel.get('width'); + var gridRect = axisModel.coordinateSystem.getRect(); + var isHorizontal = axis.isHorizontal(); + var splitLines = []; + var lineCount = 0; + var ticksCoords = axis.getTicksCoords({ + tickModel: splitLineModel + }); + var p1 = []; + var p2 = []; + for (var i = 0; i < ticksCoords.length; ++i) { + var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord); + if (isHorizontal) { + p1[0] = tickCoord; + p1[1] = gridRect.y; + p2[0] = tickCoord; + p2[1] = gridRect.y + gridRect.height; + } else { + p1[0] = gridRect.x; + p1[1] = tickCoord; + p2[0] = gridRect.x + gridRect.width; + p2[1] = tickCoord; + } + var line = new Line({ + shape: { + x1: p1[0], + y1: p1[1], + x2: p2[0], + y2: p2[1] + }, + silent: true + }); + subPixelOptimizeLine$1(line.shape, lineWidth); + var colorIndex = lineCount++ % lineColors.length; + splitLines[colorIndex] = splitLines[colorIndex] || []; + splitLines[colorIndex].push(line); + } + var lineStyle = lineStyleModel.getLineStyle(['color']); + for (var i = 0; i < splitLines.length; ++i) { + group.add(mergePath$1(splitLines[i], { + style: defaults({ + stroke: lineColors[i % lineColors.length] + }, lineStyle), + silent: true + })); + } + }, + splitArea: function (axisView, group, axisGroup, axisModel) { + rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, axisModel); + } + }; + + var SingleAxisModel = /** @class */function (_super) { + __extends(SingleAxisModel, _super); + function SingleAxisModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SingleAxisModel.type; + return _this; + } + SingleAxisModel.prototype.getCoordSysModel = function () { + return this; + }; + SingleAxisModel.type = 'singleAxis'; + SingleAxisModel.layoutMode = 'box'; + SingleAxisModel.defaultOption = { + left: '5%', + top: '5%', + right: '5%', + bottom: '5%', + type: 'value', + position: 'bottom', + orient: 'horizontal', + axisLine: { + show: true, + lineStyle: { + width: 1, + type: 'solid' + } + }, + // Single coordinate system and single axis is the, + // which is used as the parent tooltip model. + // same model, so we set default tooltip show as true. + tooltip: { + show: true + }, + axisTick: { + show: true, + length: 6, + lineStyle: { + width: 1 + } + }, + axisLabel: { + show: true, + interval: 'auto' + }, + splitLine: { + show: true, + lineStyle: { + type: 'dashed', + opacity: 0.2 + } + } + }; + return SingleAxisModel; + }(ComponentModel); + mixin(SingleAxisModel, AxisModelCommonMixin.prototype); + + var SingleAxis = /** @class */function (_super) { + __extends(SingleAxis, _super); + function SingleAxis(dim, scale, coordExtent, axisType, position) { + var _this = _super.call(this, dim, scale, coordExtent) || this; + _this.type = axisType || 'value'; + _this.position = position || 'bottom'; + return _this; + } + /** + * Judge the orient of the axis. + */ + SingleAxis.prototype.isHorizontal = function () { + var position = this.position; + return position === 'top' || position === 'bottom'; + }; + SingleAxis.prototype.pointToData = function (point, clamp) { + return this.coordinateSystem.pointToData(point)[0]; + }; + return SingleAxis; + }(Axis); + + var singleDimensions = ['single']; + /** + * Create a single coordinates system. + */ + var Single = /** @class */function () { + function Single(axisModel, ecModel, api) { + this.type = 'single'; + this.dimension = 'single'; + /** + * Add it just for draw tooltip. + */ + this.dimensions = singleDimensions; + this.axisPointerEnabled = true; + this.model = axisModel; + this._init(axisModel, ecModel, api); + } + /** + * Initialize single coordinate system. + */ + Single.prototype._init = function (axisModel, ecModel, api) { + var dim = this.dimension; + var axis = new SingleAxis(dim, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisModel.get('position')); + var isCategory = axis.type === 'category'; + axis.onBand = isCategory && axisModel.get('boundaryGap'); + axis.inverse = axisModel.get('inverse'); + axis.orient = axisModel.get('orient'); + axisModel.axis = axis; + axis.model = axisModel; + axis.coordinateSystem = this; + this._axis = axis; + }; + /** + * Update axis scale after data processed + */ + Single.prototype.update = function (ecModel, api) { + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.coordinateSystem === this) { + var data_1 = seriesModel.getData(); + each(data_1.mapDimensionsAll(this.dimension), function (dim) { + this._axis.scale.unionExtentFromData(data_1, dim); + }, this); + niceScaleExtent(this._axis.scale, this._axis.model); + } + }, this); + }; + /** + * Resize the single coordinate system. + */ + Single.prototype.resize = function (axisModel, api) { + this._rect = getLayoutRect({ + left: axisModel.get('left'), + top: axisModel.get('top'), + right: axisModel.get('right'), + bottom: axisModel.get('bottom'), + width: axisModel.get('width'), + height: axisModel.get('height') + }, { + width: api.getWidth(), + height: api.getHeight() + }); + this._adjustAxis(); + }; + Single.prototype.getRect = function () { + return this._rect; + }; + Single.prototype._adjustAxis = function () { + var rect = this._rect; + var axis = this._axis; + var isHorizontal = axis.isHorizontal(); + var extent = isHorizontal ? [0, rect.width] : [0, rect.height]; + var idx = axis.inverse ? 1 : 0; + axis.setExtent(extent[idx], extent[1 - idx]); + this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y); + }; + Single.prototype._updateAxisTransform = function (axis, coordBase) { + var axisExtent = axis.getExtent(); + var extentSum = axisExtent[0] + axisExtent[1]; + var isHorizontal = axis.isHorizontal(); + axis.toGlobalCoord = isHorizontal ? function (coord) { + return coord + coordBase; + } : function (coord) { + return extentSum - coord + coordBase; + }; + axis.toLocalCoord = isHorizontal ? function (coord) { + return coord - coordBase; + } : function (coord) { + return extentSum - coord + coordBase; + }; + }; + /** + * Get axis. + */ + Single.prototype.getAxis = function () { + return this._axis; + }; + /** + * Get axis, add it just for draw tooltip. + */ + Single.prototype.getBaseAxis = function () { + return this._axis; + }; + Single.prototype.getAxes = function () { + return [this._axis]; + }; + Single.prototype.getTooltipAxes = function () { + return { + baseAxes: [this.getAxis()], + // Empty otherAxes + otherAxes: [] + }; + }; + /** + * If contain point. + */ + Single.prototype.containPoint = function (point) { + var rect = this.getRect(); + var axis = this.getAxis(); + var orient = axis.orient; + if (orient === 'horizontal') { + return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height; + } else { + return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height; + } + }; + Single.prototype.pointToData = function (point) { + var axis = this.getAxis(); + return [axis.coordToData(axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1]))]; + }; + /** + * Convert the series data to concrete point. + * Can be [val] | val + */ + Single.prototype.dataToPoint = function (val) { + var axis = this.getAxis(); + var rect = this.getRect(); + var pt = []; + var idx = axis.orient === 'horizontal' ? 0 : 1; + if (val instanceof Array) { + val = val[0]; + } + pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val)); + pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2; + return pt; + }; + Single.prototype.convertToPixel = function (ecModel, finder, value) { + var coordSys = getCoordSys$3(finder); + return coordSys === this ? this.dataToPoint(value) : null; + }; + Single.prototype.convertFromPixel = function (ecModel, finder, pixel) { + var coordSys = getCoordSys$3(finder); + return coordSys === this ? this.pointToData(pixel) : null; + }; + return Single; + }(); + function getCoordSys$3(finder) { + var seriesModel = finder.seriesModel; + var singleModel = finder.singleAxisModel; + return singleModel && singleModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; + } + + /** + * Create single coordinate system and inject it into seriesModel. + */ + function create$2(ecModel, api) { + var singles = []; + ecModel.eachComponent('singleAxis', function (axisModel, idx) { + var single = new Single(axisModel, ecModel, api); + single.name = 'single_' + idx; + single.resize(axisModel, api); + axisModel.coordinateSystem = single; + singles.push(single); + }); + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.get('coordinateSystem') === 'singleAxis') { + var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0]; + seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem; + } + }); + return singles; + } + var singleCreator = { + create: create$2, + dimensions: singleDimensions + }; + + var XY = ['x', 'y']; + var WH = ['width', 'height']; + var SingleAxisPointer = /** @class */function (_super) { + __extends(SingleAxisPointer, _super); + function SingleAxisPointer() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @override + */ + SingleAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) { + var axis = axisModel.axis; + var coordSys = axis.coordinateSystem; + var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis)); + var pixelValue = coordSys.dataToPoint(value)[0]; + var axisPointerType = axisPointerModel.get('type'); + if (axisPointerType && axisPointerType !== 'none') { + var elStyle = buildElStyle(axisPointerModel); + var pointerOption = pointerShapeBuilder$2[axisPointerType](axis, pixelValue, otherExtent); + pointerOption.style = elStyle; + elOption.graphicKey = pointerOption.type; + elOption.pointer = pointerOption; + } + var layoutInfo = layout$2(axisModel); + buildCartesianSingleLabelElOption( + // @ts-ignore + value, elOption, layoutInfo, axisModel, axisPointerModel, api); + }; + /** + * @override + */ + SingleAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) { + var layoutInfo = layout$2(axisModel, { + labelInside: false + }); + // @ts-ignore + layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']); + var position = getTransformedPosition(axisModel.axis, value, layoutInfo); + return { + x: position[0], + y: position[1], + rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) + }; + }; + /** + * @override + */ + SingleAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) { + var axis = axisModel.axis; + var coordSys = axis.coordinateSystem; + var dimIndex = getPointDimIndex(axis); + var axisExtent = getGlobalExtent(coordSys, dimIndex); + var currPosition = [transform.x, transform.y]; + currPosition[dimIndex] += delta[dimIndex]; + currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); + currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); + var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex); + var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; + var cursorPoint = [cursorOtherValue, cursorOtherValue]; + cursorPoint[dimIndex] = currPosition[dimIndex]; + return { + x: currPosition[0], + y: currPosition[1], + rotation: transform.rotation, + cursorPoint: cursorPoint, + tooltipOption: { + verticalAlign: 'middle' + } + }; + }; + return SingleAxisPointer; + }(BaseAxisPointer); + var pointerShapeBuilder$2 = { + line: function (axis, pixelValue, otherExtent) { + var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis)); + return { + type: 'Line', + subPixelOptimize: true, + shape: targetShape + }; + }, + shadow: function (axis, pixelValue, otherExtent) { + var bandWidth = axis.getBandWidth(); + var span = otherExtent[1] - otherExtent[0]; + return { + type: 'Rect', + shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis)) + }; + } + }; + function getPointDimIndex(axis) { + return axis.isHorizontal() ? 0 : 1; + } + function getGlobalExtent(coordSys, dimIndex) { + var rect = coordSys.getRect(); + return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]]; + } + + var SingleView = /** @class */function (_super) { + __extends(SingleView, _super); + function SingleView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SingleView.type; + return _this; + } + SingleView.type = 'single'; + return SingleView; + }(ComponentView); + function install$v(registers) { + use(install$s); + AxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer); + registers.registerComponentView(SingleView); + // Axis + registers.registerComponentView(SingleAxisView); + registers.registerComponentModel(SingleAxisModel); + axisModelCreator(registers, 'single', SingleAxisModel, SingleAxisModel.defaultOption); + registers.registerCoordinateSystem('single', singleCreator); + } + + var CalendarModel = /** @class */function (_super) { + __extends(CalendarModel, _super); + function CalendarModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = CalendarModel.type; + return _this; + } + /** + * @override + */ + CalendarModel.prototype.init = function (option, parentModel, ecModel) { + var inputPositionParams = getLayoutParams(option); + _super.prototype.init.apply(this, arguments); + mergeAndNormalizeLayoutParams(option, inputPositionParams); + }; + /** + * @override + */ + CalendarModel.prototype.mergeOption = function (option) { + _super.prototype.mergeOption.apply(this, arguments); + mergeAndNormalizeLayoutParams(this.option, option); + }; + CalendarModel.prototype.getCellSize = function () { + // Has been normalized + return this.option.cellSize; + }; + CalendarModel.type = 'calendar'; + CalendarModel.defaultOption = { + // zlevel: 0, + z: 2, + left: 80, + top: 60, + cellSize: 20, + // horizontal vertical + orient: 'horizontal', + // month separate line style + splitLine: { + show: true, + lineStyle: { + color: '#000', + width: 1, + type: 'solid' + } + }, + // rect style temporarily unused emphasis + itemStyle: { + color: '#fff', + borderWidth: 1, + borderColor: '#ccc' + }, + // week text style + dayLabel: { + show: true, + firstDay: 0, + // start end + position: 'start', + margin: '50%', + color: '#000' + }, + // month text style + monthLabel: { + show: true, + // start end + position: 'start', + margin: 5, + // center or left + align: 'center', + formatter: null, + color: '#000' + }, + // year text style + yearLabel: { + show: true, + // top bottom left right + position: null, + margin: 30, + formatter: null, + color: '#ccc', + fontFamily: 'sans-serif', + fontWeight: 'bolder', + fontSize: 20 + } + }; + return CalendarModel; + }(ComponentModel); + function mergeAndNormalizeLayoutParams(target, raw) { + // Normalize cellSize + var cellSize = target.cellSize; + var cellSizeArr; + if (!isArray(cellSize)) { + cellSizeArr = target.cellSize = [cellSize, cellSize]; + } else { + cellSizeArr = cellSize; + } + if (cellSizeArr.length === 1) { + cellSizeArr[1] = cellSizeArr[0]; + } + var ignoreSize = map([0, 1], function (hvIdx) { + // If user have set `width` or both `left` and `right`, cellSizeArr + // will be automatically set to 'auto', otherwise the default + // setting of cellSizeArr will make `width` setting not work. + if (sizeCalculable(raw, hvIdx)) { + cellSizeArr[hvIdx] = 'auto'; + } + return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== 'auto'; + }); + mergeLayoutParam(target, raw, { + type: 'box', + ignoreSize: ignoreSize + }); + } + + var CalendarView = /** @class */function (_super) { + __extends(CalendarView, _super); + function CalendarView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = CalendarView.type; + return _this; + } + CalendarView.prototype.render = function (calendarModel, ecModel, api) { + var group = this.group; + group.removeAll(); + var coordSys = calendarModel.coordinateSystem; + // range info + var rangeData = coordSys.getRangeInfo(); + var orient = coordSys.getOrient(); + // locale + var localeModel = ecModel.getLocaleModel(); + this._renderDayRect(calendarModel, rangeData, group); + // _renderLines must be called prior to following function + this._renderLines(calendarModel, rangeData, orient, group); + this._renderYearText(calendarModel, rangeData, orient, group); + this._renderMonthText(calendarModel, localeModel, orient, group); + this._renderWeekText(calendarModel, localeModel, rangeData, orient, group); + }; + // render day rect + CalendarView.prototype._renderDayRect = function (calendarModel, rangeData, group) { + var coordSys = calendarModel.coordinateSystem; + var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle(); + var sw = coordSys.getCellWidth(); + var sh = coordSys.getCellHeight(); + for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) { + var point = coordSys.dataToRect([i], false).tl; + // every rect + var rect = new Rect({ + shape: { + x: point[0], + y: point[1], + width: sw, + height: sh + }, + cursor: 'default', + style: itemRectStyleModel + }); + group.add(rect); + } + }; + // render separate line + CalendarView.prototype._renderLines = function (calendarModel, rangeData, orient, group) { + var self = this; + var coordSys = calendarModel.coordinateSystem; + var lineStyleModel = calendarModel.getModel(['splitLine', 'lineStyle']).getLineStyle(); + var show = calendarModel.get(['splitLine', 'show']); + var lineWidth = lineStyleModel.lineWidth; + this._tlpoints = []; + this._blpoints = []; + this._firstDayOfMonth = []; + this._firstDayPoints = []; + var firstDay = rangeData.start; + for (var i = 0; firstDay.time <= rangeData.end.time; i++) { + addPoints(firstDay.formatedDate); + if (i === 0) { + firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m); + } + var date = firstDay.date; + date.setMonth(date.getMonth() + 1); + firstDay = coordSys.getDateInfo(date); + } + addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate); + function addPoints(date) { + self._firstDayOfMonth.push(coordSys.getDateInfo(date)); + self._firstDayPoints.push(coordSys.dataToRect([date], false).tl); + var points = self._getLinePointsOfOneWeek(calendarModel, date, orient); + self._tlpoints.push(points[0]); + self._blpoints.push(points[points.length - 1]); + show && self._drawSplitline(points, lineStyleModel, group); + } + // render top/left line + show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); + // render bottom/right line + show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group); + }; + // get points at both ends + CalendarView.prototype._getEdgesPoints = function (points, lineWidth, orient) { + var rs = [points[0].slice(), points[points.length - 1].slice()]; + var idx = orient === 'horizontal' ? 0 : 1; + // both ends of the line are extend half lineWidth + rs[0][idx] = rs[0][idx] - lineWidth / 2; + rs[1][idx] = rs[1][idx] + lineWidth / 2; + return rs; + }; + // render split line + CalendarView.prototype._drawSplitline = function (points, lineStyle, group) { + var poyline = new Polyline({ + z2: 20, + shape: { + points: points + }, + style: lineStyle + }); + group.add(poyline); + }; + // render month line of one week points + CalendarView.prototype._getLinePointsOfOneWeek = function (calendarModel, date, orient) { + var coordSys = calendarModel.coordinateSystem; + var parsedDate = coordSys.getDateInfo(date); + var points = []; + for (var i = 0; i < 7; i++) { + var tmpD = coordSys.getNextNDay(parsedDate.time, i); + var point = coordSys.dataToRect([tmpD.time], false); + points[2 * tmpD.day] = point.tl; + points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr']; + } + return points; + }; + CalendarView.prototype._formatterLabel = function (formatter, params) { + if (isString(formatter) && formatter) { + return formatTplSimple(formatter, params); + } + if (isFunction(formatter)) { + return formatter(params); + } + return params.nameMap; + }; + CalendarView.prototype._yearTextPositionControl = function (textEl, point, orient, position, margin) { + var x = point[0]; + var y = point[1]; + var aligns = ['center', 'bottom']; + if (position === 'bottom') { + y += margin; + aligns = ['center', 'top']; + } else if (position === 'left') { + x -= margin; + } else if (position === 'right') { + x += margin; + aligns = ['center', 'top']; + } else { + // top + y -= margin; + } + var rotate = 0; + if (position === 'left' || position === 'right') { + rotate = Math.PI / 2; + } + return { + rotation: rotate, + x: x, + y: y, + style: { + align: aligns[0], + verticalAlign: aligns[1] + } + }; + }; + // render year + CalendarView.prototype._renderYearText = function (calendarModel, rangeData, orient, group) { + var yearLabel = calendarModel.getModel('yearLabel'); + if (!yearLabel.get('show')) { + return; + } + var margin = yearLabel.get('margin'); + var pos = yearLabel.get('position'); + if (!pos) { + pos = orient !== 'horizontal' ? 'top' : 'left'; + } + var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]]; + var xc = (points[0][0] + points[1][0]) / 2; + var yc = (points[0][1] + points[1][1]) / 2; + var idx = orient === 'horizontal' ? 0 : 1; + var posPoints = { + top: [xc, points[idx][1]], + bottom: [xc, points[1 - idx][1]], + left: [points[1 - idx][0], yc], + right: [points[idx][0], yc] + }; + var name = rangeData.start.y; + if (+rangeData.end.y > +rangeData.start.y) { + name = name + '-' + rangeData.end.y; + } + var formatter = yearLabel.get('formatter'); + var params = { + start: rangeData.start.y, + end: rangeData.end.y, + nameMap: name + }; + var content = this._formatterLabel(formatter, params); + var yearText = new ZRText({ + z2: 30, + style: createTextStyle(yearLabel, { + text: content + }) + }); + yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin)); + group.add(yearText); + }; + CalendarView.prototype._monthTextPositionControl = function (point, isCenter, orient, position, margin) { + var align = 'left'; + var vAlign = 'top'; + var x = point[0]; + var y = point[1]; + if (orient === 'horizontal') { + y = y + margin; + if (isCenter) { + align = 'center'; + } + if (position === 'start') { + vAlign = 'bottom'; + } + } else { + x = x + margin; + if (isCenter) { + vAlign = 'middle'; + } + if (position === 'start') { + align = 'right'; + } + } + return { + x: x, + y: y, + align: align, + verticalAlign: vAlign + }; + }; + // render month and year text + CalendarView.prototype._renderMonthText = function (calendarModel, localeModel, orient, group) { + var monthLabel = calendarModel.getModel('monthLabel'); + if (!monthLabel.get('show')) { + return; + } + var nameMap = monthLabel.get('nameMap'); + var margin = monthLabel.get('margin'); + var pos = monthLabel.get('position'); + var align = monthLabel.get('align'); + var termPoints = [this._tlpoints, this._blpoints]; + if (!nameMap || isString(nameMap)) { + if (nameMap) { + // case-sensitive + localeModel = getLocaleModel(nameMap) || localeModel; + } + // PENDING + // for ZH locale, original form is `一月` but current form is `1月` + nameMap = localeModel.get(['time', 'monthAbbr']) || []; + } + var idx = pos === 'start' ? 0 : 1; + var axis = orient === 'horizontal' ? 0 : 1; + margin = pos === 'start' ? -margin : margin; + var isCenter = align === 'center'; + for (var i = 0; i < termPoints[idx].length - 1; i++) { + var tmp = termPoints[idx][i].slice(); + var firstDay = this._firstDayOfMonth[i]; + if (isCenter) { + var firstDayPoints = this._firstDayPoints[i]; + tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2; + } + var formatter = monthLabel.get('formatter'); + var name_1 = nameMap[+firstDay.m - 1]; + var params = { + yyyy: firstDay.y, + yy: (firstDay.y + '').slice(2), + MM: firstDay.m, + M: +firstDay.m, + nameMap: name_1 + }; + var content = this._formatterLabel(formatter, params); + var monthText = new ZRText({ + z2: 30, + style: extend(createTextStyle(monthLabel, { + text: content + }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin)) + }); + group.add(monthText); + } + }; + CalendarView.prototype._weekTextPositionControl = function (point, orient, position, margin, cellSize) { + var align = 'center'; + var vAlign = 'middle'; + var x = point[0]; + var y = point[1]; + var isStart = position === 'start'; + if (orient === 'horizontal') { + x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2; + align = isStart ? 'right' : 'left'; + } else { + y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2; + vAlign = isStart ? 'bottom' : 'top'; + } + return { + x: x, + y: y, + align: align, + verticalAlign: vAlign + }; + }; + // render weeks + CalendarView.prototype._renderWeekText = function (calendarModel, localeModel, rangeData, orient, group) { + var dayLabel = calendarModel.getModel('dayLabel'); + if (!dayLabel.get('show')) { + return; + } + var coordSys = calendarModel.coordinateSystem; + var pos = dayLabel.get('position'); + var nameMap = dayLabel.get('nameMap'); + var margin = dayLabel.get('margin'); + var firstDayOfWeek = coordSys.getFirstDayOfWeek(); + if (!nameMap || isString(nameMap)) { + if (nameMap) { + // case-sensitive + localeModel = getLocaleModel(nameMap) || localeModel; + } + // Use the first letter of `dayOfWeekAbbr` if `dayOfWeekShort` doesn't exist in the locale file + var dayOfWeekShort = localeModel.get(['time', 'dayOfWeekShort']); + nameMap = dayOfWeekShort || map(localeModel.get(['time', 'dayOfWeekAbbr']), function (val) { + return val[0]; + }); + } + var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time; + var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()]; + margin = parsePercent$1(margin, Math.min(cellSize[1], cellSize[0])); + if (pos === 'start') { + start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time; + margin = -margin; + } + for (var i = 0; i < 7; i++) { + var tmpD = coordSys.getNextNDay(start, i); + var point = coordSys.dataToRect([tmpD.time], false).center; + var day = i; + day = Math.abs((i + firstDayOfWeek) % 7); + var weekText = new ZRText({ + z2: 30, + style: extend(createTextStyle(dayLabel, { + text: nameMap[day] + }), this._weekTextPositionControl(point, orient, pos, margin, cellSize)) + }); + group.add(weekText); + } + }; + CalendarView.type = 'calendar'; + return CalendarView; + }(ComponentView); + + // (24*60*60*1000) + var PROXIMATE_ONE_DAY = 86400000; + var Calendar = /** @class */function () { + function Calendar(calendarModel, ecModel, api) { + this.type = 'calendar'; + this.dimensions = Calendar.dimensions; + // Required in createListFromData + this.getDimensionsInfo = Calendar.getDimensionsInfo; + this._model = calendarModel; + } + Calendar.getDimensionsInfo = function () { + return [{ + name: 'time', + type: 'time' + }, 'value']; + }; + Calendar.prototype.getRangeInfo = function () { + return this._rangeInfo; + }; + Calendar.prototype.getModel = function () { + return this._model; + }; + Calendar.prototype.getRect = function () { + return this._rect; + }; + Calendar.prototype.getCellWidth = function () { + return this._sw; + }; + Calendar.prototype.getCellHeight = function () { + return this._sh; + }; + Calendar.prototype.getOrient = function () { + return this._orient; + }; + /** + * getFirstDayOfWeek + * + * @example + * 0 : start at Sunday + * 1 : start at Monday + * + * @return {number} + */ + Calendar.prototype.getFirstDayOfWeek = function () { + return this._firstDayOfWeek; + }; + /** + * get date info + * } + */ + Calendar.prototype.getDateInfo = function (date) { + date = parseDate(date); + var y = date.getFullYear(); + var m = date.getMonth() + 1; + var mStr = m < 10 ? '0' + m : '' + m; + var d = date.getDate(); + var dStr = d < 10 ? '0' + d : '' + d; + var day = date.getDay(); + day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7); + return { + y: y + '', + m: mStr, + d: dStr, + day: day, + time: date.getTime(), + formatedDate: y + '-' + mStr + '-' + dStr, + date: date + }; + }; + Calendar.prototype.getNextNDay = function (date, n) { + n = n || 0; + if (n === 0) { + return this.getDateInfo(date); + } + date = new Date(this.getDateInfo(date).time); + date.setDate(date.getDate() + n); + return this.getDateInfo(date); + }; + Calendar.prototype.update = function (ecModel, api) { + 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()); + var weeks = this._rangeInfo.weeks || 1; + var whNames = ['width', 'height']; + var cellSize = this._model.getCellSize().slice(); + var layoutParams = this._model.getBoxLayoutParams(); + var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks]; + each([0, 1], function (idx) { + if (cellSizeSpecified(cellSize, idx)) { + layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx]; + } + }); + var whGlobal = { + width: api.getWidth(), + height: api.getHeight() + }; + var calendarRect = this._rect = getLayoutRect(layoutParams, whGlobal); + each([0, 1], function (idx) { + if (!cellSizeSpecified(cellSize, idx)) { + cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx]; + } + }); + function cellSizeSpecified(cellSize, idx) { + return cellSize[idx] != null && cellSize[idx] !== 'auto'; + } + // Has been calculated out number. + this._sw = cellSize[0]; + this._sh = cellSize[1]; + }; + /** + * Convert a time data(time, value) item to (x, y) point. + */ + // TODO Clamp of calendar is not same with cartesian coordinate systems. + // It will return NaN if data exceeds. + Calendar.prototype.dataToPoint = function (data, clamp) { + isArray(data) && (data = data[0]); + clamp == null && (clamp = true); + var dayInfo = this.getDateInfo(data); + var range = this._rangeInfo; + var date = dayInfo.formatedDate; + // if not in range return [NaN, NaN] + if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) { + return [NaN, NaN]; + } + var week = dayInfo.day; + var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek; + if (this._orient === 'vertical') { + return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2]; + } + return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2]; + }; + /** + * Convert a (x, y) point to time data + */ + Calendar.prototype.pointToData = function (point) { + var date = this.pointToDate(point); + return date && date.time; + }; + /** + * Convert a time date item to (x, y) four point. + */ + Calendar.prototype.dataToRect = function (data, clamp) { + var point = this.dataToPoint(data, clamp); + return { + contentShape: { + x: point[0] - (this._sw - this._lineWidth) / 2, + y: point[1] - (this._sh - this._lineWidth) / 2, + width: this._sw - this._lineWidth, + height: this._sh - this._lineWidth + }, + center: point, + tl: [point[0] - this._sw / 2, point[1] - this._sh / 2], + tr: [point[0] + this._sw / 2, point[1] - this._sh / 2], + br: [point[0] + this._sw / 2, point[1] + this._sh / 2], + bl: [point[0] - this._sw / 2, point[1] + this._sh / 2] + }; + }; + /** + * Convert a (x, y) point to time date + * + * @param {Array} point point + * @return {Object} date + */ + Calendar.prototype.pointToDate = function (point) { + var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1; + var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1; + var range = this._rangeInfo.range; + if (this._orient === 'vertical') { + return this._getDateByWeeksAndDay(nthY, nthX - 1, range); + } + return this._getDateByWeeksAndDay(nthX, nthY - 1, range); + }; + Calendar.prototype.convertToPixel = function (ecModel, finder, value) { + var coordSys = getCoordSys$4(finder); + return coordSys === this ? coordSys.dataToPoint(value) : null; + }; + Calendar.prototype.convertFromPixel = function (ecModel, finder, pixel) { + var coordSys = getCoordSys$4(finder); + return coordSys === this ? coordSys.pointToData(pixel) : null; + }; + Calendar.prototype.containPoint = function (point) { + console.warn('Not implemented.'); + return false; + }; + /** + * initRange + * Normalize to an [start, end] array + */ + Calendar.prototype._initRangeOption = function () { + var range = this._model.get('range'); + var normalizedRange; + // Convert [1990] to 1990 + if (isArray(range) && range.length === 1) { + range = range[0]; + } + if (!isArray(range)) { + var rangeStr = range.toString(); + // One year. + if (/^\d{4}$/.test(rangeStr)) { + normalizedRange = [rangeStr + '-01-01', rangeStr + '-12-31']; + } + // One month + if (/^\d{4}[\/|-]\d{1,2}$/.test(rangeStr)) { + var start = this.getDateInfo(rangeStr); + var firstDay = start.date; + firstDay.setMonth(firstDay.getMonth() + 1); + var end = this.getNextNDay(firstDay, -1); + normalizedRange = [start.formatedDate, end.formatedDate]; + } + // One day + if (/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(rangeStr)) { + normalizedRange = [rangeStr, rangeStr]; + } + } else { + normalizedRange = range; + } + if (!normalizedRange) { + if ("development" !== 'production') { + logError('Invalid date range.'); + } + // Not handling it. + return range; + } + var tmp = this._getRangeInfo(normalizedRange); + if (tmp.start.time > tmp.end.time) { + normalizedRange.reverse(); + } + return normalizedRange; + }; + /** + * range info + * + * @private + * @param {Array} range range ['2017-01-01', '2017-07-08'] + * If range[0] > range[1], they will not be reversed. + * @return {Object} obj + */ + Calendar.prototype._getRangeInfo = function (range) { + var parsedRange = [this.getDateInfo(range[0]), this.getDateInfo(range[1])]; + var reversed; + if (parsedRange[0].time > parsedRange[1].time) { + reversed = true; + parsedRange.reverse(); + } + var allDay = Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY) - Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY) + 1; + // Consider case1 (#11677 #10430): + // Set the system timezone as "UK", set the range to `['2016-07-01', '2016-12-31']` + // Consider case2: + // Firstly set system timezone as "Time Zone: America/Toronto", + // ``` + // let first = new Date(1478412000000 - 3600 * 1000 * 2.5); + // let second = new Date(1478412000000); + // let allDays = Math.floor(second / ONE_DAY) - Math.floor(first / ONE_DAY) + 1; + // ``` + // will get wrong result because of DST. So we should fix it. + var date = new Date(parsedRange[0].time); + var startDateNum = date.getDate(); + var endDateNum = parsedRange[1].date.getDate(); + date.setDate(startDateNum + allDay - 1); + // The bias can not over a month, so just compare date. + var dateNum = date.getDate(); + if (dateNum !== endDateNum) { + var sign = date.getTime() - parsedRange[1].time > 0 ? 1 : -1; + while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - parsedRange[1].time) * sign > 0) { + allDay -= sign; + date.setDate(dateNum - sign); + } + } + var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7); + var nthWeek = reversed ? -weeks + 1 : weeks - 1; + reversed && parsedRange.reverse(); + return { + range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate], + start: parsedRange[0], + end: parsedRange[1], + allDay: allDay, + weeks: weeks, + // From 0. + nthWeek: nthWeek, + fweek: parsedRange[0].day, + lweek: parsedRange[1].day + }; + }; + /** + * get date by nthWeeks and week day in range + * + * @private + * @param {number} nthWeek the week + * @param {number} day the week day + * @param {Array} range [d1, d2] + * @return {Object} + */ + Calendar.prototype._getDateByWeeksAndDay = function (nthWeek, day, range) { + var rangeInfo = this._getRangeInfo(range); + if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) { + return null; + } + var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day; + var date = new Date(rangeInfo.start.time); + date.setDate(+rangeInfo.start.d + nthDay); + return this.getDateInfo(date); + }; + Calendar.create = function (ecModel, api) { + var calendarList = []; + ecModel.eachComponent('calendar', function (calendarModel) { + var calendar = new Calendar(calendarModel, ecModel, api); + calendarList.push(calendar); + calendarModel.coordinateSystem = calendar; + }); + ecModel.eachSeries(function (calendarSeries) { + if (calendarSeries.get('coordinateSystem') === 'calendar') { + // Inject coordinate system + calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0]; + } + }); + return calendarList; + }; + Calendar.dimensions = ['time', 'value']; + return Calendar; + }(); + function getCoordSys$4(finder) { + var calendarModel = finder.calendarModel; + var seriesModel = finder.seriesModel; + var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null; + return coordSys; + } + + function install$w(registers) { + registers.registerComponentModel(CalendarModel); + registers.registerComponentView(CalendarView); + registers.registerCoordinateSystem('calendar', Calendar); + } + + function setKeyInfoToNewElOption(resultItem, newElOption) { + var existElOption = resultItem.existing; + // Set id and type after id assigned. + newElOption.id = resultItem.keyInfo.id; + !newElOption.type && existElOption && (newElOption.type = existElOption.type); + // Set parent id if not specified + if (newElOption.parentId == null) { + var newElParentOption = newElOption.parentOption; + if (newElParentOption) { + newElOption.parentId = newElParentOption.id; + } else if (existElOption) { + newElOption.parentId = existElOption.parentId; + } + } + // Clear + newElOption.parentOption = null; + } + function isSetLoc(obj, props) { + var isSet; + each(props, function (prop) { + obj[prop] != null && obj[prop] !== 'auto' && (isSet = true); + }); + return isSet; + } + function mergeNewElOptionToExist(existList, index, newElOption) { + // Update existing options, for `getOption` feature. + var newElOptCopy = extend({}, newElOption); + var existElOption = existList[index]; + var $action = newElOption.$action || 'merge'; + if ($action === 'merge') { + if (existElOption) { + if ("development" !== 'production') { + var newType = newElOption.type; + assert(!newType || existElOption.type === newType, 'Please set $action: "replace" to change `type`'); + } + // We can ensure that newElOptCopy and existElOption are not + // the same object, so `merge` will not change newElOptCopy. + merge(existElOption, newElOptCopy, true); + // Rigid body, use ignoreSize. + mergeLayoutParam(existElOption, newElOptCopy, { + ignoreSize: true + }); + // Will be used in render. + copyLayoutParams(newElOption, existElOption); + // Copy transition info to new option so it can be used in the transition. + // DO IT AFTER merge + copyTransitionInfo(newElOption, existElOption); + copyTransitionInfo(newElOption, existElOption, 'shape'); + copyTransitionInfo(newElOption, existElOption, 'style'); + copyTransitionInfo(newElOption, existElOption, 'extra'); + // Copy clipPath + newElOption.clipPath = existElOption.clipPath; + } else { + existList[index] = newElOptCopy; + } + } else if ($action === 'replace') { + existList[index] = newElOptCopy; + } else if ($action === 'remove') { + // null will be cleaned later. + existElOption && (existList[index] = null); + } + } + var TRANSITION_PROPS_TO_COPY = ['transition', 'enterFrom', 'leaveTo']; + var ROOT_TRANSITION_PROPS_TO_COPY = TRANSITION_PROPS_TO_COPY.concat(['enterAnimation', 'updateAnimation', 'leaveAnimation']); + function copyTransitionInfo(target, source, targetProp) { + if (targetProp) { + if (!target[targetProp] && source[targetProp]) { + // TODO avoid creating this empty object when there is no transition configuration. + target[targetProp] = {}; + } + target = target[targetProp]; + source = source[targetProp]; + } + if (!target || !source) { + return; + } + var props = targetProp ? TRANSITION_PROPS_TO_COPY : ROOT_TRANSITION_PROPS_TO_COPY; + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + if (target[prop] == null && source[prop] != null) { + target[prop] = source[prop]; + } + } + } + function setLayoutInfoToExist(existItem, newElOption) { + if (!existItem) { + return; + } + existItem.hv = newElOption.hv = [ + // Rigid body, don't care about `width`. + isSetLoc(newElOption, ['left', 'right']), + // Rigid body, don't care about `height`. + isSetLoc(newElOption, ['top', 'bottom'])]; + // Give default group size. Otherwise layout error may occur. + if (existItem.type === 'group') { + var existingGroupOpt = existItem; + var newGroupOpt = newElOption; + existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0); + existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0); + } + } + var GraphicComponentModel = /** @class */function (_super) { + __extends(GraphicComponentModel, _super); + function GraphicComponentModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = GraphicComponentModel.type; + _this.preventAutoZ = true; + return _this; + } + GraphicComponentModel.prototype.mergeOption = function (option, ecModel) { + // Prevent default merge to elements + var elements = this.option.elements; + this.option.elements = null; + _super.prototype.mergeOption.call(this, option, ecModel); + this.option.elements = elements; + }; + GraphicComponentModel.prototype.optionUpdated = function (newOption, isInit) { + var thisOption = this.option; + var newList = (isInit ? thisOption : newOption).elements; + var existList = thisOption.elements = isInit ? [] : thisOption.elements; + var flattenedList = []; + this._flatten(newList, flattenedList, null); + var mappingResult = mappingToExists(existList, flattenedList, 'normalMerge'); + // Clear elOptionsToUpdate + var elOptionsToUpdate = this._elOptionsToUpdate = []; + each(mappingResult, function (resultItem, index) { + var newElOption = resultItem.newOption; + if ("development" !== 'production') { + assert(isObject(newElOption) || resultItem.existing, 'Empty graphic option definition'); + } + if (!newElOption) { + return; + } + elOptionsToUpdate.push(newElOption); + setKeyInfoToNewElOption(resultItem, newElOption); + mergeNewElOptionToExist(existList, index, newElOption); + setLayoutInfoToExist(existList[index], newElOption); + }, this); + // Clean + thisOption.elements = filter(existList, function (item) { + // $action should be volatile, otherwise option gotten from + // `getOption` will contain unexpected $action. + item && delete item.$action; + return item != null; + }); + }; + /** + * Convert + * [{ + * type: 'group', + * id: 'xx', + * children: [{type: 'circle'}, {type: 'polygon'}] + * }] + * to + * [ + * {type: 'group', id: 'xx'}, + * {type: 'circle', parentId: 'xx'}, + * {type: 'polygon', parentId: 'xx'} + * ] + */ + GraphicComponentModel.prototype._flatten = function (optionList, result, parentOption) { + each(optionList, function (option) { + if (!option) { + return; + } + if (parentOption) { + option.parentOption = parentOption; + } + result.push(option); + var children = option.children; + // here we don't judge if option.type is `group` + // when new option doesn't provide `type`, it will cause that the children can't be updated. + if (children && children.length) { + this._flatten(children, result, option); + } + // Deleting for JSON output, and for not affecting group creation. + delete option.children; + }, this); + }; + // FIXME + // Pass to view using payload? setOption has a payload? + GraphicComponentModel.prototype.useElOptionsToUpdate = function () { + var els = this._elOptionsToUpdate; + // Clear to avoid render duplicately when zooming. + this._elOptionsToUpdate = null; + return els; + }; + GraphicComponentModel.type = 'graphic'; + GraphicComponentModel.defaultOption = { + elements: [] + // parentId: null + }; + + return GraphicComponentModel; + }(ComponentModel); + + var nonShapeGraphicElements = { + // Reserved but not supported in graphic component. + path: null, + compoundPath: null, + // Supported in graphic component. + group: Group, + image: ZRImage, + text: ZRText + }; + var inner$e = makeInner(); + // ------------------------ + // View + // ------------------------ + var GraphicComponentView = /** @class */function (_super) { + __extends(GraphicComponentView, _super); + function GraphicComponentView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = GraphicComponentView.type; + return _this; + } + GraphicComponentView.prototype.init = function () { + this._elMap = createHashMap(); + }; + GraphicComponentView.prototype.render = function (graphicModel, ecModel, api) { + // Having leveraged between use cases and algorithm complexity, a very + // simple layout mechanism is used: + // The size(width/height) can be determined by itself or its parent (not + // implemented yet), but can not by its children. (Top-down travel) + // The location(x/y) can be determined by the bounding rect of itself + // (can including its descendants or not) and the size of its parent. + // (Bottom-up travel) + // When `chart.clear()` or `chart.setOption({...}, true)` with the same id, + // view will be reused. + if (graphicModel !== this._lastGraphicModel) { + this._clear(); + } + this._lastGraphicModel = graphicModel; + this._updateElements(graphicModel); + this._relocate(graphicModel, api); + }; + /** + * Update graphic elements. + */ + GraphicComponentView.prototype._updateElements = function (graphicModel) { + var elOptionsToUpdate = graphicModel.useElOptionsToUpdate(); + if (!elOptionsToUpdate) { + return; + } + var elMap = this._elMap; + var rootGroup = this.group; + var globalZ = graphicModel.get('z'); + var globalZLevel = graphicModel.get('zlevel'); + // Top-down tranverse to assign graphic settings to each elements. + each(elOptionsToUpdate, function (elOption) { + var id = convertOptionIdName(elOption.id, null); + var elExisting = id != null ? elMap.get(id) : null; + var parentId = convertOptionIdName(elOption.parentId, null); + var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup; + var elType = elOption.type; + var elOptionStyle = elOption.style; + if (elType === 'text' && elOptionStyle) { + // In top/bottom mode, textVerticalAlign should not be used, which cause + // inaccurately locating. + if (elOption.hv && elOption.hv[1]) { + elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = elOptionStyle.verticalAlign = elOptionStyle.align = null; + } + } + var textContentOption = elOption.textContent; + var textConfig = elOption.textConfig; + if (elOptionStyle && isEC4CompatibleStyle(elOptionStyle, elType, !!textConfig, !!textContentOption)) { + var convertResult = convertFromEC4CompatibleStyle(elOptionStyle, elType, true); + if (!textConfig && convertResult.textConfig) { + textConfig = elOption.textConfig = convertResult.textConfig; + } + if (!textContentOption && convertResult.textContent) { + textContentOption = convertResult.textContent; + } + } + // Remove unnecessary props to avoid potential problems. + var elOptionCleaned = getCleanedElOption(elOption); + // For simple, do not support parent change, otherwise reorder is needed. + if ("development" !== 'production') { + elExisting && assert(targetElParent === elExisting.parent, 'Changing parent is not supported.'); + } + var $action = elOption.$action || 'merge'; + var isMerge = $action === 'merge'; + var isReplace = $action === 'replace'; + if (isMerge) { + var isInit = !elExisting; + var el_1 = elExisting; + if (isInit) { + el_1 = createEl$1(id, targetElParent, elOption.type, elMap); + } else { + el_1 && (inner$e(el_1).isNew = false); + // Stop and restore before update any other attributes. + stopPreviousKeyframeAnimationAndRestore(el_1); + } + if (el_1) { + applyUpdateTransition(el_1, elOptionCleaned, graphicModel, { + isInit: isInit + }); + updateCommonAttrs(el_1, elOption, globalZ, globalZLevel); + } + } else if (isReplace) { + removeEl(elExisting, elOption, elMap, graphicModel); + var el_2 = createEl$1(id, targetElParent, elOption.type, elMap); + if (el_2) { + applyUpdateTransition(el_2, elOptionCleaned, graphicModel, { + isInit: true + }); + updateCommonAttrs(el_2, elOption, globalZ, globalZLevel); + } + } else if ($action === 'remove') { + updateLeaveTo(elExisting, elOption); + removeEl(elExisting, elOption, elMap, graphicModel); + } + var el = elMap.get(id); + if (el && textContentOption) { + if (isMerge) { + var textContentExisting = el.getTextContent(); + textContentExisting ? textContentExisting.attr(textContentOption) : el.setTextContent(new ZRText(textContentOption)); + } else if (isReplace) { + el.setTextContent(new ZRText(textContentOption)); + } + } + if (el) { + var clipPathOption = elOption.clipPath; + if (clipPathOption) { + var clipPathType = clipPathOption.type; + var clipPath = void 0; + var isInit = false; + if (isMerge) { + var oldClipPath = el.getClipPath(); + isInit = !oldClipPath || inner$e(oldClipPath).type !== clipPathType; + clipPath = isInit ? newEl(clipPathType) : oldClipPath; + } else if (isReplace) { + isInit = true; + clipPath = newEl(clipPathType); + } + el.setClipPath(clipPath); + applyUpdateTransition(clipPath, clipPathOption, graphicModel, { + isInit: isInit + }); + applyKeyframeAnimation(clipPath, clipPathOption.keyframeAnimation, graphicModel); + } + var elInner = inner$e(el); + el.setTextConfig(textConfig); + elInner.option = elOption; + setEventData(el, graphicModel, elOption); + setTooltipConfig({ + el: el, + componentModel: graphicModel, + itemName: el.name, + itemTooltipOption: elOption.tooltip + }); + applyKeyframeAnimation(el, elOption.keyframeAnimation, graphicModel); + } + }); + }; + /** + * Locate graphic elements. + */ + GraphicComponentView.prototype._relocate = function (graphicModel, api) { + var elOptions = graphicModel.option.elements; + var rootGroup = this.group; + var elMap = this._elMap; + var apiWidth = api.getWidth(); + var apiHeight = api.getHeight(); + var xy = ['x', 'y']; + // Top-down to calculate percentage width/height of group + for (var i = 0; i < elOptions.length; i++) { + var elOption = elOptions[i]; + var id = convertOptionIdName(elOption.id, null); + var el = id != null ? elMap.get(id) : null; + if (!el || !el.isGroup) { + continue; + } + var parentEl = el.parent; + var isParentRoot = parentEl === rootGroup; + // Like 'position:absolut' in css, default 0. + var elInner = inner$e(el); + var parentElInner = inner$e(parentEl); + elInner.width = parsePercent$1(elInner.option.width, isParentRoot ? apiWidth : parentElInner.width) || 0; + elInner.height = parsePercent$1(elInner.option.height, isParentRoot ? apiHeight : parentElInner.height) || 0; + } + // Bottom-up tranvese all elements (consider ec resize) to locate elements. + for (var i = elOptions.length - 1; i >= 0; i--) { + var elOption = elOptions[i]; + var id = convertOptionIdName(elOption.id, null); + var el = id != null ? elMap.get(id) : null; + if (!el) { + continue; + } + var parentEl = el.parent; + var parentElInner = inner$e(parentEl); + var containerInfo = parentEl === rootGroup ? { + width: apiWidth, + height: apiHeight + } : { + width: parentElInner.width, + height: parentElInner.height + }; + // PENDING + // Currently, when `bounding: 'all'`, the union bounding rect of the group + // does not include the rect of [0, 0, group.width, group.height], which + // is probably weird for users. Should we make a break change for it? + var layoutPos = {}; + var layouted = positionElement(el, elOption, containerInfo, null, { + hv: elOption.hv, + boundingMode: elOption.bounding + }, layoutPos); + if (!inner$e(el).isNew && layouted) { + var transition = elOption.transition; + var animatePos = {}; + for (var k = 0; k < xy.length; k++) { + var key = xy[k]; + var val = layoutPos[key]; + if (transition && (isTransitionAll(transition) || indexOf(transition, key) >= 0)) { + animatePos[key] = val; + } else { + el[key] = val; + } + } + updateProps(el, animatePos, graphicModel, 0); + } else { + el.attr(layoutPos); + } + } + }; + /** + * Clear all elements. + */ + GraphicComponentView.prototype._clear = function () { + var _this = this; + var elMap = this._elMap; + elMap.each(function (el) { + removeEl(el, inner$e(el).option, elMap, _this._lastGraphicModel); + }); + this._elMap = createHashMap(); + }; + GraphicComponentView.prototype.dispose = function () { + this._clear(); + }; + GraphicComponentView.type = 'graphic'; + return GraphicComponentView; + }(ComponentView); + function newEl(graphicType) { + if ("development" !== 'production') { + assert(graphicType, 'graphic type MUST be set'); + } + var Clz = hasOwn(nonShapeGraphicElements, graphicType) + // Those graphic elements are not shapes. They should not be + // overwritten by users, so do them first. + ? nonShapeGraphicElements[graphicType] : getShapeClass(graphicType); + if ("development" !== 'production') { + assert(Clz, "graphic type " + graphicType + " can not be found"); + } + var el = new Clz({}); + inner$e(el).type = graphicType; + return el; + } + function createEl$1(id, targetElParent, graphicType, elMap) { + var el = newEl(graphicType); + targetElParent.add(el); + elMap.set(id, el); + inner$e(el).id = id; + inner$e(el).isNew = true; + return el; + } + function removeEl(elExisting, elOption, elMap, graphicModel) { + var existElParent = elExisting && elExisting.parent; + if (existElParent) { + elExisting.type === 'group' && elExisting.traverse(function (el) { + removeEl(el, elOption, elMap, graphicModel); + }); + applyLeaveTransition(elExisting, elOption, graphicModel); + elMap.removeKey(inner$e(elExisting).id); + } + } + function updateCommonAttrs(el, elOption, defaultZ, defaultZlevel) { + if (!el.isGroup) { + each([['cursor', Displayable.prototype.cursor], + // We should not support configure z and zlevel in the element level. + // But seems we didn't limit it previously. So here still use it to avoid breaking. + ['zlevel', defaultZlevel || 0], ['z', defaultZ || 0], + // z2 must not be null/undefined, otherwise sort error may occur. + ['z2', 0]], function (item) { + var prop = item[0]; + if (hasOwn(elOption, prop)) { + el[prop] = retrieve2(elOption[prop], item[1]); + } else if (el[prop] == null) { + el[prop] = item[1]; + } + }); + } + each(keys(elOption), function (key) { + // Assign event handlers. + // PENDING: should enumerate all event names or use pattern matching? + if (key.indexOf('on') === 0) { + var val = elOption[key]; + el[key] = isFunction(val) ? val : null; + } + }); + if (hasOwn(elOption, 'draggable')) { + el.draggable = elOption.draggable; + } + // Other attributes + elOption.name != null && (el.name = elOption.name); + elOption.id != null && (el.id = elOption.id); + } + // Remove unnecessary props to avoid potential problems. + function getCleanedElOption(elOption) { + elOption = extend({}, elOption); + each(['id', 'parentId', '$action', 'hv', 'bounding', 'textContent', 'clipPath'].concat(LOCATION_PARAMS), function (name) { + delete elOption[name]; + }); + return elOption; + } + function setEventData(el, graphicModel, elOption) { + var eventData = getECData(el).eventData; + // Simple optimize for large amount of elements that no need event. + if (!el.silent && !el.ignore && !eventData) { + eventData = getECData(el).eventData = { + componentType: 'graphic', + componentIndex: graphicModel.componentIndex, + name: el.name + }; + } + // `elOption.info` enables user to mount some info on + // elements and use them in event handlers. + if (eventData) { + eventData.info = elOption.info; + } + } + + function install$x(registers) { + registers.registerComponentModel(GraphicComponentModel); + registers.registerComponentView(GraphicComponentView); + registers.registerPreprocessor(function (option) { + var graphicOption = option.graphic; + // Convert + // {graphic: [{left: 10, type: 'circle'}, ...]} + // or + // {graphic: {left: 10, type: 'circle'}} + // to + // {graphic: [{elements: [{left: 10, type: 'circle'}, ...]}]} + if (isArray(graphicOption)) { + if (!graphicOption[0] || !graphicOption[0].elements) { + option.graphic = [{ + elements: graphicOption + }]; + } else { + // Only one graphic instance can be instantiated. (We don't + // want that too many views are created in echarts._viewMap.) + option.graphic = [option.graphic[0]]; + } + } else if (graphicOption && !graphicOption.elements) { + option.graphic = [{ + elements: [graphicOption] + }]; + } + }); + } + + var DATA_ZOOM_AXIS_DIMENSIONS = ['x', 'y', 'radius', 'angle', 'single']; + // Supported coords. + // FIXME: polar has been broken (but rarely used). + var SERIES_COORDS = ['cartesian2d', 'polar', 'singleAxis']; + function isCoordSupported(seriesModel) { + var coordType = seriesModel.get('coordinateSystem'); + return indexOf(SERIES_COORDS, coordType) >= 0; + } + function getAxisMainType(axisDim) { + if ("development" !== 'production') { + assert(axisDim); + } + return axisDim + 'Axis'; + } + /** + * If two dataZoomModels has the same axis controlled, we say that they are 'linked'. + * This function finds all linked dataZoomModels start from the given payload. + */ + function findEffectedDataZooms(ecModel, payload) { + // Key: `DataZoomAxisDimension` + var axisRecords = createHashMap(); + var effectedModels = []; + // Key: uid of dataZoomModel + var effectedModelMap = createHashMap(); + // Find the dataZooms specified by payload. + ecModel.eachComponent({ + mainType: 'dataZoom', + query: payload + }, function (dataZoomModel) { + if (!effectedModelMap.get(dataZoomModel.uid)) { + addToEffected(dataZoomModel); + } + }); + // Start from the given dataZoomModels, travel the graph to find + // all of the linked dataZoom models. + var foundNewLink; + do { + foundNewLink = false; + ecModel.eachComponent('dataZoom', processSingle); + } while (foundNewLink); + function processSingle(dataZoomModel) { + if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) { + addToEffected(dataZoomModel); + foundNewLink = true; + } + } + function addToEffected(dataZoom) { + effectedModelMap.set(dataZoom.uid, true); + effectedModels.push(dataZoom); + markAxisControlled(dataZoom); + } + function isLinked(dataZoomModel) { + var isLink = false; + dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) { + var axisIdxArr = axisRecords.get(axisDim); + if (axisIdxArr && axisIdxArr[axisIndex]) { + isLink = true; + } + }); + return isLink; + } + function markAxisControlled(dataZoomModel) { + dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) { + (axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true; + }); + } + return effectedModels; + } + /** + * Find the first target coordinate system. + * Available after model built. + * + * @return Like { + * grid: [ + * {model: coord0, axisModels: [axis1, axis3], coordIndex: 1}, + * {model: coord1, axisModels: [axis0, axis2], coordIndex: 0}, + * ... + * ], // cartesians must not be null/undefined. + * polar: [ + * {model: coord0, axisModels: [axis4], coordIndex: 0}, + * ... + * ], // polars must not be null/undefined. + * singleAxis: [ + * {model: coord0, axisModels: [], coordIndex: 0} + * ] + * } + */ + function collectReferCoordSysModelInfo(dataZoomModel) { + var ecModel = dataZoomModel.ecModel; + var coordSysInfoWrap = { + infoList: [], + infoMap: createHashMap() + }; + dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) { + var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex); + if (!axisModel) { + return; + } + var coordSysModel = axisModel.getCoordSysModel(); + if (!coordSysModel) { + return; + } + var coordSysUid = coordSysModel.uid; + var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid); + if (!coordSysInfo) { + coordSysInfo = { + model: coordSysModel, + axisModels: [] + }; + coordSysInfoWrap.infoList.push(coordSysInfo); + coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo); + } + coordSysInfo.axisModels.push(axisModel); + }); + return coordSysInfoWrap; + } + + var DataZoomAxisInfo = /** @class */function () { + function DataZoomAxisInfo() { + this.indexList = []; + this.indexMap = []; + } + DataZoomAxisInfo.prototype.add = function (axisCmptIdx) { + // Remove duplication. + if (!this.indexMap[axisCmptIdx]) { + this.indexList.push(axisCmptIdx); + this.indexMap[axisCmptIdx] = true; + } + }; + return DataZoomAxisInfo; + }(); + var DataZoomModel = /** @class */function (_super) { + __extends(DataZoomModel, _super); + function DataZoomModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = DataZoomModel.type; + _this._autoThrottle = true; + _this._noTarget = true; + /** + * It is `[rangeModeForMin, rangeModeForMax]`. + * The optional values for `rangeMode`: + * + `'value'` mode: the axis extent will always be determined by + * `dataZoom.startValue` and `dataZoom.endValue`, despite + * how data like and how `axis.min` and `axis.max` are. + * + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`, + * where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`, + * and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`. + * Axis extent will be determined by the result of the percent of `[dMin, dMax]`. + * + * For example, when users are using dynamic data (update data periodically via `setOption`), + * if in `'value`' mode, the window will be kept in a fixed value range despite how + * data are appended, while if in `'percent'` mode, whe window range will be changed alone with + * the appended data (suppose `axis.min` and `axis.max` are not specified). + */ + _this._rangePropMode = ['percent', 'percent']; + return _this; + } + DataZoomModel.prototype.init = function (option, parentModel, ecModel) { + var inputRawOption = retrieveRawOption(option); + /** + * Suppose a "main process" start at the point that model prepared (that is, + * model initialized or merged or method called in `action`). + * We should keep the `main process` idempotent, that is, given a set of values + * on `option`, we get the same result. + * + * But sometimes, values on `option` will be updated for providing users + * a "final calculated value" (`dataZoomProcessor` will do that). Those value + * should not be the base/input of the `main process`. + * + * So in that case we should save and keep the input of the `main process` + * separately, called `settledOption`. + * + * For example, consider the case: + * (Step_1) brush zoom the grid by `toolbox.dataZoom`, + * where the original input `option.startValue`, `option.endValue` are earsed by + * calculated value. + * (Step)2) click the legend to hide and show a series, + * where the new range is calculated by the earsed `startValue` and `endValue`, + * which brings incorrect result. + */ + this.settledOption = inputRawOption; + this.mergeDefaultAndTheme(option, ecModel); + this._doInit(inputRawOption); + }; + DataZoomModel.prototype.mergeOption = function (newOption) { + var inputRawOption = retrieveRawOption(newOption); + // FIX #2591 + merge(this.option, newOption, true); + merge(this.settledOption, inputRawOption, true); + this._doInit(inputRawOption); + }; + DataZoomModel.prototype._doInit = function (inputRawOption) { + var thisOption = this.option; + this._setDefaultThrottle(inputRawOption); + this._updateRangeUse(inputRawOption); + var settledOption = this.settledOption; + each([['start', 'startValue'], ['end', 'endValue']], function (names, index) { + // start/end has higher priority over startValue/endValue if they + // both set, but we should make chart.setOption({endValue: 1000}) + // effective, rather than chart.setOption({endValue: 1000, end: null}). + if (this._rangePropMode[index] === 'value') { + thisOption[names[0]] = settledOption[names[0]] = null; + } + // Otherwise do nothing and use the merge result. + }, this); + this._resetTarget(); + }; + DataZoomModel.prototype._resetTarget = function () { + var optionOrient = this.get('orient', true); + var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap(); + var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap); + if (hasAxisSpecified) { + this._orient = optionOrient || this._makeAutoOrientByTargetAxis(); + } else { + this._orient = optionOrient || 'horizontal'; + this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient); + } + this._noTarget = true; + targetAxisIndexMap.each(function (axisInfo) { + if (axisInfo.indexList.length) { + this._noTarget = false; + } + }, this); + }; + DataZoomModel.prototype._fillSpecifiedTargetAxis = function (targetAxisIndexMap) { + var hasAxisSpecified = false; + each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) { + var refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING); + // When user set axisIndex as a empty array, we think that user specify axisIndex + // but do not want use auto mode. Because empty array may be encountered when + // some error occurred. + if (!refering.specified) { + return; + } + hasAxisSpecified = true; + var axisInfo = new DataZoomAxisInfo(); + each(refering.models, function (axisModel) { + axisInfo.add(axisModel.componentIndex); + }); + targetAxisIndexMap.set(axisDim, axisInfo); + }, this); + return hasAxisSpecified; + }; + DataZoomModel.prototype._fillAutoTargetAxisByOrient = function (targetAxisIndexMap, orient) { + var ecModel = this.ecModel; + var needAuto = true; + // Find axis that parallel to dataZoom as default. + if (needAuto) { + var axisDim = orient === 'vertical' ? 'y' : 'x'; + var axisModels = ecModel.findComponents({ + mainType: axisDim + 'Axis' + }); + setParallelAxis(axisModels, axisDim); + } + // Find axis that parallel to dataZoom as default. + if (needAuto) { + var axisModels = ecModel.findComponents({ + mainType: 'singleAxis', + filter: function (axisModel) { + return axisModel.get('orient', true) === orient; + } + }); + setParallelAxis(axisModels, 'single'); + } + function setParallelAxis(axisModels, axisDim) { + // At least use the first parallel axis as the target axis. + var axisModel = axisModels[0]; + if (!axisModel) { + return; + } + var axisInfo = new DataZoomAxisInfo(); + axisInfo.add(axisModel.componentIndex); + targetAxisIndexMap.set(axisDim, axisInfo); + needAuto = false; + // Find parallel axes in the same grid. + if (axisDim === 'x' || axisDim === 'y') { + var gridModel_1 = axisModel.getReferringComponents('grid', SINGLE_REFERRING).models[0]; + gridModel_1 && each(axisModels, function (axModel) { + if (axisModel.componentIndex !== axModel.componentIndex && gridModel_1 === axModel.getReferringComponents('grid', SINGLE_REFERRING).models[0]) { + axisInfo.add(axModel.componentIndex); + } + }); + } + } + if (needAuto) { + // If no parallel axis, find the first category axis as default. (Also consider polar). + each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) { + if (!needAuto) { + return; + } + var axisModels = ecModel.findComponents({ + mainType: getAxisMainType(axisDim), + filter: function (axisModel) { + return axisModel.get('type', true) === 'category'; + } + }); + if (axisModels[0]) { + var axisInfo = new DataZoomAxisInfo(); + axisInfo.add(axisModels[0].componentIndex); + targetAxisIndexMap.set(axisDim, axisInfo); + needAuto = false; + } + }, this); + } + }; + DataZoomModel.prototype._makeAutoOrientByTargetAxis = function () { + var dim; + // Find the first axis + this.eachTargetAxis(function (axisDim) { + !dim && (dim = axisDim); + }, this); + return dim === 'y' ? 'vertical' : 'horizontal'; + }; + DataZoomModel.prototype._setDefaultThrottle = function (inputRawOption) { + // When first time user set throttle, auto throttle ends. + if (inputRawOption.hasOwnProperty('throttle')) { + this._autoThrottle = false; + } + if (this._autoThrottle) { + var globalOption = this.ecModel.option; + this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20; + } + }; + DataZoomModel.prototype._updateRangeUse = function (inputRawOption) { + var rangePropMode = this._rangePropMode; + var rangeModeInOption = this.get('rangeMode'); + each([['start', 'startValue'], ['end', 'endValue']], function (names, index) { + var percentSpecified = inputRawOption[names[0]] != null; + var valueSpecified = inputRawOption[names[1]] != null; + if (percentSpecified && !valueSpecified) { + rangePropMode[index] = 'percent'; + } else if (!percentSpecified && valueSpecified) { + rangePropMode[index] = 'value'; + } else if (rangeModeInOption) { + rangePropMode[index] = rangeModeInOption[index]; + } else if (percentSpecified) { + // percentSpecified && valueSpecified + rangePropMode[index] = 'percent'; + } + // else remain its original setting. + }); + }; + + DataZoomModel.prototype.noTarget = function () { + return this._noTarget; + }; + DataZoomModel.prototype.getFirstTargetAxisModel = function () { + var firstAxisModel; + this.eachTargetAxis(function (axisDim, axisIndex) { + if (firstAxisModel == null) { + firstAxisModel = this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex); + } + }, this); + return firstAxisModel; + }; + /** + * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel + */ + DataZoomModel.prototype.eachTargetAxis = function (callback, context) { + this._targetAxisInfoMap.each(function (axisInfo, axisDim) { + each(axisInfo.indexList, function (axisIndex) { + callback.call(context, axisDim, axisIndex); + }); + }); + }; + /** + * @return If not found, return null/undefined. + */ + DataZoomModel.prototype.getAxisProxy = function (axisDim, axisIndex) { + var axisModel = this.getAxisModel(axisDim, axisIndex); + if (axisModel) { + return axisModel.__dzAxisProxy; + } + }; + /** + * @return If not found, return null/undefined. + */ + DataZoomModel.prototype.getAxisModel = function (axisDim, axisIndex) { + if ("development" !== 'production') { + assert(axisDim && axisIndex != null); + } + var axisInfo = this._targetAxisInfoMap.get(axisDim); + if (axisInfo && axisInfo.indexMap[axisIndex]) { + return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex); + } + }; + /** + * If not specified, set to undefined. + */ + DataZoomModel.prototype.setRawRange = function (opt) { + var thisOption = this.option; + var settledOption = this.settledOption; + each([['start', 'startValue'], ['end', 'endValue']], function (names) { + // Consider the pair : + // If one has value and the other one is `null/undefined`, we both set them + // to `settledOption`. This strategy enables the feature to clear the original + // value in `settledOption` to `null/undefined`. + // But if both of them are `null/undefined`, we do not set them to `settledOption` + // and keep `settledOption` with the original value. This strategy enables users to + // only set but not set when calling + // `dispatchAction`. + // The pair is treated in the same way. + if (opt[names[0]] != null || opt[names[1]] != null) { + thisOption[names[0]] = settledOption[names[0]] = opt[names[0]]; + thisOption[names[1]] = settledOption[names[1]] = opt[names[1]]; + } + }, this); + this._updateRangeUse(opt); + }; + DataZoomModel.prototype.setCalculatedRange = function (opt) { + var option = this.option; + each(['start', 'startValue', 'end', 'endValue'], function (name) { + option[name] = opt[name]; + }); + }; + DataZoomModel.prototype.getPercentRange = function () { + var axisProxy = this.findRepresentativeAxisProxy(); + if (axisProxy) { + return axisProxy.getDataPercentWindow(); + } + }; + /** + * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0); + * + * @return [startValue, endValue] value can only be '-' or finite number. + */ + DataZoomModel.prototype.getValueRange = function (axisDim, axisIndex) { + if (axisDim == null && axisIndex == null) { + var axisProxy = this.findRepresentativeAxisProxy(); + if (axisProxy) { + return axisProxy.getDataValueWindow(); + } + } else { + return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow(); + } + }; + /** + * @param axisModel If axisModel given, find axisProxy + * corresponding to the axisModel + */ + DataZoomModel.prototype.findRepresentativeAxisProxy = function (axisModel) { + if (axisModel) { + return axisModel.__dzAxisProxy; + } + // Find the first hosted axisProxy + var firstProxy; + var axisDimList = this._targetAxisInfoMap.keys(); + for (var i = 0; i < axisDimList.length; i++) { + var axisDim = axisDimList[i]; + var axisInfo = this._targetAxisInfoMap.get(axisDim); + for (var j = 0; j < axisInfo.indexList.length; j++) { + var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]); + if (proxy.hostedBy(this)) { + return proxy; + } + if (!firstProxy) { + firstProxy = proxy; + } + } + } + // If no hosted proxy found, still need to return a proxy. + // This case always happens in toolbox dataZoom, where axes are all hosted by + // other dataZooms. + return firstProxy; + }; + DataZoomModel.prototype.getRangePropMode = function () { + return this._rangePropMode.slice(); + }; + DataZoomModel.prototype.getOrient = function () { + if ("development" !== 'production') { + // Should not be called before initialized. + assert(this._orient); + } + return this._orient; + }; + DataZoomModel.type = 'dataZoom'; + DataZoomModel.dependencies = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series', 'toolbox']; + DataZoomModel.defaultOption = { + // zlevel: 0, + z: 4, + filterMode: 'filter', + start: 0, + end: 100 + }; + return DataZoomModel; + }(ComponentModel); + /** + * Retrieve those raw params from option, which will be cached separately, + * because they will be overwritten by normalized/calculated values in the main + * process. + */ + function retrieveRawOption(option) { + var ret = {}; + each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) { + option.hasOwnProperty(name) && (ret[name] = option[name]); + }); + return ret; + } + + var SelectDataZoomModel = /** @class */function (_super) { + __extends(SelectDataZoomModel, _super); + function SelectDataZoomModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SelectDataZoomModel.type; + return _this; + } + SelectDataZoomModel.type = 'dataZoom.select'; + return SelectDataZoomModel; + }(DataZoomModel); + + var DataZoomView = /** @class */function (_super) { + __extends(DataZoomView, _super); + function DataZoomView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = DataZoomView.type; + return _this; + } + DataZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) { + this.dataZoomModel = dataZoomModel; + this.ecModel = ecModel; + this.api = api; + }; + DataZoomView.type = 'dataZoom'; + return DataZoomView; + }(ComponentView); + + var SelectDataZoomView = /** @class */function (_super) { + __extends(SelectDataZoomView, _super); + function SelectDataZoomView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SelectDataZoomView.type; + return _this; + } + SelectDataZoomView.type = 'dataZoom.select'; + return SelectDataZoomView; + }(DataZoomView); + + var each$8 = each; + var asc$1 = asc; + /** + * Operate single axis. + * One axis can only operated by one axis operator. + * Different dataZoomModels may be defined to operate the same axis. + * (i.e. 'inside' data zoom and 'slider' data zoom components) + * So dataZoomModels share one axisProxy in that case. + */ + var AxisProxy = /** @class */function () { + function AxisProxy(dimName, axisIndex, dataZoomModel, ecModel) { + this._dimName = dimName; + this._axisIndex = axisIndex; + this.ecModel = ecModel; + this._dataZoomModel = dataZoomModel; + // /** + // * @readOnly + // * @private + // */ + // this.hasSeriesStacked; + } + /** + * Whether the axisProxy is hosted by dataZoomModel. + */ + AxisProxy.prototype.hostedBy = function (dataZoomModel) { + return this._dataZoomModel === dataZoomModel; + }; + /** + * @return Value can only be NaN or finite value. + */ + AxisProxy.prototype.getDataValueWindow = function () { + return this._valueWindow.slice(); + }; + /** + * @return {Array.} + */ + AxisProxy.prototype.getDataPercentWindow = function () { + return this._percentWindow.slice(); + }; + AxisProxy.prototype.getTargetSeriesModels = function () { + var seriesModels = []; + this.ecModel.eachSeries(function (seriesModel) { + if (isCoordSupported(seriesModel)) { + var axisMainType = getAxisMainType(this._dimName); + var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING).models[0]; + if (axisModel && this._axisIndex === axisModel.componentIndex) { + seriesModels.push(seriesModel); + } + } + }, this); + return seriesModels; + }; + AxisProxy.prototype.getAxisModel = function () { + return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex); + }; + AxisProxy.prototype.getMinMaxSpan = function () { + return clone(this._minMaxSpan); + }; + /** + * Only calculate by given range and this._dataExtent, do not change anything. + */ + AxisProxy.prototype.calculateDataWindow = function (opt) { + var dataExtent = this._dataExtent; + var axisModel = this.getAxisModel(); + var scale = axisModel.axis.scale; + var rangePropMode = this._dataZoomModel.getRangePropMode(); + var percentExtent = [0, 100]; + var percentWindow = []; + var valueWindow = []; + var hasPropModeValue; + each$8(['start', 'end'], function (prop, idx) { + var boundPercent = opt[prop]; + var boundValue = opt[prop + 'Value']; + // Notice: dataZoom is based either on `percentProp` ('start', 'end') or + // on `valueProp` ('startValue', 'endValue'). (They are based on the data extent + // but not min/max of axis, which will be calculated by data window then). + // The former one is suitable for cases that a dataZoom component controls multiple + // axes with different unit or extent, and the latter one is suitable for accurate + // zoom by pixel (e.g., in dataZoomSelect). + // we use `getRangePropMode()` to mark which prop is used. `rangePropMode` is updated + // only when setOption or dispatchAction, otherwise it remains its original value. + // (Why not only record `percentProp` and always map to `valueProp`? Because + // the map `valueProp` -> `percentProp` -> `valueProp` probably not the original + // `valueProp`. consider two axes constrolled by one dataZoom. They have different + // data extent. All of values that are overflow the `dataExtent` will be calculated + // to percent '100%'). + if (rangePropMode[idx] === 'percent') { + boundPercent == null && (boundPercent = percentExtent[idx]); + // Use scale.parse to math round for category or time axis. + boundValue = scale.parse(linearMap(boundPercent, percentExtent, dataExtent)); + } else { + hasPropModeValue = true; + boundValue = boundValue == null ? dataExtent[idx] : scale.parse(boundValue); + // Calculating `percent` from `value` may be not accurate, because + // This calculation can not be inversed, because all of values that + // are overflow the `dataExtent` will be calculated to percent '100%' + boundPercent = linearMap(boundValue, dataExtent, percentExtent); + } + // valueWindow[idx] = round(boundValue); + // percentWindow[idx] = round(boundPercent); + // fallback to extent start/end when parsed value or percent is invalid + valueWindow[idx] = boundValue == null || isNaN(boundValue) ? dataExtent[idx] : boundValue; + percentWindow[idx] = boundPercent == null || isNaN(boundPercent) ? percentExtent[idx] : boundPercent; + }); + asc$1(valueWindow); + asc$1(percentWindow); + // The windows from user calling of `dispatchAction` might be out of the extent, + // or do not obey the `min/maxSpan`, `min/maxValueSpan`. But we don't restrict window + // by `zoomLock` here, because we see `zoomLock` just as a interaction constraint, + // where API is able to initialize/modify the window size even though `zoomLock` + // specified. + var spans = this._minMaxSpan; + hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true); + function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) { + var suffix = toValue ? 'Span' : 'ValueSpan'; + sliderMove(0, fromWindow, fromExtent, 'all', spans['min' + suffix], spans['max' + suffix]); + for (var i = 0; i < 2; i++) { + toWindow[i] = linearMap(fromWindow[i], fromExtent, toExtent, true); + toValue && (toWindow[i] = scale.parse(toWindow[i])); + } + } + return { + valueWindow: valueWindow, + percentWindow: percentWindow + }; + }; + /** + * Notice: reset should not be called before series.restoreData() is called, + * so it is recommended to be called in "process stage" but not "model init + * stage". + */ + AxisProxy.prototype.reset = function (dataZoomModel) { + if (dataZoomModel !== this._dataZoomModel) { + return; + } + var targetSeries = this.getTargetSeriesModels(); + // Culculate data window and data extent, and record them. + this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries); + // `calculateDataWindow` uses min/maxSpan. + this._updateMinMaxSpan(); + var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption); + this._valueWindow = dataWindow.valueWindow; + this._percentWindow = dataWindow.percentWindow; + // Update axis setting then. + this._setAxisModel(); + }; + AxisProxy.prototype.filterData = function (dataZoomModel, api) { + if (dataZoomModel !== this._dataZoomModel) { + return; + } + var axisDim = this._dimName; + var seriesModels = this.getTargetSeriesModels(); + var filterMode = dataZoomModel.get('filterMode'); + var valueWindow = this._valueWindow; + if (filterMode === 'none') { + return; + } + // FIXME + // Toolbox may has dataZoom injected. And if there are stacked bar chart + // with NaN data, NaN will be filtered and stack will be wrong. + // So we need to force the mode to be set empty. + // In fect, it is not a big deal that do not support filterMode-'filter' + // when using toolbox#dataZoom, utill tooltip#dataZoom support "single axis + // selection" some day, which might need "adapt to data extent on the + // otherAxis", which is disabled by filterMode-'empty'. + // But currently, stack has been fixed to based on value but not index, + // so this is not an issue any more. + // let otherAxisModel = this.getOtherAxisModel(); + // if (dataZoomModel.get('$fromToolbox') + // && otherAxisModel + // && otherAxisModel.hasSeriesStacked + // ) { + // filterMode = 'empty'; + // } + // TODO + // filterMode 'weakFilter' and 'empty' is not optimized for huge data yet. + each$8(seriesModels, function (seriesModel) { + var seriesData = seriesModel.getData(); + var dataDims = seriesData.mapDimensionsAll(axisDim); + if (!dataDims.length) { + return; + } + if (filterMode === 'weakFilter') { + var store_1 = seriesData.getStore(); + var dataDimIndices_1 = map(dataDims, function (dim) { + return seriesData.getDimensionIndex(dim); + }, seriesData); + seriesData.filterSelf(function (dataIndex) { + var leftOut; + var rightOut; + var hasValue; + for (var i = 0; i < dataDims.length; i++) { + var value = store_1.get(dataDimIndices_1[i], dataIndex); + var thisHasValue = !isNaN(value); + var thisLeftOut = value < valueWindow[0]; + var thisRightOut = value > valueWindow[1]; + if (thisHasValue && !thisLeftOut && !thisRightOut) { + return true; + } + thisHasValue && (hasValue = true); + thisLeftOut && (leftOut = true); + thisRightOut && (rightOut = true); + } + // If both left out and right out, do not filter. + return hasValue && leftOut && rightOut; + }); + } else { + each$8(dataDims, function (dim) { + if (filterMode === 'empty') { + seriesModel.setData(seriesData = seriesData.map(dim, function (value) { + return !isInWindow(value) ? NaN : value; + })); + } else { + var range = {}; + range[dim] = valueWindow; + // console.time('select'); + seriesData.selectRange(range); + // console.timeEnd('select'); + } + }); + } + + each$8(dataDims, function (dim) { + seriesData.setApproximateExtent(valueWindow, dim); + }); + }); + function isInWindow(value) { + return value >= valueWindow[0] && value <= valueWindow[1]; + } + }; + AxisProxy.prototype._updateMinMaxSpan = function () { + var minMaxSpan = this._minMaxSpan = {}; + var dataZoomModel = this._dataZoomModel; + var dataExtent = this._dataExtent; + each$8(['min', 'max'], function (minMax) { + var percentSpan = dataZoomModel.get(minMax + 'Span'); + var valueSpan = dataZoomModel.get(minMax + 'ValueSpan'); + valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan)); + // minValueSpan and maxValueSpan has higher priority than minSpan and maxSpan + if (valueSpan != null) { + percentSpan = linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true); + } else if (percentSpan != null) { + valueSpan = linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0]; + } + minMaxSpan[minMax + 'Span'] = percentSpan; + minMaxSpan[minMax + 'ValueSpan'] = valueSpan; + }, this); + }; + AxisProxy.prototype._setAxisModel = function () { + var axisModel = this.getAxisModel(); + var percentWindow = this._percentWindow; + var valueWindow = this._valueWindow; + if (!percentWindow) { + return; + } + // [0, 500]: arbitrary value, guess axis extent. + var precision = getPixelPrecision(valueWindow, [0, 500]); + precision = Math.min(precision, 20); + // For value axis, if min/max/scale are not set, we just use the extent obtained + // by series data, which may be a little different from the extent calculated by + // `axisHelper.getScaleExtent`. But the different just affects the experience a + // little when zooming. So it will not be fixed until some users require it strongly. + var rawExtentInfo = axisModel.axis.scale.rawExtentInfo; + if (percentWindow[0] !== 0) { + rawExtentInfo.setDeterminedMinMax('min', +valueWindow[0].toFixed(precision)); + } + if (percentWindow[1] !== 100) { + rawExtentInfo.setDeterminedMinMax('max', +valueWindow[1].toFixed(precision)); + } + rawExtentInfo.freeze(); + }; + return AxisProxy; + }(); + function calculateDataExtent(axisProxy, axisDim, seriesModels) { + var dataExtent = [Infinity, -Infinity]; + each$8(seriesModels, function (seriesModel) { + unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim); + }); + // It is important to get "consistent" extent when more then one axes is + // controlled by a `dataZoom`, otherwise those axes will not be synchronized + // when zooming. But it is difficult to know what is "consistent", considering + // axes have different type or even different meanings (For example, two + // time axes are used to compare data of the same date in different years). + // So basically dataZoom just obtains extent by series.data (in category axis + // extent can be obtained from axis.data). + // Nevertheless, user can set min/max/scale on axes to make extent of axes + // consistent. + var axisModel = axisProxy.getAxisModel(); + var rawExtentResult = ensureScaleRawExtentInfo(axisModel.axis.scale, axisModel, dataExtent).calculate(); + return [rawExtentResult.min, rawExtentResult.max]; + } + + var dataZoomProcessor = { + // `dataZoomProcessor` will only be performed in needed series. Consider if + // there is a line series and a pie series, it is better not to update the + // line series if only pie series is needed to be updated. + getTargetSeries: function (ecModel) { + function eachAxisModel(cb) { + ecModel.eachComponent('dataZoom', function (dataZoomModel) { + dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) { + var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex); + cb(axisDim, axisIndex, axisModel, dataZoomModel); + }); + }); + } + // FIXME: it brings side-effect to `getTargetSeries`. + // Prepare axis proxies. + eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) { + // dispose all last axis proxy, in case that some axis are deleted. + axisModel.__dzAxisProxy = null; + }); + var proxyList = []; + eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) { + // Different dataZooms may constrol the same axis. In that case, + // an axisProxy serves both of them. + if (!axisModel.__dzAxisProxy) { + // Use the first dataZoomModel as the main model of axisProxy. + axisModel.__dzAxisProxy = new AxisProxy(axisDim, axisIndex, dataZoomModel, ecModel); + proxyList.push(axisModel.__dzAxisProxy); + } + }); + var seriesModelMap = createHashMap(); + each(proxyList, function (axisProxy) { + each(axisProxy.getTargetSeriesModels(), function (seriesModel) { + seriesModelMap.set(seriesModel.uid, seriesModel); + }); + }); + return seriesModelMap; + }, + // Consider appendData, where filter should be performed. Because data process is + // in block mode currently, it is not need to worry about that the overallProgress + // execute every frame. + overallReset: function (ecModel, api) { + ecModel.eachComponent('dataZoom', function (dataZoomModel) { + // We calculate window and reset axis here but not in model + // init stage and not after action dispatch handler, because + // reset should be called after seriesData.restoreData. + dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) { + dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel); + }); + // Caution: data zoom filtering is order sensitive when using + // percent range and no min/max/scale set on axis. + // For example, we have dataZoom definition: + // [ + // {xAxisIndex: 0, start: 30, end: 70}, + // {yAxisIndex: 0, start: 20, end: 80} + // ] + // In this case, [20, 80] of y-dataZoom should be based on data + // that have filtered by x-dataZoom using range of [30, 70], + // but should not be based on full raw data. Thus sliding + // x-dataZoom will change both ranges of xAxis and yAxis, + // while sliding y-dataZoom will only change the range of yAxis. + // So we should filter x-axis after reset x-axis immediately, + // and then reset y-axis and filter y-axis. + dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) { + dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api); + }); + }); + ecModel.eachComponent('dataZoom', function (dataZoomModel) { + // Fullfill all of the range props so that user + // is able to get them from chart.getOption(). + var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); + if (axisProxy) { + var percentRange = axisProxy.getDataPercentWindow(); + var valueRange = axisProxy.getDataValueWindow(); + dataZoomModel.setCalculatedRange({ + start: percentRange[0], + end: percentRange[1], + startValue: valueRange[0], + endValue: valueRange[1] + }); + } + }); + } + }; + + function installDataZoomAction(registers) { + registers.registerAction('dataZoom', function (payload, ecModel) { + var effectedModels = findEffectedDataZooms(ecModel, payload); + each(effectedModels, function (dataZoomModel) { + dataZoomModel.setRawRange({ + start: payload.start, + end: payload.end, + startValue: payload.startValue, + endValue: payload.endValue + }); + }); + }); + } + + var installed = false; + function installCommon(registers) { + if (installed) { + return; + } + installed = true; + registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, dataZoomProcessor); + installDataZoomAction(registers); + registers.registerSubTypeDefaulter('dataZoom', function () { + // Default 'slider' when no type specified. + return 'slider'; + }); + } + + function install$y(registers) { + registers.registerComponentModel(SelectDataZoomModel); + registers.registerComponentView(SelectDataZoomView); + installCommon(registers); + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + var ToolboxFeature = /** @class */function () { + function ToolboxFeature() {} + return ToolboxFeature; + }(); + var features = {}; + function registerFeature(name, ctor) { + features[name] = ctor; + } + function getFeature(name) { + return features[name]; + } + + var ToolboxModel = /** @class */function (_super) { + __extends(ToolboxModel, _super); + function ToolboxModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ToolboxModel.type; + return _this; + } + ToolboxModel.prototype.optionUpdated = function () { + _super.prototype.optionUpdated.apply(this, arguments); + var ecModel = this.ecModel; + each(this.option.feature, function (featureOpt, featureName) { + var Feature = getFeature(featureName); + if (Feature) { + if (Feature.getDefaultOption) { + Feature.defaultOption = Feature.getDefaultOption(ecModel); + } + merge(featureOpt, Feature.defaultOption); + } + }); + }; + ToolboxModel.type = 'toolbox'; + ToolboxModel.layoutMode = { + type: 'box', + ignoreSize: true + }; + ToolboxModel.defaultOption = { + show: true, + z: 6, + // zlevel: 0, + orient: 'horizontal', + left: 'right', + top: 'top', + // right + // bottom + backgroundColor: 'transparent', + borderColor: '#ccc', + borderRadius: 0, + borderWidth: 0, + padding: 5, + itemSize: 15, + itemGap: 8, + showTitle: true, + iconStyle: { + borderColor: '#666', + color: 'none' + }, + emphasis: { + iconStyle: { + borderColor: '#3E98C5' + } + }, + // textStyle: {}, + // feature + tooltip: { + show: false, + position: 'bottom' + } + }; + return ToolboxModel; + }(ComponentModel); + + /** + * Layout list like component. + * It will box layout each items in group of component and then position the whole group in the viewport + * @param {module:zrender/group/Group} group + * @param {module:echarts/model/Component} componentModel + * @param {module:echarts/ExtensionAPI} + */ + function layout$3(group, componentModel, api) { + var boxLayoutParams = componentModel.getBoxLayoutParams(); + var padding = componentModel.get('padding'); + var viewportSize = { + width: api.getWidth(), + height: api.getHeight() + }; + var rect = getLayoutRect(boxLayoutParams, viewportSize, padding); + box(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height); + positionElement(group, boxLayoutParams, viewportSize, padding); + } + function makeBackground(rect, componentModel) { + var padding = normalizeCssArray$1(componentModel.get('padding')); + var style = componentModel.getItemStyle(['color', 'opacity']); + style.fill = componentModel.get('backgroundColor'); + rect = new Rect({ + shape: { + x: rect.x - padding[3], + y: rect.y - padding[0], + width: rect.width + padding[1] + padding[3], + height: rect.height + padding[0] + padding[2], + r: componentModel.get('borderRadius') + }, + style: style, + silent: true, + z2: -1 + }); + // FIXME + // `subPixelOptimizeRect` may bring some gap between edge of viewpart + // and background rect when setting like `left: 0`, `top: 0`. + // graphic.subPixelOptimizeRect(rect); + return rect; + } + + var ToolboxView = /** @class */function (_super) { + __extends(ToolboxView, _super); + function ToolboxView() { + return _super !== null && _super.apply(this, arguments) || this; + } + ToolboxView.prototype.render = function (toolboxModel, ecModel, api, payload) { + var group = this.group; + group.removeAll(); + if (!toolboxModel.get('show')) { + return; + } + var itemSize = +toolboxModel.get('itemSize'); + var isVertical = toolboxModel.get('orient') === 'vertical'; + var featureOpts = toolboxModel.get('feature') || {}; + var features = this._features || (this._features = {}); + var featureNames = []; + each(featureOpts, function (opt, name) { + featureNames.push(name); + }); + new DataDiffer(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(curry(processFeature, null)).execute(); + // Keep for diff. + this._featureNames = featureNames; + function processFeature(newIndex, oldIndex) { + var featureName = featureNames[newIndex]; + var oldName = featureNames[oldIndex]; + var featureOpt = featureOpts[featureName]; + var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel); + var feature; + // FIX#11236, merge feature title from MagicType newOption. TODO: consider seriesIndex ? + if (payload && payload.newTitle != null && payload.featureName === featureName) { + featureOpt.title = payload.newTitle; + } + if (featureName && !oldName) { + // Create + if (isUserFeatureName(featureName)) { + feature = { + onclick: featureModel.option.onclick, + featureName: featureName + }; + } else { + var Feature = getFeature(featureName); + if (!Feature) { + return; + } + feature = new Feature(); + } + features[featureName] = feature; + } else { + feature = features[oldName]; + // If feature does not exist. + if (!feature) { + return; + } + } + feature.uid = getUID('toolbox-feature'); + feature.model = featureModel; + feature.ecModel = ecModel; + feature.api = api; + var isToolboxFeature = feature instanceof ToolboxFeature; + if (!featureName && oldName) { + isToolboxFeature && feature.dispose && feature.dispose(ecModel, api); + return; + } + if (!featureModel.get('show') || isToolboxFeature && feature.unusable) { + isToolboxFeature && feature.remove && feature.remove(ecModel, api); + return; + } + createIconPaths(featureModel, feature, featureName); + featureModel.setIconStatus = function (iconName, status) { + var option = this.option; + var iconPaths = this.iconPaths; + option.iconStatus = option.iconStatus || {}; + option.iconStatus[iconName] = status; + if (iconPaths[iconName]) { + (status === 'emphasis' ? enterEmphasis : leaveEmphasis)(iconPaths[iconName]); + } + }; + if (feature instanceof ToolboxFeature) { + if (feature.render) { + feature.render(featureModel, ecModel, api, payload); + } + } + } + function createIconPaths(featureModel, feature, featureName) { + var iconStyleModel = featureModel.getModel('iconStyle'); + var iconStyleEmphasisModel = featureModel.getModel(['emphasis', 'iconStyle']); + // If one feature has multiple icons, they are organized as + // { + // icon: { + // foo: '', + // bar: '' + // }, + // title: { + // foo: '', + // bar: '' + // } + // } + var icons = feature instanceof ToolboxFeature && feature.getIcons ? feature.getIcons() : featureModel.get('icon'); + var titles = featureModel.get('title') || {}; + var iconsMap; + var titlesMap; + if (isString(icons)) { + iconsMap = {}; + iconsMap[featureName] = icons; + } else { + iconsMap = icons; + } + if (isString(titles)) { + titlesMap = {}; + titlesMap[featureName] = titles; + } else { + titlesMap = titles; + } + var iconPaths = featureModel.iconPaths = {}; + each(iconsMap, function (iconStr, iconName) { + var path = createIcon(iconStr, {}, { + x: -itemSize / 2, + y: -itemSize / 2, + width: itemSize, + height: itemSize + }); // TODO handling image + path.setStyle(iconStyleModel.getItemStyle()); + var pathEmphasisState = path.ensureState('emphasis'); + pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle(); + // Text position calculation + // TODO: extract `textStyle` from `iconStyle` and use `createTextStyle` + var textContent = new ZRText({ + style: { + text: titlesMap[iconName], + align: iconStyleEmphasisModel.get('textAlign'), + borderRadius: iconStyleEmphasisModel.get('textBorderRadius'), + padding: iconStyleEmphasisModel.get('textPadding'), + fill: null, + font: getFont({ + fontStyle: iconStyleEmphasisModel.get('textFontStyle'), + fontFamily: iconStyleEmphasisModel.get('textFontFamily'), + fontSize: iconStyleEmphasisModel.get('textFontSize'), + fontWeight: iconStyleEmphasisModel.get('textFontWeight') + }, ecModel) + }, + ignore: true + }); + path.setTextContent(textContent); + setTooltipConfig({ + el: path, + componentModel: toolboxModel, + itemName: iconName, + formatterParamsExtra: { + title: titlesMap[iconName] + } + }); + path.__title = titlesMap[iconName]; + path.on('mouseover', function () { + // Should not reuse above hoverStyle, which might be modified. + var hoverStyle = iconStyleEmphasisModel.getItemStyle(); + var defaultTextPosition = isVertical ? toolboxModel.get('right') == null && toolboxModel.get('left') !== 'right' ? 'right' : 'left' : toolboxModel.get('bottom') == null && toolboxModel.get('top') !== 'bottom' ? 'bottom' : 'top'; + textContent.setStyle({ + fill: iconStyleEmphasisModel.get('textFill') || hoverStyle.fill || hoverStyle.stroke || '#000', + backgroundColor: iconStyleEmphasisModel.get('textBackgroundColor') + }); + path.setTextConfig({ + position: iconStyleEmphasisModel.get('textPosition') || defaultTextPosition + }); + textContent.ignore = !toolboxModel.get('showTitle'); + // Use enterEmphasis and leaveEmphasis provide by ec. + // There are flags managed by the echarts. + api.enterEmphasis(this); + }).on('mouseout', function () { + if (featureModel.get(['iconStatus', iconName]) !== 'emphasis') { + api.leaveEmphasis(this); + } + textContent.hide(); + }); + (featureModel.get(['iconStatus', iconName]) === 'emphasis' ? enterEmphasis : leaveEmphasis)(path); + group.add(path); + path.on('click', bind(feature.onclick, feature, ecModel, api, iconName)); + iconPaths[iconName] = path; + }); + } + layout$3(group, toolboxModel, api); + // Render background after group is layout + // FIXME + group.add(makeBackground(group.getBoundingRect(), toolboxModel)); + // Adjust icon title positions to avoid them out of screen + isVertical || group.eachChild(function (icon) { + var titleText = icon.__title; + // const hoverStyle = icon.hoverStyle; + // TODO simplify code? + var emphasisState = icon.ensureState('emphasis'); + var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {}); + var textContent = icon.getTextContent(); + var emphasisTextState = textContent && textContent.ensureState('emphasis'); + // May be background element + if (emphasisTextState && !isFunction(emphasisTextState) && titleText) { + var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {}); + var rect = getBoundingRect(titleText, ZRText.makeFont(emphasisTextStyle)); + var offsetX = icon.x + group.x; + var offsetY = icon.y + group.y + itemSize; + var needPutOnTop = false; + if (offsetY + rect.height > api.getHeight()) { + emphasisTextConfig.position = 'top'; + needPutOnTop = true; + } + var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 10; + if (offsetX + rect.width / 2 > api.getWidth()) { + emphasisTextConfig.position = ['100%', topOffset]; + emphasisTextStyle.align = 'right'; + } else if (offsetX - rect.width / 2 < 0) { + emphasisTextConfig.position = [0, topOffset]; + emphasisTextStyle.align = 'left'; + } + } + }); + }; + ToolboxView.prototype.updateView = function (toolboxModel, ecModel, api, payload) { + each(this._features, function (feature) { + feature instanceof ToolboxFeature && feature.updateView && feature.updateView(feature.model, ecModel, api, payload); + }); + }; + // updateLayout(toolboxModel, ecModel, api, payload) { + // zrUtil.each(this._features, function (feature) { + // feature.updateLayout && feature.updateLayout(feature.model, ecModel, api, payload); + // }); + // }, + ToolboxView.prototype.remove = function (ecModel, api) { + each(this._features, function (feature) { + feature instanceof ToolboxFeature && feature.remove && feature.remove(ecModel, api); + }); + this.group.removeAll(); + }; + ToolboxView.prototype.dispose = function (ecModel, api) { + each(this._features, function (feature) { + feature instanceof ToolboxFeature && feature.dispose && feature.dispose(ecModel, api); + }); + }; + ToolboxView.type = 'toolbox'; + return ToolboxView; + }(ComponentView); + function isUserFeatureName(featureName) { + return featureName.indexOf('my') === 0; + } + + /* global window, document */ + var SaveAsImage = /** @class */function (_super) { + __extends(SaveAsImage, _super); + function SaveAsImage() { + return _super !== null && _super.apply(this, arguments) || this; + } + SaveAsImage.prototype.onclick = function (ecModel, api) { + var model = this.model; + var title = model.get('name') || ecModel.get('title.0.text') || 'echarts'; + var isSvg = api.getZr().painter.getType() === 'svg'; + var type = isSvg ? 'svg' : model.get('type', true) || 'png'; + var url = api.getConnectedDataURL({ + type: type, + backgroundColor: model.get('backgroundColor', true) || ecModel.get('backgroundColor') || '#fff', + connectedBackgroundColor: model.get('connectedBackgroundColor'), + excludeComponents: model.get('excludeComponents'), + pixelRatio: model.get('pixelRatio') + }); + var browser = env.browser; + // Chrome, Firefox, New Edge + if (isFunction(MouseEvent) && (browser.newEdge || !browser.ie && !browser.edge)) { + var $a = document.createElement('a'); + $a.download = title + '.' + type; + $a.target = '_blank'; + $a.href = url; + var evt = new MouseEvent('click', { + // some micro front-end framework, window maybe is a Proxy + view: document.defaultView, + bubbles: true, + cancelable: false + }); + $a.dispatchEvent(evt); + } + // IE or old Edge + else { + // @ts-ignore + if (window.navigator.msSaveOrOpenBlob || isSvg) { + var parts = url.split(','); + // data:[][;charset=][;base64], + var base64Encoded = parts[0].indexOf('base64') > -1; + var bstr = isSvg + // should decode the svg data uri first + ? decodeURIComponent(parts[1]) : parts[1]; + // only `atob` when the data uri is encoded with base64 + // otherwise, like `svg` data uri exported by zrender, + // there will be an error, for it's not encoded with base64. + // (just a url-encoded string through `encodeURIComponent`) + base64Encoded && (bstr = window.atob(bstr)); + var filename = title + '.' + type; + // @ts-ignore + if (window.navigator.msSaveOrOpenBlob) { + var n = bstr.length; + var u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + var blob = new Blob([u8arr]); // @ts-ignore + window.navigator.msSaveOrOpenBlob(blob, filename); + } else { + var frame = document.createElement('iframe'); + document.body.appendChild(frame); + var cw = frame.contentWindow; + var doc = cw.document; + doc.open('image/svg+xml', 'replace'); + doc.write(bstr); + doc.close(); + cw.focus(); + doc.execCommand('SaveAs', true, filename); + document.body.removeChild(frame); + } + } else { + var lang = model.get('lang'); + var html = '' + '' + '' + ''; + var tab = window.open(); + tab.document.write(html); + tab.document.title = title; + } + } + }; + SaveAsImage.getDefaultOption = function (ecModel) { + var defaultOption = { + show: true, + 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: ecModel.getLocaleModel().get(['toolbox', 'saveAsImage', 'title']), + type: 'png', + // Default use option.backgroundColor + // backgroundColor: '#fff', + connectedBackgroundColor: '#fff', + name: '', + excludeComponents: ['toolbox'], + // use current pixel ratio of device by default + // pixelRatio: 1, + lang: ecModel.getLocaleModel().get(['toolbox', 'saveAsImage', 'lang']) + }; + return defaultOption; + }; + return SaveAsImage; + }(ToolboxFeature); + + var INNER_STACK_KEYWORD = '__ec_magicType_stack__'; + var radioTypes = [['line', 'bar'], ['stack']]; + var MagicType = /** @class */function (_super) { + __extends(MagicType, _super); + function MagicType() { + return _super !== null && _super.apply(this, arguments) || this; + } + MagicType.prototype.getIcons = function () { + var model = this.model; + var availableIcons = model.get('icon'); + var icons = {}; + each(model.get('type'), function (type) { + if (availableIcons[type]) { + icons[type] = availableIcons[type]; + } + }); + return icons; + }; + MagicType.getDefaultOption = function (ecModel) { + var defaultOption = { + show: true, + type: [], + // Icon group + 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', + // eslint-disable-next-line + 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' // jshint ignore:line + }, + + // `line`, `bar`, `stack`, `tiled` + title: ecModel.getLocaleModel().get(['toolbox', 'magicType', 'title']), + option: {}, + seriesIndex: {} + }; + return defaultOption; + }; + MagicType.prototype.onclick = function (ecModel, api, type) { + var model = this.model; + var seriesIndex = model.get(['seriesIndex', type]); + // Not supported magicType + if (!seriesOptGenreator[type]) { + return; + } + var newOption = { + series: [] + }; + var generateNewSeriesTypes = function (seriesModel) { + var seriesType = seriesModel.subType; + var seriesId = seriesModel.id; + var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model); + if (newSeriesOpt) { + // PENDING If merge original option? + defaults(newSeriesOpt, seriesModel.option); + newOption.series.push(newSeriesOpt); + } + // Modify boundaryGap + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) { + var categoryAxis = coordSys.getAxesByScale('ordinal')[0]; + if (categoryAxis) { + var axisDim = categoryAxis.dim; + var axisType = axisDim + 'Axis'; + var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0]; + var axisIndex = axisModel.componentIndex; + newOption[axisType] = newOption[axisType] || []; + for (var i = 0; i <= axisIndex; i++) { + newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {}; + } + newOption[axisType][axisIndex].boundaryGap = type === 'bar'; + } + } + }; + each(radioTypes, function (radio) { + if (indexOf(radio, type) >= 0) { + each(radio, function (item) { + model.setIconStatus(item, 'normal'); + }); + } + }); + model.setIconStatus(type, 'emphasis'); + ecModel.eachComponent({ + mainType: 'series', + query: seriesIndex == null ? null : { + seriesIndex: seriesIndex + } + }, generateNewSeriesTypes); + var newTitle; + var currentType = type; + // Change title of stack + if (type === 'stack') { + // use titles in model instead of ecModel + // as stack and tiled appears in pair, just flip them + // no need of checking stack state + newTitle = merge({ + stack: model.option.title.tiled, + tiled: model.option.title.stack + }, model.option.title); + if (model.get(['iconStatus', type]) !== 'emphasis') { + currentType = 'tiled'; + } + } + api.dispatchAction({ + type: 'changeMagicType', + currentType: currentType, + newOption: newOption, + newTitle: newTitle, + featureName: 'magicType' + }); + }; + return MagicType; + }(ToolboxFeature); + var seriesOptGenreator = { + 'line': function (seriesType, seriesId, seriesModel, model) { + if (seriesType === 'bar') { + return merge({ + id: seriesId, + type: 'line', + // Preserve data related option + data: seriesModel.get('data'), + stack: seriesModel.get('stack'), + markPoint: seriesModel.get('markPoint'), + markLine: seriesModel.get('markLine') + }, model.get(['option', 'line']) || {}, true); + } + }, + 'bar': function (seriesType, seriesId, seriesModel, model) { + if (seriesType === 'line') { + return merge({ + id: seriesId, + type: 'bar', + // Preserve data related option + data: seriesModel.get('data'), + stack: seriesModel.get('stack'), + markPoint: seriesModel.get('markPoint'), + markLine: seriesModel.get('markLine') + }, model.get(['option', 'bar']) || {}, true); + } + }, + 'stack': function (seriesType, seriesId, seriesModel, model) { + var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD; + if (seriesType === 'line' || seriesType === 'bar') { + model.setIconStatus('stack', isStack ? 'normal' : 'emphasis'); + return merge({ + id: seriesId, + stack: isStack ? '' : INNER_STACK_KEYWORD + }, model.get(['option', 'stack']) || {}, true); + } + } + }; + // TODO: SELF REGISTERED. + registerAction({ + type: 'changeMagicType', + event: 'magicTypeChanged', + update: 'prepareAndUpdate' + }, function (payload, ecModel) { + ecModel.mergeOption(payload.newOption); + }); + + /* global document */ + var BLOCK_SPLITER = new Array(60).join('-'); + var ITEM_SPLITER = '\t'; + /** + * Group series into two types + * 1. on category axis, like line, bar + * 2. others, like scatter, pie + */ + function groupSeries(ecModel) { + var seriesGroupByCategoryAxis = {}; + var otherSeries = []; + var meta = []; + ecModel.eachRawSeries(function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) { + // TODO: TYPE Consider polar? Include polar may increase unecessary bundle size. + var baseAxis = coordSys.getBaseAxis(); + if (baseAxis.type === 'category') { + var key = baseAxis.dim + '_' + baseAxis.index; + if (!seriesGroupByCategoryAxis[key]) { + seriesGroupByCategoryAxis[key] = { + categoryAxis: baseAxis, + valueAxis: coordSys.getOtherAxis(baseAxis), + series: [] + }; + meta.push({ + axisDim: baseAxis.dim, + axisIndex: baseAxis.index + }); + } + seriesGroupByCategoryAxis[key].series.push(seriesModel); + } else { + otherSeries.push(seriesModel); + } + } else { + otherSeries.push(seriesModel); + } + }); + return { + seriesGroupByCategoryAxis: seriesGroupByCategoryAxis, + other: otherSeries, + meta: meta + }; + } + /** + * Assemble content of series on cateogory axis + * @inner + */ + function assembleSeriesWithCategoryAxis(groups) { + var tables = []; + each(groups, function (group, key) { + var categoryAxis = group.categoryAxis; + var valueAxis = group.valueAxis; + var valueAxisDim = valueAxis.dim; + var headers = [' '].concat(map(group.series, function (series) { + return series.name; + })); + // @ts-ignore TODO Polar + var columns = [categoryAxis.model.getCategories()]; + each(group.series, function (series) { + var rawData = series.getRawData(); + columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function (val) { + return val; + })); + }); + // Assemble table content + var lines = [headers.join(ITEM_SPLITER)]; + for (var i = 0; i < columns[0].length; i++) { + var items = []; + for (var j = 0; j < columns.length; j++) { + items.push(columns[j][i]); + } + lines.push(items.join(ITEM_SPLITER)); + } + tables.push(lines.join('\n')); + }); + return tables.join('\n\n' + BLOCK_SPLITER + '\n\n'); + } + /** + * Assemble content of other series + */ + function assembleOtherSeries(series) { + return map(series, function (series) { + var data = series.getRawData(); + var lines = [series.name]; + var vals = []; + data.each(data.dimensions, function () { + var argLen = arguments.length; + var dataIndex = arguments[argLen - 1]; + var name = data.getName(dataIndex); + for (var i = 0; i < argLen - 1; i++) { + vals[i] = arguments[i]; + } + lines.push((name ? name + ITEM_SPLITER : '') + vals.join(ITEM_SPLITER)); + }); + return lines.join('\n'); + }).join('\n\n' + BLOCK_SPLITER + '\n\n'); + } + function getContentFromModel(ecModel) { + var result = groupSeries(ecModel); + return { + value: filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function (str) { + return !!str.replace(/[\n\t\s]/g, ''); + }).join('\n\n' + BLOCK_SPLITER + '\n\n'), + meta: result.meta + }; + } + function trim$1(str) { + return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + } + /** + * If a block is tsv format + */ + function isTSVFormat(block) { + // Simple method to find out if a block is tsv format + var firstLine = block.slice(0, block.indexOf('\n')); + if (firstLine.indexOf(ITEM_SPLITER) >= 0) { + return true; + } + } + var itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g'); + /** + * @param {string} tsv + * @return {Object} + */ + function parseTSVContents(tsv) { + var tsvLines = tsv.split(/\n+/g); + var headers = trim$1(tsvLines.shift()).split(itemSplitRegex); + var categories = []; + var series = map(headers, function (header) { + return { + name: header, + data: [] + }; + }); + for (var i = 0; i < tsvLines.length; i++) { + var items = trim$1(tsvLines[i]).split(itemSplitRegex); + categories.push(items.shift()); + for (var j = 0; j < items.length; j++) { + series[j] && (series[j].data[i] = items[j]); + } + } + return { + series: series, + categories: categories + }; + } + function parseListContents(str) { + var lines = str.split(/\n+/g); + var seriesName = trim$1(lines.shift()); + var data = []; + for (var i = 0; i < lines.length; i++) { + // if line is empty, ignore it. + // there is a case that a user forgot to delete `\n`. + var line = trim$1(lines[i]); + if (!line) { + continue; + } + var items = line.split(itemSplitRegex); + var name_1 = ''; + var value = void 0; + var hasName = false; + if (isNaN(items[0])) { + // First item is name + hasName = true; + name_1 = items[0]; + items = items.slice(1); + data[i] = { + name: name_1, + value: [] + }; + value = data[i].value; + } else { + value = data[i] = []; + } + for (var j = 0; j < items.length; j++) { + value.push(+items[j]); + } + if (value.length === 1) { + hasName ? data[i].value = value[0] : data[i] = value[0]; + } + } + return { + name: seriesName, + data: data + }; + } + function parseContents(str, blockMetaList) { + var blocks = str.split(new RegExp('\n*' + BLOCK_SPLITER + '\n*', 'g')); + var newOption = { + series: [] + }; + each(blocks, function (block, idx) { + if (isTSVFormat(block)) { + var result = parseTSVContents(block); + var blockMeta = blockMetaList[idx]; + var axisKey = blockMeta.axisDim + 'Axis'; + if (blockMeta) { + newOption[axisKey] = newOption[axisKey] || []; + newOption[axisKey][blockMeta.axisIndex] = { + data: result.categories + }; + newOption.series = newOption.series.concat(result.series); + } + } else { + var result = parseListContents(block); + newOption.series.push(result); + } + }); + return newOption; + } + var DataView = /** @class */function (_super) { + __extends(DataView, _super); + function DataView() { + return _super !== null && _super.apply(this, arguments) || this; + } + DataView.prototype.onclick = function (ecModel, api) { + // FIXME: better way? + setTimeout(function () { + api.dispatchAction({ + type: 'hideTip' + }); + }); + var container = api.getDom(); + var model = this.model; + if (this._dom) { + container.removeChild(this._dom); + } + var root = document.createElement('div'); + // use padding to avoid 5px whitespace + root.style.cssText = 'position:absolute;top:0;bottom:0;left:0;right:0;padding:5px'; + root.style.backgroundColor = model.get('backgroundColor') || '#fff'; + // Create elements + var header = document.createElement('h4'); + var lang = model.get('lang') || []; + header.innerHTML = lang[0] || model.get('title'); + header.style.cssText = 'margin:10px 20px'; + header.style.color = model.get('textColor'); + var viewMain = document.createElement('div'); + var textarea = document.createElement('textarea'); + viewMain.style.cssText = 'overflow:auto'; + var optionToContent = model.get('optionToContent'); + var contentToOption = model.get('contentToOption'); + var result = getContentFromModel(ecModel); + if (isFunction(optionToContent)) { + var htmlOrDom = optionToContent(api.getOption()); + if (isString(htmlOrDom)) { + viewMain.innerHTML = htmlOrDom; + } else if (isDom(htmlOrDom)) { + viewMain.appendChild(htmlOrDom); + } + } else { + // Use default textarea + textarea.readOnly = model.get('readOnly'); + var style = textarea.style; + // eslint-disable-next-line max-len + style.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'; + style.color = model.get('textColor'); + style.borderColor = model.get('textareaBorderColor'); + style.backgroundColor = model.get('textareaColor'); + textarea.value = result.value; + viewMain.appendChild(textarea); + } + var blockMetaList = result.meta; + var buttonContainer = document.createElement('div'); + buttonContainer.style.cssText = 'position:absolute;bottom:5px;left:0;right:0'; + // eslint-disable-next-line max-len + var buttonStyle = 'float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px'; + var closeButton = document.createElement('div'); + var refreshButton = document.createElement('div'); + buttonStyle += ';background-color:' + model.get('buttonColor'); + buttonStyle += ';color:' + model.get('buttonTextColor'); + var self = this; + function close() { + container.removeChild(root); + self._dom = null; + } + addEventListener(closeButton, 'click', close); + addEventListener(refreshButton, 'click', function () { + if (contentToOption == null && optionToContent != null || contentToOption != null && optionToContent == null) { + if ("development" !== 'production') { + // eslint-disable-next-line + warn('It seems you have just provided one of `contentToOption` and `optionToContent` functions but missed the other one. Data change is ignored.'); + } + close(); + return; + } + var newOption; + try { + if (isFunction(contentToOption)) { + newOption = contentToOption(viewMain, api.getOption()); + } else { + newOption = parseContents(textarea.value, blockMetaList); + } + } catch (e) { + close(); + throw new Error('Data view format error ' + e); + } + if (newOption) { + api.dispatchAction({ + type: 'changeDataView', + newOption: newOption + }); + } + close(); + }); + closeButton.innerHTML = lang[1]; + refreshButton.innerHTML = lang[2]; + refreshButton.style.cssText = closeButton.style.cssText = buttonStyle; + !model.get('readOnly') && buttonContainer.appendChild(refreshButton); + buttonContainer.appendChild(closeButton); + root.appendChild(header); + root.appendChild(viewMain); + root.appendChild(buttonContainer); + viewMain.style.height = container.clientHeight - 80 + 'px'; + container.appendChild(root); + this._dom = root; + }; + DataView.prototype.remove = function (ecModel, api) { + this._dom && api.getDom().removeChild(this._dom); + }; + DataView.prototype.dispose = function (ecModel, api) { + this.remove(ecModel, api); + }; + DataView.getDefaultOption = function (ecModel) { + var defaultOption = { + show: true, + readOnly: false, + optionToContent: null, + contentToOption: null, + // eslint-disable-next-line + 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: ecModel.getLocaleModel().get(['toolbox', 'dataView', 'title']), + lang: ecModel.getLocaleModel().get(['toolbox', 'dataView', 'lang']), + backgroundColor: '#fff', + textColor: '#000', + textareaColor: '#fff', + textareaBorderColor: '#333', + buttonColor: '#c23531', + buttonTextColor: '#fff' + }; + return defaultOption; + }; + return DataView; + }(ToolboxFeature); + /** + * @inner + */ + function tryMergeDataOption(newData, originalData) { + return map(newData, function (newVal, idx) { + var original = originalData && originalData[idx]; + if (isObject(original) && !isArray(original)) { + var newValIsObject = isObject(newVal) && !isArray(newVal); + if (!newValIsObject) { + newVal = { + value: newVal + }; + } + // original data has name but new data has no name + var shouldDeleteName = original.name != null && newVal.name == null; + // Original data has option + newVal = defaults(newVal, original); + shouldDeleteName && delete newVal.name; + return newVal; + } else { + return newVal; + } + }); + } + // TODO: SELF REGISTERED. + registerAction({ + type: 'changeDataView', + event: 'dataViewChanged', + update: 'prepareAndUpdate' + }, function (payload, ecModel) { + var newSeriesOptList = []; + each(payload.newOption.series, function (seriesOpt) { + var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0]; + if (!seriesModel) { + // New created series + // Geuss the series type + newSeriesOptList.push(extend({ + // Default is scatter + type: 'scatter' + }, seriesOpt)); + } else { + var originalData = seriesModel.get('data'); + newSeriesOptList.push({ + name: seriesOpt.name, + data: tryMergeDataOption(seriesOpt.data, originalData) + }); + } + }); + ecModel.mergeOption(defaults({ + series: newSeriesOptList + }, payload.newOption)); + }); + + var each$9 = each; + var inner$f = makeInner(); + /** + * @param ecModel + * @param newSnapshot key is dataZoomId + */ + function push(ecModel, newSnapshot) { + var storedSnapshots = getStoreSnapshots(ecModel); + // If previous dataZoom can not be found, + // complete an range with current range. + each$9(newSnapshot, function (batchItem, dataZoomId) { + var i = storedSnapshots.length - 1; + for (; i >= 0; i--) { + var snapshot = storedSnapshots[i]; + if (snapshot[dataZoomId]) { + break; + } + } + if (i < 0) { + // No origin range set, create one by current range. + var dataZoomModel = ecModel.queryComponents({ + mainType: 'dataZoom', + subType: 'select', + id: dataZoomId + })[0]; + if (dataZoomModel) { + var percentRange = dataZoomModel.getPercentRange(); + storedSnapshots[0][dataZoomId] = { + dataZoomId: dataZoomId, + start: percentRange[0], + end: percentRange[1] + }; + } + } + }); + storedSnapshots.push(newSnapshot); + } + function pop(ecModel) { + var storedSnapshots = getStoreSnapshots(ecModel); + var head = storedSnapshots[storedSnapshots.length - 1]; + storedSnapshots.length > 1 && storedSnapshots.pop(); + // Find top for all dataZoom. + var snapshot = {}; + each$9(head, function (batchItem, dataZoomId) { + for (var i = storedSnapshots.length - 1; i >= 0; i--) { + batchItem = storedSnapshots[i][dataZoomId]; + if (batchItem) { + snapshot[dataZoomId] = batchItem; + break; + } + } + }); + return snapshot; + } + function clear$1(ecModel) { + inner$f(ecModel).snapshots = null; + } + function count(ecModel) { + return getStoreSnapshots(ecModel).length; + } + /** + * History length of each dataZoom may be different. + * this._history[0] is used to store origin range. + */ + function getStoreSnapshots(ecModel) { + var store = inner$f(ecModel); + if (!store.snapshots) { + store.snapshots = [{}]; + } + return store.snapshots; + } + + var RestoreOption = /** @class */function (_super) { + __extends(RestoreOption, _super); + function RestoreOption() { + return _super !== null && _super.apply(this, arguments) || this; + } + RestoreOption.prototype.onclick = function (ecModel, api) { + clear$1(ecModel); + api.dispatchAction({ + type: 'restore', + from: this.uid + }); + }; + RestoreOption.getDefaultOption = function (ecModel) { + var defaultOption = { + show: true, + // eslint-disable-next-line + 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: ecModel.getLocaleModel().get(['toolbox', 'restore', 'title']) + }; + return defaultOption; + }; + return RestoreOption; + }(ToolboxFeature); + // TODO: SELF REGISTERED. + registerAction({ + type: 'restore', + event: 'restore', + update: 'prepareAndUpdate' + }, function (payload, ecModel) { + ecModel.resetOption('recreate'); + }); + + // FIXME + // how to genarialize to more coordinate systems. + var INCLUDE_FINDER_MAIN_TYPES = ['grid', 'xAxis', 'yAxis', 'geo', 'graph', 'polar', 'radiusAxis', 'angleAxis', 'bmap']; + var BrushTargetManager = /** @class */function () { + /** + * @param finder contains Index/Id/Name of xAxis/yAxis/geo/grid + * Each can be {number|Array.}. like: {xAxisIndex: [3, 4]} + * @param opt.include include coordinate system types. + */ + function BrushTargetManager(finder, ecModel, opt) { + var _this = this; + this._targetInfoList = []; + var foundCpts = parseFinder$1(ecModel, finder); + each(targetInfoBuilders, function (builder, type) { + if (!opt || !opt.include || indexOf(opt.include, type) >= 0) { + builder(foundCpts, _this._targetInfoList); + } + }); + } + BrushTargetManager.prototype.setOutputRanges = function (areas, ecModel) { + this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) { + (area.coordRanges || (area.coordRanges = [])).push(coordRange); + // area.coordRange is the first of area.coordRanges + if (!area.coordRange) { + area.coordRange = coordRange; + // In 'category' axis, coord to pixel is not reversible, so we can not + // rebuild range by coordRange accrately, which may bring trouble when + // brushing only one item. So we use __rangeOffset to rebuilding range + // by coordRange. And this it only used in brush component so it is no + // need to be adapted to coordRanges. + var result = coordConvert[area.brushType](0, coordSys, coordRange); + area.__rangeOffset = { + offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]), + xyMinMax: result.xyMinMax + }; + } + }); + return areas; + }; + BrushTargetManager.prototype.matchOutputRanges = function (areas, ecModel, cb) { + each(areas, function (area) { + var targetInfo = this.findTargetInfo(area, ecModel); + if (targetInfo && targetInfo !== true) { + each(targetInfo.coordSyses, function (coordSys) { + var result = coordConvert[area.brushType](1, coordSys, area.range, true); + cb(area, result.values, coordSys, ecModel); + }); + } + }, this); + }; + /** + * the `areas` is `BrushModel.areas`. + * Called in layout stage. + * convert `area.coordRange` to global range and set panelId to `area.range`. + */ + BrushTargetManager.prototype.setInputRanges = function (areas, ecModel) { + each(areas, function (area) { + var targetInfo = this.findTargetInfo(area, ecModel); + if ("development" !== 'production') { + assert(!targetInfo || targetInfo === true || area.coordRange, 'coordRange must be specified when coord index specified.'); + assert(!targetInfo || targetInfo !== true || area.range, 'range must be specified in global brush.'); + } + area.range = area.range || []; + // convert coordRange to global range and set panelId. + if (targetInfo && targetInfo !== true) { + area.panelId = targetInfo.panelId; + // (1) area.range should always be calculate from coordRange but does + // not keep its original value, for the sake of the dataZoom scenario, + // where area.coordRange remains unchanged but area.range may be changed. + // (2) Only support converting one coordRange to pixel range in brush + // component. So do not consider `coordRanges`. + // (3) About __rangeOffset, see comment above. + var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange); + var rangeOffset = area.__rangeOffset; + area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values; + } + }, this); + }; + BrushTargetManager.prototype.makePanelOpts = function (api, getDefaultBrushType) { + return map(this._targetInfoList, function (targetInfo) { + var rect = targetInfo.getPanelRect(); + return { + panelId: targetInfo.panelId, + defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null, + clipPath: makeRectPanelClipPath(rect), + isTargetByCursor: makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel), + getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect) + }; + }); + }; + BrushTargetManager.prototype.controlSeries = function (area, seriesModel, ecModel) { + // Check whether area is bound in coord, and series do not belong to that coord. + // If do not do this check, some brush (like lineX) will controll all axes. + var targetInfo = this.findTargetInfo(area, ecModel); + return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0; + }; + /** + * If return Object, a coord found. + * If return true, global found. + * Otherwise nothing found. + */ + BrushTargetManager.prototype.findTargetInfo = function (area, ecModel) { + var targetInfoList = this._targetInfoList; + var foundCpts = parseFinder$1(ecModel, area); + for (var i = 0; i < targetInfoList.length; i++) { + var targetInfo = targetInfoList[i]; + var areaPanelId = area.panelId; + if (areaPanelId) { + if (targetInfo.panelId === areaPanelId) { + return targetInfo; + } + } else { + for (var j = 0; j < targetInfoMatchers.length; j++) { + if (targetInfoMatchers[j](foundCpts, targetInfo)) { + return targetInfo; + } + } + } + } + return true; + }; + return BrushTargetManager; + }(); + function formatMinMax(minMax) { + minMax[0] > minMax[1] && minMax.reverse(); + return minMax; + } + function parseFinder$1(ecModel, finder) { + return parseFinder(ecModel, finder, { + includeMainTypes: INCLUDE_FINDER_MAIN_TYPES + }); + } + var targetInfoBuilders = { + grid: function (foundCpts, targetInfoList) { + var xAxisModels = foundCpts.xAxisModels; + var yAxisModels = foundCpts.yAxisModels; + var gridModels = foundCpts.gridModels; + // Remove duplicated. + var gridModelMap = createHashMap(); + var xAxesHas = {}; + var yAxesHas = {}; + if (!xAxisModels && !yAxisModels && !gridModels) { + return; + } + each(xAxisModels, function (axisModel) { + var gridModel = axisModel.axis.grid.model; + gridModelMap.set(gridModel.id, gridModel); + xAxesHas[gridModel.id] = true; + }); + each(yAxisModels, function (axisModel) { + var gridModel = axisModel.axis.grid.model; + gridModelMap.set(gridModel.id, gridModel); + yAxesHas[gridModel.id] = true; + }); + each(gridModels, function (gridModel) { + gridModelMap.set(gridModel.id, gridModel); + xAxesHas[gridModel.id] = true; + yAxesHas[gridModel.id] = true; + }); + gridModelMap.each(function (gridModel) { + var grid = gridModel.coordinateSystem; + var cartesians = []; + each(grid.getCartesians(), function (cartesian, index) { + if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0 || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) { + cartesians.push(cartesian); + } + }); + targetInfoList.push({ + panelId: 'grid--' + gridModel.id, + gridModel: gridModel, + coordSysModel: gridModel, + // Use the first one as the representitive coordSys. + coordSys: cartesians[0], + coordSyses: cartesians, + getPanelRect: panelRectBuilders.grid, + xAxisDeclared: xAxesHas[gridModel.id], + yAxisDeclared: yAxesHas[gridModel.id] + }); + }); + }, + geo: function (foundCpts, targetInfoList) { + each(foundCpts.geoModels, function (geoModel) { + var coordSys = geoModel.coordinateSystem; + targetInfoList.push({ + panelId: 'geo--' + geoModel.id, + geoModel: geoModel, + coordSysModel: geoModel, + coordSys: coordSys, + coordSyses: [coordSys], + getPanelRect: panelRectBuilders.geo + }); + }); + } + }; + var targetInfoMatchers = [ + // grid + function (foundCpts, targetInfo) { + var xAxisModel = foundCpts.xAxisModel; + var yAxisModel = foundCpts.yAxisModel; + var gridModel = foundCpts.gridModel; + !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model); + !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model); + return gridModel && gridModel === targetInfo.gridModel; + }, + // geo + function (foundCpts, targetInfo) { + var geoModel = foundCpts.geoModel; + return geoModel && geoModel === targetInfo.geoModel; + }]; + var panelRectBuilders = { + grid: function () { + // grid is not Transformable. + return this.coordSys.master.getRect().clone(); + }, + geo: function () { + var coordSys = this.coordSys; + var rect = coordSys.getBoundingRect().clone(); + // geo roam and zoom transform + rect.applyTransform(getTransform(coordSys)); + return rect; + } + }; + var coordConvert = { + lineX: curry(axisConvert, 0), + lineY: curry(axisConvert, 1), + rect: function (to, coordSys, rangeOrCoordRange, clamp) { + var xminymin = to ? coordSys.pointToData([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp) : coordSys.dataToPoint([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp); + var xmaxymax = to ? coordSys.pointToData([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp) : coordSys.dataToPoint([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp); + var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])]; + return { + values: values, + xyMinMax: values + }; + }, + polygon: function (to, coordSys, rangeOrCoordRange, clamp) { + var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]]; + var values = map(rangeOrCoordRange, function (item) { + var p = to ? coordSys.pointToData(item, clamp) : coordSys.dataToPoint(item, clamp); + xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]); + xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]); + xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]); + xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]); + return p; + }); + return { + values: values, + xyMinMax: xyMinMax + }; + } + }; + function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) { + if ("development" !== 'production') { + assert(coordSys.type === 'cartesian2d', 'lineX/lineY brush is available only in cartesian2d.'); + } + var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]); + var values = formatMinMax(map([0, 1], function (i) { + return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]), true) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i])); + })); + var xyMinMax = []; + xyMinMax[axisNameIndex] = values; + xyMinMax[1 - axisNameIndex] = [NaN, NaN]; + return { + values: values, + xyMinMax: xyMinMax + }; + } + var diffProcessor = { + lineX: curry(axisDiffProcessor, 0), + lineY: curry(axisDiffProcessor, 1), + rect: function (values, refer, scales) { + return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]]; + }, + polygon: function (values, refer, scales) { + return map(values, function (item, idx) { + return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]]; + }); + } + }; + function axisDiffProcessor(axisNameIndex, values, refer, scales) { + return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]]; + } + // We have to process scale caused by dataZoom manually, + // although it might be not accurate. + // Return [0~1, 0~1] + function getScales(xyMinMaxCurr, xyMinMaxOrigin) { + var sizeCurr = getSize$1(xyMinMaxCurr); + var sizeOrigin = getSize$1(xyMinMaxOrigin); + var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]]; + isNaN(scales[0]) && (scales[0] = 1); + isNaN(scales[1]) && (scales[1] = 1); + return scales; + } + function getSize$1(xyMinMax) { + return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN]; + } + + var each$a = each; + var DATA_ZOOM_ID_BASE = makeInternalComponentId('toolbox-dataZoom_'); + var DataZoomFeature = /** @class */function (_super) { + __extends(DataZoomFeature, _super); + function DataZoomFeature() { + return _super !== null && _super.apply(this, arguments) || this; + } + DataZoomFeature.prototype.render = function (featureModel, ecModel, api, payload) { + if (!this._brushController) { + this._brushController = new BrushController(api.getZr()); + this._brushController.on('brush', bind(this._onBrush, this)).mount(); + } + updateZoomBtnStatus(featureModel, ecModel, this, payload, api); + updateBackBtnStatus(featureModel, ecModel); + }; + DataZoomFeature.prototype.onclick = function (ecModel, api, type) { + handlers$1[type].call(this); + }; + DataZoomFeature.prototype.remove = function (ecModel, api) { + this._brushController && this._brushController.unmount(); + }; + DataZoomFeature.prototype.dispose = function (ecModel, api) { + this._brushController && this._brushController.dispose(); + }; + DataZoomFeature.prototype._onBrush = function (eventParam) { + var areas = eventParam.areas; + if (!eventParam.isEnd || !areas.length) { + return; + } + var snapshot = {}; + var ecModel = this.ecModel; + this._brushController.updateCovers([]); // remove cover + var brushTargetManager = new BrushTargetManager(makeAxisFinder(this.model), ecModel, { + include: ['grid'] + }); + brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) { + if (coordSys.type !== 'cartesian2d') { + return; + } + var brushType = area.brushType; + if (brushType === 'rect') { + setBatch('x', coordSys, coordRange[0]); + setBatch('y', coordSys, coordRange[1]); + } else { + setBatch({ + lineX: 'x', + lineY: 'y' + }[brushType], coordSys, coordRange); + } + }); + push(ecModel, snapshot); + this._dispatchZoomAction(snapshot); + function setBatch(dimName, coordSys, minMax) { + var axis = coordSys.getAxis(dimName); + var axisModel = axis.model; + var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); + // Restrict range. + var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan(); + if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) { + minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan); + } + dataZoomModel && (snapshot[dataZoomModel.id] = { + dataZoomId: dataZoomModel.id, + startValue: minMax[0], + endValue: minMax[1] + }); + } + function findDataZoom(dimName, axisModel, ecModel) { + var found; + ecModel.eachComponent({ + mainType: 'dataZoom', + subType: 'select' + }, function (dzModel) { + var has = dzModel.getAxisModel(dimName, axisModel.componentIndex); + has && (found = dzModel); + }); + return found; + } + }; + DataZoomFeature.prototype._dispatchZoomAction = function (snapshot) { + var batch = []; + // Convert from hash map to array. + each$a(snapshot, function (batchItem, dataZoomId) { + batch.push(clone(batchItem)); + }); + batch.length && this.api.dispatchAction({ + type: 'dataZoom', + from: this.uid, + batch: batch + }); + }; + DataZoomFeature.getDefaultOption = function (ecModel) { + var defaultOption = { + show: true, + filterMode: 'filter', + // Icon group + 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' + }, + // `zoom`, `back` + title: ecModel.getLocaleModel().get(['toolbox', 'dataZoom', 'title']), + brushStyle: { + borderWidth: 0, + color: 'rgba(210,219,238,0.2)' + } + }; + return defaultOption; + }; + return DataZoomFeature; + }(ToolboxFeature); + var handlers$1 = { + zoom: function () { + var nextActive = !this._isZoomActive; + this.api.dispatchAction({ + type: 'takeGlobalCursor', + key: 'dataZoomSelect', + dataZoomSelectActive: nextActive + }); + }, + back: function () { + this._dispatchZoomAction(pop(this.ecModel)); + } + }; + function makeAxisFinder(dzFeatureModel) { + var setting = { + xAxisIndex: dzFeatureModel.get('xAxisIndex', true), + yAxisIndex: dzFeatureModel.get('yAxisIndex', true), + xAxisId: dzFeatureModel.get('xAxisId', true), + yAxisId: dzFeatureModel.get('yAxisId', true) + }; + // If both `xAxisIndex` `xAxisId` not set, it means 'all'. + // If both `yAxisIndex` `yAxisId` not set, it means 'all'. + // Some old cases set like this below to close yAxis control but leave xAxis control: + // `{ feature: { dataZoom: { yAxisIndex: false } }`. + if (setting.xAxisIndex == null && setting.xAxisId == null) { + setting.xAxisIndex = 'all'; + } + if (setting.yAxisIndex == null && setting.yAxisId == null) { + setting.yAxisIndex = 'all'; + } + return setting; + } + function updateBackBtnStatus(featureModel, ecModel) { + featureModel.setIconStatus('back', count(ecModel) > 1 ? 'emphasis' : 'normal'); + } + function updateZoomBtnStatus(featureModel, ecModel, view, payload, api) { + var zoomActive = view._isZoomActive; + if (payload && payload.type === 'takeGlobalCursor') { + zoomActive = payload.key === 'dataZoomSelect' ? payload.dataZoomSelectActive : false; + } + view._isZoomActive = zoomActive; + featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal'); + var brushTargetManager = new BrushTargetManager(makeAxisFinder(featureModel), ecModel, { + include: ['grid'] + }); + var panels = brushTargetManager.makePanelOpts(api, function (targetInfo) { + return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? 'lineX' : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? 'lineY' : 'rect'; + }); + view._brushController.setPanels(panels).enableBrush(zoomActive && panels.length ? { + brushType: 'auto', + brushStyle: featureModel.getModel('brushStyle').getItemStyle() + } : false); + } + registerInternalOptionCreator('dataZoom', function (ecModel) { + var toolboxModel = ecModel.getComponent('toolbox', 0); + var featureDataZoomPath = ['feature', 'dataZoom']; + if (!toolboxModel || toolboxModel.get(featureDataZoomPath) == null) { + return; + } + var dzFeatureModel = toolboxModel.getModel(featureDataZoomPath); + var dzOptions = []; + var finder = makeAxisFinder(dzFeatureModel); + var finderResult = parseFinder(ecModel, finder); + each$a(finderResult.xAxisModels, function (axisModel) { + return buildInternalOptions(axisModel, 'xAxis', 'xAxisIndex'); + }); + each$a(finderResult.yAxisModels, function (axisModel) { + return buildInternalOptions(axisModel, 'yAxis', 'yAxisIndex'); + }); + function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) { + var axisIndex = axisModel.componentIndex; + var newOpt = { + type: 'select', + $fromToolbox: true, + // Default to be filter + filterMode: dzFeatureModel.get('filterMode', true) || 'filter', + // Id for merge mapping. + id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex + }; + newOpt[axisIndexPropName] = axisIndex; + dzOptions.push(newOpt); + } + return dzOptions; + }); + + function install$z(registers) { + registers.registerComponentModel(ToolboxModel); + registers.registerComponentView(ToolboxView); + registerFeature('saveAsImage', SaveAsImage); + registerFeature('magicType', MagicType); + registerFeature('dataView', DataView); + registerFeature('dataZoom', DataZoomFeature); + registerFeature('restore', RestoreOption); + use(install$y); + } + + var TooltipModel = /** @class */function (_super) { + __extends(TooltipModel, _super); + function TooltipModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = TooltipModel.type; + return _this; + } + TooltipModel.type = 'tooltip'; + TooltipModel.dependencies = ['axisPointer']; + TooltipModel.defaultOption = { + // zlevel: 0, + z: 60, + show: true, + // tooltip main content + showContent: true, + // 'trigger' only works on coordinate system. + // 'item' | 'axis' | 'none' + trigger: 'item', + // 'click' | 'mousemove' | 'none' + triggerOn: 'mousemove|click', + alwaysShowContent: false, + displayMode: 'single', + renderMode: 'auto', + // whether restraint content inside viewRect. + // If renderMode: 'richText', default true. + // If renderMode: 'html', defaut false (for backward compat). + confine: null, + showDelay: 0, + hideDelay: 100, + // Animation transition time, unit is second + transitionDuration: 0.4, + enterable: false, + backgroundColor: '#fff', + // box shadow + shadowBlur: 10, + shadowColor: 'rgba(0, 0, 0, .2)', + shadowOffsetX: 1, + shadowOffsetY: 2, + // tooltip border radius, unit is px, default is 4 + borderRadius: 4, + // tooltip border width, unit is px, default is 0 (no border) + borderWidth: 1, + // Tooltip inside padding, default is 5 for all direction + // Array is allowed to set up, right, bottom, left, same with css + // The default value: See `tooltip/tooltipMarkup.ts#getPaddingFromTooltipModel`. + padding: null, + // Extra css text + extraCssText: '', + // axis indicator, trigger by axis + axisPointer: { + // default is line + // legal values: 'line' | 'shadow' | 'cross' + type: 'line', + // Valid when type is line, appoint tooltip line locate on which line. Optional + // legal values: 'x' | 'y' | 'angle' | 'radius' | 'auto' + // default is 'auto', chose the axis which type is category. + // for multiply y axis, cartesian coord chose x axis, polar chose angle axis + axis: 'auto', + animation: 'auto', + animationDurationUpdate: 200, + animationEasingUpdate: 'exponentialOut', + crossStyle: { + color: '#999', + width: 1, + type: 'dashed', + // TODO formatter + textStyle: {} + } + // lineStyle and shadowStyle should not be specified here, + // otherwise it will always override those styles on option.axisPointer. + }, + + textStyle: { + color: '#666', + fontSize: 14 + } + }; + return TooltipModel; + }(ComponentModel); + + /* global document */ + function shouldTooltipConfine(tooltipModel) { + var confineOption = tooltipModel.get('confine'); + return confineOption != null ? !!confineOption + // In richText mode, the outside part can not be visible. + : tooltipModel.get('renderMode') === 'richText'; + } + function testStyle(styleProps) { + if (!env.domSupported) { + return; + } + var style = document.documentElement.style; + for (var i = 0, len = styleProps.length; i < len; i++) { + if (styleProps[i] in style) { + return styleProps[i]; + } + } + } + var TRANSFORM_VENDOR = testStyle(['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']); + var TRANSITION_VENDOR = testStyle(['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']); + function toCSSVendorPrefix(styleVendor, styleProp) { + if (!styleVendor) { + return styleProp; + } + styleProp = toCamelCase(styleProp, true); + var idx = styleVendor.indexOf(styleProp); + styleVendor = idx === -1 ? styleProp : "-" + styleVendor.slice(0, idx) + "-" + styleProp; + return styleVendor.toLowerCase(); + } + function getComputedStyle(el, style) { + var stl = el.currentStyle || document.defaultView && document.defaultView.getComputedStyle(el); + return stl ? style ? stl[style] : stl : null; + } + + /* global document, window */ + var CSS_TRANSITION_VENDOR = toCSSVendorPrefix(TRANSITION_VENDOR, 'transition'); + var CSS_TRANSFORM_VENDOR = toCSSVendorPrefix(TRANSFORM_VENDOR, 'transform'); + // eslint-disable-next-line + var gCssText = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (env.transform3dSupported ? 'will-change:transform;' : ''); + function mirrorPos(pos) { + pos = pos === 'left' ? 'right' : pos === 'right' ? 'left' : pos === 'top' ? 'bottom' : 'top'; + return pos; + } + function assembleArrow(tooltipModel, borderColor, arrowPosition) { + if (!isString(arrowPosition) || arrowPosition === 'inside') { + return ''; + } + var backgroundColor = tooltipModel.get('backgroundColor'); + var borderWidth = tooltipModel.get('borderWidth'); + borderColor = convertToColorString(borderColor); + var arrowPos = mirrorPos(arrowPosition); + var arrowSize = Math.max(Math.round(borderWidth) * 1.5, 6); + var positionStyle = ''; + var transformStyle = CSS_TRANSFORM_VENDOR + ':'; + var rotateDeg; + if (indexOf(['left', 'right'], arrowPos) > -1) { + positionStyle += 'top:50%'; + transformStyle += "translateY(-50%) rotate(" + (rotateDeg = arrowPos === 'left' ? -225 : -45) + "deg)"; + } else { + positionStyle += 'left:50%'; + transformStyle += "translateX(-50%) rotate(" + (rotateDeg = arrowPos === 'top' ? 225 : 45) + "deg)"; + } + var rotateRadian = rotateDeg * Math.PI / 180; + var arrowWH = arrowSize + borderWidth; + var rotatedWH = arrowWH * Math.abs(Math.cos(rotateRadian)) + arrowWH * Math.abs(Math.sin(rotateRadian)); + var arrowOffset = Math.round(((rotatedWH - Math.SQRT2 * borderWidth) / 2 + Math.SQRT2 * borderWidth - (rotatedWH - arrowWH) / 2) * 100) / 100; + positionStyle += ";" + arrowPos + ":-" + arrowOffset + "px"; + var borderStyle = borderColor + " solid " + borderWidth + "px;"; + var styleCss = ["position:absolute;width:" + arrowSize + "px;height:" + arrowSize + "px;z-index:-1;", positionStyle + ";" + transformStyle + ";", "border-bottom:" + borderStyle, "border-right:" + borderStyle, "background-color:" + backgroundColor + ";"]; + return "
      "; + } + function assembleTransition(duration, onlyFade) { + var transitionCurve = 'cubic-bezier(0.23,1,0.32,1)'; + var transitionOption = " " + duration / 2 + "s " + transitionCurve; + var transitionText = "opacity" + transitionOption + ",visibility" + transitionOption; + if (!onlyFade) { + transitionOption = " " + duration + "s " + transitionCurve; + transitionText += env.transformSupported ? "," + CSS_TRANSFORM_VENDOR + transitionOption : ",left" + transitionOption + ",top" + transitionOption; + } + return CSS_TRANSITION_VENDOR + ':' + transitionText; + } + function assembleTransform(x, y, toString) { + // If using float on style, the final width of the dom might + // keep changing slightly while mouse move. So `toFixed(0)` them. + var x0 = x.toFixed(0) + 'px'; + var y0 = y.toFixed(0) + 'px'; + // not support transform, use `left` and `top` instead. + if (!env.transformSupported) { + return toString ? "top:" + y0 + ";left:" + x0 + ";" : [['top', y0], ['left', x0]]; + } + // support transform + var is3d = env.transform3dSupported; + var translate = "translate" + (is3d ? '3d' : '') + "(" + x0 + "," + y0 + (is3d ? ',0' : '') + ")"; + return toString ? 'top:0;left:0;' + CSS_TRANSFORM_VENDOR + ':' + translate + ';' : [['top', 0], ['left', 0], [TRANSFORM_VENDOR, translate]]; + } + /** + * @param {Object} textStyle + * @return {string} + * @inner + */ + function assembleFont(textStyleModel) { + var cssText = []; + var fontSize = textStyleModel.get('fontSize'); + var color = textStyleModel.getTextColor(); + color && cssText.push('color:' + color); + cssText.push('font:' + textStyleModel.getFont()); + fontSize + // @ts-ignore, leave it to the tooltip refactor. + && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px'); + var shadowColor = textStyleModel.get('textShadowColor'); + var shadowBlur = textStyleModel.get('textShadowBlur') || 0; + var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0; + var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0; + shadowColor && shadowBlur && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px ' + shadowBlur + 'px ' + shadowColor); + each(['decoration', 'align'], function (name) { + var val = textStyleModel.get(name); + val && cssText.push('text-' + name + ':' + val); + }); + return cssText.join(';'); + } + function assembleCssText(tooltipModel, enableTransition, onlyFade) { + var cssText = []; + var transitionDuration = tooltipModel.get('transitionDuration'); + var backgroundColor = tooltipModel.get('backgroundColor'); + var shadowBlur = tooltipModel.get('shadowBlur'); + var shadowColor = tooltipModel.get('shadowColor'); + var shadowOffsetX = tooltipModel.get('shadowOffsetX'); + var shadowOffsetY = tooltipModel.get('shadowOffsetY'); + var textStyleModel = tooltipModel.getModel('textStyle'); + var padding = getPaddingFromTooltipModel(tooltipModel, 'html'); + var boxShadow = shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor; + cssText.push('box-shadow:' + boxShadow); + // Animation transition. Do not animate when transitionDuration is 0. + enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade)); + if (backgroundColor) { + cssText.push('background-color:' + backgroundColor); + } + // Border style + each(['width', 'color', 'radius'], function (name) { + var borderName = 'border-' + name; + var camelCase = toCamelCase(borderName); + var val = tooltipModel.get(camelCase); + val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px')); + }); + // Text style + cssText.push(assembleFont(textStyleModel)); + // Padding + if (padding != null) { + cssText.push('padding:' + normalizeCssArray$1(padding).join('px ') + 'px'); + } + return cssText.join(';') + ';'; + } + // If not able to make, do not modify the input `out`. + function makeStyleCoord(out, zr, container, zrX, zrY) { + var zrPainter = zr && zr.painter; + if (container) { + var zrViewportRoot = zrPainter && zrPainter.getViewportRoot(); + if (zrViewportRoot) { + // Some APPs might use scale on body, so we support CSS transform here. + transformLocalCoord(out, zrViewportRoot, container, zrX, zrY); + } + } else { + out[0] = zrX; + out[1] = zrY; + // xy should be based on canvas root. But tooltipContent is + // the sibling of canvas root. So padding of ec container + // should be considered here. + var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset(); + if (viewportRootOffset) { + out[0] += viewportRootOffset.offsetLeft; + out[1] += viewportRootOffset.offsetTop; + } + } + out[2] = out[0] / zr.getWidth(); + out[3] = out[1] / zr.getHeight(); + } + var TooltipHTMLContent = /** @class */function () { + function TooltipHTMLContent(api, opt) { + this._show = false; + this._styleCoord = [0, 0, 0, 0]; + this._enterable = true; + this._alwaysShowContent = false; + this._firstShow = true; + this._longHide = true; + if (env.wxa) { + return null; + } + var el = document.createElement('div'); + // TODO: TYPE + el.domBelongToZr = true; + this.el = el; + var zr = this._zr = api.getZr(); + var appendTo = opt.appendTo; + var container = appendTo && (isString(appendTo) ? document.querySelector(appendTo) : isDom(appendTo) ? appendTo : isFunction(appendTo) && appendTo(api.getDom())); + makeStyleCoord(this._styleCoord, zr, container, api.getWidth() / 2, api.getHeight() / 2); + (container || api.getDom()).appendChild(el); + this._api = api; + this._container = container; + // FIXME + // Is it needed to trigger zr event manually if + // the browser do not support `pointer-events: none`. + var self = this; + el.onmouseenter = function () { + // clear the timeout in hideLater and keep showing tooltip + if (self._enterable) { + clearTimeout(self._hideTimeout); + self._show = true; + } + self._inContent = true; + }; + el.onmousemove = function (e) { + e = e || window.event; + if (!self._enterable) { + // `pointer-events: none` is set to tooltip content div + // if `enterable` is set as `false`, and `el.onmousemove` + // can not be triggered. But in browser that do not + // support `pointer-events`, we need to do this: + // Try trigger zrender event to avoid mouse + // in and out shape too frequently + var handler = zr.handler; + var zrViewportRoot = zr.painter.getViewportRoot(); + normalizeEvent(zrViewportRoot, e, true); + handler.dispatch('mousemove', e); + } + }; + el.onmouseleave = function () { + // set `_inContent` to `false` before `hideLater` + self._inContent = false; + if (self._enterable) { + if (self._show) { + self.hideLater(self._hideDelay); + } + } + }; + } + /** + * Update when tooltip is rendered + */ + TooltipHTMLContent.prototype.update = function (tooltipModel) { + // FIXME + // Move this logic to ec main? + if (!this._container) { + var container = this._api.getDom(); + var position = getComputedStyle(container, 'position'); + var domStyle = container.style; + if (domStyle.position !== 'absolute' && position !== 'absolute') { + domStyle.position = 'relative'; + } + } + // move tooltip if chart resized + var alwaysShowContent = tooltipModel.get('alwaysShowContent'); + alwaysShowContent && this._moveIfResized(); + // update alwaysShowContent + this._alwaysShowContent = alwaysShowContent; + // update className + this.el.className = tooltipModel.get('className') || ''; + // Hide the tooltip + // PENDING + // this.hide(); + }; + + TooltipHTMLContent.prototype.show = function (tooltipModel, nearPointColor) { + clearTimeout(this._hideTimeout); + clearTimeout(this._longHideTimeout); + var el = this.el; + var style = el.style; + var styleCoord = this._styleCoord; + if (!el.innerHTML) { + style.display = 'none'; + } else { + style.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide) + // initial transform + + assembleTransform(styleCoord[0], styleCoord[1], true) + ("border-color:" + convertToColorString(nearPointColor) + ";") + (tooltipModel.get('extraCssText') || '') + // If mouse occasionally move over the tooltip, a mouseout event will be + // triggered by canvas, and cause some unexpectable result like dragging + // stop, "unfocusAdjacency". Here `pointer-events: none` is used to solve + // it. Although it is not supported by IE8~IE10, fortunately it is a rare + // scenario. + + (";pointer-events:" + (this._enterable ? 'auto' : 'none')); + } + this._show = true; + this._firstShow = false; + this._longHide = false; + }; + TooltipHTMLContent.prototype.setContent = function (content, markers, tooltipModel, borderColor, arrowPosition) { + var el = this.el; + if (content == null) { + el.innerHTML = ''; + return; + } + var arrow = ''; + if (isString(arrowPosition) && tooltipModel.get('trigger') === 'item' && !shouldTooltipConfine(tooltipModel)) { + arrow = assembleArrow(tooltipModel, borderColor, arrowPosition); + } + if (isString(content)) { + el.innerHTML = content + arrow; + } else if (content) { + // Clear previous + el.innerHTML = ''; + if (!isArray(content)) { + content = [content]; + } + for (var i = 0; i < content.length; i++) { + if (isDom(content[i]) && content[i].parentNode !== el) { + el.appendChild(content[i]); + } + } + // no arrow if empty + if (arrow && el.childNodes.length) { + // no need to create a new parent element, but it's not supported by IE 10 and older. + // const arrowEl = document.createRange().createContextualFragment(arrow); + var arrowEl = document.createElement('div'); + arrowEl.innerHTML = arrow; + el.appendChild(arrowEl); + } + } + }; + TooltipHTMLContent.prototype.setEnterable = function (enterable) { + this._enterable = enterable; + }; + TooltipHTMLContent.prototype.getSize = function () { + var el = this.el; + return [el.offsetWidth, el.offsetHeight]; + }; + TooltipHTMLContent.prototype.moveTo = function (zrX, zrY) { + var styleCoord = this._styleCoord; + makeStyleCoord(styleCoord, this._zr, this._container, zrX, zrY); + if (styleCoord[0] != null && styleCoord[1] != null) { + var style_1 = this.el.style; + var transforms = assembleTransform(styleCoord[0], styleCoord[1]); + each(transforms, function (transform) { + style_1[transform[0]] = transform[1]; + }); + } + }; + /** + * when `alwaysShowContent` is true, + * move the tooltip after chart resized + */ + TooltipHTMLContent.prototype._moveIfResized = function () { + // The ratio of left to width + var ratioX = this._styleCoord[2]; + // The ratio of top to height + var ratioY = this._styleCoord[3]; + this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight()); + }; + TooltipHTMLContent.prototype.hide = function () { + var _this = this; + var style = this.el.style; + style.visibility = 'hidden'; + style.opacity = '0'; + env.transform3dSupported && (style.willChange = ''); + this._show = false; + this._longHideTimeout = setTimeout(function () { + return _this._longHide = true; + }, 500); + }; + TooltipHTMLContent.prototype.hideLater = function (time) { + if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) { + if (time) { + this._hideDelay = time; + // Set show false to avoid invoke hideLater multiple times + this._show = false; + this._hideTimeout = setTimeout(bind(this.hide, this), time); + } else { + this.hide(); + } + } + }; + TooltipHTMLContent.prototype.isShow = function () { + return this._show; + }; + TooltipHTMLContent.prototype.dispose = function () { + clearTimeout(this._hideTimeout); + clearTimeout(this._longHideTimeout); + var parentNode = this.el.parentNode; + parentNode && parentNode.removeChild(this.el); + this.el = this._container = null; + }; + return TooltipHTMLContent; + }(); + + var TooltipRichContent = /** @class */function () { + function TooltipRichContent(api) { + this._show = false; + this._styleCoord = [0, 0, 0, 0]; + this._alwaysShowContent = false; + this._enterable = true; + this._zr = api.getZr(); + makeStyleCoord$1(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2); + } + /** + * Update when tooltip is rendered + */ + TooltipRichContent.prototype.update = function (tooltipModel) { + var alwaysShowContent = tooltipModel.get('alwaysShowContent'); + alwaysShowContent && this._moveIfResized(); + // update alwaysShowContent + this._alwaysShowContent = alwaysShowContent; + }; + TooltipRichContent.prototype.show = function () { + if (this._hideTimeout) { + clearTimeout(this._hideTimeout); + } + this.el.show(); + this._show = true; + }; + /** + * Set tooltip content + */ + TooltipRichContent.prototype.setContent = function (content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) { + var _this = this; + if (isObject(content)) { + throwError("development" !== 'production' ? 'Passing DOM nodes as content is not supported in richText tooltip!' : ''); + } + if (this.el) { + this._zr.remove(this.el); + } + var textStyleModel = tooltipModel.getModel('textStyle'); + this.el = new ZRText({ + style: { + rich: markupStyleCreator.richTextStyles, + text: content, + lineHeight: 22, + borderWidth: 1, + borderColor: borderColor, + textShadowColor: textStyleModel.get('textShadowColor'), + fill: tooltipModel.get(['textStyle', 'color']), + padding: getPaddingFromTooltipModel(tooltipModel, 'richText'), + verticalAlign: 'top', + align: 'left' + }, + z: tooltipModel.get('z') + }); + each(['backgroundColor', 'borderRadius', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'], function (propName) { + _this.el.style[propName] = tooltipModel.get(propName); + }); + each(['textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'], function (propName) { + _this.el.style[propName] = textStyleModel.get(propName) || 0; + }); + this._zr.add(this.el); + var self = this; + this.el.on('mouseover', function () { + // clear the timeout in hideLater and keep showing tooltip + if (self._enterable) { + clearTimeout(self._hideTimeout); + self._show = true; + } + self._inContent = true; + }); + this.el.on('mouseout', function () { + if (self._enterable) { + if (self._show) { + self.hideLater(self._hideDelay); + } + } + self._inContent = false; + }); + }; + TooltipRichContent.prototype.setEnterable = function (enterable) { + this._enterable = enterable; + }; + TooltipRichContent.prototype.getSize = function () { + var el = this.el; + var bounding = this.el.getBoundingRect(); + // bounding rect does not include shadow. For renderMode richText, + // if overflow, it will be cut. So calculate them accurately. + var shadowOuterSize = calcShadowOuterSize(el.style); + return [bounding.width + shadowOuterSize.left + shadowOuterSize.right, bounding.height + shadowOuterSize.top + shadowOuterSize.bottom]; + }; + TooltipRichContent.prototype.moveTo = function (x, y) { + var el = this.el; + if (el) { + var styleCoord = this._styleCoord; + makeStyleCoord$1(styleCoord, this._zr, x, y); + x = styleCoord[0]; + y = styleCoord[1]; + var style = el.style; + var borderWidth = mathMaxWith0(style.borderWidth || 0); + var shadowOuterSize = calcShadowOuterSize(style); + // rich text x, y do not include border. + el.x = x + borderWidth + shadowOuterSize.left; + el.y = y + borderWidth + shadowOuterSize.top; + el.markRedraw(); + } + }; + /** + * when `alwaysShowContent` is true, + * move the tooltip after chart resized + */ + TooltipRichContent.prototype._moveIfResized = function () { + // The ratio of left to width + var ratioX = this._styleCoord[2]; + // The ratio of top to height + var ratioY = this._styleCoord[3]; + this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight()); + }; + TooltipRichContent.prototype.hide = function () { + if (this.el) { + this.el.hide(); + } + this._show = false; + }; + TooltipRichContent.prototype.hideLater = function (time) { + if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) { + if (time) { + this._hideDelay = time; + // Set show false to avoid invoke hideLater multiple times + this._show = false; + this._hideTimeout = setTimeout(bind(this.hide, this), time); + } else { + this.hide(); + } + } + }; + TooltipRichContent.prototype.isShow = function () { + return this._show; + }; + TooltipRichContent.prototype.dispose = function () { + this._zr.remove(this.el); + }; + return TooltipRichContent; + }(); + function mathMaxWith0(val) { + return Math.max(0, val); + } + function calcShadowOuterSize(style) { + var shadowBlur = mathMaxWith0(style.shadowBlur || 0); + var shadowOffsetX = mathMaxWith0(style.shadowOffsetX || 0); + var shadowOffsetY = mathMaxWith0(style.shadowOffsetY || 0); + return { + left: mathMaxWith0(shadowBlur - shadowOffsetX), + right: mathMaxWith0(shadowBlur + shadowOffsetX), + top: mathMaxWith0(shadowBlur - shadowOffsetY), + bottom: mathMaxWith0(shadowBlur + shadowOffsetY) + }; + } + function makeStyleCoord$1(out, zr, zrX, zrY) { + out[0] = zrX; + out[1] = zrY; + out[2] = out[0] / zr.getWidth(); + out[3] = out[1] / zr.getHeight(); + } + + var proxyRect = new Rect({ + shape: { + x: -1, + y: -1, + width: 2, + height: 2 + } + }); + var TooltipView = /** @class */function (_super) { + __extends(TooltipView, _super); + function TooltipView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = TooltipView.type; + return _this; + } + TooltipView.prototype.init = function (ecModel, api) { + if (env.node || !api.getDom()) { + return; + } + var tooltipModel = ecModel.getComponent('tooltip'); + var renderMode = this._renderMode = getTooltipRenderMode(tooltipModel.get('renderMode')); + this._tooltipContent = renderMode === 'richText' ? new TooltipRichContent(api) : new TooltipHTMLContent(api, { + appendTo: tooltipModel.get('appendToBody', true) ? 'body' : tooltipModel.get('appendTo', true) + }); + }; + TooltipView.prototype.render = function (tooltipModel, ecModel, api) { + if (env.node || !api.getDom()) { + return; + } + // Reset + this.group.removeAll(); + this._tooltipModel = tooltipModel; + this._ecModel = ecModel; + this._api = api; + var tooltipContent = this._tooltipContent; + tooltipContent.update(tooltipModel); + tooltipContent.setEnterable(tooltipModel.get('enterable')); + this._initGlobalListener(); + this._keepShow(); + // PENDING + // `mousemove` event will be triggered very frequently when the mouse moves fast, + // which causes that the `updatePosition` function was also called frequently. + // In Chrome with devtools open and Firefox, tooltip looks laggy and shakes. See #14695 #16101 + // To avoid frequent triggering, + // consider throttling it in 50ms when transition is enabled + if (this._renderMode !== 'richText' && tooltipModel.get('transitionDuration')) { + createOrUpdate(this, '_updatePosition', 50, 'fixRate'); + } else { + clear(this, '_updatePosition'); + } + }; + TooltipView.prototype._initGlobalListener = function () { + var tooltipModel = this._tooltipModel; + var triggerOn = tooltipModel.get('triggerOn'); + register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) { + // If 'none', it is not controlled by mouse totally. + if (triggerOn !== 'none') { + if (triggerOn.indexOf(currTrigger) >= 0) { + this._tryShow(e, dispatchAction); + } else if (currTrigger === 'leave') { + this._hide(dispatchAction); + } + } + }, this)); + }; + TooltipView.prototype._keepShow = function () { + var tooltipModel = this._tooltipModel; + var ecModel = this._ecModel; + var api = this._api; + var triggerOn = tooltipModel.get('triggerOn'); + // Try to keep the tooltip show when refreshing + if (this._lastX != null && this._lastY != null + // When user is willing to control tooltip totally using API, + // self.manuallyShowTip({x, y}) might cause tooltip hide, + // which is not expected. + && triggerOn !== 'none' && triggerOn !== 'click') { + var self_1 = this; + clearTimeout(this._refreshUpdateTimeout); + this._refreshUpdateTimeout = setTimeout(function () { + // Show tip next tick after other charts are rendered + // In case highlight action has wrong result + // FIXME + !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, { + x: self_1._lastX, + y: self_1._lastY, + dataByCoordSys: self_1._lastDataByCoordSys + }); + }); + } + }; + /** + * Show tip manually by + * dispatchAction({ + * type: 'showTip', + * x: 10, + * y: 10 + * }); + * Or + * dispatchAction({ + * type: 'showTip', + * seriesIndex: 0, + * dataIndex or dataIndexInside or name + * }); + * + * TODO Batch + */ + TooltipView.prototype.manuallyShowTip = function (tooltipModel, ecModel, api, payload) { + if (payload.from === this.uid || env.node || !api.getDom()) { + return; + } + var dispatchAction = makeDispatchAction$1(payload, api); + // Reset ticket + this._ticket = ''; + // When triggered from axisPointer. + var dataByCoordSys = payload.dataByCoordSys; + var cmptRef = findComponentReference(payload, ecModel, api); + if (cmptRef) { + var rect = cmptRef.el.getBoundingRect().clone(); + rect.applyTransform(cmptRef.el.transform); + this._tryShow({ + offsetX: rect.x + rect.width / 2, + offsetY: rect.y + rect.height / 2, + target: cmptRef.el, + position: payload.position, + // When manully trigger, the mouse is not on the el, so we'd better to + // position tooltip on the bottom of the el and display arrow is possible. + positionDefault: 'bottom' + }, dispatchAction); + } else if (payload.tooltip && payload.x != null && payload.y != null) { + var el = proxyRect; + el.x = payload.x; + el.y = payload.y; + el.update(); + getECData(el).tooltipConfig = { + name: null, + option: payload.tooltip + }; + // Manually show tooltip while view is not using zrender elements. + this._tryShow({ + offsetX: payload.x, + offsetY: payload.y, + target: el + }, dispatchAction); + } else if (dataByCoordSys) { + this._tryShow({ + offsetX: payload.x, + offsetY: payload.y, + position: payload.position, + dataByCoordSys: dataByCoordSys, + tooltipOption: payload.tooltipOption + }, dispatchAction); + } else if (payload.seriesIndex != null) { + if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) { + return; + } + var pointInfo = findPointFromSeries(payload, ecModel); + var cx = pointInfo.point[0]; + var cy = pointInfo.point[1]; + if (cx != null && cy != null) { + this._tryShow({ + offsetX: cx, + offsetY: cy, + target: pointInfo.el, + position: payload.position, + // When manully trigger, the mouse is not on the el, so we'd better to + // position tooltip on the bottom of the el and display arrow is possible. + positionDefault: 'bottom' + }, dispatchAction); + } + } else if (payload.x != null && payload.y != null) { + // FIXME + // should wrap dispatchAction like `axisPointer/globalListener` ? + api.dispatchAction({ + type: 'updateAxisPointer', + x: payload.x, + y: payload.y + }); + this._tryShow({ + offsetX: payload.x, + offsetY: payload.y, + position: payload.position, + target: api.getZr().findHover(payload.x, payload.y).target + }, dispatchAction); + } + }; + TooltipView.prototype.manuallyHideTip = function (tooltipModel, ecModel, api, payload) { + var tooltipContent = this._tooltipContent; + if (this._tooltipModel) { + tooltipContent.hideLater(this._tooltipModel.get('hideDelay')); + } + this._lastX = this._lastY = this._lastDataByCoordSys = null; + if (payload.from !== this.uid) { + this._hide(makeDispatchAction$1(payload, api)); + } + }; + // Be compatible with previous design, that is, when tooltip.type is 'axis' and + // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer + // and tooltip. + TooltipView.prototype._manuallyAxisShowTip = function (tooltipModel, ecModel, api, payload) { + var seriesIndex = payload.seriesIndex; + var dataIndex = payload.dataIndex; + // @ts-ignore + var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; + if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) { + return; + } + var seriesModel = ecModel.getSeriesByIndex(seriesIndex); + if (!seriesModel) { + return; + } + var data = seriesModel.getData(); + var tooltipCascadedModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel); + if (tooltipCascadedModel.get('trigger') !== 'axis') { + return; + } + api.dispatchAction({ + type: 'updateAxisPointer', + seriesIndex: seriesIndex, + dataIndex: dataIndex, + position: payload.position + }); + return true; + }; + TooltipView.prototype._tryShow = function (e, dispatchAction) { + var el = e.target; + var tooltipModel = this._tooltipModel; + if (!tooltipModel) { + return; + } + // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed + this._lastX = e.offsetX; + this._lastY = e.offsetY; + var dataByCoordSys = e.dataByCoordSys; + if (dataByCoordSys && dataByCoordSys.length) { + this._showAxisTooltip(dataByCoordSys, e); + } else if (el) { + var ecData = getECData(el); + if (ecData.ssrType === 'legend') { + // Don't trigger tooltip for legend tooltip item + return; + } + this._lastDataByCoordSys = null; + var seriesDispatcher_1; + var cmptDispatcher_1; + findEventDispatcher(el, function (target) { + // Always show item tooltip if mouse is on the element with dataIndex + if (getECData(target).dataIndex != null) { + seriesDispatcher_1 = target; + return true; + } + // Tooltip provided directly. Like legend. + if (getECData(target).tooltipConfig != null) { + cmptDispatcher_1 = target; + return true; + } + }, true); + if (seriesDispatcher_1) { + this._showSeriesItemTooltip(e, seriesDispatcher_1, dispatchAction); + } else if (cmptDispatcher_1) { + this._showComponentItemTooltip(e, cmptDispatcher_1, dispatchAction); + } else { + this._hide(dispatchAction); + } + } else { + this._lastDataByCoordSys = null; + this._hide(dispatchAction); + } + }; + TooltipView.prototype._showOrMove = function (tooltipModel, cb) { + // showDelay is used in this case: tooltip.enterable is set + // as true. User intent to move mouse into tooltip and click + // something. `showDelay` makes it easier to enter the content + // but tooltip do not move immediately. + var delay = tooltipModel.get('showDelay'); + cb = bind(cb, this); + clearTimeout(this._showTimout); + delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb(); + }; + TooltipView.prototype._showAxisTooltip = function (dataByCoordSys, e) { + var ecModel = this._ecModel; + var globalTooltipModel = this._tooltipModel; + var point = [e.offsetX, e.offsetY]; + var singleTooltipModel = buildTooltipModel([e.tooltipOption], globalTooltipModel); + var renderMode = this._renderMode; + var cbParamsList = []; + var articleMarkup = createTooltipMarkup('section', { + blocks: [], + noHeader: true + }); + // Only for legacy: `Serise['formatTooltip']` returns a string. + var markupTextArrLegacy = []; + var markupStyleCreator = new TooltipMarkupStyleCreator(); + each(dataByCoordSys, function (itemCoordSys) { + each(itemCoordSys.dataByAxis, function (axisItem) { + var axisModel = ecModel.getComponent(axisItem.axisDim + 'Axis', axisItem.axisIndex); + var axisValue = axisItem.value; + if (!axisModel || axisValue == null) { + return; + } + var axisValueLabel = getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt); + var axisSectionMarkup = createTooltipMarkup('section', { + header: axisValueLabel, + noHeader: !trim(axisValueLabel), + sortBlocks: true, + blocks: [] + }); + articleMarkup.blocks.push(axisSectionMarkup); + each(axisItem.seriesDataIndices, function (idxItem) { + var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); + var dataIndex = idxItem.dataIndexInside; + var cbParams = series.getDataParams(dataIndex); + // Can't find data. + if (cbParams.dataIndex < 0) { + return; + } + cbParams.axisDim = axisItem.axisDim; + cbParams.axisIndex = axisItem.axisIndex; + cbParams.axisType = axisItem.axisType; + cbParams.axisId = axisItem.axisId; + cbParams.axisValue = getAxisRawValue(axisModel.axis, { + value: axisValue + }); + cbParams.axisValueLabel = axisValueLabel; + // Pre-create marker style for makers. Users can assemble richText + // text in `formatter` callback and use those markers style. + cbParams.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(cbParams.color), renderMode); + var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null)); + var frag = seriesTooltipResult.frag; + if (frag) { + var valueFormatter = buildTooltipModel([series], globalTooltipModel).get('valueFormatter'); + axisSectionMarkup.blocks.push(valueFormatter ? extend({ + valueFormatter: valueFormatter + }, frag) : frag); + } + if (seriesTooltipResult.text) { + markupTextArrLegacy.push(seriesTooltipResult.text); + } + cbParamsList.push(cbParams); + }); + }); + }); + // In most cases, the second axis is displays upper on the first one. + // So we reverse it to look better. + articleMarkup.blocks.reverse(); + markupTextArrLegacy.reverse(); + var positionExpr = e.position; + var orderMode = singleTooltipModel.get('order'); + var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), singleTooltipModel.get('textStyle')); + builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText); + var blockBreak = renderMode === 'richText' ? '\n\n' : '
      '; + var allMarkupText = markupTextArrLegacy.join(blockBreak); + this._showOrMove(singleTooltipModel, function () { + if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) { + this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList); + } else { + this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + '', point[0], point[1], positionExpr, null, markupStyleCreator); + } + }); + // Do not trigger events here, because this branch only be entered + // from dispatchAction. + }; + + TooltipView.prototype._showSeriesItemTooltip = function (e, dispatcher, dispatchAction) { + var ecModel = this._ecModel; + var ecData = getECData(dispatcher); + // Use dataModel in element if possible + // Used when mouseover on a element like markPoint or edge + // In which case, the data is not main data in series. + var seriesIndex = ecData.seriesIndex; + var seriesModel = ecModel.getSeriesByIndex(seriesIndex); + // For example, graph link. + var dataModel = ecData.dataModel || seriesModel; + var dataIndex = ecData.dataIndex; + var dataType = ecData.dataType; + var data = dataModel.getData(dataType); + var renderMode = this._renderMode; + var positionDefault = e.positionDefault; + var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? { + position: positionDefault + } : null); + var tooltipTrigger = tooltipModel.get('trigger'); + if (tooltipTrigger != null && tooltipTrigger !== 'item') { + return; + } + var params = dataModel.getDataParams(dataIndex, dataType); + var markupStyleCreator = new TooltipMarkupStyleCreator(); + // Pre-create marker style for makers. Users can assemble richText + // text in `formatter` callback and use those markers style. + params.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(params.color), renderMode); + var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType)); + var orderMode = tooltipModel.get('order'); + var valueFormatter = tooltipModel.get('valueFormatter'); + var frag = seriesTooltipResult.frag; + var markupText = frag ? buildTooltipMarkup(valueFormatter ? extend({ + valueFormatter: valueFormatter + }, frag) : frag, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), tooltipModel.get('textStyle')) : seriesTooltipResult.text; + var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex; + this._showOrMove(tooltipModel, function () { + this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markupStyleCreator); + }); + // FIXME + // duplicated showtip if manuallyShowTip is called from dispatchAction. + dispatchAction({ + type: 'showTip', + dataIndexInside: dataIndex, + dataIndex: data.getRawIndex(dataIndex), + seriesIndex: seriesIndex, + from: this.uid + }); + }; + TooltipView.prototype._showComponentItemTooltip = function (e, el, dispatchAction) { + var ecData = getECData(el); + var tooltipConfig = ecData.tooltipConfig; + var tooltipOpt = tooltipConfig.option || {}; + if (isString(tooltipOpt)) { + var content = tooltipOpt; + tooltipOpt = { + content: content, + // Fixed formatter + formatter: content + }; + } + var tooltipModelCascade = [tooltipOpt]; + var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex); + if (cmpt) { + tooltipModelCascade.push(cmpt); + } + // In most cases, component tooltip formatter has different params with series tooltip formatter, + // so that they cannot share the same formatter. Since the global tooltip formatter is used for series + // by convention, we do not use it as the default formatter for component. + tooltipModelCascade.push({ + formatter: tooltipOpt.content + }); + var positionDefault = e.positionDefault; + var subTooltipModel = buildTooltipModel(tooltipModelCascade, this._tooltipModel, positionDefault ? { + position: positionDefault + } : null); + var defaultHtml = subTooltipModel.get('content'); + var asyncTicket = Math.random() + ''; + // PENDING: this case do not support richText style yet. + var markupStyleCreator = new TooltipMarkupStyleCreator(); + // Do not check whether `trigger` is 'none' here, because `trigger` + // only works on coordinate system. In fact, we have not found case + // that requires setting `trigger` nothing on component yet. + this._showOrMove(subTooltipModel, function () { + // Use formatterParams from element defined in component + // Avoid users modify it. + var formatterParams = clone(subTooltipModel.get('formatterParams') || {}); + this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e.offsetX, e.offsetY, e.position, el, markupStyleCreator); + }); + // If not dispatch showTip, tip may be hide triggered by axis. + dispatchAction({ + type: 'showTip', + from: this.uid + }); + }; + TooltipView.prototype._showTooltipContent = function ( + // Use Model insteadof TooltipModel because this model may be from series or other options. + // Instead of top level tooltip. + tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) { + // Reset ticket + this._ticket = ''; + if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) { + return; + } + var tooltipContent = this._tooltipContent; + tooltipContent.setEnterable(tooltipModel.get('enterable')); + var formatter = tooltipModel.get('formatter'); + positionExpr = positionExpr || tooltipModel.get('position'); + var html = defaultHtml; + var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get('trigger'), tooltipModel.get('borderColor')); + var nearPointColor = nearPoint.color; + if (formatter) { + if (isString(formatter)) { + var useUTC = tooltipModel.ecModel.get('useUTC'); + var params0 = isArray(params) ? params[0] : params; + var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf('time') >= 0; + html = formatter; + if (isTimeAxis) { + html = format(params0.axisValue, html, useUTC); + } + html = formatTpl(html, params, true); + } else if (isFunction(formatter)) { + var callback = bind(function (cbTicket, html) { + if (cbTicket === this._ticket) { + tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr); + this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el); + } + }, this); + this._ticket = asyncTicket; + html = formatter(params, asyncTicket, callback); + } else { + html = formatter; + } + } + tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr); + tooltipContent.show(tooltipModel, nearPointColor); + this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el); + }; + TooltipView.prototype._getNearestPoint = function (point, tooltipDataParams, trigger, borderColor) { + if (trigger === 'axis' || isArray(tooltipDataParams)) { + return { + color: borderColor || (this._renderMode === 'html' ? '#fff' : 'none') + }; + } + if (!isArray(tooltipDataParams)) { + return { + color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor + }; + } + }; + TooltipView.prototype._updatePosition = function (tooltipModel, positionExpr, x, + // Mouse x + y, + // Mouse y + content, params, el) { + var viewWidth = this._api.getWidth(); + var viewHeight = this._api.getHeight(); + positionExpr = positionExpr || tooltipModel.get('position'); + var contentSize = content.getSize(); + var align = tooltipModel.get('align'); + var vAlign = tooltipModel.get('verticalAlign'); + var rect = el && el.getBoundingRect().clone(); + el && rect.applyTransform(el.transform); + if (isFunction(positionExpr)) { + // Callback of position can be an array or a string specify the position + positionExpr = positionExpr([x, y], params, content.el, rect, { + viewSize: [viewWidth, viewHeight], + contentSize: contentSize.slice() + }); + } + if (isArray(positionExpr)) { + x = parsePercent$1(positionExpr[0], viewWidth); + y = parsePercent$1(positionExpr[1], viewHeight); + } else if (isObject(positionExpr)) { + var boxLayoutPosition = positionExpr; + boxLayoutPosition.width = contentSize[0]; + boxLayoutPosition.height = contentSize[1]; + var layoutRect = getLayoutRect(boxLayoutPosition, { + width: viewWidth, + height: viewHeight + }); + x = layoutRect.x; + y = layoutRect.y; + align = null; + // When positionExpr is left/top/right/bottom, + // align and verticalAlign will not work. + vAlign = null; + } + // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element + else if (isString(positionExpr) && el) { + var pos = calcTooltipPosition(positionExpr, rect, contentSize, tooltipModel.get('borderWidth')); + x = pos[0]; + y = pos[1]; + } else { + var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20); + x = pos[0]; + y = pos[1]; + } + align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0); + vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0); + if (shouldTooltipConfine(tooltipModel)) { + var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight); + x = pos[0]; + y = pos[1]; + } + content.moveTo(x, y); + }; + // FIXME + // Should we remove this but leave this to user? + TooltipView.prototype._updateContentNotChangedOnAxis = function (dataByCoordSys, cbParamsList) { + var lastCoordSys = this._lastDataByCoordSys; + var lastCbParamsList = this._cbParamsList; + var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length; + contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) { + var lastDataByAxis = lastItemCoordSys.dataByAxis || []; + var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {}; + var thisDataByAxis = thisItemCoordSys.dataByAxis || []; + contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length; + contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) { + var thisItem = thisDataByAxis[indexAxis] || {}; + var lastIndices = lastItem.seriesDataIndices || []; + var newIndices = thisItem.seriesDataIndices || []; + contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length; + contentNotChanged && each(lastIndices, function (lastIdxItem, j) { + var newIdxItem = newIndices[j]; + contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex; + }); + // check is cbParams data value changed + lastCbParamsList && each(lastItem.seriesDataIndices, function (idxItem) { + var seriesIdx = idxItem.seriesIndex; + var cbParams = cbParamsList[seriesIdx]; + var lastCbParams = lastCbParamsList[seriesIdx]; + if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) { + contentNotChanged = false; + } + }); + }); + }); + this._lastDataByCoordSys = dataByCoordSys; + this._cbParamsList = cbParamsList; + return !!contentNotChanged; + }; + TooltipView.prototype._hide = function (dispatchAction) { + // Do not directly hideLater here, because this behavior may be prevented + // in dispatchAction when showTip is dispatched. + // FIXME + // duplicated hideTip if manuallyHideTip is called from dispatchAction. + this._lastDataByCoordSys = null; + dispatchAction({ + type: 'hideTip', + from: this.uid + }); + }; + TooltipView.prototype.dispose = function (ecModel, api) { + if (env.node || !api.getDom()) { + return; + } + clear(this, '_updatePosition'); + this._tooltipContent.dispose(); + unregister('itemTooltip', api); + }; + TooltipView.type = 'tooltip'; + return TooltipView; + }(ComponentView); + /** + * From top to bottom. (the last one should be globalTooltipModel); + */ + function buildTooltipModel(modelCascade, globalTooltipModel, defaultTooltipOption) { + // Last is always tooltip model. + var ecModel = globalTooltipModel.ecModel; + var resultModel; + if (defaultTooltipOption) { + resultModel = new Model(defaultTooltipOption, ecModel, ecModel); + resultModel = new Model(globalTooltipModel.option, resultModel, ecModel); + } else { + resultModel = globalTooltipModel; + } + for (var i = modelCascade.length - 1; i >= 0; i--) { + var tooltipOpt = modelCascade[i]; + if (tooltipOpt) { + if (tooltipOpt instanceof Model) { + tooltipOpt = tooltipOpt.get('tooltip', true); + } + // In each data item tooltip can be simply write: + // { + // value: 10, + // tooltip: 'Something you need to know' + // } + if (isString(tooltipOpt)) { + tooltipOpt = { + formatter: tooltipOpt + }; + } + if (tooltipOpt) { + resultModel = new Model(tooltipOpt, resultModel, ecModel); + } + } + } + return resultModel; + } + function makeDispatchAction$1(payload, api) { + return payload.dispatchAction || bind(api.dispatchAction, api); + } + function refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) { + var size = content.getSize(); + var width = size[0]; + var height = size[1]; + if (gapH != null) { + // Add extra 2 pixels for this case: + // At present the "values" in default tooltip are using CSS `float: right`. + // When the right edge of the tooltip box is on the right side of the + // viewport, the `float` layout might push the "values" to the second line. + if (x + width + gapH + 2 > viewWidth) { + x -= width + gapH; + } else { + x += gapH; + } + } + if (gapV != null) { + if (y + height + gapV > viewHeight) { + y -= height + gapV; + } else { + y += gapV; + } + } + return [x, y]; + } + function confineTooltipPosition(x, y, content, viewWidth, viewHeight) { + var size = content.getSize(); + var width = size[0]; + var height = size[1]; + x = Math.min(x + width, viewWidth) - width; + y = Math.min(y + height, viewHeight) - height; + x = Math.max(x, 0); + y = Math.max(y, 0); + return [x, y]; + } + function calcTooltipPosition(position, rect, contentSize, borderWidth) { + var domWidth = contentSize[0]; + var domHeight = contentSize[1]; + var offset = Math.ceil(Math.SQRT2 * borderWidth) + 8; + var x = 0; + var y = 0; + var rectWidth = rect.width; + var rectHeight = rect.height; + switch (position) { + case 'inside': + x = rect.x + rectWidth / 2 - domWidth / 2; + y = rect.y + rectHeight / 2 - domHeight / 2; + break; + case 'top': + x = rect.x + rectWidth / 2 - domWidth / 2; + y = rect.y - domHeight - offset; + break; + case 'bottom': + x = rect.x + rectWidth / 2 - domWidth / 2; + y = rect.y + rectHeight + offset; + break; + case 'left': + x = rect.x - domWidth - offset; + y = rect.y + rectHeight / 2 - domHeight / 2; + break; + case 'right': + x = rect.x + rectWidth + offset; + y = rect.y + rectHeight / 2 - domHeight / 2; + } + return [x, y]; + } + function isCenterAlign(align) { + return align === 'center' || align === 'middle'; + } + /** + * Find target component by payload like: + * ```js + * { legendId: 'some_id', name: 'xxx' } + * { toolboxIndex: 1, name: 'xxx' } + * { geoName: 'some_name', name: 'xxx' } + * ``` + * PENDING: at present only + * + * If not found, return null/undefined. + */ + function findComponentReference(payload, ecModel, api) { + var queryOptionMap = preParseFinder(payload).queryOptionMap; + var componentMainType = queryOptionMap.keys()[0]; + if (!componentMainType || componentMainType === 'series') { + return; + } + var queryResult = queryReferringComponents(ecModel, componentMainType, queryOptionMap.get(componentMainType), { + useDefault: false, + enableAll: false, + enableNone: false + }); + var model = queryResult.models[0]; + if (!model) { + return; + } + var view = api.getViewOfComponentModel(model); + var el; + view.group.traverse(function (subEl) { + var tooltipConfig = getECData(subEl).tooltipConfig; + if (tooltipConfig && tooltipConfig.name === payload.name) { + el = subEl; + return true; // stop + } + }); + + if (el) { + return { + componentMainType: componentMainType, + componentIndex: model.componentIndex, + el: el + }; + } + } + + function install$A(registers) { + use(install$s); + registers.registerComponentModel(TooltipModel); + registers.registerComponentView(TooltipView); + /** + * @action + * @property {string} type + * @property {number} seriesIndex + * @property {number} dataIndex + * @property {number} [x] + * @property {number} [y] + */ + registers.registerAction({ + type: 'showTip', + event: 'showTip', + update: 'tooltip:manuallyShowTip' + }, noop); + registers.registerAction({ + type: 'hideTip', + event: 'hideTip', + update: 'tooltip:manuallyHideTip' + }, noop); + } + + var DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear']; + function brushPreprocessor(option, isNew) { + var brushComponents = normalizeToArray(option ? option.brush : []); + if (!brushComponents.length) { + return; + } + var brushComponentSpecifiedBtns = []; + each(brushComponents, function (brushOpt) { + var tbs = brushOpt.hasOwnProperty('toolbox') ? brushOpt.toolbox : []; + if (tbs instanceof Array) { + brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs); + } + }); + var toolbox = option && option.toolbox; + if (isArray(toolbox)) { + toolbox = toolbox[0]; + } + if (!toolbox) { + toolbox = { + feature: {} + }; + option.toolbox = [toolbox]; + } + var toolboxFeature = toolbox.feature || (toolbox.feature = {}); + var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {}); + var brushTypes = toolboxBrush.type || (toolboxBrush.type = []); + brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns); + removeDuplicate(brushTypes); + if (isNew && !brushTypes.length) { + brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS); + } + } + function removeDuplicate(arr) { + var map = {}; + each(arr, function (val) { + map[val] = 1; + }); + arr.length = 0; + each(map, function (flag, val) { + arr.push(val); + }); + } + + var each$b = each; + function hasKeys(obj) { + if (obj) { + for (var name_1 in obj) { + if (obj.hasOwnProperty(name_1)) { + return true; + } + } + } + } + function createVisualMappings(option, stateList, supplementVisualOption) { + var visualMappings = {}; + each$b(stateList, function (state) { + var mappings = visualMappings[state] = createMappings(); + each$b(option[state], function (visualData, visualType) { + if (!VisualMapping.isValidType(visualType)) { + return; + } + var mappingOption = { + type: visualType, + visual: visualData + }; + supplementVisualOption && supplementVisualOption(mappingOption, state); + mappings[visualType] = new VisualMapping(mappingOption); + // Prepare a alpha for opacity, for some case that opacity + // is not supported, such as rendering using gradient color. + if (visualType === 'opacity') { + mappingOption = clone(mappingOption); + mappingOption.type = 'colorAlpha'; + mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption); + } + }); + }); + return visualMappings; + function createMappings() { + var Creater = function () {}; + // Make sure hidden fields will not be visited by + // object iteration (with hasOwnProperty checking). + Creater.prototype.__hidden = Creater.prototype; + var obj = new Creater(); + return obj; + } + } + function replaceVisualOption(thisOption, newOption, keys) { + // Visual attributes merge is not supported, otherwise it + // brings overcomplicated merge logic. See #2853. So if + // newOption has anyone of these keys, all of these keys + // will be reset. Otherwise, all keys remain. + var has; + each(keys, function (key) { + if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) { + has = true; + } + }); + has && each(keys, function (key) { + if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) { + thisOption[key] = clone(newOption[key]); + } else { + delete thisOption[key]; + } + }); + } + /** + * @param stateList + * @param visualMappings + * @param list + * @param getValueState param: valueOrIndex, return: state. + * @param scope Scope for getValueState + * @param dimension Concrete dimension, if used. + */ + // ???! handle brush? + function applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) { + var visualTypesMap = {}; + each(stateList, function (state) { + var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]); + visualTypesMap[state] = visualTypes; + }); + var dataIndex; + function getVisual(key) { + return getItemVisualFromData(data, dataIndex, key); + } + function setVisual(key, value) { + setItemVisualFromData(data, dataIndex, key, value); + } + if (dimension == null) { + data.each(eachItem); + } else { + data.each([dimension], eachItem); + } + function eachItem(valueOrIndex, index) { + dataIndex = dimension == null ? valueOrIndex // First argument is index + : index; + var rawDataItem = data.getRawDataItem(dataIndex); + // Consider performance + // @ts-ignore + if (rawDataItem && rawDataItem.visualMap === false) { + return; + } + var valueState = getValueState.call(scope, valueOrIndex); + var mappings = visualMappings[valueState]; + var visualTypes = visualTypesMap[valueState]; + for (var i = 0, len = visualTypes.length; i < len; i++) { + var type = visualTypes[i]; + mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual); + } + } + } + /** + * @param data + * @param stateList + * @param visualMappings > + * @param getValueState param: valueOrIndex, return: state. + * @param dim dimension or dimension index. + */ + function incrementalApplyVisual(stateList, visualMappings, getValueState, dim) { + var visualTypesMap = {}; + each(stateList, function (state) { + var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]); + visualTypesMap[state] = visualTypes; + }); + return { + progress: function progress(params, data) { + var dimIndex; + if (dim != null) { + dimIndex = data.getDimensionIndex(dim); + } + function getVisual(key) { + return getItemVisualFromData(data, dataIndex, key); + } + function setVisual(key, value) { + setItemVisualFromData(data, dataIndex, key, value); + } + var dataIndex; + var store = data.getStore(); + while ((dataIndex = params.next()) != null) { + var rawDataItem = data.getRawDataItem(dataIndex); + // Consider performance + // @ts-ignore + if (rawDataItem && rawDataItem.visualMap === false) { + continue; + } + var value = dim != null ? store.get(dimIndex, dataIndex) : dataIndex; + var valueState = getValueState(value); + var mappings = visualMappings[valueState]; + var visualTypes = visualTypesMap[valueState]; + for (var i = 0, len = visualTypes.length; i < len; i++) { + var type = visualTypes[i]; + mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual); + } + } + } + }; + } + + function makeBrushCommonSelectorForSeries(area) { + var brushType = area.brushType; + // Do not use function binding or curry for performance. + var selectors = { + point: function (itemLayout) { + return selector[brushType].point(itemLayout, selectors, area); + }, + rect: function (itemLayout) { + return selector[brushType].rect(itemLayout, selectors, area); + } + }; + return selectors; + } + var selector = { + lineX: getLineSelectors(0), + lineY: getLineSelectors(1), + rect: { + point: function (itemLayout, selectors, area) { + return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]); + }, + rect: function (itemLayout, selectors, area) { + return itemLayout && area.boundingRect.intersect(itemLayout); + } + }, + polygon: { + point: function (itemLayout, selectors, area) { + return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && contain$2(area.range, itemLayout[0], itemLayout[1]); + }, + rect: function (itemLayout, selectors, area) { + var points = area.range; + if (!itemLayout || points.length <= 1) { + return false; + } + var x = itemLayout.x; + var y = itemLayout.y; + var width = itemLayout.width; + var height = itemLayout.height; + var p = points[0]; + if (contain$2(points, x, y) || contain$2(points, x + width, y) || contain$2(points, x, y + height) || contain$2(points, x + width, y + height) || BoundingRect.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect(x, y, x + width, y, points) || linePolygonIntersect(x, y, x, y + height, points) || linePolygonIntersect(x + width, y, x + width, y + height, points) || linePolygonIntersect(x, y + height, x + width, y + height, points)) { + return true; + } + } + } + }; + function getLineSelectors(xyIndex) { + var xy = ['x', 'y']; + var wh = ['width', 'height']; + return { + point: function (itemLayout, selectors, area) { + if (itemLayout) { + var range = area.range; + var p = itemLayout[xyIndex]; + return inLineRange(p, range); + } + }, + rect: function (itemLayout, selectors, area) { + if (itemLayout) { + var range = area.range; + var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]]; + layoutRange[1] < layoutRange[0] && layoutRange.reverse(); + return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange); + } + } + }; + } + function inLineRange(p, range) { + return range[0] <= p && p <= range[1]; + } + + var STATE_LIST = ['inBrush', 'outOfBrush']; + var DISPATCH_METHOD = '__ecBrushSelect'; + var DISPATCH_FLAG = '__ecInBrushSelectEvent'; + function layoutCovers(ecModel) { + ecModel.eachComponent({ + mainType: 'brush' + }, function (brushModel) { + var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel); + brushTargetManager.setInputRanges(brushModel.areas, ecModel); + }); + } + /** + * Register the visual encoding if this modules required. + */ + function brushVisual(ecModel, api, payload) { + var brushSelected = []; + var throttleType; + var throttleDelay; + ecModel.eachComponent({ + mainType: 'brush' + }, function (brushModel) { + payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : { + brushType: false + }); + }); + layoutCovers(ecModel); + ecModel.eachComponent({ + mainType: 'brush' + }, function (brushModel, brushIndex) { + var thisBrushSelected = { + brushId: brushModel.id, + brushIndex: brushIndex, + brushName: brushModel.name, + areas: clone(brushModel.areas), + selected: [] + }; + // Every brush component exists in event params, convenient + // for user to find by index. + brushSelected.push(thisBrushSelected); + var brushOption = brushModel.option; + var brushLink = brushOption.brushLink; + var linkedSeriesMap = []; + var selectedDataIndexForLink = []; + var rangeInfoBySeries = []; + var hasBrushExists = false; + if (!brushIndex) { + // Only the first throttle setting works. + throttleType = brushOption.throttleType; + throttleDelay = brushOption.throttleDelay; + } + // Add boundingRect and selectors to range. + var areas = map(brushModel.areas, function (area) { + var builder = boundingRectBuilders[area.brushType]; + var selectableArea = defaults({ + boundingRect: builder ? builder(area) : void 0 + }, area); + selectableArea.selectors = makeBrushCommonSelectorForSeries(selectableArea); + return selectableArea; + }); + var visualMappings = createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) { + mappingOption.mappingMethod = 'fixed'; + }); + isArray(brushLink) && each(brushLink, function (seriesIndex) { + linkedSeriesMap[seriesIndex] = 1; + }); + function linkOthers(seriesIndex) { + return brushLink === 'all' || !!linkedSeriesMap[seriesIndex]; + } + // If no supported brush or no brush on the series, + // all visuals should be in original state. + function brushed(rangeInfoList) { + return !!rangeInfoList.length; + } + /** + * Logic for each series: (If the logic has to be modified one day, do it carefully!) + * + * ( brushed ┬ && ┬hasBrushExist ┬ && linkOthers ) => StepA: ┬record, ┬ StepB: ┬visualByRecord. + * !brushed┘ ├hasBrushExist ┤ └nothing,┘ ├visualByRecord. + * └!hasBrushExist┘ └nothing. + * ( !brushed && ┬hasBrushExist ┬ && linkOthers ) => StepA: nothing, StepB: ┬visualByRecord. + * └!hasBrushExist┘ └nothing. + * ( brushed ┬ && !linkOthers ) => StepA: nothing, StepB: ┬visualByCheck. + * !brushed┘ └nothing. + * ( !brushed && !linkOthers ) => StepA: nothing, StepB: nothing. + */ + // Step A + ecModel.eachSeries(function (seriesModel, seriesIndex) { + var rangeInfoList = rangeInfoBySeries[seriesIndex] = []; + seriesModel.subType === 'parallel' ? stepAParallel(seriesModel, seriesIndex) : stepAOthers(seriesModel, seriesIndex, rangeInfoList); + }); + function stepAParallel(seriesModel, seriesIndex) { + var coordSys = seriesModel.coordinateSystem; + hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed(); + linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) { + activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1); + }); + } + function stepAOthers(seriesModel, seriesIndex, rangeInfoList) { + if (!seriesModel.brushSelector || brushModelNotControll(brushModel, seriesIndex)) { + return; + } + each(areas, function (area) { + if (brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)) { + rangeInfoList.push(area); + } + hasBrushExists = hasBrushExists || brushed(rangeInfoList); + }); + if (linkOthers(seriesIndex) && brushed(rangeInfoList)) { + var data_1 = seriesModel.getData(); + data_1.each(function (dataIndex) { + if (checkInRange(seriesModel, rangeInfoList, data_1, dataIndex)) { + selectedDataIndexForLink[dataIndex] = 1; + } + }); + } + } + // Step B + ecModel.eachSeries(function (seriesModel, seriesIndex) { + var seriesBrushSelected = { + seriesId: seriesModel.id, + seriesIndex: seriesIndex, + seriesName: seriesModel.name, + dataIndex: [] + }; + // Every series exists in event params, convenient + // for user to find series by seriesIndex. + thisBrushSelected.selected.push(seriesBrushSelected); + var rangeInfoList = rangeInfoBySeries[seriesIndex]; + var data = seriesModel.getData(); + var getValueState = linkOthers(seriesIndex) ? function (dataIndex) { + return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush'; + } : function (dataIndex) { + return checkInRange(seriesModel, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush'; + }; + // If no supported brush or no brush, all visuals are in original state. + (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && applyVisual(STATE_LIST, visualMappings, data, getValueState); + }); + }); + dispatchAction(api, throttleType, throttleDelay, brushSelected, payload); + } + function dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) { + // This event will not be triggered when `setOpion`, otherwise dead lock may + // triggered when do `setOption` in event listener, which we do not find + // satisfactory way to solve yet. Some considered resolutions: + // (a) Diff with prevoius selected data ant only trigger event when changed. + // But store previous data and diff precisely (i.e., not only by dataIndex, but + // also detect value changes in selected data) might bring complexity or fragility. + // (b) Use spectial param like `silent` to suppress event triggering. + // But such kind of volatile param may be weird in `setOption`. + if (!payload) { + return; + } + var zr = api.getZr(); + if (zr[DISPATCH_FLAG]) { + return; + } + if (!zr[DISPATCH_METHOD]) { + zr[DISPATCH_METHOD] = doDispatch; + } + var fn = createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType); + fn(api, brushSelected); + } + function doDispatch(api, brushSelected) { + if (!api.isDisposed()) { + var zr = api.getZr(); + zr[DISPATCH_FLAG] = true; + api.dispatchAction({ + type: 'brushSelect', + batch: brushSelected + }); + zr[DISPATCH_FLAG] = false; + } + } + function checkInRange(seriesModel, rangeInfoList, data, dataIndex) { + for (var i = 0, len = rangeInfoList.length; i < len; i++) { + var area = rangeInfoList[i]; + if (seriesModel.brushSelector(dataIndex, data, area.selectors, area)) { + return true; + } + } + } + function brushModelNotControll(brushModel, seriesIndex) { + var seriesIndices = brushModel.option.seriesIndex; + return seriesIndices != null && seriesIndices !== 'all' && (isArray(seriesIndices) ? indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices); + } + var boundingRectBuilders = { + rect: function (area) { + return getBoundingRectFromMinMax(area.range); + }, + polygon: function (area) { + var minMax; + var range = area.range; + for (var i = 0, len = range.length; i < len; i++) { + minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]]; + var rg = range[i]; + rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]); + rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]); + rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]); + rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]); + } + return minMax && getBoundingRectFromMinMax(minMax); + } + }; + function getBoundingRectFromMinMax(minMax) { + return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]); + } + + var BrushView = /** @class */function (_super) { + __extends(BrushView, _super); + function BrushView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = BrushView.type; + return _this; + } + BrushView.prototype.init = function (ecModel, api) { + this.ecModel = ecModel; + this.api = api; + this.model; + (this._brushController = new BrushController(api.getZr())).on('brush', bind(this._onBrush, this)).mount(); + }; + BrushView.prototype.render = function (brushModel, ecModel, api, payload) { + this.model = brushModel; + this._updateController(brushModel, ecModel, api, payload); + }; + BrushView.prototype.updateTransform = function (brushModel, ecModel, api, payload) { + // PENDING: `updateTransform` is a little tricky, whose layout need + // to be calculate mandatorily and other stages will not be performed. + // Take care the correctness of the logic. See #11754 . + layoutCovers(ecModel); + this._updateController(brushModel, ecModel, api, payload); + }; + BrushView.prototype.updateVisual = function (brushModel, ecModel, api, payload) { + this.updateTransform(brushModel, ecModel, api, payload); + }; + BrushView.prototype.updateView = function (brushModel, ecModel, api, payload) { + this._updateController(brushModel, ecModel, api, payload); + }; + BrushView.prototype._updateController = function (brushModel, ecModel, api, payload) { + // Do not update controller when drawing. + (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice()); + }; + // updateLayout: updateController, + // updateVisual: updateController, + BrushView.prototype.dispose = function () { + this._brushController.dispose(); + }; + BrushView.prototype._onBrush = function (eventParam) { + var modelId = this.model.id; + var areas = this.model.brushTargetManager.setOutputRanges(eventParam.areas, this.ecModel); + // Action is not dispatched on drag end, because the drag end + // emits the same params with the last drag move event, and + // may have some delay when using touch pad, which makes + // animation not smooth (when using debounce). + (!eventParam.isEnd || eventParam.removeOnClick) && this.api.dispatchAction({ + type: 'brush', + brushId: modelId, + areas: clone(areas), + $from: modelId + }); + eventParam.isEnd && this.api.dispatchAction({ + type: 'brushEnd', + brushId: modelId, + areas: clone(areas), + $from: modelId + }); + }; + BrushView.type = 'brush'; + return BrushView; + }(ComponentView); + + var DEFAULT_OUT_OF_BRUSH_COLOR = '#ddd'; + var BrushModel = /** @class */function (_super) { + __extends(BrushModel, _super); + function BrushModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = BrushModel.type; + /** + * @readOnly + */ + _this.areas = []; + /** + * Current brush painting area settings. + * @readOnly + */ + _this.brushOption = {}; + return _this; + } + BrushModel.prototype.optionUpdated = function (newOption, isInit) { + var thisOption = this.option; + !isInit && replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']); + var inBrush = thisOption.inBrush = thisOption.inBrush || {}; + // Always give default visual, consider setOption at the second time. + thisOption.outOfBrush = thisOption.outOfBrush || { + color: DEFAULT_OUT_OF_BRUSH_COLOR + }; + if (!inBrush.hasOwnProperty('liftZ')) { + // Bigger than the highlight z lift, otherwise it will + // be effected by the highlight z when brush. + inBrush.liftZ = 5; + } + }; + /** + * If `areas` is null/undefined, range state remain. + */ + BrushModel.prototype.setAreas = function (areas) { + if ("development" !== 'production') { + assert(isArray(areas)); + each(areas, function (area) { + assert(area.brushType, 'Illegal areas'); + }); + } + // If areas is null/undefined, range state remain. + // This helps user to dispatchAction({type: 'brush'}) with no areas + // set but just want to get the current brush select info from a `brush` event. + if (!areas) { + return; + } + this.areas = map(areas, function (area) { + return generateBrushOption(this.option, area); + }, this); + }; + /** + * Set the current painting brush option. + */ + BrushModel.prototype.setBrushOption = function (brushOption) { + this.brushOption = generateBrushOption(this.option, brushOption); + this.brushType = this.brushOption.brushType; + }; + BrushModel.type = 'brush'; + BrushModel.dependencies = ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series']; + BrushModel.defaultOption = { + seriesIndex: 'all', + brushType: 'rect', + brushMode: 'single', + transformable: true, + brushStyle: { + borderWidth: 1, + color: 'rgba(210,219,238,0.3)', + borderColor: '#D2DBEE' + }, + throttleType: 'fixRate', + throttleDelay: 0, + removeOnClick: true, + z: 10000 + }; + return BrushModel; + }(ComponentModel); + function generateBrushOption(option, brushOption) { + return merge({ + brushType: option.brushType, + brushMode: option.brushMode, + transformable: option.transformable, + brushStyle: new Model(option.brushStyle).getItemStyle(), + removeOnClick: option.removeOnClick, + z: option.z + }, brushOption, true); + } + + var ICON_TYPES = ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear']; + var BrushFeature = /** @class */function (_super) { + __extends(BrushFeature, _super); + function BrushFeature() { + return _super !== null && _super.apply(this, arguments) || this; + } + BrushFeature.prototype.render = function (featureModel, ecModel, api) { + var brushType; + var brushMode; + var isBrushed; + ecModel.eachComponent({ + mainType: 'brush' + }, function (brushModel) { + brushType = brushModel.brushType; + brushMode = brushModel.brushOption.brushMode || 'single'; + isBrushed = isBrushed || !!brushModel.areas.length; + }); + this._brushType = brushType; + this._brushMode = brushMode; + each(featureModel.get('type', true), function (type) { + featureModel.setIconStatus(type, (type === 'keep' ? brushMode === 'multiple' : type === 'clear' ? isBrushed : type === brushType) ? 'emphasis' : 'normal'); + }); + }; + BrushFeature.prototype.updateView = function (featureModel, ecModel, api) { + this.render(featureModel, ecModel, api); + }; + BrushFeature.prototype.getIcons = function () { + var model = this.model; + var availableIcons = model.get('icon', true); + var icons = {}; + each(model.get('type', true), function (type) { + if (availableIcons[type]) { + icons[type] = availableIcons[type]; + } + }); + return icons; + }; + BrushFeature.prototype.onclick = function (ecModel, api, type) { + var brushType = this._brushType; + var brushMode = this._brushMode; + if (type === 'clear') { + // Trigger parallel action firstly + api.dispatchAction({ + type: 'axisAreaSelect', + intervals: [] + }); + api.dispatchAction({ + type: 'brush', + command: 'clear', + // Clear all areas of all brush components. + areas: [] + }); + } else { + api.dispatchAction({ + type: 'takeGlobalCursor', + key: 'brush', + brushOption: { + brushType: type === 'keep' ? brushType : brushType === type ? false : type, + brushMode: type === 'keep' ? brushMode === 'multiple' ? 'single' : 'multiple' : brushMode + } + }); + } + }; + BrushFeature.getDefaultOption = function (ecModel) { + var defaultOption = { + show: true, + type: ICON_TYPES.slice(), + icon: { + /* eslint-disable */ + 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' // jshint ignore:line + /* eslint-enable */ + }, + + // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear` + title: ecModel.getLocaleModel().get(['toolbox', 'brush', 'title']) + }; + return defaultOption; + }; + return BrushFeature; + }(ToolboxFeature); + + function install$B(registers) { + registers.registerComponentView(BrushView); + registers.registerComponentModel(BrushModel); + registers.registerPreprocessor(brushPreprocessor); + registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, brushVisual); + registers.registerAction({ + type: 'brush', + event: 'brush', + update: 'updateVisual' + }, function (payload, ecModel) { + ecModel.eachComponent({ + mainType: 'brush', + query: payload + }, function (brushModel) { + brushModel.setAreas(payload.areas); + }); + }); + /** + * payload: { + * brushComponents: [ + * { + * brushId, + * brushIndex, + * brushName, + * series: [ + * { + * seriesId, + * seriesIndex, + * seriesName, + * rawIndices: [21, 34, ...] + * }, + * ... + * ] + * }, + * ... + * ] + * } + */ + registers.registerAction({ + type: 'brushSelect', + event: 'brushSelected', + update: 'none' + }, noop); + registers.registerAction({ + type: 'brushEnd', + event: 'brushEnd', + update: 'none' + }, noop); + registerFeature('brush', BrushFeature); + } + + var TitleModel = /** @class */function (_super) { + __extends(TitleModel, _super); + function TitleModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = TitleModel.type; + _this.layoutMode = { + type: 'box', + ignoreSize: true + }; + return _this; + } + TitleModel.type = 'title'; + TitleModel.defaultOption = { + // zlevel: 0, + z: 6, + show: true, + 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' + } + }; + return TitleModel; + }(ComponentModel); + // View + var TitleView = /** @class */function (_super) { + __extends(TitleView, _super); + function TitleView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = TitleView.type; + return _this; + } + TitleView.prototype.render = function (titleModel, ecModel, api) { + this.group.removeAll(); + if (!titleModel.get('show')) { + return; + } + var group = this.group; + var textStyleModel = titleModel.getModel('textStyle'); + var subtextStyleModel = titleModel.getModel('subtextStyle'); + var textAlign = titleModel.get('textAlign'); + var textVerticalAlign = retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign')); + var textEl = new ZRText({ + style: createTextStyle(textStyleModel, { + text: titleModel.get('text'), + fill: textStyleModel.getTextColor() + }, { + disableBox: true + }), + z2: 10 + }); + var textRect = textEl.getBoundingRect(); + var subText = titleModel.get('subtext'); + var subTextEl = new ZRText({ + style: createTextStyle(subtextStyleModel, { + text: subText, + fill: subtextStyleModel.getTextColor(), + y: textRect.height + titleModel.get('itemGap'), + verticalAlign: 'top' + }, { + disableBox: true + }), + z2: 10 + }); + var link = titleModel.get('link'); + var sublink = titleModel.get('sublink'); + var triggerEvent = titleModel.get('triggerEvent', true); + textEl.silent = !link && !triggerEvent; + subTextEl.silent = !sublink && !triggerEvent; + if (link) { + textEl.on('click', function () { + windowOpen(link, '_' + titleModel.get('target')); + }); + } + if (sublink) { + subTextEl.on('click', function () { + windowOpen(sublink, '_' + titleModel.get('subtarget')); + }); + } + getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent ? { + componentType: 'title', + componentIndex: titleModel.componentIndex + } : null; + group.add(textEl); + subText && group.add(subTextEl); + // If no subText, but add subTextEl, there will be an empty line. + var groupRect = group.getBoundingRect(); + var layoutOption = titleModel.getBoxLayoutParams(); + layoutOption.width = groupRect.width; + layoutOption.height = groupRect.height; + var layoutRect = getLayoutRect(layoutOption, { + width: api.getWidth(), + height: api.getHeight() + }, titleModel.get('padding')); + // Adjust text align based on position + if (!textAlign) { + // Align left if title is on the left. center and right is same + textAlign = titleModel.get('left') || titleModel.get('right'); + // @ts-ignore + if (textAlign === 'middle') { + textAlign = 'center'; + } + // Adjust layout by text align + if (textAlign === 'right') { + layoutRect.x += layoutRect.width; + } else if (textAlign === 'center') { + layoutRect.x += layoutRect.width / 2; + } + } + if (!textVerticalAlign) { + textVerticalAlign = titleModel.get('top') || titleModel.get('bottom'); + // @ts-ignore + if (textVerticalAlign === 'center') { + textVerticalAlign = 'middle'; + } + if (textVerticalAlign === 'bottom') { + layoutRect.y += layoutRect.height; + } else if (textVerticalAlign === 'middle') { + layoutRect.y += layoutRect.height / 2; + } + textVerticalAlign = textVerticalAlign || 'top'; + } + group.x = layoutRect.x; + group.y = layoutRect.y; + group.markRedraw(); + var alignStyle = { + align: textAlign, + verticalAlign: textVerticalAlign + }; + textEl.setStyle(alignStyle); + subTextEl.setStyle(alignStyle); + // Render background + // Get groupRect again because textAlign has been changed + groupRect = group.getBoundingRect(); + var padding = layoutRect.margin; + var style = titleModel.getItemStyle(['color', 'opacity']); + style.fill = titleModel.get('backgroundColor'); + var rect = new Rect({ + shape: { + x: groupRect.x - padding[3], + y: groupRect.y - padding[0], + width: groupRect.width + padding[1] + padding[3], + height: groupRect.height + padding[0] + padding[2], + r: titleModel.get('borderRadius') + }, + style: style, + subPixelOptimize: true, + silent: true + }); + group.add(rect); + }; + TitleView.type = 'title'; + return TitleView; + }(ComponentView); + function install$C(registers) { + registers.registerComponentModel(TitleModel); + registers.registerComponentView(TitleView); + } + + var TimelineModel = /** @class */function (_super) { + __extends(TimelineModel, _super); + function TimelineModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = TimelineModel.type; + _this.layoutMode = 'box'; + return _this; + } + /** + * @override + */ + TimelineModel.prototype.init = function (option, parentModel, ecModel) { + this.mergeDefaultAndTheme(option, ecModel); + this._initData(); + }; + /** + * @override + */ + TimelineModel.prototype.mergeOption = function (option) { + _super.prototype.mergeOption.apply(this, arguments); + this._initData(); + }; + TimelineModel.prototype.setCurrentIndex = function (currentIndex) { + if (currentIndex == null) { + currentIndex = this.option.currentIndex; + } + var count = this._data.count(); + if (this.option.loop) { + currentIndex = (currentIndex % count + count) % count; + } else { + currentIndex >= count && (currentIndex = count - 1); + currentIndex < 0 && (currentIndex = 0); + } + this.option.currentIndex = currentIndex; + }; + /** + * @return {number} currentIndex + */ + TimelineModel.prototype.getCurrentIndex = function () { + return this.option.currentIndex; + }; + /** + * @return {boolean} + */ + TimelineModel.prototype.isIndexMax = function () { + return this.getCurrentIndex() >= this._data.count() - 1; + }; + /** + * @param {boolean} state true: play, false: stop + */ + TimelineModel.prototype.setPlayState = function (state) { + this.option.autoPlay = !!state; + }; + /** + * @return {boolean} true: play, false: stop + */ + TimelineModel.prototype.getPlayState = function () { + return !!this.option.autoPlay; + }; + /** + * @private + */ + TimelineModel.prototype._initData = function () { + var thisOption = this.option; + var dataArr = thisOption.data || []; + var axisType = thisOption.axisType; + var names = this._names = []; + var processedDataArr; + if (axisType === 'category') { + processedDataArr = []; + each(dataArr, function (item, index) { + var value = convertOptionIdName(getDataItemValue(item), ''); + var newItem; + if (isObject(item)) { + newItem = clone(item); + newItem.value = index; + } else { + newItem = index; + } + processedDataArr.push(newItem); + names.push(value); + }); + } else { + processedDataArr = dataArr; + } + var dimType = { + category: 'ordinal', + time: 'time', + value: 'number' + }[axisType] || 'number'; + var data = this._data = new SeriesData([{ + name: 'value', + type: dimType + }], this); + data.initData(processedDataArr, names); + }; + TimelineModel.prototype.getData = function () { + return this._data; + }; + /** + * @public + * @return {Array.} categoreis + */ + TimelineModel.prototype.getCategories = function () { + if (this.get('axisType') === 'category') { + return this._names.slice(); + } + }; + TimelineModel.type = 'timeline'; + /** + * @protected + */ + TimelineModel.defaultOption = { + // zlevel: 0, // 一级层叠 + z: 4, + show: true, + axisType: 'time', + realtime: true, + left: '20%', + top: null, + right: '20%', + bottom: 0, + width: null, + height: 40, + padding: 5, + controlPosition: 'left', + autoPlay: false, + rewind: false, + loop: true, + playInterval: 2000, + currentIndex: 0, + itemStyle: {}, + label: { + color: '#000' + }, + data: [] + }; + return TimelineModel; + }(ComponentModel); + + var SliderTimelineModel = /** @class */function (_super) { + __extends(SliderTimelineModel, _super); + function SliderTimelineModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SliderTimelineModel.type; + return _this; + } + SliderTimelineModel.type = 'timeline.slider'; + /** + * @protected + */ + SliderTimelineModel.defaultOption = inheritDefaultOption(TimelineModel.defaultOption, { + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#ccc', + borderWidth: 0, + orient: 'horizontal', + inverse: false, + tooltip: { + trigger: 'item' // data item may also have tootip attr. + }, + + symbol: 'circle', + symbolSize: 12, + lineStyle: { + show: true, + width: 2, + color: '#DAE1F5' + }, + label: { + position: 'auto', + // When using number, label position is not + // restricted by viewRect. + // positive: right/bottom, negative: left/top + show: true, + interval: 'auto', + rotate: 0, + // formatter: null, + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + 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)', + // borderColor: 'rgba(194,53,49, 0.5)', + animation: true, + animationDuration: 300, + animationEasing: 'quinticInOut' + }, + controlStyle: { + show: true, + showPlayBtn: true, + showPrevBtn: true, + showNextBtn: true, + 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', + // eslint-disable-next-line max-len + 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', + // eslint-disable-next-line max-len + 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: true, + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: '#6f778d' + }, + itemStyle: { + color: '#316BF3' + }, + controlStyle: { + color: '#316BF3', + borderColor: '#316BF3', + borderWidth: 2 + } + }, + progress: { + lineStyle: { + color: '#316BF3' + }, + itemStyle: { + color: '#316BF3' + }, + label: { + color: '#6f778d' + } + }, + data: [] + }); + return SliderTimelineModel; + }(TimelineModel); + mixin(SliderTimelineModel, DataFormatMixin.prototype); + + var TimelineView = /** @class */function (_super) { + __extends(TimelineView, _super); + function TimelineView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = TimelineView.type; + return _this; + } + TimelineView.type = 'timeline'; + return TimelineView; + }(ComponentView); + + /** + * Extend axis 2d + */ + var TimelineAxis = /** @class */function (_super) { + __extends(TimelineAxis, _super); + function TimelineAxis(dim, scale, coordExtent, axisType) { + var _this = _super.call(this, dim, scale, coordExtent) || this; + _this.type = axisType || 'value'; + return _this; + } + /** + * @override + */ + TimelineAxis.prototype.getLabelModel = function () { + // Force override + return this.model.getModel('label'); + }; + /** + * @override + */ + TimelineAxis.prototype.isHorizontal = function () { + return this.model.get('orient') === 'horizontal'; + }; + return TimelineAxis; + }(Axis); + + var PI$8 = Math.PI; + var labelDataIndexStore = makeInner(); + var SliderTimelineView = /** @class */function (_super) { + __extends(SliderTimelineView, _super); + function SliderTimelineView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SliderTimelineView.type; + return _this; + } + SliderTimelineView.prototype.init = function (ecModel, api) { + this.api = api; + }; + /** + * @override + */ + SliderTimelineView.prototype.render = function (timelineModel, ecModel, api) { + this.model = timelineModel; + this.api = api; + this.ecModel = ecModel; + this.group.removeAll(); + if (timelineModel.get('show', true)) { + var layoutInfo_1 = this._layout(timelineModel, api); + var mainGroup_1 = this._createGroup('_mainGroup'); + var labelGroup = this._createGroup('_labelGroup'); + var axis_1 = this._axis = this._createAxis(layoutInfo_1, timelineModel); + timelineModel.formatTooltip = function (dataIndex) { + var name = axis_1.scale.getLabel({ + value: dataIndex + }); + return createTooltipMarkup('nameValue', { + noName: true, + value: name + }); + }; + each(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (name) { + this['_render' + name](layoutInfo_1, mainGroup_1, axis_1, timelineModel); + }, this); + this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel); + this._position(layoutInfo_1, timelineModel); + } + this._doPlayStop(); + this._updateTicksStatus(); + }; + /** + * @override + */ + SliderTimelineView.prototype.remove = function () { + this._clearTimer(); + this.group.removeAll(); + }; + /** + * @override + */ + SliderTimelineView.prototype.dispose = function () { + this._clearTimer(); + }; + SliderTimelineView.prototype._layout = function (timelineModel, api) { + var labelPosOpt = timelineModel.get(['label', 'position']); + var orient = timelineModel.get('orient'); + var viewRect = getViewRect$5(timelineModel, api); + var parsedLabelPos; + // Auto label offset. + if (labelPosOpt == null || labelPosOpt === 'auto') { + parsedLabelPos = orient === 'horizontal' ? viewRect.y + viewRect.height / 2 < api.getHeight() / 2 ? '-' : '+' : viewRect.x + viewRect.width / 2 < api.getWidth() / 2 ? '+' : '-'; + } else if (isString(labelPosOpt)) { + parsedLabelPos = { + horizontal: { + top: '-', + bottom: '+' + }, + vertical: { + left: '-', + right: '+' + } + }[orient][labelPosOpt]; + } else { + // is number + parsedLabelPos = labelPosOpt; + } + var labelAlignMap = { + horizontal: 'center', + vertical: parsedLabelPos >= 0 || parsedLabelPos === '+' ? 'left' : 'right' + }; + var labelBaselineMap = { + horizontal: parsedLabelPos >= 0 || parsedLabelPos === '+' ? 'top' : 'bottom', + vertical: 'middle' + }; + var rotationMap = { + horizontal: 0, + vertical: PI$8 / 2 + }; + // Position + var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width; + var controlModel = timelineModel.getModel('controlStyle'); + var showControl = controlModel.get('show', true); + var controlSize = showControl ? controlModel.get('itemSize') : 0; + var controlGap = showControl ? controlModel.get('itemGap') : 0; + var sizePlusGap = controlSize + controlGap; + // Special label rotate. + var labelRotation = timelineModel.get(['label', 'rotate']) || 0; + labelRotation = labelRotation * PI$8 / 180; // To radian. + var playPosition; + var prevBtnPosition; + var nextBtnPosition; + var controlPosition = controlModel.get('position', true); + var showPlayBtn = showControl && controlModel.get('showPlayBtn', true); + var showPrevBtn = showControl && controlModel.get('showPrevBtn', true); + var showNextBtn = showControl && controlModel.get('showNextBtn', true); + var xLeft = 0; + var xRight = mainLength; + // position[0] means left, position[1] means middle. + if (controlPosition === 'left' || controlPosition === 'bottom') { + showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap); + showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap); + showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); + } else { + // 'top' 'right' + showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); + showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap); + showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); + } + var axisExtent = [xLeft, xRight]; + if (timelineModel.get('inverse')) { + axisExtent.reverse(); + } + return { + viewRect: viewRect, + mainLength: mainLength, + orient: orient, + rotation: rotationMap[orient], + labelRotation: labelRotation, + labelPosOpt: parsedLabelPos, + labelAlign: timelineModel.get(['label', 'align']) || labelAlignMap[orient], + labelBaseline: timelineModel.get(['label', 'verticalAlign']) || timelineModel.get(['label', 'baseline']) || labelBaselineMap[orient], + // Based on mainGroup. + playPosition: playPosition, + prevBtnPosition: prevBtnPosition, + nextBtnPosition: nextBtnPosition, + axisExtent: axisExtent, + controlSize: controlSize, + controlGap: controlGap + }; + }; + SliderTimelineView.prototype._position = function (layoutInfo, timelineModel) { + // Position is be called finally, because bounding rect is needed for + // adapt content to fill viewRect (auto adapt offset). + // Timeline may be not all in the viewRect when 'offset' is specified + // as a number, because it is more appropriate that label aligns at + // 'offset' but not the other edge defined by viewRect. + var mainGroup = this._mainGroup; + var labelGroup = this._labelGroup; + var viewRect = layoutInfo.viewRect; + if (layoutInfo.orient === 'vertical') { + // transform to horizontal, inverse rotate by left-top point. + var m = create$1(); + var rotateOriginX = viewRect.x; + var rotateOriginY = viewRect.y + viewRect.height; + translate(m, m, [-rotateOriginX, -rotateOriginY]); + rotate(m, m, -PI$8 / 2); + translate(m, m, [rotateOriginX, rotateOriginY]); + viewRect = viewRect.clone(); + viewRect.applyTransform(m); + } + var viewBound = getBound(viewRect); + var mainBound = getBound(mainGroup.getBoundingRect()); + var labelBound = getBound(labelGroup.getBoundingRect()); + var mainPosition = [mainGroup.x, mainGroup.y]; + var labelsPosition = [labelGroup.x, labelGroup.y]; + labelsPosition[0] = mainPosition[0] = viewBound[0][0]; + var labelPosOpt = layoutInfo.labelPosOpt; + if (labelPosOpt == null || isString(labelPosOpt)) { + // '+' or '-' + var mainBoundIdx = labelPosOpt === '+' ? 0 : 1; + toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); + toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx); + } else { + var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1; + toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); + labelsPosition[1] = mainPosition[1] + labelPosOpt; + } + mainGroup.setPosition(mainPosition); + labelGroup.setPosition(labelsPosition); + mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation; + setOrigin(mainGroup); + setOrigin(labelGroup); + function setOrigin(targetGroup) { + targetGroup.originX = viewBound[0][0] - targetGroup.x; + targetGroup.originY = viewBound[1][0] - targetGroup.y; + } + function getBound(rect) { + // [[xmin, xmax], [ymin, ymax]] + return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]]; + } + function toBound(fromPos, from, to, dimIdx, boundIdx) { + fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx]; + } + }; + SliderTimelineView.prototype._createAxis = function (layoutInfo, timelineModel) { + var data = timelineModel.getData(); + var axisType = timelineModel.get('axisType'); + var scale = createScaleByModel$1(timelineModel, axisType); + // Customize scale. The `tickValue` is `dataIndex`. + scale.getTicks = function () { + return data.mapArray(['value'], function (value) { + return { + value: value + }; + }); + }; + var dataExtent = data.getDataExtent('value'); + scale.setExtent(dataExtent[0], dataExtent[1]); + scale.calcNiceTicks(); + var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType); + axis.model = timelineModel; + return axis; + }; + SliderTimelineView.prototype._createGroup = function (key) { + var newGroup = this[key] = new Group(); + this.group.add(newGroup); + return newGroup; + }; + SliderTimelineView.prototype._renderAxisLine = function (layoutInfo, group, axis, timelineModel) { + var axisExtent = axis.getExtent(); + if (!timelineModel.get(['lineStyle', 'show'])) { + return; + } + var line = new Line({ + shape: { + x1: axisExtent[0], + y1: 0, + x2: axisExtent[1], + y2: 0 + }, + style: extend({ + lineCap: 'round' + }, timelineModel.getModel('lineStyle').getLineStyle()), + silent: true, + z2: 1 + }); + group.add(line); + var progressLine = this._progressLine = new Line({ + shape: { + x1: axisExtent[0], + x2: this._currentPointer ? this._currentPointer.x : axisExtent[0], + y1: 0, + y2: 0 + }, + style: defaults({ + lineCap: 'round', + lineWidth: line.style.lineWidth + }, timelineModel.getModel(['progress', 'lineStyle']).getLineStyle()), + silent: true, + z2: 1 + }); + group.add(progressLine); + }; + SliderTimelineView.prototype._renderAxisTick = function (layoutInfo, group, axis, timelineModel) { + var _this = this; + var data = timelineModel.getData(); + // Show all ticks, despite ignoring strategy. + var ticks = axis.scale.getTicks(); + this._tickSymbols = []; + // The value is dataIndex, see the customized scale. + each(ticks, function (tick) { + var tickCoord = axis.dataToCoord(tick.value); + var itemModel = data.getItemModel(tick.value); + var itemStyleModel = itemModel.getModel('itemStyle'); + var hoverStyleModel = itemModel.getModel(['emphasis', 'itemStyle']); + var progressStyleModel = itemModel.getModel(['progress', 'itemStyle']); + var symbolOpt = { + x: tickCoord, + y: 0, + onclick: bind(_this._changeTimeline, _this, tick.value) + }; + var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt); + el.ensureState('emphasis').style = hoverStyleModel.getItemStyle(); + el.ensureState('progress').style = progressStyleModel.getItemStyle(); + enableHoverEmphasis(el); + var ecData = getECData(el); + if (itemModel.get('tooltip')) { + ecData.dataIndex = tick.value; + ecData.dataModel = timelineModel; + } else { + ecData.dataIndex = ecData.dataModel = null; + } + _this._tickSymbols.push(el); + }); + }; + SliderTimelineView.prototype._renderAxisLabel = function (layoutInfo, group, axis, timelineModel) { + var _this = this; + var labelModel = axis.getLabelModel(); + if (!labelModel.get('show')) { + return; + } + var data = timelineModel.getData(); + var labels = axis.getViewLabels(); + this._tickLabels = []; + each(labels, function (labelItem) { + // The tickValue is dataIndex, see the customized scale. + var dataIndex = labelItem.tickValue; + var itemModel = data.getItemModel(dataIndex); + var normalLabelModel = itemModel.getModel('label'); + var hoverLabelModel = itemModel.getModel(['emphasis', 'label']); + var progressLabelModel = itemModel.getModel(['progress', 'label']); + var tickCoord = axis.dataToCoord(labelItem.tickValue); + var textEl = new ZRText({ + x: tickCoord, + y: 0, + rotation: layoutInfo.labelRotation - layoutInfo.rotation, + onclick: bind(_this._changeTimeline, _this, dataIndex), + silent: false, + style: createTextStyle(normalLabelModel, { + text: labelItem.formattedLabel, + align: layoutInfo.labelAlign, + verticalAlign: layoutInfo.labelBaseline + }) + }); + textEl.ensureState('emphasis').style = createTextStyle(hoverLabelModel); + textEl.ensureState('progress').style = createTextStyle(progressLabelModel); + group.add(textEl); + enableHoverEmphasis(textEl); + labelDataIndexStore(textEl).dataIndex = dataIndex; + _this._tickLabels.push(textEl); + }); + }; + SliderTimelineView.prototype._renderControl = function (layoutInfo, group, axis, timelineModel) { + var controlSize = layoutInfo.controlSize; + var rotation = layoutInfo.rotation; + var itemStyle = timelineModel.getModel('controlStyle').getItemStyle(); + var hoverStyle = timelineModel.getModel(['emphasis', 'controlStyle']).getItemStyle(); + var playState = timelineModel.getPlayState(); + var inverse = timelineModel.get('inverse', true); + makeBtn(layoutInfo.nextBtnPosition, 'next', bind(this._changeTimeline, this, inverse ? '-' : '+')); + makeBtn(layoutInfo.prevBtnPosition, 'prev', bind(this._changeTimeline, this, inverse ? '+' : '-')); + makeBtn(layoutInfo.playPosition, playState ? 'stop' : 'play', bind(this._handlePlayClick, this, !playState), true); + function makeBtn(position, iconName, onclick, willRotate) { + if (!position) { + return; + } + var iconSize = parsePercent(retrieve2(timelineModel.get(['controlStyle', iconName + 'BtnSize']), controlSize), controlSize); + var rect = [0, -iconSize / 2, iconSize, iconSize]; + var btn = makeControlIcon(timelineModel, iconName + 'Icon', rect, { + x: position[0], + y: position[1], + originX: controlSize / 2, + originY: 0, + rotation: willRotate ? -rotation : 0, + rectHover: true, + style: itemStyle, + onclick: onclick + }); + btn.ensureState('emphasis').style = hoverStyle; + group.add(btn); + enableHoverEmphasis(btn); + } + }; + SliderTimelineView.prototype._renderCurrentPointer = function (layoutInfo, group, axis, timelineModel) { + var data = timelineModel.getData(); + var currentIndex = timelineModel.getCurrentIndex(); + var pointerModel = data.getItemModel(currentIndex).getModel('checkpointStyle'); + var me = this; + var callback = { + onCreate: function (pointer) { + pointer.draggable = true; + pointer.drift = bind(me._handlePointerDrag, me); + pointer.ondragend = bind(me._handlePointerDragend, me); + pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel, true); + }, + onUpdate: function (pointer) { + pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel); + } + }; + // Reuse when exists, for animation and drag. + this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback); + }; + SliderTimelineView.prototype._handlePlayClick = function (nextState) { + this._clearTimer(); + this.api.dispatchAction({ + type: 'timelinePlayChange', + playState: nextState, + from: this.uid + }); + }; + SliderTimelineView.prototype._handlePointerDrag = function (dx, dy, e) { + this._clearTimer(); + this._pointerChangeTimeline([e.offsetX, e.offsetY]); + }; + SliderTimelineView.prototype._handlePointerDragend = function (e) { + this._pointerChangeTimeline([e.offsetX, e.offsetY], true); + }; + SliderTimelineView.prototype._pointerChangeTimeline = function (mousePos, trigger) { + var toCoord = this._toAxisCoord(mousePos)[0]; + var axis = this._axis; + var axisExtent = asc(axis.getExtent().slice()); + toCoord > axisExtent[1] && (toCoord = axisExtent[1]); + toCoord < axisExtent[0] && (toCoord = axisExtent[0]); + this._currentPointer.x = toCoord; + this._currentPointer.markRedraw(); + var progressLine = this._progressLine; + if (progressLine) { + progressLine.shape.x2 = toCoord; + progressLine.dirty(); + } + var targetDataIndex = this._findNearestTick(toCoord); + var timelineModel = this.model; + if (trigger || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get('realtime')) { + this._changeTimeline(targetDataIndex); + } + }; + SliderTimelineView.prototype._doPlayStop = function () { + var _this = this; + this._clearTimer(); + if (this.model.getPlayState()) { + this._timer = setTimeout(function () { + // Do not cache + var timelineModel = _this.model; + _this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get('rewind', true) ? -1 : 1)); + }, this.model.get('playInterval')); + } + }; + SliderTimelineView.prototype._toAxisCoord = function (vertex) { + var trans = this._mainGroup.getLocalTransform(); + return applyTransform$1(vertex, trans, true); + }; + SliderTimelineView.prototype._findNearestTick = function (axisCoord) { + var data = this.model.getData(); + var dist = Infinity; + var targetDataIndex; + var axis = this._axis; + data.each(['value'], function (value, dataIndex) { + var coord = axis.dataToCoord(value); + var d = Math.abs(coord - axisCoord); + if (d < dist) { + dist = d; + targetDataIndex = dataIndex; + } + }); + return targetDataIndex; + }; + SliderTimelineView.prototype._clearTimer = function () { + if (this._timer) { + clearTimeout(this._timer); + this._timer = null; + } + }; + SliderTimelineView.prototype._changeTimeline = function (nextIndex) { + var currentIndex = this.model.getCurrentIndex(); + if (nextIndex === '+') { + nextIndex = currentIndex + 1; + } else if (nextIndex === '-') { + nextIndex = currentIndex - 1; + } + this.api.dispatchAction({ + type: 'timelineChange', + currentIndex: nextIndex, + from: this.uid + }); + }; + SliderTimelineView.prototype._updateTicksStatus = function () { + var currentIndex = this.model.getCurrentIndex(); + var tickSymbols = this._tickSymbols; + var tickLabels = this._tickLabels; + if (tickSymbols) { + for (var i = 0; i < tickSymbols.length; i++) { + tickSymbols && tickSymbols[i] && tickSymbols[i].toggleState('progress', i < currentIndex); + } + } + if (tickLabels) { + for (var i = 0; i < tickLabels.length; i++) { + tickLabels && tickLabels[i] && tickLabels[i].toggleState('progress', labelDataIndexStore(tickLabels[i]).dataIndex <= currentIndex); + } + } + }; + SliderTimelineView.type = 'timeline.slider'; + return SliderTimelineView; + }(TimelineView); + function createScaleByModel$1(model, axisType) { + axisType = axisType || model.get('type'); + if (axisType) { + switch (axisType) { + // Buildin scale + case 'category': + return new OrdinalScale({ + ordinalMeta: model.getCategories(), + extent: [Infinity, -Infinity] + }); + case 'time': + return new TimeScale({ + locale: model.ecModel.getLocaleModel(), + useUTC: model.ecModel.get('useUTC') + }); + default: + // default to be value + return new IntervalScale(); + } + } + } + function getViewRect$5(model, api) { + return getLayoutRect(model.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }, model.get('padding')); + } + function makeControlIcon(timelineModel, objPath, rect, opts) { + var style = opts.style; + var icon = createIcon(timelineModel.get(['controlStyle', objPath]), opts || {}, new BoundingRect(rect[0], rect[1], rect[2], rect[3])); + // TODO createIcon won't use style in opt. + if (style) { + icon.setStyle(style); + } + return icon; + } + /** + * Create symbol or update symbol + * opt: basic position and event handlers + */ + function giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) { + var color = itemStyleModel.get('color'); + if (!symbol) { + var symbolType = hostModel.get('symbol'); + symbol = createSymbol(symbolType, -1, -1, 2, 2, color); + symbol.setStyle('strokeNoScale', true); + group.add(symbol); + callback && callback.onCreate(symbol); + } else { + symbol.setColor(color); + group.add(symbol); // Group may be new, also need to add. + callback && callback.onUpdate(symbol); + } + // Style + var itemStyle = itemStyleModel.getItemStyle(['color']); + symbol.setStyle(itemStyle); + // Transform and events. + opt = merge({ + rectHover: true, + z2: 100 + }, opt, true); + var symbolSize = normalizeSymbolSize(hostModel.get('symbolSize')); + opt.scaleX = symbolSize[0] / 2; + opt.scaleY = symbolSize[1] / 2; + var symbolOffset = normalizeSymbolOffset(hostModel.get('symbolOffset'), symbolSize); + if (symbolOffset) { + opt.x = (opt.x || 0) + symbolOffset[0]; + opt.y = (opt.y || 0) + symbolOffset[1]; + } + var symbolRotate = hostModel.get('symbolRotate'); + opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; + symbol.attr(opt); + // FIXME + // (1) When symbol.style.strokeNoScale is true and updateTransform is not performed, + // getBoundingRect will return wrong result. + // (This is supposed to be resolved in zrender, but it is a little difficult to + // leverage performance and auto updateTransform) + // (2) All of ancesters of symbol do not scale, so we can just updateTransform symbol. + symbol.updateTransform(); + return symbol; + } + function pointerMoveTo(pointer, progressLine, dataIndex, axis, timelineModel, noAnimation) { + if (pointer.dragging) { + return; + } + var pointerModel = timelineModel.getModel('checkpointStyle'); + var toCoord = axis.dataToCoord(timelineModel.getData().get('value', dataIndex)); + if (noAnimation || !pointerModel.get('animation', true)) { + pointer.attr({ + x: toCoord, + y: 0 + }); + progressLine && progressLine.attr({ + shape: { + x2: toCoord + } + }); + } else { + var animationCfg = { + duration: pointerModel.get('animationDuration', true), + easing: pointerModel.get('animationEasing', true) + }; + pointer.stopAnimation(null, true); + pointer.animateTo({ + x: toCoord, + y: 0 + }, animationCfg); + progressLine && progressLine.animateTo({ + shape: { + x2: toCoord + } + }, animationCfg); + } + } + + function installTimelineAction(registers) { + registers.registerAction({ + type: 'timelineChange', + event: 'timelineChanged', + update: 'prepareAndUpdate' + }, function (payload, ecModel, api) { + var timelineModel = ecModel.getComponent('timeline'); + if (timelineModel && payload.currentIndex != null) { + timelineModel.setCurrentIndex(payload.currentIndex); + if (!timelineModel.get('loop', true) && timelineModel.isIndexMax() && timelineModel.getPlayState()) { + timelineModel.setPlayState(false); + // The timeline has played to the end, trigger event + api.dispatchAction({ + type: 'timelinePlayChange', + playState: false, + from: payload.from + }); + } + } + // Set normalized currentIndex to payload. + ecModel.resetOption('timeline', { + replaceMerge: timelineModel.get('replaceMerge', true) + }); + return defaults({ + currentIndex: timelineModel.option.currentIndex + }, payload); + }); + registers.registerAction({ + type: 'timelinePlayChange', + event: 'timelinePlayChanged', + update: 'update' + }, function (payload, ecModel) { + var timelineModel = ecModel.getComponent('timeline'); + if (timelineModel && payload.playState != null) { + timelineModel.setPlayState(payload.playState); + } + }); + } + + function timelinePreprocessor(option) { + var timelineOpt = option && option.timeline; + if (!isArray(timelineOpt)) { + timelineOpt = timelineOpt ? [timelineOpt] : []; + } + each(timelineOpt, function (opt) { + if (!opt) { + return; + } + compatibleEC2(opt); + }); + } + function compatibleEC2(opt) { + var type = opt.type; + var ec2Types = { + 'number': 'value', + 'time': 'time' + }; + // Compatible with ec2 + if (ec2Types[type]) { + opt.axisType = ec2Types[type]; + delete opt.type; + } + transferItem(opt); + if (has(opt, 'controlPosition')) { + var controlStyle = opt.controlStyle || (opt.controlStyle = {}); + if (!has(controlStyle, 'position')) { + controlStyle.position = opt.controlPosition; + } + if (controlStyle.position === 'none' && !has(controlStyle, 'show')) { + controlStyle.show = false; + delete controlStyle.position; + } + delete opt.controlPosition; + } + each(opt.data || [], function (dataItem) { + if (isObject(dataItem) && !isArray(dataItem)) { + if (!has(dataItem, 'value') && has(dataItem, 'name')) { + // In ec2, using name as value. + dataItem.value = dataItem.name; + } + transferItem(dataItem); + } + }); + } + function transferItem(opt) { + var itemStyle = opt.itemStyle || (opt.itemStyle = {}); + var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); + // Transfer label out + var label = opt.label || opt.label || {}; + var labelNormal = label.normal || (label.normal = {}); + var excludeLabelAttr = { + normal: 1, + emphasis: 1 + }; + each(label, function (value, name) { + if (!excludeLabelAttr[name] && !has(labelNormal, name)) { + labelNormal[name] = value; + } + }); + if (itemStyleEmphasis.label && !has(label, 'emphasis')) { + label.emphasis = itemStyleEmphasis.label; + delete itemStyleEmphasis.label; + } + } + function has(obj, attr) { + return obj.hasOwnProperty(attr); + } + + function install$D(registers) { + registers.registerComponentModel(SliderTimelineModel); + registers.registerComponentView(SliderTimelineView); + registers.registerSubTypeDefaulter('timeline', function () { + // Only slider now. + return 'slider'; + }); + installTimelineAction(registers); + registers.registerPreprocessor(timelinePreprocessor); + } + + function checkMarkerInSeries(seriesOpts, markerType) { + if (!seriesOpts) { + return false; + } + var seriesOptArr = isArray(seriesOpts) ? seriesOpts : [seriesOpts]; + for (var idx = 0; idx < seriesOptArr.length; idx++) { + if (seriesOptArr[idx] && seriesOptArr[idx][markerType]) { + return true; + } + } + return false; + } + + function fillLabel(opt) { + defaultEmphasis(opt, 'label', ['show']); + } + // { [componentType]: MarkerModel } + var inner$g = makeInner(); + var MarkerModel = /** @class */function (_super) { + __extends(MarkerModel, _super); + function MarkerModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MarkerModel.type; + /** + * If marker model is created by self from series + */ + _this.createdBySelf = false; + return _this; + } + /** + * @overrite + */ + MarkerModel.prototype.init = function (option, parentModel, ecModel) { + if ("development" !== 'production') { + if (this.type === 'marker') { + throw new Error('Marker component is abstract component. Use markLine, markPoint, markArea instead.'); + } + } + this.mergeDefaultAndTheme(option, ecModel); + this._mergeOption(option, ecModel, false, true); + }; + MarkerModel.prototype.isAnimationEnabled = function () { + if (env.node) { + return false; + } + var hostSeries = this.__hostSeries; + return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled(); + }; + /** + * @overrite + */ + MarkerModel.prototype.mergeOption = function (newOpt, ecModel) { + this._mergeOption(newOpt, ecModel, false, false); + }; + MarkerModel.prototype._mergeOption = function (newOpt, ecModel, createdBySelf, isInit) { + var componentType = this.mainType; + if (!createdBySelf) { + ecModel.eachSeries(function (seriesModel) { + // mainType can be markPoint, markLine, markArea + var markerOpt = seriesModel.get(this.mainType, true); + var markerModel = inner$g(seriesModel)[componentType]; + if (!markerOpt || !markerOpt.data) { + inner$g(seriesModel)[componentType] = null; + return; + } + if (!markerModel) { + if (isInit) { + // Default label emphasis `position` and `show` + fillLabel(markerOpt); + } + each(markerOpt.data, function (item) { + // FIXME Overwrite fillLabel method ? + if (item instanceof Array) { + fillLabel(item[0]); + fillLabel(item[1]); + } else { + fillLabel(item); + } + }); + markerModel = this.createMarkerModelFromSeries(markerOpt, this, ecModel); + // markerModel = new ImplementedMarkerModel( + // markerOpt, this, ecModel + // ); + extend(markerModel, { + mainType: this.mainType, + // Use the same series index and name + seriesIndex: seriesModel.seriesIndex, + name: seriesModel.name, + createdBySelf: true + }); + markerModel.__hostSeries = seriesModel; + } else { + markerModel._mergeOption(markerOpt, ecModel, true); + } + inner$g(seriesModel)[componentType] = markerModel; + }, this); + } + }; + MarkerModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { + var data = this.getData(); + var value = this.getRawValue(dataIndex); + var itemName = data.getName(dataIndex); + return createTooltipMarkup('section', { + header: this.name, + blocks: [createTooltipMarkup('nameValue', { + name: itemName, + value: value, + noName: !itemName, + noValue: value == null + })] + }); + }; + MarkerModel.prototype.getData = function () { + return this._data; + }; + MarkerModel.prototype.setData = function (data) { + this._data = data; + }; + MarkerModel.getMarkerModelFromSeries = function (seriesModel, + // Support three types of markers. Strict check. + componentType) { + return inner$g(seriesModel)[componentType]; + }; + MarkerModel.type = 'marker'; + MarkerModel.dependencies = ['series', 'grid', 'polar', 'geo']; + return MarkerModel; + }(ComponentModel); + mixin(MarkerModel, DataFormatMixin.prototype); + + var MarkPointModel = /** @class */function (_super) { + __extends(MarkPointModel, _super); + function MarkPointModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MarkPointModel.type; + return _this; + } + MarkPointModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) { + return new MarkPointModel(markerOpt, masterMarkerModel, ecModel); + }; + MarkPointModel.type = 'markPoint'; + MarkPointModel.defaultOption = { + // zlevel: 0, + z: 5, + symbol: 'pin', + symbolSize: 50, + // symbolRotate: 0, + // symbolOffset: [0, 0] + tooltip: { + trigger: 'item' + }, + label: { + show: true, + position: 'inside' + }, + itemStyle: { + borderWidth: 2 + }, + emphasis: { + label: { + show: true + } + } + }; + return MarkPointModel; + }(MarkerModel); + + function hasXOrY(item) { + return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y))); + } + function hasXAndY(item) { + return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y)); + } + function markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) { + var coordArr = []; + var stacked = isDimensionStacked(data, targetDataDim /* , otherDataDim */); + var calcDataDim = stacked ? data.getCalculationInfo('stackResultDimension') : targetDataDim; + var value = numCalculate(data, calcDataDim, markerType); + var dataIndex = data.indicesOfNearest(calcDataDim, value)[0]; + coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex); + coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex); + var coordArrValue = data.get(targetDataDim, dataIndex); + // Make it simple, do not visit all stacked value to count precision. + var precision = getPrecision(data.get(targetDataDim, dataIndex)); + precision = Math.min(precision, 20); + if (precision >= 0) { + coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision); + } + return [coordArr, coordArrValue]; + } + // TODO Specified percent + var markerTypeCalculator = { + min: curry(markerTypeCalculatorWithExtent, 'min'), + max: curry(markerTypeCalculatorWithExtent, 'max'), + average: curry(markerTypeCalculatorWithExtent, 'average'), + median: curry(markerTypeCalculatorWithExtent, 'median') + }; + /** + * Transform markPoint data item to format used in List by do the following + * 1. Calculate statistic like `max`, `min`, `average` + * 2. Convert `item.xAxis`, `item.yAxis` to `item.coord` array + */ + function dataTransform(seriesModel, item) { + if (!item) { + return; + } + var data = seriesModel.getData(); + var coordSys = seriesModel.coordinateSystem; + var dims = coordSys && coordSys.dimensions; + // 1. If not specify the position with pixel directly + // 2. If `coord` is not a data array. Which uses `xAxis`, + // `yAxis` to specify the coord on each dimension + // parseFloat first because item.x and item.y can be percent string like '20%' + if (!hasXAndY(item) && !isArray(item.coord) && isArray(dims)) { + var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel); + // Clone the option + // Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value + item = clone(item); + if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) { + var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim); + var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim); + var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex); + item.coord = coordInfo[0]; + // Force to use the value of calculated value. + // let item use the value without stack. + item.value = coordInfo[1]; + } else { + // FIXME Only has one of xAxis and yAxis. + item.coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; + } + } + // x y is provided + if (item.coord == null || !isArray(dims)) { + item.coord = []; + } else { + // Each coord support max, min, average + var coord = item.coord; + for (var i = 0; i < 2; i++) { + if (markerTypeCalculator[coord[i]]) { + coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]); + } + } + } + return item; + } + function getAxisInfo$1(item, data, coordSys, seriesModel) { + var ret = {}; + if (item.valueIndex != null || item.valueDim != null) { + ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim; + ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim)); + ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis); + ret.baseDataDim = data.mapDimension(ret.baseAxis.dim); + } else { + ret.baseAxis = seriesModel.getBaseAxis(); + ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis); + ret.baseDataDim = data.mapDimension(ret.baseAxis.dim); + ret.valueDataDim = data.mapDimension(ret.valueAxis.dim); + } + return ret; + } + function dataDimToCoordDim(seriesModel, dataDim) { + var dimItem = seriesModel.getData().getDimensionInfo(dataDim); + return dimItem && dimItem.coordDim; + } + /** + * Filter data which is out of coordinateSystem range + * [dataFilter description] + */ + function dataFilter$1( + // Currently only polar and cartesian has containData. + coordSys, item) { + // Always return true if there is no coordSys + return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true; + } + function zoneFilter( + // Currently only polar and cartesian has containData. + coordSys, item1, item2) { + // Always return true if there is no coordSys + return coordSys && coordSys.containZone && item1.coord && item2.coord && !hasXOrY(item1) && !hasXOrY(item2) ? coordSys.containZone(item1.coord, item2.coord) : true; + } + function createMarkerDimValueGetter(inCoordSys, dims) { + return inCoordSys ? function (item, dimName, dataIndex, dimIndex) { + var rawVal = dimIndex < 2 + // x, y, radius, angle + ? item.coord && item.coord[dimIndex] : item.value; + return parseDataValue(rawVal, dims[dimIndex]); + } : function (item, dimName, dataIndex, dimIndex) { + return parseDataValue(item.value, dims[dimIndex]); + }; + } + function numCalculate(data, valueDataDim, type) { + if (type === 'average') { + var sum_1 = 0; + var count_1 = 0; + data.each(valueDataDim, function (val, idx) { + if (!isNaN(val)) { + sum_1 += val; + count_1++; + } + }); + return sum_1 / count_1; + } else if (type === 'median') { + return data.getMedian(valueDataDim); + } else { + // max & min + return data.getDataExtent(valueDataDim)[type === 'max' ? 1 : 0]; + } + } + + var inner$h = makeInner(); + var MarkerView = /** @class */function (_super) { + __extends(MarkerView, _super); + function MarkerView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MarkerView.type; + return _this; + } + MarkerView.prototype.init = function () { + this.markerGroupMap = createHashMap(); + }; + MarkerView.prototype.render = function (markerModel, ecModel, api) { + var _this = this; + var markerGroupMap = this.markerGroupMap; + markerGroupMap.each(function (item) { + inner$h(item).keep = false; + }); + ecModel.eachSeries(function (seriesModel) { + var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type); + markerModel && _this.renderSeries(seriesModel, markerModel, ecModel, api); + }); + markerGroupMap.each(function (item) { + !inner$h(item).keep && _this.group.remove(item.group); + }); + }; + MarkerView.prototype.markKeep = function (drawGroup) { + inner$h(drawGroup).keep = true; + }; + MarkerView.prototype.toggleBlurSeries = function (seriesModelList, isBlur) { + var _this = this; + each(seriesModelList, function (seriesModel) { + var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type); + if (markerModel) { + var data = markerModel.getData(); + data.eachItemGraphicEl(function (el) { + if (el) { + isBlur ? enterBlur(el) : leaveBlur(el); + } + }); + } + }); + }; + MarkerView.type = 'marker'; + return MarkerView; + }(ComponentView); + + function updateMarkerLayout(mpData, seriesModel, api) { + var coordSys = seriesModel.coordinateSystem; + mpData.each(function (idx) { + var itemModel = mpData.getItemModel(idx); + var point; + var xPx = parsePercent$1(itemModel.get('x'), api.getWidth()); + var yPx = parsePercent$1(itemModel.get('y'), api.getHeight()); + if (!isNaN(xPx) && !isNaN(yPx)) { + point = [xPx, yPx]; + } + // Chart like bar may have there own marker positioning logic + else if (seriesModel.getMarkerPosition) { + // Use the getMarkerPosition + point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx)); + } else if (coordSys) { + var x = mpData.get(coordSys.dimensions[0], idx); + var y = mpData.get(coordSys.dimensions[1], idx); + point = coordSys.dataToPoint([x, y]); + } + // Use x, y if has any + if (!isNaN(xPx)) { + point[0] = xPx; + } + if (!isNaN(yPx)) { + point[1] = yPx; + } + mpData.setItemLayout(idx, point); + }); + } + var MarkPointView = /** @class */function (_super) { + __extends(MarkPointView, _super); + function MarkPointView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MarkPointView.type; + return _this; + } + MarkPointView.prototype.updateTransform = function (markPointModel, ecModel, api) { + ecModel.eachSeries(function (seriesModel) { + var mpModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markPoint'); + if (mpModel) { + updateMarkerLayout(mpModel.getData(), seriesModel, api); + this.markerGroupMap.get(seriesModel.id).updateLayout(); + } + }, this); + }; + MarkPointView.prototype.renderSeries = function (seriesModel, mpModel, ecModel, api) { + var coordSys = seriesModel.coordinateSystem; + var seriesId = seriesModel.id; + var seriesData = seriesModel.getData(); + var symbolDrawMap = this.markerGroupMap; + var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw()); + var mpData = createData(coordSys, seriesModel, mpModel); + // FIXME + mpModel.setData(mpData); + updateMarkerLayout(mpModel.getData(), seriesModel, api); + mpData.each(function (idx) { + var itemModel = mpData.getItemModel(idx); + var symbol = itemModel.getShallow('symbol'); + var symbolSize = itemModel.getShallow('symbolSize'); + var symbolRotate = itemModel.getShallow('symbolRotate'); + var symbolOffset = itemModel.getShallow('symbolOffset'); + var symbolKeepAspect = itemModel.getShallow('symbolKeepAspect'); + // TODO: refactor needed: single data item should not support callback function + if (isFunction(symbol) || isFunction(symbolSize) || isFunction(symbolRotate) || isFunction(symbolOffset)) { + var rawIdx = mpModel.getRawValue(idx); + var dataParams = mpModel.getDataParams(idx); + if (isFunction(symbol)) { + symbol = symbol(rawIdx, dataParams); + } + if (isFunction(symbolSize)) { + // FIXME 这里不兼容 ECharts 2.x,2.x 貌似参数是整个数据? + symbolSize = symbolSize(rawIdx, dataParams); + } + if (isFunction(symbolRotate)) { + symbolRotate = symbolRotate(rawIdx, dataParams); + } + if (isFunction(symbolOffset)) { + symbolOffset = symbolOffset(rawIdx, dataParams); + } + } + var style = itemModel.getModel('itemStyle').getItemStyle(); + var color = getVisualFromData(seriesData, 'color'); + if (!style.fill) { + style.fill = color; + } + mpData.setItemVisual(idx, { + symbol: symbol, + symbolSize: symbolSize, + symbolRotate: symbolRotate, + symbolOffset: symbolOffset, + symbolKeepAspect: symbolKeepAspect, + style: style + }); + }); + // TODO Text are wrong + symbolDraw.updateData(mpData); + this.group.add(symbolDraw.group); + // Set host model for tooltip + // FIXME + mpData.eachItemGraphicEl(function (el) { + el.traverse(function (child) { + getECData(child).dataModel = mpModel; + }); + }); + this.markKeep(symbolDraw); + symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent'); + }; + MarkPointView.type = 'markPoint'; + return MarkPointView; + }(MarkerView); + function createData(coordSys, seriesModel, mpModel) { + var coordDimsInfos; + if (coordSys) { + coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) { + var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; + // In map series data don't have lng and lat dimension. Fallback to same with coordSys + return extend(extend({}, info), { + name: coordDim, + // DON'T use ordinalMeta to parse and collect ordinal. + ordinalMeta: null + }); + }); + } else { + coordDimsInfos = [{ + name: 'value', + type: 'float' + }]; + } + var mpData = new SeriesData(coordDimsInfos, mpModel); + var dataOpt = map(mpModel.get('data'), curry(dataTransform, seriesModel)); + if (coordSys) { + dataOpt = filter(dataOpt, curry(dataFilter$1, coordSys)); + } + var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos); + mpData.initData(dataOpt, null, dimValueGetter); + return mpData; + } + + function install$E(registers) { + registers.registerComponentModel(MarkPointModel); + registers.registerComponentView(MarkPointView); + registers.registerPreprocessor(function (opt) { + if (checkMarkerInSeries(opt.series, 'markPoint')) { + // Make sure markPoint component is enabled + opt.markPoint = opt.markPoint || {}; + } + }); + } + + var MarkLineModel = /** @class */function (_super) { + __extends(MarkLineModel, _super); + function MarkLineModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MarkLineModel.type; + return _this; + } + MarkLineModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) { + return new MarkLineModel(markerOpt, masterMarkerModel, ecModel); + }; + MarkLineModel.type = 'markLine'; + MarkLineModel.defaultOption = { + // zlevel: 0, + z: 5, + symbol: ['circle', 'arrow'], + symbolSize: [8, 16], + // symbolRotate: 0, + symbolOffset: 0, + precision: 2, + tooltip: { + trigger: 'item' + }, + label: { + show: true, + position: 'end', + distance: 5 + }, + lineStyle: { + type: 'dashed' + }, + emphasis: { + label: { + show: true + }, + lineStyle: { + width: 3 + } + }, + animationEasing: 'linear' + }; + return MarkLineModel; + }(MarkerModel); + + var inner$i = makeInner(); + var markLineTransform = function (seriesModel, coordSys, mlModel, item) { + var data = seriesModel.getData(); + var itemArray; + if (!isArray(item)) { + // Special type markLine like 'min', 'max', 'average', 'median' + var mlType = item.type; + if (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median' + // In case + // data: [{ + // yAxis: 10 + // }] + || item.xAxis != null || item.yAxis != null) { + var valueAxis = void 0; + var value = void 0; + if (item.yAxis != null || item.xAxis != null) { + valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x'); + value = retrieve(item.yAxis, item.xAxis); + } else { + var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel); + valueAxis = axisInfo.valueAxis; + var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim); + value = numCalculate(data, valueDataDim, mlType); + } + var valueIndex = valueAxis.dim === 'x' ? 0 : 1; + var baseIndex = 1 - valueIndex; + // Normized to 2d data with start and end point + var mlFrom = clone(item); + var mlTo = { + coord: [] + }; + mlFrom.type = null; + mlFrom.coord = []; + mlFrom.coord[baseIndex] = -Infinity; + mlTo.coord[baseIndex] = Infinity; + var precision = mlModel.get('precision'); + if (precision >= 0 && isNumber(value)) { + value = +value.toFixed(Math.min(precision, 20)); + } + mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value; + itemArray = [mlFrom, mlTo, { + type: mlType, + valueIndex: item.valueIndex, + // Force to use the value of calculated value. + value: value + }]; + } else { + // Invalid data + if ("development" !== 'production') { + logError('Invalid markLine data.'); + } + itemArray = []; + } + } else { + itemArray = item; + } + var normalizedItem = [dataTransform(seriesModel, itemArray[0]), dataTransform(seriesModel, itemArray[1]), extend({}, itemArray[2])]; + // Avoid line data type is extended by from(to) data type + normalizedItem[2].type = normalizedItem[2].type || null; + // Merge from option and to option into line option + merge(normalizedItem[2], normalizedItem[0]); + merge(normalizedItem[2], normalizedItem[1]); + return normalizedItem; + }; + function isInfinity(val) { + return !isNaN(val) && !isFinite(val); + } + // If a markLine has one dim + function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) { + var otherDimIndex = 1 - dimIndex; + var dimName = coordSys.dimensions[dimIndex]; + return isInfinity(fromCoord[otherDimIndex]) && isInfinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]); + } + function markLineFilter(coordSys, item) { + if (coordSys.type === 'cartesian2d') { + var fromCoord = item[0].coord; + var toCoord = item[1].coord; + // In case + // { + // markLine: { + // data: [{ yAxis: 2 }] + // } + // } + if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) { + return true; + } + } + return dataFilter$1(coordSys, item[0]) && dataFilter$1(coordSys, item[1]); + } + function updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) { + var coordSys = seriesModel.coordinateSystem; + var itemModel = data.getItemModel(idx); + var point; + var xPx = parsePercent$1(itemModel.get('x'), api.getWidth()); + var yPx = parsePercent$1(itemModel.get('y'), api.getHeight()); + if (!isNaN(xPx) && !isNaN(yPx)) { + point = [xPx, yPx]; + } else { + // Chart like bar may have there own marker positioning logic + if (seriesModel.getMarkerPosition) { + // Use the getMarkerPosition + point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx)); + } else { + var dims = coordSys.dimensions; + var x = data.get(dims[0], idx); + var y = data.get(dims[1], idx); + point = coordSys.dataToPoint([x, y]); + } + // Expand line to the edge of grid if value on one axis is Inifnity + // In case + // markLine: { + // data: [{ + // yAxis: 2 + // // or + // type: 'average' + // }] + // } + if (isCoordinateSystemType(coordSys, 'cartesian2d')) { + // TODO: TYPE ts@4.1 may still infer it as Axis instead of Axis2D. Not sure if it's a bug + var xAxis = coordSys.getAxis('x'); + var yAxis = coordSys.getAxis('y'); + var dims = coordSys.dimensions; + if (isInfinity(data.get(dims[0], idx))) { + point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]); + } else if (isInfinity(data.get(dims[1], idx))) { + point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]); + } + } + // Use x, y if has any + if (!isNaN(xPx)) { + point[0] = xPx; + } + if (!isNaN(yPx)) { + point[1] = yPx; + } + } + data.setItemLayout(idx, point); + } + var MarkLineView = /** @class */function (_super) { + __extends(MarkLineView, _super); + function MarkLineView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MarkLineView.type; + return _this; + } + MarkLineView.prototype.updateTransform = function (markLineModel, ecModel, api) { + ecModel.eachSeries(function (seriesModel) { + var mlModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markLine'); + if (mlModel) { + var mlData_1 = mlModel.getData(); + var fromData_1 = inner$i(mlModel).from; + var toData_1 = inner$i(mlModel).to; + // Update visual and layout of from symbol and to symbol + fromData_1.each(function (idx) { + updateSingleMarkerEndLayout(fromData_1, idx, true, seriesModel, api); + updateSingleMarkerEndLayout(toData_1, idx, false, seriesModel, api); + }); + // Update layout of line + mlData_1.each(function (idx) { + mlData_1.setItemLayout(idx, [fromData_1.getItemLayout(idx), toData_1.getItemLayout(idx)]); + }); + this.markerGroupMap.get(seriesModel.id).updateLayout(); + } + }, this); + }; + MarkLineView.prototype.renderSeries = function (seriesModel, mlModel, ecModel, api) { + var coordSys = seriesModel.coordinateSystem; + var seriesId = seriesModel.id; + var seriesData = seriesModel.getData(); + var lineDrawMap = this.markerGroupMap; + var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw()); + this.group.add(lineDraw.group); + var mlData = createList$1(coordSys, seriesModel, mlModel); + var fromData = mlData.from; + var toData = mlData.to; + var lineData = mlData.line; + inner$i(mlModel).from = fromData; + inner$i(mlModel).to = toData; + // Line data for tooltip and formatter + mlModel.setData(lineData); + // TODO + // Functionally, `symbolSize` & `symbolOffset` can also be 2D array now. + // But the related logic and type definition are not finished yet. + // Finish it if required + var symbolType = mlModel.get('symbol'); + var symbolSize = mlModel.get('symbolSize'); + var symbolRotate = mlModel.get('symbolRotate'); + var symbolOffset = mlModel.get('symbolOffset'); + // TODO: support callback function like markPoint + if (!isArray(symbolType)) { + symbolType = [symbolType, symbolType]; + } + if (!isArray(symbolSize)) { + symbolSize = [symbolSize, symbolSize]; + } + if (!isArray(symbolRotate)) { + symbolRotate = [symbolRotate, symbolRotate]; + } + if (!isArray(symbolOffset)) { + symbolOffset = [symbolOffset, symbolOffset]; + } + // Update visual and layout of from symbol and to symbol + mlData.from.each(function (idx) { + updateDataVisualAndLayout(fromData, idx, true); + updateDataVisualAndLayout(toData, idx, false); + }); + // Update visual and layout of line + lineData.each(function (idx) { + var lineStyle = lineData.getItemModel(idx).getModel('lineStyle').getLineStyle(); + // lineData.setItemVisual(idx, { + // color: lineColor || fromData.getItemVisual(idx, 'color') + // }); + lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]); + if (lineStyle.stroke == null) { + lineStyle.stroke = fromData.getItemVisual(idx, 'style').fill; + } + lineData.setItemVisual(idx, { + fromSymbolKeepAspect: fromData.getItemVisual(idx, 'symbolKeepAspect'), + fromSymbolOffset: fromData.getItemVisual(idx, 'symbolOffset'), + fromSymbolRotate: fromData.getItemVisual(idx, 'symbolRotate'), + fromSymbolSize: fromData.getItemVisual(idx, 'symbolSize'), + fromSymbol: fromData.getItemVisual(idx, 'symbol'), + toSymbolKeepAspect: toData.getItemVisual(idx, 'symbolKeepAspect'), + toSymbolOffset: toData.getItemVisual(idx, 'symbolOffset'), + toSymbolRotate: toData.getItemVisual(idx, 'symbolRotate'), + toSymbolSize: toData.getItemVisual(idx, 'symbolSize'), + toSymbol: toData.getItemVisual(idx, 'symbol'), + style: lineStyle + }); + }); + lineDraw.updateData(lineData); + // Set host model for tooltip + // FIXME + mlData.line.eachItemGraphicEl(function (el) { + getECData(el).dataModel = mlModel; + el.traverse(function (child) { + getECData(child).dataModel = mlModel; + }); + }); + function updateDataVisualAndLayout(data, idx, isFrom) { + var itemModel = data.getItemModel(idx); + updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api); + var style = itemModel.getModel('itemStyle').getItemStyle(); + if (style.fill == null) { + style.fill = getVisualFromData(seriesData, 'color'); + } + data.setItemVisual(idx, { + symbolKeepAspect: itemModel.get('symbolKeepAspect'), + // `0` should be considered as a valid value, so use `retrieve2` instead of `||` + symbolOffset: retrieve2(itemModel.get('symbolOffset', true), symbolOffset[isFrom ? 0 : 1]), + symbolRotate: retrieve2(itemModel.get('symbolRotate', true), symbolRotate[isFrom ? 0 : 1]), + // TODO: when 2d array is supported, it should ignore parent + symbolSize: retrieve2(itemModel.get('symbolSize'), symbolSize[isFrom ? 0 : 1]), + symbol: retrieve2(itemModel.get('symbol', true), symbolType[isFrom ? 0 : 1]), + style: style + }); + } + this.markKeep(lineDraw); + lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent'); + }; + MarkLineView.type = 'markLine'; + return MarkLineView; + }(MarkerView); + function createList$1(coordSys, seriesModel, mlModel) { + var coordDimsInfos; + if (coordSys) { + coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) { + var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; + // In map series data don't have lng and lat dimension. Fallback to same with coordSys + return extend(extend({}, info), { + name: coordDim, + // DON'T use ordinalMeta to parse and collect ordinal. + ordinalMeta: null + }); + }); + } else { + coordDimsInfos = [{ + name: 'value', + type: 'float' + }]; + } + var fromData = new SeriesData(coordDimsInfos, mlModel); + var toData = new SeriesData(coordDimsInfos, mlModel); + // No dimensions + var lineData = new SeriesData([], mlModel); + var optData = map(mlModel.get('data'), curry(markLineTransform, seriesModel, coordSys, mlModel)); + if (coordSys) { + optData = filter(optData, curry(markLineFilter, coordSys)); + } + var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos); + fromData.initData(map(optData, function (item) { + return item[0]; + }), null, dimValueGetter); + toData.initData(map(optData, function (item) { + return item[1]; + }), null, dimValueGetter); + lineData.initData(map(optData, function (item) { + return item[2]; + })); + lineData.hasItemOption = true; + return { + from: fromData, + to: toData, + line: lineData + }; + } + + function install$F(registers) { + registers.registerComponentModel(MarkLineModel); + registers.registerComponentView(MarkLineView); + registers.registerPreprocessor(function (opt) { + if (checkMarkerInSeries(opt.series, 'markLine')) { + // Make sure markLine component is enabled + opt.markLine = opt.markLine || {}; + } + }); + } + + var MarkAreaModel = /** @class */function (_super) { + __extends(MarkAreaModel, _super); + function MarkAreaModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MarkAreaModel.type; + return _this; + } + MarkAreaModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) { + return new MarkAreaModel(markerOpt, masterMarkerModel, ecModel); + }; + MarkAreaModel.type = 'markArea'; + MarkAreaModel.defaultOption = { + // zlevel: 0, + // PENDING + z: 1, + tooltip: { + trigger: 'item' + }, + // markArea should fixed on the coordinate system + animation: false, + label: { + show: true, + position: 'top' + }, + itemStyle: { + // color and borderColor default to use color from series + // color: 'auto' + // borderColor: 'auto' + borderWidth: 0 + }, + emphasis: { + label: { + show: true, + position: 'top' + } + } + }; + return MarkAreaModel; + }(MarkerModel); + + var inner$j = makeInner(); + var markAreaTransform = function (seriesModel, coordSys, maModel, item) { + // item may be null + var item0 = item[0]; + var item1 = item[1]; + if (!item0 || !item1) { + return; + } + var lt = dataTransform(seriesModel, item0); + var rb = dataTransform(seriesModel, item1); + // FIXME make sure lt is less than rb + var ltCoord = lt.coord; + var rbCoord = rb.coord; + ltCoord[0] = retrieve(ltCoord[0], -Infinity); + ltCoord[1] = retrieve(ltCoord[1], -Infinity); + rbCoord[0] = retrieve(rbCoord[0], Infinity); + rbCoord[1] = retrieve(rbCoord[1], Infinity); + // Merge option into one + var result = mergeAll([{}, lt, rb]); + result.coord = [lt.coord, rb.coord]; + result.x0 = lt.x; + result.y0 = lt.y; + result.x1 = rb.x; + result.y1 = rb.y; + return result; + }; + function isInfinity$1(val) { + return !isNaN(val) && !isFinite(val); + } + // If a markArea has one dim + function ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) { + var otherDimIndex = 1 - dimIndex; + return isInfinity$1(fromCoord[otherDimIndex]) && isInfinity$1(toCoord[otherDimIndex]); + } + function markAreaFilter(coordSys, item) { + var fromCoord = item.coord[0]; + var toCoord = item.coord[1]; + var item0 = { + coord: fromCoord, + x: item.x0, + y: item.y0 + }; + var item1 = { + coord: toCoord, + x: item.x1, + y: item.y1 + }; + if (isCoordinateSystemType(coordSys, 'cartesian2d')) { + // In case + // { + // markArea: { + // data: [{ yAxis: 2 }] + // } + // } + if (fromCoord && toCoord && (ifMarkAreaHasOnlyDim(1, fromCoord, toCoord) || ifMarkAreaHasOnlyDim(0, fromCoord, toCoord))) { + return true; + } + // Directly returning true may also do the work, + // because markArea will not be shown automatically + // when it's not included in coordinate system. + // But filtering ahead can avoid keeping rendering markArea + // when there are too many of them. + return zoneFilter(coordSys, item0, item1); + } + return dataFilter$1(coordSys, item0) || dataFilter$1(coordSys, item1); + } + // dims can be ['x0', 'y0'], ['x1', 'y1'], ['x0', 'y1'], ['x1', 'y0'] + function getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) { + var coordSys = seriesModel.coordinateSystem; + var itemModel = data.getItemModel(idx); + var point; + var xPx = parsePercent$1(itemModel.get(dims[0]), api.getWidth()); + var yPx = parsePercent$1(itemModel.get(dims[1]), api.getHeight()); + if (!isNaN(xPx) && !isNaN(yPx)) { + point = [xPx, yPx]; + } else { + // Chart like bar may have there own marker positioning logic + if (seriesModel.getMarkerPosition) { + // Consider the case that user input the right-bottom point first + // Pick the larger x and y as 'x1' and 'y1' + var pointValue0 = data.getValues(['x0', 'y0'], idx); + var pointValue1 = data.getValues(['x1', 'y1'], idx); + var clampPointValue0 = coordSys.clampData(pointValue0); + var clampPointValue1 = coordSys.clampData(pointValue1); + var pointValue = []; + if (dims[0] === 'x0') { + pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue1[0] : pointValue0[0]; + } else { + pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue0[0] : pointValue1[0]; + } + if (dims[1] === 'y0') { + pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue1[1] : pointValue0[1]; + } else { + pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue0[1] : pointValue1[1]; + } + // Use the getMarkerPosition + point = seriesModel.getMarkerPosition(pointValue, dims, true); + } else { + var x = data.get(dims[0], idx); + var y = data.get(dims[1], idx); + var pt = [x, y]; + coordSys.clampData && coordSys.clampData(pt, pt); + point = coordSys.dataToPoint(pt, true); + } + if (isCoordinateSystemType(coordSys, 'cartesian2d')) { + // TODO: TYPE ts@4.1 may still infer it as Axis instead of Axis2D. Not sure if it's a bug + var xAxis = coordSys.getAxis('x'); + var yAxis = coordSys.getAxis('y'); + var x = data.get(dims[0], idx); + var y = data.get(dims[1], idx); + if (isInfinity$1(x)) { + point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]); + } else if (isInfinity$1(y)) { + point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]); + } + } + // Use x, y if has any + if (!isNaN(xPx)) { + point[0] = xPx; + } + if (!isNaN(yPx)) { + point[1] = yPx; + } + } + return point; + } + var dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']]; + var MarkAreaView = /** @class */function (_super) { + __extends(MarkAreaView, _super); + function MarkAreaView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = MarkAreaView.type; + return _this; + } + MarkAreaView.prototype.updateTransform = function (markAreaModel, ecModel, api) { + ecModel.eachSeries(function (seriesModel) { + var maModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markArea'); + if (maModel) { + var areaData_1 = maModel.getData(); + areaData_1.each(function (idx) { + var points = map(dimPermutations, function (dim) { + return getSingleMarkerEndPoint(areaData_1, idx, dim, seriesModel, api); + }); + // Layout + areaData_1.setItemLayout(idx, points); + var el = areaData_1.getItemGraphicEl(idx); + el.setShape('points', points); + }); + } + }, this); + }; + MarkAreaView.prototype.renderSeries = function (seriesModel, maModel, ecModel, api) { + var coordSys = seriesModel.coordinateSystem; + var seriesId = seriesModel.id; + var seriesData = seriesModel.getData(); + var areaGroupMap = this.markerGroupMap; + var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, { + group: new Group() + }); + this.group.add(polygonGroup.group); + this.markKeep(polygonGroup); + var areaData = createList$2(coordSys, seriesModel, maModel); + // Line data for tooltip and formatter + maModel.setData(areaData); + // Update visual and layout of line + areaData.each(function (idx) { + // Layout + var points = map(dimPermutations, function (dim) { + return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api); + }); + var xAxisScale = coordSys.getAxis('x').scale; + var yAxisScale = coordSys.getAxis('y').scale; + var xAxisExtent = xAxisScale.getExtent(); + var yAxisExtent = yAxisScale.getExtent(); + var xPointExtent = [xAxisScale.parse(areaData.get('x0', idx)), xAxisScale.parse(areaData.get('x1', idx))]; + var yPointExtent = [yAxisScale.parse(areaData.get('y0', idx)), yAxisScale.parse(areaData.get('y1', idx))]; + asc(xPointExtent); + asc(yPointExtent); + var overlapped = !(xAxisExtent[0] > xPointExtent[1] || xAxisExtent[1] < xPointExtent[0] || yAxisExtent[0] > yPointExtent[1] || yAxisExtent[1] < yPointExtent[0]); + // If none of the area is inside coordSys, allClipped is set to be true + // in layout so that label will not be displayed. See #12591 + var allClipped = !overlapped; + areaData.setItemLayout(idx, { + points: points, + allClipped: allClipped + }); + var style = areaData.getItemModel(idx).getModel('itemStyle').getItemStyle(); + var color$1 = getVisualFromData(seriesData, 'color'); + if (!style.fill) { + style.fill = color$1; + if (isString(style.fill)) { + style.fill = modifyAlpha(style.fill, 0.4); + } + } + if (!style.stroke) { + style.stroke = color$1; + } + // Visual + areaData.setItemVisual(idx, 'style', style); + }); + areaData.diff(inner$j(polygonGroup).data).add(function (idx) { + var layout = areaData.getItemLayout(idx); + if (!layout.allClipped) { + var polygon = new Polygon({ + shape: { + points: layout.points + } + }); + areaData.setItemGraphicEl(idx, polygon); + polygonGroup.group.add(polygon); + } + }).update(function (newIdx, oldIdx) { + var polygon = inner$j(polygonGroup).data.getItemGraphicEl(oldIdx); + var layout = areaData.getItemLayout(newIdx); + if (!layout.allClipped) { + if (polygon) { + updateProps(polygon, { + shape: { + points: layout.points + } + }, maModel, newIdx); + } else { + polygon = new Polygon({ + shape: { + points: layout.points + } + }); + } + areaData.setItemGraphicEl(newIdx, polygon); + polygonGroup.group.add(polygon); + } else if (polygon) { + polygonGroup.group.remove(polygon); + } + }).remove(function (idx) { + var polygon = inner$j(polygonGroup).data.getItemGraphicEl(idx); + polygonGroup.group.remove(polygon); + }).execute(); + areaData.eachItemGraphicEl(function (polygon, idx) { + var itemModel = areaData.getItemModel(idx); + var style = areaData.getItemVisual(idx, 'style'); + polygon.useStyle(areaData.getItemVisual(idx, 'style')); + setLabelStyle(polygon, getLabelStatesModels(itemModel), { + labelFetcher: maModel, + labelDataIndex: idx, + defaultText: areaData.getName(idx) || '', + inheritColor: isString(style.fill) ? modifyAlpha(style.fill, 1) : '#000' + }); + setStatesStylesFromModel(polygon, itemModel); + toggleHoverEmphasis(polygon, null, null, itemModel.get(['emphasis', 'disabled'])); + getECData(polygon).dataModel = maModel; + }); + inner$j(polygonGroup).data = areaData; + polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent'); + }; + MarkAreaView.type = 'markArea'; + return MarkAreaView; + }(MarkerView); + function createList$2(coordSys, seriesModel, maModel) { + var areaData; + var dataDims; + var dims = ['x0', 'y0', 'x1', 'y1']; + if (coordSys) { + var coordDimsInfos_1 = map(coordSys && coordSys.dimensions, function (coordDim) { + var data = seriesModel.getData(); + var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {}; + // In map series data don't have lng and lat dimension. Fallback to same with coordSys + return extend(extend({}, info), { + name: coordDim, + // DON'T use ordinalMeta to parse and collect ordinal. + ordinalMeta: null + }); + }); + dataDims = map(dims, function (dim, idx) { + return { + name: dim, + type: coordDimsInfos_1[idx % 2].type + }; + }); + areaData = new SeriesData(dataDims, maModel); + } else { + dataDims = [{ + name: 'value', + type: 'float' + }]; + areaData = new SeriesData(dataDims, maModel); + } + var optData = map(maModel.get('data'), curry(markAreaTransform, seriesModel, coordSys, maModel)); + if (coordSys) { + optData = filter(optData, curry(markAreaFilter, coordSys)); + } + var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) { + // TODO should convert to ParsedValue? + var rawVal = item.coord[Math.floor(dimIndex / 2)][dimIndex % 2]; + return parseDataValue(rawVal, dataDims[dimIndex]); + } : function (item, dimName, dataIndex, dimIndex) { + return parseDataValue(item.value, dataDims[dimIndex]); + }; + areaData.initData(optData, null, dimValueGetter); + areaData.hasItemOption = true; + return areaData; + } + + function install$G(registers) { + registers.registerComponentModel(MarkAreaModel); + registers.registerComponentView(MarkAreaView); + registers.registerPreprocessor(function (opt) { + if (checkMarkerInSeries(opt.series, 'markArea')) { + // Make sure markArea component is enabled + opt.markArea = opt.markArea || {}; + } + }); + } + + var getDefaultSelectorOptions = function (ecModel, type) { + if (type === 'all') { + return { + type: 'all', + title: ecModel.getLocaleModel().get(['legend', 'selector', 'all']) + }; + } else if (type === 'inverse') { + return { + type: 'inverse', + title: ecModel.getLocaleModel().get(['legend', 'selector', 'inverse']) + }; + } + }; + var LegendModel = /** @class */function (_super) { + __extends(LegendModel, _super); + function LegendModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = LegendModel.type; + _this.layoutMode = { + type: 'box', + // legend.width/height are maxWidth/maxHeight actually, + // whereas real width/height is calculated by its content. + // (Setting {left: 10, right: 10} does not make sense). + // So consider the case: + // `setOption({legend: {left: 10});` + // then `setOption({legend: {right: 10});` + // The previous `left` should be cleared by setting `ignoreSize`. + ignoreSize: true + }; + return _this; + } + LegendModel.prototype.init = function (option, parentModel, ecModel) { + this.mergeDefaultAndTheme(option, ecModel); + option.selected = option.selected || {}; + this._updateSelector(option); + }; + LegendModel.prototype.mergeOption = function (option, ecModel) { + _super.prototype.mergeOption.call(this, option, ecModel); + this._updateSelector(option); + }; + LegendModel.prototype._updateSelector = function (option) { + var selector = option.selector; + var ecModel = this.ecModel; + if (selector === true) { + selector = option.selector = ['all', 'inverse']; + } + if (isArray(selector)) { + each(selector, function (item, index) { + isString(item) && (item = { + type: item + }); + selector[index] = merge(item, getDefaultSelectorOptions(ecModel, item.type)); + }); + } + }; + LegendModel.prototype.optionUpdated = function () { + this._updateData(this.ecModel); + var legendData = this._data; + // If selectedMode is single, try to select one + if (legendData[0] && this.get('selectedMode') === 'single') { + var hasSelected = false; + // If has any selected in option.selected + for (var i = 0; i < legendData.length; i++) { + var name_1 = legendData[i].get('name'); + if (this.isSelected(name_1)) { + // Force to unselect others + this.select(name_1); + hasSelected = true; + break; + } + } + // Try select the first if selectedMode is single + !hasSelected && this.select(legendData[0].get('name')); + } + }; + LegendModel.prototype._updateData = function (ecModel) { + var potentialData = []; + var availableNames = []; + ecModel.eachRawSeries(function (seriesModel) { + var seriesName = seriesModel.name; + availableNames.push(seriesName); + var isPotential; + if (seriesModel.legendVisualProvider) { + var provider = seriesModel.legendVisualProvider; + var names = provider.getAllNames(); + if (!ecModel.isSeriesFiltered(seriesModel)) { + availableNames = availableNames.concat(names); + } + if (names.length) { + potentialData = potentialData.concat(names); + } else { + isPotential = true; + } + } else { + isPotential = true; + } + if (isPotential && isNameSpecified(seriesModel)) { + potentialData.push(seriesModel.name); + } + }); + /** + * @type {Array.} + * @private + */ + this._availableNames = availableNames; + // If legend.data is not specified in option, use availableNames as data, + // which is convenient for user preparing option. + var rawData = this.get('data') || potentialData; + var legendNameMap = createHashMap(); + var legendData = map(rawData, function (dataItem) { + // Can be string or number + if (isString(dataItem) || isNumber(dataItem)) { + dataItem = { + name: dataItem + }; + } + if (legendNameMap.get(dataItem.name)) { + // remove legend name duplicate + return null; + } + legendNameMap.set(dataItem.name, true); + return new Model(dataItem, this, this.ecModel); + }, this); + /** + * @type {Array.} + * @private + */ + this._data = filter(legendData, function (item) { + return !!item; + }); + }; + LegendModel.prototype.getData = function () { + return this._data; + }; + LegendModel.prototype.select = function (name) { + var selected = this.option.selected; + var selectedMode = this.get('selectedMode'); + if (selectedMode === 'single') { + var data = this._data; + each(data, function (dataItem) { + selected[dataItem.get('name')] = false; + }); + } + selected[name] = true; + }; + LegendModel.prototype.unSelect = function (name) { + if (this.get('selectedMode') !== 'single') { + this.option.selected[name] = false; + } + }; + LegendModel.prototype.toggleSelected = function (name) { + var selected = this.option.selected; + // Default is true + if (!selected.hasOwnProperty(name)) { + selected[name] = true; + } + this[selected[name] ? 'unSelect' : 'select'](name); + }; + LegendModel.prototype.allSelect = function () { + var data = this._data; + var selected = this.option.selected; + each(data, function (dataItem) { + selected[dataItem.get('name', true)] = true; + }); + }; + LegendModel.prototype.inverseSelect = function () { + var data = this._data; + var selected = this.option.selected; + each(data, function (dataItem) { + var name = dataItem.get('name', true); + // Initially, default value is true + if (!selected.hasOwnProperty(name)) { + selected[name] = true; + } + selected[name] = !selected[name]; + }); + }; + LegendModel.prototype.isSelected = function (name) { + var selected = this.option.selected; + return !(selected.hasOwnProperty(name) && !selected[name]) && indexOf(this._availableNames, name) >= 0; + }; + LegendModel.prototype.getOrient = function () { + return this.get('orient') === 'vertical' ? { + index: 1, + name: 'vertical' + } : { + index: 0, + name: 'horizontal' + }; + }; + LegendModel.type = 'legend.plain'; + LegendModel.dependencies = ['series']; + LegendModel.defaultOption = { + // zlevel: 0, + z: 4, + show: true, + orient: 'horizontal', + left: 'center', + // right: 'center', + top: 0, + // bottom: null, + 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: true, + 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: true, + selector: false, + selectorLabel: { + show: true, + borderRadius: 10, + padding: [3, 5, 3, 5], + fontSize: 12, + fontFamily: 'sans-serif', + color: '#666', + borderWidth: 1, + borderColor: '#666' + }, + emphasis: { + selectorLabel: { + show: true, + color: '#eee', + backgroundColor: '#666' + } + }, + selectorPosition: 'auto', + selectorItemGap: 7, + selectorButtonGap: 10, + tooltip: { + show: false + } + }; + return LegendModel; + }(ComponentModel); + + var curry$1 = curry; + var each$c = each; + var Group$2 = Group; + var LegendView = /** @class */function (_super) { + __extends(LegendView, _super); + function LegendView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = LegendView.type; + _this.newlineDisabled = false; + return _this; + } + LegendView.prototype.init = function () { + this.group.add(this._contentGroup = new Group$2()); + this.group.add(this._selectorGroup = new Group$2()); + this._isFirstRender = true; + }; + /** + * @protected + */ + LegendView.prototype.getContentGroup = function () { + return this._contentGroup; + }; + /** + * @protected + */ + LegendView.prototype.getSelectorGroup = function () { + return this._selectorGroup; + }; + /** + * @override + */ + LegendView.prototype.render = function (legendModel, ecModel, api) { + var isFirstRender = this._isFirstRender; + this._isFirstRender = false; + this.resetInner(); + if (!legendModel.get('show', true)) { + return; + } + var itemAlign = legendModel.get('align'); + var orient = legendModel.get('orient'); + if (!itemAlign || itemAlign === 'auto') { + itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left'; + } + // selector has been normalized to an array in model + var selector = legendModel.get('selector', true); + var selectorPosition = legendModel.get('selectorPosition', true); + if (selector && (!selectorPosition || selectorPosition === 'auto')) { + selectorPosition = orient === 'horizontal' ? 'end' : 'start'; + } + this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); + // Perform layout. + var positionInfo = legendModel.getBoxLayoutParams(); + var viewportSize = { + width: api.getWidth(), + height: api.getHeight() + }; + var padding = legendModel.get('padding'); + var maxSize = getLayoutRect(positionInfo, viewportSize, padding); + var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); + // Place mainGroup, based on the calculated `mainRect`. + var layoutRect = getLayoutRect(defaults({ + width: mainRect.width, + height: mainRect.height + }, positionInfo), viewportSize, padding); + this.group.x = layoutRect.x - mainRect.x; + this.group.y = layoutRect.y - mainRect.y; + this.group.markRedraw(); + // Render background after group is layout. + this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel)); + }; + LegendView.prototype.resetInner = function () { + this.getContentGroup().removeAll(); + this._backgroundEl && this.group.remove(this._backgroundEl); + this.getSelectorGroup().removeAll(); + }; + LegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) { + var contentGroup = this.getContentGroup(); + var legendDrawnMap = createHashMap(); + var selectMode = legendModel.get('selectedMode'); + var excludeSeriesId = []; + ecModel.eachRawSeries(function (seriesModel) { + !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id); + }); + each$c(legendModel.getData(), function (legendItemModel, dataIndex) { + var name = legendItemModel.get('name'); + // Use empty string or \n as a newline string + if (!this.newlineDisabled && (name === '' || name === '\n')) { + var g = new Group$2(); + // @ts-ignore + g.newline = true; + contentGroup.add(g); + return; + } + // Representitive series. + var seriesModel = ecModel.getSeriesByName(name)[0]; + if (legendDrawnMap.get(name)) { + // Have been drawn + return; + } + // Legend to control series. + if (seriesModel) { + var data = seriesModel.getData(); + var lineVisualStyle = data.getVisual('legendLineStyle') || {}; + var legendIcon = data.getVisual('legendIcon'); + /** + * `data.getVisual('style')` may be the color from the register + * in series. For example, for line series, + */ + var style = data.getVisual('style'); + var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, style, legendIcon, selectMode, api); + itemGroup.on('click', curry$1(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry$1(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry$1(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId)); + if (ecModel.ssr) { + itemGroup.eachChild(function (child) { + var ecData = getECData(child); + ecData.seriesIndex = seriesModel.seriesIndex; + ecData.dataIndex = dataIndex; + ecData.ssrType = 'legend'; + }); + } + legendDrawnMap.set(name, true); + } else { + // Legend to control data. In pie and funnel. + ecModel.eachRawSeries(function (seriesModel) { + // In case multiple series has same data name + if (legendDrawnMap.get(name)) { + return; + } + if (seriesModel.legendVisualProvider) { + var provider = seriesModel.legendVisualProvider; + if (!provider.containName(name)) { + return; + } + var idx = provider.indexOfName(name); + var style = provider.getItemVisual(idx, 'style'); + var legendIcon = provider.getItemVisual(idx, 'legendIcon'); + var colorArr = parse(style.fill); + // Color may be set to transparent in visualMap when data is out of range. + // Do not show nothing. + if (colorArr && colorArr[3] === 0) { + colorArr[3] = 0.2; + // TODO color is set to 0, 0, 0, 0. Should show correct RGBA + style = extend(extend({}, style), { + fill: stringify(colorArr, 'rgba') + }); + } + var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, {}, style, legendIcon, selectMode, api); + // FIXME: consider different series has items with the same name. + itemGroup.on('click', curry$1(dispatchSelectAction, null, name, api, excludeSeriesId)) + // Should not specify the series name, consider legend controls + // more than one pie series. + .on('mouseover', curry$1(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry$1(dispatchDownplayAction, null, name, api, excludeSeriesId)); + if (ecModel.ssr) { + itemGroup.eachChild(function (child) { + var ecData = getECData(child); + ecData.seriesIndex = seriesModel.seriesIndex; + ecData.dataIndex = dataIndex; + ecData.ssrType = 'legend'; + }); + } + legendDrawnMap.set(name, true); + } + }, this); + } + if ("development" !== 'production') { + if (!legendDrawnMap.get(name)) { + console.warn(name + ' series not exists. Legend data should be same with series name or data name.'); + } + } + }, this); + if (selector) { + this._createSelector(selector, legendModel, api, orient, selectorPosition); + } + }; + LegendView.prototype._createSelector = function (selector, legendModel, api, orient, selectorPosition) { + var selectorGroup = this.getSelectorGroup(); + each$c(selector, function createSelectorButton(selectorItem) { + var type = selectorItem.type; + var labelText = new ZRText({ + style: { + x: 0, + y: 0, + align: 'center', + verticalAlign: 'middle' + }, + onclick: function () { + api.dispatchAction({ + type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect' + }); + } + }); + selectorGroup.add(labelText); + var labelModel = legendModel.getModel('selectorLabel'); + var emphasisLabelModel = legendModel.getModel(['emphasis', 'selectorLabel']); + setLabelStyle(labelText, { + normal: labelModel, + emphasis: emphasisLabelModel + }, { + defaultText: selectorItem.title + }); + enableHoverEmphasis(labelText); + }); + }; + LegendView.prototype._createItem = function (seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, itemVisualStyle, legendIcon, selectMode, api) { + var drawType = seriesModel.visualDrawType; + var itemWidth = legendModel.get('itemWidth'); + var itemHeight = legendModel.get('itemHeight'); + var isSelected = legendModel.isSelected(name); + var iconRotate = legendItemModel.get('symbolRotate'); + var symbolKeepAspect = legendItemModel.get('symbolKeepAspect'); + var legendIconType = legendItemModel.get('icon'); + legendIcon = legendIconType || legendIcon || 'roundRect'; + var style = getLegendStyle(legendIcon, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api); + var itemGroup = new Group$2(); + var textStyleModel = legendItemModel.getModel('textStyle'); + if (isFunction(seriesModel.getLegendIcon) && (!legendIconType || legendIconType === 'inherit')) { + // Series has specific way to define legend icon + itemGroup.add(seriesModel.getLegendIcon({ + itemWidth: itemWidth, + itemHeight: itemHeight, + icon: legendIcon, + iconRotate: iconRotate, + itemStyle: style.itemStyle, + lineStyle: style.lineStyle, + symbolKeepAspect: symbolKeepAspect + })); + } else { + // Use default legend icon policy for most series + var rotate = legendIconType === 'inherit' && seriesModel.getData().getVisual('symbol') ? iconRotate === 'inherit' ? seriesModel.getData().getVisual('symbolRotate') : iconRotate : 0; // No rotation for no icon + itemGroup.add(getDefaultLegendIcon({ + itemWidth: itemWidth, + itemHeight: itemHeight, + icon: legendIcon, + iconRotate: rotate, + itemStyle: style.itemStyle, + lineStyle: style.lineStyle, + symbolKeepAspect: symbolKeepAspect + })); + } + var textX = itemAlign === 'left' ? itemWidth + 5 : -5; + var textAlign = itemAlign; + var formatter = legendModel.get('formatter'); + var content = name; + if (isString(formatter) && formatter) { + content = formatter.replace('{name}', name != null ? name : ''); + } else if (isFunction(formatter)) { + content = formatter(name); + } + var textColor = isSelected ? textStyleModel.getTextColor() : legendItemModel.get('inactiveColor'); + itemGroup.add(new ZRText({ + style: createTextStyle(textStyleModel, { + text: content, + x: textX, + y: itemHeight / 2, + fill: textColor, + align: textAlign, + verticalAlign: 'middle' + }, { + inheritColor: textColor + }) + })); + // Add a invisible rect to increase the area of mouse hover + var hitRect = new Rect({ + shape: itemGroup.getBoundingRect(), + style: { + // Cannot use 'invisible' because SVG SSR will miss the node + fill: 'transparent' + } + }); + var tooltipModel = legendItemModel.getModel('tooltip'); + if (tooltipModel.get('show')) { + setTooltipConfig({ + el: hitRect, + componentModel: legendModel, + itemName: name, + itemTooltipOption: tooltipModel.option + }); + } + itemGroup.add(hitRect); + itemGroup.eachChild(function (child) { + child.silent = true; + }); + hitRect.silent = !selectMode; + this.getContentGroup().add(itemGroup); + enableHoverEmphasis(itemGroup); + // @ts-ignore + itemGroup.__legendDataIndex = dataIndex; + return itemGroup; + }; + LegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) { + var contentGroup = this.getContentGroup(); + var selectorGroup = this.getSelectorGroup(); + // Place items in contentGroup. + box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height); + var contentRect = contentGroup.getBoundingRect(); + var contentPos = [-contentRect.x, -contentRect.y]; + selectorGroup.markRedraw(); + contentGroup.markRedraw(); + if (selector) { + // Place buttons in selectorGroup + box( + // Buttons in selectorGroup always layout horizontally + 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true)); + var selectorRect = selectorGroup.getBoundingRect(); + var selectorPos = [-selectorRect.x, -selectorRect.y]; + var selectorButtonGap = legendModel.get('selectorButtonGap', true); + var orientIdx = legendModel.getOrient().index; + var wh = orientIdx === 0 ? 'width' : 'height'; + var hw = orientIdx === 0 ? 'height' : 'width'; + var yx = orientIdx === 0 ? 'y' : 'x'; + if (selectorPosition === 'end') { + selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap; + } else { + contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap; + } + // Always align selector to content as 'middle' + selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2; + selectorGroup.x = selectorPos[0]; + selectorGroup.y = selectorPos[1]; + contentGroup.x = contentPos[0]; + contentGroup.y = contentPos[1]; + var mainRect = { + x: 0, + y: 0 + }; + mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh]; + mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]); + mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]); + return mainRect; + } else { + contentGroup.x = contentPos[0]; + contentGroup.y = contentPos[1]; + return this.group.getBoundingRect(); + } + }; + /** + * @protected + */ + LegendView.prototype.remove = function () { + this.getContentGroup().removeAll(); + this._isFirstRender = true; + }; + LegendView.type = 'legend.plain'; + return LegendView; + }(ComponentView); + function getLegendStyle(iconType, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api) { + /** + * Use series style if is inherit; + * elsewise, use legend style + */ + function handleCommonProps(style, visualStyle) { + // If lineStyle.width is 'auto', it is set to be 2 if series has border + if (style.lineWidth === 'auto') { + style.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0; + } + each$c(style, function (propVal, propName) { + style[propName] === 'inherit' && (style[propName] = visualStyle[propName]); + }); + } + // itemStyle + var itemStyleModel = legendItemModel.getModel('itemStyle'); + var itemStyle = itemStyleModel.getItemStyle(); + var iconBrushType = iconType.lastIndexOf('empty', 0) === 0 ? 'fill' : 'stroke'; + var decalStyle = itemStyleModel.getShallow('decal'); + itemStyle.decal = !decalStyle || decalStyle === 'inherit' ? itemVisualStyle.decal : createOrUpdatePatternFromDecal(decalStyle, api); + if (itemStyle.fill === 'inherit') { + /** + * Series with visualDrawType as 'stroke' should have + * series stroke as legend fill + */ + itemStyle.fill = itemVisualStyle[drawType]; + } + if (itemStyle.stroke === 'inherit') { + /** + * icon type with "emptyXXX" should use fill color + * in visual style + */ + itemStyle.stroke = itemVisualStyle[iconBrushType]; + } + if (itemStyle.opacity === 'inherit') { + /** + * Use lineStyle.opacity if drawType is stroke + */ + itemStyle.opacity = (drawType === 'fill' ? itemVisualStyle : lineVisualStyle).opacity; + } + handleCommonProps(itemStyle, itemVisualStyle); + // lineStyle + var legendLineModel = legendItemModel.getModel('lineStyle'); + var lineStyle = legendLineModel.getLineStyle(); + handleCommonProps(lineStyle, lineVisualStyle); + // Fix auto color to real color + itemStyle.fill === 'auto' && (itemStyle.fill = itemVisualStyle.fill); + itemStyle.stroke === 'auto' && (itemStyle.stroke = itemVisualStyle.fill); + lineStyle.stroke === 'auto' && (lineStyle.stroke = itemVisualStyle.fill); + if (!isSelected) { + var borderWidth = legendItemModel.get('inactiveBorderWidth'); + /** + * Since stroke is set to be inactiveBorderColor, it may occur that + * there is no border in series but border in legend, so we need to + * use border only when series has border if is set to be auto + */ + var visualHasBorder = itemStyle[iconBrushType]; + itemStyle.lineWidth = borderWidth === 'auto' ? itemVisualStyle.lineWidth > 0 && visualHasBorder ? 2 : 0 : itemStyle.lineWidth; + itemStyle.fill = legendItemModel.get('inactiveColor'); + itemStyle.stroke = legendItemModel.get('inactiveBorderColor'); + lineStyle.stroke = legendLineModel.get('inactiveColor'); + lineStyle.lineWidth = legendLineModel.get('inactiveWidth'); + } + return { + itemStyle: itemStyle, + lineStyle: lineStyle + }; + } + function getDefaultLegendIcon(opt) { + var symboType = opt.icon || 'roundRect'; + var icon = createSymbol(symboType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill, opt.symbolKeepAspect); + icon.setStyle(opt.itemStyle); + icon.rotation = (opt.iconRotate || 0) * Math.PI / 180; + icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]); + if (symboType.indexOf('empty') > -1) { + icon.style.stroke = icon.style.fill; + icon.style.fill = '#fff'; + icon.style.lineWidth = 2; + } + return icon; + } + function dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) { + // downplay before unselect + dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId); + api.dispatchAction({ + type: 'legendToggleSelect', + name: seriesName != null ? seriesName : dataName + }); + // highlight after select + // TODO highlight immediately may cause animation loss. + dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId); + } + function isUseHoverLayer(api) { + var list = api.getZr().storage.getDisplayList(); + var emphasisState; + var i = 0; + var len = list.length; + while (i < len && !(emphasisState = list[i].states.emphasis)) { + i++; + } + return emphasisState && emphasisState.hoverLayer; + } + function dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) { + // If element hover will move to a hoverLayer. + if (!isUseHoverLayer(api)) { + api.dispatchAction({ + type: 'highlight', + seriesName: seriesName, + name: dataName, + excludeSeriesId: excludeSeriesId + }); + } + } + function dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) { + // If element hover will move to a hoverLayer. + if (!isUseHoverLayer(api)) { + api.dispatchAction({ + type: 'downplay', + seriesName: seriesName, + name: dataName, + excludeSeriesId: excludeSeriesId + }); + } + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function legendFilter(ecModel) { + var legendModels = ecModel.findComponents({ + mainType: 'legend' + }); + if (legendModels && legendModels.length) { + ecModel.filterSeries(function (series) { + // If in any legend component the status is not selected. + // Because in legend series is assumed selected when it is not in the legend data. + for (var i = 0; i < legendModels.length; i++) { + if (!legendModels[i].isSelected(series.name)) { + return false; + } + } + return true; + }); + } + } + + function legendSelectActionHandler(methodName, payload, ecModel) { + var selectedMap = {}; + var isToggleSelect = methodName === 'toggleSelected'; + var isSelected; + // Update all legend components + ecModel.eachComponent('legend', function (legendModel) { + if (isToggleSelect && isSelected != null) { + // Force other legend has same selected status + // Or the first is toggled to true and other are toggled to false + // In the case one legend has some item unSelected in option. And if other legend + // doesn't has the item, they will assume it is selected. + legendModel[isSelected ? 'select' : 'unSelect'](payload.name); + } else if (methodName === 'allSelect' || methodName === 'inverseSelect') { + legendModel[methodName](); + } else { + legendModel[methodName](payload.name); + isSelected = legendModel.isSelected(payload.name); + } + var legendData = legendModel.getData(); + each(legendData, function (model) { + var name = model.get('name'); + // Wrap element + if (name === '\n' || name === '') { + return; + } + var isItemSelected = legendModel.isSelected(name); + if (selectedMap.hasOwnProperty(name)) { + // Unselected if any legend is unselected + selectedMap[name] = selectedMap[name] && isItemSelected; + } else { + selectedMap[name] = isItemSelected; + } + }); + }); + // Return the event explicitly + return methodName === 'allSelect' || methodName === 'inverseSelect' ? { + selected: selectedMap + } : { + name: payload.name, + selected: selectedMap + }; + } + function installLegendAction(registers) { + /** + * @event legendToggleSelect + * @type {Object} + * @property {string} type 'legendToggleSelect' + * @property {string} [from] + * @property {string} name Series name or data item name + */ + registers.registerAction('legendToggleSelect', 'legendselectchanged', curry(legendSelectActionHandler, 'toggleSelected')); + registers.registerAction('legendAllSelect', 'legendselectall', curry(legendSelectActionHandler, 'allSelect')); + registers.registerAction('legendInverseSelect', 'legendinverseselect', curry(legendSelectActionHandler, 'inverseSelect')); + /** + * @event legendSelect + * @type {Object} + * @property {string} type 'legendSelect' + * @property {string} name Series name or data item name + */ + registers.registerAction('legendSelect', 'legendselected', curry(legendSelectActionHandler, 'select')); + /** + * @event legendUnSelect + * @type {Object} + * @property {string} type 'legendUnSelect' + * @property {string} name Series name or data item name + */ + registers.registerAction('legendUnSelect', 'legendunselected', curry(legendSelectActionHandler, 'unSelect')); + } + + function install$H(registers) { + registers.registerComponentModel(LegendModel); + registers.registerComponentView(LegendView); + registers.registerProcessor(registers.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter); + registers.registerSubTypeDefaulter('legend', function () { + return 'plain'; + }); + installLegendAction(registers); + } + + var ScrollableLegendModel = /** @class */function (_super) { + __extends(ScrollableLegendModel, _super); + function ScrollableLegendModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ScrollableLegendModel.type; + return _this; + } + /** + * @param {number} scrollDataIndex + */ + ScrollableLegendModel.prototype.setScrollDataIndex = function (scrollDataIndex) { + this.option.scrollDataIndex = scrollDataIndex; + }; + ScrollableLegendModel.prototype.init = function (option, parentModel, ecModel) { + var inputPositionParams = getLayoutParams(option); + _super.prototype.init.call(this, option, parentModel, ecModel); + mergeAndNormalizeLayoutParams$1(this, option, inputPositionParams); + }; + /** + * @override + */ + ScrollableLegendModel.prototype.mergeOption = function (option, ecModel) { + _super.prototype.mergeOption.call(this, option, ecModel); + mergeAndNormalizeLayoutParams$1(this, this.option, option); + }; + ScrollableLegendModel.type = 'legend.scroll'; + ScrollableLegendModel.defaultOption = inheritDefaultOption(LegendModel.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 + }); + return ScrollableLegendModel; + }(LegendModel); + // Do not `ignoreSize` to enable setting {left: 10, right: 10}. + function mergeAndNormalizeLayoutParams$1(legendModel, target, raw) { + var orient = legendModel.getOrient(); + var ignoreSize = [1, 1]; + ignoreSize[orient.index] = 0; + mergeLayoutParam(target, raw, { + type: 'box', + ignoreSize: !!ignoreSize + }); + } + + var Group$3 = Group; + var WH$1 = ['width', 'height']; + var XY$1 = ['x', 'y']; + var ScrollableLegendView = /** @class */function (_super) { + __extends(ScrollableLegendView, _super); + function ScrollableLegendView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ScrollableLegendView.type; + _this.newlineDisabled = true; + _this._currentIndex = 0; + return _this; + } + ScrollableLegendView.prototype.init = function () { + _super.prototype.init.call(this); + this.group.add(this._containerGroup = new Group$3()); + this._containerGroup.add(this.getContentGroup()); + this.group.add(this._controllerGroup = new Group$3()); + }; + /** + * @override + */ + ScrollableLegendView.prototype.resetInner = function () { + _super.prototype.resetInner.call(this); + this._controllerGroup.removeAll(); + this._containerGroup.removeClipPath(); + this._containerGroup.__rectSize = null; + }; + /** + * @override + */ + ScrollableLegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) { + var self = this; + // Render content items. + _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); + var controllerGroup = this._controllerGroup; + // FIXME: support be 'auto' adapt to size number text length, + // e.g., '3/12345' should not overlap with the control arrow button. + var pageIconSize = legendModel.get('pageIconSize', true); + var pageIconSizeArr = isArray(pageIconSize) ? pageIconSize : [pageIconSize, pageIconSize]; + createPageButton('pagePrev', 0); + var pageTextStyleModel = legendModel.getModel('pageTextStyle'); + controllerGroup.add(new ZRText({ + name: 'pageText', + style: { + // Placeholder to calculate a proper layout. + text: 'xx/xx', + fill: pageTextStyleModel.getTextColor(), + font: pageTextStyleModel.getFont(), + verticalAlign: 'middle', + align: 'center' + }, + silent: true + })); + createPageButton('pageNext', 1); + function createPageButton(name, iconIdx) { + var pageDataIndexName = name + 'DataIndex'; + var icon = createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], { + // Buttons will be created in each render, so we do not need + // to worry about avoiding using legendModel kept in scope. + onclick: bind(self._pageGo, self, pageDataIndexName, legendModel, api) + }, { + x: -pageIconSizeArr[0] / 2, + y: -pageIconSizeArr[1] / 2, + width: pageIconSizeArr[0], + height: pageIconSizeArr[1] + }); + icon.name = name; + controllerGroup.add(icon); + } + }; + /** + * @override + */ + ScrollableLegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) { + var selectorGroup = this.getSelectorGroup(); + var orientIdx = legendModel.getOrient().index; + var wh = WH$1[orientIdx]; + var xy = XY$1[orientIdx]; + var hw = WH$1[1 - orientIdx]; + var yx = XY$1[1 - orientIdx]; + selector && box( + // Buttons in selectorGroup always layout horizontally + 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true)); + var selectorButtonGap = legendModel.get('selectorButtonGap', true); + var selectorRect = selectorGroup.getBoundingRect(); + var selectorPos = [-selectorRect.x, -selectorRect.y]; + var processMaxSize = clone(maxSize); + selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap); + var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy); + if (selector) { + if (selectorPosition === 'end') { + selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap; + } else { + var offset = selectorRect[wh] + selectorButtonGap; + selectorPos[orientIdx] -= offset; + mainRect[xy] -= offset; + } + mainRect[wh] += selectorRect[wh] + selectorButtonGap; + selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2; + mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]); + mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]); + selectorGroup.x = selectorPos[0]; + selectorGroup.y = selectorPos[1]; + selectorGroup.markRedraw(); + } + return mainRect; + }; + ScrollableLegendView.prototype._layoutContentAndController = function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) { + var contentGroup = this.getContentGroup(); + var containerGroup = this._containerGroup; + var controllerGroup = this._controllerGroup; + // Place items in contentGroup. + box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height); + box( + // Buttons in controller are layout always horizontally. + 'horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true)); + var contentRect = contentGroup.getBoundingRect(); + var controllerRect = controllerGroup.getBoundingRect(); + var showController = this._showController = contentRect[wh] > maxSize[wh]; + // In case that the inner elements of contentGroup layout do not based on [0, 0] + var contentPos = [-contentRect.x, -contentRect.y]; + // Remain contentPos when scroll animation perfroming. + // If first rendering, `contentGroup.position` is [0, 0], which + // does not make sense and may cause unexepcted animation if adopted. + if (!isFirstRender) { + contentPos[orientIdx] = contentGroup[xy]; + } + // Layout container group based on 0. + var containerPos = [0, 0]; + var controllerPos = [-controllerRect.x, -controllerRect.y]; + var pageButtonGap = retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true)); + // Place containerGroup and controllerGroup and contentGroup. + if (showController) { + var pageButtonPosition = legendModel.get('pageButtonPosition', true); + // controller is on the right / bottom. + if (pageButtonPosition === 'end') { + controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh]; + } + // controller is on the left / top. + else { + containerPos[orientIdx] += controllerRect[wh] + pageButtonGap; + } + } + // Always align controller to content as 'middle'. + controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2; + contentGroup.setPosition(contentPos); + containerGroup.setPosition(containerPos); + controllerGroup.setPosition(controllerPos); + // Calculate `mainRect` and set `clipPath`. + // mainRect should not be calculated by `this.group.getBoundingRect()` + // for sake of the overflow. + var mainRect = { + x: 0, + y: 0 + }; + // Consider content may be overflow (should be clipped). + mainRect[wh] = showController ? maxSize[wh] : contentRect[wh]; + mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); + // `containerRect[yx] + containerPos[1 - orientIdx]` is 0. + mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]); + containerGroup.__rectSize = maxSize[wh]; + if (showController) { + var clipShape = { + x: 0, + y: 0 + }; + clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0); + clipShape[hw] = mainRect[hw]; + containerGroup.setClipPath(new Rect({ + shape: clipShape + })); + // Consider content may be larger than container, container rect + // can not be obtained from `containerGroup.getBoundingRect()`. + containerGroup.__rectSize = clipShape[wh]; + } else { + // Do not remove or ignore controller. Keep them set as placeholders. + controllerGroup.eachChild(function (child) { + child.attr({ + invisible: true, + silent: true + }); + }); + } + // Content translate animation. + var pageInfo = this._getPageInfo(legendModel); + pageInfo.pageIndex != null && updateProps(contentGroup, { + x: pageInfo.contentPosition[0], + y: pageInfo.contentPosition[1] + }, + // When switch from "show controller" to "not show controller", view should be + // updated immediately without animation, otherwise causes weird effect. + showController ? legendModel : null); + this._updatePageInfoView(legendModel, pageInfo); + return mainRect; + }; + ScrollableLegendView.prototype._pageGo = function (to, legendModel, api) { + var scrollDataIndex = this._getPageInfo(legendModel)[to]; + scrollDataIndex != null && api.dispatchAction({ + type: 'legendScroll', + scrollDataIndex: scrollDataIndex, + legendId: legendModel.id + }); + }; + ScrollableLegendView.prototype._updatePageInfoView = function (legendModel, pageInfo) { + var controllerGroup = this._controllerGroup; + each(['pagePrev', 'pageNext'], function (name) { + var key = name + 'DataIndex'; + var canJump = pageInfo[key] != null; + var icon = controllerGroup.childOfName(name); + if (icon) { + icon.setStyle('fill', canJump ? legendModel.get('pageIconColor', true) : legendModel.get('pageIconInactiveColor', true)); + icon.cursor = canJump ? 'pointer' : 'default'; + } + }); + var pageText = controllerGroup.childOfName('pageText'); + var pageFormatter = legendModel.get('pageFormatter'); + var pageIndex = pageInfo.pageIndex; + var current = pageIndex != null ? pageIndex + 1 : 0; + var total = pageInfo.pageCount; + pageText && pageFormatter && pageText.setStyle('text', isString(pageFormatter) ? pageFormatter.replace('{current}', current == null ? '' : current + '').replace('{total}', total == null ? '' : total + '') : pageFormatter({ + current: current, + total: total + })); + }; + /** + * contentPosition: Array., null when data item not found. + * pageIndex: number, null when data item not found. + * pageCount: number, always be a number, can be 0. + * pagePrevDataIndex: number, null when no previous page. + * pageNextDataIndex: number, null when no next page. + * } + */ + ScrollableLegendView.prototype._getPageInfo = function (legendModel) { + var scrollDataIndex = legendModel.get('scrollDataIndex', true); + var contentGroup = this.getContentGroup(); + var containerRectSize = this._containerGroup.__rectSize; + var orientIdx = legendModel.getOrient().index; + var wh = WH$1[orientIdx]; + var xy = XY$1[orientIdx]; + var targetItemIndex = this._findTargetItemIndex(scrollDataIndex); + var children = contentGroup.children(); + var targetItem = children[targetItemIndex]; + var itemCount = children.length; + var pCount = !itemCount ? 0 : 1; + var result = { + contentPosition: [contentGroup.x, contentGroup.y], + pageCount: pCount, + pageIndex: pCount - 1, + pagePrevDataIndex: null, + pageNextDataIndex: null + }; + if (!targetItem) { + return result; + } + var targetItemInfo = getItemInfo(targetItem); + result.contentPosition[orientIdx] = -targetItemInfo.s; + // Strategy: + // (1) Always align based on the left/top most item. + // (2) It is user-friendly that the last item shown in the + // current window is shown at the begining of next window. + // Otherwise if half of the last item is cut by the window, + // it will have no chance to display entirely. + // (3) Consider that item size probably be different, we + // have calculate pageIndex by size rather than item index, + // and we can not get page index directly by division. + // (4) The window is to narrow to contain more than + // one item, we should make sure that the page can be fliped. + for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) { + currItemInfo = getItemInfo(children[i]); + if ( + // Half of the last item is out of the window. + !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize + // If the current item does not intersect with the window, the new page + // can be started at the current item or the last item. + || currItemInfo && !intersect(currItemInfo, winStartItemInfo.s)) { + if (winEndItemInfo.i > winStartItemInfo.i) { + winStartItemInfo = winEndItemInfo; + } else { + // e.g., when page size is smaller than item size. + winStartItemInfo = currItemInfo; + } + if (winStartItemInfo) { + if (result.pageNextDataIndex == null) { + result.pageNextDataIndex = winStartItemInfo.i; + } + ++result.pageCount; + } + } + winEndItemInfo = currItemInfo; + } + for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) { + currItemInfo = getItemInfo(children[i]); + if ( + // If the the end item does not intersect with the window started + // from the current item, a page can be settled. + (!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s) + // e.g., when page size is smaller than item size. + ) && winStartItemInfo.i < winEndItemInfo.i) { + winEndItemInfo = winStartItemInfo; + if (result.pagePrevDataIndex == null) { + result.pagePrevDataIndex = winStartItemInfo.i; + } + ++result.pageCount; + ++result.pageIndex; + } + winStartItemInfo = currItemInfo; + } + return result; + function getItemInfo(el) { + if (el) { + var itemRect = el.getBoundingRect(); + var start = itemRect[xy] + el[xy]; + return { + s: start, + e: start + itemRect[wh], + i: el.__legendDataIndex + }; + } + } + function intersect(itemInfo, winStart) { + return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize; + } + }; + ScrollableLegendView.prototype._findTargetItemIndex = function (targetDataIndex) { + if (!this._showController) { + return 0; + } + var index; + var contentGroup = this.getContentGroup(); + var defaultIndex; + contentGroup.eachChild(function (child, idx) { + var legendDataIdx = child.__legendDataIndex; + // FIXME + // If the given targetDataIndex (from model) is illegal, + // we use defaultIndex. But the index on the legend model and + // action payload is still illegal. That case will not be + // changed until some scenario requires. + if (defaultIndex == null && legendDataIdx != null) { + defaultIndex = idx; + } + if (legendDataIdx === targetDataIndex) { + index = idx; + } + }); + return index != null ? index : defaultIndex; + }; + ScrollableLegendView.type = 'legend.scroll'; + return ScrollableLegendView; + }(LegendView); + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + function installScrollableLegendAction(registers) { + /** + * @event legendScroll + * @type {Object} + * @property {string} type 'legendScroll' + * @property {string} scrollDataIndex + */ + registers.registerAction('legendScroll', 'legendscroll', function (payload, ecModel) { + var scrollDataIndex = payload.scrollDataIndex; + scrollDataIndex != null && ecModel.eachComponent({ + mainType: 'legend', + subType: 'scroll', + query: payload + }, function (legendModel) { + legendModel.setScrollDataIndex(scrollDataIndex); + }); + }); + } + + function install$I(registers) { + use(install$H); + registers.registerComponentModel(ScrollableLegendModel); + registers.registerComponentView(ScrollableLegendView); + installScrollableLegendAction(registers); + } + + function install$J(registers) { + use(install$H); + use(install$I); + } + + var InsideZoomModel = /** @class */function (_super) { + __extends(InsideZoomModel, _super); + function InsideZoomModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = InsideZoomModel.type; + return _this; + } + InsideZoomModel.type = 'dataZoom.inside'; + InsideZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, { + disabled: false, + zoomLock: false, + zoomOnMouseWheel: true, + moveOnMouseMove: true, + moveOnMouseWheel: false, + preventDefaultMouseMove: true + }); + return InsideZoomModel; + }(DataZoomModel); + + var inner$k = makeInner(); + function setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) { + inner$k(api).coordSysRecordMap.each(function (coordSysRecord) { + var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid); + if (dzInfo) { + dzInfo.getRange = getRange; + } + }); + } + function disposeCoordSysRecordIfNeeded(api, dataZoomModel) { + var coordSysRecordMap = inner$k(api).coordSysRecordMap; + var coordSysKeyArr = coordSysRecordMap.keys(); + for (var i = 0; i < coordSysKeyArr.length; i++) { + var coordSysKey = coordSysKeyArr[i]; + var coordSysRecord = coordSysRecordMap.get(coordSysKey); + var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap; + if (dataZoomInfoMap) { + var dzUid = dataZoomModel.uid; + var dzInfo = dataZoomInfoMap.get(dzUid); + if (dzInfo) { + dataZoomInfoMap.removeKey(dzUid); + if (!dataZoomInfoMap.keys().length) { + disposeCoordSysRecord(coordSysRecordMap, coordSysRecord); + } + } + } + } + } + function disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) { + if (coordSysRecord) { + coordSysRecordMap.removeKey(coordSysRecord.model.uid); + var controller = coordSysRecord.controller; + controller && controller.dispose(); + } + } + function createCoordSysRecord(api, coordSysModel) { + // These init props will never change after record created. + var coordSysRecord = { + model: coordSysModel, + containsPoint: curry(containsPoint, coordSysModel), + dispatchAction: curry(dispatchAction$1, api), + dataZoomInfoMap: null, + controller: null + }; + // Must not do anything depends on coordSysRecord outside the event handler here, + // because coordSysRecord not completed yet. + var controller = coordSysRecord.controller = new RoamController(api.getZr()); + each(['pan', 'zoom', 'scrollMove'], function (eventName) { + controller.on(eventName, function (event) { + var batch = []; + coordSysRecord.dataZoomInfoMap.each(function (dzInfo) { + // Check whether the behaviors (zoomOnMouseWheel, moveOnMouseMove, + // moveOnMouseWheel, ...) enabled. + if (!event.isAvailableBehavior(dzInfo.model.option)) { + return; + } + var method = (dzInfo.getRange || {})[eventName]; + var range = method && method(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event); + !dzInfo.model.get('disabled', true) && range && batch.push({ + dataZoomId: dzInfo.model.id, + start: range[0], + end: range[1] + }); + }); + batch.length && coordSysRecord.dispatchAction(batch); + }); + }); + return coordSysRecord; + } + /** + * This action will be throttled. + */ + function dispatchAction$1(api, batch) { + if (!api.isDisposed()) { + api.dispatchAction({ + type: 'dataZoom', + animation: { + easing: 'cubicOut', + duration: 100 + }, + batch: batch + }); + } + } + function containsPoint(coordSysModel, e, x, y) { + return coordSysModel.coordinateSystem.containPoint([x, y]); + } + /** + * Merge roamController settings when multiple dataZooms share one roamController. + */ + function mergeControllerParams(dataZoomInfoMap) { + var controlType; + // DO NOT use reserved word (true, false, undefined) as key literally. Even if encapsulated + // as string, it is probably revert to reserved word by compress tool. See #7411. + var prefix = 'type_'; + var typePriority = { + 'type_true': 2, + 'type_move': 1, + 'type_false': 0, + 'type_undefined': -1 + }; + var preventDefaultMouseMove = true; + dataZoomInfoMap.each(function (dataZoomInfo) { + var dataZoomModel = dataZoomInfo.model; + var oneType = dataZoomModel.get('disabled', true) ? false : dataZoomModel.get('zoomLock', true) ? 'move' : true; + if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) { + controlType = oneType; + } + // Prevent default move event by default. If one false, do not prevent. Otherwise + // users may be confused why it does not work when multiple insideZooms exist. + preventDefaultMouseMove = preventDefaultMouseMove && dataZoomModel.get('preventDefaultMouseMove', true); + }); + return { + controlType: controlType, + opt: { + // RoamController will enable all of these functionalities, + // and the final behavior is determined by its event listener + // provided by each inside zoom. + zoomOnMouseWheel: true, + moveOnMouseMove: true, + moveOnMouseWheel: true, + preventDefaultMouseMove: !!preventDefaultMouseMove + } + }; + } + function installDataZoomRoamProcessor(registers) { + registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, function (ecModel, api) { + var apiInner = inner$k(api); + var coordSysRecordMap = apiInner.coordSysRecordMap || (apiInner.coordSysRecordMap = createHashMap()); + coordSysRecordMap.each(function (coordSysRecord) { + // `coordSysRecordMap` always exists (because it holds the `roam controller`, which should + // better not re-create each time), but clear `dataZoomInfoMap` each round of the workflow. + coordSysRecord.dataZoomInfoMap = null; + }); + ecModel.eachComponent({ + mainType: 'dataZoom', + subType: 'inside' + }, function (dataZoomModel) { + var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel); + each(dzReferCoordSysWrap.infoList, function (dzCoordSysInfo) { + var coordSysUid = dzCoordSysInfo.model.uid; + var coordSysRecord = coordSysRecordMap.get(coordSysUid) || coordSysRecordMap.set(coordSysUid, createCoordSysRecord(api, dzCoordSysInfo.model)); + var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap || (coordSysRecord.dataZoomInfoMap = createHashMap()); + // Notice these props might be changed each time for a single dataZoomModel. + dataZoomInfoMap.set(dataZoomModel.uid, { + dzReferCoordSysInfo: dzCoordSysInfo, + model: dataZoomModel, + getRange: null + }); + }); + }); + // (1) Merge dataZoom settings for each coord sys and set to the roam controller. + // (2) Clear coord sys if not refered by any dataZoom. + coordSysRecordMap.each(function (coordSysRecord) { + var controller = coordSysRecord.controller; + var firstDzInfo; + var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap; + if (dataZoomInfoMap) { + var firstDzKey = dataZoomInfoMap.keys()[0]; + if (firstDzKey != null) { + firstDzInfo = dataZoomInfoMap.get(firstDzKey); + } + } + if (!firstDzInfo) { + disposeCoordSysRecord(coordSysRecordMap, coordSysRecord); + return; + } + var controllerParams = mergeControllerParams(dataZoomInfoMap); + controller.enable(controllerParams.controlType, controllerParams.opt); + controller.setPointerChecker(coordSysRecord.containsPoint); + createOrUpdate(coordSysRecord, 'dispatchAction', firstDzInfo.model.get('throttle', true), 'fixRate'); + }); + }); + } + + var InsideZoomView = /** @class */function (_super) { + __extends(InsideZoomView, _super); + function InsideZoomView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = 'dataZoom.inside'; + return _this; + } + InsideZoomView.prototype.render = function (dataZoomModel, ecModel, api) { + _super.prototype.render.apply(this, arguments); + if (dataZoomModel.noTarget()) { + this._clear(); + return; + } + // Hence the `throttle` util ensures to preserve command order, + // here simply updating range all the time will not cause missing + // any of the the roam change. + this.range = dataZoomModel.getPercentRange(); + // Reset controllers. + setViewInfoToCoordSysRecord(api, dataZoomModel, { + pan: bind(getRangeHandlers.pan, this), + zoom: bind(getRangeHandlers.zoom, this), + scrollMove: bind(getRangeHandlers.scrollMove, this) + }); + }; + InsideZoomView.prototype.dispose = function () { + this._clear(); + _super.prototype.dispose.apply(this, arguments); + }; + InsideZoomView.prototype._clear = function () { + disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel); + this.range = null; + }; + InsideZoomView.type = 'dataZoom.inside'; + return InsideZoomView; + }(DataZoomView); + var getRangeHandlers = { + zoom: function (coordSysInfo, coordSysMainType, controller, e) { + var lastRange = this.range; + var range = lastRange.slice(); + // Calculate transform by the first axis. + var axisModel = coordSysInfo.axisModels[0]; + if (!axisModel) { + return; + } + var directionInfo = getDirectionInfo[coordSysMainType](null, [e.originX, e.originY], axisModel, controller, coordSysInfo); + var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0]; + var scale = Math.max(1 / e.scale, 0); + range[0] = (range[0] - percentPoint) * scale + percentPoint; + range[1] = (range[1] - percentPoint) * scale + percentPoint; + // Restrict range. + var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); + sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan); + this.range = range; + if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { + return range; + } + }, + pan: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) { + var directionInfo = getDirectionInfo[coordSysMainType]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordSysInfo); + return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength; + }), + scrollMove: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) { + var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordSysInfo); + return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta; + }) + }; + function makeMover(getPercentDelta) { + return function (coordSysInfo, coordSysMainType, controller, e) { + var lastRange = this.range; + var range = lastRange.slice(); + // Calculate transform by the first axis. + var axisModel = coordSysInfo.axisModels[0]; + if (!axisModel) { + return; + } + var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e); + sliderMove(percentDelta, range, [0, 100], 'all'); + this.range = range; + if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) { + return range; + } + }; + } + var getDirectionInfo = { + grid: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) { + var axis = axisModel.axis; + var ret = {}; + var rect = coordSysInfo.model.coordinateSystem.getRect(); + oldPoint = oldPoint || [0, 0]; + if (axis.dim === 'x') { + ret.pixel = newPoint[0] - oldPoint[0]; + ret.pixelLength = rect.width; + ret.pixelStart = rect.x; + ret.signal = axis.inverse ? 1 : -1; + } else { + // axis.dim === 'y' + ret.pixel = newPoint[1] - oldPoint[1]; + ret.pixelLength = rect.height; + ret.pixelStart = rect.y; + ret.signal = axis.inverse ? -1 : 1; + } + return ret; + }, + polar: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) { + var axis = axisModel.axis; + var ret = {}; + var polar = coordSysInfo.model.coordinateSystem; + var radiusExtent = polar.getRadiusAxis().getExtent(); + var angleExtent = polar.getAngleAxis().getExtent(); + oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0]; + newPoint = polar.pointToCoord(newPoint); + if (axisModel.mainType === 'radiusAxis') { + ret.pixel = newPoint[0] - oldPoint[0]; + // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]); + // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]); + ret.pixelLength = radiusExtent[1] - radiusExtent[0]; + ret.pixelStart = radiusExtent[0]; + ret.signal = axis.inverse ? 1 : -1; + } else { + // 'angleAxis' + ret.pixel = newPoint[1] - oldPoint[1]; + // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]); + // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]); + ret.pixelLength = angleExtent[1] - angleExtent[0]; + ret.pixelStart = angleExtent[0]; + ret.signal = axis.inverse ? -1 : 1; + } + return ret; + }, + singleAxis: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) { + var axis = axisModel.axis; + var rect = coordSysInfo.model.coordinateSystem.getRect(); + var ret = {}; + oldPoint = oldPoint || [0, 0]; + if (axis.orient === 'horizontal') { + ret.pixel = newPoint[0] - oldPoint[0]; + ret.pixelLength = rect.width; + ret.pixelStart = rect.x; + ret.signal = axis.inverse ? 1 : -1; + } else { + // 'vertical' + ret.pixel = newPoint[1] - oldPoint[1]; + ret.pixelLength = rect.height; + ret.pixelStart = rect.y; + ret.signal = axis.inverse ? -1 : 1; + } + return ret; + } + }; + + function install$K(registers) { + installCommon(registers); + registers.registerComponentModel(InsideZoomModel); + registers.registerComponentView(InsideZoomView); + installDataZoomRoamProcessor(registers); + } + + var SliderZoomModel = /** @class */function (_super) { + __extends(SliderZoomModel, _super); + function SliderZoomModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SliderZoomModel.type; + return _this; + } + SliderZoomModel.type = 'dataZoom.slider'; + SliderZoomModel.layoutMode = 'box'; + SliderZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, { + show: true, + // deault value can only be drived in view stage. + right: 'ph', + top: 'ph', + width: 'ph', + height: 'ph', + left: null, + bottom: null, + borderColor: '#d2dbee', + borderRadius: 3, + backgroundColor: 'rgba(47,69,84,0)', + // dataBackgroundColor: '#ddd', + 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 + } + }, + // Color of selected window. + 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', + // Percent of the slider height + 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: true, + showDataShadow: 'auto', + realtime: true, + zoomLock: false, + textStyle: { + color: '#6E7079' + }, + brushSelect: true, + brushStyle: { + color: 'rgba(135,175,274,0.15)' + }, + emphasis: { + handleStyle: { + borderColor: '#8FB0F7' + }, + moveHandleStyle: { + color: '#8FB0F7' + } + } + }); + return SliderZoomModel; + }(DataZoomModel); + + var Rect$2 = Rect; + // Constants + var DEFAULT_LOCATION_EDGE_GAP = 7; + var DEFAULT_FRAME_BORDER_WIDTH = 1; + var DEFAULT_FILLER_SIZE = 30; + var DEFAULT_MOVE_HANDLE_SIZE = 7; + var HORIZONTAL = 'horizontal'; + var VERTICAL = 'vertical'; + var LABEL_GAP = 5; + var SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter']; + var REALTIME_ANIMATION_CONFIG = { + easing: 'cubicOut', + duration: 100, + delay: 0 + }; + var SliderZoomView = /** @class */function (_super) { + __extends(SliderZoomView, _super); + function SliderZoomView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = SliderZoomView.type; + _this._displayables = {}; + return _this; + } + SliderZoomView.prototype.init = function (ecModel, api) { + this.api = api; + // A unique handler for each dataZoom component + this._onBrush = bind(this._onBrush, this); + this._onBrushEnd = bind(this._onBrushEnd, this); + }; + SliderZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) { + _super.prototype.render.apply(this, arguments); + createOrUpdate(this, '_dispatchZoomAction', dataZoomModel.get('throttle'), 'fixRate'); + this._orient = dataZoomModel.getOrient(); + if (dataZoomModel.get('show') === false) { + this.group.removeAll(); + return; + } + if (dataZoomModel.noTarget()) { + this._clear(); + this.group.removeAll(); + return; + } + // Notice: this._resetInterval() should not be executed when payload.type + // is 'dataZoom', origin this._range should be maintained, otherwise 'pan' + // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction, + if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) { + this._buildView(); + } + this._updateView(); + }; + SliderZoomView.prototype.dispose = function () { + this._clear(); + _super.prototype.dispose.apply(this, arguments); + }; + SliderZoomView.prototype._clear = function () { + clear(this, '_dispatchZoomAction'); + var zr = this.api.getZr(); + zr.off('mousemove', this._onBrush); + zr.off('mouseup', this._onBrushEnd); + }; + SliderZoomView.prototype._buildView = function () { + var thisGroup = this.group; + thisGroup.removeAll(); + this._brushing = false; + this._displayables.brushRect = null; + this._resetLocation(); + this._resetInterval(); + var barGroup = this._displayables.sliderGroup = new Group(); + this._renderBackground(); + this._renderHandle(); + this._renderDataShadow(); + thisGroup.add(barGroup); + this._positionGroup(); + }; + SliderZoomView.prototype._resetLocation = function () { + var dataZoomModel = this.dataZoomModel; + var api = this.api; + var showMoveHandle = dataZoomModel.get('brushSelect'); + var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0; + // If some of x/y/width/height are not specified, + // auto-adapt according to target grid. + var coordRect = this._findCoordRect(); + var ecSize = { + width: api.getWidth(), + height: api.getHeight() + }; + // Default align by coordinate system rect. + var positionInfo = this._orient === HORIZONTAL ? { + // Why using 'right', because right should be used in vertical, + // and it is better to be consistent for dealing with position param merge. + right: ecSize.width - coordRect.x - coordRect.width, + top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize, + width: coordRect.width, + height: DEFAULT_FILLER_SIZE + } : { + right: DEFAULT_LOCATION_EDGE_GAP, + top: coordRect.y, + width: DEFAULT_FILLER_SIZE, + height: coordRect.height + }; + // Do not write back to option and replace value 'ph', because + // the 'ph' value should be recalculated when resize. + var layoutParams = getLayoutParams(dataZoomModel.option); + // Replace the placeholder value. + each(['right', 'top', 'width', 'height'], function (name) { + if (layoutParams[name] === 'ph') { + layoutParams[name] = positionInfo[name]; + } + }); + var layoutRect = getLayoutRect(layoutParams, ecSize); + this._location = { + x: layoutRect.x, + y: layoutRect.y + }; + this._size = [layoutRect.width, layoutRect.height]; + this._orient === VERTICAL && this._size.reverse(); + }; + SliderZoomView.prototype._positionGroup = function () { + var thisGroup = this.group; + var location = this._location; + var orient = this._orient; + // Just use the first axis to determine mapping. + var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel(); + var inverse = targetAxisModel && targetAxisModel.get('inverse'); + var sliderGroup = this._displayables.sliderGroup; + var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; + // Transform barGroup. + sliderGroup.attr(orient === HORIZONTAL && !inverse ? { + scaleY: otherAxisInverse ? 1 : -1, + scaleX: 1 + } : orient === HORIZONTAL && inverse ? { + scaleY: otherAxisInverse ? 1 : -1, + scaleX: -1 + } : orient === VERTICAL && !inverse ? { + scaleY: otherAxisInverse ? -1 : 1, + scaleX: 1, + rotation: Math.PI / 2 + } + // Don't use Math.PI, considering shadow direction. + : { + scaleY: otherAxisInverse ? -1 : 1, + scaleX: -1, + rotation: Math.PI / 2 + }); + // Position barGroup + var rect = thisGroup.getBoundingRect([sliderGroup]); + thisGroup.x = location.x - rect.x; + thisGroup.y = location.y - rect.y; + thisGroup.markRedraw(); + }; + SliderZoomView.prototype._getViewExtent = function () { + return [0, this._size[0]]; + }; + SliderZoomView.prototype._renderBackground = function () { + var dataZoomModel = this.dataZoomModel; + var size = this._size; + var barGroup = this._displayables.sliderGroup; + var brushSelect = dataZoomModel.get('brushSelect'); + barGroup.add(new Rect$2({ + silent: true, + shape: { + x: 0, + y: 0, + width: size[0], + height: size[1] + }, + style: { + fill: dataZoomModel.get('backgroundColor') + }, + z2: -40 + })); + // Click panel, over shadow, below handles. + var clickPanel = new Rect$2({ + shape: { + x: 0, + y: 0, + width: size[0], + height: size[1] + }, + style: { + fill: 'transparent' + }, + z2: 0, + onclick: bind(this._onClickPanel, this) + }); + var zr = this.api.getZr(); + if (brushSelect) { + clickPanel.on('mousedown', this._onBrushStart, this); + clickPanel.cursor = 'crosshair'; + zr.on('mousemove', this._onBrush); + zr.on('mouseup', this._onBrushEnd); + } else { + zr.off('mousemove', this._onBrush); + zr.off('mouseup', this._onBrushEnd); + } + barGroup.add(clickPanel); + }; + SliderZoomView.prototype._renderDataShadow = function () { + var info = this._dataShadowInfo = this._prepareDataShadowInfo(); + this._displayables.dataShadowSegs = []; + if (!info) { + return; + } + var size = this._size; + var oldSize = this._shadowSize || []; + var seriesModel = info.series; + var data = seriesModel.getRawData(); + var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim(); + var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() // @see candlestick + : info.otherDim; + if (otherDim == null) { + return; + } + var polygonPts = this._shadowPolygonPts; + var polylinePts = this._shadowPolylinePts; + // Not re-render if data doesn't change. + if (data !== this._shadowData || otherDim !== this._shadowDim || size[0] !== oldSize[0] || size[1] !== oldSize[1]) { + var otherDataExtent_1 = data.getDataExtent(otherDim); + // Nice extent. + var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3; + otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset]; + var otherShadowExtent_1 = [0, size[1]]; + var thisShadowExtent = [0, size[0]]; + var areaPoints_1 = [[size[0], 0], [0, 0]]; + var linePoints_1 = []; + var step_1 = thisShadowExtent[1] / (data.count() - 1); + var thisCoord_1 = 0; + // Optimize for large data shadow + var stride_1 = Math.round(data.count() / size[0]); + var lastIsEmpty_1; + data.each([otherDim], function (value, index) { + if (stride_1 > 0 && index % stride_1) { + thisCoord_1 += step_1; + return; + } + // FIXME + // Should consider axis.min/axis.max when drawing dataShadow. + // FIXME + // 应该使用统一的空判断?还是在list里进行空判断? + var isEmpty = value == null || isNaN(value) || value === ''; + // See #4235. + var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent_1, otherShadowExtent_1, true); + // Attempt to draw data shadow precisely when there are empty value. + if (isEmpty && !lastIsEmpty_1 && index) { + areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]); + linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]); + } else if (!isEmpty && lastIsEmpty_1) { + areaPoints_1.push([thisCoord_1, 0]); + linePoints_1.push([thisCoord_1, 0]); + } + areaPoints_1.push([thisCoord_1, otherCoord]); + linePoints_1.push([thisCoord_1, otherCoord]); + thisCoord_1 += step_1; + lastIsEmpty_1 = isEmpty; + }); + polygonPts = this._shadowPolygonPts = areaPoints_1; + polylinePts = this._shadowPolylinePts = linePoints_1; + } + this._shadowData = data; + this._shadowDim = otherDim; + this._shadowSize = [size[0], size[1]]; + var dataZoomModel = this.dataZoomModel; + function createDataShadowGroup(isSelectedArea) { + var model = dataZoomModel.getModel(isSelectedArea ? 'selectedDataBackground' : 'dataBackground'); + var group = new Group(); + var polygon = new Polygon({ + shape: { + points: polygonPts + }, + segmentIgnoreThreshold: 1, + style: model.getModel('areaStyle').getAreaStyle(), + silent: true, + z2: -20 + }); + var polyline = new Polyline({ + shape: { + points: polylinePts + }, + segmentIgnoreThreshold: 1, + style: model.getModel('lineStyle').getLineStyle(), + silent: true, + z2: -19 + }); + group.add(polygon); + group.add(polyline); + return group; + } + // let dataBackgroundModel = dataZoomModel.getModel('dataBackground'); + for (var i = 0; i < 3; i++) { + var group = createDataShadowGroup(i === 1); + this._displayables.sliderGroup.add(group); + this._displayables.dataShadowSegs.push(group); + } + }; + SliderZoomView.prototype._prepareDataShadowInfo = function () { + var dataZoomModel = this.dataZoomModel; + var showDataShadow = dataZoomModel.get('showDataShadow'); + if (showDataShadow === false) { + return; + } + // Find a representative series. + var result; + var ecModel = this.ecModel; + dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) { + var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels(); + each(seriesModels, function (seriesModel) { + if (result) { + return; + } + if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) { + return; + } + var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis; + var otherDim = getOtherDim(axisDim); + var otherAxisInverse; + var coordSys = seriesModel.coordinateSystem; + if (otherDim != null && coordSys.getOtherAxis) { + otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse; + } + otherDim = seriesModel.getData().mapDimension(otherDim); + result = { + thisAxis: thisAxis, + series: seriesModel, + thisDim: axisDim, + otherDim: otherDim, + otherAxisInverse: otherAxisInverse + }; + }, this); + }, this); + return result; + }; + SliderZoomView.prototype._renderHandle = function () { + var thisGroup = this.group; + var displayables = this._displayables; + var handles = displayables.handles = [null, null]; + var handleLabels = displayables.handleLabels = [null, null]; + var sliderGroup = this._displayables.sliderGroup; + var size = this._size; + var dataZoomModel = this.dataZoomModel; + var api = this.api; + var borderRadius = dataZoomModel.get('borderRadius') || 0; + var brushSelect = dataZoomModel.get('brushSelect'); + var filler = displayables.filler = new Rect$2({ + silent: brushSelect, + style: { + fill: dataZoomModel.get('fillerColor') + }, + textConfig: { + position: 'inside' + } + }); + sliderGroup.add(filler); + // Frame border. + sliderGroup.add(new Rect$2({ + silent: true, + subPixelOptimize: true, + shape: { + x: 0, + y: 0, + width: size[0], + height: size[1], + r: borderRadius + }, + style: { + // deprecated option + stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'), + lineWidth: DEFAULT_FRAME_BORDER_WIDTH, + fill: 'rgba(0,0,0,0)' + } + })); + // Left and right handle to resize + each([0, 1], function (handleIndex) { + var iconStr = dataZoomModel.get('handleIcon'); + if (!symbolBuildProxies[iconStr] && iconStr.indexOf('path://') < 0 && iconStr.indexOf('image://') < 0) { + // Compatitable with the old icon parsers. Which can use a path string without path:// + iconStr = 'path://' + iconStr; + if ("development" !== 'production') { + deprecateLog('handleIcon now needs \'path://\' prefix when using a path string'); + } + } + var path = createSymbol(iconStr, -1, 0, 2, 2, null, true); + path.attr({ + cursor: getCursor(this._orient), + draggable: true, + drift: bind(this._onDragMove, this, handleIndex), + ondragend: bind(this._onDragEnd, this), + onmouseover: bind(this._showDataInfo, this, true), + onmouseout: bind(this._showDataInfo, this, false), + z2: 5 + }); + var bRect = path.getBoundingRect(); + var handleSize = dataZoomModel.get('handleSize'); + this._handleHeight = parsePercent$1(handleSize, this._size[1]); + this._handleWidth = bRect.width / bRect.height * this._handleHeight; + path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle()); + path.style.strokeNoScale = true; + path.rectHover = true; + path.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'handleStyle']).getItemStyle(); + enableHoverEmphasis(path); + var handleColor = dataZoomModel.get('handleColor'); // deprecated option + // Compatitable with previous version + if (handleColor != null) { + path.style.fill = handleColor; + } + sliderGroup.add(handles[handleIndex] = path); + var textStyleModel = dataZoomModel.getModel('textStyle'); + thisGroup.add(handleLabels[handleIndex] = new ZRText({ + silent: true, + invisible: true, + style: createTextStyle(textStyleModel, { + x: 0, + y: 0, + text: '', + verticalAlign: 'middle', + align: 'center', + fill: textStyleModel.getTextColor(), + font: textStyleModel.getFont() + }), + z2: 10 + })); + }, this); + // Handle to move. Only visible when brushSelect is set true. + var actualMoveZone = filler; + if (brushSelect) { + var moveHandleHeight = parsePercent$1(dataZoomModel.get('moveHandleSize'), size[1]); + var moveHandle_1 = displayables.moveHandle = new Rect({ + style: dataZoomModel.getModel('moveHandleStyle').getItemStyle(), + silent: true, + shape: { + r: [0, 0, 2, 2], + y: size[1] - 0.5, + height: moveHandleHeight + } + }); + var iconSize = moveHandleHeight * 0.8; + var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get('moveHandleIcon'), -iconSize / 2, -iconSize / 2, iconSize, iconSize, '#fff', true); + moveHandleIcon.silent = true; + moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5; + moveHandle_1.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'moveHandleStyle']).getItemStyle(); + var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10)); + actualMoveZone = displayables.moveZone = new Rect({ + invisible: true, + shape: { + y: size[1] - moveZoneExpandSize, + height: moveHandleHeight + moveZoneExpandSize + } + }); + actualMoveZone.on('mouseover', function () { + api.enterEmphasis(moveHandle_1); + }).on('mouseout', function () { + api.leaveEmphasis(moveHandle_1); + }); + sliderGroup.add(moveHandle_1); + sliderGroup.add(moveHandleIcon); + sliderGroup.add(actualMoveZone); + } + actualMoveZone.attr({ + draggable: true, + cursor: getCursor(this._orient), + drift: bind(this._onDragMove, this, 'all'), + ondragstart: bind(this._showDataInfo, this, true), + ondragend: bind(this._onDragEnd, this), + onmouseover: bind(this._showDataInfo, this, true), + onmouseout: bind(this._showDataInfo, this, false) + }); + }; + SliderZoomView.prototype._resetInterval = function () { + var range = this._range = this.dataZoomModel.getPercentRange(); + var viewExtent = this._getViewExtent(); + this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)]; + }; + SliderZoomView.prototype._updateInterval = function (handleIndex, delta) { + var dataZoomModel = this.dataZoomModel; + var handleEnds = this._handleEnds; + var viewExtend = this._getViewExtent(); + var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); + var percentExtent = [0, 100]; + sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null); + var lastRange = this._range; + var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]); + return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1]; + }; + SliderZoomView.prototype._updateView = function (nonRealtime) { + var displaybles = this._displayables; + var handleEnds = this._handleEnds; + var handleInterval = asc(handleEnds.slice()); + var size = this._size; + each([0, 1], function (handleIndex) { + // Handles + var handle = displaybles.handles[handleIndex]; + var handleHeight = this._handleHeight; + handle.attr({ + scaleX: handleHeight / 2, + scaleY: handleHeight / 2, + // This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window. + // NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default. + x: handleEnds[handleIndex] + (handleIndex ? -1 : 1), + y: size[1] / 2 - handleHeight / 2 + }); + }, this); + // Filler + displaybles.filler.setShape({ + x: handleInterval[0], + y: 0, + width: handleInterval[1] - handleInterval[0], + height: size[1] + }); + var viewExtent = { + x: handleInterval[0], + width: handleInterval[1] - handleInterval[0] + }; + // Move handle + if (displaybles.moveHandle) { + displaybles.moveHandle.setShape(viewExtent); + displaybles.moveZone.setShape(viewExtent); + // Force update path on the invisible object + displaybles.moveZone.getBoundingRect(); + displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr('x', viewExtent.x + viewExtent.width / 2); + } + // update clip path of shadow. + var dataShadowSegs = displaybles.dataShadowSegs; + var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]]; + for (var i = 0; i < dataShadowSegs.length; i++) { + var segGroup = dataShadowSegs[i]; + var clipPath = segGroup.getClipPath(); + if (!clipPath) { + clipPath = new Rect(); + segGroup.setClipPath(clipPath); + } + clipPath.setShape({ + x: segIntervals[i], + y: 0, + width: segIntervals[i + 1] - segIntervals[i], + height: size[1] + }); + } + this._updateDataInfo(nonRealtime); + }; + SliderZoomView.prototype._updateDataInfo = function (nonRealtime) { + var dataZoomModel = this.dataZoomModel; + var displaybles = this._displayables; + var handleLabels = displaybles.handleLabels; + var orient = this._orient; + var labelTexts = ['', '']; + // FIXME + // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter) + if (dataZoomModel.get('showDetail')) { + var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); + if (axisProxy) { + var axis = axisProxy.getAxisModel().axis; + var range = this._range; + var dataInterval = nonRealtime + // See #4434, data and axis are not processed and reset yet in non-realtime mode. + ? axisProxy.calculateDataWindow({ + start: range[0], + end: range[1] + }).valueWindow : axisProxy.getDataValueWindow(); + labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)]; + } + } + var orderedHandleEnds = asc(this._handleEnds.slice()); + setLabel.call(this, 0); + setLabel.call(this, 1); + function setLabel(handleIndex) { + // Label + // Text should not transform by barGroup. + // Ignore handlers transform + var barTransform = getTransform(displaybles.handles[handleIndex].parent, this.group); + var direction = transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform); + var offset = this._handleWidth / 2 + LABEL_GAP; + var textPoint = applyTransform$1([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform); + handleLabels[handleIndex].setStyle({ + x: textPoint[0], + y: textPoint[1], + verticalAlign: orient === HORIZONTAL ? 'middle' : direction, + align: orient === HORIZONTAL ? direction : 'center', + text: labelTexts[handleIndex] + }); + } + }; + SliderZoomView.prototype._formatLabel = function (value, axis) { + var dataZoomModel = this.dataZoomModel; + var labelFormatter = dataZoomModel.get('labelFormatter'); + var labelPrecision = dataZoomModel.get('labelPrecision'); + if (labelPrecision == null || labelPrecision === 'auto') { + labelPrecision = axis.getPixelPrecision(); + } + var valueStr = value == null || isNaN(value) ? '' + // FIXME Glue code + : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel({ + value: Math.round(value) + }) + // param of toFixed should less then 20. + : value.toFixed(Math.min(labelPrecision, 20)); + return isFunction(labelFormatter) ? labelFormatter(value, valueStr) : isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr; + }; + /** + * @param showOrHide true: show, false: hide + */ + SliderZoomView.prototype._showDataInfo = function (showOrHide) { + // Always show when drgging. + showOrHide = this._dragging || showOrHide; + var displayables = this._displayables; + var handleLabels = displayables.handleLabels; + handleLabels[0].attr('invisible', !showOrHide); + handleLabels[1].attr('invisible', !showOrHide); + // Highlight move handle + displayables.moveHandle && this.api[showOrHide ? 'enterEmphasis' : 'leaveEmphasis'](displayables.moveHandle, 1); + }; + SliderZoomView.prototype._onDragMove = function (handleIndex, dx, dy, event) { + this._dragging = true; + // For mobile device, prevent screen slider on the button. + stop(event.event); + // Transform dx, dy to bar coordination. + var barTransform = this._displayables.sliderGroup.getLocalTransform(); + var vertex = applyTransform$1([dx, dy], barTransform, true); + var changed = this._updateInterval(handleIndex, vertex[0]); + var realtime = this.dataZoomModel.get('realtime'); + this._updateView(!realtime); + // Avoid dispatch dataZoom repeatly but range not changed, + // which cause bad visual effect when progressive enabled. + changed && realtime && this._dispatchZoomAction(true); + }; + SliderZoomView.prototype._onDragEnd = function () { + this._dragging = false; + this._showDataInfo(false); + // While in realtime mode and stream mode, dispatch action when + // drag end will cause the whole view rerender, which is unnecessary. + var realtime = this.dataZoomModel.get('realtime'); + !realtime && this._dispatchZoomAction(false); + }; + SliderZoomView.prototype._onClickPanel = function (e) { + var size = this._size; + var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e.offsetX, e.offsetY); + if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) { + return; + } + var handleEnds = this._handleEnds; + var center = (handleEnds[0] + handleEnds[1]) / 2; + var changed = this._updateInterval('all', localPoint[0] - center); + this._updateView(); + changed && this._dispatchZoomAction(false); + }; + SliderZoomView.prototype._onBrushStart = function (e) { + var x = e.offsetX; + var y = e.offsetY; + this._brushStart = new Point(x, y); + this._brushing = true; + this._brushStartTime = +new Date(); + // this._updateBrushRect(x, y); + }; + + SliderZoomView.prototype._onBrushEnd = function (e) { + if (!this._brushing) { + return; + } + var brushRect = this._displayables.brushRect; + this._brushing = false; + if (!brushRect) { + return; + } + brushRect.attr('ignore', true); + var brushShape = brushRect.shape; + var brushEndTime = +new Date(); + // console.log(brushEndTime - this._brushStartTime); + if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) { + // Will treat it as a click + return; + } + var viewExtend = this._getViewExtent(); + var percentExtent = [0, 100]; + this._range = asc([linearMap(brushShape.x, viewExtend, percentExtent, true), linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]); + this._handleEnds = [brushShape.x, brushShape.x + brushShape.width]; + this._updateView(); + this._dispatchZoomAction(false); + }; + SliderZoomView.prototype._onBrush = function (e) { + if (this._brushing) { + // For mobile device, prevent screen slider on the button. + stop(e.event); + this._updateBrushRect(e.offsetX, e.offsetY); + } + }; + SliderZoomView.prototype._updateBrushRect = function (mouseX, mouseY) { + var displayables = this._displayables; + var dataZoomModel = this.dataZoomModel; + var brushRect = displayables.brushRect; + if (!brushRect) { + brushRect = displayables.brushRect = new Rect$2({ + silent: true, + style: dataZoomModel.getModel('brushStyle').getItemStyle() + }); + displayables.sliderGroup.add(brushRect); + } + brushRect.attr('ignore', false); + var brushStart = this._brushStart; + var sliderGroup = this._displayables.sliderGroup; + var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY); + var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y); + var size = this._size; + endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0); + brushRect.setShape({ + x: startPoint[0], + y: 0, + width: endPoint[0] - startPoint[0], + height: size[1] + }); + }; + /** + * This action will be throttled. + */ + SliderZoomView.prototype._dispatchZoomAction = function (realtime) { + var range = this._range; + this.api.dispatchAction({ + type: 'dataZoom', + from: this.uid, + dataZoomId: this.dataZoomModel.id, + animation: realtime ? REALTIME_ANIMATION_CONFIG : null, + start: range[0], + end: range[1] + }); + }; + SliderZoomView.prototype._findCoordRect = function () { + // Find the grid corresponding to the first axis referred by dataZoom. + var rect; + var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList; + if (!rect && coordSysInfoList.length) { + var coordSys = coordSysInfoList[0].model.coordinateSystem; + rect = coordSys.getRect && coordSys.getRect(); + } + if (!rect) { + var width = this.api.getWidth(); + var height = this.api.getHeight(); + rect = { + x: width * 0.2, + y: height * 0.2, + width: width * 0.6, + height: height * 0.6 + }; + } + return rect; + }; + SliderZoomView.type = 'dataZoom.slider'; + return SliderZoomView; + }(DataZoomView); + function getOtherDim(thisDim) { + // FIXME + // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好 + var map = { + x: 'y', + y: 'x', + radius: 'angle', + angle: 'radius' + }; + return map[thisDim]; + } + function getCursor(orient) { + return orient === 'vertical' ? 'ns-resize' : 'ew-resize'; + } + + function install$L(registers) { + registers.registerComponentModel(SliderZoomModel); + registers.registerComponentView(SliderZoomView); + installCommon(registers); + } + + function install$M(registers) { + use(install$K); + use(install$L); + // Do not install './dataZoomSelect', + // since it only work for toolbox dataZoom. + } + + var visualDefault = { + /** + * @public + */ + get: function (visualType, key, isCategory) { + var value = clone((defaultOption$1[visualType] || {})[key]); + return isCategory ? isArray(value) ? value[value.length - 1] : value : value; + } + }; + var defaultOption$1 = { + 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] + } + }; + + var mapVisual$1 = VisualMapping.mapVisual; + var eachVisual = VisualMapping.eachVisual; + var isArray$1 = isArray; + var each$d = each; + var asc$2 = asc; + var linearMap$1 = linearMap; + var VisualMapModel = /** @class */function (_super) { + __extends(VisualMapModel, _super); + function VisualMapModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = VisualMapModel.type; + _this.stateList = ['inRange', 'outOfRange']; + _this.replacableOptionKeys = ['inRange', 'outOfRange', 'target', 'controller', 'color']; + _this.layoutMode = { + type: 'box', + ignoreSize: true + }; + /** + * [lowerBound, upperBound] + */ + _this.dataBound = [-Infinity, Infinity]; + _this.targetVisuals = {}; + _this.controllerVisuals = {}; + return _this; + } + VisualMapModel.prototype.init = function (option, parentModel, ecModel) { + this.mergeDefaultAndTheme(option, ecModel); + }; + /** + * @protected + */ + VisualMapModel.prototype.optionUpdated = function (newOption, isInit) { + var thisOption = this.option; + !isInit && replaceVisualOption(thisOption, newOption, this.replacableOptionKeys); + this.textStyleModel = this.getModel('textStyle'); + this.resetItemSize(); + this.completeVisualOption(); + }; + /** + * @protected + */ + VisualMapModel.prototype.resetVisual = function (supplementVisualOption) { + var stateList = this.stateList; + supplementVisualOption = bind(supplementVisualOption, this); + this.controllerVisuals = createVisualMappings(this.option.controller, stateList, supplementVisualOption); + this.targetVisuals = createVisualMappings(this.option.target, stateList, supplementVisualOption); + }; + /** + * @public + */ + VisualMapModel.prototype.getItemSymbol = function () { + return null; + }; + /** + * @protected + * @return {Array.} An array of series indices. + */ + VisualMapModel.prototype.getTargetSeriesIndices = function () { + var optionSeriesIndex = this.option.seriesIndex; + var seriesIndices = []; + if (optionSeriesIndex == null || optionSeriesIndex === 'all') { + this.ecModel.eachSeries(function (seriesModel, index) { + seriesIndices.push(index); + }); + } else { + seriesIndices = normalizeToArray(optionSeriesIndex); + } + return seriesIndices; + }; + /** + * @public + */ + VisualMapModel.prototype.eachTargetSeries = function (callback, context) { + each(this.getTargetSeriesIndices(), function (seriesIndex) { + var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex); + if (seriesModel) { + callback.call(context, seriesModel); + } + }, this); + }; + /** + * @pubilc + */ + VisualMapModel.prototype.isTargetSeries = function (seriesModel) { + var is = false; + this.eachTargetSeries(function (model) { + model === seriesModel && (is = true); + }); + return is; + }; + /** + * @example + * this.formatValueText(someVal); // format single numeric value to text. + * this.formatValueText(someVal, true); // format single category value to text. + * this.formatValueText([min, max]); // format numeric min-max to text. + * this.formatValueText([this.dataBound[0], max]); // using data lower bound. + * this.formatValueText([min, this.dataBound[1]]); // using data upper bound. + * + * @param value Real value, or this.dataBound[0 or 1]. + * @param isCategory Only available when value is number. + * @param edgeSymbols Open-close symbol when value is interval. + * @protected + */ + VisualMapModel.prototype.formatValueText = function (value, isCategory, edgeSymbols) { + var option = this.option; + var precision = option.precision; + var dataBound = this.dataBound; + var formatter = option.formatter; + var isMinMax; + edgeSymbols = edgeSymbols || ['<', '>']; + if (isArray(value)) { + value = value.slice(); + isMinMax = true; + } + var textValue = isCategory ? value // Value is string when isCategory + : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value); + if (isString(formatter)) { + return formatter.replace('{value}', isMinMax ? textValue[0] : textValue).replace('{value2}', isMinMax ? textValue[1] : textValue); + } else if (isFunction(formatter)) { + return isMinMax ? formatter(value[0], value[1]) : formatter(value); + } + if (isMinMax) { + if (value[0] === dataBound[0]) { + return edgeSymbols[0] + ' ' + textValue[1]; + } else if (value[1] === dataBound[1]) { + return edgeSymbols[1] + ' ' + textValue[0]; + } else { + return textValue[0] + ' - ' + textValue[1]; + } + } else { + // Format single value (includes category case). + return textValue; + } + function toFixed(val) { + return val === dataBound[0] ? 'min' : val === dataBound[1] ? 'max' : (+val).toFixed(Math.min(precision, 20)); + } + }; + /** + * @protected + */ + VisualMapModel.prototype.resetExtent = function () { + var thisOption = this.option; + // Can not calculate data extent by data here. + // Because series and data may be modified in processing stage. + // So we do not support the feature "auto min/max". + var extent = asc$2([thisOption.min, thisOption.max]); + this._dataExtent = extent; + }; + /** + * PENDING: + * delete this method if no outer usage. + * + * Return Concrete dimension. If null/undefined is returned, no dimension is used. + */ + // getDataDimension(data: SeriesData) { + // const optDim = this.option.dimension; + // if (optDim != null) { + // return data.getDimension(optDim); + // } + // const dimNames = data.dimensions; + // for (let i = dimNames.length - 1; i >= 0; i--) { + // const dimName = dimNames[i]; + // const dimInfo = data.getDimensionInfo(dimName); + // if (!dimInfo.isCalculationCoord) { + // return dimName; + // } + // } + // } + VisualMapModel.prototype.getDataDimensionIndex = function (data) { + var optDim = this.option.dimension; + if (optDim != null) { + return data.getDimensionIndex(optDim); + } + var dimNames = data.dimensions; + for (var i = dimNames.length - 1; i >= 0; i--) { + var dimName = dimNames[i]; + var dimInfo = data.getDimensionInfo(dimName); + if (!dimInfo.isCalculationCoord) { + return dimInfo.storeDimIndex; + } + } + }; + VisualMapModel.prototype.getExtent = function () { + return this._dataExtent.slice(); + }; + VisualMapModel.prototype.completeVisualOption = function () { + var ecModel = this.ecModel; + var thisOption = this.option; + var base = { + inRange: thisOption.inRange, + outOfRange: thisOption.outOfRange + }; + var target = thisOption.target || (thisOption.target = {}); + var controller = thisOption.controller || (thisOption.controller = {}); + merge(target, base); // Do not override + merge(controller, base); // Do not override + var isCategory = this.isCategory(); + completeSingle.call(this, target); + completeSingle.call(this, controller); + completeInactive.call(this, target, 'inRange', 'outOfRange'); + // completeInactive.call(this, target, 'outOfRange', 'inRange'); + completeController.call(this, controller); + function completeSingle(base) { + // Compatible with ec2 dataRange.color. + // The mapping order of dataRange.color is: [high value, ..., low value] + // whereas inRange.color and outOfRange.color is [low value, ..., high value] + // Notice: ec2 has no inverse. + if (isArray$1(thisOption.color) + // If there has been inRange: {symbol: ...}, adding color is a mistake. + // So adding color only when no inRange defined. + && !base.inRange) { + base.inRange = { + color: thisOption.color.slice().reverse() + }; + } + // Compatible with previous logic, always give a default color, otherwise + // simple config with no inRange and outOfRange will not work. + // Originally we use visualMap.color as the default color, but setOption at + // the second time the default color will be erased. So we change to use + // constant DEFAULT_COLOR. + // If user do not want the default color, set inRange: {color: null}. + base.inRange = base.inRange || { + color: ecModel.get('gradientColor') + }; + } + function completeInactive(base, stateExist, stateAbsent) { + var optExist = base[stateExist]; + var optAbsent = base[stateAbsent]; + if (optExist && !optAbsent) { + optAbsent = base[stateAbsent] = {}; + each$d(optExist, function (visualData, visualType) { + if (!VisualMapping.isValidType(visualType)) { + return; + } + var defa = visualDefault.get(visualType, 'inactive', isCategory); + if (defa != null) { + optAbsent[visualType] = defa; + // Compatibable with ec2: + // Only inactive color to rgba(0,0,0,0) can not + // make label transparent, so use opacity also. + if (visualType === 'color' && !optAbsent.hasOwnProperty('opacity') && !optAbsent.hasOwnProperty('colorAlpha')) { + optAbsent.opacity = [0, 0]; + } + } + }); + } + } + function completeController(controller) { + var symbolExists = (controller.inRange || {}).symbol || (controller.outOfRange || {}).symbol; + var symbolSizeExists = (controller.inRange || {}).symbolSize || (controller.outOfRange || {}).symbolSize; + var inactiveColor = this.get('inactiveColor'); + var itemSymbol = this.getItemSymbol(); + var defaultSymbol = itemSymbol || 'roundRect'; + each$d(this.stateList, function (state) { + var itemSize = this.itemSize; + var visuals = controller[state]; + // Set inactive color for controller if no other color + // attr (like colorAlpha) specified. + if (!visuals) { + visuals = controller[state] = { + color: isCategory ? inactiveColor : [inactiveColor] + }; + } + // Consistent symbol and symbolSize if not specified. + if (visuals.symbol == null) { + visuals.symbol = symbolExists && clone(symbolExists) || (isCategory ? defaultSymbol : [defaultSymbol]); + } + if (visuals.symbolSize == null) { + visuals.symbolSize = symbolSizeExists && clone(symbolSizeExists) || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]); + } + // Filter none + visuals.symbol = mapVisual$1(visuals.symbol, function (symbol) { + return symbol === 'none' ? defaultSymbol : symbol; + }); + // Normalize symbolSize + var symbolSize = visuals.symbolSize; + if (symbolSize != null) { + var max_1 = -Infinity; + // symbolSize can be object when categories defined. + eachVisual(symbolSize, function (value) { + value > max_1 && (max_1 = value); + }); + visuals.symbolSize = mapVisual$1(symbolSize, function (value) { + return linearMap$1(value, [0, max_1], [0, itemSize[0]], true); + }); + } + }, this); + } + }; + VisualMapModel.prototype.resetItemSize = function () { + this.itemSize = [parseFloat(this.get('itemWidth')), parseFloat(this.get('itemHeight'))]; + }; + VisualMapModel.prototype.isCategory = function () { + return !!this.option.categories; + }; + /** + * @public + * @abstract + */ + VisualMapModel.prototype.setSelected = function (selected) {}; + VisualMapModel.prototype.getSelected = function () { + return null; + }; + /** + * @public + * @abstract + */ + VisualMapModel.prototype.getValueState = function (value) { + return null; + }; + /** + * FIXME + * Do not publish to thirt-part-dev temporarily + * util the interface is stable. (Should it return + * a function but not visual meta?) + * + * @pubilc + * @abstract + * @param getColorVisual + * params: value, valueState + * return: color + * @return {Object} visualMeta + * should includes {stops, outerColors} + * outerColor means [colorBeyondMinValue, colorBeyondMaxValue] + */ + VisualMapModel.prototype.getVisualMeta = function (getColorVisual) { + return null; + }; + VisualMapModel.type = 'visualMap'; + VisualMapModel.dependencies = ['series']; + VisualMapModel.defaultOption = { + show: true, + // zlevel: 0, + z: 4, + seriesIndex: 'all', + min: 0, + max: 200, + left: 0, + right: null, + top: null, + bottom: 0, + itemWidth: null, + itemHeight: null, + inverse: false, + orient: 'vertical', + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#ccc', + contentColor: '#5793f3', + inactiveColor: '#aaa', + borderWidth: 0, + padding: 5, + // 接受数组分别设定上右下左边距,同css + textGap: 10, + precision: 0, + textStyle: { + color: '#333' // 值域文字颜色 + } + }; + + return VisualMapModel; + }(ComponentModel); + + // Constant + var DEFAULT_BAR_BOUND = [20, 140]; + var ContinuousModel = /** @class */function (_super) { + __extends(ContinuousModel, _super); + function ContinuousModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ContinuousModel.type; + return _this; + } + /** + * @override + */ + ContinuousModel.prototype.optionUpdated = function (newOption, isInit) { + _super.prototype.optionUpdated.apply(this, arguments); + this.resetExtent(); + this.resetVisual(function (mappingOption) { + mappingOption.mappingMethod = 'linear'; + mappingOption.dataExtent = this.getExtent(); + }); + this._resetRange(); + }; + /** + * @protected + * @override + */ + ContinuousModel.prototype.resetItemSize = function () { + _super.prototype.resetItemSize.apply(this, arguments); + var itemSize = this.itemSize; + (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]); + (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]); + }; + /** + * @private + */ + ContinuousModel.prototype._resetRange = function () { + var dataExtent = this.getExtent(); + var range = this.option.range; + if (!range || range.auto) { + // `range` should always be array (so we don't use other + // value like 'auto') for user-friend. (consider getOption). + dataExtent.auto = 1; + this.option.range = dataExtent; + } else if (isArray(range)) { + if (range[0] > range[1]) { + range.reverse(); + } + range[0] = Math.max(range[0], dataExtent[0]); + range[1] = Math.min(range[1], dataExtent[1]); + } + }; + /** + * @protected + * @override + */ + ContinuousModel.prototype.completeVisualOption = function () { + _super.prototype.completeVisualOption.apply(this, arguments); + each(this.stateList, function (state) { + var symbolSize = this.option.controller[state].symbolSize; + if (symbolSize && symbolSize[0] !== symbolSize[1]) { + symbolSize[0] = symbolSize[1] / 3; // For good looking. + } + }, this); + }; + /** + * @override + */ + ContinuousModel.prototype.setSelected = function (selected) { + this.option.range = selected.slice(); + this._resetRange(); + }; + /** + * @public + */ + ContinuousModel.prototype.getSelected = function () { + var dataExtent = this.getExtent(); + var dataInterval = asc((this.get('range') || []).slice()); + // Clamp + dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]); + dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]); + dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]); + dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]); + return dataInterval; + }; + /** + * @override + */ + ContinuousModel.prototype.getValueState = function (value) { + var range = this.option.range; + var dataExtent = this.getExtent(); + // When range[0] === dataExtent[0], any value larger than dataExtent[0] maps to 'inRange'. + // range[1] is processed likewise. + return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? 'inRange' : 'outOfRange'; + }; + ContinuousModel.prototype.findTargetDataIndices = function (range) { + var result = []; + this.eachTargetSeries(function (seriesModel) { + var dataIndices = []; + var data = seriesModel.getData(); + data.each(this.getDataDimensionIndex(data), function (value, dataIndex) { + range[0] <= value && value <= range[1] && dataIndices.push(dataIndex); + }, this); + result.push({ + seriesId: seriesModel.id, + dataIndex: dataIndices + }); + }, this); + return result; + }; + /** + * @implement + */ + ContinuousModel.prototype.getVisualMeta = function (getColorVisual) { + var oVals = getColorStopValues(this, 'outOfRange', this.getExtent()); + var iVals = getColorStopValues(this, 'inRange', this.option.range.slice()); + var stops = []; + function setStop(value, valueState) { + stops.push({ + value: value, + color: getColorVisual(value, valueState) + }); + } + // Format to: outOfRange -- inRange -- outOfRange. + var iIdx = 0; + var oIdx = 0; + var iLen = iVals.length; + var oLen = oVals.length; + for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) { + // If oVal[oIdx] === iVals[iIdx], oVal[oIdx] should be ignored. + if (oVals[oIdx] < iVals[iIdx]) { + setStop(oVals[oIdx], 'outOfRange'); + } + } + for (var first = 1; iIdx < iLen; iIdx++, first = 0) { + // If range is full, value beyond min, max will be clamped. + // make a singularity + first && stops.length && setStop(iVals[iIdx], 'outOfRange'); + setStop(iVals[iIdx], 'inRange'); + } + for (var first = 1; oIdx < oLen; oIdx++) { + if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) { + // make a singularity + if (first) { + stops.length && setStop(stops[stops.length - 1].value, 'outOfRange'); + first = 0; + } + setStop(oVals[oIdx], 'outOfRange'); + } + } + var stopsLen = stops.length; + return { + stops: stops, + outerColors: [stopsLen ? stops[0].color : 'transparent', stopsLen ? stops[stopsLen - 1].color : 'transparent'] + }; + }; + ContinuousModel.type = 'visualMap.continuous'; + ContinuousModel.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, { + align: 'auto', + calculable: false, + hoverLink: true, + realtime: true, + 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)' + } + // emphasis: { + // handleStyle: { + // shadowBlur: 3, + // shadowOffsetX: 1, + // shadowOffsetY: 1, + // shadowColor: 'rgba(0,0,0,0.2)' + // } + // } + }); + + return ContinuousModel; + }(VisualMapModel); + function getColorStopValues(visualMapModel, valueState, dataExtent) { + if (dataExtent[0] === dataExtent[1]) { + return dataExtent.slice(); + } + // When using colorHue mapping, it is not linear color any more. + // Moreover, canvas gradient seems not to be accurate linear. + // FIXME + // Should be arbitrary value 100? or based on pixel size? + var count = 200; + var step = (dataExtent[1] - dataExtent[0]) / count; + var value = dataExtent[0]; + var stopValues = []; + for (var i = 0; i <= count && value < dataExtent[1]; i++) { + stopValues.push(value); + value += step; + } + stopValues.push(dataExtent[1]); + return stopValues; + } + + var VisualMapView = /** @class */function (_super) { + __extends(VisualMapView, _super); + function VisualMapView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = VisualMapView.type; + _this.autoPositionValues = { + left: 1, + right: 1, + top: 1, + bottom: 1 + }; + return _this; + } + VisualMapView.prototype.init = function (ecModel, api) { + this.ecModel = ecModel; + this.api = api; + }; + /** + * @protected + */ + VisualMapView.prototype.render = function (visualMapModel, ecModel, api, payload // TODO: TYPE + ) { + this.visualMapModel = visualMapModel; + if (visualMapModel.get('show') === false) { + this.group.removeAll(); + return; + } + this.doRender(visualMapModel, ecModel, api, payload); + }; + /** + * @protected + */ + VisualMapView.prototype.renderBackground = function (group) { + var visualMapModel = this.visualMapModel; + var padding = normalizeCssArray$1(visualMapModel.get('padding') || 0); + var rect = group.getBoundingRect(); + group.add(new Rect({ + z2: -1, + silent: true, + shape: { + x: rect.x - padding[3], + y: rect.y - padding[0], + width: rect.width + padding[3] + padding[1], + height: rect.height + padding[0] + padding[2] + }, + style: { + fill: visualMapModel.get('backgroundColor'), + stroke: visualMapModel.get('borderColor'), + lineWidth: visualMapModel.get('borderWidth') + } + })); + }; + /** + * @protected + * @param targetValue can be Infinity or -Infinity + * @param visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize' + * @param opts + * @param opts.forceState Specify state, instead of using getValueState method. + * @param opts.convertOpacityToAlpha For color gradient in controller widget. + * @return {*} Visual value. + */ + VisualMapView.prototype.getControllerVisual = function (targetValue, visualCluster, opts) { + opts = opts || {}; + var forceState = opts.forceState; + var visualMapModel = this.visualMapModel; + var visualObj = {}; + // Default values. + if (visualCluster === 'color') { + var defaultColor = visualMapModel.get('contentColor'); + visualObj.color = defaultColor; + } + function getter(key) { + return visualObj[key]; + } + function setter(key, value) { + visualObj[key] = value; + } + var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)]; + var visualTypes = VisualMapping.prepareVisualTypes(mappings); + each(visualTypes, function (type) { + var visualMapping = mappings[type]; + if (opts.convertOpacityToAlpha && type === 'opacity') { + type = 'colorAlpha'; + visualMapping = mappings.__alphaForOpacity; + } + if (VisualMapping.dependsOn(type, visualCluster)) { + visualMapping && visualMapping.applyVisual(targetValue, getter, setter); + } + }); + return visualObj[visualCluster]; + }; + VisualMapView.prototype.positionGroup = function (group) { + var model = this.visualMapModel; + var api = this.api; + positionElement(group, model.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }); + }; + VisualMapView.prototype.doRender = function (visualMapModel, ecModel, api, payload) {}; + VisualMapView.type = 'visualMap'; + return VisualMapView; + }(ComponentView); + + var paramsSet = [['left', 'right', 'width'], ['top', 'bottom', 'height']]; + /** + * @param visualMapModel + * @param api + * @param itemSize always [short, long] + * @return {string} 'left' or 'right' or 'top' or 'bottom' + */ + function getItemAlign(visualMapModel, api, itemSize) { + var modelOption = visualMapModel.option; + var itemAlign = modelOption.align; + if (itemAlign != null && itemAlign !== 'auto') { + return itemAlign; + } + // Auto decision align. + var ecSize = { + width: api.getWidth(), + height: api.getHeight() + }; + var realIndex = modelOption.orient === 'horizontal' ? 1 : 0; + var reals = paramsSet[realIndex]; + var fakeValue = [0, null, 10]; + var layoutInput = {}; + for (var i = 0; i < 3; i++) { + layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i]; + layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]]; + } + var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex]; + var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding); + return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1]; + } + /** + * Prepare dataIndex for outside usage, where dataIndex means rawIndex, and + * dataIndexInside means filtered index. + */ + // TODO: TYPE more specified payload types. + function makeHighDownBatch(batch, visualMapModel) { + each(batch || [], function (batchItem) { + if (batchItem.dataIndex != null) { + batchItem.dataIndexInside = batchItem.dataIndex; + batchItem.dataIndex = null; + } + batchItem.highlightKey = 'visualMap' + (visualMapModel ? visualMapModel.componentIndex : ''); + }); + return batch; + } + + var linearMap$2 = linearMap; + var each$e = each; + var mathMin$a = Math.min; + var mathMax$a = Math.max; + // Arbitrary value + var HOVER_LINK_SIZE = 12; + var HOVER_LINK_OUT = 6; + // Notice: + // Any "interval" should be by the order of [low, high]. + // "handle0" (handleIndex === 0) maps to + // low data value: this._dataInterval[0] and has low coord. + // "handle1" (handleIndex === 1) maps to + // high data value: this._dataInterval[1] and has high coord. + // The logic of transform is implemented in this._createBarGroup. + var ContinuousView = /** @class */function (_super) { + __extends(ContinuousView, _super); + function ContinuousView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = ContinuousView.type; + _this._shapes = {}; + _this._dataInterval = []; + _this._handleEnds = []; + _this._hoverLinkDataIndices = []; + return _this; + } + ContinuousView.prototype.init = function (ecModel, api) { + _super.prototype.init.call(this, ecModel, api); + this._hoverLinkFromSeriesMouseOver = bind(this._hoverLinkFromSeriesMouseOver, this); + this._hideIndicator = bind(this._hideIndicator, this); + }; + ContinuousView.prototype.doRender = function (visualMapModel, ecModel, api, payload) { + if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) { + this._buildView(); + } + }; + ContinuousView.prototype._buildView = function () { + this.group.removeAll(); + var visualMapModel = this.visualMapModel; + var thisGroup = this.group; + this._orient = visualMapModel.get('orient'); + this._useHandle = visualMapModel.get('calculable'); + this._resetInterval(); + this._renderBar(thisGroup); + var dataRangeText = visualMapModel.get('text'); + this._renderEndsText(thisGroup, dataRangeText, 0); + this._renderEndsText(thisGroup, dataRangeText, 1); + // Do this for background size calculation. + this._updateView(true); + // After updating view, inner shapes is built completely, + // and then background can be rendered. + this.renderBackground(thisGroup); + // Real update view + this._updateView(); + this._enableHoverLinkToSeries(); + this._enableHoverLinkFromSeries(); + this.positionGroup(thisGroup); + }; + ContinuousView.prototype._renderEndsText = function (group, dataRangeText, endsIndex) { + if (!dataRangeText) { + return; + } + // Compatible with ec2, text[0] map to high value, text[1] map low value. + var text = dataRangeText[1 - endsIndex]; + text = text != null ? text + '' : ''; + var visualMapModel = this.visualMapModel; + var textGap = visualMapModel.get('textGap'); + var itemSize = visualMapModel.itemSize; + var barGroup = this._shapes.mainGroup; + var position = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup); + var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup); + var orient = this._orient; + var textStyleModel = this.visualMapModel.textStyleModel; + this.group.add(new ZRText({ + style: createTextStyle(textStyleModel, { + x: position[0], + y: position[1], + verticalAlign: orient === 'horizontal' ? 'middle' : align, + align: orient === 'horizontal' ? align : 'center', + text: text + }) + })); + }; + ContinuousView.prototype._renderBar = function (targetGroup) { + var visualMapModel = this.visualMapModel; + var shapes = this._shapes; + var itemSize = visualMapModel.itemSize; + var orient = this._orient; + var useHandle = this._useHandle; + var itemAlign = getItemAlign(visualMapModel, this.api, itemSize); + var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign); + var gradientBarGroup = new Group(); + mainGroup.add(gradientBarGroup); + // Bar + gradientBarGroup.add(shapes.outOfRange = createPolygon()); + gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor$1(this._orient) : null, bind(this._dragHandle, this, 'all', false), bind(this._dragHandle, this, 'all', true))); + // A border radius clip. + gradientBarGroup.setClipPath(new Rect({ + shape: { + x: 0, + y: 0, + width: itemSize[0], + height: itemSize[1], + r: 3 + } + })); + var textRect = visualMapModel.textStyleModel.getTextRect('国'); + var textSize = mathMax$a(textRect.width, textRect.height); + // Handle + if (useHandle) { + shapes.handleThumbs = []; + shapes.handleLabels = []; + shapes.handleLabelPoints = []; + this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient); + this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient); + } + this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient); + targetGroup.add(mainGroup); + }; + ContinuousView.prototype._createHandle = function (visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) { + var onDrift = bind(this._dragHandle, this, handleIndex, false); + var onDragEnd = bind(this._dragHandle, this, handleIndex, true); + var handleSize = parsePercent(visualMapModel.get('handleSize'), itemSize[0]); + var handleThumb = createSymbol(visualMapModel.get('handleIcon'), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true); + var cursor = getCursor$1(this._orient); + handleThumb.attr({ + cursor: cursor, + draggable: true, + drift: onDrift, + ondragend: onDragEnd, + onmousemove: function (e) { + stop(e.event); + } + }); + handleThumb.x = itemSize[0] / 2; + handleThumb.useStyle(visualMapModel.getModel('handleStyle').getItemStyle()); + handleThumb.setStyle({ + strokeNoScale: true, + strokeFirst: true + }); + handleThumb.style.lineWidth *= 2; + handleThumb.ensureState('emphasis').style = visualMapModel.getModel(['emphasis', 'handleStyle']).getItemStyle(); + setAsHighDownDispatcher(handleThumb, true); + mainGroup.add(handleThumb); + // Text is always horizontal layout but should not be effected by + // transform (orient/inverse). So label is built separately but not + // use zrender/graphic/helper/RectText, and is located based on view + // group (according to handleLabelPoint) but not barGroup. + var textStyleModel = this.visualMapModel.textStyleModel; + var handleLabel = new ZRText({ + cursor: cursor, + draggable: true, + drift: onDrift, + onmousemove: function (e) { + // For mobile device, prevent screen slider on the button. + stop(e.event); + }, + ondragend: onDragEnd, + style: createTextStyle(textStyleModel, { + x: 0, + y: 0, + text: '' + }) + }); + handleLabel.ensureState('blur').style = { + opacity: 0.1 + }; + handleLabel.stateTransition = { + duration: 200 + }; + this.group.add(handleLabel); + var handleLabelPoint = [handleSize, 0]; + var shapes = this._shapes; + shapes.handleThumbs[handleIndex] = handleThumb; + shapes.handleLabelPoints[handleIndex] = handleLabelPoint; + shapes.handleLabels[handleIndex] = handleLabel; + }; + ContinuousView.prototype._createIndicator = function (visualMapModel, mainGroup, itemSize, textSize, orient) { + var scale = parsePercent(visualMapModel.get('indicatorSize'), itemSize[0]); + var indicator = createSymbol(visualMapModel.get('indicatorIcon'), -scale / 2, -scale / 2, scale, scale, null, true); + indicator.attr({ + cursor: 'move', + invisible: true, + silent: true, + x: itemSize[0] / 2 + }); + var indicatorStyle = visualMapModel.getModel('indicatorStyle').getItemStyle(); + if (indicator instanceof ZRImage) { + var pathStyle = indicator.style; + indicator.useStyle(extend({ + // TODO other properties like x, y ? + image: pathStyle.image, + x: pathStyle.x, + y: pathStyle.y, + width: pathStyle.width, + height: pathStyle.height + }, indicatorStyle)); + } else { + indicator.useStyle(indicatorStyle); + } + mainGroup.add(indicator); + var textStyleModel = this.visualMapModel.textStyleModel; + var indicatorLabel = new ZRText({ + silent: true, + invisible: true, + style: createTextStyle(textStyleModel, { + x: 0, + y: 0, + text: '' + }) + }); + this.group.add(indicatorLabel); + var indicatorLabelPoint = [(orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2, 0]; + var shapes = this._shapes; + shapes.indicator = indicator; + shapes.indicatorLabel = indicatorLabel; + shapes.indicatorLabelPoint = indicatorLabelPoint; + this._firstShowIndicator = true; + }; + ContinuousView.prototype._dragHandle = function (handleIndex, isEnd, + // dx is event from ondragend if isEnd is true. It's not used + dx, dy) { + if (!this._useHandle) { + return; + } + this._dragging = !isEnd; + if (!isEnd) { + // Transform dx, dy to bar coordination. + var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true); + this._updateInterval(handleIndex, vertex[1]); + this._hideIndicator(); + // Considering realtime, update view should be executed + // before dispatch action. + this._updateView(); + } + // dragEnd do not dispatch action when realtime. + if (isEnd === !this.visualMapModel.get('realtime')) { + // jshint ignore:line + this.api.dispatchAction({ + type: 'selectDataRange', + from: this.uid, + visualMapId: this.visualMapModel.id, + selected: this._dataInterval.slice() + }); + } + if (isEnd) { + !this._hovering && this._clearHoverLinkToSeries(); + } else if (useHoverLinkOnHandle(this.visualMapModel)) { + this._doHoverLinkToSeries(this._handleEnds[handleIndex], false); + } + }; + ContinuousView.prototype._resetInterval = function () { + var visualMapModel = this.visualMapModel; + var dataInterval = this._dataInterval = visualMapModel.getSelected(); + var dataExtent = visualMapModel.getExtent(); + var sizeExtent = [0, visualMapModel.itemSize[1]]; + this._handleEnds = [linearMap$2(dataInterval[0], dataExtent, sizeExtent, true), linearMap$2(dataInterval[1], dataExtent, sizeExtent, true)]; + }; + /** + * @private + * @param {(number|string)} handleIndex 0 or 1 or 'all' + * @param {number} dx + * @param {number} dy + */ + ContinuousView.prototype._updateInterval = function (handleIndex, delta) { + delta = delta || 0; + var visualMapModel = this.visualMapModel; + var handleEnds = this._handleEnds; + var sizeExtent = [0, visualMapModel.itemSize[1]]; + sliderMove(delta, handleEnds, sizeExtent, handleIndex, + // cross is forbidden + 0); + var dataExtent = visualMapModel.getExtent(); + // Update data interval. + this._dataInterval = [linearMap$2(handleEnds[0], sizeExtent, dataExtent, true), linearMap$2(handleEnds[1], sizeExtent, dataExtent, true)]; + }; + ContinuousView.prototype._updateView = function (forSketch) { + var visualMapModel = this.visualMapModel; + var dataExtent = visualMapModel.getExtent(); + var shapes = this._shapes; + var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]]; + var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds; + var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange'); + var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange'); + shapes.inRange.setStyle({ + fill: visualInRange.barColor + // opacity: visualInRange.opacity + }).setShape('points', visualInRange.barPoints); + shapes.outOfRange.setStyle({ + fill: visualOutOfRange.barColor + // opacity: visualOutOfRange.opacity + }).setShape('points', visualOutOfRange.barPoints); + this._updateHandle(inRangeHandleEnds, visualInRange); + }; + ContinuousView.prototype._createBarVisual = function (dataInterval, dataExtent, handleEnds, forceState) { + var opts = { + forceState: forceState, + convertOpacityToAlpha: true + }; + var colorStops = this._makeColorGradient(dataInterval, opts); + var symbolSizes = [this.getControllerVisual(dataInterval[0], 'symbolSize', opts), this.getControllerVisual(dataInterval[1], 'symbolSize', opts)]; + var barPoints = this._createBarPoints(handleEnds, symbolSizes); + return { + barColor: new LinearGradient(0, 0, 0, 1, colorStops), + barPoints: barPoints, + handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color] + }; + }; + ContinuousView.prototype._makeColorGradient = function (dataInterval, opts) { + // Considering colorHue, which is not linear, so we have to sample + // to calculate gradient color stops, but not only calculate head + // and tail. + var sampleNumber = 100; // Arbitrary value. + var colorStops = []; + var step = (dataInterval[1] - dataInterval[0]) / sampleNumber; + colorStops.push({ + color: this.getControllerVisual(dataInterval[0], 'color', opts), + offset: 0 + }); + for (var i = 1; i < sampleNumber; i++) { + var currValue = dataInterval[0] + step * i; + if (currValue > dataInterval[1]) { + break; + } + colorStops.push({ + color: this.getControllerVisual(currValue, 'color', opts), + offset: i / sampleNumber + }); + } + colorStops.push({ + color: this.getControllerVisual(dataInterval[1], 'color', opts), + offset: 1 + }); + return colorStops; + }; + ContinuousView.prototype._createBarPoints = function (handleEnds, symbolSizes) { + var itemSize = this.visualMapModel.itemSize; + return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]]; + }; + ContinuousView.prototype._createBarGroup = function (itemAlign) { + var orient = this._orient; + var inverse = this.visualMapModel.get('inverse'); + return new Group(orient === 'horizontal' && !inverse ? { + scaleX: itemAlign === 'bottom' ? 1 : -1, + rotation: Math.PI / 2 + } : orient === 'horizontal' && inverse ? { + scaleX: itemAlign === 'bottom' ? -1 : 1, + rotation: -Math.PI / 2 + } : orient === 'vertical' && !inverse ? { + scaleX: itemAlign === 'left' ? 1 : -1, + scaleY: -1 + } : { + scaleX: itemAlign === 'left' ? 1 : -1 + }); + }; + ContinuousView.prototype._updateHandle = function (handleEnds, visualInRange) { + if (!this._useHandle) { + return; + } + var shapes = this._shapes; + var visualMapModel = this.visualMapModel; + var handleThumbs = shapes.handleThumbs; + var handleLabels = shapes.handleLabels; + var itemSize = visualMapModel.itemSize; + var dataExtent = visualMapModel.getExtent(); + each$e([0, 1], function (handleIndex) { + var handleThumb = handleThumbs[handleIndex]; + handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]); + handleThumb.y = handleEnds[handleIndex]; + var val = linearMap$2(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true); + var symbolSize = this.getControllerVisual(val, 'symbolSize'); + handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0]; + handleThumb.x = itemSize[0] - symbolSize / 2; + // Update handle label position. + var textPoint = applyTransform$1(shapes.handleLabelPoints[handleIndex], getTransform(handleThumb, this.group)); + handleLabels[handleIndex].setStyle({ + x: textPoint[0], + y: textPoint[1], + text: visualMapModel.formatValueText(this._dataInterval[handleIndex]), + verticalAlign: 'middle', + align: this._orient === 'vertical' ? this._applyTransform('left', shapes.mainGroup) : 'center' + }); + }, this); + }; + ContinuousView.prototype._showIndicator = function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) { + var visualMapModel = this.visualMapModel; + var dataExtent = visualMapModel.getExtent(); + var itemSize = visualMapModel.itemSize; + var sizeExtent = [0, itemSize[1]]; + var shapes = this._shapes; + var indicator = shapes.indicator; + if (!indicator) { + return; + } + indicator.attr('invisible', false); + var opts = { + convertOpacityToAlpha: true + }; + var color = this.getControllerVisual(cursorValue, 'color', opts); + var symbolSize = this.getControllerVisual(cursorValue, 'symbolSize'); + var y = linearMap$2(cursorValue, dataExtent, sizeExtent, true); + var x = itemSize[0] - symbolSize / 2; + var oldIndicatorPos = { + x: indicator.x, + y: indicator.y + }; + // Update handle label position. + indicator.y = y; + indicator.x = x; + var textPoint = applyTransform$1(shapes.indicatorLabelPoint, getTransform(indicator, this.group)); + var indicatorLabel = shapes.indicatorLabel; + indicatorLabel.attr('invisible', false); + var align = this._applyTransform('left', shapes.mainGroup); + var orient = this._orient; + var isHorizontal = orient === 'horizontal'; + indicatorLabel.setStyle({ + text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue), + verticalAlign: isHorizontal ? align : 'middle', + align: isHorizontal ? 'center' : align + }); + var indicatorNewProps = { + x: x, + y: y, + style: { + fill: color + } + }; + var labelNewProps = { + style: { + x: textPoint[0], + y: textPoint[1] + } + }; + if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) { + var animationCfg = { + duration: 100, + easing: 'cubicInOut', + additive: true + }; + indicator.x = oldIndicatorPos.x; + indicator.y = oldIndicatorPos.y; + indicator.animateTo(indicatorNewProps, animationCfg); + indicatorLabel.animateTo(labelNewProps, animationCfg); + } else { + indicator.attr(indicatorNewProps); + indicatorLabel.attr(labelNewProps); + } + this._firstShowIndicator = false; + var handleLabels = this._shapes.handleLabels; + if (handleLabels) { + for (var i = 0; i < handleLabels.length; i++) { + // Fade out handle labels. + // NOTE: Must use api enter/leave on emphasis/blur/select state. Or the global states manager will change it. + this.api.enterBlur(handleLabels[i]); + } + } + }; + ContinuousView.prototype._enableHoverLinkToSeries = function () { + var self = this; + this._shapes.mainGroup.on('mousemove', function (e) { + self._hovering = true; + if (!self._dragging) { + var itemSize = self.visualMapModel.itemSize; + var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.mainGroup, true, true); + // For hover link show when hover handle, which might be + // below or upper than sizeExtent. + pos[1] = mathMin$a(mathMax$a(0, pos[1]), itemSize[1]); + self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]); + } + }).on('mouseout', function () { + // When mouse is out of handle, hoverLink still need + // to be displayed when realtime is set as false. + self._hovering = false; + !self._dragging && self._clearHoverLinkToSeries(); + }); + }; + ContinuousView.prototype._enableHoverLinkFromSeries = function () { + var zr = this.api.getZr(); + if (this.visualMapModel.option.hoverLink) { + zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this); + zr.on('mouseout', this._hideIndicator, this); + } else { + this._clearHoverLinkFromSeries(); + } + }; + ContinuousView.prototype._doHoverLinkToSeries = function (cursorPos, hoverOnBar) { + var visualMapModel = this.visualMapModel; + var itemSize = visualMapModel.itemSize; + if (!visualMapModel.option.hoverLink) { + return; + } + var sizeExtent = [0, itemSize[1]]; + var dataExtent = visualMapModel.getExtent(); + // For hover link show when hover handle, which might be below or upper than sizeExtent. + cursorPos = mathMin$a(mathMax$a(sizeExtent[0], cursorPos), sizeExtent[1]); + var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent); + var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize]; + var cursorValue = linearMap$2(cursorPos, sizeExtent, dataExtent, true); + var valueRange = [linearMap$2(hoverRange[0], sizeExtent, dataExtent, true), linearMap$2(hoverRange[1], sizeExtent, dataExtent, true)]; + // Consider data range is out of visualMap range, see test/visualMap-continuous.html, + // where china and india has very large population. + hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity); + hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); + // Do not show indicator when mouse is over handle, + // otherwise labels overlap, especially when dragging. + if (hoverOnBar) { + if (valueRange[0] === -Infinity) { + this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize); + } else if (valueRange[1] === Infinity) { + this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize); + } else { + this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize); + } + } + // When realtime is set as false, handles, which are in barGroup, + // also trigger hoverLink, which help user to realize where they + // focus on when dragging. (see test/heatmap-large.html) + // When realtime is set as true, highlight will not show when hover + // handle, because the label on handle, which displays a exact value + // but not range, might mislead users. + var oldBatch = this._hoverLinkDataIndices; + var newBatch = []; + if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) { + newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange); + } + var resultBatches = compressBatches(oldBatch, newBatch); + this._dispatchHighDown('downplay', makeHighDownBatch(resultBatches[0], visualMapModel)); + this._dispatchHighDown('highlight', makeHighDownBatch(resultBatches[1], visualMapModel)); + }; + ContinuousView.prototype._hoverLinkFromSeriesMouseOver = function (e) { + var ecData; + findEventDispatcher(e.target, function (target) { + var currECData = getECData(target); + if (currECData.dataIndex != null) { + ecData = currECData; + return true; + } + }, true); + if (!ecData) { + return; + } + var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex); + var visualMapModel = this.visualMapModel; + if (!visualMapModel.isTargetSeries(dataModel)) { + return; + } + var data = dataModel.getData(ecData.dataType); + var value = data.getStore().get(visualMapModel.getDataDimensionIndex(data), ecData.dataIndex); + if (!isNaN(value)) { + this._showIndicator(value, value); + } + }; + ContinuousView.prototype._hideIndicator = function () { + var shapes = this._shapes; + shapes.indicator && shapes.indicator.attr('invisible', true); + shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true); + var handleLabels = this._shapes.handleLabels; + if (handleLabels) { + for (var i = 0; i < handleLabels.length; i++) { + // Fade out handle labels. + // NOTE: Must use api enter/leave on emphasis/blur/select state. Or the global states manager will change it. + this.api.leaveBlur(handleLabels[i]); + } + } + }; + ContinuousView.prototype._clearHoverLinkToSeries = function () { + this._hideIndicator(); + var indices = this._hoverLinkDataIndices; + this._dispatchHighDown('downplay', makeHighDownBatch(indices, this.visualMapModel)); + indices.length = 0; + }; + ContinuousView.prototype._clearHoverLinkFromSeries = function () { + this._hideIndicator(); + var zr = this.api.getZr(); + zr.off('mouseover', this._hoverLinkFromSeriesMouseOver); + zr.off('mouseout', this._hideIndicator); + }; + ContinuousView.prototype._applyTransform = function (vertex, element, inverse, global) { + var transform = getTransform(element, global ? null : this.group); + return isArray(vertex) ? applyTransform$1(vertex, transform, inverse) : transformDirection(vertex, transform, inverse); + }; + // TODO: TYPE more specified payload types. + ContinuousView.prototype._dispatchHighDown = function (type, batch) { + batch && batch.length && this.api.dispatchAction({ + type: type, + batch: batch + }); + }; + /** + * @override + */ + ContinuousView.prototype.dispose = function () { + this._clearHoverLinkFromSeries(); + this._clearHoverLinkToSeries(); + }; + ContinuousView.type = 'visualMap.continuous'; + return ContinuousView; + }(VisualMapView); + function createPolygon(points, cursor, onDrift, onDragEnd) { + return new Polygon({ + shape: { + points: points + }, + draggable: !!onDrift, + cursor: cursor, + drift: onDrift, + onmousemove: function (e) { + // For mobile device, prevent screen slider on the button. + stop(e.event); + }, + ondragend: onDragEnd + }); + } + function getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) { + var halfHoverLinkSize = HOVER_LINK_SIZE / 2; + var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize'); + if (hoverLinkDataSize) { + halfHoverLinkSize = linearMap$2(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2; + } + return halfHoverLinkSize; + } + function useHoverLinkOnHandle(visualMapModel) { + var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle'); + return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle); + } + function getCursor$1(orient) { + return orient === 'vertical' ? 'ns-resize' : 'ew-resize'; + } + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + + /** + * AUTO-GENERATED FILE. DO NOT MODIFY. + */ + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var visualMapActionInfo = { + type: 'selectDataRange', + event: 'dataRangeSelected', + // FIXME use updateView appears wrong + update: 'update' + }; + var visualMapActionHander = function (payload, ecModel) { + ecModel.eachComponent({ + mainType: 'visualMap', + query: payload + }, function (model) { + model.setSelected(payload.selected); + }); + }; + + var visualMapEncodingHandlers = [{ + createOnAllSeries: true, + reset: function (seriesModel, ecModel) { + var resetDefines = []; + ecModel.eachComponent('visualMap', function (visualMapModel) { + var pipelineContext = seriesModel.pipelineContext; + if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) { + return; + } + resetDefines.push(incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimensionIndex(seriesModel.getData()))); + }); + return resetDefines; + } + }, + // Only support color. + { + createOnAllSeries: true, + reset: function (seriesModel, ecModel) { + var data = seriesModel.getData(); + var visualMetaList = []; + ecModel.eachComponent('visualMap', function (visualMapModel) { + if (visualMapModel.isTargetSeries(seriesModel)) { + var visualMeta = visualMapModel.getVisualMeta(bind(getColorVisual, null, seriesModel, visualMapModel)) || { + stops: [], + outerColors: [] + }; + var dimIdx = visualMapModel.getDataDimensionIndex(data); + if (dimIdx >= 0) { + // visualMeta.dimension should be dimension index, but not concrete dimension. + visualMeta.dimension = dimIdx; + visualMetaList.push(visualMeta); + } + } + }); + // console.log(JSON.stringify(visualMetaList.map(a => a.stops))); + seriesModel.getData().setVisual('visualMeta', visualMetaList); + } + }]; + // FIXME + // performance and export for heatmap? + // value can be Infinity or -Infinity + function getColorVisual(seriesModel, visualMapModel, value, valueState) { + var mappings = visualMapModel.targetVisuals[valueState]; + var visualTypes = VisualMapping.prepareVisualTypes(mappings); + var resultVisual = { + color: getVisualFromData(seriesModel.getData(), 'color') // default color. + }; + + for (var i = 0, len = visualTypes.length; i < len; i++) { + var type = visualTypes[i]; + var mapping = mappings[type === 'opacity' ? '__alphaForOpacity' : type]; + mapping && mapping.applyVisual(value, getVisual, setVisual); + } + return resultVisual.color; + function getVisual(key) { + return resultVisual[key]; + } + function setVisual(key, value) { + resultVisual[key] = value; + } + } + + var each$f = each; + function visualMapPreprocessor(option) { + var visualMap = option && option.visualMap; + if (!isArray(visualMap)) { + visualMap = visualMap ? [visualMap] : []; + } + each$f(visualMap, function (opt) { + if (!opt) { + return; + } + // rename splitList to pieces + if (has$1(opt, 'splitList') && !has$1(opt, 'pieces')) { + opt.pieces = opt.splitList; + delete opt.splitList; + } + var pieces = opt.pieces; + if (pieces && isArray(pieces)) { + each$f(pieces, function (piece) { + if (isObject(piece)) { + if (has$1(piece, 'start') && !has$1(piece, 'min')) { + piece.min = piece.start; + } + if (has$1(piece, 'end') && !has$1(piece, 'max')) { + piece.max = piece.end; + } + } + }); + } + }); + } + function has$1(obj, name) { + return obj && obj.hasOwnProperty && obj.hasOwnProperty(name); + } + + var installed$1 = false; + function installCommon$1(registers) { + if (installed$1) { + return; + } + installed$1 = true; + registers.registerSubTypeDefaulter('visualMap', function (option) { + // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used. + return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? 'continuous' : 'piecewise'; + }); + registers.registerAction(visualMapActionInfo, visualMapActionHander); + each(visualMapEncodingHandlers, function (handler) { + registers.registerVisual(registers.PRIORITY.VISUAL.COMPONENT, handler); + }); + registers.registerPreprocessor(visualMapPreprocessor); + } + + function install$N(registers) { + registers.registerComponentModel(ContinuousModel); + registers.registerComponentView(ContinuousView); + installCommon$1(registers); + } + + var PiecewiseModel = /** @class */function (_super) { + __extends(PiecewiseModel, _super); + function PiecewiseModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = PiecewiseModel.type; + /** + * The order is always [low, ..., high]. + * [{text: string, interval: Array.}, ...] + */ + _this._pieceList = []; + return _this; + } + PiecewiseModel.prototype.optionUpdated = function (newOption, isInit) { + _super.prototype.optionUpdated.apply(this, arguments); + this.resetExtent(); + var mode = this._mode = this._determineMode(); + this._pieceList = []; + resetMethods[this._mode].call(this, this._pieceList); + this._resetSelected(newOption, isInit); + var categories = this.option.categories; + this.resetVisual(function (mappingOption, state) { + if (mode === 'categories') { + mappingOption.mappingMethod = 'category'; + mappingOption.categories = clone(categories); + } else { + mappingOption.dataExtent = this.getExtent(); + mappingOption.mappingMethod = 'piecewise'; + mappingOption.pieceList = map(this._pieceList, function (piece) { + piece = clone(piece); + if (state !== 'inRange') { + // FIXME + // outOfRange do not support special visual in pieces. + piece.visual = null; + } + return piece; + }); + } + }); + }; + /** + * @protected + * @override + */ + PiecewiseModel.prototype.completeVisualOption = function () { + // Consider this case: + // visualMap: { + // pieces: [{symbol: 'circle', lt: 0}, {symbol: 'rect', gte: 0}] + // } + // where no inRange/outOfRange set but only pieces. So we should make + // default inRange/outOfRange for this case, otherwise visuals that only + // appear in `pieces` will not be taken into account in visual encoding. + var option = this.option; + var visualTypesInPieces = {}; + var visualTypes = VisualMapping.listVisualTypes(); + var isCategory = this.isCategory(); + each(option.pieces, function (piece) { + each(visualTypes, function (visualType) { + if (piece.hasOwnProperty(visualType)) { + visualTypesInPieces[visualType] = 1; + } + }); + }); + each(visualTypesInPieces, function (v, visualType) { + var exists = false; + each(this.stateList, function (state) { + exists = exists || has(option, state, visualType) || has(option.target, state, visualType); + }, this); + !exists && each(this.stateList, function (state) { + (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory); + }); + }, this); + function has(obj, state, visualType) { + return obj && obj[state] && obj[state].hasOwnProperty(visualType); + } + _super.prototype.completeVisualOption.apply(this, arguments); + }; + PiecewiseModel.prototype._resetSelected = function (newOption, isInit) { + var thisOption = this.option; + var pieceList = this._pieceList; + // Selected do not merge but all override. + var selected = (isInit ? thisOption : newOption).selected || {}; + thisOption.selected = selected; + // Consider 'not specified' means true. + each(pieceList, function (piece, index) { + var key = this.getSelectedMapKey(piece); + if (!selected.hasOwnProperty(key)) { + selected[key] = true; + } + }, this); + if (thisOption.selectedMode === 'single') { + // Ensure there is only one selected. + var hasSel_1 = false; + each(pieceList, function (piece, index) { + var key = this.getSelectedMapKey(piece); + if (selected[key]) { + hasSel_1 ? selected[key] = false : hasSel_1 = true; + } + }, this); + } + // thisOption.selectedMode === 'multiple', default: all selected. + }; + /** + * @public + */ + PiecewiseModel.prototype.getItemSymbol = function () { + return this.get('itemSymbol'); + }; + /** + * @public + */ + PiecewiseModel.prototype.getSelectedMapKey = function (piece) { + return this._mode === 'categories' ? piece.value + '' : piece.index + ''; + }; + /** + * @public + */ + PiecewiseModel.prototype.getPieceList = function () { + return this._pieceList; + }; + /** + * @return {string} + */ + PiecewiseModel.prototype._determineMode = function () { + var option = this.option; + return option.pieces && option.pieces.length > 0 ? 'pieces' : this.option.categories ? 'categories' : 'splitNumber'; + }; + /** + * @override + */ + PiecewiseModel.prototype.setSelected = function (selected) { + this.option.selected = clone(selected); + }; + /** + * @override + */ + PiecewiseModel.prototype.getValueState = function (value) { + var index = VisualMapping.findPieceIndex(value, this._pieceList); + return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? 'inRange' : 'outOfRange' : 'outOfRange'; + }; + /** + * @public + * @param pieceIndex piece index in visualMapModel.getPieceList() + */ + PiecewiseModel.prototype.findTargetDataIndices = function (pieceIndex) { + var result = []; + var pieceList = this._pieceList; + this.eachTargetSeries(function (seriesModel) { + var dataIndices = []; + var data = seriesModel.getData(); + data.each(this.getDataDimensionIndex(data), function (value, dataIndex) { + // Should always base on model pieceList, because it is order sensitive. + var pIdx = VisualMapping.findPieceIndex(value, pieceList); + pIdx === pieceIndex && dataIndices.push(dataIndex); + }, this); + result.push({ + seriesId: seriesModel.id, + dataIndex: dataIndices + }); + }, this); + return result; + }; + /** + * @private + * @param piece piece.value or piece.interval is required. + * @return Can be Infinity or -Infinity + */ + PiecewiseModel.prototype.getRepresentValue = function (piece) { + var representValue; + if (this.isCategory()) { + representValue = piece.value; + } else { + if (piece.value != null) { + representValue = piece.value; + } else { + var pieceInterval = piece.interval || []; + representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2; + } + } + return representValue; + }; + PiecewiseModel.prototype.getVisualMeta = function (getColorVisual) { + // Do not support category. (category axis is ordinal, numerical) + if (this.isCategory()) { + return; + } + var stops = []; + var outerColors = ['', '']; + var visualMapModel = this; + function setStop(interval, valueState) { + var representValue = visualMapModel.getRepresentValue({ + interval: interval + }); // Not category + if (!valueState) { + valueState = visualMapModel.getValueState(representValue); + } + var color = getColorVisual(representValue, valueState); + if (interval[0] === -Infinity) { + outerColors[0] = color; + } else if (interval[1] === Infinity) { + outerColors[1] = color; + } else { + stops.push({ + value: interval[0], + color: color + }, { + value: interval[1], + color: color + }); + } + } + // Suplement + var pieceList = this._pieceList.slice(); + if (!pieceList.length) { + pieceList.push({ + interval: [-Infinity, Infinity] + }); + } else { + var edge = pieceList[0].interval[0]; + edge !== -Infinity && pieceList.unshift({ + interval: [-Infinity, edge] + }); + edge = pieceList[pieceList.length - 1].interval[1]; + edge !== Infinity && pieceList.push({ + interval: [edge, Infinity] + }); + } + var curr = -Infinity; + each(pieceList, function (piece) { + var interval = piece.interval; + if (interval) { + // Fulfill gap. + interval[0] > curr && setStop([curr, interval[0]], 'outOfRange'); + setStop(interval.slice()); + curr = interval[1]; + } + }, this); + return { + stops: stops, + outerColors: outerColors + }; + }; + PiecewiseModel.type = 'visualMap.piecewise'; + PiecewiseModel.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, { + selected: null, + minOpen: false, + maxOpen: false, + align: 'auto', + itemWidth: 20, + itemHeight: 14, + itemSymbol: 'roundRect', + pieces: null, + categories: null, + splitNumber: 5, + selectedMode: 'multiple', + itemGap: 10, + hoverLink: true // Enable hover highlight. + }); + + return PiecewiseModel; + }(VisualMapModel); + /** + * Key is this._mode + * @type {Object} + * @this {module:echarts/component/viusalMap/PiecewiseMode} + */ + var resetMethods = { + splitNumber: function (outPieceList) { + var thisOption = this.option; + var precision = Math.min(thisOption.precision, 20); + var dataExtent = this.getExtent(); + var splitNumber = thisOption.splitNumber; + splitNumber = Math.max(parseInt(splitNumber, 10), 1); + thisOption.splitNumber = splitNumber; + var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; + // Precision auto-adaption + while (+splitStep.toFixed(precision) !== splitStep && precision < 5) { + precision++; + } + thisOption.precision = precision; + splitStep = +splitStep.toFixed(precision); + if (thisOption.minOpen) { + outPieceList.push({ + interval: [-Infinity, dataExtent[0]], + close: [0, 0] + }); + } + for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) { + var max = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep; + outPieceList.push({ + interval: [curr, max], + close: [1, 1] + }); + } + if (thisOption.maxOpen) { + outPieceList.push({ + interval: [dataExtent[1], Infinity], + close: [0, 0] + }); + } + reformIntervals(outPieceList); + each(outPieceList, function (piece, index) { + piece.index = index; + piece.text = this.formatValueText(piece.interval); + }, this); + }, + categories: function (outPieceList) { + var thisOption = this.option; + each(thisOption.categories, function (cate) { + // FIXME category模式也使用pieceList,但在visualMapping中不是使用pieceList。 + // 是否改一致。 + outPieceList.push({ + text: this.formatValueText(cate, true), + value: cate + }); + }, this); + // See "Order Rule". + normalizeReverse(thisOption, outPieceList); + }, + pieces: function (outPieceList) { + var thisOption = this.option; + each(thisOption.pieces, function (pieceListItem, index) { + if (!isObject(pieceListItem)) { + pieceListItem = { + value: pieceListItem + }; + } + var item = { + text: '', + index: index + }; + if (pieceListItem.label != null) { + item.text = pieceListItem.label; + } + if (pieceListItem.hasOwnProperty('value')) { + var value = item.value = pieceListItem.value; + item.interval = [value, value]; + item.close = [1, 1]; + } else { + // `min` `max` is legacy option. + // `lt` `gt` `lte` `gte` is recommended. + var interval = item.interval = []; + var close_1 = item.close = [0, 0]; + var closeList = [1, 0, 1]; + var infinityList = [-Infinity, Infinity]; + var useMinMax = []; + for (var lg = 0; lg < 2; lg++) { + var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg]; + for (var i = 0; i < 3 && interval[lg] == null; i++) { + interval[lg] = pieceListItem[names[i]]; + close_1[lg] = closeList[i]; + useMinMax[lg] = i === 2; + } + interval[lg] == null && (interval[lg] = infinityList[lg]); + } + useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0); + useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0); + if ("development" !== 'production') { + if (interval[0] > interval[1]) { + console.warn('Piece ' + index + 'is illegal: ' + interval + ' lower bound should not greater then uppper bound.'); + } + } + if (interval[0] === interval[1] && close_1[0] && close_1[1]) { + // Consider: [{min: 5, max: 5, visual: {...}}, {min: 0, max: 5}], + // we use value to lift the priority when min === max + item.value = interval[0]; + } + } + item.visual = VisualMapping.retrieveVisuals(pieceListItem); + outPieceList.push(item); + }, this); + // See "Order Rule". + normalizeReverse(thisOption, outPieceList); + // Only pieces + reformIntervals(outPieceList); + each(outPieceList, function (piece) { + var close = piece.close; + var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]]; + piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols); + }, this); + } + }; + function normalizeReverse(thisOption, pieceList) { + var inverse = thisOption.inverse; + if (thisOption.orient === 'vertical' ? !inverse : inverse) { + pieceList.reverse(); + } + } + + var PiecewiseVisualMapView = /** @class */function (_super) { + __extends(PiecewiseVisualMapView, _super); + function PiecewiseVisualMapView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = PiecewiseVisualMapView.type; + return _this; + } + PiecewiseVisualMapView.prototype.doRender = function () { + var thisGroup = this.group; + thisGroup.removeAll(); + var visualMapModel = this.visualMapModel; + var textGap = visualMapModel.get('textGap'); + var textStyleModel = visualMapModel.textStyleModel; + var textFont = textStyleModel.getFont(); + var textFill = textStyleModel.getTextColor(); + var itemAlign = this._getItemAlign(); + var itemSize = visualMapModel.itemSize; + var viewData = this._getViewData(); + var endsText = viewData.endsText; + var showLabel = retrieve(visualMapModel.get('showLabel', true), !endsText); + endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign); + each(viewData.viewPieceList, function (item) { + var piece = item.piece; + var itemGroup = new Group(); + itemGroup.onclick = bind(this._onItemClick, this, piece); + this._enableHoverLink(itemGroup, item.indexInModelPieceList); + // TODO Category + var representValue = visualMapModel.getRepresentValue(piece); + this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]); + if (showLabel) { + var visualState = this.visualMapModel.getValueState(representValue); + itemGroup.add(new ZRText({ + style: { + x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap, + y: itemSize[1] / 2, + text: piece.text, + verticalAlign: 'middle', + align: itemAlign, + font: textFont, + fill: textFill, + opacity: visualState === 'outOfRange' ? 0.5 : 1 + } + })); + } + thisGroup.add(itemGroup); + }, this); + endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign); + box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap')); + this.renderBackground(thisGroup); + this.positionGroup(thisGroup); + }; + PiecewiseVisualMapView.prototype._enableHoverLink = function (itemGroup, pieceIndex) { + var _this = this; + itemGroup.on('mouseover', function () { + return onHoverLink('highlight'); + }).on('mouseout', function () { + return onHoverLink('downplay'); + }); + var onHoverLink = function (method) { + var visualMapModel = _this.visualMapModel; + // TODO: TYPE More detailed action types + visualMapModel.option.hoverLink && _this.api.dispatchAction({ + type: method, + batch: makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel) + }); + }; + }; + PiecewiseVisualMapView.prototype._getItemAlign = function () { + var visualMapModel = this.visualMapModel; + var modelOption = visualMapModel.option; + if (modelOption.orient === 'vertical') { + return getItemAlign(visualMapModel, this.api, visualMapModel.itemSize); + } else { + // horizontal, most case left unless specifying right. + var align = modelOption.align; + if (!align || align === 'auto') { + align = 'left'; + } + return align; + } + }; + PiecewiseVisualMapView.prototype._renderEndsText = function (group, text, itemSize, showLabel, itemAlign) { + if (!text) { + return; + } + var itemGroup = new Group(); + var textStyleModel = this.visualMapModel.textStyleModel; + itemGroup.add(new ZRText({ + style: createTextStyle(textStyleModel, { + x: showLabel ? itemAlign === 'right' ? itemSize[0] : 0 : itemSize[0] / 2, + y: itemSize[1] / 2, + verticalAlign: 'middle', + align: showLabel ? itemAlign : 'center', + text: text + }) + })); + group.add(itemGroup); + }; + /** + * @private + * @return {Object} {peiceList, endsText} The order is the same as screen pixel order. + */ + PiecewiseVisualMapView.prototype._getViewData = function () { + var visualMapModel = this.visualMapModel; + var viewPieceList = map(visualMapModel.getPieceList(), function (piece, index) { + return { + piece: piece, + indexInModelPieceList: index + }; + }); + var endsText = visualMapModel.get('text'); + // Consider orient and inverse. + var orient = visualMapModel.get('orient'); + var inverse = visualMapModel.get('inverse'); + // Order of model pieceList is always [low, ..., high] + if (orient === 'horizontal' ? inverse : !inverse) { + viewPieceList.reverse(); + } + // Origin order of endsText is [high, low] + else if (endsText) { + endsText = endsText.slice().reverse(); + } + return { + viewPieceList: viewPieceList, + endsText: endsText + }; + }; + PiecewiseVisualMapView.prototype._createItemSymbol = function (group, representValue, shapeParam) { + group.add(createSymbol( + // symbol will be string + this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], + // color will be string + this.getControllerVisual(representValue, 'color'))); + }; + PiecewiseVisualMapView.prototype._onItemClick = function (piece) { + var visualMapModel = this.visualMapModel; + var option = visualMapModel.option; + var selectedMode = option.selectedMode; + if (!selectedMode) { + return; + } + var selected = clone(option.selected); + var newKey = visualMapModel.getSelectedMapKey(piece); + if (selectedMode === 'single' || selectedMode === true) { + selected[newKey] = true; + each(selected, function (o, key) { + selected[key] = key === newKey; + }); + } else { + selected[newKey] = !selected[newKey]; + } + this.api.dispatchAction({ + type: 'selectDataRange', + from: this.uid, + visualMapId: this.visualMapModel.id, + selected: selected + }); + }; + PiecewiseVisualMapView.type = 'visualMap.piecewise'; + return PiecewiseVisualMapView; + }(VisualMapView); + + function install$O(registers) { + registers.registerComponentModel(PiecewiseModel); + registers.registerComponentView(PiecewiseVisualMapView); + installCommon$1(registers); + } + + function install$P(registers) { + use(install$N); + use(install$O); + // Do not install './dataZoomSelect', + // since it only work for toolbox dataZoom. + } + + var DEFAULT_OPTION = { + label: { + enabled: true + }, + decal: { + show: false + } + }; + var inner$l = makeInner(); + var decalPaletteScope = {}; + function ariaVisual(ecModel, api) { + var ariaModel = ecModel.getModel('aria'); + // See "area enabled" detection code in `GlobalModel.ts`. + if (!ariaModel.get('enabled')) { + return; + } + var defaultOption = clone(DEFAULT_OPTION); + merge(defaultOption.label, ecModel.getLocaleModel().get('aria'), false); + merge(ariaModel.option, defaultOption, false); + setDecal(); + setLabel(); + function setDecal() { + var decalModel = ariaModel.getModel('decal'); + var useDecal = decalModel.get('show'); + if (useDecal) { + // Each type of series use one scope. + // Pie and funnel are using different scopes. + var paletteScopeGroupByType_1 = createHashMap(); + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.isColorBySeries()) { + return; + } + var decalScope = paletteScopeGroupByType_1.get(seriesModel.type); + if (!decalScope) { + decalScope = {}; + paletteScopeGroupByType_1.set(seriesModel.type, decalScope); + } + inner$l(seriesModel).scope = decalScope; + }); + ecModel.eachRawSeries(function (seriesModel) { + if (ecModel.isSeriesFiltered(seriesModel)) { + return; + } + if (isFunction(seriesModel.enableAriaDecal)) { + // Let series define how to use decal palette on data + seriesModel.enableAriaDecal(); + return; + } + var data = seriesModel.getData(); + if (!seriesModel.isColorBySeries()) { + var dataAll_1 = seriesModel.getRawData(); + var idxMap_1 = {}; + var decalScope_1 = inner$l(seriesModel).scope; + data.each(function (idx) { + var rawIdx = data.getRawIndex(idx); + idxMap_1[rawIdx] = idx; + }); + var dataCount_1 = dataAll_1.count(); + dataAll_1.each(function (rawIdx) { + var idx = idxMap_1[rawIdx]; + var name = dataAll_1.getName(rawIdx) || rawIdx + ''; + var paletteDecal = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1); + var specifiedDecal = data.getItemVisual(idx, 'decal'); + data.setItemVisual(idx, 'decal', mergeDecal(specifiedDecal, paletteDecal)); + }); + } else { + var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount()); + var specifiedDecal = data.getVisual('decal'); + data.setVisual('decal', mergeDecal(specifiedDecal, paletteDecal)); + } + function mergeDecal(specifiedDecal, paletteDecal) { + // Merge decal from palette to decal from itemStyle. + // User do not need to specify all of the decal props. + var resultDecal = specifiedDecal ? extend(extend({}, paletteDecal), specifiedDecal) : paletteDecal; + resultDecal.dirty = true; + return resultDecal; + } + }); + } + } + function setLabel() { + var labelLocale = ecModel.getLocaleModel().get('aria'); + var labelModel = ariaModel.getModel('label'); + labelModel.option = defaults(labelModel.option, labelLocale); + if (!labelModel.get('enabled')) { + return; + } + var dom = api.getZr().dom; + if (labelModel.get('description')) { + dom.setAttribute('aria-label', labelModel.get('description')); + return; + } + var seriesCnt = ecModel.getSeriesCount(); + var maxDataCnt = labelModel.get(['data', 'maxCount']) || 10; + var maxSeriesCnt = labelModel.get(['series', 'maxCount']) || 10; + var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt); + var ariaLabel; + if (seriesCnt < 1) { + // No series, no aria label + return; + } else { + var title = getTitle(); + if (title) { + var withTitle = labelModel.get(['general', 'withTitle']); + ariaLabel = replace(withTitle, { + title: title + }); + } else { + ariaLabel = labelModel.get(['general', 'withoutTitle']); + } + var seriesLabels_1 = []; + var prefix = seriesCnt > 1 ? labelModel.get(['series', 'multiple', 'prefix']) : labelModel.get(['series', 'single', 'prefix']); + ariaLabel += replace(prefix, { + seriesCount: seriesCnt + }); + ecModel.eachSeries(function (seriesModel, idx) { + if (idx < displaySeriesCnt) { + var seriesLabel = void 0; + var seriesName = seriesModel.get('name'); + var withName = seriesName ? 'withName' : 'withoutName'; + seriesLabel = seriesCnt > 1 ? labelModel.get(['series', 'multiple', withName]) : labelModel.get(['series', 'single', withName]); + seriesLabel = replace(seriesLabel, { + seriesId: seriesModel.seriesIndex, + seriesName: seriesModel.get('name'), + seriesType: getSeriesTypeName(seriesModel.subType) + }); + var data = seriesModel.getData(); + if (data.count() > maxDataCnt) { + // Show part of data + var partialLabel = labelModel.get(['data', 'partialData']); + seriesLabel += replace(partialLabel, { + displayCnt: maxDataCnt + }); + } else { + seriesLabel += labelModel.get(['data', 'allData']); + } + var middleSeparator_1 = labelModel.get(['data', 'separator', 'middle']); + var endSeparator_1 = labelModel.get(['data', 'separator', 'end']); + var dataLabels = []; + for (var i = 0; i < data.count(); i++) { + if (i < maxDataCnt) { + var name_1 = data.getName(i); + var value = data.getValues(i); + var dataLabel = labelModel.get(['data', name_1 ? 'withName' : 'withoutName']); + dataLabels.push(replace(dataLabel, { + name: name_1, + value: value.join(middleSeparator_1) + })); + } + } + seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1; + seriesLabels_1.push(seriesLabel); + } + }); + var separatorModel = labelModel.getModel(['series', 'multiple', 'separator']); + var middleSeparator = separatorModel.get('middle'); + var endSeparator = separatorModel.get('end'); + ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator; + dom.setAttribute('aria-label', ariaLabel); + } + } + function replace(str, keyValues) { + if (!isString(str)) { + return str; + } + var result = str; + each(keyValues, function (value, key) { + result = result.replace(new RegExp('\\{\\s*' + key + '\\s*\\}', 'g'), value); + }); + return result; + } + function getTitle() { + var title = ecModel.get('title'); + if (title && title.length) { + title = title[0]; + } + return title && title.text; + } + function getSeriesTypeName(type) { + var typeNames = ecModel.getLocaleModel().get(['series', 'typeNames']); + return typeNames[type] || typeNames.chart; + } + } + + function ariaPreprocessor(option) { + if (!option || !option.aria) { + return; + } + var aria = option.aria; + // aria.show is deprecated and should use aria.enabled instead + if (aria.show != null) { + aria.enabled = aria.show; + } + aria.label = aria.label || {}; + // move description, general, series, data to be under aria.label + each(['description', 'general', 'series', 'data'], function (name) { + if (aria[name] != null) { + aria.label[name] = aria[name]; + } + }); + } + + function install$Q(registers) { + registers.registerPreprocessor(ariaPreprocessor); + registers.registerVisual(registers.PRIORITY.VISUAL.ARIA, ariaVisual); + } + + var RELATIONAL_EXPRESSION_OP_ALIAS_MAP = { + value: 'eq', + // PENDING: not good for literal semantic? + '<': 'lt', + '<=': 'lte', + '>': 'gt', + '>=': 'gte', + '=': 'eq', + '!=': 'ne', + '<>': 'ne' + // Might be misleading for sake of the difference between '==' and '===', + // so don't support them. + // '==': 'eq', + // '===': 'seq', + // '!==': 'sne' + // PENDING: Whether support some common alias "ge", "le", "neq"? + // ge: 'gte', + // le: 'lte', + // neq: 'ne', + }; + // type RelationalExpressionOpEvaluate = (tarVal: unknown, condVal: unknown) => boolean; + var RegExpEvaluator = /** @class */function () { + function RegExpEvaluator(rVal) { + // Support condVal: RegExp | string + var condValue = this._condVal = isString(rVal) ? new RegExp(rVal) : isRegExp(rVal) ? rVal : null; + if (condValue == null) { + var errMsg = ''; + if ("development" !== 'production') { + errMsg = makePrintable('Illegal regexp', rVal, 'in'); + } + throwError(errMsg); + } + } + RegExpEvaluator.prototype.evaluate = function (lVal) { + var type = typeof lVal; + return isString(type) ? this._condVal.test(lVal) : isNumber(type) ? this._condVal.test(lVal + '') : false; + }; + return RegExpEvaluator; + }(); + var ConstConditionInternal = /** @class */function () { + function ConstConditionInternal() {} + ConstConditionInternal.prototype.evaluate = function () { + return this.value; + }; + return ConstConditionInternal; + }(); + var AndConditionInternal = /** @class */function () { + function AndConditionInternal() {} + AndConditionInternal.prototype.evaluate = function () { + var children = this.children; + for (var i = 0; i < children.length; i++) { + if (!children[i].evaluate()) { + return false; + } + } + return true; + }; + return AndConditionInternal; + }(); + var OrConditionInternal = /** @class */function () { + function OrConditionInternal() {} + OrConditionInternal.prototype.evaluate = function () { + var children = this.children; + for (var i = 0; i < children.length; i++) { + if (children[i].evaluate()) { + return true; + } + } + return false; + }; + return OrConditionInternal; + }(); + var NotConditionInternal = /** @class */function () { + function NotConditionInternal() {} + NotConditionInternal.prototype.evaluate = function () { + return !this.child.evaluate(); + }; + return NotConditionInternal; + }(); + var RelationalConditionInternal = /** @class */function () { + function RelationalConditionInternal() {} + RelationalConditionInternal.prototype.evaluate = function () { + var needParse = !!this.valueParser; + // Call getValue with no `this`. + var getValue = this.getValue; + var tarValRaw = getValue(this.valueGetterParam); + var tarValParsed = needParse ? this.valueParser(tarValRaw) : null; + // Relational cond follow "and" logic internally. + for (var i = 0; i < this.subCondList.length; i++) { + if (!this.subCondList[i].evaluate(needParse ? tarValParsed : tarValRaw)) { + return false; + } + } + return true; + }; + return RelationalConditionInternal; + }(); + function parseOption(exprOption, getters) { + if (exprOption === true || exprOption === false) { + var cond = new ConstConditionInternal(); + cond.value = exprOption; + return cond; + } + var errMsg = ''; + if (!isObjectNotArray(exprOption)) { + if ("development" !== 'production') { + errMsg = makePrintable('Illegal config. Expect a plain object but actually', exprOption); + } + throwError(errMsg); + } + if (exprOption.and) { + return parseAndOrOption('and', exprOption, getters); + } else if (exprOption.or) { + return parseAndOrOption('or', exprOption, getters); + } else if (exprOption.not) { + return parseNotOption(exprOption, getters); + } + return parseRelationalOption(exprOption, getters); + } + function parseAndOrOption(op, exprOption, getters) { + var subOptionArr = exprOption[op]; + var errMsg = ''; + if ("development" !== 'production') { + errMsg = makePrintable('"and"/"or" condition should only be `' + op + ': [...]` and must not be empty array.', 'Illegal condition:', exprOption); + } + if (!isArray(subOptionArr)) { + throwError(errMsg); + } + if (!subOptionArr.length) { + throwError(errMsg); + } + var cond = op === 'and' ? new AndConditionInternal() : new OrConditionInternal(); + cond.children = map(subOptionArr, function (subOption) { + return parseOption(subOption, getters); + }); + if (!cond.children.length) { + throwError(errMsg); + } + return cond; + } + function parseNotOption(exprOption, getters) { + var subOption = exprOption.not; + var errMsg = ''; + if ("development" !== 'production') { + errMsg = makePrintable('"not" condition should only be `not: {}`.', 'Illegal condition:', exprOption); + } + if (!isObjectNotArray(subOption)) { + throwError(errMsg); + } + var cond = new NotConditionInternal(); + cond.child = parseOption(subOption, getters); + if (!cond.child) { + throwError(errMsg); + } + return cond; + } + function parseRelationalOption(exprOption, getters) { + var errMsg = ''; + var valueGetterParam = getters.prepareGetValue(exprOption); + var subCondList = []; + var exprKeys = keys(exprOption); + var parserName = exprOption.parser; + var valueParser = parserName ? getRawValueParser(parserName) : null; + for (var i = 0; i < exprKeys.length; i++) { + var keyRaw = exprKeys[i]; + if (keyRaw === 'parser' || getters.valueGetterAttrMap.get(keyRaw)) { + continue; + } + var op = hasOwn(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw) ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw] : keyRaw; + var condValueRaw = exprOption[keyRaw]; + var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw; + var evaluator = createFilterComparator(op, condValueParsed) || op === 'reg' && new RegExpEvaluator(condValueParsed); + if (!evaluator) { + if ("development" !== 'production') { + errMsg = makePrintable('Illegal relational operation: "' + keyRaw + '" in condition:', exprOption); + } + throwError(errMsg); + } + subCondList.push(evaluator); + } + if (!subCondList.length) { + if ("development" !== 'production') { + errMsg = makePrintable('Relational condition must have at least one operator.', 'Illegal condition:', exprOption); + } + // No relational operator always disabled in case of dangers result. + throwError(errMsg); + } + var cond = new RelationalConditionInternal(); + cond.valueGetterParam = valueGetterParam; + cond.valueParser = valueParser; + cond.getValue = getters.getValue; + cond.subCondList = subCondList; + return cond; + } + function isObjectNotArray(val) { + return isObject(val) && !isArrayLike(val); + } + var ConditionalExpressionParsed = /** @class */function () { + function ConditionalExpressionParsed(exprOption, getters) { + this._cond = parseOption(exprOption, getters); + } + ConditionalExpressionParsed.prototype.evaluate = function () { + return this._cond.evaluate(); + }; + return ConditionalExpressionParsed; + }(); + function parseConditionalExpression(exprOption, getters) { + return new ConditionalExpressionParsed(exprOption, getters); + } + + var filterTransform = { + type: 'echarts:filter', + // PENDING: enhance to filter by index rather than create new data + transform: function (params) { + // [Caveat] Fail-Fast: + // Do not return the whole dataset unless user config indicates it explicitly. + // For example, if no condition is specified by mistake, returning an empty result + // is better than returning the entire raw source for the user to find the mistake. + var upstream = params.upstream; + var rawItem; + var condition = parseConditionalExpression(params.config, { + valueGetterAttrMap: createHashMap({ + dimension: true + }), + prepareGetValue: function (exprOption) { + var errMsg = ''; + var dimLoose = exprOption.dimension; + if (!hasOwn(exprOption, 'dimension')) { + if ("development" !== 'production') { + errMsg = makePrintable('Relation condition must has prop "dimension" specified.', 'Illegal condition:', exprOption); + } + throwError(errMsg); + } + var dimInfo = upstream.getDimensionInfo(dimLoose); + if (!dimInfo) { + if ("development" !== 'production') { + errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\n', 'Illegal condition:', exprOption, '.\n'); + } + throwError(errMsg); + } + return { + dimIdx: dimInfo.index + }; + }, + getValue: function (param) { + return upstream.retrieveValueFromItem(rawItem, param.dimIdx); + } + }); + var resultData = []; + for (var i = 0, len = upstream.count(); i < len; i++) { + rawItem = upstream.getRawDataItem(i); + if (condition.evaluate()) { + resultData.push(rawItem); + } + } + return { + data: resultData + }; + } + }; + + var sampleLog = ''; + if ("development" !== 'production') { + sampleLog = ['Valid config is like:', '{ dimension: "age", order: "asc" }', 'or [{ dimension: "age", order: "asc"], { dimension: "date", order: "desc" }]'].join(' '); + } + var sortTransform = { + type: 'echarts:sort', + transform: function (params) { + var upstream = params.upstream; + var config = params.config; + var errMsg = ''; + // Normalize + // const orderExprList: OrderExpression[] = isArray(config[0]) + // ? config as OrderExpression[] + // : [config as OrderExpression]; + var orderExprList = normalizeToArray(config); + if (!orderExprList.length) { + if ("development" !== 'production') { + errMsg = 'Empty `config` in sort transform.'; + } + throwError(errMsg); + } + var orderDefList = []; + each(orderExprList, function (orderExpr) { + var dimLoose = orderExpr.dimension; + var order = orderExpr.order; + var parserName = orderExpr.parser; + var incomparable = orderExpr.incomparable; + if (dimLoose == null) { + if ("development" !== 'production') { + errMsg = 'Sort transform config must has "dimension" specified.' + sampleLog; + } + throwError(errMsg); + } + if (order !== 'asc' && order !== 'desc') { + if ("development" !== 'production') { + errMsg = 'Sort transform config must has "order" specified.' + sampleLog; + } + throwError(errMsg); + } + if (incomparable && incomparable !== 'min' && incomparable !== 'max') { + var errMsg_1 = ''; + if ("development" !== 'production') { + errMsg_1 = 'incomparable must be "min" or "max" rather than "' + incomparable + '".'; + } + throwError(errMsg_1); + } + if (order !== 'asc' && order !== 'desc') { + var errMsg_2 = ''; + if ("development" !== 'production') { + errMsg_2 = 'order must be "asc" or "desc" rather than "' + order + '".'; + } + throwError(errMsg_2); + } + var dimInfo = upstream.getDimensionInfo(dimLoose); + if (!dimInfo) { + if ("development" !== 'production') { + errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\n', 'Illegal config:', orderExpr, '.\n'); + } + throwError(errMsg); + } + var parser = parserName ? getRawValueParser(parserName) : null; + if (parserName && !parser) { + if ("development" !== 'production') { + errMsg = makePrintable('Invalid parser name ' + parserName + '.\n', 'Illegal config:', orderExpr, '.\n'); + } + throwError(errMsg); + } + orderDefList.push({ + dimIdx: dimInfo.index, + parser: parser, + comparator: new SortOrderComparator(order, incomparable) + }); + }); + // TODO: support it? + var sourceFormat = upstream.sourceFormat; + if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) { + if ("development" !== 'production') { + errMsg = 'sourceFormat "' + sourceFormat + '" is not supported yet'; + } + throwError(errMsg); + } + // Other upstream format are all array. + var resultData = []; + for (var i = 0, len = upstream.count(); i < len; i++) { + resultData.push(upstream.getRawDataItem(i)); + } + resultData.sort(function (item0, item1) { + for (var i = 0; i < orderDefList.length; i++) { + var orderDef = orderDefList[i]; + var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx); + var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx); + if (orderDef.parser) { + val0 = orderDef.parser(val0); + val1 = orderDef.parser(val1); + } + var result = orderDef.comparator.evaluate(val0, val1); + if (result !== 0) { + return result; + } + } + return 0; + }); + return { + data: resultData + }; + } + }; + + function install$R(registers) { + registers.registerTransform(filterTransform); + registers.registerTransform(sortTransform); + } + + var DatasetModel = /** @class */function (_super) { + __extends(DatasetModel, _super); + function DatasetModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = 'dataset'; + return _this; + } + DatasetModel.prototype.init = function (option, parentModel, ecModel) { + _super.prototype.init.call(this, option, parentModel, ecModel); + this._sourceManager = new SourceManager(this); + disableTransformOptionMerge(this); + }; + DatasetModel.prototype.mergeOption = function (newOption, ecModel) { + _super.prototype.mergeOption.call(this, newOption, ecModel); + disableTransformOptionMerge(this); + }; + DatasetModel.prototype.optionUpdated = function () { + this._sourceManager.dirty(); + }; + DatasetModel.prototype.getSourceManager = function () { + return this._sourceManager; + }; + DatasetModel.type = 'dataset'; + DatasetModel.defaultOption = { + seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN + }; + return DatasetModel; + }(ComponentModel); + var DatasetView = /** @class */function (_super) { + __extends(DatasetView, _super); + function DatasetView() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = 'dataset'; + return _this; + } + DatasetView.type = 'dataset'; + return DatasetView; + }(ComponentView); + function install$S(registers) { + registers.registerComponentModel(DatasetModel); + registers.registerComponentView(DatasetView); + } + + var CMD$4 = PathProxy.CMD; + function aroundEqual(a, b) { + return Math.abs(a - b) < 1e-5; + } + function pathToBezierCurves(path) { + var data = path.data; + var len = path.len(); + var bezierArrayGroups = []; + var currentSubpath; + var xi = 0; + var yi = 0; + var x0 = 0; + var y0 = 0; + function createNewSubpath(x, y) { + if (currentSubpath && currentSubpath.length > 2) { + bezierArrayGroups.push(currentSubpath); + } + currentSubpath = [x, y]; + } + function addLine(x0, y0, x1, y1) { + if (!(aroundEqual(x0, x1) && aroundEqual(y0, y1))) { + currentSubpath.push(x0, y0, x1, y1, x1, y1); + } + } + function addArc(startAngle, endAngle, cx, cy, rx, ry) { + var delta = Math.abs(endAngle - startAngle); + var len = Math.tan(delta / 4) * 4 / 3; + var dir = endAngle < startAngle ? -1 : 1; + var c1 = Math.cos(startAngle); + var s1 = Math.sin(startAngle); + var c2 = Math.cos(endAngle); + var s2 = Math.sin(endAngle); + var x1 = c1 * rx + cx; + var y1 = s1 * ry + cy; + var x4 = c2 * rx + cx; + var y4 = s2 * ry + cy; + var hx = rx * len * dir; + var hy = ry * len * dir; + currentSubpath.push(x1 - hx * s1, y1 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4); + } + var x1; + var y1; + var x2; + var y2; + for (var i = 0; i < len;) { + var cmd = data[i++]; + var isFirst = i === 1; + if (isFirst) { + xi = data[i]; + yi = data[i + 1]; + x0 = xi; + y0 = yi; + if (cmd === CMD$4.L || cmd === CMD$4.C || cmd === CMD$4.Q) { + currentSubpath = [x0, y0]; + } + } + switch (cmd) { + case CMD$4.M: + xi = x0 = data[i++]; + yi = y0 = data[i++]; + createNewSubpath(x0, y0); + break; + case CMD$4.L: + x1 = data[i++]; + y1 = data[i++]; + addLine(xi, yi, x1, y1); + xi = x1; + yi = y1; + break; + case CMD$4.C: + currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]); + break; + case CMD$4.Q: + x1 = data[i++]; + y1 = data[i++]; + x2 = data[i++]; + y2 = data[i++]; + currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2); + xi = x2; + yi = y2; + break; + case CMD$4.A: + var cx = data[i++]; + var cy = data[i++]; + var rx = data[i++]; + var ry = data[i++]; + var startAngle = data[i++]; + var endAngle = data[i++] + startAngle; + i += 1; + var anticlockwise = !data[i++]; + x1 = Math.cos(startAngle) * rx + cx; + y1 = Math.sin(startAngle) * ry + cy; + if (isFirst) { + x0 = x1; + y0 = y1; + createNewSubpath(x0, y0); + } + else { + addLine(xi, yi, x1, y1); + } + xi = Math.cos(endAngle) * rx + cx; + yi = Math.sin(endAngle) * ry + cy; + var step = (anticlockwise ? -1 : 1) * Math.PI / 2; + for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) { + var nextAngle = anticlockwise ? Math.max(angle + step, endAngle) + : Math.min(angle + step, endAngle); + addArc(angle, nextAngle, cx, cy, rx, ry); + } + break; + case CMD$4.R: + x0 = xi = data[i++]; + y0 = yi = data[i++]; + x1 = x0 + data[i++]; + y1 = y0 + data[i++]; + createNewSubpath(x1, y0); + addLine(x1, y0, x1, y1); + addLine(x1, y1, x0, y1); + addLine(x0, y1, x0, y0); + addLine(x0, y0, x1, y0); + break; + case CMD$4.Z: + currentSubpath && addLine(xi, yi, x0, y0); + xi = x0; + yi = y0; + break; + } + } + if (currentSubpath && currentSubpath.length > 2) { + bezierArrayGroups.push(currentSubpath); + } + return bezierArrayGroups; + } + function adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out, scale) { + if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) { + out.push(x3, y3); + return; + } + var PIXEL_DISTANCE = 2 / scale; + var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE; + var dx = x3 - x0; + var dy = y3 - y0; + var d = Math.sqrt(dx * dx + dy * dy); + dx /= d; + dy /= d; + var dx1 = x1 - x0; + var dy1 = y1 - y0; + var dx2 = x2 - x3; + var dy2 = y2 - y3; + var cp1LenSqr = dx1 * dx1 + dy1 * dy1; + var cp2LenSqr = dx2 * dx2 + dy2 * dy2; + if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) { + out.push(x3, y3); + return; + } + var projLen1 = dx * dx1 + dy * dy1; + var projLen2 = -dx * dx2 - dy * dy2; + var d1Sqr = cp1LenSqr - projLen1 * projLen1; + var d2Sqr = cp2LenSqr - projLen2 * projLen2; + if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0 + && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) { + out.push(x3, y3); + return; + } + var tmpSegX = []; + var tmpSegY = []; + cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX); + cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY); + adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out, scale); + adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out, scale); + } + function pathToPolygons(path, scale) { + var bezierArrayGroups = pathToBezierCurves(path); + var polygons = []; + scale = scale || 1; + for (var i = 0; i < bezierArrayGroups.length; i++) { + var beziers = bezierArrayGroups[i]; + var polygon = []; + var x0 = beziers[0]; + var y0 = beziers[1]; + polygon.push(x0, y0); + for (var k = 2; k < beziers.length;) { + var x1 = beziers[k++]; + var y1 = beziers[k++]; + var x2 = beziers[k++]; + var y2 = beziers[k++]; + var x3 = beziers[k++]; + var y3 = beziers[k++]; + adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale); + x0 = x3; + y0 = y3; + } + polygons.push(polygon); + } + return polygons; + } + + function getDividingGrids(dimSize, rowDim, count) { + var rowSize = dimSize[rowDim]; + var columnSize = dimSize[1 - rowDim]; + var ratio = Math.abs(rowSize / columnSize); + var rowCount = Math.ceil(Math.sqrt(ratio * count)); + var columnCount = Math.floor(count / rowCount); + if (columnCount === 0) { + columnCount = 1; + rowCount = count; + } + var grids = []; + for (var i = 0; i < rowCount; i++) { + grids.push(columnCount); + } + var currentCount = rowCount * columnCount; + var remained = count - currentCount; + if (remained > 0) { + for (var i = 0; i < remained; i++) { + grids[i % rowCount] += 1; + } + } + return grids; + } + function divideSector(sectorShape, count, outShapes) { + var r0 = sectorShape.r0; + var r = sectorShape.r; + var startAngle = sectorShape.startAngle; + var endAngle = sectorShape.endAngle; + var angle = Math.abs(endAngle - startAngle); + var arcLen = angle * r; + var deltaR = r - r0; + var isAngleRow = arcLen > Math.abs(deltaR); + var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count); + var rowSize = (isAngleRow ? angle : deltaR) / grids.length; + for (var row = 0; row < grids.length; row++) { + var columnSize = (isAngleRow ? deltaR : angle) / grids[row]; + for (var column = 0; column < grids[row]; column++) { + var newShape = {}; + if (isAngleRow) { + newShape.startAngle = startAngle + rowSize * row; + newShape.endAngle = startAngle + rowSize * (row + 1); + newShape.r0 = r0 + columnSize * column; + newShape.r = r0 + columnSize * (column + 1); + } + else { + newShape.startAngle = startAngle + columnSize * column; + newShape.endAngle = startAngle + columnSize * (column + 1); + newShape.r0 = r0 + rowSize * row; + newShape.r = r0 + rowSize * (row + 1); + } + newShape.clockwise = sectorShape.clockwise; + newShape.cx = sectorShape.cx; + newShape.cy = sectorShape.cy; + outShapes.push(newShape); + } + } + } + function divideRect(rectShape, count, outShapes) { + var width = rectShape.width; + var height = rectShape.height; + var isHorizontalRow = width > height; + var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count); + var rowSizeDim = isHorizontalRow ? 'width' : 'height'; + var columnSizeDim = isHorizontalRow ? 'height' : 'width'; + var rowDim = isHorizontalRow ? 'x' : 'y'; + var columnDim = isHorizontalRow ? 'y' : 'x'; + var rowSize = rectShape[rowSizeDim] / grids.length; + for (var row = 0; row < grids.length; row++) { + var columnSize = rectShape[columnSizeDim] / grids[row]; + for (var column = 0; column < grids[row]; column++) { + var newShape = {}; + newShape[rowDim] = row * rowSize; + newShape[columnDim] = column * columnSize; + newShape[rowSizeDim] = rowSize; + newShape[columnSizeDim] = columnSize; + newShape.x += rectShape.x; + newShape.y += rectShape.y; + outShapes.push(newShape); + } + } + } + function crossProduct2d$1(x1, y1, x2, y2) { + return x1 * y2 - x2 * y1; + } + function lineLineIntersect$1(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) { + var mx = a2x - a1x; + var my = a2y - a1y; + var nx = b2x - b1x; + var ny = b2y - b1y; + var nmCrossProduct = crossProduct2d$1(nx, ny, mx, my); + if (Math.abs(nmCrossProduct) < 1e-6) { + return null; + } + var b1a1x = a1x - b1x; + var b1a1y = a1y - b1y; + var p = crossProduct2d$1(b1a1x, b1a1y, nx, ny) / nmCrossProduct; + if (p < 0 || p > 1) { + return null; + } + return new Point(p * mx + a1x, p * my + a1y); + } + function projPtOnLine(pt, lineA, lineB) { + var dir = new Point(); + Point.sub(dir, lineB, lineA); + dir.normalize(); + var dir2 = new Point(); + Point.sub(dir2, pt, lineA); + var len = dir2.dot(dir); + return len; + } + function addToPoly(poly, pt) { + var last = poly[poly.length - 1]; + if (last && last[0] === pt[0] && last[1] === pt[1]) { + return; + } + poly.push(pt); + } + function splitPolygonByLine(points, lineA, lineB) { + var len = points.length; + var intersections = []; + for (var i = 0; i < len; i++) { + var p0 = points[i]; + var p1 = points[(i + 1) % len]; + var intersectionPt = lineLineIntersect$1(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y); + if (intersectionPt) { + intersections.push({ + projPt: projPtOnLine(intersectionPt, lineA, lineB), + pt: intersectionPt, + idx: i + }); + } + } + if (intersections.length < 2) { + return [{ points: points }, { points: points }]; + } + intersections.sort(function (a, b) { + return a.projPt - b.projPt; + }); + var splitPt0 = intersections[0]; + var splitPt1 = intersections[intersections.length - 1]; + if (splitPt1.idx < splitPt0.idx) { + var tmp = splitPt0; + splitPt0 = splitPt1; + splitPt1 = tmp; + } + var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y]; + var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y]; + var newPolyA = [splitPt0Arr]; + var newPolyB = [splitPt1Arr]; + for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) { + addToPoly(newPolyA, points[i].slice()); + } + addToPoly(newPolyA, splitPt1Arr); + addToPoly(newPolyA, splitPt0Arr); + for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len; i++) { + addToPoly(newPolyB, points[i % len].slice()); + } + addToPoly(newPolyB, splitPt0Arr); + addToPoly(newPolyB, splitPt1Arr); + return [{ + points: newPolyA + }, { + points: newPolyB + }]; + } + function binaryDividePolygon(polygonShape) { + var points = polygonShape.points; + var min = []; + var max = []; + fromPoints(points, min, max); + var boundingRect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]); + var width = boundingRect.width; + var height = boundingRect.height; + var x = boundingRect.x; + var y = boundingRect.y; + var pt0 = new Point(); + var pt1 = new Point(); + if (width > height) { + pt0.x = pt1.x = x + width / 2; + pt0.y = y; + pt1.y = y + height; + } + else { + pt0.y = pt1.y = y + height / 2; + pt0.x = x; + pt1.x = x + width; + } + return splitPolygonByLine(points, pt0, pt1); + } + function binaryDivideRecursive(divider, shape, count, out) { + if (count === 1) { + out.push(shape); + } + else { + var mid = Math.floor(count / 2); + var sub = divider(shape); + binaryDivideRecursive(divider, sub[0], mid, out); + binaryDivideRecursive(divider, sub[1], count - mid, out); + } + return out; + } + function clone$4(path, count) { + var paths = []; + for (var i = 0; i < count; i++) { + paths.push(clonePath(path)); + } + return paths; + } + function copyPathProps(source, target) { + target.setStyle(source.style); + target.z = source.z; + target.z2 = source.z2; + target.zlevel = source.zlevel; + } + function polygonConvert(points) { + var out = []; + for (var i = 0; i < points.length;) { + out.push([points[i++], points[i++]]); + } + return out; + } + function split(path, count) { + var outShapes = []; + var shape = path.shape; + var OutShapeCtor; + switch (path.type) { + case 'rect': + divideRect(shape, count, outShapes); + OutShapeCtor = Rect; + break; + case 'sector': + divideSector(shape, count, outShapes); + OutShapeCtor = Sector; + break; + case 'circle': + divideSector({ + r0: 0, r: shape.r, startAngle: 0, endAngle: Math.PI * 2, + cx: shape.cx, cy: shape.cy + }, count, outShapes); + OutShapeCtor = Sector; + break; + default: + var m = path.getComputedTransform(); + var scale = m ? Math.sqrt(Math.max(m[0] * m[0] + m[1] * m[1], m[2] * m[2] + m[3] * m[3])) : 1; + var polygons = map(pathToPolygons(path.getUpdatedPathProxy(), scale), function (poly) { return polygonConvert(poly); }); + var polygonCount = polygons.length; + if (polygonCount === 0) { + binaryDivideRecursive(binaryDividePolygon, { + points: polygons[0] + }, count, outShapes); + } + else if (polygonCount === count) { + for (var i = 0; i < polygonCount; i++) { + outShapes.push({ + points: polygons[i] + }); + } + } + else { + var totalArea_1 = 0; + var items = map(polygons, function (poly) { + var min = []; + var max = []; + fromPoints(poly, min, max); + var area = (max[1] - min[1]) * (max[0] - min[0]); + totalArea_1 += area; + return { poly: poly, area: area }; + }); + items.sort(function (a, b) { return b.area - a.area; }); + var left = count; + for (var i = 0; i < polygonCount; i++) { + var item = items[i]; + if (left <= 0) { + break; + } + var selfCount = i === polygonCount - 1 + ? left + : Math.ceil(item.area / totalArea_1 * count); + if (selfCount < 0) { + continue; + } + binaryDivideRecursive(binaryDividePolygon, { + points: item.poly + }, selfCount, outShapes); + left -= selfCount; + } + } + OutShapeCtor = Polygon; + break; + } + if (!OutShapeCtor) { + return clone$4(path, count); + } + var out = []; + for (var i = 0; i < outShapes.length; i++) { + var subPath = new OutShapeCtor(); + subPath.setShape(outShapes[i]); + copyPathProps(path, subPath); + out.push(subPath); + } + return out; + } + + function alignSubpath(subpath1, subpath2) { + var len1 = subpath1.length; + var len2 = subpath2.length; + if (len1 === len2) { + return [subpath1, subpath2]; + } + var tmpSegX = []; + var tmpSegY = []; + var shorterPath = len1 < len2 ? subpath1 : subpath2; + var shorterLen = Math.min(len1, len2); + var diff = Math.abs(len2 - len1) / 6; + var shorterBezierCount = (shorterLen - 2) / 6; + var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1; + var newSubpath = [shorterPath[0], shorterPath[1]]; + var remained = diff; + for (var i = 2; i < shorterLen;) { + var x0 = shorterPath[i - 2]; + var y0 = shorterPath[i - 1]; + var x1 = shorterPath[i++]; + var y1 = shorterPath[i++]; + var x2 = shorterPath[i++]; + var y2 = shorterPath[i++]; + var x3 = shorterPath[i++]; + var y3 = shorterPath[i++]; + if (remained <= 0) { + newSubpath.push(x1, y1, x2, y2, x3, y3); + continue; + } + var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1; + for (var k = 1; k <= actualSubDivCount; k++) { + var p = k / actualSubDivCount; + cubicSubdivide(x0, x1, x2, x3, p, tmpSegX); + cubicSubdivide(y0, y1, y2, y3, p, tmpSegY); + x0 = tmpSegX[3]; + y0 = tmpSegY[3]; + newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0); + x1 = tmpSegX[5]; + y1 = tmpSegY[5]; + x2 = tmpSegX[6]; + y2 = tmpSegY[6]; + } + remained -= actualSubDivCount - 1; + } + return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath]; + } + function createSubpath(lastSubpathSubpath, otherSubpath) { + var len = lastSubpathSubpath.length; + var lastX = lastSubpathSubpath[len - 2]; + var lastY = lastSubpathSubpath[len - 1]; + var newSubpath = []; + for (var i = 0; i < otherSubpath.length;) { + newSubpath[i++] = lastX; + newSubpath[i++] = lastY; + } + return newSubpath; + } + function alignBezierCurves(array1, array2) { + var _a; + var lastSubpath1; + var lastSubpath2; + var newArray1 = []; + var newArray2 = []; + for (var i = 0; i < Math.max(array1.length, array2.length); i++) { + var subpath1 = array1[i]; + var subpath2 = array2[i]; + var newSubpath1 = void 0; + var newSubpath2 = void 0; + if (!subpath1) { + newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2); + newSubpath2 = subpath2; + } + else if (!subpath2) { + newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1); + newSubpath1 = subpath1; + } + else { + _a = alignSubpath(subpath1, subpath2), newSubpath1 = _a[0], newSubpath2 = _a[1]; + lastSubpath1 = newSubpath1; + lastSubpath2 = newSubpath2; + } + newArray1.push(newSubpath1); + newArray2.push(newSubpath2); + } + return [newArray1, newArray2]; + } + function centroid$1(array) { + var signedArea = 0; + var cx = 0; + var cy = 0; + var len = array.length; + for (var i = 0, j = len - 2; i < len; j = i, i += 2) { + var x0 = array[j]; + var y0 = array[j + 1]; + var x1 = array[i]; + var y1 = array[i + 1]; + var a = x0 * y1 - x1 * y0; + signedArea += a; + cx += (x0 + x1) * a; + cy += (y0 + y1) * a; + } + if (signedArea === 0) { + return [array[0] || 0, array[1] || 0]; + } + return [cx / signedArea / 3, cy / signedArea / 3, signedArea]; + } + function findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) { + var bezierCount = (fromSubBeziers.length - 2) / 6; + var bestScore = Infinity; + var bestOffset = 0; + var len = fromSubBeziers.length; + var len2 = len - 2; + for (var offset = 0; offset < bezierCount; offset++) { + var cursorOffset = offset * 6; + var score = 0; + for (var k = 0; k < len; k += 2) { + var idx = k === 0 ? cursorOffset : ((cursorOffset + k - 2) % len2 + 2); + var x0 = fromSubBeziers[idx] - fromCp[0]; + var y0 = fromSubBeziers[idx + 1] - fromCp[1]; + var x1 = toSubBeziers[k] - toCp[0]; + var y1 = toSubBeziers[k + 1] - toCp[1]; + var dx = x1 - x0; + var dy = y1 - y0; + score += dx * dx + dy * dy; + } + if (score < bestScore) { + bestScore = score; + bestOffset = offset; + } + } + return bestOffset; + } + function reverse(array) { + var newArr = []; + var len = array.length; + for (var i = 0; i < len; i += 2) { + newArr[i] = array[len - i - 2]; + newArr[i + 1] = array[len - i - 1]; + } + return newArr; + } + function findBestMorphingRotation(fromArr, toArr, searchAngleIteration, searchAngleRange) { + var result = []; + var fromNeedsReverse; + for (var i = 0; i < fromArr.length; i++) { + var fromSubpathBezier = fromArr[i]; + var toSubpathBezier = toArr[i]; + var fromCp = centroid$1(fromSubpathBezier); + var toCp = centroid$1(toSubpathBezier); + if (fromNeedsReverse == null) { + fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0; + } + var newFromSubpathBezier = []; + var newToSubpathBezier = []; + var bestAngle = 0; + var bestScore = Infinity; + var tmpArr = []; + var len = fromSubpathBezier.length; + if (fromNeedsReverse) { + fromSubpathBezier = reverse(fromSubpathBezier); + } + var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6; + var len2 = len - 2; + for (var k = 0; k < len2; k += 2) { + var idx = (offset + k) % len2 + 2; + newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0]; + newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1]; + } + newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0]; + newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1]; + if (searchAngleIteration > 0) { + var step = searchAngleRange / searchAngleIteration; + for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) { + var sa = Math.sin(angle); + var ca = Math.cos(angle); + var score = 0; + for (var k = 0; k < fromSubpathBezier.length; k += 2) { + var x0 = newFromSubpathBezier[k]; + var y0 = newFromSubpathBezier[k + 1]; + var x1 = toSubpathBezier[k] - toCp[0]; + var y1 = toSubpathBezier[k + 1] - toCp[1]; + var newX1 = x1 * ca - y1 * sa; + var newY1 = x1 * sa + y1 * ca; + tmpArr[k] = newX1; + tmpArr[k + 1] = newY1; + var dx = newX1 - x0; + var dy = newY1 - y0; + score += dx * dx + dy * dy; + } + if (score < bestScore) { + bestScore = score; + bestAngle = angle; + for (var m = 0; m < tmpArr.length; m++) { + newToSubpathBezier[m] = tmpArr[m]; + } + } + } + } + else { + for (var i_1 = 0; i_1 < len; i_1 += 2) { + newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0]; + newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1]; + } + } + result.push({ + from: newFromSubpathBezier, + to: newToSubpathBezier, + fromCp: fromCp, + toCp: toCp, + rotation: -bestAngle + }); + } + return result; + } + function isCombineMorphing(path) { + return path.__isCombineMorphing; + } + var SAVED_METHOD_PREFIX = '__mOriginal_'; + function saveAndModifyMethod(obj, methodName, modifiers) { + var savedMethodName = SAVED_METHOD_PREFIX + methodName; + var originalMethod = obj[savedMethodName] || obj[methodName]; + if (!obj[savedMethodName]) { + obj[savedMethodName] = obj[methodName]; + } + var replace = modifiers.replace; + var after = modifiers.after; + var before = modifiers.before; + obj[methodName] = function () { + var args = arguments; + var res; + before && before.apply(this, args); + if (replace) { + res = replace.apply(this, args); + } + else { + res = originalMethod.apply(this, args); + } + after && after.apply(this, args); + return res; + }; + } + function restoreMethod(obj, methodName) { + var savedMethodName = SAVED_METHOD_PREFIX + methodName; + if (obj[savedMethodName]) { + obj[methodName] = obj[savedMethodName]; + obj[savedMethodName] = null; + } + } + function applyTransformOnBeziers(bezierCurves, mm) { + for (var i = 0; i < bezierCurves.length; i++) { + var subBeziers = bezierCurves[i]; + for (var k = 0; k < subBeziers.length;) { + var x = subBeziers[k]; + var y = subBeziers[k + 1]; + subBeziers[k++] = mm[0] * x + mm[2] * y + mm[4]; + subBeziers[k++] = mm[1] * x + mm[3] * y + mm[5]; + } + } + } + function prepareMorphPath(fromPath, toPath) { + var fromPathProxy = fromPath.getUpdatedPathProxy(); + var toPathProxy = toPath.getUpdatedPathProxy(); + var _a = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a[0], toBezierCurves = _a[1]; + var fromPathTransform = fromPath.getComputedTransform(); + var toPathTransform = toPath.getComputedTransform(); + function updateIdentityTransform() { + this.transform = null; + } + fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform); + toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform); + saveAndModifyMethod(toPath, 'updateTransform', { replace: updateIdentityTransform }); + toPath.transform = null; + var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI); + var tmpArr = []; + saveAndModifyMethod(toPath, 'buildPath', { replace: function (path) { + var t = toPath.__morphT; + var onet = 1 - t; + var newCp = []; + for (var i = 0; i < morphingData.length; i++) { + var item = morphingData[i]; + var from = item.from; + var to = item.to; + var angle = item.rotation * t; + var fromCp = item.fromCp; + var toCp = item.toCp; + var sa = Math.sin(angle); + var ca = Math.cos(angle); + lerp(newCp, fromCp, toCp, t); + for (var m = 0; m < from.length; m += 2) { + var x0_1 = from[m]; + var y0_1 = from[m + 1]; + var x1 = to[m]; + var y1 = to[m + 1]; + var x = x0_1 * onet + x1 * t; + var y = y0_1 * onet + y1 * t; + tmpArr[m] = (x * ca - y * sa) + newCp[0]; + tmpArr[m + 1] = (x * sa + y * ca) + newCp[1]; + } + var x0 = tmpArr[0]; + var y0 = tmpArr[1]; + path.moveTo(x0, y0); + for (var m = 2; m < from.length;) { + var x1 = tmpArr[m++]; + var y1 = tmpArr[m++]; + var x2 = tmpArr[m++]; + var y2 = tmpArr[m++]; + var x3 = tmpArr[m++]; + var y3 = tmpArr[m++]; + if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) { + path.lineTo(x3, y3); + } + else { + path.bezierCurveTo(x1, y1, x2, y2, x3, y3); + } + x0 = x3; + y0 = y3; + } + } + } }); + } + function morphPath(fromPath, toPath, animationOpts) { + if (!fromPath || !toPath) { + return toPath; + } + var oldDone = animationOpts.done; + var oldDuring = animationOpts.during; + prepareMorphPath(fromPath, toPath); + toPath.__morphT = 0; + function restoreToPath() { + restoreMethod(toPath, 'buildPath'); + restoreMethod(toPath, 'updateTransform'); + toPath.__morphT = -1; + toPath.createPathProxy(); + toPath.dirtyShape(); + } + toPath.animateTo({ + __morphT: 1 + }, defaults({ + during: function (p) { + toPath.dirtyShape(); + oldDuring && oldDuring(p); + }, + done: function () { + restoreToPath(); + oldDone && oldDone(); + } + }, animationOpts)); + return toPath; + } + function hilbert(x, y, minX, minY, maxX, maxY) { + var bits = 16; + x = (maxX === minX) ? 0 : Math.round(32767 * (x - minX) / (maxX - minX)); + y = (maxY === minY) ? 0 : Math.round(32767 * (y - minY) / (maxY - minY)); + var d = 0; + var tmp; + for (var s = (1 << bits) / 2; s > 0; s /= 2) { + var rx = 0; + var ry = 0; + if ((x & s) > 0) { + rx = 1; + } + if ((y & s) > 0) { + ry = 1; + } + d += s * s * ((3 * rx) ^ ry); + if (ry === 0) { + if (rx === 1) { + x = s - 1 - x; + y = s - 1 - y; + } + tmp = x; + x = y; + y = tmp; + } + } + return d; + } + function sortPaths(pathList) { + var xMin = Infinity; + var yMin = Infinity; + var xMax = -Infinity; + var yMax = -Infinity; + var cps = map(pathList, function (path) { + var rect = path.getBoundingRect(); + var m = path.getComputedTransform(); + var x = rect.x + rect.width / 2 + (m ? m[4] : 0); + var y = rect.y + rect.height / 2 + (m ? m[5] : 0); + xMin = Math.min(x, xMin); + yMin = Math.min(y, yMin); + xMax = Math.max(x, xMax); + yMax = Math.max(y, yMax); + return [x, y]; + }); + var items = map(cps, function (cp, idx) { + return { + cp: cp, + z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax), + path: pathList[idx] + }; + }); + return items.sort(function (a, b) { return a.z - b.z; }).map(function (item) { return item.path; }); + } + function defaultDividePath(param) { + return split(param.path, param.count); + } + function createEmptyReturn() { + return { + fromIndividuals: [], + toIndividuals: [], + count: 0 + }; + } + function combineMorph(fromList, toPath, animationOpts) { + var fromPathList = []; + function addFromPath(fromList) { + for (var i = 0; i < fromList.length; i++) { + var from = fromList[i]; + if (isCombineMorphing(from)) { + addFromPath(from.childrenRef()); + } + else if (from instanceof Path) { + fromPathList.push(from); + } + } + } + addFromPath(fromList); + var separateCount = fromPathList.length; + if (!separateCount) { + return createEmptyReturn(); + } + var dividePath = animationOpts.dividePath || defaultDividePath; + var toSubPathList = dividePath({ + path: toPath, count: separateCount + }); + if (toSubPathList.length !== separateCount) { + console.error('Invalid morphing: unmatched splitted path'); + return createEmptyReturn(); + } + fromPathList = sortPaths(fromPathList); + toSubPathList = sortPaths(toSubPathList); + var oldDone = animationOpts.done; + var oldDuring = animationOpts.during; + var individualDelay = animationOpts.individualDelay; + var identityTransform = new Transformable(); + for (var i = 0; i < separateCount; i++) { + var from = fromPathList[i]; + var to = toSubPathList[i]; + to.parent = toPath; + to.copyTransform(identityTransform); + if (!individualDelay) { + prepareMorphPath(from, to); + } + } + toPath.__isCombineMorphing = true; + toPath.childrenRef = function () { + return toSubPathList; + }; + function addToSubPathListToZr(zr) { + for (var i = 0; i < toSubPathList.length; i++) { + toSubPathList[i].addSelfToZr(zr); + } + } + saveAndModifyMethod(toPath, 'addSelfToZr', { + after: function (zr) { + addToSubPathListToZr(zr); + } + }); + saveAndModifyMethod(toPath, 'removeSelfFromZr', { + after: function (zr) { + for (var i = 0; i < toSubPathList.length; i++) { + toSubPathList[i].removeSelfFromZr(zr); + } + } + }); + function restoreToPath() { + toPath.__isCombineMorphing = false; + toPath.__morphT = -1; + toPath.childrenRef = null; + restoreMethod(toPath, 'addSelfToZr'); + restoreMethod(toPath, 'removeSelfFromZr'); + } + var toLen = toSubPathList.length; + if (individualDelay) { + var animating_1 = toLen; + var eachDone = function () { + animating_1--; + if (animating_1 === 0) { + restoreToPath(); + oldDone && oldDone(); + } + }; + for (var i = 0; i < toLen; i++) { + var indivdualAnimationOpts = individualDelay ? defaults({ + delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]), + done: eachDone + }, animationOpts) : animationOpts; + morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts); + } + } + else { + toPath.__morphT = 0; + toPath.animateTo({ + __morphT: 1 + }, defaults({ + during: function (p) { + for (var i = 0; i < toLen; i++) { + var child = toSubPathList[i]; + child.__morphT = toPath.__morphT; + child.dirtyShape(); + } + oldDuring && oldDuring(p); + }, + done: function () { + restoreToPath(); + for (var i = 0; i < fromList.length; i++) { + restoreMethod(fromList[i], 'updateTransform'); + } + oldDone && oldDone(); + } + }, animationOpts)); + } + if (toPath.__zr) { + addToSubPathListToZr(toPath.__zr); + } + return { + fromIndividuals: fromPathList, + toIndividuals: toSubPathList, + count: toLen + }; + } + function separateMorph(fromPath, toPathList, animationOpts) { + var toLen = toPathList.length; + var fromPathList = []; + var dividePath = animationOpts.dividePath || defaultDividePath; + function addFromPath(fromList) { + for (var i = 0; i < fromList.length; i++) { + var from = fromList[i]; + if (isCombineMorphing(from)) { + addFromPath(from.childrenRef()); + } + else if (from instanceof Path) { + fromPathList.push(from); + } + } + } + if (isCombineMorphing(fromPath)) { + addFromPath(fromPath.childrenRef()); + var fromLen = fromPathList.length; + if (fromLen < toLen) { + var k = 0; + for (var i = fromLen; i < toLen; i++) { + fromPathList.push(clonePath(fromPathList[k++ % fromLen])); + } + } + fromPathList.length = toLen; + } + else { + fromPathList = dividePath({ path: fromPath, count: toLen }); + var fromPathTransform = fromPath.getComputedTransform(); + for (var i = 0; i < fromPathList.length; i++) { + fromPathList[i].setLocalTransform(fromPathTransform); + } + if (fromPathList.length !== toLen) { + console.error('Invalid morphing: unmatched splitted path'); + return createEmptyReturn(); + } + } + fromPathList = sortPaths(fromPathList); + toPathList = sortPaths(toPathList); + var individualDelay = animationOpts.individualDelay; + for (var i = 0; i < toLen; i++) { + var indivdualAnimationOpts = individualDelay ? defaults({ + delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i]) + }, animationOpts) : animationOpts; + morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts); + } + return { + fromIndividuals: fromPathList, + toIndividuals: toPathList, + count: toPathList.length + }; + } + + function isMultiple(elements) { + return isArray(elements[0]); + } + function prepareMorphBatches(one, many) { + var batches = []; + var batchCount = one.length; + for (var i = 0; i < batchCount; i++) { + batches.push({ + one: one[i], + many: [] + }); + } + for (var i = 0; i < many.length; i++) { + var len = many[i].length; + var k = void 0; + for (k = 0; k < len; k++) { + batches[k % batchCount].many.push(many[i][k]); + } + } + var off = 0; + // If one has more paths than each one of many. average them. + for (var i = batchCount - 1; i >= 0; i--) { + if (!batches[i].many.length) { + var moveFrom = batches[off].many; + if (moveFrom.length <= 1) { + // Not enough + // Start from the first one. + if (off) { + off = 0; + } else { + return batches; + } + } + var len = moveFrom.length; + var mid = Math.ceil(len / 2); + batches[i].many = moveFrom.slice(mid, len); + batches[off].many = moveFrom.slice(0, mid); + off++; + } + } + return batches; + } + var pathDividers = { + clone: function (params) { + var ret = []; + // Fitting the alpha + var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count); + for (var i = 0; i < params.count; i++) { + var cloned = clonePath(params.path); + cloned.setStyle('opacity', approxOpacity); + ret.push(cloned); + } + return ret; + }, + // Use the default divider + split: null + }; + function applyMorphAnimation(from, to, divideShape, seriesModel, dataIndex, animateOtherProps) { + if (!from.length || !to.length) { + return; + } + var updateAnimationCfg = getAnimationConfig('update', seriesModel, dataIndex); + if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) { + return; + } + var animationDelay = seriesModel.getModel('universalTransition').get('delay'); + var animationCfg = Object.assign({ + // Need to setToFinal so the further calculation based on the style can be correct. + // Like emphasis color. + setToFinal: true + }, updateAnimationCfg); + var many; + var one; + if (isMultiple(from)) { + // manyToOne + many = from; + one = to; + } + if (isMultiple(to)) { + // oneToMany + many = to; + one = from; + } + function morphOneBatch(batch, fromIsMany, animateIndex, animateCount, forceManyOne) { + var batchMany = batch.many; + var batchOne = batch.one; + if (batchMany.length === 1 && !forceManyOne) { + // Is one to one + var batchFrom = fromIsMany ? batchMany[0] : batchOne; + var batchTo = fromIsMany ? batchOne : batchMany[0]; + if (isCombineMorphing(batchFrom)) { + // Keep doing combine animation. + morphOneBatch({ + many: [batchFrom], + one: batchTo + }, true, animateIndex, animateCount, true); + } else { + var individualAnimationCfg = animationDelay ? defaults({ + delay: animationDelay(animateIndex, animateCount) + }, animationCfg) : animationCfg; + morphPath(batchFrom, batchTo, individualAnimationCfg); + animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg); + } + } else { + var separateAnimationCfg = defaults({ + dividePath: pathDividers[divideShape], + individualDelay: animationDelay && function (idx, count, fromPath, toPath) { + return animationDelay(idx + animateIndex, animateCount); + } + }, animationCfg); + var _a = fromIsMany ? combineMorph(batchMany, batchOne, separateAnimationCfg) : separateMorph(batchOne, batchMany, separateAnimationCfg), + fromIndividuals = _a.fromIndividuals, + toIndividuals = _a.toIndividuals; + var count = fromIndividuals.length; + for (var k = 0; k < count; k++) { + var individualAnimationCfg = animationDelay ? defaults({ + delay: animationDelay(k, count) + }, animationCfg) : animationCfg; + animateOtherProps(fromIndividuals[k], toIndividuals[k], fromIsMany ? batchMany[k] : batch.one, fromIsMany ? batch.one : batchMany[k], individualAnimationCfg); + } + } + } + var fromIsMany = many ? many === from + // Is one to one. If the path number not match. also needs do merge and separate morphing. + : from.length > to.length; + var morphBatches = many ? prepareMorphBatches(one, many) : prepareMorphBatches(fromIsMany ? to : from, [fromIsMany ? from : to]); + var animateCount = 0; + for (var i = 0; i < morphBatches.length; i++) { + animateCount += morphBatches[i].many.length; + } + var animateIndex = 0; + for (var i = 0; i < morphBatches.length; i++) { + morphOneBatch(morphBatches[i], fromIsMany, animateIndex, animateCount); + animateIndex += morphBatches[i].many.length; + } + } + function getPathList(elements) { + if (!elements) { + return []; + } + if (isArray(elements)) { + var pathList_1 = []; + for (var i = 0; i < elements.length; i++) { + pathList_1.push(getPathList(elements[i])); + } + return pathList_1; + } + var pathList = []; + elements.traverse(function (el) { + if (el instanceof Path && !el.disableMorphing && !el.invisible && !el.ignore) { + pathList.push(el); + } + }); + return pathList; + } + + var DATA_COUNT_THRESHOLD = 1e4; + var TRANSITION_NONE = 0; + var TRANSITION_P2C = 1; + var TRANSITION_C2P = 2; + var getUniversalTransitionGlobalStore = makeInner(); + function getDimension(data, visualDimension) { + var dimensions = data.dimensions; + for (var i = 0; i < dimensions.length; i++) { + var dimInfo = data.getDimensionInfo(dimensions[i]); + if (dimInfo && dimInfo.otherDims[visualDimension] === 0) { + return dimensions[i]; + } + } + } + // get value by dimension. (only get value of itemGroupId or childGroupId, so convert it to string) + function getValueByDimension(data, dataIndex, dimension) { + var dimInfo = data.getDimensionInfo(dimension); + var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta; + if (dimInfo) { + var value = data.get(dimInfo.name, dataIndex); + if (dimOrdinalMeta) { + return dimOrdinalMeta.categories[value] || value + ''; + } + return value + ''; + } + } + function getGroupId(data, dataIndex, dataGroupId, isChild) { + // try to get groupId from encode + var visualDimension = isChild ? 'itemChildGroupId' : 'itemGroupId'; + var groupIdDim = getDimension(data, visualDimension); + if (groupIdDim) { + var groupId = getValueByDimension(data, dataIndex, groupIdDim); + return groupId; + } + // try to get groupId from raw data item + var rawDataItem = data.getRawDataItem(dataIndex); + var property = isChild ? 'childGroupId' : 'groupId'; + if (rawDataItem && rawDataItem[property]) { + return rawDataItem[property] + ''; + } + // fallback + if (isChild) { + return; + } + // try to use series.dataGroupId as groupId, otherwise use dataItem's id as groupId + return dataGroupId || data.getId(dataIndex); + } + // flatten all data items from different serieses into one arrary + function flattenDataDiffItems(list) { + var items = []; + each(list, function (seriesInfo) { + var data = seriesInfo.data; + var dataGroupId = seriesInfo.dataGroupId; + if (data.count() > DATA_COUNT_THRESHOLD) { + if ("development" !== 'production') { + warn('Universal transition is disabled on large data > 10k.'); + } + return; + } + var indices = data.getIndices(); + for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) { + items.push({ + data: data, + groupId: getGroupId(data, dataIndex, dataGroupId, false), + childGroupId: getGroupId(data, dataIndex, dataGroupId, true), + divide: seriesInfo.divide, + dataIndex: dataIndex + }); + } + }); + return items; + } + function fadeInElement(newEl, newSeries, newIndex) { + newEl.traverse(function (el) { + if (el instanceof Path) { + // TODO use fade in animation for target element. + initProps(el, { + style: { + opacity: 0 + } + }, newSeries, { + dataIndex: newIndex, + isFrom: true + }); + } + }); + } + function removeEl$1(el) { + if (el.parent) { + // Bake parent transform to element. + // So it can still have proper transform to transition after it's removed. + var computedTransform = el.getComputedTransform(); + el.setLocalTransform(computedTransform); + el.parent.remove(el); + } + } + function stopAnimation(el) { + el.stopAnimation(); + if (el.isGroup) { + el.traverse(function (child) { + child.stopAnimation(); + }); + } + } + function animateElementStyles(el, dataIndex, seriesModel) { + var animationConfig = getAnimationConfig('update', seriesModel, dataIndex); + animationConfig && el.traverse(function (child) { + if (child instanceof Displayable) { + var oldStyle = getOldStyle(child); + if (oldStyle) { + child.animateFrom({ + style: oldStyle + }, animationConfig); + } + } + }); + } + function isAllIdSame(oldDiffItems, newDiffItems) { + var len = oldDiffItems.length; + if (len !== newDiffItems.length) { + return false; + } + for (var i = 0; i < len; i++) { + var oldItem = oldDiffItems[i]; + var newItem = newDiffItems[i]; + if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) { + return false; + } + } + return true; + } + function transitionBetween(oldList, newList, api) { + var oldDiffItems = flattenDataDiffItems(oldList); + var newDiffItems = flattenDataDiffItems(newList); + function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) { + if (rawFrom || from) { + to.animateFrom({ + style: rawFrom && rawFrom !== from + // dividingMethod like clone may override the style(opacity) + // So extend it to raw style. + ? extend(extend({}, rawFrom.style), from.style) : from.style + }, animationCfg); + } + } + var hasMorphAnimation = false; + /** + * With groupId and childGroupId, we can build parent-child relationships between dataItems. + * However, we should mind the parent-child "direction" between old and new options. + * + * For example, suppose we have two dataItems from two series.data: + * + * dataA: [ dataB: [ + * { { + * value: 5, value: 3, + * groupId: 'creatures', groupId: 'animals', + * childGroupId: 'animals' childGroupId: 'dogs' + * }, }, + * ... ... + * ] ] + * + * where dataA is belong to optionA and dataB is belong to optionB. + * + * When we `setOption(optionB)` from optionA, we choose childGroupId of dataItemA and groupId of + * dataItemB as keys so the two keys are matched (both are 'animals'), then universalTransition + * will work. This derection is "parent -> child". + * + * If we `setOption(optionA)` from optionB, we also choose groupId of dataItemB and childGroupId + * of dataItemA as keys and universalTransition will work. This derection is "child -> parent". + * + * If there is no childGroupId specified, which means no multiLevelDrillDown/Up is needed and no + * parent-child relationship exists. This direction is "none". + * + * So we need to know whether to use groupId or childGroupId as the key when we call the keyGetter + * functions. Thus, we need to decide the direction first. + * + * The rule is: + * + * if (all childGroupIds in oldDiffItems and all groupIds in newDiffItems have common value) { + * direction = 'parent -> child'; + * } else if (all groupIds in oldDiffItems and all childGroupIds in newDiffItems have common value) { + * direction = 'child -> parent'; + * } else { + * direction = 'none'; + * } + */ + var direction = TRANSITION_NONE; + // find all groupIds and childGroupIds from oldDiffItems + var oldGroupIds = createHashMap(); + var oldChildGroupIds = createHashMap(); + oldDiffItems.forEach(function (item) { + item.groupId && oldGroupIds.set(item.groupId, true); + item.childGroupId && oldChildGroupIds.set(item.childGroupId, true); + }); + // traverse newDiffItems and decide the direction according to the rule + for (var i = 0; i < newDiffItems.length; i++) { + var newGroupId = newDiffItems[i].groupId; + if (oldChildGroupIds.get(newGroupId)) { + direction = TRANSITION_P2C; + break; + } + var newChildGroupId = newDiffItems[i].childGroupId; + if (newChildGroupId && oldGroupIds.get(newChildGroupId)) { + direction = TRANSITION_C2P; + break; + } + } + function createKeyGetter(isOld, onlyGetId) { + return function (diffItem) { + var data = diffItem.data; + var dataIndex = diffItem.dataIndex; + // TODO if specified dim + if (onlyGetId) { + return data.getId(dataIndex); + } + if (isOld) { + return direction === TRANSITION_P2C ? diffItem.childGroupId : diffItem.groupId; + } else { + return direction === TRANSITION_C2P ? diffItem.childGroupId : diffItem.groupId; + } + }; + } + // Use id if it's very likely to be an one to one animation + // It's more robust than groupId + // TODO Check if key dimension is specified. + var useId = isAllIdSame(oldDiffItems, newDiffItems); + var isElementStillInChart = {}; + if (!useId) { + // We may have different diff strategy with basicTransition if we use other dimension as key. + // If so, we can't simply check if oldEl is same with newEl. We need a map to check if oldEl is still being used in the new chart. + // We can't use the elements that already being morphed. Let it keep it's original basic transition. + for (var i = 0; i < newDiffItems.length; i++) { + var newItem = newDiffItems[i]; + var el = newItem.data.getItemGraphicEl(newItem.dataIndex); + if (el) { + isElementStillInChart[el.id] = true; + } + } + } + function updateOneToOne(newIndex, oldIndex) { + var oldItem = oldDiffItems[oldIndex]; + var newItem = newDiffItems[newIndex]; + var newSeries = newItem.data.hostModel; + // TODO Mark this elements is morphed and don't morph them anymore + var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex); + var newEl = newItem.data.getItemGraphicEl(newItem.dataIndex); + // Can't handle same elements. + if (oldEl === newEl) { + newEl && animateElementStyles(newEl, newItem.dataIndex, newSeries); + return; + } + if ( + // We can't use the elements that already being morphed + oldEl && isElementStillInChart[oldEl.id]) { + return; + } + if (newEl) { + // TODO: If keep animating the group in case + // some of the elements don't want to be morphed. + // TODO Label? + stopAnimation(newEl); + if (oldEl) { + stopAnimation(oldEl); + // If old element is doing leaving animation. stop it and remove it immediately. + removeEl$1(oldEl); + hasMorphAnimation = true; + applyMorphAnimation(getPathList(oldEl), getPathList(newEl), newItem.divide, newSeries, newIndex, updateMorphingPathProps); + } else { + fadeInElement(newEl, newSeries, newIndex); + } + } + // else keep oldEl leaving animation. + } + + new DataDiffer(oldDiffItems, newDiffItems, createKeyGetter(true, useId), createKeyGetter(false, useId), null, 'multiple').update(updateOneToOne).updateManyToOne(function (newIndex, oldIndices) { + var newItem = newDiffItems[newIndex]; + var newData = newItem.data; + var newSeries = newData.hostModel; + var newEl = newData.getItemGraphicEl(newItem.dataIndex); + var oldElsList = filter(map(oldIndices, function (idx) { + return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex); + }), function (oldEl) { + return oldEl && oldEl !== newEl && !isElementStillInChart[oldEl.id]; + }); + if (newEl) { + stopAnimation(newEl); + if (oldElsList.length) { + // If old element is doing leaving animation. stop it and remove it immediately. + each(oldElsList, function (oldEl) { + stopAnimation(oldEl); + removeEl$1(oldEl); + }); + hasMorphAnimation = true; + applyMorphAnimation(getPathList(oldElsList), getPathList(newEl), newItem.divide, newSeries, newIndex, updateMorphingPathProps); + } else { + fadeInElement(newEl, newSeries, newItem.dataIndex); + } + } + // else keep oldEl leaving animation. + }).updateOneToMany(function (newIndices, oldIndex) { + var oldItem = oldDiffItems[oldIndex]; + var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex); + // We can't use the elements that already being morphed + if (oldEl && isElementStillInChart[oldEl.id]) { + return; + } + var newElsList = filter(map(newIndices, function (idx) { + return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex); + }), function (el) { + return el && el !== oldEl; + }); + var newSeris = newDiffItems[newIndices[0]].data.hostModel; + if (newElsList.length) { + each(newElsList, function (newEl) { + return stopAnimation(newEl); + }); + if (oldEl) { + stopAnimation(oldEl); + // If old element is doing leaving animation. stop it and remove it immediately. + removeEl$1(oldEl); + hasMorphAnimation = true; + applyMorphAnimation(getPathList(oldEl), getPathList(newElsList), oldItem.divide, + // Use divide on old. + newSeris, newIndices[0], updateMorphingPathProps); + } else { + each(newElsList, function (newEl) { + return fadeInElement(newEl, newSeris, newIndices[0]); + }); + } + } + // else keep oldEl leaving animation. + }).updateManyToMany(function (newIndices, oldIndices) { + // If two data are same and both have groupId. + // Normally they should be diff by id. + new DataDiffer(oldIndices, newIndices, function (rawIdx) { + return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex); + }, function (rawIdx) { + return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex); + }).update(function (newIndex, oldIndex) { + // Use the original index + updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]); + }).execute(); + }).execute(); + if (hasMorphAnimation) { + each(newList, function (_a) { + var data = _a.data; + var seriesModel = data.hostModel; + var view = seriesModel && api.getViewOfSeriesModel(seriesModel); + var animationCfg = getAnimationConfig('update', seriesModel, 0); // use 0 index. + if (view && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) { + view.group.traverse(function (el) { + if (el instanceof Path && !el.animators.length) { + // We can't accept there still exists element that has no animation + // if universalTransition is enabled + el.animateFrom({ + style: { + opacity: 0 + } + }, animationCfg); + } + }); + } + }); + } + } + function getSeriesTransitionKey(series) { + var seriesKey = series.getModel('universalTransition').get('seriesKey'); + if (!seriesKey) { + // Use series id by default. + return series.id; + } + return seriesKey; + } + function convertArraySeriesKeyToString(seriesKey) { + if (isArray(seriesKey)) { + // Order independent. + return seriesKey.sort().join(','); + } + return seriesKey; + } + function getDivideShapeFromData(data) { + if (data.hostModel) { + return data.hostModel.getModel('universalTransition').get('divideShape'); + } + } + function findTransitionSeriesBatches(globalStore, params) { + var updateBatches = createHashMap(); + var oldDataMap = createHashMap(); + // Map that only store key in array seriesKey. + // Which is used to query the old data when transition from one to multiple series. + var oldDataMapForSplit = createHashMap(); + each(globalStore.oldSeries, function (series, idx) { + var oldDataGroupId = globalStore.oldDataGroupIds[idx]; + var oldData = globalStore.oldData[idx]; + var transitionKey = getSeriesTransitionKey(series); + var transitionKeyStr = convertArraySeriesKeyToString(transitionKey); + oldDataMap.set(transitionKeyStr, { + dataGroupId: oldDataGroupId, + data: oldData + }); + if (isArray(transitionKey)) { + // Same key can't in different array seriesKey. + each(transitionKey, function (key) { + oldDataMapForSplit.set(key, { + key: transitionKeyStr, + dataGroupId: oldDataGroupId, + data: oldData + }); + }); + } + }); + function checkTransitionSeriesKeyDuplicated(transitionKeyStr) { + if (updateBatches.get(transitionKeyStr)) { + warn("Duplicated seriesKey in universalTransition " + transitionKeyStr); + } + } + each(params.updatedSeries, function (series) { + if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) { + var newDataGroupId = series.get('dataGroupId'); + var newData = series.getData(); + var transitionKey = getSeriesTransitionKey(series); + var transitionKeyStr = convertArraySeriesKeyToString(transitionKey); + // Only transition between series with same id. + var oldData = oldDataMap.get(transitionKeyStr); + // string transition key is the best match. + if (oldData) { + if ("development" !== 'production') { + checkTransitionSeriesKeyDuplicated(transitionKeyStr); + } + // TODO check if data is same? + updateBatches.set(transitionKeyStr, { + oldSeries: [{ + dataGroupId: oldData.dataGroupId, + divide: getDivideShapeFromData(oldData.data), + data: oldData.data + }], + newSeries: [{ + dataGroupId: newDataGroupId, + divide: getDivideShapeFromData(newData), + data: newData + }] + }); + } else { + // Transition from multiple series. + // e.g. 'female', 'male' -> ['female', 'male'] + if (isArray(transitionKey)) { + if ("development" !== 'production') { + checkTransitionSeriesKeyDuplicated(transitionKeyStr); + } + var oldSeries_1 = []; + each(transitionKey, function (key) { + var oldData = oldDataMap.get(key); + if (oldData.data) { + oldSeries_1.push({ + dataGroupId: oldData.dataGroupId, + divide: getDivideShapeFromData(oldData.data), + data: oldData.data + }); + } + }); + if (oldSeries_1.length) { + updateBatches.set(transitionKeyStr, { + oldSeries: oldSeries_1, + newSeries: [{ + dataGroupId: newDataGroupId, + data: newData, + divide: getDivideShapeFromData(newData) + }] + }); + } + } else { + // Try transition to multiple series. + // e.g. ['female', 'male'] -> 'female', 'male' + var oldData_1 = oldDataMapForSplit.get(transitionKey); + if (oldData_1) { + var batch = updateBatches.get(oldData_1.key); + if (!batch) { + batch = { + oldSeries: [{ + dataGroupId: oldData_1.dataGroupId, + data: oldData_1.data, + divide: getDivideShapeFromData(oldData_1.data) + }], + newSeries: [] + }; + updateBatches.set(oldData_1.key, batch); + } + batch.newSeries.push({ + dataGroupId: newDataGroupId, + data: newData, + divide: getDivideShapeFromData(newData) + }); + } + } + } + } + }); + return updateBatches; + } + function querySeries(series, finder) { + for (var i = 0; i < series.length; i++) { + var found = finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id; + if (found) { + return i; + } + } + } + function transitionSeriesFromOpt(transitionOpt, globalStore, params, api) { + var from = []; + var to = []; + each(normalizeToArray(transitionOpt.from), function (finder) { + var idx = querySeries(globalStore.oldSeries, finder); + if (idx >= 0) { + from.push({ + dataGroupId: globalStore.oldDataGroupIds[idx], + data: globalStore.oldData[idx], + // TODO can specify divideShape in transition. + divide: getDivideShapeFromData(globalStore.oldData[idx]), + groupIdDim: finder.dimension + }); + } + }); + each(normalizeToArray(transitionOpt.to), function (finder) { + var idx = querySeries(params.updatedSeries, finder); + if (idx >= 0) { + var data = params.updatedSeries[idx].getData(); + to.push({ + dataGroupId: globalStore.oldDataGroupIds[idx], + data: data, + divide: getDivideShapeFromData(data), + groupIdDim: finder.dimension + }); + } + }); + if (from.length > 0 && to.length > 0) { + transitionBetween(from, to, api); + } + } + function installUniversalTransition(registers) { + registers.registerUpdateLifecycle('series:beforeupdate', function (ecMOdel, api, params) { + each(normalizeToArray(params.seriesTransition), function (transOpt) { + each(normalizeToArray(transOpt.to), function (finder) { + var series = params.updatedSeries; + for (var i = 0; i < series.length; i++) { + if (finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id) { + series[i][SERIES_UNIVERSAL_TRANSITION_PROP] = true; + } + } + }); + }); + }); + registers.registerUpdateLifecycle('series:transition', function (ecModel, api, params) { + // TODO api provide an namespace that can save stuff per instance + var globalStore = getUniversalTransitionGlobalStore(api); + // TODO multiple to multiple series. + if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) { + // TODO transitionOpt was used in an old implementation and can be removed now + // Use give transition config if its' give; + var transitionOpt = params.seriesTransition; + if (transitionOpt) { + each(normalizeToArray(transitionOpt), function (opt) { + transitionSeriesFromOpt(opt, globalStore, params, api); + }); + } else { + // Else guess from series based on transition series key. + var updateBatches_1 = findTransitionSeriesBatches(globalStore, params); + each(updateBatches_1.keys(), function (key) { + var batch = updateBatches_1.get(key); + transitionBetween(batch.oldSeries, batch.newSeries, api); + }); + } + // Reset + each(params.updatedSeries, function (series) { + // Reset; + if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) { + series[SERIES_UNIVERSAL_TRANSITION_PROP] = false; + } + }); + } + // Save all series of current update. Not only the updated one. + var allSeries = ecModel.getSeries(); + var savedSeries = globalStore.oldSeries = []; + var savedDataGroupIds = globalStore.oldDataGroupIds = []; + var savedData = globalStore.oldData = []; + for (var i = 0; i < allSeries.length; i++) { + var data = allSeries[i].getData(); + // Only save the data that can have transition. + // Avoid large data costing too much extra memory + if (data.count() < DATA_COUNT_THRESHOLD) { + savedSeries.push(allSeries[i]); + savedDataGroupIds.push(allSeries[i].get('dataGroupId')); + savedData.push(data); + } + } + }); + } + + // ----------------- + // Render engines + // ----------------- + // Render via Canvas. + // echarts.init(dom, null, { renderer: 'canvas' }) + use([install$1]); + // Render via SVG. + // echarts.init(dom, null, { renderer: 'svg' }) + use([install]); + // ---------------- + // Charts (series) + // ---------------- + // All of the series types, for example: + // chart.setOption({ + // series: [{ + // type: 'line' // or 'bar', 'pie', ... + // }] + // }); + use([install$2, install$3, install$4, install$6, install$8, install$a, install$b, install$c, install$d, install$e, install$f, install$h, install$i, install$j, install$k, install$l, install$m, install$n, install$o, install$p, install$q, install$r]); + // ------------------- + // Coordinate systems + // ------------------- + // All of the axis modules have been included in the + // coordinate system module below, do not need to + // make extra import. + // `cartesian` coordinate system. For some historical + // reasons, it is named as grid, for example: + // chart.setOption({ + // grid: {...}, + // xAxis: {...}, + // yAxis: {...}, + // series: [{...}] + // }); + use(install$t); + // `polar` coordinate system, for example: + // chart.setOption({ + // polar: {...}, + // radiusAxis: {...}, + // angleAxis: {...}, + // series: [{ + // coordinateSystem: 'polar' + // }] + // }); + use(install$u); + // `geo` coordinate system, for example: + // chart.setOption({ + // geo: {...}, + // series: [{ + // coordinateSystem: 'geo' + // }] + // }); + use(install$9); + // `singleAxis` coordinate system (notice, it is a coordinate system + // with only one axis, work for chart like theme river), for example: + // chart.setOption({ + // singleAxis: {...} + // series: [{type: 'themeRiver', ...}] + // }); + use(install$v); + // `parallel` coordinate system, only work for parallel series, for example: + // chart.setOption({ + // parallel: {...}, + // parallelAxis: [{...}, ...], + // series: [{ + // type: 'parallel' + // }] + // }); + use(install$g); + // `calendar` coordinate system. for example, + // chart.setOption({ + // calendar: {...}, + // series: [{ + // coordinateSystem: 'calendar' + // }] + // ); + use(install$w); + // ------------------ + // Other components + // ------------------ + // `graphic` component, for example: + // chart.setOption({ + // graphic: {...} + // }); + use(install$x); + // `toolbox` component, for example: + // chart.setOption({ + // toolbox: {...} + // }); + use(install$z); + // `tooltip` component, for example: + // chart.setOption({ + // tooltip: {...} + // }); + use(install$A); + // `axisPointer` component, for example: + // chart.setOption({ + // tooltip: {axisPointer: {...}, ...} + // }); + // Or + // chart.setOption({ + // axisPointer: {...} + // }); + use(install$s); + // `brush` component, for example: + // chart.setOption({ + // brush: {...} + // }); + // Or + // chart.setOption({ + // tooltip: {feature: {brush: {...}} + // }) + use(install$B); + // `title` component, for example: + // chart.setOption({ + // title: {...} + // }); + use(install$C); + // `timeline` component, for example: + // chart.setOption({ + // timeline: {...} + // }); + use(install$D); + // `markPoint` component, for example: + // chart.setOption({ + // series: [{markPoint: {...}}] + // }); + use(install$E); + // `markLine` component, for example: + // chart.setOption({ + // series: [{markLine: {...}}] + // }); + use(install$F); + // `markArea` component, for example: + // chart.setOption({ + // series: [{markArea: {...}}] + // }); + use(install$G); + // `legend` component not scrollable. for example: + // chart.setOption({ + // legend: {...} + // }); + use(install$J); + // `dataZoom` component including both `dataZoomInside` and `dataZoomSlider`. + use(install$M); + // `dataZoom` component providing drag, pinch, wheel behaviors + // inside coordinate system, for example: + // chart.setOption({ + // dataZoom: {type: 'inside'} + // }); + use(install$K); + // `dataZoom` component providing a slider bar, for example: + // chart.setOption({ + // dataZoom: {type: 'slider'} + // }); + use(install$L); + // `visualMap` component including both `visualMapContinuous` and `visualMapPiecewise`. + use(install$P); + // `visualMap` component providing continuous bar, for example: + // chart.setOption({ + // visualMap: {type: 'continuous'} + // }); + use(install$N); + // `visualMap` component providing pieces bar, for example: + // chart.setOption({ + // visualMap: {type: 'piecewise'} + // }); + use(install$O); + // `aria` component providing aria, for example: + // chart.setOption({ + // aria: {...} + // }); + use(install$Q); + // dataset transform + // chart.setOption({ + // dataset: { + // transform: [] + // } + // }); + use(install$R); + use(install$S); + // universal transition + // chart.setOption({ + // series: { + // universalTransition: { enabled: true } + // } + // }) + use(installUniversalTransition); + // label layout + // chart.setOption({ + // series: { + // labelLayout: { hideOverlap: true } + // } + // }) + use(installLabelLayout); + + exports.Axis = Axis; + exports.ChartView = ChartView; + exports.ComponentModel = ComponentModel; + exports.ComponentView = ComponentView; + exports.List = SeriesData; + exports.Model = Model; + exports.PRIORITY = PRIORITY; + exports.SeriesModel = SeriesModel; + exports.color = color; + exports.connect = connect; + exports.dataTool = dataTool; + exports.dependencies = dependencies; + exports.disConnect = disConnect; + exports.disconnect = disconnect; + exports.dispose = dispose$1; + exports.env = env; + exports.extendChartView = extendChartView; + exports.extendComponentModel = extendComponentModel; + exports.extendComponentView = extendComponentView; + exports.extendSeriesModel = extendSeriesModel; + exports.format = format$1; + exports.getCoordinateSystemDimensions = getCoordinateSystemDimensions; + exports.getInstanceByDom = getInstanceByDom; + exports.getInstanceById = getInstanceById; + exports.getMap = getMap; + exports.graphic = graphic$1; + exports.helper = helper; + exports.init = init$1; + exports.innerDrawElementOnCanvas = brushSingle; + exports.matrix = matrix; + exports.number = number; + exports.parseGeoJSON = parseGeoJSON; + exports.parseGeoJson = parseGeoJSON; + exports.registerAction = registerAction; + exports.registerCoordinateSystem = registerCoordinateSystem; + exports.registerLayout = registerLayout; + exports.registerLoading = registerLoading; + exports.registerLocale = registerLocale; + exports.registerMap = registerMap; + exports.registerPostInit = registerPostInit; + exports.registerPostUpdate = registerPostUpdate; + exports.registerPreprocessor = registerPreprocessor; + exports.registerProcessor = registerProcessor; + exports.registerTheme = registerTheme; + exports.registerTransform = registerTransform; + exports.registerUpdateLifecycle = registerUpdateLifecycle; + exports.registerVisual = registerVisual; + exports.setCanvasCreator = setCanvasCreator; + exports.setPlatformAPI = setPlatformAPI; + exports.throttle = throttle; + exports.time = time; + exports.use = use; + exports.util = util$1; + exports.vector = vector; + exports.version = version$1; + exports.zrUtil = util; + exports.zrender = zrender; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=echarts.js.map diff --git a/assets/echarts.min.js b/assets/echarts.min.js new file mode 100644 index 0000000..80094ac --- /dev/null +++ b/assets/echarts.min.js @@ -0,0 +1,45 @@ + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +!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"; +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + 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 o="sans-serif",a="12px sans-serif";var s,l,u=function(t){var e={};if("undefined"==typeof JSON)return e;for(var n=0;n=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;if(null==n||null==i)return e;return 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}}}}},pe="silent";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]),a!==pe)){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)}var s=i.__hostTarget;i=s||i.parent}return!r||pe}return!1}function xe(t,e,n){var i=t.painter;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}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)}}));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 Me(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];return void(t[c]=a[h])}var f=r;for(;;){var g=0,y=0,v=!1;do{if(e(a[h],t[u])<0){if(t[c--]=t[u--],g++,y=0,0==--i){v=!0;break}}else if(t[c--]=a[h--],y++,g=0,1==--s){v=!0;break}}while((g|y)=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=(c-=y)+1,p=(h-=y)+1,l=0;l=7||y>=7);if(v)break;f<0&&(f=0),f+=2}(r=f)<1&&(r=1);if(1===s){for(d=(c-=i)+1,p=(u-=i)+1,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;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()}}}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,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=i*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.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)){if(Ge(s))o[0]=0;else(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)){if(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 wi(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)}))})))}function Si(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)}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)),wi(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?Si(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 Pi(){return[1,0,0,1,0,0]}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:Pi,identity:Oi,copy:Ri,mul:Ni,translate:Ei,rotate:zi,scale:Vi,invert:Bi,clone:Fi}),Wi=Oi,Hi=5e-5;function Yi(t){return t>Hi||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){M={},p&&(S={});for(_=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;n0&&(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=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};if(o)!qo(e=o.image)&&o.pending.push(a);else{var s=h.loadImage(t,jo,jo);s.__zrImageSrc=t,Uo.put(t,s.__cachedImgObj={image:s,pending:[a]})}return 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}var ja=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){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,function(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&&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:C=p[_++],D=p[_++],A=p[_++],k=p[_++];if(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;if(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 qa(t,e,n,i,r,o,a){if(0===r)return!1;var s=r,l=0;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+=ts);var p=Math.atan2(l,s);return p<0&&(p+=ts),p>=i&&p<=r||p+ts>=i&&p+ts<=r}function ns(t,e,n,i,r,o){if(o>e&&o>i||or?s:0}var is=ja.CMD,rs=2*Math.PI;var os=[-1,-1,-1],as=[-1,-1];function ss(t,e,n,i,r,o,a,s,l,u){if(u>e&&u>i&&u>o&&u>s||u1&&(h=void 0,h=as[0],as[0]=as[1],as[1]=h),f=He(e,i,o,s,as[0]),d>1&&(g=He(e,i,o,s,as[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,os);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);os[0]=-l,os[1]=l;var u=Math.abs(i-r);if(u<1e-4)return 0;if(u>=rs-1e-4){i=0,r=rs;var h=o?1:-1;return a>=os[0]+t&&a<=os[1]+t?h:0}if(i>r){var c=i;i=r,r=c}i<0&&(i+=rs,r+=rs);for(var p=0,d=0;d<2;d++){var f=os[d];if(f+t>a){var g=Math.atan2(s,f);h=o?1:-1;g<0&&(g=rs+g),(g>=i&&g<=r||g+rs>=i&&g+rs<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),p+=h)}}return p}function hs(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+=ns(p,d,f,g,i,r))),m&&(f=p=u[y],g=d=u[y+1]),v){case is.M:p=f=u[y++],d=g=u[y++];break;case is.L:if(n){if(qa(p,d,u[y],u[y+1],e,i,r))return!0}else c+=ns(p,d,u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case is.C:if(n){if(Ka(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=ss(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 is.Q:if(n){if($a(p,d,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+1],i,r)||0;p=u[y++],d=u[y++];break;case is.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+=ns(p,d,o,a,i,r);var T=(i-x)*w/b+x;if(n){if(es(x,_,w,S,S+M,I,e,T,r))return!0}else c+=us(x,_,w,S,S+M,I,T,r);p=Math.cos(S+M)*b+x,d=Math.sin(S+M)*w+_;break;case is.R:if(f=p=u[y++],g=d=u[y++],o=f+u[y++],a=g+u[y++],n){if(qa(f,g,o,g,e,i,r)||qa(o,g,o,a,e,i,r)||qa(o,a,f,a,e,i,r)||qa(f,a,f,g,e,i,r))return!0}else c+=ns(o,g,o,a,i,r),c+=ns(f,a,f,g,i,r);break;case is.Z:if(n){if(qa(p,d,f,g,e,i,r))return!0}else c+=ns(p,d,f,g,i,r);p=f,d=g}}return n||(s=d,l=g,Math.abs(s-l)<1e-4)||(c+=ns(p,d,f,g,i,r)||0),0!==c}var cs=k({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},ua),ps={style:k({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},ha.style)},ds=Ki.concat(["invisible","culling","z","z2","zlevel","parent"]),fs=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 ja(!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 hs(t,e,!0,n,i)}(o,a/s,t,e)))return!0}if(this.hasFill())return function(t,e,n){return hs(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(cs,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(gs,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);ys.prototype.type="tspan";var vs=k({x:0,y:0},ua),ms={style:k({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},ha.style)};var xs=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.createStyle=function(t){return yt(vs,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 ms},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);xs.prototype.type="image";var _s=Math.round;function bs(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?(_s(2*i)===_s(2*r)&&(t.x1=t.x2=Ss(i,s,!0)),_s(2*o)===_s(2*a)&&(t.y1=t.y2=Ss(o,s,!0)),t):t}}function ws(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=Ss(i,s,!0),t.y=Ss(r,s,!0),t.width=Math.max(Ss(i+o,s,!1)-t.x,0===o?0:1),t.height=Math.max(Ss(r+a,s,!1)-t.y,0===a?0:1),t):t}}function Ss(t,e,n){if(!e)return t;var i=_s(2*t);return(i+_s(e))%2==0?i/2:(i+(n?1:-1))/2}var Ms=function(){this.x=0,this.y=0,this.width=0,this.height=0},Is={},Ts=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Ms},e.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=ws(Is,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}(fs);Ts.prototype.type="rect";var Cs={fill:"#000"},Ds={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)},As=function(t){function e(e){var n=t.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=Cs,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&&Gs(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=Bs(r,o,p),h-=t.height/2-p[0]-t.innerHeight/2);var d=this._getOrCreateChild(ys),f=d.createStyle();d.useStyle(f);var g=this._defaultStyle,y=!1,v=0,m=Vs("fill"in l?l.fill:"fill"in e?e.fill:(y=!0,g.fill)),x=zs("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),Rs(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(Ts)).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(xs)).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 Ns(t)&&(e=[t.fontStyle,t.fontWeight,Os(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),e&&ut(e)||t.textFont||t.font},e}(da),ks={left:!0,right:1,center:1},Ls={top:1,bottom:1,middle:1},Ps=["fontStyle","fontWeight","fontSize","fontFamily"];function Os(t){return"string"!=typeof t||-1===t.indexOf("px")&&-1===t.indexOf("rem")&&-1===t.indexOf("em")?isNaN(+t)?"12px":t+"px":t}function Rs(t,e){for(var n=0;n=0,o=!1;if(t instanceof fs){var a=Xs(t),s=r&&a.selectFill||a.normalFill,l=r&&a.selectStroke||a.normalStroke;if(nl(s)||nl(l)){var u=(i=i||{}).style||{};"inherit"===u.fill?(o=!0,i=A({},i),(u=A({},u)).fill=s):!nl(u.fill)&&nl(s)?(o=!0,i=A({},i),(u=A({},u)).fill=rl(s)):!nl(u.stroke)&&nl(l)&&(o||(i=A({},i),u=A({},u)),u.stroke=rl(l)),i.style=u}}if(i&&null==i.z2){o||(i=A({},i));var h=t.z2EmphasisLift;i.z2=t.z2+(null!=h?h:Ks)}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 Pl(t,e,n){Vl(t,!0),dl(t,yl),Rl(t,e,n)}function Ol(t,e,n,i){i?function(t){Vl(t,!1)}(t):Pl(t,e,n)}function Rl(t,e,n){var i=Ws(t);null!=e?(i.focus=e,i.blurScope=n):i.focus&&(i.focus=null)}var Nl=["emphasis","blur","select"],El={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function zl(t,e,n,i){n=n||"itemStyle";for(var r=0;r1&&(a*=Zl(f),s*=Zl(f));var g=(r===o?-1:1)*Zl((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+ql(c)*y-jl(c)*v,x=(e+i)/2+jl(c)*y+ql(c)*v,_=Ql([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=Ql(b,w);if(Jl(b,w)<=-1&&(S=Kl),Jl(b,w)>=1&&(S=0),S<0){var M=Math.round(S/Kl*1e6)/1e6;S=2*Kl+M%2*Kl}h.addData(u,m,x,a,s,_,S,c,o)}var eu=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,nu=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;var iu=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.applyTransform=function(t){},e}(fs);function ru(t){return null!=t.setData}function ou(t,e){var n=function(t){var e=new ja;if(!t)return e;var n,i=0,r=0,o=i,a=r,s=ja.CMD,l=t.match(eu);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)}}function Mu(t,e){var n,i=_u(e.r,0),r=_u(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=mu(l-s),d=p>du&&p%du;if(d>wu&&(p=d),i>wu)if(p>du-wu)t.moveTo(u+i*gu(s),h+i*fu(s)),t.arc(u,h,i,s,l,!c),r>wu&&(t.moveTo(u+r*gu(l),h+r*fu(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*gu(s),L=i*fu(s),P=r*gu(l),O=r*fu(l),R=p>wu;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=mu(i-r)/2;if(m=bu(E,y),x=bu(E,v),_=bu(E,f),b=bu(E,g),M=w=_u(m,x),I=S=_u(_,b),(w>wu||S>wu)&&(T=i*gu(l),C=i*fu(l),D=r*gu(s),A=r*fu(s),pwu){var U=bu(y,M),X=bu(v,M),Z=Su(D,A,k,L,i,U,c),j=Su(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,vu(Z.y0,Z.x0),vu(Z.y1,Z.x1),!c),t.arc(u,h,i,vu(Z.cy+Z.y1,Z.cx+Z.x1),vu(j.cy+j.y1,j.cx+j.x1),!c),X>0&&t.arc(u+j.cx,h+j.cy,X,vu(j.y1,j.x1),vu(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);if(r>wu&&R)if(I>wu){U=bu(f,I),Z=Su(P,O,T,C,r,-(X=bu(g,I)),c),j=Su(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,vu(Z.y0,Z.x0),vu(Z.y1,Z.x1),!c),t.arc(u,h,r,vu(Z.cy+Z.y1,Z.cx+Z.x1),vu(j.cy+j.y1,j.cx+j.x1),c),U>0&&t.arc(u+j.cx,h+j.cy,U,vu(j.y1,j.x1),vu(j.y0,j.x0),!c))}else t.lineTo(u+P,h+O),t.arc(u,h,r,l,s,c);else t.lineTo(u+P,h+O)}else t.moveTo(u,h);t.closePath()}}}var Iu=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},Tu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Iu},e.prototype.buildPath=function(t,e){Mu(t,e)},e.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},e}(fs);Tu.prototype.type="sector";var Cu=function(){this.cx=0,this.cy=0,this.r=0,this.r0=0},Du=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){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}(fs);function Au(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;pju[1]){if(a=!1,r)return a;var u=Math.abs(ju[0]-Zu[1]),h=Math.abs(Zu[0]-ju[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 ih(t,e,n,i,r,o){nh("update",t,e,n,i,r,o)}function rh(t,e,n,i,r,o){nh("enter",t,e,n,i,r,o)}function oh(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 Ch(t){return!t.isGroup}function Dh(t,e,n){if(t&&e){var i,r=(i={},t.traverse((function(t){Ch(t)&&t.anid&&(i[t.anid]=t)})),i);e.traverse((function(t){if(Ch(t)&&t.anid){var e=r[t.anid];if(e){var i=o(t);t.attr(o(e)),ih(t,i,n,Ws(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 Ah(t,e){return z(t,(function(t){var n=t[0];n=hh(n,e.x),n=ch(n,e.x+e.width);var i=t[1];return i=hh(i,e.y),[n,i=ch(i,e.y+e.height)]}))}function kh(t,e){var n=hh(t.x,e.x),i=ch(t.x+t.width,e.x+e.width),r=hh(t.y,e.y),o=ch(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 Lh(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 xs(i)):mh(t.replace("path://",""),i,n,"center")}function Ph(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=Rh(f,g,u,h)/d;if(y<0||y>1)return!1;var v=Rh(f,g,c,p)/d;return!(v<0||v>1)}function Rh(t,e,n,i){return t*i-n*e}function Nh(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=Ws(t.el);u.componentMainType=o,u.componentIndex=a,u.tooltipConfig={name:i,option:k({content:i,formatterParams:s},r)}}function Eh(t,e){var n;t.isGroup&&(n=e(t)),n||t.traverse(e)}function zh(t,e){if(t)if(Y(t))for(var n=0;n-1?yc:mc;function wc(t,e){t=t.toUpperCase(),_c[t]=new pc(e),xc[t]=e}function Sc(t){return _c[t]}wc(vc,{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:". "}}}}),wc(yc,{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 Mc=1e3,Ic=6e4,Tc=36e5,Cc=864e5,Dc=31536e6,Ac={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}"},kc="{yyyy}-{MM}-{dd}",Lc={year:"{yyyy}",month:"{yyyy}-{MM}",day:kc,hour:"{yyyy}-{MM}-{dd} "+Ac.hour,minute:"{yyyy}-{MM}-{dd} "+Ac.minute,second:"{yyyy}-{MM}-{dd} "+Ac.second,millisecond:Ac.none},Pc=["year","month","day","hour","minute","second","millisecond"],Oc=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Rc(t,e){return"0000".substr(0,e-(t+="").length)+t}function Nc(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 Ec(t){return t===Nc(t)}function zc(t,e,n,i){var r=jr(t),o=r[Fc(n)](),a=r[Gc(n)]()+1,s=Math.floor((a-1)/4)+1,l=r[Wc(n)](),u=r["get"+(n?"UTC":"")+"Day"](),h=r[Hc(n)](),c=(h-1)%12+1,p=r[Yc(n)](),d=r[Uc(n)](),f=r[Xc(n)](),g=(i instanceof pc?i:Sc(i||bc)||_c.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,Rc(a,2)).replace(/{M}/g,a+"").replace(/{dd}/g,Rc(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,m[u]).replace(/{ee}/g,x[u]).replace(/{e}/g,u+"").replace(/{HH}/g,Rc(h,2)).replace(/{H}/g,h+"").replace(/{hh}/g,Rc(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,Rc(p,2)).replace(/{m}/g,p+"").replace(/{ss}/g,Rc(d,2)).replace(/{s}/g,d+"").replace(/{SSS}/g,Rc(f,3)).replace(/{S}/g,f+"")}function Vc(t,e){var n=jr(t),i=n[Gc(e)]()+1,r=n[Wc(e)](),o=n[Hc(e)](),a=n[Yc(e)](),s=n[Uc(e)](),l=0===n[Xc(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 Bc(t,e,n){var i=j(t)?jr(t):t;switch(e=e||Vc(t,n)){case"year":return i[Fc(n)]();case"half-year":return i[Gc(n)]()>=6?1:0;case"quarter":return Math.floor((i[Gc(n)]()+1)/4);case"month":return i[Gc(n)]();case"day":return i[Wc(n)]();case"half-day":return i[Hc(n)]()/24;case"hour":return i[Hc(n)]();case"minute":return i[Yc(n)]();case"second":return i[Uc(n)]();case"millisecond":return i[Xc(n)]()}}function Fc(t){return t?"getUTCFullYear":"getFullYear"}function Gc(t){return t?"getUTCMonth":"getMonth"}function Wc(t){return t?"getUTCDate":"getDate"}function Hc(t){return t?"getUTCHours":"getHours"}function Yc(t){return t?"getUTCMinutes":"getMinutes"}function Uc(t){return t?"getUTCSeconds":"getSeconds"}function Xc(t){return t?"getUTCMilliseconds":"getMilliseconds"}function Zc(t){return t?"setUTCFullYear":"setFullYear"}function jc(t){return t?"setUTCMonth":"setMonth"}function qc(t){return t?"setUTCDate":"setDate"}function Kc(t){return t?"setUTCHours":"setHours"}function $c(t){return t?"setUTCMinutes":"setMinutes"}function Jc(t){return t?"setUTCSeconds":"setSeconds"}function Qc(t){return t?"setUTCMilliseconds":"setMilliseconds"}function tp(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 ep(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 np=st,ip=/([&<>"'])/g,rp={"&":"&","<":"<",">":">",'"':""","'":"'"};function op(t){return null==t?"":(t+"").replace(ip,(function(t,e){return rp[e]}))}function ap(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 zc(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)?tp(l):Z(t)?i(t):"boolean"==typeof t?t+"":"-"}var sp=["a","b","c","d","e","f","g"],lp=function(t,e){return"{"+t+(null==e?"":e)+"}"};function up(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 cp(t,e){return e=e||"transparent",X(t)?t:q(t)&&t.colorStops&&(t.colorStops[0]||{}).color||e}function pp(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location.href=t}else window.open(t,e)}var dp=E,fp=["left","right","top","bottom","width","height"],gp=[["width","left","right"],["height","top","bottom"]];function yp(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 vp=yp;H(yp,"vertical"),H(yp,"horizontal");function mp(t,e,n){n=np(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 xp(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=mp(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 _p(t){var e=t.layoutMode||t.constructor.layoutMode;return q(e)?e:e?{type:e}:null}function bp(t,e,n){var i=n&&n.ignoreSize;!Y(i)&&(i=[i,i]);var r=a(gp[0],0),o=a(gp[1],1);function a(n,r){var o={},a=0,u={},h=0;if(dp(n,(function(e){u[e]=t[e]})),dp(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}(pc);zo(Ip,pc),Go(Ip),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}}(Ip),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=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(){var t="";throw new Error(t)}))}function d(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}function f(t){u[t]=!0,d(t)}}}(Ip,(function(t){var e=[];E(Ip.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");return e}));var Tp="";"undefined"!=typeof navigator&&(Tp=navigator.platform||"");var Cp="rgba(0, 0, 0, 0.2)",Dp={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Cp,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Cp,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Cp,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Cp,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Cp,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Cp,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:Tp.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},Ap=ft(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),kp="original",Lp="arrayRows",Pp="objectRows",Op="keyedColumns",Rp="typedArray",Np="unknown",Ep="column",zp="row",Vp=1,Bp=2,Fp=3,Gp=So();function Wp(t,e,n){var i={},r=Yp(e);if(!r||!t)return i;var o,a,s=[],l=[],u=e.ecModel,h=Gp(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 nd=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 pc(i),this._locale=new pc(r),this._optionManager=o},e.prototype.setOption=function(t,e,n){var i=od(e);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},e.prototype.resetOption=function(t,e){return this._resetOption(t,od(e))},e.prototype._resetOption=function(t,e){var n=!1,i=this._optionManager;if(!t||"recreate"===t){var r=i.mountOption("recreate"===t);0,this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(r,e)):Kp(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;Gp(this).datasetMap=ft(),E(t,(function(t,e){null!=t&&(Ip.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){Ip.hasClass(e)&&!a.get(e)&&(o.push(e),a.set(e,!0))})),Ip.topologicalTravel(o,Ip.getAllClassMainTypes(),(function(e){var o=function(t,e,n){var i=Zp.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),l=a?s&&s.get(e)?"replaceMerge":"normalMerge":"replaceAll",u=yo(a,o,l);(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,Ip),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=Ip.getClass(e,t.keyInfo.subType,!o);if(!a)return;if("tooltip"===e){if(h)return void 0;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&&jp(this)}),this),this._seriesIndices||jp(this)},e.prototype.getOption=function(){var t=T(this.option);return E(t,(function(e,n){if(Ip.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 dd=E,fd=q,gd=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function yd(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=gd.length;n=0;f--){var g=t[f];if(s||(c=g.data.rawIndexOf(g.stackedByDimension,h)),c>=0){var y=g.data.getByRawIndex(g.stackResultDimension,c);if(p>=0&&y>0||p<=0&&y<0){p=Hr(p,y),d=y;break}}}return i[0]=p,i[1]=d,i}))}))}var Rd,Nd,Ed,zd,Vd,Bd=function(t){this.data=t.data||(t.sourceFormat===Op?{}:[]),this.sourceFormat=t.sourceFormat||Np,this.seriesLayoutBy=t.seriesLayoutBy||Ep,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 of(this.getData(e),t)},t.prototype.formatTooltip=function(t,e,n){},t}();function lf(t){var e,n;return q(t)?t.type&&(n=t):e=t,{text:e,frag:n}}function uf(t){return new hf(t)}var hf=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}},yf=function(){function t(t,e){if(!j(e)){var n="";0,ao(n)}this._opFn=gf[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}(),vf=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}(),mf=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 xf(t,e){return"eq"===t||"ne"===t?new mf("eq"===t,e):mt(gf,t)?new yf(t,e):null}var _f=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 pf(t,e)},t}();function bf(t){var e=t.sourceFormat;if(!Cf(e)){var n="";0,ao(n)}return t.data}function wf(t){var e=t.sourceFormat,n=t.data;if(!Cf(e)){var i="";0,ao(i)}if(e===Lp){for(var r=[],o=0,a=n.length;o65535?kf:Lf}function Ef(t,e,n,i,r){var o=Rf[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(Nf(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(Nf(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 pf(t[i],this._dimensions[i])}Df={arrayRows:t,objectRows:function(t,e,n,i){return pf(t[e],this._dimensions[i])},keyedColumns:t,original:function(t,e,n,i){var r=t&&(null==t.value?t:t.value);return pf(r instanceof Array?r[i]:r,this._dimensions[i])},typedArray:function(t,e,n,i){return t[i]}}}(),t}(),Vf=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(Ff(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))?Rp:kp,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?[Gd(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=[Gd(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){var o="";1!==t.length&&Gf(o)}var a,s=[],l=[];return E(t,(function(t){t.prepareSource();var e=t.getSource(r||0),n="";null==r||e||Gf(n),s.push(e),l.push(t._getVersionSign())})),i?e=function(t,e,n){var i=ho(t),r=i.length,o="";r||ao(o);for(var a=0,s=r;a1||n>0&&!t.noHeader;return E(t.blocks,(function(t){var n=jf(t);n>=e&&(e=n+ +(i&&(!n||Xf(t)&&!t.noHeader)))})),e}return 0}function qf(t,e,n,i){var r,o=e.noHeader,a=(r=jf(e),{html:Hf[r],richText:Yf[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 vf(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=Zf(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):Jf(s.join(""),o?n:a.html);if(o)return p;var d=ap(e.header,"ordinal",t.useUTC),f=Wf(i,t.renderMode).nameStyle;return"richText"===t.renderMode?Qf(t,d,f)+a.richText+p:Jf('
      '+op(d)+"
      "+p,n)}function Kf(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 ap(t,Y(d)?d[e]:d,u)}))};if(!o||!a){var c=s?"":t.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",r),p=o?"":ap(l,"ordinal",u),d=e.valueType,f=a?[]:h(e.value),g=!s||!o,y=!s&&o,v=Wf(i,r),m=v.nameStyle,x=v.valueStyle;return"richText"===r?(s?"":c)+(o?"":Qf(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)):Jf((s?"":c)+(o?"":function(t,e,n){return''+op(t)+""}(p,!s,m))+(a?"":function(t,e,n,i){var r=n?"10px":"20px",o=e?"float:right;margin-left:"+r:"";return t=Y(t)?t:[t],''+z(t,(function(t){return op(t)})).join("  ")+""}(f,g,y,x)),n)}}function $f(t,e,n,i,r,o){if(t)return Zf(t)({useUTC:r,renderMode:n,orderMode:i,markupStyleCreator:e,valueFormatter:t.valueFormatter},t,0,o)}function Jf(t,e){return'
      '+t+'
      '}function Qf(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}function tg(t,e){return cp(t.getData().getItemVisual(e,"style")[t.visualDrawType])}function eg(t,e){var n=t.get("padding");return null!=n?n:"richText"===e?[8,10]:10}var ng=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=hp({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 ig(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=tg(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(Uf("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(of(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=of(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 Uf("section",{header:v,noHeader:s||!y,sortParam:r,blocks:[Uf("nameValue",{markerType:"item",markerColor:d,name:x,noName:!ut(x),value:e,valueType:n})].concat(i||[])})}var rg=So();function og(t,e){return t.getName(e)||t.getId(e)}var ag=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=uf({count:lg,reset:ug}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n),(rg(this).sourceManager=new Vf(this)).prepareSource();var i=this.getInitialData(t,n);cg(i,this),this.dataTask.context.data=i,rg(this).dataBeforeProcessed=i,sg(this),this._initSelectedMapFromData(i)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=_p(this),i=n?wp(t):{},r=this.subType;Ip.hasClass(r)&&(r+="Series"),C(t,e.getTheme().get(this.subType)),C(t,this.getDefaultOption()),co(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&bp(t,i,n)},e.prototype.mergeOption=function(t,e){t=C(this.option,t,!0),this.fillDataTextStyle(t.data);var n=_p(this);n&&bp(this.option,t,n);var i=rg(this).sourceManager;i.dirty(),i.prepareSource();var r=this.getInitialData(t,e);cg(r,this),this.dataTask.dirty(),this.dataTask.context.data=r,rg(this).dataBeforeProcessed=r,sg(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=Qp.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[og(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 Ip.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}(Ip);function sg(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 lg(t){return t.model.getRawData().count()}function ug(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),hg}function hg(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function cg(t,e){E(gt(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),(function(n){t.wrapMethod(n,H(pg,e))}))}function pg(t,e){var n=dg(t);return n&&n.setOutputEnd((e||this).count()),e}function dg(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(ag,sf),R(ag,Qp),zo(ag,Ip);var fg=function(){function t(){this.group=new Cr,this.uid=fc("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.blurSeries=function(t,e){},t.prototype.eachRendered=function(t){var e=this.group;e&&e.traverse(t)},t}();function gg(){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(fg),Go(fg);var yg=So(),vg=gg(),mg=function(){function t(){this.group=new Cr,this.uid=fc("viewChart"),this.renderTask=uf({plan:bg,reset:wg}),this.renderTask.context={view:this}}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){0},t.prototype.highlight=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&_g(r,i,"emphasis")},t.prototype.downplay=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&_g(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){zh(this.group,t)},t.markUpdateMethod=function(t,e){yg(t).updateMethod=e},t.protoInitialize=void(t.prototype.type="chart"),t}();function xg(t,e,n){t&&Bl(t)&&("emphasis"===e?xl:_l)(t,n)}function _g(t,e,n){var i=wo(t,e),r=e&&null!=e.highlightKey?function(t){var e=Us[t];return null==e&&Ys<=32&&(e=Us[t]=Ys++),e}(e.highlightKey):null;null!=i?E(ho(i),(function(e){xg(t.getItemGraphicEl(e),n,r)})):t.eachItemGraphicEl((function(t){xg(t,n,r)}))}function bg(t){return vg(t.model)}function wg(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelineContext.progressiveRender,a=t.view,s=r&&yg(r).updateMethod,l=o?"incrementalPrepareRender":s&&a[s]?s:"render";return"render"!==l&&a[l](e,n,i,r),Sg[l]}Eo(mg),Go(mg);var Sg={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)}}},Mg="\0__throttleOriginMethod",Ig="\0__throttleRate",Tg="\0__throttleType";function Cg(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 Dg(t,e,n,i){var r=t[e];if(r){var o=r[Mg]||r,a=r[Tg];if(r[Ig]!==n||a!==i){if(null==n||!i)return t[e]=o;(r=t[e]=Cg(o,n,"debounce"===i))[Mg]=o,r[Tg]=i,r[Ig]=n}return r}}function Ag(t,e){var n=t[e];n&&n[Mg]&&(n.clear&&n.clear(),t[e]=n[Mg])}var kg=So(),Lg={itemStyle:Wo(uc,!0),lineStyle:Wo(ac,!0)},Pg={lineStyle:"stroke",itemStyle:"fill"};function Og(t,e){var n=t.visualStyleMapper||Lg[e];return n||(console.warn("Unkown style type '"+e+"'."),Lg.itemStyle)}function Rg(t,e){var n=t.visualDrawType||Pg[e];return n||(console.warn("Unkown style type '"+e+"'."),"fill")}var Ng={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=t.getModel(i),o=Og(t,i)(r),a=r.getShallow("decal");a&&(n.setVisual("decal",a),a.dirty=!0);var s=Rg(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)}}}},Eg=new pc,zg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(!t.ignoreStyleOnData&&!e.isSeriesFiltered(t)){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=Og(t,i),o=n.getVisual("drawType");return{dataEach:n.hasItemOption?function(t,e){var n=t.getRawDataItem(e);if(n&&n[i]){Eg.option=n[i];var a=r(Eg);A(t.ensureUniqueItemVisual(e,"style"),a),Eg.option.decal&&(t.setItemVisual(e,"decal",Eg.option.decal),Eg.option.decal.dirty=!0),o in a&&t.setItemVisual(e,"colorFromPalette",!1)}}:null}}}},Vg={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)),kg(t).scope=r}})),t.eachSeries((function(e){if(!e.isColorBySeries()&&!t.isSeriesFiltered(e)){var n=e.getRawData(),i={},r=e.getData(),o=kg(e).scope,a=e.visualStyleAccessPath||"itemStyle",s=Rg(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)}}))}}))}},Bg=Math.PI;var Fg=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,{}),o="";lt(!(i.reset&&i.overallReset),o),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)||uf({plan:Ug,reset:Xg,count:qg}));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||uf({reset:Gg});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,p="";function d(t){var e=t.uid,n=s.set(e,a&&a.get(e)||(c=!0,uf({reset:Wg,onDirty:Yg})));n.context={model:t,overallProgress:h},n.agent=o,n.__block=h,r._pipe(t,n)}lt(!t.createOnAllSeries,p),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:Kg(t)}),t.uid=fc("stageHandler"),e&&(t.visualType=e),t},t}();function Gg(t){t.overallReset(t.ecModel,t.api,t.payload)}function Wg(t){return t.overallProgress&&Hg}function Hg(){this.agent.dirty(),this.getDownstream().dirty()}function Yg(){this.agent&&this.agent.dirty()}function Ug(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function Xg(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 jg(e)})):Zg}var Zg=jg(0);function jg(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}(),uy=["symbol","symbolSize","symbolRotate","symbolOffset"],hy=uy.concat(["symbolKeepAspect"]),cy={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;a0&&(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 zy=new ja(!0);function Vy(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))}function By(t){return"string"==typeof t&&"none"!==t}function Fy(t){var e=t.fill;return null!=e&&"none"!==e}function Gy(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 Wy(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 Hy(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 Yy=["shadowBlur","shadowOffsetX","shadowOffsetY"],Uy=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function Xy(t,e,n,i,r){var o=!1;if(!i&&e===(n=n||{}))return!1;if(i||e.opacity!==n.opacity){qy(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||(qy(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)Gv(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 cd(this._api),s=this._theme,l=this._model=new nd;l.scheduler=this._scheduler,l.ssr=this._ssr,l.init(null,null,null,s,this._locale,a)}this._model.setOption(t,{replaceMerge:r},Uv);var u={seriesTransition:o,optionChanged:!0};if(n)this.__pendingUpdate={silent:i,updateParams:u},this.__flagInMainProcess=!1,this.getZr().wakeUp();else{try{mv(this),bv.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,Iv.call(this,i),Tv.call(this,i)}}},e.prototype.setTheme=function(){oo()},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||uv&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},e.prototype.renderToCanvas=function(t){t=t||{};var e=this._zr.painter;return e.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},e.prototype.renderToSVGString=function(t){t=t||{};var e=this._zr.painter;return e.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}Gv(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(Kv[n]){var a=o,s=o,l=-1/0,u=-1/0,c=[],p=t&&t.pixelRatio||this.getDevicePixelRatio();E(qv,(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 Ts({shape:{x:0,y:0,width:d,height:f},style:{fill:t.connectedBackgroundColor}})),E(c,(function(t){var e=new xs({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)}Gv(this.id)},e.prototype.convertToPixel=function(t,e){return wv(this,"convertToPixel",t,e)},e.prototype.convertFromPixel=function(t,e){return wv(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))}else 0}),this)}),this),!!n;Gv(this.id)},e.prototype.getVisual=function(t,e){var n=Io(this._model,t,{defaultMainType:"series"}),i=n.seriesModel;var r=i.getData(),o=n.hasOwnProperty("dataIndexInside")?n.dataIndexInside:n.hasOwnProperty("dataIndex")?r.indexOfRawIndex(n.dataIndex):null;return null!=o?dy(r,o,e):fy(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(Fv,(function(t){var e=function(e){var n,r=i.getModel(),o=e.target,a="globalout"===t;if(a?n={}:o&&my(o,(function(t){var e=Ws(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];0,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(Hv,(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?(vy("map","selectchanged",e,i,t),vy("pie","selectchanged",e,i,t)):"select"===t.fromAction?(vy("map","selected",e,i,t),vy("pie","selected",e,i,t)):"unselect"===t.fromAction&&(vy("map","unselected",e,i,t),vy("pie","unselected",e,i,t))}))},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){this._disposed?Gv(this.id):this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed)Gv(this.id);else{this._disposed=!0,this.getDom()&&ko(this.getDom(),Qv,"");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 qv[t.id]}},e.prototype.resize=function(t){if(!this.__flagInMainProcess)if(this._disposed)Gv(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&&mv(this),bv.update.call(this,{type:"resize",animation:A({duration:0},t&&t.animation)})}catch(t){throw this.__flagInMainProcess=!1,t}this.__flagInMainProcess=!1,Iv.call(this,i),Tv.call(this,i)}}},e.prototype.showLoading=function(t,e){if(this._disposed)Gv(this.id);else if(q(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),jv[t]){var n=jv[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},e.prototype.hideLoading=function(){this._disposed?Gv(this.id):(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},e.prototype.makeActionFromEvent=function(t){var e=A({},t);return e.type=Hv[t.type],e},e.prototype.dispatchAction=function(t,e){if(this._disposed)Gv(this.id);else if(q(e)||(e={silent:!!e}),Wv[t.type]&&this._model)if(this.__flagInMainProcess)this._pendingActions.push(t);else{var n=e.silent;Mv.call(this,t,n);var i=e.flush;i?this._zr.flush():!1!==i&&r.browser.weChat&&this._throttledZrFlush(),Iv.call(this,n),Tv.call(this,n)}},e.prototype.updateLabelLayout=function(){av.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},e.prototype.appendData=function(t){if(this._disposed)Gv(this.id);else{var e=t.seriesIndex,n=this.getModel().getSeriesByIndex(e);0,n.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(oh(t))return;if(t instanceof fs&&function(t){var e=Xs(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)}}))}mv=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),xv(t,!0),xv(t,!1),e.plan()},xv=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),av.trigger("series:afterupdate",e,n,l)},Rv=function(t){t.__needsUpdateStatus=!0,t.getZr().wakeUp()},Nv=function(t){t.__needsUpdateStatus&&(t.getZr().storage.traverse((function(t){oh(t)||e(t)})),t.__needsUpdateStatus=!1)},Pv=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){xl(e,n),Rv(t)},i.prototype.leaveEmphasis=function(e,n){_l(e,n),Rv(t)},i.prototype.enterBlur=function(e){bl(e),Rv(t)},i.prototype.leaveBlur=function(e){wl(e),Rv(t)},i.prototype.enterSelect=function(e){Sl(e),Rv(t)},i.prototype.leaveSelect=function(e){Ml(e),Rv(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}(sd))(t)},Ov=function(t){function e(t,e){for(var n=0;n=0)){dm.push(n);var o=Fg.wrapStageHandler(n,r);o.__prio=e,o.__raw=n,t.push(o)}}function gm(t,e){jv[t]=e}function ym(t,e,n){var i=lv("registerMap");i&&i(t,e,n)}var vm=function(t){var e=(t=T(t)).type,n="";e||ao(n);var i=e.split(":");2!==i.length&&ao(n);var r=!1;"echarts"===i[0]&&(e=i[1],r=!0),t.__isBuiltIn=r,If.set(e,t)};pm(hv,Ng),pm(cv,zg),pm(cv,Vg),pm(hv,cy),pm(cv,py),pm(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=nv(n,e))}));var r=i.getVisual("decal");if(r)i.getVisual("style").decal=nv(r,e)}}))})),rm(Pd),om(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(Od)})),gm("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 Ts({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(i);var r,o=new As({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 Ts({style:{fill:"none"},textContent:o,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});return n.add(a),e.showSpinner&&((r=new Wu({shape:{startAngle:-Bg/2,endAngle:-Bg/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*Bg/2}).start("circularInOut"),r.animateShape(!0).when(1e3,{startAngle:3*Bg/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})),um({type:$s,event:$s,update:$s},xt),um({type:Js,event:Js,update:Js},xt),um({type:Qs,event:Qs,update:Qs},xt),um({type:tl,event:tl,update:tl},xt),um({type:el,event:el,update:el},xt),im("light",ny),im("dark",sy);var mm=[],xm={registerPreprocessor:rm,registerProcessor:om,registerPostInit:am,registerPostUpdate:sm,registerUpdateLifecycle:lm,registerAction:um,registerCoordinateSystem:hm,registerLayout:cm,registerVisual:pm,registerTransform:vm,registerLoading:gm,registerMap:ym,registerImpl:function(t,e){sv[t]=e},PRIORITY:pv,ComponentModel:Ip,ComponentView:fg,SeriesModel:ag,ChartView:mg,registerComponentModel:function(t){Ip.registerClass(t)},registerComponentView:function(t){fg.registerClass(t)},registerSeriesModel:function(t){ag.registerClass(t)},registerChartView:function(t){mg.registerClass(t)},registerSubTypeDefaulter:function(t,e){Ip.registerSubTypeDefaulter(t,e)},registerPainter:function(t,e){Pr(t,e)}};function _m(t){Y(t)?E(t,(function(t){_m(t)})):P(mm,t)>=0||(mm.push(t),U(t)&&(t={install:t}),t.install(xm))}function bm(t){return null==t?0:t.length||1}function wm(t){return t}var Sm=function(){function t(t,e,n,i,r,o){this._old=t,this._new=e,this._oldKeyGetter=n||wm,this._newKeyGetter=i||wm,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 Nm,Em,zm,Vm,Bm,Fm,Gm,Wm=q,Hm=z,Ym="undefined"==typeof Int32Array?Array:Int32Array,Um=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],Xm=["_approximateExtent"],Zm=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;Lm(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===kp&&!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():Wm(r)&&(r=A({},r)),i[e]=r),r},t.prototype.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,Wm(e)?A(i,e):i[e]=n},t.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},t.prototype.setLayout=function(t,e){Wm(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;Hs(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:Hm(this.dimensions,this._getDimInfo,this),this.hostModel)),Bm(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=(Nm=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 Ym(o.categories.length);for(var s=0;s1&&(s+="__ec__"+u),i[e]=s}})),t}();function jm(t,e){Fd(t)||(t=Wd(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&&Rm(a),l=i===t.dimensionsDefine,u=l?Om(t):Pm(i),h=e.encodeDefine;!h&&e.encodeDefaulter&&(h=e.encodeDefaulter(t,a));for(var c=ft(h),p=new Pf(a),d=0;d0&&(i.name=r+(o-1)),o++,e.set(r,o)}}(o),new km({source:t,dimensions:o,fullDimensionCount:a,dimensionOmitted:s})}function qm(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 Km=function(t){this.coordSysDims=[],this.axisMap=ft(),this.categoryAxisMap=ft(),this.coordSysName=t};var $m={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),Jm(r)&&(i.set("x",r),e.firstCategoryDimIndex=0),Jm(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),Jm(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),Jm(o)&&(i.set("radius",o),e.firstCategoryDimIndex=0),Jm(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),Jm(s)&&(i.set(l,s),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=o))}))}};function Jm(t){return"category"===t.get("type")}function Qm(t,e,n){var i,r,o,a=(n=n||{}).byIndex,s=n.stackedCoordDimension;!function(t){return!Lm(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 tx(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function ex(t,e){return tx(t,e)?t.getCalculationInfo("stackResultDimension"):e}function nx(t,e,n){n=n||{};var i,r=e.getSourceManager(),o=!1;t?(o=!0,i=Wd(t)):o=(i=r.getSource()).sourceFormat===kp;var a=function(t){var e=t.get("coordinateSystem"),n=new Km(e),i=$m[e];if(i)return i(t,n,n.axisMap,n.categoryAxisMap),n}(e),s=function(t,e){var n,i=t.get("coordinateSystem"),r=ud.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=Tm(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(Wp,s,e):null,h=jm(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=Qm(e,{schema:h,store:p}),f=new Zm(h,e);f.setCalculationInfo(d);var g=null!=c&&function(t){if(t.sourceFormat===kp){return!Y(fo(function(t){var e=0;for(;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(ix);var rx=0,ox=function(){function t(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this.uid=++rx}return t.createByAxisModel=function(e){var n=e.option,i=n.data,r=i&&z(i,ax);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 ax(t){return q(t)&&null!=t.value?t.value:t+""}function sx(t){return"interval"===t.type||"log"===t.type}function lx(t,e,n,i){var r={},o=t[1]-t[0],a=r.interval=$r(o/e,!0);null!=n&&ai&&(a=r.interval=i);var s=r.intervalPrecision=hx(a);return function(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),cx(t,0,e),cx(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}function ux(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 hx(t){return Br(t)+2}function cx(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function px(t,e){return t>=e[0]&&t<=e[1]}function dx(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}function fx(t,e){return t*(e[1]-e[0])+e[0]}var gx=function(t){function e(e){var n=t.call(this,e)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new ox({})),Y(i)&&(i=new ox({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 X(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},e.prototype.contain=function(t){return px(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},e.prototype.normalize=function(t){return dx(t=this._getTickNumber(this.parse(t)),this._extent)},e.prototype.scale=function(t){return t=Math.round(fx(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}(ix);ix.registerClass(gx);var yx=zr,vx=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 px(t,this._extent)},e.prototype.normalize=function(t){return dx(t,this._extent)},e.prototype.scale=function(t){return fx(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=hx(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:yx(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]&&h0&&(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")||(Lx(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:Mx(r),stackId:Sx(t)})})),Cx(n)}function Cx(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 Dx(t,e){var n=Ix(t,e),i=Tx(n);E(n,(function(t){var e=t.getData(),n=t.coordinateSystem.getBaseAxis(),r=Sx(t),o=i[Mx(n)][r],a=o.offset,s=o.width;e.setLayout({bandWidth:o.bandWidth,offset:a,size:s})}))}function Ax(t){return{seriesType:t,plan:gg(),reset:function(t){if(kx(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=tx(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=Lx(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&&_x(3*r),u=d&&s&&_x(3*r),m=d&&_x(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]);if(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 zc(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 r=1e4,o=Oc,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=[]}}0;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=Ox.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 Nx(t){return(t/=2592e6)>6?6:t>3?3:t>2?2:1}function Ex(t){return(t/=Tc)>12?12:t>6?6:t>3.5?4:t>2?2:1}function zx(t,e){return(t/=e?Ic:Mc)>30?30:t>20?20:t>15?15:t>10?10:t>5?5:t>2?2:1}function Vx(t){return $r(t,!0)}function Bx(t,e,n){var i=new Date(t);switch(Nc(e)){case"year":case"month":i[jc(n)](0);case"day":i[qc(n)](1);case"hour":i[Kc(n)](0);case"minute":i[$c(n)](0);case"second":i[Jc(n)](0),i[Qc(n)](0)}return i.getTime()}ix.registerClass(Px);var Fx=ix.prototype,Gx=vx.prototype,Wx=zr,Hx=Math.floor,Yx=Math.ceil,Ux=Math.pow,Xx=Math.log,Zx=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e.base=10,e._originalScale=new vx,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(Gx.getTicks.call(this,t),(function(t){var e=t.value,r=zr(Ux(this.base,e));return r=e===n[0]&&this._fixMin?qx(r,i[0]):r,{value:r=e===n[1]&&this._fixMax?qx(r,i[1]):r}}),this)},e.prototype.setExtent=function(t,e){var n=this.base;t=Xx(t)/Xx(n),e=Xx(e)/Xx(n),Gx.setExtent.call(this,t,e)},e.prototype.getExtent=function(){var t=this.base,e=Fx.getExtent.call(this);e[0]=Ux(t,e[0]),e[1]=Ux(t,e[1]);var n=this._originalScale.getExtent();return this._fixMin&&(e[0]=qx(e[0],n[0])),this._fixMax&&(e[1]=qx(e[1],n[1])),e},e.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=Xx(t[0])/Xx(e),t[1]=Xx(t[1])/Xx(e),Fx.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(Yx(e[0]/i)*i),zr(Hx(e[1]/i)*i)];this._interval=i,this._niceExtent=r}},e.prototype.calcNiceExtent=function(t){Gx.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 px(t=Xx(t)/Xx(this.base),this._extent)},e.prototype.normalize=function(t){return dx(t=Xx(t)/Xx(this.base),this._extent)},e.prototype.scale=function(t){return t=fx(t,this._extent),Ux(this.base,t)},e.type="log",e}(ix),jx=Zx.prototype;function qx(t,e){return Wx(t,Br(e))}jx.getMinorTicks=Gx.getMinorTicks,jx.getLabel=Gx.getLabel,ix.registerClass(Zx);var Kx=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[Jx[t]]=e},t.prototype.setDeterminedMinMax=function(t,e){var n=$x[t];this[n]=e},t.prototype.freeze=function(){this.frozen=!0},t}(),$x={min:"_determinedMin",max:"_determinedMax"},Jx={min:"_dataMin",max:"_dataMax"};function Qx(t,e,n){var i=t.rawExtentInfo;return i||(i=new Kx(t,e,n),t.rawExtentInfo=i,i)}function t_(t,e){return null==e?null:nt(e)?NaN:t.parse(e)}function e_(t,e){var n=t.type,i=Qx(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=Ix("bar",a),l=!1;if(E(s,(function(t){l=l||t.getBaseAxis()===e.axis})),l){var u=Tx(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[Mx(e)];return null!=i&&null!=n?i[Sx(n)]: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 n_(t,e){var n=e,i=e_(t,n),r=i.extent,o=n.get("splitNumber");t instanceof Zx&&(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 i_(t,e){if(e=e||t.get("type"))switch(e){case"category":return new gx({ordinalMeta:t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),extent:[1/0,-1/0]});case"time":return new Px({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new(ix.getClass(e)||vx)}}function r_(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(o_(t,n),i,null!=n.level?{level:n.level}:null)}):function(e){return t.scale.getLabel(e)}}function o_(t,e){return"category"===t.type?t.scale.getLabel(e):e.value}function a_(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 s_(t){var e=t.get("interval");return null==e?"auto":e}function l_(t){return"category"===t.type&&0===s_(t.getLabelModel())}function u_(t,e){var n={};return E(t.mapDimensionsAll(e),(function(e){n[ex(t,e)]=!0})),G(n)}var h_=function(){function t(){}return t.prototype.getNeedCrossZero=function(){return!this.option.scale},t.prototype.getCoordSysModel=function(){},t}();var c_={isDimensionStacked:tx,enableDataStack:Qm,getStackedDimension:ex};var p_=Object.freeze({__proto__:null,createList:function(t){return nx(null,t)},getLayoutRect:mp,dataStack:c_,createScale:function(t,e){var n=e;e instanceof pc||(n=new pc(e));var i=i_(n);return i.setExtent(t[0],t[1]),n_(i,n),i},mixinAxisModelCommonMethods:function(t){R(t,h_)},getECData:Ws,createTextStyle:function(t,e){return Yh(t,null,null,"normal"!==(e=e||{}).state)},createDimensions:function(t,e){return jm(t,e).dimensions},createSymbol:ky,enableHoverEmphasis:Pl});function d_(t,e){return Math.abs(t-e)<1e-8}function f_(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 I_(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=M_(r,i,n);break;case"Polygon":case"MultiLineString":S_(r,i,n);break;case"MultiPolygon":E(r,(function(t,e){return S_(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 x_(o[0],o.slice(1)));break;case"MultiPolygon":E(i.coordinates,(function(t){t[0]&&r.push(new x_(t[0],t.slice(1)))}));break;case"LineString":r.push(new __([i.coordinates]));break;case"MultiLineString":r.push(new __(i.coordinates))}var a=new b_(n[e||"name"],r,n.cp);return a.properties=n,a}))}var T_=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}),C_=Object.freeze({__proto__:null,parse:jr,format:zc}),D_=Object.freeze({__proto__:null,extendShape:dh,extendPath:gh,makePath:mh,makeImage:xh,mergePath:bh,resizePath:wh,createIcon:Lh,updateProps:ih,initProps:rh,getTransform:Mh,clipPointsByRect:Ah,clipRectByRect:kh,registerShape:yh,getShapeClass:vh,Group:Cr,Image:xs,Text:As,Circle:uu,Ellipse:cu,Sector:Tu,Ring:Du,Polygon:Lu,Polyline:Ou,Rect:Ts,Line:Eu,BezierCurve:Fu,Arc:Wu,IncrementalDisplayable:Qu,CompoundPath:Hu,LinearGradient:Uu,RadialGradient:Xu,BoundingRect:sr}),A_=Object.freeze({__proto__:null,addCommas:tp,toCamelCase:ep,normalizeCssArray:np,encodeHTML:op,formatTpl:up,getTooltipMarker:hp,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=t.replace("MM",Rc(a,2)).replace("M",a).replace("yyyy",o).replace("yy",o%100+"").replace("dd",Rc(s,2)).replace("d",s).replace("hh",Rc(l,2)).replace("h",l).replace("mm",Rc(u,2)).replace("m",u).replace("ss",Rc(h,2)).replace("s",h).replace("SSS",Rc(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 As({style:{text:t,font:e,align:n,verticalAlign:i,padding:r,rich:o,overflow:a?"truncate":null,lineHeight:s}}).getBoundingRect()}}),k_=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}),L_=So();function P_(t){return"category"===t.type?function(t){var e=t.getLabelModel(),n=R_(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}(t):function(t){var e=t.scale.getTicks(),n=r_(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)}function O_(t,e){return"category"===t.type?function(t,e){var n,i,r=N_(t,"ticks"),o=s_(e),a=E_(r,o);if(a)return a;e.get("show")&&!t.scale.isBlank()||(n=[]);if(U(o))n=B_(t,o,!0);else if("auto"===o){var s=R_(t,t.getLabelModel());i=s.labelCategoryInterval,n=z(s.labels,(function(t){return t.tickValue}))}else n=V_(t,i=o,!0);return z_(r,o,{ticks:n,tickCategoryInterval:i})}(t,e):{ticks:z(t.scale.getTicks(),(function(t){return t.value}))}}function R_(t,e){var n,i,r=N_(t,"labels"),o=s_(e),a=E_(r,o);return a||(U(o)?n=B_(t,o):(i="auto"===o?function(t){var e=L_(t).autoInterval;return null!=e?e:L_(t).autoInterval=t.calculateCategoryInterval()}(t):o,n=V_(t,i)),z_(r,o,{labels:n,labelCategoryInterval:i}))}function N_(t,e){return L_(t)[e]||(L_(t)[e]=[])}function E_(t,e){for(var n=0;n1&&h/l>2&&(u=Math.round(Math.ceil(u/l)*l));var c=l_(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 B_(t,e,n){var i=t.scale,r=r_(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 F_=[0,1],G_=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&&W_(n=n.slice(),i.count()),Nr(t,F_,n,e)},t.prototype.coordToData=function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&W_(n=n.slice(),i.count());var r=Nr(t,n,F_,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(O_(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)return;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 P_(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=r_(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))),_=L_(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 W_(t,e){var n=(t[1]-t[0])/e/2;t[0]+=n,t[1]-=n}var H_=2*Math.PI,Y_=ja.CMD,U_=["top","right","bottom","left"];function X_(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 Z_(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)%H_<1e-4)return l[0]=h,l[1]=c,u-n;if(o){var p=i;i=Qa(r),r=Qa(p)}else i=Qa(i),r=Qa(r);i>r&&(r+=H_);var d=Math.atan2(s,a);if(d<0&&(d+=H_),d>=i&&d<=r||d+H_>=i&&d+H_<=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,Q_.fromArray(t[0]),tb.fromArray(t[1]),eb.fromArray(t[2]),Ji.sub(nb,Q_,tb),Ji.sub(ib,eb,tb);var n=nb.len(),i=ib.len();if(!(n<.001||i<.001)){nb.scale(1/n),ib.scale(1/i);var r=nb.dot(ib);if(Math.cos(e)1&&Ji.copy(ab,eb),ab.toArray(t[1])}}}}function lb(t,e,n){if(n<=180&&n>0){n=n/180*Math.PI,Q_.fromArray(t[0]),tb.fromArray(t[1]),eb.fromArray(t[2]),Ji.sub(nb,tb,Q_),Ji.sub(ib,eb,tb);var i=nb.len(),r=ib.len();if(!(i<.001||r<.001))if(nb.scale(1/i),ib.scale(1/r),nb.dot(e)=a)Ji.copy(ab,eb);else{ab.scaleAndAdd(ib,o/Math.tan(Math.PI/2-s));var l=eb.x!==tb.x?(ab.x-tb.x)/(eb.x-tb.x):(ab.y-tb.y)/(eb.y-tb.y);if(isNaN(l))return;l<0?Ji.copy(ab,tb):l>1&&Ji.copy(ab,eb)}ab.toArray(t[1])}}}function ub(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 hb(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 gb(t,e,n,i){return fb(t,"y","height",e,n,i)}function yb(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)),ih(n,s,e,a)}else if(n.attr(s),!$h(n).valueAnimation){var h=rt(n.style.opacity,1);n.style.opacity=0,rh(n,{style:{opacity:h}},e,a)}if(d.oldLayout=s,n.states.select){var c=d.oldLayoutSelect={};Sb(c,s,Mb),Sb(c,n.states.select,Mb)}if(n.states.emphasis){var p=d.oldLayoutEmphasis={};Sb(p,s,Mb),Sb(p,n.states.emphasis,Mb)}Qh(n,a,l,e,e)}if(i&&!i.ignore&&!i.invisible){r=(d=wb(i)).oldLayout;var d,f={points:i.shape.points};r?(i.attr({shape:r}),ih(i,{shape:f},e)):(i.setShape(f),i.style.strokePercent=0,rh(i,{style:{strokePercent:1}},e)),d.oldLayout=f}},t}(),Tb=So();var Cb=Math.sin,Db=Math.cos,Ab=Math.PI,kb=2*Math.PI,Lb=180/Ab,Pb=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 l=a-o,u=!s,h=Math.abs(l),c=En(h-kb)||(u?l>=kb:-l>=kb),p=l>0?l%kb:l%kb+kb,d=!1;d=!!c||!En(h)&&p>=Ab==!!u;var f=t+n*Db(o),g=e+i*Cb(o);this._start&&this._add("M",f,g);var y=Math.round(r*Lb);if(c){var v=1/this._p,m=(u?1:-1)*(kb-v);this._add("A",n,i,y,1,+u,t+n*Db(o+m),e+i*Cb(o+m)),v>.01&&this._add("A",n,i,y,0,+u,f,g)}else{var x=t+n*Db(a),_=e+i*Cb(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 Hb(t){return{zrId:t,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssClassIdx:0,cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function Yb(t,e,n,i){return Gb("svg","root",{width:t,height:e,xmlns:Vb,"xmlns:xlink":Bb,version:"1.1",baseProfile:"full",viewBox:!!i&&"0 0 "+t+" "+e},n)}var Ub={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"},Xb="transform-origin";function Zb(t,e,n){var i=A({},t.shape);A(i,e),t.buildPath(n,i);var r=new Pb;return r.reset(Yn(t)),n.rebuildPath(r,1),r.generateStr(),r.getStr()}function jb(t,e){var n=e.originX,i=e.originY;(n||i)&&(t[Xb]=n+"px "+i+"px")}var qb={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function Kb(t,e){var n=e.zrId+"-ani-"+e.cssAnimIdx++;return e.cssAnims[n]=t,n}function $b(t){return X(t)?Ub[t]?"cubic-bezier("+Ub[t]+")":rn(t)?t:"":""}function Jb(t,e,n,i){var r=t.animators,o=r.length,a=[];if(t instanceof Hu){if(y=function(t,e,n){var i,r,o=t.shape.paths,a={};if(E(o,(function(t){var e=Hb(n.zrId);e.animation=!0,Jb(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=Kb(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 Kb(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 Qb=Math.round;function tw(t){return t&&X(t.src)}function ew(t){return t&&U(t.toDataURL)}function nw(t,e,n,i){zb((function(r,o){var a="fill"===r||"stroke"===r;a&&function(t){return t&&("linear"===t.type||"radial"===t.type)}(o)?function(t,e,n,i){var r,o=t[n],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 void 0;r="radialGradient",a.cx=rt(o.x,.5),a.cy=rt(o.y,.5),a.r=rt(o.r,.5)}for(var s=o.colorStops,l=[],u=0,h=s.length;ul?Tw(t,null==n[c+1]?null:n[c+1].elm,n,s,c):Cw(t,e,a,l))}(n,i,r):ww(r)?(ww(t.text)&&xw(n,""),Tw(n,null,r,0,r.length-1)):ww(i)?Cw(n,i,0,i.length-1):ww(t.text)&&xw(n,""):t.text!==e.text&&(ww(i)&&Cw(n,i,0,i.length-1),xw(n,e.text)))}var kw=0,Lw=function(){function t(t,e,n){if(this.type="svg",this.refreshHover=Pw("refreshHover"),this.configLayer=Pw("configLayer"),this.storage=e,this._opts=n=A({},n),this.root=t,this._id="zr"+kw++,this._oldVNode=Yb(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=Fb("svg");Dw(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(Mw(t,e))Aw(t,e);else{var n=t.elm,i=vw(n);Iw(e),null!==i&&(fw(i,e.elm,mw(n)),Cw(i,[t],0,0))}}(this._oldVNode,t),this._oldVNode=t}},t.prototype.renderOneToVNode=function(t){return cw(t,Hb(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=Hb(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=Gb("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=Gb("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(Gb("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=Gb("style","stl",{},[],p);a.push(d)}}return Yb(i,r,a,t.useViewBox)},t.prototype.renderToString=function(t){return t=t||{},Wb(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?zw: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}(ag);function Fw(t,e){var n=t.mapDimensionsAll("defaultedLabel"),i=n.length;if(1===i){var r=of(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 Ww=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=ky(t,-1,-1,2,2,null,r);o.attr({z2:100,culling:!0,scaleX:i[0]/2,scaleY:i[1]/2}),o.drift=Hw,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(){xl(this.childAt(0))},e.prototype.downplay=function(){_l(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){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":e.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):ih(p,c,a,n),uh(p)}if(this._updateCommon(t,n,s,i,r),l){var p=this.childAt(0);if(!u){c={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:p.style.opacity}};p.scaleX=p.scaleY=0,p.style.opacity=0,rh(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=Hh(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=Py(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 xs){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;Wh(f,c,{labelFetcher:g,labelDataIndex:e,defaultText:function(e){return I?t.getName(e):Fw(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(1.1,3/this._sizeY);T.scaleX=this._sizeX*C,T.scaleY=this._sizeY*C}this.setSymbolScale(1),Ol(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=Ws(this).dataIndex,o=n&&n.animation;if(this.silent=i.silent=!0,n&&n.fadeLabel){var a=i.getTextContent();a&&ah(a,{style:{opacity:0}},e,{dataIndex:r,removeOpt:o,cb:function(){i.removeTextContent()}})}else i.removeTextContent();ah(i,{style:{opacity:0},scaleX:0,scaleY:0},e,{dataIndex:r,cb:t,removeOpt:o})},e.getSymbolSize=function(t,e){return Ly(t.getItemVisual(e,"symbolSize"))},e}(Cr);function Hw(t,e){this.parent.drift(t,e)}function Yw(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 Uw(t){return null==t||q(t)||(t={isIgnore:t}),t||{}}function Xw(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:Hh(e),cursorStyle:e.get("cursor")}}var Zw=function(){function t(t){this.group=new Cr,this._SymbolCtor=t||Ww}return t.prototype.updateData=function(t,e){this._progressiveEls=null,e=Uw(e);var n=this.group,i=t.hostModel,r=this._data,o=this._SymbolCtor,a=e.disableAnimation,s=Xw(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(Yw(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(Yw(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):ih(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=Xw(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=Uw(n);for(var r=t.start;r0?n=i[0]:i[1]<0&&(n=i[1]);return 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 tx(e,c[0])&&(p=!0,c[0]=d),tx(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 qw(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 Kw=Math.min,$w=Math.max;function Jw(t,e){return isNaN(t)||isNaN(e)}function Qw(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(Jw(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||Jw(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=Kw(D=v+T*a*I,$w(w,v)),A=Kw(A,$w(S,m)),D=$w(D,Kw(w,v)),f=m-(C=(A=$w(A,Kw(S,m)))-m)*R/N,d=Kw(d=v-(T=D-v)*R/N,$w(u,v)),f=Kw(f,$w(h,m)),D=v+(T=v-(d=$w(d,Kw(u,v))))*N/R,A=m+(C=m-(f=$w(f,Kw(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 tS=function(){this.smooth=0,this.smoothConstraint=!0},eS=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 tS},e.prototype.buildPath=function(t,e){var n=e.points,i=0,r=n.length/2;if(e.connectNulls){for(;r>0&&Jw(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){y=a?He(i,h,p,f,x):He(n,u,c,d,x);return a?[t,y]:[y,t]}}n=d,i=f}}},e}(fs),nS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(tS),iS=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 nS},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&&Jw(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 Uu(0,0,0,0,p,!0);return v[r]=f,v[r+"2"]=g,v}}}function fS(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 gS(t,e){return[t[2*e],t[2*e+1]]}function yS(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);Ws(d).seriesIndex=t.seriesIndex,Ol(d,L,P,O);var R=cS(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=cS(E.get("smooth"))),f.setShape({smooth:R,stackedOnSmooth:z,smoothMonotone:N,connectNulls:w}),zl(f,t,"areaStyle"),Ws(f).seriesIndex=t.seriesIndex,Ol(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){Ws(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 Ww(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 mg.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 mg.prototype.downplay.call(this,t,e,n,i)},e.prototype._changePolyState=function(t){var e=this._polygon;fl(this._polyline,t),e&&fl(e,t)},e.prototype._newPolyline=function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new eS({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 iS({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(yS(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 As({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&&(Wh(o,Hh(t,"endLabel"),{inheritColor:n,labelFetcher:t,labelDataIndex:l,defaultText:function(t,e,n){return null!=n?Gw(r,n):Fw(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=gS(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=gS(u,A);r&&(I=h.getRawValue(A)),s.attr({x:T[0]+x,y:T[1]+_})}r&&$h(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=jw(r,e,a),v=t.getLayout("points")||[],m=e.getLayout("points")||[],x=0;x3e3||l&&hS(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(),ih(s,g,u),l&&(l.setShape({points:c,stackedOnPoints:p}),l.stopAnimation(),ih(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=_S[r]:U(r)&&(d=r),d&&t.setData(i.downSample(i.mapDimension(l.dim),1/p,d,bS))}}}}}var SS=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 nx(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}(ag);ag.registerClass(SS);var MS=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 nx(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=gc(SS.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}(SS),IS=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},TS=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 IS},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){lh(e,t,Ws(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}(mg),PS={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=AS(e.x,t.x),s=kS(e.x+e.width,r),l=AS(e.y,t.y),u=kS(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=kS(e.r,t.r),o=AS(e.r0,t.r0);e.r=r,e.r0=o;var a=r-o<0;if(n<0){i=e.r;e.r=e.r0,e.r0=i}return a}},OS={cartesian2d:function(t,e,n,i,r,o,a,s,l){var u=new Ts({shape:A({},i),z2:1});(u.__dataIndex=n,u.name="item",o)&&(u.shape[r?"height":"width"]=0);return u},polar:function(t,e,n,i,r,o,a,s,l){var u=!r&&l?TS:Tu,h=new u({shape:i,z2:1});h.name="item";var c,p,d=FS(r);if(h.calculateTextPosition=(c=d,p=({isRoundCap:u===TS}||{}).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)+CS(f,o+v,!1),b=l+d*x(f)+DS(f,o+v,!1),w="right",S="middle";break;case"insideStartAngle":_=s+d*m(f)+CS(f,-o+v,!1),b=l+d*x(f)+DS(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)+CS(g,o+v,!0),b=l+d*x(g)+DS(g,o+v,!0),w="left",S="middle";break;case"insideEndAngle":_=s+d*m(g)+CS(g,-o+v,!0),b=l+d*x(g)+DS(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?ih:rh)(h,{shape:g},o)}return h}};function RS(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?ih:rh)(n,{shape:l},e,r,null),(a?ih:rh)(n,{shape:u},e?t.baseAxis.model:null,r)}function NS(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 FS(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 GS(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=Hh(i);Wh(t,c,{labelFetcher:o,labelDataIndex:n,defaultText:Fw(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,FS(a),i.get(["label","rotate"]))}Jh(p,c,o.getRawValue(n),(function(t){return Gw(e,t)}));var f=i.getModel(["emphasis"]);Ol(t,f.get("focus"),f.get("blurScope"),f.get("disabled")),zl(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 WS=function(){},HS=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 WS},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);Ws(this).dataIndex=e>=0?e:null}),30,!1);function XS(t,e,n){if(sS(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 ZS=2*Math.PI,jS=Math.PI/180;function qS(t,e){return mp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function KS(t,e){var n=qS(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 $S(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.getData(),i=e.mapDimension("value"),r=qS(t,n),o=KS(t,n),a=o.cx,s=o.cy,l=o.r,u=o.r0,h=-t.get("startAngle")*jS,c=t.get("minAngle")*jS,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=ZS,_=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:ZS/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 nM(t){return"center"===t.position}function iM(t){var e,n,i=t.getData(),r=[],o=!1,a=(t.get("minShowLabelAngle")||0)*QS,s=i.getLayout("viewRect"),l=i.getLayout("r"),u=s.width,h=s.x,c=s.y,p=s.height;function d(t){t.ignore=!0}i.each((function(t){var s=i.getItemGraphicEl(t),c=s.shape,p=s.getTextContent(),f=s.getTextGuideLine(),g=i.getItemModel(t),y=g.getModel("label"),v=y.get("position")||g.get(["emphasis","label","position"]),m=y.get("distanceToLabelLine"),x=y.get("alignTo"),_=Er(y.get("edgeDistance"),u),b=y.get("bleedMargin"),w=g.getModel("labelLine"),S=w.get("length");S=Er(S,u);var M=w.get("length2");if(M=Er(M,u),Math.abs(c.endAngle-c.startAngle)0?"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;p0){for(var l=o.getItemLayout(0),u=1;isNaN(l&&l.startAngle)&&u=n.r0}},e.type="pie",e}(mg);function sM(t,e,n){e=Y(e)&&{coordDimensions:e}||A({encodeDefine:t.getEncode()},e);var i=t.getSource(),r=jm(i,e).dimensions,o=new Zm(r,t);return o.initData(i,n),o}var lM=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}(),uM=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 lM(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 sM(this,{coordDimensions:["value"],encodeDefaulter:H(Hp,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}(ag);var hM=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 nx(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}(ag),cM=function(){},pM=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 cM},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}(),fM=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=xS("").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 dM:new Zw,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}(mg),gM=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}(Ip),yM=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}(Ip);R(yM,h_);var vM={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)"]}}},mM=C({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},vM),xM=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}}},vM),_M={category:mM,value:xM,time:C({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},xM),log:k({logBase:10},xM)},bM={value:1,category:1,time:1,log:1};function wM(t,e,i,r){E(bM,(function(o,a){var s=C(C({},_M[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=_p(this),i=n?wp(t):{};C(t,e.getTheme().get(a+"Axis")),C(t,this.getDefaultOption()),t.type=SM(t),n&&bp(t,i,n)},i.prototype.optionUpdated=function(){"category"===this.option.type&&(this.__ordinalMeta=ox.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",SM)}function SM(t){return t.type||(t.data?"category":"value")}var MM=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}(),IM=["x","y"];function TM(t){return"interval"===t.type||"time"===t.type}var CM=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="cartesian2d",e.dimensions=IM,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(TM(t)&&TM(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.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}(MM),DM=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}(G_);function AM(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 kM(t){return"cartesian2d"===t.get("coordinateSystem")}function LM(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 PM=Math.log;function OM(t,e,n){var i=vx.prototype,r=i.getTicks.call(n),o=i.getTicks.call(n,!0),a=r.length-1,s=i.getInterval.call(n),l=e_(t,e),u=l.extent,h=l.fixMin,c=l.fixMax;if("log"===t.type){var p=PM(t.base);u=[PM(u[0])/p,PM(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=ux(f),g=u[1]-f*a;else{t.getTicks().length-1>a&&(f=ux(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 RM=function(){function t(t,e,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=IM,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;sx(l)&&s.get("alignTicks")&&null==s.get("interval")?r.push(a):(n_(l,s),sx(l)&&(e=a))}r.length&&(e||n_((e=r.pop()).scale,e.model),E(r,(function(t){OM(t.scale,t.model,e.scale)})))}}this._updateScale(t,this.model),i(n.x),i(n.y);var r={};E(n.x,(function(t){EM(n,"y",t,r)})),E(n.y,(function(t){EM(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=mp(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 gx?n.count():(i=n.getTicks()).length;var a,s=t.getLabelModel(),l=r_(t),u=1;r>40&&(u=Math.ceil(r/40));for(var h=0;h0&&i>0||n<0&&i<0)}(t)}var VM=Math.PI,BM=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!!FM[t]},t.prototype.add=function(t){FM[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-VM)?(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}(),FM={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 Eu({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=Py(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=ky(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");"auto"===a&&i.handleAutoShown&&(a=i.handleAutoShown("axisTick"));if(!a||r.scale.isBlank())return;for(var s=o.getModel("lineStyle"),l=i.tickDirection*o.get("length"),u=YM(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,HM(s)?t.labelOffset+l*h:0],f=e.get("nameRotate");null!=f&&(f=f*VM/180),HM(s)?o=BM.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;Xr(a-VM/2)?(o=l?"bottom":"top",r="center"):Xr(a-1.5*VM)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*VM&&a>VM/2?l?"left":"right":l?"right":"left");return{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 As({x:d[0],y:d[1],rotation:o.rotation,silent:BM.isLabelSilent(e),style:Yh(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(Nh({el:x,componentModel:e,itemName:r}),x.__fullText=r,x.anid="name",e.get("triggerEvent")){var _=BM.makeAxisEventDataBase(e);_.targetType="axisName",_.name=r,Ws(x).eventData=_}i.add(x),x.updateTransform(),n.add(x),x.decomposeTransform()}}};function GM(t){t&&(t.ignore=!0)}function WM(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 HM(t){return"middle"===t||"center"===t}function YM(t,e,n,i,r){for(var o=[],a=[],s=[],l=0;l=0||t===e}function ZM(t){var e=jM(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=qM(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(s||(d.name=""),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 pc(d,null,this.ecModel);return R(g,h_.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"}},vI.axisLine),axisLabel:mI(vI.axisLabel,!1),axisTick:mI(vI.axisTick,!1),splitLine:mI(vI.splitLine,!0),splitArea:mI(vI.splitArea,!0),indicator:[]},e}(Ip),_I=["axisLine","axisTickLabel","axisName"],bI=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 BM(t.model,{axisName:n,position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})})),(function(t){E(_I,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;AI(this,"zoom","zoomOnMouseWheel",t,{scale:i>0?s:1/s,originX:o,originY:a,isAvailableBehavior:null})}if(n){var l=Math.abs(i);AI(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){TI(this._zr,"globalPan")||AI(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})},e}(Xt);function AI(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r.originY)&&(se(i.event),kI(t,e,n,i,r))}function kI(t,e,n,i,r){r.isAvailableBehavior=W(LI,null,n,i),t.trigger(e,r)}function LI(t,e,n){var i=n[t];return!t||i&&(!X(i)||e.event[i+"Key"])}function PI(t,e,n){var i=t.target;i.x+=e,i.y+=n,i.dirty()}function OI(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 RI,NI={axisPointer:1,tooltip:1,brush:1};function EI(t,e,n){var i=e.getComponentByElement(t.topTarget),r=i&&i.coordinateSystem;return i&&i!==n&&!NI.hasOwnProperty(i.mainType)&&r&&r.model!==n}function zI(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 VI={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"},BI=G(VI),FI={"alignment-baseline":"textBaseline","stop-color":"stopColor"},GI=G(FI),WI=function(){function t(){this._defs={},this._root=null}return t.prototype.parse=function(t,e){e=e||{};var n=zI(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),jI(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=iT(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 Ts({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=RI[s];if(u&&mt(RI,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=HI[s];if(p&&mt(HI,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 ys({style:{text:t.textContent},silent:!0,x:this._textX||0,y:this._textY||0});XI(e,n),jI(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(RI={g:function(t,e){var n=new Cr;return XI(e,n),jI(t,n,this._defsUsePending,!1,!1),n},rect:function(t,e){var n=new Ts;return XI(e,n),jI(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 uu;return XI(e,n),jI(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 Eu;return XI(e,n),jI(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 cu;return XI(e,n),jI(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=ZI(i));var r=new Lu({shape:{points:n||[]},silent:!0});return XI(e,r),jI(t,r,this._defsUsePending,!1,!1),r},polyline:function(t,e){var n,i=t.getAttribute("points");i&&(n=ZI(i));var r=new Ou({shape:{points:n||[]},silent:!0});return XI(e,r),jI(t,r,this._defsUsePending,!1,!1),r},image:function(t,e){var n=new xs;return XI(e,n),jI(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 XI(e,a),jI(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 XI(e,a),jI(t,a,this._defsUsePending,!1,!0),this._textX+=parseFloat(r),this._textY+=parseFloat(o),a},path:function(t,e){var n=au(t.getAttribute("d")||"");return XI(e,n),jI(t,n,this._defsUsePending,!1,!1),n.silent=!0,n}}),t}(),HI={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 Uu(e,n,i,r);return YI(t,o),UI(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 Xu(e,n,i);return YI(t,r),UI(t,r),r}};function YI(t,e){"userSpaceOnUse"===t.getAttribute("gradientUnits")&&(e.global=!0)}function UI(t,e){for(var n=t.firstChild;n;){if(1===n.nodeType&&"stop"===n.nodeName.toLocaleLowerCase()){var i=n.getAttribute("offset"),r=void 0;r=i&&i.indexOf("%")>0?parseInt(i,10)/100:i?parseFloat(i):0;var o={};nT(n,o,o);var a=o.stopColor||n.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:r,color:a})}n=n.nextSibling}}function XI(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),k(e.__inheritedStyle,t.__inheritedStyle))}function ZI(t){for(var e=JI(t),n=[],i=0;i0;o-=2){var a=i[o],s=i[o-1],l=JI(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])*tT);break;case"skewX":Ni(r,[1,0,Math.tan(parseFloat(l[0])*tT),1,0,0],r);break;case"skewY":Ni(r,[1,Math.tan(parseFloat(l[0])*tT),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),nT(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;Wh(e,Hh(i),{labelFetcher:p,labelDataIndex:c,defaultText:n},d);var f=e.getTextContent();if(f&&(MT(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 kT(t,e,n,i,r,o){t.data?t.data.setItemGraphicEl(o,e):Ws(e).eventData={componentType:"geo",componentIndex:r.componentIndex,geoIndex:r.componentIndex,name:n,region:i&&i.option||{}}}function LT(t,e,n,i,r){t.data||Nh({el:e,componentModel:r,itemName:n,itemTooltipOption:i.get("tooltip")})}function PT(t,e,n,i,r){e.highDownSilentOnTouch=!!r.get("selectedMode");var o=i.getModel("emphasis"),a=o.get("focus");return Ol(e,a,o.get("blurScope"),o.get("disabled")),t.isGeo&&function(t,e,n){var i=Ws(t);i.componentMainType=e.mainType,i.componentIndex=e.componentIndex,i.componentHighDownName=n}(e,r,n),a}function OT(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}(ag);function ET(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=mp(b,{width:v,height:m})}this.setViewRect(d.x,d.y,d.width,d.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}R(HT,BT);var XT=new(function(){function t(){this.dimensions=WT}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 HT(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=UT,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 HT(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=UT,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=iC(s),o=rC(o),s&&o;){r=iC(r),a=rC(a),r.hierNode.ancestor=t;var p=s.hierNode.prelim+c-o.hierNode.prelim-u+i(s,o);p>0&&(aC(oC(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&&!iC(r)&&(r.hierNode.thread=s,r.hierNode.modifier+=c-l),o&&!rC(a)&&(a.hierNode.thread=o,a.hierNode.modifier+=u-h,n=t)}return n}(t,r,t.parentNode.hierNode.defaultAncestor||i[0],e)}function tC(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function eC(t){return arguments.length?t:sC}function nC(t,e){return t-=Math.PI/2,{x:e*Math.cos(t),y:e*Math.sin(t)}}function iC(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function rC(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function oC(t,e,n){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:n}function aC(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 sC(t,e){return t.parentNode===e.parentNode?1:2}var lC=function(){this.parentPoint=[],this.childPoints=[]},uC=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 lC},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="ancestor"===D?a.getAncestorsIndices():"descendant"===D?a.getDescendantIndices():null;A&&(Ws(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 Fu({shape:yC(h,c,p,r,r)})),ih(g,{shape:yC(h,c,p,o,a)},t));else if("polyline"===u)if("orthogonal"===h){if(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 AC(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function kC(t,e){return P(AC(t),e)>=0}function LC(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 PC=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 pc(n,this,this.ecModel),r=CC.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}))}));var 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 Uf("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=LC(i,this),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}(ag);function OC(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 RC(t,e){t.eachSeriesByType("tree",(function(t){!function(t,e){var n=function(t,e){return mp(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=eC((function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth}))):(r=n.width,o=n.height,a=eC());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),OC(l,(function(t){y=(t.getLayout().x+d)*f,v=(t.depth-1)*g;var e=nC(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),OC(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),OC(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 NC(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 EC=["treemapZoomToNode","treemapRender","treemapMove"];function zC(t){var e=t.getData().tree,n={};e.eachNode((function(e){for(var i=e;i&&i.depth>1;)i=i.parentNode;var r=td(t.ecModel,i.name||i.dataIndex+"",n);e.setVisual("decal",r)}))}var VC=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};BC(n);var i=t.levels||[],r=this.designatedVisualItemStyle={},o=new pc({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)return;E(t=t||[],(function(t){var e=new pc(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]={});n||(a.color=r.slice());!i&&o&&(a.decal=o.slice());return t}(i,e))||[],(function(t){return new pc(t,o,e)}),this),s=CC.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 Uf("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=LC(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(){zC(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}(ag);function BC(t){var e=0;E(t.children,(function(t){BC(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 FC=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),xp(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,a=e.box,l=a.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=np(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 Lu({shape:{points:GC(f,0,S,y,_===x.length-1,0===_)},style:k(n.getItemStyle(),{lineJoin:"bevel"}),textContent:new As({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),WC(I,t,w),f+=S+8}},t.prototype.remove=function(){this.group.removeAll()},t}();function GC(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 WC(t,e,n){Ws(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&&LC(n,e)}}var HC=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&&pp(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 FC(this.group))).render(t,e,n.node,(function(e){"animating"!==i._state&&(kC(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}(mg);var JC=E,QC=q,tD=-1,eD=function(){function t(e){var n=e.mappingMethod,i=e.type,r=this.option=T(e);this.type=i,this.mappingMethod=n,this._normalizeData=cD[n];var o=t.visualHandlers[i];this.applyVisual=o.applyVisual,this.getColorMapper=o.getColorMapper,this._normalizedToVisual=o._normalizedToVisual[n],"piecewise"===n?(nD(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(JC(e,(function(t,e){n[t]=e})),!Y(i)){var r=[];q(i)?JC(i,(function(t,e){var i=n[e];r[null!=i?i:tD]=t})):r[-1]=i,i=hD(t,r)}for(var o=e.length-1;o>=0;o--)null==i[o]&&(delete n[e[o]],e.pop())}(r):nD(r,!0):(lt("linear"!==n||r.dataExtent),nD(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&&JC(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(!QC(t))return[];var e=[];JC(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 eD(c);return dD(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&&dD(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);gD(t,o,n,i)}}))}else s=yD(u),h.fill=s}}function yD(t){var e=vD(t,"color");if(e){var n=vD(t,"colorAlpha"),i=vD(t,"colorSaturation");return i&&(e=Dn(e,null,null,i)),n&&(e=An(e,n)),e}}function vD(t,e){var n=t[e];if(null!=n&&"none"!==n)return n}function mD(t,e){var n=t.get(e);return Y(n)&&n.length?{name:e,range:n}:null}var xD=Math.max,_D=Math.min,bD=it,wD=E,SD=["itemStyle","borderWidth"],MD=["itemStyle","gapWidth"],ID=["upperLabel","show"],TD=["upperLabel","height"],CD={seriesType:"treemap",reset:function(t,e,n,i){var r=n.getWidth(),o=n.getHeight(),a=t.option,s=mp(t.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()}),l=a.size||[],u=Er(bD(s.width,l[0]),r),h=Er(bD(s.height,l[1]),o),c=i&&i.type,p=DC(i,["treemapZoomToNode","treemapRootToNode"],t),d="treemapRender"===c||"treemapMove"===c?i.rootRect:null,f=t.getViewRoot(),g=AC(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;var l=i*r,u=l*t.option.zoomToNodeRatio;for(;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];return{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?xD(u*i/l,l/(u*r)):1/0}function kD(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),dA=function(){function t(t){this.group=new Cr,this._LineCtor=t||pA}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=fA(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=fA(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 MA(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=jD(t.node1),d=SA(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]}if(h&&"none"!==h){p=jD(t.node2),d=SA(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{if(St(o[0],c[0]),St(o[1],c[1]),Dt(a,o[1],o[0]),Rt(a,a),u&&"none"!==u){p=jD(t.node1);Ct(o[0],o[0],a,p*e)}if(h&&"none"!==h){p=jD(t.node2);Ct(o[1],o[1],a,-p*e)}St(l[0],o[0]),St(l[1],o[1])}}))}function IA(t){return"view"===t.type}var TA=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 Zw,i=new dA,r=this.group;this._controller=new DI(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(IA(r)){var l={x:r.x,y:r.y,scaleX:r.scaleX,scaleY:r.scaleY};this._firstRender?s.attr(l):ih(s,l,t)}MA(t.getGraph(),ZD(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),"adjacency"===r.get(["emphasis","focus"])&&(Ws(n).focus=t.getAdjacentDataIndices())}})),u.graph.eachEdge((function(t){var e=t.getGraphicEl(),n=t.getModel().get(["emphasis","focus"]);e&&"adjacency"===n&&(Ws(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 AA||(e=this._nodesMap[CA(e)]),e){for(var r="out"===n?"outEdges":"in"===n?"inEdges":"edges",o=0;o=0&&n.node2.dataIndex>=0}));for(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 PA(t,e,n,i,r){for(var o=new DA(i),a=0;a "+p)),u++)}var d,f=n.get("coordinateSystem");if("cartesian2d"===f||"polar"===f)d=nx(t,n);else{var g=ud.get(f),y=g&&g.dimensions||[];P(y,"value")<0&&y.concat(["value"]);var v=jm(t,{coordDimensions:y,encodeDefine:n.getEncode()}).dimensions;(d=new Zm(v,n)).initData(t)}var m=new Zm(["value"],n);return m.initData(l,s),r&&r(d,m),mC({mainData:d,struct:o,structAttr:"graph",datas:{node:d,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),o.update(),o}R(AA,LA("hostGraph","data")),R(kA,LA("hostGraph","edgeData"));var OA=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 lM(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){VD(n=this)&&(n.__curvenessList=[],n.__edgeMap={},BD(n));var a=PA(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=pc.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(VD(n)){var r=FD(t,e,n),o=n.__edgeMap,a=o[GD(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),Uf("nameValue",{name:l.join(" > "),value:r.value,noValue:null==r.value})}return ig({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 Zm(["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}(ag),RA={type:"graphRoam",event:"graphRoam",update:"none"};var NA=function(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0},EA=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 NA},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}(fs);function zA(t,e){var n=null==t?"":t+"";return e&&(X(e)?n=e.replace("{value}",n):U(e)&&(n=e(t))),n}var VA=2*Math.PI,BA=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){for(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")?TS:Tu,c=u.get("show"),p=u.getModel("lineStyle"),d=p.get("width"),f=(l-s)%VA||l===s?(l-s)%VA:VA,g=s,y=0;c&&y=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 Eu({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?ky(l,h-a/2,c-s,a,s,null,p):new EA({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")?TS:Tu,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);rh(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");rh(r,{shape:{endAngle:Nr(n,_,b,a)}},t),u.add(r),Hs(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,ih(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");ih(m,{shape:{endAngle:Nr(i,_,b,x)}},t),u.add(m),Hs(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 xs){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,zl(s,e),Ol(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,zl(c,e),Ol(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=ky(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 As({silent:!0}),p[t]=new As({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:Yh(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:Yh(b,{x:S,y:M,text:zA(o,A),width:isNaN(I)?null:I,height:isNaN(T)?null:T,align:"center",verticalAlign:"middle"},{inheritColor:C})}),Jh(D,{normal:b},o,(function(t){return zA(t,A)})),d&&Qh(D,e,a,t,{getFormattedLabel:function(t,e,n,i,r,a){return zA(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}(mg),FA=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 sM(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}(ag);var GA=["itemStyle","opacity"],WA=function(t){function e(e,n){var i=t.call(this)||this,r=i,o=new Ou,a=new As;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(GA);l=null==l?1:l,n||uh(i),i.useStyle(t.getItemVisual(e,"style")),i.style.lineJoin="round",n?(i.setShape({points:a.points}),i.style.opacity=0,rh(i,{style:{opacity:l}},r,e)):ih(i,{style:{opacity:l},shape:{points:a.points}},r,e),zl(i,o),this._updateLabel(t,e),Ol(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;Wh(r,Hh(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},ih(r,{style:{x:s.x,y:s.y}},o,e),r.attr({rotation:s.rotation,originX:s.x,originY:s.y,z2:10}),cb(n,pb(a),{stroke:u})},e}(Lu),HA=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 WA(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){lh(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}(mg),YA=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 lM(W(this.getData,this),W(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.getInitialData=function(t,e){return sM(this,{coordDimensions:["value"],encodeDefaulter:H(Hp,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}(ag);function UA(t,e){t.eachSeriesByType("funnel",(function(t){var n=t.getData(),i=n.mapDimension("value"),r=t.get("sort"),o=function(t,e){return mp(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&&rk(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 rk(t,e){var n=t._model;return n.get("axisExpandable")&&n.get("axisExpandTriggerOn")===e}var ok=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}(Ip),ak=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}(G_);function sk(t,e,n,i,r,o){t=t||0;var a=n[1]-n[0];if(null!=r&&(r=uk(r,[0,a])),null!=o&&(o=Math.max(o,null!=r?r:0)),"all"===i){var s=Math.abs(e[1]-e[0]);s=uk(s,[0,a]),r=o=uk(s,[r,o]),i=0}e[0]=uk(e[0],n),e[1]=uk(e[1],n);var l=lk(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]=uk(e[i],c),u=lk(e,i),null!=r&&(u.sign!==l.sign||u.spano&&(e[1-i]=e[i]+u.sign*o),e}function lk(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 uk(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}var hk=E,ck=Math.min,pk=Math.max,dk=Math.floor,fk=Math.ceil,gk=zr,yk=Math.PI,vk=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;hk(i,(function(t,n){var i=r[n],o=e.getComponent("parallelAxis",i),a=this._axesMap.set(t,new ak(t,i_(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();hk(this.dimensions,(function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(i,i.mapDimension(t)),n_(e.scale,e.model)}),this)}}),this)},t.prototype.resize=function(t,e){this._rect=mp(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=mk(e.get("axisExpandWidth"),l),c=mk(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=mk(d[1]-d[0],l),d[1]=d[0]+t):(t=mk(h*(c-1),l),(d=[h*(e.get("axisExpandCenter")||dk(u/2))-t/2])[1]=d[0]+t);var f=(s-t)/(u-c);f<3&&(f=0);var g=[dk(gk(d[0]/h,1))+1,fk(gk(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])})),hk(n,(function(e,n){var o=(i.axisExpandable?_k:xk)(n,i),a={horizontal:{x:o.position,y:i.axisLength},vertical:{x:0,y:o.position}},s={horizontal:yk/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)?sk(a,i,o,"all"):l="none";else{var p=i[1]-i[0];(i=[pk(0,o[1]*s/p-p/2)])[1]=ck(o[1],i[0]+p),i[0]=i[1]-p}return{axisExpandWindow:i,behavior:l}},t}();function mk(t,e){return ck(pk(t,e[0]),e[1])}function xk(t,e){var n=e.layoutLength/(e.axisCount-1);return{position:n*t,axisNameAvailableWidth:n,axisLabelShow:!0}}function _k(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&&Gk(t);var l=T(s);l.brushType=rL(l.brushType,a),l.panelId=a===Sk?null:a.panelId,o=t._creatingCover=Ok(t,l),t._covers.push(o)}if(o){var u=sL[rL(t._brushType,a)];o.__brushOption.range=u.getCreatingRange(tL(t,o,t._track)),i&&(Rk(t,o),u.updateCommon(t,o)),Nk(t,o),r={isEnd:i}}}else i&&"single"===s.brushMode&&s.removeOnClick&&Bk(t,e,n)&&Gk(t)&&(r={isEnd:i,removeOnClick:!0});return r}function rL(t,e){return"auto"===t?e.defaultBrushType:t}var oL={mousedown:function(t){if(this._dragging)aL(this,t);else if(!t.target||!t.target.draggable){eL(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=Bk(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=Bk(t,e,n);if(!t._dragging)for(var a=0;a=0&&(o[r[a].depth]=new pc(r[a],this,e));if(i&&n)return PA(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 Uf("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 Uf("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}(ag);function wL(t,e){t.eachSeriesByType("sankey",(function(t){var n=t.get("nodeWidth"),i=t.get("nodeGap"),r=function(t,e){return mp(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=PL(t.outEdges,LL),n=PL(t.inEdges,LL),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--)IL(s,l*=.99,a),ML(s,r,n,i,a),OL(s,l,a),ML(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 SL(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return null!=e.depth&&e.depth>=0}function ML(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){a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0),u=a;for(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 IL(t,e,n){E(t.slice().reverse(),(function(t){E(t,(function(t){if(t.outEdges.length){var i=PL(t.outEdges,TL,n)/PL(t.outEdges,LL);if(isNaN(i)){var r=t.outEdges.length;i=r?PL(t.outEdges,CL,n)/r:0}if("vertical"===n){var o=t.getLayout().x+(i-kL(t,n))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(i-kL(t,n))*e;t.setLayout({y:a},!0)}}}))}))}function TL(t,e){return kL(t.node2,e)*t.getValue()}function CL(t,e){return kL(t.node2,e)}function DL(t,e){return kL(t.node1,e)*t.getValue()}function AL(t,e){return kL(t.node1,e)}function kL(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function LL(t){return t.getValue()}function PL(t,e,n){for(var i=0,r=t.length,o=-1;++oi&&(i=e)})),E(e,(function(e){var r=new eD({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 NL=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:Tm(d),ordinalMeta:n,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:Tm(f),dimsDef:v.slice()}];return sM(this,{coordDimensions:m,dimensionsCount:v.length+1,encodeDefaulter:H(Wp,m,this)})},t.prototype.getBaseAxis=function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis},t}(),EL=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}(ag);R(EL,NL,!0);var zL=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=FL(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?(uh(n),GL(s,n,i,t)):n=FL(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}(mg),VL=function(){},BL=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 VL},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}]}};var ZL=["color","borderColor"],jL=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){zh(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&&JL(s,a))return;var l=$L(a,n,!0);rh(l,{shape:{points:a.ends}},t,n),QL(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&&JL(s,h)?i.remove(u):(u?(ih(u,{shape:{points:h.ends}},t,a),uh(u)):u=$L(h),QL(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(),iP(t,this.group);var e=t.get("clip",!0)?aS(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=$L(i.getItemLayout(n));QL(o,i,n,r),o.incremental=!0,this.group.add(o),this._progressiveEls.push(o)}},e.prototype._incrementalRenderLarge=function(t,e){iP(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}(mg),qL=function(){},KL=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 qL},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}(fs);function $L(t,e,n){var i=t.ends;return new KL({shape:{points:n?tP(i,t):i},z2:100})}function JL(t,e){for(var n=!0,i=0;i0?"borderColor":"borderColor0"])||n.get(["itemStyle",t>0?"color":"color0"]),o=n.getModel("itemStyle").getItemStyle(ZL);e.useStyle(o),e.style.fill=null,e.style.stroke=r}var oP=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}(ag);function aP(t){t&&Y(t.series)&&E(t.series,(function(t){q(t)&&"k"===t.type&&(t.type="candlestick")}))}R(oP,NL,!0);var sP=["itemStyle","borderColor"],lP=["itemStyle","borderColor0"],uP=["itemStyle","color"],hP=["itemStyle","color0"],cP={seriesType:"candlestick",plan:gg(),performRawSeries:!0,reset:function(t,e){function n(t,e){return e.get(t>0?uP:hP)}function i(t,e){return e.get(t>0?sP:lP)}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)}}}}},pP={seriesType:"candlestick",plan:gg(),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){var i,r,a=_x(4*t.count),c=0,p=[],d=[],f=n.getStore();for(;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++]=dP(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){var r,a=n.getStore();for(;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:dP(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]=Sh(r[0]+i/2,1,!1),o[0]=Sh(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]=Sh(t[0],1),t}}}}};function dP(t,e,n,i,r){return n>i?-1:n0?t.get(r,e-1)<=i?1:-1:1}function fP(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 gP=function(t){function e(e,n){var i=t.call(this)||this,r=new Ww(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}(mP),bP=function(){this.polyline=!1,this.curveness=0,this.segs=[]},wP=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 bP},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($a(u,h,(u+p)/2-(h-d)*r,(h+d)/2-(p-u)*r,p,d,o,t,e))return a}else if(qa(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}(),MP={seriesType:"lines",plan:gg(),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)&&aS(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=MP.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 SP:new dA(r?i?_P:xP:i?mP:pA),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}(mg),TP="undefined"==typeof Uint32Array?Array:Uint32Array,CP="undefined"==typeof Float64Array?Array:Float64Array;function DP(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 AP=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||[],DP(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(DP(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),n=e.option instanceof Array?e.option:e.getShallow("coords");return n},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}(ag);function kP(t){return t instanceof Array||(t=[t,t]),t}var LP={seriesType:"lines",reset:function(t){var e=kP(t.get("symbol")),n=kP(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=kP(n.getShallow("symbol",!0)),r=kP(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}}};var PP=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 OP(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var RP=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()):OP(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&&(OP(r)?this.render(e,n,i):(this._progressiveEls=[],this._renderOnCartesianAndCalendar(e,i,t.start,t.end,!0)))},e.prototype.eachRendered=function(t){zh(this._progressiveEls||this.group,t)},e.prototype._renderOnCartesianAndCalendar=function(t,e,n,i,r){var o,a,s,l,u=t.coordinateSystem;if(sS(u,"cartesian2d")){var h=u.getAxis("x"),c=u.getAxis("y");0,o=h.getBandWidth(),a=c.getBandWidth(),s=h.scale.getExtent(),l=c.scale.getExtent()}for(var p=this.group,d=t.getData(),f=t.getModel(["emphasis","itemStyle"]).getItemStyle(),g=t.getModel(["blur","itemStyle"]).getItemStyle(),y=t.getModel(["select","itemStyle"]).getItemStyle(),v=t.get(["itemStyle","borderRadius"]),m=Hh(t),x=t.getModel("emphasis"),_=x.get("focus"),b=x.get("blurScope"),w=x.get("disabled"),S=sS(u,"cartesian2d")?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],M=n;Ms[1]||Dl[1])continue;var A=u.dataToPoint([C,D]);I=new Ts({shape:{x:Math.floor(Math.round(A[0])-o/2),y:Math.floor(Math.round(A[1])-a/2),width:Math.ceil(o),height:Math.ceil(a)},style:T})}else{if(isNaN(d.get(S[1],M)))continue;I=new Ts({z2:1,shape:u.dataToRect([d.get(S[0],M)]).contentShape,style:T})}if(d.hasItemOption){var k=d.getItemModel(M),L=k.getModel("emphasis");f=L.getModel("itemStyle").getItemStyle(),g=k.getModel(["blur","itemStyle"]).getItemStyle(),y=k.getModel(["select","itemStyle"]).getItemStyle(),v=k.get(["itemStyle","borderRadius"]),_=L.get("focus"),b=L.get("blurScope"),w=L.get("disabled"),m=Hh(k)}I.shape.r=v;var P=t.getRawValue(M),O="-";P&&null!=P[2]&&(O=P[2]+""),Wh(I,m,{labelFetcher:t,labelDataIndex:M,defaultOpacity:T.opacity,defaultText:O}),I.ensureState("emphasis").style=f,I.ensureState("blur").style=g,I.ensureState("select").style=y,Ol(I,_,b,w),I.incremental=r,r&&(I.states.emphasis.hoverLayer=!0),p.add(I),d.setItemGraphicEl(M,I),this._progressiveEls&&this._progressiveEls.push(I)}},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 PP;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];h[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(EP)||0;o&&(VP.attr({scaleX:e[0],scaleY:e[1],rotation:n}),VP.updateTransform(),o/=VP.getLineScale(),o*=e[i.valueDim.index]);r.valueLineWidth=o||0}(n,c.symbolScale,l,i,c);var p=c.symbolSize,d=Py(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:nO((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?nO((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 GP(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function WP(t){var e=t.symbolPatternSize,n=ky(t.symbolType,-e/2,-e/2,e,e);return n.attr({culling:!0}),"image"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function HP(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(QP(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 YP(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;o?tO(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=WP(n),r.add(o),tO(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 UP(t,e,n){var i=A({},e.barRectShape),r=t.__pictorialBarRect;r?tO(r,null,{shape:i},e,n):((r=t.__pictorialBarRect=new Ts({z2:2,shape:i,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}})).disableMorphing=!0,t.add(r))}function XP(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)ih(r,{shape:o},s,l);else{o[a.wh]=0,r=new Ts({shape:o}),t.__pictorialBundle.setClipPath(r),t.__pictorialClipPath=r;var u={};u[a.wh]=n.clipShape[a.wh],Vh[i?"updateProps":"initProps"](r,{shape:u},s,l)}}}function ZP(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParams=jP,n.isAnimationEnabled=qP,n}function jP(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function qP(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function KP(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?HP(r,e,n):YP(r,0,n),UP(r,n,i),XP(r,e,n,i),r.__pictorialShapeStr=JP(t,n),r.__pictorialSymbolMeta=n,r}function $P(t,e,n,i){var r=i.__pictorialBarRect;r&&r.removeTextContent();var o=[];QP(i,(function(t){o.push(t)})),i.__pictorialMainPath&&o.push(i.__pictorialMainPath),i.__pictorialClipPath&&(n=null),E(o,(function(t){ah(t,{scaleX:0,scaleY:0},n,e,(function(){i.parent&&i.parent.remove(i)}))})),t.setItemGraphicEl(e,null)}function JP(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function QP(t,e,n){E(t.__pictorialBundle.children(),(function(i){i!==t.__pictorialBarRect&&e.call(n,i)}))}function tO(t,e,n,i,r,o){e&&t.attr(e),i.symbolClip&&!r?n&&t.attr(n):n&&Vh[r?"updateProps":"initProps"](t,n,i.animationModel,i.dataIndex,o)}function eO(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");QP(t,(function(t){if(t instanceof xs){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)];Wh(t.__pictorialBarRect,Hh(r),{labelFetcher:e.seriesModel,labelDataIndex:i,defaultText:Fw(e.seriesModel.getData(),i),inheritColor:n.style.fill,defaultOpacity:n.style.opacity,defaultOutsidePosition:d}),Ol(t,h,c,o.get("disabled"))}function nO(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var iO=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=gc(SS.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}(SS);var rO=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 Sm(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}(Tu),uO="sunburstRootToNode",hO="sunburstHighlight";var cO=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){if(0===i.length&&0===r.length)return;function s(t){return t.getId()}function h(s,h){!function(i,r){u||!i||i.getValue()||(i=null);if(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){if(!t)return;t.piece&&(l.remove(t.piece),t.piece=null)}(r);else if(i){var s=new lO(i,t,e,n);l.add(s),o.setItemGraphicEl(i.dataIndex,s)}}(null==s?null:i[s],null==h?null:r[h])}new Sm(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 lO(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");if(a)pp(a,o.get("target",!0)||"_blank")}n=!0}}))}))},e.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:uO,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}(mg),pO=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};dO(n);var i=this._levelModels=z(t.levels||[],(function(t){return new pc(t,this,e)}),this),r=CC.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=LC(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(){zC(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}(ag);function dO(t){var e=0;E(t.children,(function(t){dO(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 fO=Math.PI/180;function gO(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")*fO,p=t.get("minAngle")*fO,d=t.getData().tree.root,f=t.getViewRoot(),g=f.depth,y=t.get("sort");null!=y&&yO(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 mO={color:"fill",borderColor:"stroke"},xO={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},_O=So(),bO=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 nx(null,this)},e.prototype.getDataParams=function(e,n,i){var r=t.prototype.getDataParams.call(this,e,n);return i&&(r.info=_O(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}(ag);function wO(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 SO(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 MO(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 IO(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 TO(t,e,n,i){return t&&(t.legacy||!1!==t.legacy&&!n&&!i&&"tspan"!==e&&("text"===e||mt(t,"text")))}function CO(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 DO(o,t),E(o.rich,(function(t){DO(t,t)})),{textConfig:i,textContent:r}}function DO(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 AO(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";kO(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){kO(t,t)})),i}function kO(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 LO={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},PO=G(LO),OO=(V(Ki,(function(t,e){return t[e]=1,t}),{}),Ki.join(", "),["","style","shape","extra"]),RO=So();function NO(t,e,n,i,r){var o=t+"Animation",a=eh(t,i,r)||{},s=RO(e).userDuring;return a.duration>0&&(a.during=s?W(WO,{el:e,userDuring:s}):null,a.setToFinal=!0,a.scope=t),A(a,n[o]),a}function EO(t,e,n,i){var r=(i=i||{}).dataIndex,o=i.isInit,a=i.clearStyle,s=n.isAnimationEnabled(),l=RO(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=NO("update",t,e,i,n);o.duration>0&&t.animateFrom(r,o)}}(t,e,r||0,n,h);zO(t,e),u?t.dirty():t.markRedraw()}function zO(t,e){for(var n=RO(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(IO,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 aR(t){return t instanceof fs}function sR(t){return t instanceof da}var lR=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=dR(t,o,e,n);r||a.removeAll(),o.diff(r).add((function(e){gR(n,null,e,s(e,i),t,a,o)})).remove((function(e){var n=r.getItemGraphicEl(e);VO(n,_O(n).option,t)})).update((function(e,l){var u=r.getItemGraphicEl(l);gR(n,u,e,s(e,i),t,a,o)})).execute();var l=t.get("clip",!0)?aS(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=dR(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){0;null==i&&(i=s);var r=m(i,KO).getItemStyle(),o=x(i,KO),a=Yh(o,null,null,!0,!0);a.text=o.getShallow("show")?ot(t.getFormattedLabel(i,KO),t.getFormattedLabel(i,$O),Fw(e,i)):null;var l=Uh(o,null,!0);return b(n,r),r=AO(r,a,l),n&&_(r,n),r.legacy=!0,r},visual:function(t,n){if(null==n&&(n=s),mt(mO,t)){var i=e.getItemVisual(n,"style");return i?i[mO[t]]:null}if(mt(xO,t))return e.getItemVisual(n,t)},barLayout:function(t){if("cartesian2d"===o.type){return function(t){var e=[],n=t.axis,i="axis0";if("category"===n.type){for(var r=n.getBandWidth(),o=0;o=c;p--){VO(e.childAt(p),_O(e).option,r)}}(t,c,n,i,r),a>=0?o.replaceAt(c,a):o.add(c),c}function vR(t,e,n){var i,r=_O(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")))&&MR(a)!==r.customPathData||"image"===o&&mt(s,"image")&&s.image!==r.customImagePath}function mR(t,e,n){var i=e?xR(t,e):t,r=e?_R(t,i,KO):t.style,o=t.type,a=i?i.textConfig:null,s=t.textContent,l=s?e?xR(s,e):s:null;if(r&&(n.isLegacy||TO(r,o,!!a,!!l))){n.isLegacy=!0;var u=CO(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 xR(t,e){return e?t?t[e]:null:t}function _R(t,e,n){var i=e&&e.style;return null==i&&n===KO&&t&&(i=t.styleEmphasis),i}function bR(t,e){var n=t&&t.name;return null!=n?n:"e\0\0"+e}function wR(t,e){var n=this.context,i=null!=t?n.newChildren[t]:null,r=null!=e?n.oldChildren[e]:null;yR(n.api,r,n.dataIndex,i,n.seriesModel,n.group)}function SR(t){var e=this.context,n=e.oldChildren[t];VO(n,_O(n).option,e.seriesModel)}function MR(t){return t&&(t.pathData||t.d)}var IR=So(),TR=T,CR=W,DR=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(AR,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);OR(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=jM(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=IR(t).pointerEl=new Vh[r.type](TR(e.pointer));t.add(o)}},t.prototype.createLabelEl=function(t,e,n,i){if(e.label){var r=IR(t).labelEl=new As(TR(e.label));t.add(r),LR(r,i)}},t.prototype.updatePointerEl=function(t,e,n){var i=IR(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=IR(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{x:e.label.x,y:e.label.y}),LR(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=Lh(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){se(t.event)},onmousedown:CR(this._onHandleDragMove,this,0,0),drift:CR(this._onHandleDragMove,this),ondragend:CR(this._onHandleDragEnd,this)}),i.add(r)),OR(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,Dg(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},t.prototype._moveHandleToValue=function(t,e){AR(this._axisPointerModel,!e&&this._moveAnimation,this._handle,PR(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(PR(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(PR(i)),IR(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),Ag(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 AR(t,e,n,i){kR(IR(n).lastProp,i)||(IR(n).lastProp=i,e?ih(n,i,t):(n.stopAnimation(),n.attr(i)))}function kR(t,e){if(q(t)&&q(e)){var n=!0;return E(e,(function(e,i){n=n&&kR(t[i],e)})),!!n}return t===e}function LR(t,e){t[e.get(["label","show"])?"show":"hide"]()}function PR(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}function OR(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 RR(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 NR(t,e,n,i,r){var o=ER(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=np(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:Yh(a,{text:o,font:l,fill:a.getTextColor(),padding:s,backgroundColor:g}),z2:10}}function ER(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:o_(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 zR(t,e,n){var i=[1,0,0,1,0,0];return zi(i,i,n.rotation),Ei(i,i,n.position),Ih([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}function VR(t,e,n,i,r,o){var a=BM.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get(["label","margin"]),NR(e,i,r,o,{position:zR(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}function BR(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}function FR(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}function GR(t,e,n,i,r,o){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle:o,clockwise:!0}}var WR=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=HR(a,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=RR(i),c=YR[s](o,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}VR(e,t,AM(a.model,n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=AM(e.axis.grid.model,e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=zR(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=HR(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];c[l]=u[l];return{x:u[0],y:u[1],rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}},e}(DR);function HR(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var YR={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:BR([e,n[0]],[e,n[1]],UR(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),r=n[1]-n[0];return{type:"Rect",shape:FR([e-i/2,n[0]],[i,r],UR(t))}}};function UR(t){return"x"===t.dim?0:1}var XR=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}(Ip),ZR=So(),jR=E;function qR(t,e,n){if(!r.node){var i=e.getZr();ZR(i).records||(ZR(i).records={}),function(t,e){if(ZR(t).initialized)return;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);jR(ZR(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)}))}ZR(t).initialized=!0,n("click",H($R,"click")),n("mousemove",H($R,"mousemove")),n("globalout",KR)}(i,e),(ZR(i).records[t]||(ZR(i).records[t]={})).handler=n}}function KR(t,e,n){t.handler("leave",null,n)}function $R(t,e,n,i){e.handler(t,n,i)}function JR(t,e){if(!r.node){var n=e.getZr();(ZR(n).records||{})[t]&&(ZR(n).records[t]=null)}}var QR=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";qR("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){JR("axisPointer",e)},e.prototype.dispose=function(t,e){JR("axisPointer",e)},e.type="axisPointer",e}(fg);function tN(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 eN=So();function nN(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){sN(r)&&(r=tN({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=sN(r),u=o.axesInfo,h=s.axesInfo,c="leave"===i||sN(r),p={},d={},f={list:[],map:{}},g={showPointer:H(rN,d),showTooltip:H(oN,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&&iN(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,aN(e),aN(t)))),y[t.key]=o}}))})),E(y,(function(t,e){iN(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(sN(e)||!t.list.length)return void i({type:"hideTip"});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})}(f,r,t,a),function(t,e,n){var i=n.getZr(),r="axisPointerLastHighlights",o=eN(i)[r]||{},a=eN(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 iN(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 rN(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function oN(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=KM(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 aN(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 sN(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function lN(t){JM.registerAxisPointerClass("CartesianAxisPointer",WR),t.registerComponentModel(XR),t.registerComponentView(QR),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=UM(t,e)})),t.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},nN)}var uN=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;"angle"===o.dim&&(this.animationThreshold=Math.PI/18);var a=o.polar,s=a.getOtherAxis(o).getExtent(),l=o.dataToCoord(e),u=i.get("type");if(u&&"none"!==u){var h=RR(i),c=hN[u](o,a,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}var p=function(t,e,n,i,r){var o=e.axis,a=o.dataToCoord(t),s=i.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=i.getRadiusAxis().getExtent();if("radius"===o.dim){var p=[1,0,0,1,0,0];zi(p,p,s),Ei(p,p,[i.cx,i.cy]),l=Ih([a,-r],p);var d=e.getModel("axisLabel").get("rotate")||0,f=BM.innerTextLayout(s,d*Math.PI/180,-1);u=f.textAlign,h=f.textVerticalAlign}else{var g=c[1];l=i.coordToPoint([g+r,a]);var y=i.cx,v=i.cy;u=Math.abs(l[0]-y)/g<.3?"center":l[0]>y?"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"]));NR(t,n,i,r,p)},e}(DR);var hN={line:function(t,e,n,i){return"angle"===t.dim?{type:"Line",shape:BR(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:GR(e.cx,e.cy,i[0],i[1],(-n-r/2)*o,(r/2-n)*o)}:{type:"Sector",shape:GR(e.cx,e.cy,n-r/2,n+r/2,0,2*Math.PI)}}},cN=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}(Ip),pN=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}(Ip);R(pN,h_);var dN=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}(pN),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="radiusAxis",e}(pN),gN=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}(G_);gN.prototype.dataToRadius=G_.prototype.dataToCoord,gN.prototype.radiusToData=G_.prototype.coordToData;var yN=So(),vN=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=yN(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}(G_);vN.prototype.dataToAngle=G_.prototype.dataToCoord,vN.prototype.angleToData=G_.prototype.coordToData;var mN=["radius","angle"],xN=function(){function t(t){this.dimensions=mN,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new gN,this._angleAxis=new vN,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 _N(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return _N(e)===this?this.pointToData(n):null},t}();function _N(t){var e=t.seriesModel,n=t.polarModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}function bN(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(u_(e,"radius"),(function(t){r.scale.unionExtentFromData(e,t)})),E(u_(e,"angle"),(function(t){i.scale.unionExtentFromData(e,t)}))}})),n_(i.scale,i.model),n_(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 wN(t,e){if(t.type=e.get("type"),t.scale=i_(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 SN={dimensions:mN,create:function(t,e){var n=[];return t.eachComponent("polar",(function(t,i){var r=new xN(i+"");r.update=bN;var o=r.getRadiusAxis(),a=r.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");wN(o,s),wN(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];0,t.coordinateSystem=e.coordinateSystem}})),n}},MN=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function IN(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 TN(t){return t.getRadiusAxis().inverse?0:1}function CN(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 DN=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}));CN(s),CN(o),E(MN,(function(e){!t.get([e,"show"])||n.scale.isBlank()&&"axisLine"!==e||AN[e](this.group,t,i,o,a,r,s)}),this)}},e.type="angleAxis",e}(JM),AN={axisLine:function(t,e,n,i,r,o){var a,s=e.getModel(["axisLine","lineStyle"]),l=TN(n),u=l?0:1;(a=0===o[u]?new uu({shape:{cx:n.cx,cy:n.cy,r:o[l]},style:s.getLineStyle(),z2:1,silent:!0}):new Du({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[TN(n)],u=z(i,(function(t){return new Eu({shape:IN(n,[l,l+s],t.coord)})}));t.add(bh(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[TN(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 pc(m.textStyle,l,l.ecModel))}var x=new As({silent:BM.isLabelSilent(e),style:Yh(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 _=BM.makeAxisEventDataBase(e);_.targetType="axisLabel",_.value=i.rawLabel,Ws(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 zN={startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:0}},VN={splitNumber:5},BN=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}(fg);function FN(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 GN=["axisLine","axisTickLabel","axisName"],WN=["splitArea","splitLine"],HN=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=FN(e),l=new BM(e,s);E(GN,l.add,l),o.add(this._axisGroup),o.add(l.getGroup()),E(WN,(function(t){e.get([t,"show"])&&YN[t](this,this.group,this._axisGroup,e)}),this),Dh(a,this._axisGroup,e),t.prototype.render.call(this,e,n,i,r)},e.prototype.remove=function(){eI(this)},e.type="singleAxis",e}(JM),YN={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 qN(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return qN(e)===this?this.pointToData(n):null},t}();function qN(t){var e=t.seriesModel,n=t.singleAxisModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}var KN={create:function(t,e){var n=[];return t.eachComponent("singleAxis",(function(i,r){var o=new jN(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:ZN},$N=["x","y"],JN=["width","height"],QN=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=nE(a,1-eE(o)),l=a.dataToPoint(e)[0],u=i.get("type");if(u&&"none"!==u){var h=RR(i),c=tE[u](o,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}VR(e,t,FN(n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=FN(e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=zR(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=eE(r),s=nE(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=nE(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}(DR),tE={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:BR([e,n[0]],[e,n[1]],eE(t))}},shadow:function(t,e,n){var i=t.getBandWidth(),r=n[1]-n[0];return{type:"Rect",shape:FR([e-i/2,n[0]],[i,r],eE(t))}}};function eE(t){return t.isHorizontal()?0:1}function nE(t,e){var n=t.getRect();return[n[$N[e]],n[$N[e]]+n[JN[e]]]}var iE=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}(fg);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.prototype.init=function(e,n,i){var r=wp(e);t.prototype.init.apply(this,arguments),oE(e,r)},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),oE(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}(Ip);function oE(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[gp[e][0]]||null!=t[gp[e][1]]&&null!=t[gp[e][2]]}(e,t)&&(n[t]="auto"),null!=n[t]&&"auto"!==n[t]}));bp(t,e,{type:"box",ignoreSize:r})}var aE=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 Ts({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 Ou({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+"}",i?op(t):t)})),n):U(t)?t(e):e.nameMap;var n,i},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 As({z2:30,style:Yh(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=Sc(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/sE)-Math.floor(n[0].time/sE)+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 uE(t){var e=t.calendarModel,n=t.seriesModel;return e?e.coordinateSystem:n?n.coordinateSystem:null}function hE(t,e){var n;return E(e,(function(e){null!=t[e]&&"auto"!==t[e]&&(n=!0)})),n}var cE=["transition","enterFrom","leaveTo"],pE=cE.concat(["enterAnimation","updateAnimation","leaveAnimation"]);function dE(t,e,n){if(n&&(!t[n]&&e[n]&&(t[n]={}),t=t[n],e=e[n]),t&&e)for(var i=n?cE:pE,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=yE(g),{}),v=xp(f,p,g===i?{width:o,height:a}:{width:c.width,height:c.height},null,{hv:p.hv,boundingMode:p.bounding},y);if(!yE(f).isNew&&v){for(var m=p.transition,x={},_=0;_=0)?x[b]=w:f[b]=w}ih(f,x,t,0)}else f.attr(y)}}},e.prototype._clear=function(){var t=this,e=this._elMap;e.each((function(n){_E(n,yE(n).option,e,t._lastGraphicModel)})),this._elMap=ft()},e.prototype.dispose=function(){this._clear()},e.type="graphic",e}(fg);function mE(t){var e=mt(gE,t)?gE[t]:vh(t);var n=new e({});return yE(n).type=t,n}function xE(t,e,n,i){var r=mE(n);return e.add(r),i.set(t,r),yE(r).id=t,yE(r).isNew=!0,r}function _E(t,e,n,i){t&&t.parent&&("group"===t.type&&t.traverse((function(t){_E(t,e,n,i)})),VO(t,e,i),n.removeKey(yE(t).id))}function bE(t,e,n,i){if(!t.isGroup){var r=t;r.cursor=rt(e.cursor,da.prototype.cursor),r.z=rt(e.z,n||0),r.zlevel=rt(e.zlevel,i||0);var o=e.z2;null!=o&&(r.z2=o||0)}E(G(e),(function(n){var i=e[n];0===n.indexOf("on")&&U(i)&&(t[n]=i)})),t.draggable=e.draggable,null!=e.name&&(t.name=e.name),null!=e.id&&(t.id=e.id)}var wE=["x","y","radius","angle","single"],SE=["cartesian2d","polar","singleAxis"];function ME(t){return t+"Axis"}function IE(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}function TE(t){var e=t.ecModel,n={infoList:[],infoMap:ft()};return t.eachTargetAxis((function(t,i){var r=e.getComponent(ME(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 CE=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}(),DE=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=AE(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this._doInit(i)},e.prototype.mergeOption=function(t){var e=AE(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(wE,(function(n){var i=this.getReferringComponents(ME(n),Do);if(i.specified){e=!0;var r=new CE;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)}i&&o(n.findComponents({mainType:"singleAxis",filter:function(t){return t.get("orient",!0)===e}}),"single");function o(e,n){var r=e[0];if(r){var o=new CE;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&&E(wE,(function(e){if(i){var r=n.findComponents({mainType:ME(e),filter:function(t){return"category"===t.get("type",!0)}});if(r[0]){var o=new CE;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(ME(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(ME(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=ME(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=[];OE(["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})),RE(s),RE(a);var l=this._minMaxSpan;function u(t,e,n,r,o){var a=o?"Span":"ValueSpan";sk(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];OE(n,(function(t){!function(t,e,n){e&&E(u_(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=Qx(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&&OE(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 OE(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)}}));OE(i,(function(t){e.setApproximateExtent(o,t)}))}}))}},t.prototype._updateMinMaxSpan=function(){var t=this._minMaxSpan={},e=this._dataZoomModel,n=this._dataExtent;OE(["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}();var EE={getTargetSeries:function(t){function e(e){t.eachComponent("dataZoom",(function(n){n.eachTargetAxis((function(i,r){var o=t.getComponent(ME(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 NE(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]})}}))}};var zE=!1;function VE(t){zE||(zE=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,EE),function(t){t.registerAction("dataZoom",(function(t,e){E(IE(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 BE(t){t.registerComponentModel(kE),t.registerComponentView(PE),VE(t)}var FE=function(){},GE={};function WE(t,e){GE[t]=e}function HE(t){return GE[t]}var YE=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=HE(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}(Ip);function UE(t,e){var n=np(e.get("padding")),i=e.getItemStyle(["color","opacity"]);return i.fill=e.get("backgroundColor"),t=new Ts({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 XE=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=t.get("feature")||{},s=this._features||(this._features={}),l=[];E(a,(function(t,e){l.push(e)})),new Sm(this._featureNames||[],l).add(u).update(u).remove(H(u,null)).execute(),this._featureNames=l,function(t,e,n){var i=e.getBoxLayoutParams(),r=e.get("padding"),o={width:n.getWidth(),height:n.getHeight()},a=mp(i,o,r);vp(e.get("orient"),t,e.get("itemGap"),a.width,a.height),xp(t,i,o,r)}(r,t,n),r.add(UE(r.getBoundingRect(),t)),r.eachChild((function(t){var e=t.__title,i=t.ensureState("emphasis"),a=i.textConfig||(i.textConfig={}),s=t.getTextContent(),l=s&&s.states.emphasis;if(l&&!U(l)&&e){var u=l.style||(l.style={}),h=cr(e,As.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+8;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 u(u,h){var c,p=l[u],d=l[h],f=a[p],g=new pc(f,t,t.ecModel);if(i&&null!=i.newTitle&&i.featureName===p&&(f.title=i.newTitle),p&&!d){if(function(t){return 0===t.indexOf("my")}(p))c={onclick:g.option.onclick,featureName:p};else{var y=HE(p);if(!y)return;c=new y}s[p]=c}else if(!(c=s[d]))return;c.uid=fc("toolbox-feature"),c.model=g,c.ecModel=e,c.api=n;var v=c instanceof FE;p||!d?!g.get("show")||v&&c.unusable?v&&c.remove&&c.remove(e,n):(!function(i,a,s){var l,u,h=i.getModel("iconStyle"),c=i.getModel(["emphasis","iconStyle"]),p=a instanceof FE&&a.getIcons?a.getIcons():i.get("icon"),d=i.get("title")||{};X(p)?(l={})[s]=p:l=p;X(d)?(u={})[s]=d:u=d;var f=i.iconPaths={};E(l,(function(s,l){var p=Lh(s,{},{x:-o/2,y:-o/2,width:o,height:o});p.setStyle(h.getItemStyle()),p.ensureState("emphasis").style=c.getItemStyle();var d=new As({style:{text:u[l],align:c.get("textAlign"),borderRadius:c.get("textBorderRadius"),padding:c.get("textPadding"),fill:null},ignore:!0});p.setTextContent(d),Nh({el:p,componentModel:t,itemName:l,formatterParamsExtra:{title:u[l]}}),p.__title=u[l],p.on("mouseover",(function(){var e=c.getItemStyle(),n="vertical"===t.get("orient")?null==t.get("right")?"right":"left":null==t.get("bottom")?"bottom":"top";d.setStyle({fill:c.get("textFill")||e.fill||e.stroke||"#000",backgroundColor:c.get("textBackgroundColor")}),p.setTextConfig({position:c.get("textPosition")||n}),d.ignore=!t.get("showTitle"),xl(this)})).on("mouseout",(function(){"emphasis"!==i.get(["iconStatus",l])&&_l(this),d.hide()})),("emphasis"===i.get(["iconStatus",l])?xl:_l)(p),r.add(p),p.on("click",W(a.onclick,a,e,n,l)),f[l]=p}))}(g,c,p),g.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&("emphasis"===e?xl:_l)(i[t])},c instanceof FE&&c.render&&c.render(g,e,n,i)):v&&c.dispose&&c.dispose(e,n)}},e.prototype.updateView=function(t,e,n,i){E(this._features,(function(t){t instanceof FE&&t.updateView&&t.updateView(t.model,e,n,i)}))},e.prototype.remove=function(t,e){E(this._features,(function(n){n instanceof FE&&n.remove&&n.remove(t,e)})),this.group.removeAll()},e.prototype.dispose=function(t,e){E(this._features,(function(n){n instanceof FE&&n.dispose&&n.dispose(t,e)}))},e.type="toolbox",e}(fg);var ZE=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}(FE),jE="__ec_magicType_stack__",qE=[["line","bar"],["stack"]],KE=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($E[n]){var o,a={series:[]};E(qE,(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=$E[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}(FE),$E={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")===jE;if("line"===t||"bar"===t)return i.setIconStatus("stack",r?"normal":"emphasis"),C({id:e,stack:r?"":jE},i.get(["option","stack"])||{},!0)}};um({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},(function(t,e){e.mergeOption(t.newOption)}));var JE=new Array(60).join("-"),QE="\t";function tz(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}var ez=new RegExp("[\t]+","g");function nz(t,e){var n=t.split(new RegExp("\n*"+JE+"\n*","g")),i={series:[]};return E(n,(function(t,n){if(function(t){if(t.slice(0,t.indexOf("\n")).indexOf(QE)>=0)return!0}(t)){var r=function(t){for(var e=t.split(/\n+/g),n=[],i=z(tz(e.shift()).split(ez),(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=yz[t.brushType](0,n,e);t.__rangeOffset={offset:mz[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=yz[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=yz[t.brushType](0,s.coordSys,t.coordRange),u=t.__rangeOffset;t.range=u?mz[t.brushType](l.values,u.offset,(n=l.xyMinMax,i=u.xyMinMax,r=_z(n),o=_z(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:uL(i),isTargetByCursor:cL(i,t,n.coordSysModel),getLinearBrushOtherExtent:hL(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=pz(e,t),r=0;rt[1]&&t.reverse(),t}function pz(t,e){return Io(t,e,{includeMainTypes:uz})}var dz={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:gz.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:gz.geo})}))}},fz=[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}],gz={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Mh(t)),e}},yz={lineX:H(vz,0),lineY:H(vz,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=[cz([r[0],o[0]]),cz([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 vz(t,e,n,i){var r=n.getAxis(["x","y"][t]),o=cz(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 mz={lineX:H(xz,0),lineY:H(xz,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 xz(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function _z(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var bz,wz,Sz=E,Mz=uo+"toolbox-dataZoom_",Iz=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 Pk(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 hz(Cz(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 sz(t).length}(e)>1?"emphasis":"normal")}(t,e)},e.prototype.onclick=function(t,e,n){Tz[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 hz(Cz(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=sz(t);oz(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=sk(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=[];Sz(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}(FE),Tz={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(function(t){var e=sz(t),n=e[e.length-1];e.length>1&&e.pop();var i={};return oz(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 Cz(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}bz="dataZoom",wz=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,Cz(i));return Sz(o.xAxisModels,(function(t){return a(t,"xAxis","xAxisIndex")})),Sz(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:Mz+e+o};a[n]=o,r.push(a)}},lt(null==Zp.get(bz)&&wz),Zp.set(bz,wz);var Dz=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}(Ip);function Az(t){var e=t.get("confine");return null!=e?!!e:"richText"===t.get("renderMode")}function kz(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;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout((function(){!n.isDisposed()&&i.manuallyShowTip(t,e,n,{x:i._lastX,y:i._lastY,dataByCoordSys:i._lastDataByCoordSys})}))}},e.prototype.manuallyShowTip=function(t,e,n,i){if(i.from!==this.uid&&!r.node&&n.getDom()){var o=Zz(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)return;var o,a=Ao(e,r,i.get(r),{useDefault:!1,enableAll:!1,enableNone:!1}).models[0];if(!a)return;if(n.getViewOfComponentModel(a).group.traverse((function(e){var n=Ws(e).tooltipConfig;if(n&&n.name===t.name)return o=e,!0})),o)return{componentMainType:r,componentIndex:a.componentIndex,el:o}}(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=Yz;u.x=i.x,u.y=i.y,u.update(),Ws(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=tN(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(Zz(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)if("axis"===Xz([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,my(n,(function(t){return null!=Ws(t).dataIndex?(r=t,!0):null!=Ws(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=Xz([e.tooltipOption],i),a=this._renderMode,s=[],l=Uf("section",{blocks:[],noHeader:!0}),u=[],h=new ng;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=ER(r,e.axis,n,t.seriesDataIndices,t.valueLabelOpt),c=Uf("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=o_(e.axis,{value:r}),f.axisValueLabel=o,f.marker=h.makeTooltipMarker("item",cp(f.color),a);var g=lf(p.formatTooltip(d,!0,null)),y=g.frag;if(y){var v=Xz([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=$f(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=Ws(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=Xz([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 ng;g.marker=y.makeTooltipMarker("item",cp(g.color),c);var v=lf(s.formatTooltip(l,!1,u)),m=d.get("order"),x=d.get("valueFormatter"),_=v.frag,b=_?$f(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=Ws(e),r=i.tooltipConfig.option||{};if(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=Xz(o,this._tooltipModel,s?{position:s}:null),u=l.get("content"),h=Math.random()+"",c=new ng;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=zc(f.axisValue,c,d)),c=up(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=mp(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];null!=o&&(t+l+o+2>i?t-=l+o:t+=o);null!=a&&(e+u+a>r?e-=u+a:e+=a);return[t,e]}(n,i,r,s,l,h?null:20,c?null:20);n=g[0],i=g[1]}if(h&&(n-=jz(h)?u[0]/2:"right"===h?u[0]:0),c&&(i-=jz(c)?u[1]/2:"bottom"===c?u[1]:0),Az(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),[t,e]}(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()&&(Ag(this,"_updatePosition"),this._tooltipContent.dispose(),JR("itemTooltip",e))},e.type="tooltip",e}(fg);function Xz(t,e,n){var i,r=e.ecModel;n?(i=new pc(n,r,r),i=new pc(e.option,i,r)):i=e;for(var o=t.length-1;o>=0;o--){var a=t[o];a&&(a instanceof pc&&(a=a.get("tooltip",!0)),X(a)&&(a={formatter:a}),a&&(i=new pc(a,i,r)))}return i}function Zz(t,e){return t.dispatchAction||W(e.dispatchAction,e)}function jz(t){return"center"===t||"middle"===t}var qz=["rect","polygon","keep","clear"];function Kz(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,qz)}}var $z=E;function Jz(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function Qz(t,e,n){var i={};return $z(e,(function(e){var r,o=i[e]=((r=function(){}).prototype.__hidden=r.prototype,new r);$z(t[e],(function(t,i){if(eD.isValidType(i)){var r={type:i,visual:t};n&&n(r,e),o[i]=new eD(r),"opacity"===i&&((r=T(r)).type="colorAlpha",o.__hidden.__alphaForOpacity=new eD(r))}}))})),i}function tV(t,e,n){var i;E(n,(function(t){e.hasOwnProperty(t)&&Jz(e[t])&&(i=!0)})),i&&E(n,(function(n){e.hasOwnProperty(n)&&Jz(e[n])?t[n]=T(e[n]):delete t[n]}))}var eV={lineX:nV(0),lineY:nV(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])&&f_(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!!(f_(i,r,o)||f_(i,r+a,o)||f_(i,r,o+s)||f_(i,r+a,o+s)||sr.create(t).contain(l[0],l[1])||Ph(r,o,r+a,o,i)||Ph(r,o,r,o+s,i)||Ph(r+a,o,r+a,o+s,i)||Ph(r,o+s,r+a,o+s,i))||void 0}}};function nV(t){var e=["x","y"],n=["width","height"];return{point:function(e,n,i){if(e){var r=i.range;return iV(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&&pV(e)}};function pV(t){return new sr(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var dV=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 Pk(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){sV(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}(fg),fV=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&&tV(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 gV(this.option,t)}),this))},e.prototype.setBrushOption=function(t){this.brushOption=gV(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}(Ip);function gV(t,e){return C({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new pc(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}var yV=["rect","polygon","lineX","lineY","keep","clear"],vV=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:yV.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}(FE);var mV=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}(Ip),xV=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 As({style:Yh(r,{text:t.get("text"),fill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new As({style:Yh(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(){pp(p,"_"+t.get("target"))})),d&&c.on("click",(function(){pp(d,"_"+t.get("subtarget"))})),Ws(l).eventData=Ws(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=mp(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 Ts({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}(fg);var _V=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 Zm([{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}(Ip),bV=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=gc(_V.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}(_V);R(bV,sf.prototype);var 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",e}(fg),SV=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}(G_),MV=Math.PI,IV=So(),TV=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 Uf("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 mp(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:MV/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*MV/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,-MV/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;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);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]}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 gx({ordinalMeta:t.getCategories(),extent:[1/0,-1/0]});case"time":return new Px({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new vx}}(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 SV("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 Eu({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 Eu({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=CV(s,l,e,c);p.ensureState("emphasis").style=u.getItemStyle(),p.ensureState("progress").style=h.getItemStyle(),Pl(p);var d=Ws(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 As({x:c,y:0,rotation:t.labelRotation-t.rotation,onclick:W(r._changeTimeline,r,a),silent:!1,style:Yh(l,{text:i.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});p.ensureState("emphasis").style=Yh(u),p.ensureState("progress").style=Yh(h),e.add(p),Pl(p),IV(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=Lh(t.get(["controlStyle",e]),i||{},new sr(n[0],n[1],n[2],n[3]));r&&o.setStyle(r);return 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),Pl(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),DV(t,s._progressLine,o,n,i,!0)},onUpdate:function(t){DV(t,s._progressLine,o,n,i)}};this._currentPointer=CV(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 VV={min:H(zV,"min"),max:H(zV,"max"),average:H(zV,"average"),median:H(zV,"median")};function BV(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=FV(e,n,i,t);if((e=T(e)).type&&VV[e.type]&&o.baseAxis&&o.valueAxis){var a=P(r,o.baseAxis.dim),s=P(r,o.valueAxis.dim),l=VV[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++)VV[u[h]]&&(u[h]=HV(n,n.mapDimension(r[h]),u[h]));e.coord=u}}return e}function FV(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 GV(t,e){return!(t&&t.containData&&e.coord&&!function(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}(e))||t.containData(e.coord)}function WV(t,e){return t?function(t,n,i,r){return pf(r<2?t.coord&&t.coord[r]:t.value,e[r])}:function(t,n,i,r){return pf(t.value,e[r])}}function HV(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 YV=So(),UV=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){YV(t).keep=!1})),e.eachSeries((function(t){var r=NV.getMarkerModelFromSeries(t,i.type);r&&i.renderSeries(t,r,e,n)})),r.each((function(t){!YV(t).keep&&i.group.remove(t.group)}))},e.prototype.markKeep=function(t){YV(t).keep=!0},e.prototype.blurSeries=function(t){var e=this;E(t,(function(t){var n=NV.getMarkerModelFromSeries(t,e.type);n&&n.getData().eachItemGraphicEl((function(t){t&&bl(t)}))}))},e.type="marker",e}(fg);function XV(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 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.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=NV.getMarkerModelFromSeries(t,"markPoint");e&&(XV(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 Zw),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 Zm(i,n),o=z(n.get("data"),H(BV,e));t&&(o=B(o,H(GV,t)));var a=WV(!!t,i);return r.initData(o,null,a),r}(r,t,e);e.setData(u),XV(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=fy(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){Ws(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markPoint",e}(UV);var jV=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}(NV),qV=So(),KV=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=FV(i,o,e,t);s=u.valueAxis,l=HV(o,ex(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=[BV(t,r[0]),BV(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 $V(t){return!isNaN(t)&&!isFinite(t)}function JV(t,e,n,i){var r=1-t,o=i.dimensions[t];return $V(e[r])&&$V(n[r])&&e[t]===n[t]&&i.getAxis(o).containData(e[t])}function QV(t,e){if("cartesian2d"===t.type){var n=e[0].coord,i=e[1].coord;if(n&&i&&(JV(1,n,i,t)||JV(0,n,i,t)))return!0}return GV(t,e[0])&&GV(t,e[1])}function tB(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(sS(a,"cartesian2d")){var d=a.getAxis("x"),f=a.getAxis("y");h=a.dimensions;$V(t.get(h[0],e))?o[0]=d.toGlobalCoord(d.getExtent()[n?0:1]):$V(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 eB=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=NV.getMarkerModelFromSeries(t,"markLine");if(e){var i=e.getData(),r=qV(e).from,o=qV(e).to;r.each((function(e){tB(r,e,!0,t,n),tB(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 dA);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 Zm(i,n),o=new Zm(i,n),a=new Zm([],n),s=z(n.get("data"),H(KV,e,t,n));t&&(s=B(s,H(QV,t)));var l=WV(!!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;qV(e).from=h,qV(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);tB(e,n,r,t,i);var s=o.getModel("itemStyle").getItemStyle();null==s.fill&&(s.fill=fy(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,n){t.traverse((function(t){Ws(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markLine",e}(UV);var nB=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}(NV),iB=So(),rB=function(t,e,n,i){var r=BV(t,i[0]),o=BV(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 oB(t){return!isNaN(t)&&!isFinite(t)}function aB(t,e,n,i){var r=1-t;return oB(e[r])&&oB(n[r])}function sB(t,e){var n=e.coord[0],i=e.coord[1];return!!(sS(t,"cartesian2d")&&n&&i&&(aB(1,n,i)||aB(0,n,i)))||(GV(t,{coord:n,x:e.x0,y:e.y0})||GV(t,{coord:i,x:e.x1,y:e.y1}))}function lB(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(sS(a,"cartesian2d")){var c=a.getAxis("x"),p=a.getAxis("y"),d=t.get(n[0],e),f=t.get(n[1],e);oB(d)?o[0]=c.toGlobalCoord(c.getExtent()["x0"===n[0]?0:1]):oB(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 uB=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],hB=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=NV.getMarkerModelFromSeries(t,"markArea");if(e){var i=e.getData();i.each((function(e){var r=z(uB,(function(r){return lB(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,o=["x0","y0","x1","y1"];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(o,(function(t,e){return{name:t,type:a[e%2].type}})),i=new Zm(r,n)}else i=new Zm(r=[{name:"value",type:"float"}],n);var s=z(n.get("data"),H(rB,e,t,n));t&&(s=B(s,H(sB,t)));var l=t?function(t,e,n,i){return pf(t.coord[Math.floor(i/2)][i%2],r[i])}:function(t,e,n,i){return pf(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(uB,(function(n){return lB(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}(Ip),pB=H,dB=E,fB=Cr,gB=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 fB),this.group.add(this._selectorGroup=new fB),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=mp(l,u,h),p=this.layoutInner(t,r,c,i,a,s),d=mp(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=UE(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)})),dB(e.getData(),(function(r,o){var a=r.get("name");if(!this.newlineDisabled&&(""===a||"\n"===a)){var c=new fB;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).on("click",pB(yB,a,null,i,h)).on("mouseover",pB(mB,p.name,null,i,h)).on("mouseout",pB(xB,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).on("click",pB(yB,null,a,i,h)).on("mouseover",pB(mB,null,a,i,h)).on("mouseout",pB(xB,null,a,i,h)),l.set(a,!0)}}),this);0}}),this),r&&this._createSelector(r,e,i,o,a)},e.prototype._createSelector=function(t,e,n,i,r){var o=this.getSelectorGroup();dB(t,(function(t){var i=t.type,r=new As({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:"all"===i?"legendAllSelect":"legendInverseSelect"})}});o.add(r),Wh(r,{normal:e.getModel("selectorLabel"),emphasis:e.getModel(["emphasis","selectorLabel"])},{defaultText:t.title}),Pl(r)}))},e.prototype._createItem=function(t,e,n,i,r,o,a,s,l,u){var h=t.visualDrawType,c=r.get("itemWidth"),p=r.get("itemHeight"),d=r.isSelected(e),f=i.get("symbolRotate"),g=i.get("symbolKeepAspect"),y=i.get("icon"),v=function(t,e,n,i,r,o){function a(t,e){"auto"===t.lineWidth&&(t.lineWidth=e.lineWidth>0?2:0),dB(t,(function(n,i){"inherit"===t[i]&&(t[i]=e[i])}))}var s=e.getModel("itemStyle").getItemStyle(),l=0===t.lastIndexOf("empty",0)?"fill":"stroke";s.decal=i.decal,"inherit"===s.fill&&(s.fill=i[r]);"inherit"===s.stroke&&(s.stroke=i[l]);"inherit"===s.opacity&&(s.opacity=("fill"===r?i:n).opacity);a(s,i);var u=e.getModel("lineStyle"),h=u.getLineStyle();if(a(h,n),"auto"===s.fill&&(s.fill=i.fill),"auto"===s.stroke&&(s.stroke=i.fill),"auto"===h.stroke&&(h.stroke=i.fill),!o){var c=e.get("inactiveBorderWidth"),p=s[l];s.lineWidth="auto"===c?i.lineWidth>0&&p?2:0:s.lineWidth,s.fill=e.get("inactiveColor"),s.stroke=e.get("inactiveBorderColor"),h.stroke=u.get("inactiveColor"),h.lineWidth=u.get("inactiveWidth")}return{itemStyle:s,lineStyle:h}}(l=y||l||"roundRect",i,a,s,h,d),m=new fB,x=i.getModel("textStyle");if(!U(t.getLegendIcon)||y&&"inherit"!==y){var _="inherit"===y&&t.getData().getVisual("symbol")?"inherit"===f?t.getData().getVisual("symbolRotate"):f:0;m.add(function(t){var e=t.icon||"roundRect",n=ky(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill,t.symbolKeepAspect);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);return n}({itemWidth:c,itemHeight:p,icon:l,iconRotate:_,itemStyle:v.itemStyle,lineStyle:v.lineStyle,symbolKeepAspect:g}))}else m.add(t.getLegendIcon({itemWidth:c,itemHeight:p,icon:l,iconRotate:f,itemStyle:v.itemStyle,lineStyle:v.lineStyle,symbolKeepAspect:g}));var b="left"===o?c+5:-5,w=o,S=r.get("formatter"),M=e;X(S)&&S?M=S.replace("{name}",null!=e?e:""):U(S)&&(M=S(e));var I=i.get("inactiveColor");m.add(new As({style:Yh(x,{text:M,x:b,y:p/2,fill:d?x.getTextColor():I,align:w,verticalAlign:"middle"})}));var T=new Ts({shape:m.getBoundingRect(),invisible:!0}),C=i.getModel("tooltip");return C.get("show")&&Nh({el:T,componentModel:r,itemName:e,itemTooltipOption:C.option}),m.add(T),m.eachChild((function(t){t.silent=!0})),T.silent=!u,this.getContentGroup().add(m),Pl(m),m.__legendDataIndex=n,m},e.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getContentGroup(),s=this.getSelectorGroup();vp(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){vp("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}(fg);function yB(t,e,n,i){xB(t,e,n,i),n.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),mB(t,e,n,i)}function vB(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 Ts({shape:x})),u.__rectSize=x[r]}else h.eachChild((function(t){t.attr({invisible:!0,silent:!0})}));var _=this._getPageInfo(t);return null!=_.pageIndex&&ih(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=TB[r],a=CB[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}(gB);function AB(t){_m(wB),t.registerComponentModel(SB),t.registerComponentView(DB),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 kB=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=gc(DE.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),e}(DE),LB=So();function PB(t,e,n){LB(t).coordSysRecordMap.each((function(t){var i=t.dataZoomInfoMap.get(e.uid);i&&(i.getRange=n)}))}function OB(t,e){if(e){t.removeKey(e.model.uid);var n=e.controller;n&&n.dispose()}}function RB(t,e){t.isDisposed()||t.dispatchAction({type:"dataZoom",animation:{easing:"cubicOut",duration:100},batch:e})}function NB(t,e,n,i){return t.coordinateSystem.containPoint([n,i])}function EB(t){t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,(function(t,e){var n=LB(e),i=n.coordSysRecordMap||(n.coordSysRecordMap=ft());i.each((function(t){t.dataZoomInfoMap=null})),t.eachComponent({mainType:"dataZoom",subType:"inside"},(function(t){E(TE(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(NB,e),dispatchAction:H(RB,t),dataZoomInfoMap:null,controller:null},i=n.controller=new DI(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),Dg(t,"dispatchAction",e.model.get("throttle",!0),"fixRate")}else OB(i,t)}))}))}var zB=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(),PB(i,e,{pan:W(VB.pan,this),zoom:W(VB.zoom,this),scrollMove:W(VB.scrollMove,this)}))},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){!function(t,e){for(var n=LB(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 sk(0,o,[0,100],0,h.minSpan,h.maxSpan),this.range=o,r[0]!==o[0]||r[1]!==o[1]?o:void 0}},pan:BB((function(t,e,n,i,r,o){var a=FB[i]([o.oldX,o.oldY],[o.newX,o.newY],e,r,n);return a.signal*(t[1]-t[0])*a.pixel/a.pixelLength})),scrollMove:BB((function(t,e,n,i,r,o){return FB[i]([0,0],[o.scrollDelta,o.scrollDelta],e,r,n).signal*(t[1]-t[0])*o.scrollDelta}))};function BB(t){return function(e,n,i,r){var o=this.range,a=o.slice(),s=e.axisModels[0];if(s)return sk(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 FB={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 GB(t){VE(t),t.registerComponentModel(kB),t.registerComponentView(zB),EB(t)}var WB=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=gc(DE.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}(DE),HB=Ts,YB="horizontal",UB="vertical",XB=["line","bar","candlestick","scatter"],ZB={easing:"cubicOut",duration:100,delay:0},jB=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),Dg(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(){Ag(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===YB?{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=wp(t.option);E(["right","top","width","height"],(function(t){"ph"===a[t]&&(a[t]=o[t])}));var s=mp(a,r);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===UB&&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!==YB||r?n===YB&&r?{scaleY:a?1:-1,scaleX:-1}:n!==UB||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 HB({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var r=new HB({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 Lu({shape:{points:a},segmentIgnoreThreshold:1,style:e.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),r=new Ou({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(XB,t.get("type"))<0)){var a,s=i.getComponent(ME(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 HB({silent:u,style:{fill:a.get("fillerColor")},textConfig:{position:"inside"}});r.add(h),r.add(new HB({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");!Cy[o]&&o.indexOf("path://")<0&&o.indexOf("image://")<0&&(o="path://"+o);var s=ky(o,-1,0,2,2,null,!0);s.attr({cursor:qB(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(),Pl(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 As({silent:!0,invisible:!0,style:Yh(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 Ts({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=ky(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 Ts({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:qB(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];sk(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 HB({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?ZB:null,start:e[0],end:e[1]})},e.prototype._findCoordRect=function(){var t,e=TE(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}(LE);function qB(t){return"vertical"===t?"ns-resize":"ew-resize"}function KB(t){t.registerComponentModel(WB),t.registerComponentView(jB),VE(t)}var $B=function(t,e,n){var i=T((JB[t]||{})[e]);return n&&Y(i)?i[i.length-1]:i},JB={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]}},QB=eD.mapVisual,tF=eD.eachVisual,eF=Y,nF=E,iF=Vr,rF=Nr,oF=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&&tV(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=Qz(this.option.controller,e,t),this.targetVisuals=Qz(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=iF([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){eF(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]={},nF(i,(function(t,e){if(eD.isValidType(e)){var n=$B(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";nF(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=QB(l.symbol,(function(t){return"none"===t?r:t}));var u=l.symbolSize;if(null!=u){var h=-1/0;tF(u,(function(t){t>h&&(h=t)})),l.symbolSize=QB(u,(function(t){return rF(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}(Ip),aF=[20,140],sF=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]=aF[0]),(null==e[1]||isNaN(e[1]))&&(e[1]=aF[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=lF(this,"outOfRange",this.getExtent()),n=lF(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();fF([0,1],(function(l){var u=r[l];u.setStyle("fill",e.handlesColor[l]),u.y=t[l];var h=dF(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=Ih(n.handleLabelPoints[l],Mh(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=dF(t,o,s,!0),d=a[0]-c/2,f={x:u.x,y:u.y};u.y=p,u.x=d;var g=Ih(l.indicatorLabelPoint,Mh(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||xF(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 MF(t,e,n,i){for(var r=e.targetVisuals[i],o=eD.prepareVisualTypes(r),a={color:fy(t.getData(),"color")},s=0,l=o.length;s0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})),t.registerAction(bF,wF),E(SF,(function(e){t.registerVisual(t.PRIORITY.VISUAL.COMPONENT,e)})),t.registerPreprocessor(TF))}function kF(t){t.registerComponentModel(sF),t.registerComponentView(vF),AF(t)}var LF=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=[],PF[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=eD.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]=$B(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=eD.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){eD.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=gc(oF.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}(oF),PF={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 OF(t,e){var n=t.inverse;("vertical"===t.orient?!n:n)&&e.reverse()}var RF=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 As({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),vp(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:pF(i.findTargetDataIndices(e),i)})}},e.prototype._getItemAlign=function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return cF(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 As({style:{x:i?"right"===r?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?r:"center",text:e,font:a.getFont(),fill:a.getTextColor()}})),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(ky(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=T(n.selected),r=e.getSelectedMapKey(t);"single"===n.selectedMode?(i[r]=!0,E(i,(function(t,e){i[e]=e===r}))):i[r]=!i[r],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:i})},e.type="visualMap.piecewise",e}(uF);function NF(t){t.registerComponentModel(LF),t.registerComponentView(RF),AF(t)}var EF={label:{enabled:!0},decal:{show:!1}},zF=So(),VF={};function BF(t,e){var n=t.getModel("aria");if(n.get("enabled")){var i=T(EF);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)),zF(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=td(e.ecModel,e.name,VF,t.getSeriesCount()),r=n.getVisual("decal");n.setVisual("decal",u(r,i))}else{var o=e.getRawData(),a={},s=zF(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=td(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"))return;var a=e.getZr().dom;if(o.get("description"))return void a.setAttribute("aria-label",o.get("description"));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)return;var p=function(){var e=t.get("title");e&&e.length&&(e=e[0]);return e&&e.text}();if(p){var d=o.get(["general","withTitle"]);s=r(d,{title:p})}else s=o.get(["general","withoutTitle"]);var f=[],g=l>1?o.get(["series","multiple","prefix"]):o.get(["series","single","prefix"]);s+=r(g,{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();if(s.count()>u)i+=r(o.get(["data","partialData"]),{displayCnt:u});else 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"},WF=function(){function t(t){if(null==(this._condVal=X(t)?new RegExp(t):et(t)?t:null)){var e="";0,ao(e)}}return t.prototype.evaluate=function(t){var e=typeof t;return X(e)?this._condVal.test(t):!!j(e)&&this._condVal.test(t+"")},t}(),HF=function(){function t(){}return t.prototype.evaluate=function(){return this.value},t}(),YF=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){iG(t,i)&&iG(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 oG(t,e,n,i,r,o,a,s,l,u){if(iG(t,n)&&iG(e,i)&&iG(r,a)&&iG(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),oG(S[0],M[0],S[1],M[1],S[2],M[2],S[3],M[3],l,u),oG(S[4],M[4],S[5],M[5],S[6],M[6],S[7],M[7],l,u)}}}}function aG(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=aG([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 hG(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 cG(t,e){var n=t[t.length-1];n&&n[0]===e[0]&&n[1]===e[1]||t.push(e)}function pG(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;or,a=aG([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;p0)for(var b=i/n,w=-i/2;w<=i/2;w+=b){var S=Math.sin(w),M=Math.cos(w),I=0;for(x=0;x0;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 AG(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:DG(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 kG(t){return gG(t.path,t.count)}function LG(t){return Y(t[0])}function PG(t,e){for(var n=[],i=t.length,r=0;r=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 OG={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);LG(t)&&(s=t,l=e),LG(e)&&(s=e,l=t);for(var c=s?s===t:t.length>e.length,p=s?PG(l,s):PG(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 fs&&!t.animators.length&&t.animateFrom({style:{opacity:0}},r)}))}))}function HG(t){var e=t.getModel("universalTransition").get("seriesKey");return e||t.id}function YG(t){return Y(t)?t.sort().join(","):t}function UG(t){if(t.hostModel)return t.hostModel.getModel("universalTransition").get("divideShape")}function XG(t,e){for(var n=0;n=0&&r.push({data:e.oldData[n],divide:UG(e.oldData[n]),dim:t.dimension})})),E(ho(t.to),(function(t){var e=XG(n.updatedSeries,t);if(e>=0){var i=n.updatedSeries[e].getData();o.push({data:i,divide:UG(i),dim:t.dimension})}})),r.length>0&&o.length>0&&WG(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=HG(e),s=YG(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=HG(t),a=YG(o),s=i.get(a);if(s)n.set(a,{oldSeries:[{divide:UG(s),data:s}],newSeries:[{divide:UG(e),data:e}]});else if(Y(o)){var l=[];E(o,(function(t){var e=i.get(t);e&&l.push({divide:UG(e),data:e})})),l.length&&n.set(a,{oldSeries:l,newSeries:[{data:e,divide:UG(e)}]})}else{var u=r.get(o);if(u){var h=n.get(u.key);h||(h={oldSeries:[{data:u.data,divide:UG(u.data)}],newSeries:[]},n.set(u.key,h)),h.newSeries.push({data:e,divide:UG(e)})}}}})),n}(i,n);E(o.keys(),(function(t){var n=o.get(t);WG(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+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0
      -

      - Welcome to The Nginx Operation System OS - -

      -
      -
      -

      Start the HADG System

      -
      - - - - -
      - - 开始按钮 -
      -

      Exit the HADG System

      - - - - -
      - 开始按钮 -
      -
      -

      - - 这是基于Nginx的高可用网关系统的开始界面,点击start按钮,开启网关服务;点击exit按钮,退出系统服务。
      -
      -
      - 当前系统版本号:001 -

      -
      - developed by徐明洋软件开发小组,
      -
      diff --git a/prototype/exit.png b/prototype/exit.png deleted file mode 100644 index 71b317d9a54d7e45dfa9b42e7e2294dbbdab23fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 874060 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
    1. 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 z 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¶W#Gv8YOH{?NS>}G_s3f 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 vV{gU3`uqy%*iQ$ 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 z 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 _G%0_d^F9{MSK#2OgP2J?QuIqk&t58S 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%0Ag$@e+Tc{vPoJM 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