echarts_charts.js 566 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165
  1. import {
  2. LineDraw_default,
  3. Line_default as Line_default2,
  4. MapDraw_default,
  5. RoamController_default,
  6. SymbolDraw_default,
  7. Symbol_default,
  8. View_default,
  9. VisualMapping_default,
  10. applyKeyframeAnimation,
  11. applyLeaveTransition,
  12. applyUpdateTransition,
  13. convertFromEC4CompatibleStyle,
  14. convertToEC4StyleForCustomSerise,
  15. geoSourceManager_default,
  16. getDefaultInterpolatedLabel,
  17. getDefaultLabel,
  18. install,
  19. install2,
  20. install3,
  21. install4,
  22. isCoordinateSystemType,
  23. isEC4CompatibleStyle,
  24. onIrrelevantElement,
  25. stopPreviousKeyframeAnimationAndRestore,
  26. updateCenterAndZoom,
  27. updateViewOnPan,
  28. updateViewOnZoom,
  29. warnDeprecated
  30. } from "./chunk-43FE5UYX.js";
  31. import {
  32. createSeriesData_default,
  33. getLabelLineStatesModels,
  34. limitSurfaceAngle,
  35. limitTurnAngle,
  36. prepareSeriesDataSchema,
  37. setLabelLineStyle
  38. } from "./chunk-FC47MSTP.js";
  39. import {
  40. BezierCurve_default,
  41. Chart_default,
  42. Circle_default,
  43. CoordinateSystem_default,
  44. DISPLAY_STATES,
  45. DataDiffer_default,
  46. Group_default,
  47. HOVER_STATE_BLUR,
  48. Line_default,
  49. LinearGradient_default,
  50. MAX_SAFE_INTEGER,
  51. Model_default,
  52. Polygon_default,
  53. Polyline_default,
  54. SINGLE_REFERRING,
  55. SOURCE_FORMAT_ARRAY_ROWS,
  56. SPECIAL_STATES,
  57. Sector_default,
  58. SeriesData_default,
  59. Series_default,
  60. Z2_EMPHASIS_LIFT,
  61. __extends,
  62. animateLabelValue,
  63. asc,
  64. convertOptionIdName,
  65. convertToColorString,
  66. createFloat32Array,
  67. createLegacyDataSelectAction,
  68. createOrUpdatePatternFromDecal,
  69. createProgressiveLayout,
  70. createRenderPlanner,
  71. createSymbol,
  72. createTextConfig,
  73. createTextStyle,
  74. createTooltipMarkup,
  75. defaultEmphasis,
  76. defaultSeriesFormatTooltip,
  77. deprecateReplaceLog,
  78. enableHoverFocus,
  79. enterEmphasis,
  80. error,
  81. getAvailableSize,
  82. getDecalFromPalette,
  83. getDimensionTypeByAxis,
  84. getECData,
  85. getFont,
  86. getLabelStatesModels,
  87. getLayoutOnAxis,
  88. getLayoutRect,
  89. getPercentWithPrecision,
  90. getShapeClass,
  91. graphic_exports,
  92. groupData,
  93. inheritDefaultOption,
  94. initProps,
  95. interpolateRawValues,
  96. isDimensionStacked,
  97. isHighDownDispatcher,
  98. isNumeric,
  99. labelInner,
  100. layout,
  101. leaveEmphasis,
  102. linearMap,
  103. makeInner,
  104. makePath,
  105. makePrintable,
  106. makeSeriesEncodeForAxisCoordSys,
  107. makeSeriesEncodeForNameBased,
  108. makeStyleMapper,
  109. normalizeSymbolOffset,
  110. normalizeSymbolSize,
  111. normalizeToArray,
  112. numericToNumber,
  113. parsePercent as parsePercent2,
  114. positionElement,
  115. quantile,
  116. queryDataIndex,
  117. removeElement,
  118. removeElementWithFadeOut,
  119. retrieveVisualColorForTooltipMarker,
  120. round,
  121. saveOldStyle,
  122. setAsHighDownDispatcher,
  123. setCommonECData,
  124. setDefaultStateProxy,
  125. setLabelStyle,
  126. setLabelValueAnimation,
  127. setStatesFlag,
  128. setStatesStylesFromModel,
  129. shiftLayoutOnY,
  130. subPixelOptimize,
  131. throttle,
  132. throwError,
  133. toggleHoverEmphasis,
  134. traverseElements,
  135. updateProps,
  136. use,
  137. warn,
  138. windowOpen
  139. } from "./chunk-4Z63X5VE.js";
  140. import {
  141. BoundingRect_default,
  142. Displayable_default,
  143. Image_default,
  144. PathProxy_default,
  145. Path_default,
  146. Point_default,
  147. Rect_default,
  148. Text_default,
  149. assert,
  150. bind,
  151. calculateTextPosition,
  152. clone,
  153. clone2,
  154. clone3,
  155. concatArray,
  156. containStroke,
  157. containStroke2,
  158. copy2 as copy,
  159. create,
  160. create2,
  161. createHashMap,
  162. cubicAt,
  163. cubicRootAt,
  164. curry,
  165. defaults,
  166. dist,
  167. distSquare,
  168. each,
  169. eqNaN,
  170. extend,
  171. filter,
  172. find,
  173. fromPoints,
  174. hasOwn,
  175. indexOf,
  176. isArray,
  177. isFunction,
  178. isNumber,
  179. isObject,
  180. isString,
  181. keys,
  182. len,
  183. lerp2 as lerp,
  184. lift,
  185. map,
  186. mergeAll,
  187. mixin,
  188. modifyAlpha,
  189. modifyHSL,
  190. noop,
  191. normalize,
  192. normalizeArcAngles,
  193. normalizeCssArray,
  194. parsePercent,
  195. platformApi,
  196. quadraticAt,
  197. quadraticDerivativeAt,
  198. quadraticSubdivide,
  199. retrieve,
  200. retrieve2,
  201. retrieve3,
  202. scale,
  203. scaleAndAdd,
  204. set,
  205. sub,
  206. translate
  207. } from "./chunk-NFL6MJ5K.js";
  208. import {
  209. init_define_APP_INFO
  210. } from "./chunk-XY75H3MP.js";
  211. // dep:echarts_charts
  212. init_define_APP_INFO();
  213. // node_modules/echarts/charts.js
  214. init_define_APP_INFO();
  215. // node_modules/echarts/lib/export/charts.js
  216. init_define_APP_INFO();
  217. // node_modules/echarts/lib/chart/line/install.js
  218. init_define_APP_INFO();
  219. // node_modules/echarts/lib/chart/line/LineSeries.js
  220. init_define_APP_INFO();
  221. var LineSeriesModel = function(_super) {
  222. __extends(LineSeriesModel2, _super);
  223. function LineSeriesModel2() {
  224. var _this = _super !== null && _super.apply(this, arguments) || this;
  225. _this.type = LineSeriesModel2.type;
  226. _this.hasSymbolVisual = true;
  227. return _this;
  228. }
  229. LineSeriesModel2.prototype.getInitialData = function(option) {
  230. if (true) {
  231. var coordSys = option.coordinateSystem;
  232. if (coordSys !== "polar" && coordSys !== "cartesian2d") {
  233. throw new Error("Line not support coordinateSystem besides cartesian and polar");
  234. }
  235. }
  236. return createSeriesData_default(null, this, {
  237. useEncodeDefaulter: true
  238. });
  239. };
  240. LineSeriesModel2.prototype.getLegendIcon = function(opt) {
  241. var group = new Group_default();
  242. var line = createSymbol("line", 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false);
  243. group.add(line);
  244. line.setStyle(opt.lineStyle);
  245. var visualType = this.getData().getVisual("symbol");
  246. var visualRotate = this.getData().getVisual("symbolRotate");
  247. var symbolType = visualType === "none" ? "circle" : visualType;
  248. var size = opt.itemHeight * 0.8;
  249. var symbol = createSymbol(symbolType, (opt.itemWidth - size) / 2, (opt.itemHeight - size) / 2, size, size, opt.itemStyle.fill);
  250. group.add(symbol);
  251. symbol.setStyle(opt.itemStyle);
  252. var symbolRotate = opt.iconRotate === "inherit" ? visualRotate : opt.iconRotate || 0;
  253. symbol.rotation = symbolRotate * Math.PI / 180;
  254. symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);
  255. if (symbolType.indexOf("empty") > -1) {
  256. symbol.style.stroke = symbol.style.fill;
  257. symbol.style.fill = "#fff";
  258. symbol.style.lineWidth = 2;
  259. }
  260. return group;
  261. };
  262. LineSeriesModel2.type = "series.line";
  263. LineSeriesModel2.dependencies = ["grid", "polar"];
  264. LineSeriesModel2.defaultOption = {
  265. z: 3,
  266. coordinateSystem: "cartesian2d",
  267. legendHoverLink: true,
  268. clip: true,
  269. label: {
  270. position: "top"
  271. },
  272. endLabel: {
  273. show: false,
  274. valueAnimation: true,
  275. distance: 8
  276. },
  277. lineStyle: {
  278. width: 2,
  279. type: "solid"
  280. },
  281. emphasis: {
  282. scale: true
  283. },
  284. step: false,
  285. smooth: false,
  286. smoothMonotone: null,
  287. symbol: "emptyCircle",
  288. symbolSize: 4,
  289. symbolRotate: null,
  290. showSymbol: true,
  291. showAllSymbol: "auto",
  292. connectNulls: false,
  293. sampling: "none",
  294. animationEasing: "linear",
  295. progressive: 0,
  296. hoverLayerThreshold: Infinity,
  297. universalTransition: {
  298. divideShape: "clone"
  299. },
  300. triggerLineEvent: false
  301. };
  302. return LineSeriesModel2;
  303. }(Series_default);
  304. var LineSeries_default = LineSeriesModel;
  305. // node_modules/echarts/lib/chart/line/LineView.js
  306. init_define_APP_INFO();
  307. // node_modules/echarts/lib/chart/line/lineAnimationDiff.js
  308. init_define_APP_INFO();
  309. // node_modules/echarts/lib/chart/line/helper.js
  310. init_define_APP_INFO();
  311. function prepareDataCoordInfo(coordSys, data, valueOrigin) {
  312. var baseAxis = coordSys.getBaseAxis();
  313. var valueAxis = coordSys.getOtherAxis(baseAxis);
  314. var valueStart = getValueStart(valueAxis, valueOrigin);
  315. var baseAxisDim = baseAxis.dim;
  316. var valueAxisDim = valueAxis.dim;
  317. var valueDim = data.mapDimension(valueAxisDim);
  318. var baseDim = data.mapDimension(baseAxisDim);
  319. var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0;
  320. var dims = map(coordSys.dimensions, function(coordDim) {
  321. return data.mapDimension(coordDim);
  322. });
  323. var stacked = false;
  324. var stackResultDim = data.getCalculationInfo("stackResultDimension");
  325. if (isDimensionStacked(
  326. data,
  327. dims[0]
  328. )) {
  329. stacked = true;
  330. dims[0] = stackResultDim;
  331. }
  332. if (isDimensionStacked(
  333. data,
  334. dims[1]
  335. )) {
  336. stacked = true;
  337. dims[1] = stackResultDim;
  338. }
  339. return {
  340. dataDimsForPoint: dims,
  341. valueStart,
  342. valueAxisDim,
  343. baseAxisDim,
  344. stacked: !!stacked,
  345. valueDim,
  346. baseDim,
  347. baseDataOffset,
  348. stackedOverDimension: data.getCalculationInfo("stackedOverDimension")
  349. };
  350. }
  351. function getValueStart(valueAxis, valueOrigin) {
  352. var valueStart = 0;
  353. var extent = valueAxis.scale.getExtent();
  354. if (valueOrigin === "start") {
  355. valueStart = extent[0];
  356. } else if (valueOrigin === "end") {
  357. valueStart = extent[1];
  358. } else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) {
  359. valueStart = valueOrigin;
  360. } else {
  361. if (extent[0] > 0) {
  362. valueStart = extent[0];
  363. } else if (extent[1] < 0) {
  364. valueStart = extent[1];
  365. }
  366. }
  367. return valueStart;
  368. }
  369. function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {
  370. var value = NaN;
  371. if (dataCoordInfo.stacked) {
  372. value = data.get(data.getCalculationInfo("stackedOverDimension"), idx);
  373. }
  374. if (isNaN(value)) {
  375. value = dataCoordInfo.valueStart;
  376. }
  377. var baseDataOffset = dataCoordInfo.baseDataOffset;
  378. var stackedData = [];
  379. stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);
  380. stackedData[1 - baseDataOffset] = value;
  381. return coordSys.dataToPoint(stackedData);
  382. }
  383. // node_modules/echarts/lib/chart/line/lineAnimationDiff.js
  384. function diffData(oldData, newData) {
  385. var diffResult = [];
  386. newData.diff(oldData).add(function(idx) {
  387. diffResult.push({
  388. cmd: "+",
  389. idx
  390. });
  391. }).update(function(newIdx, oldIdx) {
  392. diffResult.push({
  393. cmd: "=",
  394. idx: oldIdx,
  395. idx1: newIdx
  396. });
  397. }).remove(function(idx) {
  398. diffResult.push({
  399. cmd: "-",
  400. idx
  401. });
  402. }).execute();
  403. return diffResult;
  404. }
  405. function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {
  406. var diff = diffData(oldData, newData);
  407. var currPoints = [];
  408. var nextPoints = [];
  409. var currStackedPoints = [];
  410. var nextStackedPoints = [];
  411. var status = [];
  412. var sortedIndices = [];
  413. var rawIndices = [];
  414. var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);
  415. var oldPoints = oldData.getLayout("points") || [];
  416. var newPoints = newData.getLayout("points") || [];
  417. for (var i = 0; i < diff.length; i++) {
  418. var diffItem = diff[i];
  419. var pointAdded = true;
  420. var oldIdx2 = void 0;
  421. var newIdx2 = void 0;
  422. switch (diffItem.cmd) {
  423. case "=":
  424. oldIdx2 = diffItem.idx * 2;
  425. newIdx2 = diffItem.idx1 * 2;
  426. var currentX = oldPoints[oldIdx2];
  427. var currentY = oldPoints[oldIdx2 + 1];
  428. var nextX = newPoints[newIdx2];
  429. var nextY = newPoints[newIdx2 + 1];
  430. if (isNaN(currentX) || isNaN(currentY)) {
  431. currentX = nextX;
  432. currentY = nextY;
  433. }
  434. currPoints.push(currentX, currentY);
  435. nextPoints.push(nextX, nextY);
  436. currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);
  437. nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);
  438. rawIndices.push(newData.getRawIndex(diffItem.idx1));
  439. break;
  440. case "+":
  441. var newIdx = diffItem.idx;
  442. var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;
  443. var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]);
  444. newIdx2 = newIdx * 2;
  445. currPoints.push(oldPt[0], oldPt[1]);
  446. nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);
  447. var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);
  448. currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);
  449. nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);
  450. rawIndices.push(newData.getRawIndex(newIdx));
  451. break;
  452. case "-":
  453. pointAdded = false;
  454. }
  455. if (pointAdded) {
  456. status.push(diffItem);
  457. sortedIndices.push(sortedIndices.length);
  458. }
  459. }
  460. sortedIndices.sort(function(a, b) {
  461. return rawIndices[a] - rawIndices[b];
  462. });
  463. var len2 = currPoints.length;
  464. var sortedCurrPoints = createFloat32Array(len2);
  465. var sortedNextPoints = createFloat32Array(len2);
  466. var sortedCurrStackedPoints = createFloat32Array(len2);
  467. var sortedNextStackedPoints = createFloat32Array(len2);
  468. var sortedStatus = [];
  469. for (var i = 0; i < sortedIndices.length; i++) {
  470. var idx = sortedIndices[i];
  471. var i2 = i * 2;
  472. var idx2 = idx * 2;
  473. sortedCurrPoints[i2] = currPoints[idx2];
  474. sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];
  475. sortedNextPoints[i2] = nextPoints[idx2];
  476. sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];
  477. sortedCurrStackedPoints[i2] = currStackedPoints[idx2];
  478. sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];
  479. sortedNextStackedPoints[i2] = nextStackedPoints[idx2];
  480. sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];
  481. sortedStatus[i] = status[idx];
  482. }
  483. return {
  484. current: sortedCurrPoints,
  485. next: sortedNextPoints,
  486. stackedOnCurrent: sortedCurrStackedPoints,
  487. stackedOnNext: sortedNextStackedPoints,
  488. status: sortedStatus
  489. };
  490. }
  491. // node_modules/echarts/lib/chart/line/poly.js
  492. init_define_APP_INFO();
  493. var mathMin = Math.min;
  494. var mathMax = Math.max;
  495. function isPointNull(x, y) {
  496. return isNaN(x) || isNaN(y);
  497. }
  498. function drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) {
  499. var prevX;
  500. var prevY;
  501. var cpx0;
  502. var cpy0;
  503. var cpx1;
  504. var cpy1;
  505. var idx = start;
  506. var k = 0;
  507. for (; k < segLen; k++) {
  508. var x = points[idx * 2];
  509. var y = points[idx * 2 + 1];
  510. if (idx >= allLen || idx < 0) {
  511. break;
  512. }
  513. if (isPointNull(x, y)) {
  514. if (connectNulls) {
  515. idx += dir;
  516. continue;
  517. }
  518. break;
  519. }
  520. if (idx === start) {
  521. ctx[dir > 0 ? "moveTo" : "lineTo"](x, y);
  522. cpx0 = x;
  523. cpy0 = y;
  524. } else {
  525. var dx = x - prevX;
  526. var dy = y - prevY;
  527. if (dx * dx + dy * dy < 0.5) {
  528. idx += dir;
  529. continue;
  530. }
  531. if (smooth > 0) {
  532. var nextIdx = idx + dir;
  533. var nextX = points[nextIdx * 2];
  534. var nextY = points[nextIdx * 2 + 1];
  535. while (nextX === x && nextY === y && k < segLen) {
  536. k++;
  537. nextIdx += dir;
  538. idx += dir;
  539. nextX = points[nextIdx * 2];
  540. nextY = points[nextIdx * 2 + 1];
  541. x = points[idx * 2];
  542. y = points[idx * 2 + 1];
  543. dx = x - prevX;
  544. dy = y - prevY;
  545. }
  546. var tmpK = k + 1;
  547. if (connectNulls) {
  548. while (isPointNull(nextX, nextY) && tmpK < segLen) {
  549. tmpK++;
  550. nextIdx += dir;
  551. nextX = points[nextIdx * 2];
  552. nextY = points[nextIdx * 2 + 1];
  553. }
  554. }
  555. var ratioNextSeg = 0.5;
  556. var vx = 0;
  557. var vy = 0;
  558. var nextCpx0 = void 0;
  559. var nextCpy0 = void 0;
  560. if (tmpK >= segLen || isPointNull(nextX, nextY)) {
  561. cpx1 = x;
  562. cpy1 = y;
  563. } else {
  564. vx = nextX - prevX;
  565. vy = nextY - prevY;
  566. var dx0 = x - prevX;
  567. var dx1 = nextX - x;
  568. var dy0 = y - prevY;
  569. var dy1 = nextY - y;
  570. var lenPrevSeg = void 0;
  571. var lenNextSeg = void 0;
  572. if (smoothMonotone === "x") {
  573. lenPrevSeg = Math.abs(dx0);
  574. lenNextSeg = Math.abs(dx1);
  575. var dir_1 = vx > 0 ? 1 : -1;
  576. cpx1 = x - dir_1 * lenPrevSeg * smooth;
  577. cpy1 = y;
  578. nextCpx0 = x + dir_1 * lenNextSeg * smooth;
  579. nextCpy0 = y;
  580. } else if (smoothMonotone === "y") {
  581. lenPrevSeg = Math.abs(dy0);
  582. lenNextSeg = Math.abs(dy1);
  583. var dir_2 = vy > 0 ? 1 : -1;
  584. cpx1 = x;
  585. cpy1 = y - dir_2 * lenPrevSeg * smooth;
  586. nextCpx0 = x;
  587. nextCpy0 = y + dir_2 * lenNextSeg * smooth;
  588. } else {
  589. lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);
  590. lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1);
  591. ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);
  592. cpx1 = x - vx * smooth * (1 - ratioNextSeg);
  593. cpy1 = y - vy * smooth * (1 - ratioNextSeg);
  594. nextCpx0 = x + vx * smooth * ratioNextSeg;
  595. nextCpy0 = y + vy * smooth * ratioNextSeg;
  596. nextCpx0 = mathMin(nextCpx0, mathMax(nextX, x));
  597. nextCpy0 = mathMin(nextCpy0, mathMax(nextY, y));
  598. nextCpx0 = mathMax(nextCpx0, mathMin(nextX, x));
  599. nextCpy0 = mathMax(nextCpy0, mathMin(nextY, y));
  600. vx = nextCpx0 - x;
  601. vy = nextCpy0 - y;
  602. cpx1 = x - vx * lenPrevSeg / lenNextSeg;
  603. cpy1 = y - vy * lenPrevSeg / lenNextSeg;
  604. cpx1 = mathMin(cpx1, mathMax(prevX, x));
  605. cpy1 = mathMin(cpy1, mathMax(prevY, y));
  606. cpx1 = mathMax(cpx1, mathMin(prevX, x));
  607. cpy1 = mathMax(cpy1, mathMin(prevY, y));
  608. vx = x - cpx1;
  609. vy = y - cpy1;
  610. nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;
  611. nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;
  612. }
  613. }
  614. ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);
  615. cpx0 = nextCpx0;
  616. cpy0 = nextCpy0;
  617. } else {
  618. ctx.lineTo(x, y);
  619. }
  620. }
  621. prevX = x;
  622. prevY = y;
  623. idx += dir;
  624. }
  625. return k;
  626. }
  627. var ECPolylineShape = function() {
  628. function ECPolylineShape2() {
  629. this.smooth = 0;
  630. this.smoothConstraint = true;
  631. }
  632. return ECPolylineShape2;
  633. }();
  634. var ECPolyline = function(_super) {
  635. __extends(ECPolyline2, _super);
  636. function ECPolyline2(opts) {
  637. var _this = _super.call(this, opts) || this;
  638. _this.type = "ec-polyline";
  639. return _this;
  640. }
  641. ECPolyline2.prototype.getDefaultStyle = function() {
  642. return {
  643. stroke: "#000",
  644. fill: null
  645. };
  646. };
  647. ECPolyline2.prototype.getDefaultShape = function() {
  648. return new ECPolylineShape();
  649. };
  650. ECPolyline2.prototype.buildPath = function(ctx, shape) {
  651. var points = shape.points;
  652. var i = 0;
  653. var len2 = points.length / 2;
  654. if (shape.connectNulls) {
  655. for (; len2 > 0; len2--) {
  656. if (!isPointNull(points[len2 * 2 - 2], points[len2 * 2 - 1])) {
  657. break;
  658. }
  659. }
  660. for (; i < len2; i++) {
  661. if (!isPointNull(points[i * 2], points[i * 2 + 1])) {
  662. break;
  663. }
  664. }
  665. }
  666. while (i < len2) {
  667. i += drawSegment(ctx, points, i, len2, len2, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;
  668. }
  669. };
  670. ECPolyline2.prototype.getPointOn = function(xOrY, dim) {
  671. if (!this.path) {
  672. this.createPathProxy();
  673. this.buildPath(this.path, this.shape);
  674. }
  675. var path = this.path;
  676. var data = path.data;
  677. var CMD = PathProxy_default.CMD;
  678. var x0;
  679. var y0;
  680. var isDimX = dim === "x";
  681. var roots = [];
  682. for (var i = 0; i < data.length; ) {
  683. var cmd = data[i++];
  684. var x = void 0;
  685. var y = void 0;
  686. var x2 = void 0;
  687. var y2 = void 0;
  688. var x3 = void 0;
  689. var y3 = void 0;
  690. var t = void 0;
  691. switch (cmd) {
  692. case CMD.M:
  693. x0 = data[i++];
  694. y0 = data[i++];
  695. break;
  696. case CMD.L:
  697. x = data[i++];
  698. y = data[i++];
  699. t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0);
  700. if (t <= 1 && t >= 0) {
  701. var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0;
  702. return isDimX ? [xOrY, val] : [val, xOrY];
  703. }
  704. x0 = x;
  705. y0 = y;
  706. break;
  707. case CMD.C:
  708. x = data[i++];
  709. y = data[i++];
  710. x2 = data[i++];
  711. y2 = data[i++];
  712. x3 = data[i++];
  713. y3 = data[i++];
  714. var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots) : cubicRootAt(y0, y, y2, y3, xOrY, roots);
  715. if (nRoot > 0) {
  716. for (var i_1 = 0; i_1 < nRoot; i_1++) {
  717. var t_1 = roots[i_1];
  718. if (t_1 <= 1 && t_1 >= 0) {
  719. var val = isDimX ? cubicAt(y0, y, y2, y3, t_1) : cubicAt(x0, x, x2, x3, t_1);
  720. return isDimX ? [xOrY, val] : [val, xOrY];
  721. }
  722. }
  723. }
  724. x0 = x3;
  725. y0 = y3;
  726. break;
  727. }
  728. }
  729. };
  730. return ECPolyline2;
  731. }(Path_default);
  732. var ECPolygonShape = function(_super) {
  733. __extends(ECPolygonShape2, _super);
  734. function ECPolygonShape2() {
  735. return _super !== null && _super.apply(this, arguments) || this;
  736. }
  737. return ECPolygonShape2;
  738. }(ECPolylineShape);
  739. var ECPolygon = function(_super) {
  740. __extends(ECPolygon2, _super);
  741. function ECPolygon2(opts) {
  742. var _this = _super.call(this, opts) || this;
  743. _this.type = "ec-polygon";
  744. return _this;
  745. }
  746. ECPolygon2.prototype.getDefaultShape = function() {
  747. return new ECPolygonShape();
  748. };
  749. ECPolygon2.prototype.buildPath = function(ctx, shape) {
  750. var points = shape.points;
  751. var stackedOnPoints = shape.stackedOnPoints;
  752. var i = 0;
  753. var len2 = points.length / 2;
  754. var smoothMonotone = shape.smoothMonotone;
  755. if (shape.connectNulls) {
  756. for (; len2 > 0; len2--) {
  757. if (!isPointNull(points[len2 * 2 - 2], points[len2 * 2 - 1])) {
  758. break;
  759. }
  760. }
  761. for (; i < len2; i++) {
  762. if (!isPointNull(points[i * 2], points[i * 2 + 1])) {
  763. break;
  764. }
  765. }
  766. }
  767. while (i < len2) {
  768. var k = drawSegment(ctx, points, i, len2, len2, 1, shape.smooth, smoothMonotone, shape.connectNulls);
  769. drawSegment(ctx, stackedOnPoints, i + k - 1, k, len2, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);
  770. i += k + 1;
  771. ctx.closePath();
  772. }
  773. };
  774. return ECPolygon2;
  775. }(Path_default);
  776. // node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js
  777. init_define_APP_INFO();
  778. function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {
  779. var rect = cartesian.getArea();
  780. var x = rect.x;
  781. var y = rect.y;
  782. var width = rect.width;
  783. var height = rect.height;
  784. var lineWidth = seriesModel.get(["lineStyle", "width"]) || 2;
  785. x -= lineWidth / 2;
  786. y -= lineWidth / 2;
  787. width += lineWidth;
  788. height += lineWidth;
  789. x = Math.floor(x);
  790. width = Math.round(width);
  791. var clipPath = new Rect_default({
  792. shape: {
  793. x,
  794. y,
  795. width,
  796. height
  797. }
  798. });
  799. if (hasAnimation) {
  800. var baseAxis = cartesian.getBaseAxis();
  801. var isHorizontal = baseAxis.isHorizontal();
  802. var isAxisInversed = baseAxis.inverse;
  803. if (isHorizontal) {
  804. if (isAxisInversed) {
  805. clipPath.shape.x += width;
  806. }
  807. clipPath.shape.width = 0;
  808. } else {
  809. if (!isAxisInversed) {
  810. clipPath.shape.y += height;
  811. }
  812. clipPath.shape.height = 0;
  813. }
  814. var duringCb = isFunction(during) ? function(percent) {
  815. during(percent, clipPath);
  816. } : null;
  817. initProps(clipPath, {
  818. shape: {
  819. width,
  820. height,
  821. x,
  822. y
  823. }
  824. }, seriesModel, null, done, duringCb);
  825. }
  826. return clipPath;
  827. }
  828. function createPolarClipPath(polar, hasAnimation, seriesModel) {
  829. var sectorArea = polar.getArea();
  830. var r0 = round(sectorArea.r0, 1);
  831. var r = round(sectorArea.r, 1);
  832. var clipPath = new Sector_default({
  833. shape: {
  834. cx: round(polar.cx, 1),
  835. cy: round(polar.cy, 1),
  836. r0,
  837. r,
  838. startAngle: sectorArea.startAngle,
  839. endAngle: sectorArea.endAngle,
  840. clockwise: sectorArea.clockwise
  841. }
  842. });
  843. if (hasAnimation) {
  844. var isRadial = polar.getBaseAxis().dim === "angle";
  845. if (isRadial) {
  846. clipPath.shape.endAngle = sectorArea.startAngle;
  847. } else {
  848. clipPath.shape.r = r0;
  849. }
  850. initProps(clipPath, {
  851. shape: {
  852. endAngle: sectorArea.endAngle,
  853. r
  854. }
  855. }, seriesModel);
  856. }
  857. return clipPath;
  858. }
  859. function createClipPath(coordSys, hasAnimation, seriesModel, done, during) {
  860. if (!coordSys) {
  861. return null;
  862. } else if (coordSys.type === "polar") {
  863. return createPolarClipPath(coordSys, hasAnimation, seriesModel);
  864. } else if (coordSys.type === "cartesian2d") {
  865. return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);
  866. }
  867. return null;
  868. }
  869. // node_modules/echarts/lib/chart/line/LineView.js
  870. function isPointsSame(points1, points2) {
  871. if (points1.length !== points2.length) {
  872. return;
  873. }
  874. for (var i = 0; i < points1.length; i++) {
  875. if (points1[i] !== points2[i]) {
  876. return;
  877. }
  878. }
  879. return true;
  880. }
  881. function bboxFromPoints(points) {
  882. var minX = Infinity;
  883. var minY = Infinity;
  884. var maxX = -Infinity;
  885. var maxY = -Infinity;
  886. for (var i = 0; i < points.length; ) {
  887. var x = points[i++];
  888. var y = points[i++];
  889. if (!isNaN(x)) {
  890. minX = Math.min(x, minX);
  891. maxX = Math.max(x, maxX);
  892. }
  893. if (!isNaN(y)) {
  894. minY = Math.min(y, minY);
  895. maxY = Math.max(y, maxY);
  896. }
  897. }
  898. return [[minX, minY], [maxX, maxY]];
  899. }
  900. function getBoundingDiff(points1, points2) {
  901. var _a = bboxFromPoints(points1), min1 = _a[0], max1 = _a[1];
  902. var _b = bboxFromPoints(points2), min2 = _b[0], max2 = _b[1];
  903. 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]));
  904. }
  905. function getSmooth(smooth) {
  906. return isNumber(smooth) ? smooth : smooth ? 0.5 : 0;
  907. }
  908. function getStackedOnPoints(coordSys, data, dataCoordInfo) {
  909. if (!dataCoordInfo.valueDim) {
  910. return [];
  911. }
  912. var len2 = data.count();
  913. var points = createFloat32Array(len2 * 2);
  914. for (var idx = 0; idx < len2; idx++) {
  915. var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);
  916. points[idx * 2] = pt[0];
  917. points[idx * 2 + 1] = pt[1];
  918. }
  919. return points;
  920. }
  921. function turnPointsIntoStep(points, coordSys, stepTurnAt, connectNulls) {
  922. var baseAxis = coordSys.getBaseAxis();
  923. var baseIndex = baseAxis.dim === "x" || baseAxis.dim === "radius" ? 0 : 1;
  924. var stepPoints = [];
  925. var i = 0;
  926. var stepPt = [];
  927. var pt = [];
  928. var nextPt = [];
  929. var filteredPoints = [];
  930. if (connectNulls) {
  931. for (i = 0; i < points.length; i += 2) {
  932. if (!isNaN(points[i]) && !isNaN(points[i + 1])) {
  933. filteredPoints.push(points[i], points[i + 1]);
  934. }
  935. }
  936. points = filteredPoints;
  937. }
  938. for (i = 0; i < points.length - 2; i += 2) {
  939. nextPt[0] = points[i + 2];
  940. nextPt[1] = points[i + 3];
  941. pt[0] = points[i];
  942. pt[1] = points[i + 1];
  943. stepPoints.push(pt[0], pt[1]);
  944. switch (stepTurnAt) {
  945. case "end":
  946. stepPt[baseIndex] = nextPt[baseIndex];
  947. stepPt[1 - baseIndex] = pt[1 - baseIndex];
  948. stepPoints.push(stepPt[0], stepPt[1]);
  949. break;
  950. case "middle":
  951. var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;
  952. var stepPt2 = [];
  953. stepPt[baseIndex] = stepPt2[baseIndex] = middle;
  954. stepPt[1 - baseIndex] = pt[1 - baseIndex];
  955. stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];
  956. stepPoints.push(stepPt[0], stepPt[1]);
  957. stepPoints.push(stepPt2[0], stepPt2[1]);
  958. break;
  959. default:
  960. stepPt[baseIndex] = pt[baseIndex];
  961. stepPt[1 - baseIndex] = nextPt[1 - baseIndex];
  962. stepPoints.push(stepPt[0], stepPt[1]);
  963. }
  964. }
  965. stepPoints.push(points[i++], points[i++]);
  966. return stepPoints;
  967. }
  968. function clipColorStops(colorStops, maxSize) {
  969. var newColorStops = [];
  970. var len2 = colorStops.length;
  971. var prevOutOfRangeColorStop;
  972. var prevInRangeColorStop;
  973. function lerpStop(stop0, stop1, clippedCoord) {
  974. var coord0 = stop0.coord;
  975. var p = (clippedCoord - coord0) / (stop1.coord - coord0);
  976. var color = lerp(p, [stop0.color, stop1.color]);
  977. return {
  978. coord: clippedCoord,
  979. color
  980. };
  981. }
  982. for (var i = 0; i < len2; i++) {
  983. var stop_1 = colorStops[i];
  984. var coord = stop_1.coord;
  985. if (coord < 0) {
  986. prevOutOfRangeColorStop = stop_1;
  987. } else if (coord > maxSize) {
  988. if (prevInRangeColorStop) {
  989. newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize));
  990. } else if (prevOutOfRangeColorStop) {
  991. newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize));
  992. }
  993. break;
  994. } else {
  995. if (prevOutOfRangeColorStop) {
  996. newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0));
  997. prevOutOfRangeColorStop = null;
  998. }
  999. newColorStops.push(stop_1);
  1000. prevInRangeColorStop = stop_1;
  1001. }
  1002. }
  1003. return newColorStops;
  1004. }
  1005. function getVisualGradient(data, coordSys, api) {
  1006. var visualMetaList = data.getVisual("visualMeta");
  1007. if (!visualMetaList || !visualMetaList.length || !data.count()) {
  1008. return;
  1009. }
  1010. if (coordSys.type !== "cartesian2d") {
  1011. if (true) {
  1012. console.warn("Visual map on line style is only supported on cartesian2d.");
  1013. }
  1014. return;
  1015. }
  1016. var coordDim;
  1017. var visualMeta;
  1018. for (var i = visualMetaList.length - 1; i >= 0; i--) {
  1019. var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension);
  1020. coordDim = dimInfo && dimInfo.coordDim;
  1021. if (coordDim === "x" || coordDim === "y") {
  1022. visualMeta = visualMetaList[i];
  1023. break;
  1024. }
  1025. }
  1026. if (!visualMeta) {
  1027. if (true) {
  1028. console.warn("Visual map on line style only support x or y dimension.");
  1029. }
  1030. return;
  1031. }
  1032. var axis = coordSys.getAxis(coordDim);
  1033. var colorStops = map(visualMeta.stops, function(stop) {
  1034. return {
  1035. coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),
  1036. color: stop.color
  1037. };
  1038. });
  1039. var stopLen = colorStops.length;
  1040. var outerColors = visualMeta.outerColors.slice();
  1041. if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {
  1042. colorStops.reverse();
  1043. outerColors.reverse();
  1044. }
  1045. var colorStopsInRange = clipColorStops(colorStops, coordDim === "x" ? api.getWidth() : api.getHeight());
  1046. var inRangeStopLen = colorStopsInRange.length;
  1047. if (!inRangeStopLen && stopLen) {
  1048. return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color;
  1049. }
  1050. var tinyExtent = 10;
  1051. var minCoord = colorStopsInRange[0].coord - tinyExtent;
  1052. var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent;
  1053. var coordSpan = maxCoord - minCoord;
  1054. if (coordSpan < 1e-3) {
  1055. return "transparent";
  1056. }
  1057. each(colorStopsInRange, function(stop) {
  1058. stop.offset = (stop.coord - minCoord) / coordSpan;
  1059. });
  1060. colorStopsInRange.push({
  1061. offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5,
  1062. color: outerColors[1] || "transparent"
  1063. });
  1064. colorStopsInRange.unshift({
  1065. offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5,
  1066. color: outerColors[0] || "transparent"
  1067. });
  1068. var gradient = new LinearGradient_default(0, 0, 0, 0, colorStopsInRange, true);
  1069. gradient[coordDim] = minCoord;
  1070. gradient[coordDim + "2"] = maxCoord;
  1071. return gradient;
  1072. }
  1073. function getIsIgnoreFunc(seriesModel, data, coordSys) {
  1074. var showAllSymbol = seriesModel.get("showAllSymbol");
  1075. var isAuto = showAllSymbol === "auto";
  1076. if (showAllSymbol && !isAuto) {
  1077. return;
  1078. }
  1079. var categoryAxis = coordSys.getAxesByScale("ordinal")[0];
  1080. if (!categoryAxis) {
  1081. return;
  1082. }
  1083. if (isAuto && canShowAllSymbolForCategory(categoryAxis, data)) {
  1084. return;
  1085. }
  1086. var categoryDataDim = data.mapDimension(categoryAxis.dim);
  1087. var labelMap = {};
  1088. each(categoryAxis.getViewLabels(), function(labelItem) {
  1089. var ordinalNumber = categoryAxis.scale.getRawOrdinalNumber(labelItem.tickValue);
  1090. labelMap[ordinalNumber] = 1;
  1091. });
  1092. return function(dataIndex) {
  1093. return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));
  1094. };
  1095. }
  1096. function canShowAllSymbolForCategory(categoryAxis, data) {
  1097. var axisExtent = categoryAxis.getExtent();
  1098. var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();
  1099. isNaN(availSize) && (availSize = 0);
  1100. var dataLen = data.count();
  1101. var step = Math.max(1, Math.round(dataLen / 5));
  1102. for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {
  1103. if (Symbol_default.getSymbolSize(
  1104. data,
  1105. dataIndex
  1106. )[categoryAxis.isHorizontal() ? 1 : 0] * 1.5 > availSize) {
  1107. return false;
  1108. }
  1109. }
  1110. return true;
  1111. }
  1112. function isPointNull2(x, y) {
  1113. return isNaN(x) || isNaN(y);
  1114. }
  1115. function getLastIndexNotNull(points) {
  1116. var len2 = points.length / 2;
  1117. for (; len2 > 0; len2--) {
  1118. if (!isPointNull2(points[len2 * 2 - 2], points[len2 * 2 - 1])) {
  1119. break;
  1120. }
  1121. }
  1122. return len2 - 1;
  1123. }
  1124. function getPointAtIndex(points, idx) {
  1125. return [points[idx * 2], points[idx * 2 + 1]];
  1126. }
  1127. function getIndexRange(points, xOrY, dim) {
  1128. var len2 = points.length / 2;
  1129. var dimIdx = dim === "x" ? 0 : 1;
  1130. var a;
  1131. var b;
  1132. var prevIndex = 0;
  1133. var nextIndex = -1;
  1134. for (var i = 0; i < len2; i++) {
  1135. b = points[i * 2 + dimIdx];
  1136. if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {
  1137. continue;
  1138. }
  1139. if (i === 0) {
  1140. a = b;
  1141. continue;
  1142. }
  1143. if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {
  1144. nextIndex = i;
  1145. break;
  1146. }
  1147. prevIndex = i;
  1148. a = b;
  1149. }
  1150. return {
  1151. range: [prevIndex, nextIndex],
  1152. t: (xOrY - a) / (b - a)
  1153. };
  1154. }
  1155. function anyStateShowEndLabel(seriesModel) {
  1156. if (seriesModel.get(["endLabel", "show"])) {
  1157. return true;
  1158. }
  1159. for (var i = 0; i < SPECIAL_STATES.length; i++) {
  1160. if (seriesModel.get([SPECIAL_STATES[i], "endLabel", "show"])) {
  1161. return true;
  1162. }
  1163. }
  1164. return false;
  1165. }
  1166. function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {
  1167. if (isCoordinateSystemType(coordSys, "cartesian2d")) {
  1168. var endLabelModel_1 = seriesModel.getModel("endLabel");
  1169. var valueAnimation_1 = endLabelModel_1.get("valueAnimation");
  1170. var data_1 = seriesModel.getData();
  1171. var labelAnimationRecord_1 = {
  1172. lastFrameIndex: 0
  1173. };
  1174. var during = anyStateShowEndLabel(seriesModel) ? function(percent, clipRect) {
  1175. lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);
  1176. } : null;
  1177. var isHorizontal = coordSys.getBaseAxis().isHorizontal();
  1178. var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function() {
  1179. var endLabel = lineView._endLabel;
  1180. if (endLabel && hasAnimation) {
  1181. if (labelAnimationRecord_1.originalX != null) {
  1182. endLabel.attr({
  1183. x: labelAnimationRecord_1.originalX,
  1184. y: labelAnimationRecord_1.originalY
  1185. });
  1186. }
  1187. }
  1188. }, during);
  1189. if (!seriesModel.get("clip", true)) {
  1190. var rectShape = clipPath.shape;
  1191. var expandSize = Math.max(rectShape.width, rectShape.height);
  1192. if (isHorizontal) {
  1193. rectShape.y -= expandSize;
  1194. rectShape.height += expandSize * 2;
  1195. } else {
  1196. rectShape.x -= expandSize;
  1197. rectShape.width += expandSize * 2;
  1198. }
  1199. }
  1200. if (during) {
  1201. during(1, clipPath);
  1202. }
  1203. return clipPath;
  1204. } else {
  1205. if (true) {
  1206. if (seriesModel.get(["endLabel", "show"])) {
  1207. console.warn("endLabel is not supported for lines in polar systems.");
  1208. }
  1209. }
  1210. return createPolarClipPath(coordSys, hasAnimation, seriesModel);
  1211. }
  1212. }
  1213. function getEndLabelStateSpecified(endLabelModel, coordSys) {
  1214. var baseAxis = coordSys.getBaseAxis();
  1215. var isHorizontal = baseAxis.isHorizontal();
  1216. var isBaseInversed = baseAxis.inverse;
  1217. var align = isHorizontal ? isBaseInversed ? "right" : "left" : "center";
  1218. var verticalAlign = isHorizontal ? "middle" : isBaseInversed ? "top" : "bottom";
  1219. return {
  1220. normal: {
  1221. align: endLabelModel.get("align") || align,
  1222. verticalAlign: endLabelModel.get("verticalAlign") || verticalAlign
  1223. }
  1224. };
  1225. }
  1226. var LineView = function(_super) {
  1227. __extends(LineView2, _super);
  1228. function LineView2() {
  1229. return _super !== null && _super.apply(this, arguments) || this;
  1230. }
  1231. LineView2.prototype.init = function() {
  1232. var lineGroup = new Group_default();
  1233. var symbolDraw = new SymbolDraw_default();
  1234. this.group.add(symbolDraw.group);
  1235. this._symbolDraw = symbolDraw;
  1236. this._lineGroup = lineGroup;
  1237. };
  1238. LineView2.prototype.render = function(seriesModel, ecModel, api) {
  1239. var _this = this;
  1240. var coordSys = seriesModel.coordinateSystem;
  1241. var group = this.group;
  1242. var data = seriesModel.getData();
  1243. var lineStyleModel = seriesModel.getModel("lineStyle");
  1244. var areaStyleModel = seriesModel.getModel("areaStyle");
  1245. var points = data.getLayout("points") || [];
  1246. var isCoordSysPolar = coordSys.type === "polar";
  1247. var prevCoordSys = this._coordSys;
  1248. var symbolDraw = this._symbolDraw;
  1249. var polyline = this._polyline;
  1250. var polygon = this._polygon;
  1251. var lineGroup = this._lineGroup;
  1252. var hasAnimation = seriesModel.get("animation");
  1253. var isAreaChart = !areaStyleModel.isEmpty();
  1254. var valueOrigin = areaStyleModel.get("origin");
  1255. var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);
  1256. var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);
  1257. var showSymbol = seriesModel.get("showSymbol");
  1258. var connectNulls = seriesModel.get("connectNulls");
  1259. var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys);
  1260. var oldData = this._data;
  1261. oldData && oldData.eachItemGraphicEl(function(el, idx) {
  1262. if (el.__temp) {
  1263. group.remove(el);
  1264. oldData.setItemGraphicEl(idx, null);
  1265. }
  1266. });
  1267. if (!showSymbol) {
  1268. symbolDraw.remove();
  1269. }
  1270. group.add(lineGroup);
  1271. var step = !isCoordSysPolar ? seriesModel.get("step") : false;
  1272. var clipShapeForSymbol;
  1273. if (coordSys && coordSys.getArea && seriesModel.get("clip", true)) {
  1274. clipShapeForSymbol = coordSys.getArea();
  1275. if (clipShapeForSymbol.width != null) {
  1276. clipShapeForSymbol.x -= 0.1;
  1277. clipShapeForSymbol.y -= 0.1;
  1278. clipShapeForSymbol.width += 0.2;
  1279. clipShapeForSymbol.height += 0.2;
  1280. } else if (clipShapeForSymbol.r0) {
  1281. clipShapeForSymbol.r0 -= 0.5;
  1282. clipShapeForSymbol.r += 0.5;
  1283. }
  1284. }
  1285. this._clipShapeForSymbol = clipShapeForSymbol;
  1286. var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual("style")[data.getVisual("drawType")];
  1287. if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {
  1288. showSymbol && symbolDraw.updateData(data, {
  1289. isIgnore: isIgnoreFunc,
  1290. clipShape: clipShapeForSymbol,
  1291. disableAnimation: true,
  1292. getSymbolPoint: function(idx) {
  1293. return [points[idx * 2], points[idx * 2 + 1]];
  1294. }
  1295. });
  1296. hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);
  1297. if (step) {
  1298. points = turnPointsIntoStep(points, coordSys, step, connectNulls);
  1299. if (stackedOnPoints) {
  1300. stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);
  1301. }
  1302. }
  1303. polyline = this._newPolyline(points);
  1304. if (isAreaChart) {
  1305. polygon = this._newPolygon(points, stackedOnPoints);
  1306. } else if (polygon) {
  1307. lineGroup.remove(polygon);
  1308. polygon = this._polygon = null;
  1309. }
  1310. if (!isCoordSysPolar) {
  1311. this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));
  1312. }
  1313. lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));
  1314. } else {
  1315. if (isAreaChart && !polygon) {
  1316. polygon = this._newPolygon(points, stackedOnPoints);
  1317. } else if (polygon && !isAreaChart) {
  1318. lineGroup.remove(polygon);
  1319. polygon = this._polygon = null;
  1320. }
  1321. if (!isCoordSysPolar) {
  1322. this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));
  1323. }
  1324. var oldClipPath = lineGroup.getClipPath();
  1325. if (oldClipPath) {
  1326. var newClipPath = createLineClipPath(this, coordSys, false, seriesModel);
  1327. initProps(oldClipPath, {
  1328. shape: newClipPath.shape
  1329. }, seriesModel);
  1330. } else {
  1331. lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));
  1332. }
  1333. showSymbol && symbolDraw.updateData(data, {
  1334. isIgnore: isIgnoreFunc,
  1335. clipShape: clipShapeForSymbol,
  1336. disableAnimation: true,
  1337. getSymbolPoint: function(idx) {
  1338. return [points[idx * 2], points[idx * 2 + 1]];
  1339. }
  1340. });
  1341. if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {
  1342. if (hasAnimation) {
  1343. this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls);
  1344. } else {
  1345. if (step) {
  1346. points = turnPointsIntoStep(points, coordSys, step, connectNulls);
  1347. if (stackedOnPoints) {
  1348. stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);
  1349. }
  1350. }
  1351. polyline.setShape({
  1352. points
  1353. });
  1354. polygon && polygon.setShape({
  1355. points,
  1356. stackedOnPoints
  1357. });
  1358. }
  1359. }
  1360. }
  1361. var emphasisModel = seriesModel.getModel("emphasis");
  1362. var focus = emphasisModel.get("focus");
  1363. var blurScope = emphasisModel.get("blurScope");
  1364. var emphasisDisabled = emphasisModel.get("disabled");
  1365. polyline.useStyle(defaults(
  1366. lineStyleModel.getLineStyle(),
  1367. {
  1368. fill: "none",
  1369. stroke: visualColor,
  1370. lineJoin: "bevel"
  1371. }
  1372. ));
  1373. setStatesStylesFromModel(polyline, seriesModel, "lineStyle");
  1374. if (polyline.style.lineWidth > 0 && seriesModel.get(["emphasis", "lineStyle", "width"]) === "bolder") {
  1375. var emphasisLineStyle = polyline.getState("emphasis").style;
  1376. emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1;
  1377. }
  1378. getECData(polyline).seriesIndex = seriesModel.seriesIndex;
  1379. toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled);
  1380. var smooth = getSmooth(seriesModel.get("smooth"));
  1381. var smoothMonotone = seriesModel.get("smoothMonotone");
  1382. polyline.setShape({
  1383. smooth,
  1384. smoothMonotone,
  1385. connectNulls
  1386. });
  1387. if (polygon) {
  1388. var stackedOnSeries = data.getCalculationInfo("stackedOnSeries");
  1389. var stackedOnSmooth = 0;
  1390. polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {
  1391. fill: visualColor,
  1392. opacity: 0.7,
  1393. lineJoin: "bevel",
  1394. decal: data.getVisual("style").decal
  1395. }));
  1396. if (stackedOnSeries) {
  1397. stackedOnSmooth = getSmooth(stackedOnSeries.get("smooth"));
  1398. }
  1399. polygon.setShape({
  1400. smooth,
  1401. stackedOnSmooth,
  1402. smoothMonotone,
  1403. connectNulls
  1404. });
  1405. setStatesStylesFromModel(polygon, seriesModel, "areaStyle");
  1406. getECData(polygon).seriesIndex = seriesModel.seriesIndex;
  1407. toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled);
  1408. }
  1409. var changePolyState = function(toState) {
  1410. _this._changePolyState(toState);
  1411. };
  1412. data.eachItemGraphicEl(function(el) {
  1413. el && (el.onHoverStateChange = changePolyState);
  1414. });
  1415. this._polyline.onHoverStateChange = changePolyState;
  1416. this._data = data;
  1417. this._coordSys = coordSys;
  1418. this._stackedOnPoints = stackedOnPoints;
  1419. this._points = points;
  1420. this._step = step;
  1421. this._valueOrigin = valueOrigin;
  1422. if (seriesModel.get("triggerLineEvent")) {
  1423. this.packEventData(seriesModel, polyline);
  1424. polygon && this.packEventData(seriesModel, polygon);
  1425. }
  1426. };
  1427. LineView2.prototype.packEventData = function(seriesModel, el) {
  1428. getECData(el).eventData = {
  1429. componentType: "series",
  1430. componentSubType: "line",
  1431. componentIndex: seriesModel.componentIndex,
  1432. seriesIndex: seriesModel.seriesIndex,
  1433. seriesName: seriesModel.name,
  1434. seriesType: "line"
  1435. };
  1436. };
  1437. LineView2.prototype.highlight = function(seriesModel, ecModel, api, payload) {
  1438. var data = seriesModel.getData();
  1439. var dataIndex = queryDataIndex(data, payload);
  1440. this._changePolyState("emphasis");
  1441. if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {
  1442. var points = data.getLayout("points");
  1443. var symbol = data.getItemGraphicEl(dataIndex);
  1444. if (!symbol) {
  1445. var x = points[dataIndex * 2];
  1446. var y = points[dataIndex * 2 + 1];
  1447. if (isNaN(x) || isNaN(y)) {
  1448. return;
  1449. }
  1450. if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {
  1451. return;
  1452. }
  1453. var zlevel = seriesModel.get("zlevel");
  1454. var z = seriesModel.get("z");
  1455. symbol = new Symbol_default(data, dataIndex);
  1456. symbol.x = x;
  1457. symbol.y = y;
  1458. symbol.setZ(zlevel, z);
  1459. var symbolLabel = symbol.getSymbolPath().getTextContent();
  1460. if (symbolLabel) {
  1461. symbolLabel.zlevel = zlevel;
  1462. symbolLabel.z = z;
  1463. symbolLabel.z2 = this._polyline.z2 + 1;
  1464. }
  1465. symbol.__temp = true;
  1466. data.setItemGraphicEl(dataIndex, symbol);
  1467. symbol.stopSymbolAnimation(true);
  1468. this.group.add(symbol);
  1469. }
  1470. symbol.highlight();
  1471. } else {
  1472. Chart_default.prototype.highlight.call(this, seriesModel, ecModel, api, payload);
  1473. }
  1474. };
  1475. LineView2.prototype.downplay = function(seriesModel, ecModel, api, payload) {
  1476. var data = seriesModel.getData();
  1477. var dataIndex = queryDataIndex(data, payload);
  1478. this._changePolyState("normal");
  1479. if (dataIndex != null && dataIndex >= 0) {
  1480. var symbol = data.getItemGraphicEl(dataIndex);
  1481. if (symbol) {
  1482. if (symbol.__temp) {
  1483. data.setItemGraphicEl(dataIndex, null);
  1484. this.group.remove(symbol);
  1485. } else {
  1486. symbol.downplay();
  1487. }
  1488. }
  1489. } else {
  1490. Chart_default.prototype.downplay.call(this, seriesModel, ecModel, api, payload);
  1491. }
  1492. };
  1493. LineView2.prototype._changePolyState = function(toState) {
  1494. var polygon = this._polygon;
  1495. setStatesFlag(this._polyline, toState);
  1496. polygon && setStatesFlag(polygon, toState);
  1497. };
  1498. LineView2.prototype._newPolyline = function(points) {
  1499. var polyline = this._polyline;
  1500. if (polyline) {
  1501. this._lineGroup.remove(polyline);
  1502. }
  1503. polyline = new ECPolyline({
  1504. shape: {
  1505. points
  1506. },
  1507. segmentIgnoreThreshold: 2,
  1508. z2: 10
  1509. });
  1510. this._lineGroup.add(polyline);
  1511. this._polyline = polyline;
  1512. return polyline;
  1513. };
  1514. LineView2.prototype._newPolygon = function(points, stackedOnPoints) {
  1515. var polygon = this._polygon;
  1516. if (polygon) {
  1517. this._lineGroup.remove(polygon);
  1518. }
  1519. polygon = new ECPolygon({
  1520. shape: {
  1521. points,
  1522. stackedOnPoints
  1523. },
  1524. segmentIgnoreThreshold: 2
  1525. });
  1526. this._lineGroup.add(polygon);
  1527. this._polygon = polygon;
  1528. return polygon;
  1529. };
  1530. LineView2.prototype._initSymbolLabelAnimation = function(data, coordSys, clipShape) {
  1531. var isHorizontalOrRadial;
  1532. var isCoordSysPolar;
  1533. var baseAxis = coordSys.getBaseAxis();
  1534. var isAxisInverse = baseAxis.inverse;
  1535. if (coordSys.type === "cartesian2d") {
  1536. isHorizontalOrRadial = baseAxis.isHorizontal();
  1537. isCoordSysPolar = false;
  1538. } else if (coordSys.type === "polar") {
  1539. isHorizontalOrRadial = baseAxis.dim === "angle";
  1540. isCoordSysPolar = true;
  1541. }
  1542. var seriesModel = data.hostModel;
  1543. var seriesDuration = seriesModel.get("animationDuration");
  1544. if (isFunction(seriesDuration)) {
  1545. seriesDuration = seriesDuration(null);
  1546. }
  1547. var seriesDalay = seriesModel.get("animationDelay") || 0;
  1548. var seriesDalayValue = isFunction(seriesDalay) ? seriesDalay(null) : seriesDalay;
  1549. data.eachItemGraphicEl(function(symbol, idx) {
  1550. var el = symbol;
  1551. if (el) {
  1552. var point = [symbol.x, symbol.y];
  1553. var start = void 0;
  1554. var end = void 0;
  1555. var current = void 0;
  1556. if (clipShape) {
  1557. if (isCoordSysPolar) {
  1558. var polarClip = clipShape;
  1559. var coord = coordSys.pointToCoord(point);
  1560. if (isHorizontalOrRadial) {
  1561. start = polarClip.startAngle;
  1562. end = polarClip.endAngle;
  1563. current = -coord[1] / 180 * Math.PI;
  1564. } else {
  1565. start = polarClip.r0;
  1566. end = polarClip.r;
  1567. current = coord[0];
  1568. }
  1569. } else {
  1570. var gridClip = clipShape;
  1571. if (isHorizontalOrRadial) {
  1572. start = gridClip.x;
  1573. end = gridClip.x + gridClip.width;
  1574. current = symbol.x;
  1575. } else {
  1576. start = gridClip.y + gridClip.height;
  1577. end = gridClip.y;
  1578. current = symbol.y;
  1579. }
  1580. }
  1581. }
  1582. var ratio = end === start ? 0 : (current - start) / (end - start);
  1583. if (isAxisInverse) {
  1584. ratio = 1 - ratio;
  1585. }
  1586. var delay = isFunction(seriesDalay) ? seriesDalay(idx) : seriesDuration * ratio + seriesDalayValue;
  1587. var symbolPath = el.getSymbolPath();
  1588. var text = symbolPath.getTextContent();
  1589. el.attr({
  1590. scaleX: 0,
  1591. scaleY: 0
  1592. });
  1593. el.animateTo({
  1594. scaleX: 1,
  1595. scaleY: 1
  1596. }, {
  1597. duration: 200,
  1598. setToFinal: true,
  1599. delay
  1600. });
  1601. if (text) {
  1602. text.animateFrom({
  1603. style: {
  1604. opacity: 0
  1605. }
  1606. }, {
  1607. duration: 300,
  1608. delay
  1609. });
  1610. }
  1611. symbolPath.disableLabelAnimation = true;
  1612. }
  1613. });
  1614. };
  1615. LineView2.prototype._initOrUpdateEndLabel = function(seriesModel, coordSys, inheritColor) {
  1616. var endLabelModel = seriesModel.getModel("endLabel");
  1617. if (anyStateShowEndLabel(seriesModel)) {
  1618. var data_2 = seriesModel.getData();
  1619. var polyline = this._polyline;
  1620. var points = data_2.getLayout("points");
  1621. if (!points) {
  1622. polyline.removeTextContent();
  1623. this._endLabel = null;
  1624. return;
  1625. }
  1626. var endLabel = this._endLabel;
  1627. if (!endLabel) {
  1628. endLabel = this._endLabel = new Text_default({
  1629. z2: 200
  1630. });
  1631. endLabel.ignoreClip = true;
  1632. polyline.setTextContent(this._endLabel);
  1633. polyline.disableLabelAnimation = true;
  1634. }
  1635. var dataIndex = getLastIndexNotNull(points);
  1636. if (dataIndex >= 0) {
  1637. setLabelStyle(polyline, getLabelStatesModels(seriesModel, "endLabel"), {
  1638. inheritColor,
  1639. labelFetcher: seriesModel,
  1640. labelDataIndex: dataIndex,
  1641. defaultText: function(dataIndex2, opt, interpolatedValue) {
  1642. return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex2);
  1643. },
  1644. enableTextSetter: true
  1645. }, getEndLabelStateSpecified(endLabelModel, coordSys));
  1646. polyline.textConfig.position = null;
  1647. }
  1648. } else if (this._endLabel) {
  1649. this._polyline.removeTextContent();
  1650. this._endLabel = null;
  1651. }
  1652. };
  1653. LineView2.prototype._endLabelOnDuring = function(percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {
  1654. var endLabel = this._endLabel;
  1655. var polyline = this._polyline;
  1656. if (endLabel) {
  1657. if (percent < 1 && animationRecord.originalX == null) {
  1658. animationRecord.originalX = endLabel.x;
  1659. animationRecord.originalY = endLabel.y;
  1660. }
  1661. var points = data.getLayout("points");
  1662. var seriesModel = data.hostModel;
  1663. var connectNulls = seriesModel.get("connectNulls");
  1664. var precision = endLabelModel.get("precision");
  1665. var distance = endLabelModel.get("distance") || 0;
  1666. var baseAxis = coordSys.getBaseAxis();
  1667. var isHorizontal = baseAxis.isHorizontal();
  1668. var isBaseInversed = baseAxis.inverse;
  1669. var clipShape = clipRect.shape;
  1670. var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y;
  1671. var distanceX = (isHorizontal ? distance : 0) * (isBaseInversed ? -1 : 1);
  1672. var distanceY = (isHorizontal ? 0 : -distance) * (isBaseInversed ? -1 : 1);
  1673. var dim = isHorizontal ? "x" : "y";
  1674. var dataIndexRange = getIndexRange(points, xOrY, dim);
  1675. var indices = dataIndexRange.range;
  1676. var diff = indices[1] - indices[0];
  1677. var value = void 0;
  1678. if (diff >= 1) {
  1679. if (diff > 1 && !connectNulls) {
  1680. var pt = getPointAtIndex(points, indices[0]);
  1681. endLabel.attr({
  1682. x: pt[0] + distanceX,
  1683. y: pt[1] + distanceY
  1684. });
  1685. valueAnimation && (value = seriesModel.getRawValue(indices[0]));
  1686. } else {
  1687. var pt = polyline.getPointOn(xOrY, dim);
  1688. pt && endLabel.attr({
  1689. x: pt[0] + distanceX,
  1690. y: pt[1] + distanceY
  1691. });
  1692. var startValue = seriesModel.getRawValue(indices[0]);
  1693. var endValue = seriesModel.getRawValue(indices[1]);
  1694. valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));
  1695. }
  1696. animationRecord.lastFrameIndex = indices[0];
  1697. } else {
  1698. var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0;
  1699. var pt = getPointAtIndex(points, idx);
  1700. valueAnimation && (value = seriesModel.getRawValue(idx));
  1701. endLabel.attr({
  1702. x: pt[0] + distanceX,
  1703. y: pt[1] + distanceY
  1704. });
  1705. }
  1706. if (valueAnimation) {
  1707. labelInner(endLabel).setLabelText(value);
  1708. }
  1709. }
  1710. };
  1711. LineView2.prototype._doUpdateAnimation = function(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) {
  1712. var polyline = this._polyline;
  1713. var polygon = this._polygon;
  1714. var seriesModel = data.hostModel;
  1715. var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);
  1716. var current = diff.current;
  1717. var stackedOnCurrent = diff.stackedOnCurrent;
  1718. var next = diff.next;
  1719. var stackedOnNext = diff.stackedOnNext;
  1720. if (step) {
  1721. current = turnPointsIntoStep(diff.current, coordSys, step, connectNulls);
  1722. stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step, connectNulls);
  1723. next = turnPointsIntoStep(diff.next, coordSys, step, connectNulls);
  1724. stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step, connectNulls);
  1725. }
  1726. if (getBoundingDiff(current, next) > 3e3 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3e3) {
  1727. polyline.stopAnimation();
  1728. polyline.setShape({
  1729. points: next
  1730. });
  1731. if (polygon) {
  1732. polygon.stopAnimation();
  1733. polygon.setShape({
  1734. points: next,
  1735. stackedOnPoints: stackedOnNext
  1736. });
  1737. }
  1738. return;
  1739. }
  1740. polyline.shape.__points = diff.current;
  1741. polyline.shape.points = current;
  1742. var target = {
  1743. shape: {
  1744. points: next
  1745. }
  1746. };
  1747. if (diff.current !== current) {
  1748. target.shape.__points = diff.next;
  1749. }
  1750. polyline.stopAnimation();
  1751. updateProps(polyline, target, seriesModel);
  1752. if (polygon) {
  1753. polygon.setShape({
  1754. points: current,
  1755. stackedOnPoints: stackedOnCurrent
  1756. });
  1757. polygon.stopAnimation();
  1758. updateProps(polygon, {
  1759. shape: {
  1760. stackedOnPoints: stackedOnNext
  1761. }
  1762. }, seriesModel);
  1763. if (polyline.shape.points !== polygon.shape.points) {
  1764. polygon.shape.points = polyline.shape.points;
  1765. }
  1766. }
  1767. var updatedDataInfo = [];
  1768. var diffStatus = diff.status;
  1769. for (var i = 0; i < diffStatus.length; i++) {
  1770. var cmd = diffStatus[i].cmd;
  1771. if (cmd === "=") {
  1772. var el = data.getItemGraphicEl(diffStatus[i].idx1);
  1773. if (el) {
  1774. updatedDataInfo.push({
  1775. el,
  1776. ptIdx: i
  1777. });
  1778. }
  1779. }
  1780. }
  1781. if (polyline.animators && polyline.animators.length) {
  1782. polyline.animators[0].during(function() {
  1783. polygon && polygon.dirtyShape();
  1784. var points = polyline.shape.__points;
  1785. for (var i2 = 0; i2 < updatedDataInfo.length; i2++) {
  1786. var el2 = updatedDataInfo[i2].el;
  1787. var offset = updatedDataInfo[i2].ptIdx * 2;
  1788. el2.x = points[offset];
  1789. el2.y = points[offset + 1];
  1790. el2.markRedraw();
  1791. }
  1792. });
  1793. }
  1794. };
  1795. LineView2.prototype.remove = function(ecModel) {
  1796. var group = this.group;
  1797. var oldData = this._data;
  1798. this._lineGroup.removeAll();
  1799. this._symbolDraw.remove(true);
  1800. oldData && oldData.eachItemGraphicEl(function(el, idx) {
  1801. if (el.__temp) {
  1802. group.remove(el);
  1803. oldData.setItemGraphicEl(idx, null);
  1804. }
  1805. });
  1806. this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null;
  1807. };
  1808. LineView2.type = "line";
  1809. return LineView2;
  1810. }(Chart_default);
  1811. var LineView_default = LineView;
  1812. // node_modules/echarts/lib/layout/points.js
  1813. init_define_APP_INFO();
  1814. function pointsLayout(seriesType, forceStoreInTypedArray) {
  1815. return {
  1816. seriesType,
  1817. plan: createRenderPlanner(),
  1818. reset: function(seriesModel) {
  1819. var data = seriesModel.getData();
  1820. var coordSys = seriesModel.coordinateSystem;
  1821. var pipelineContext = seriesModel.pipelineContext;
  1822. var useTypedArray = forceStoreInTypedArray || pipelineContext.large;
  1823. if (!coordSys) {
  1824. return;
  1825. }
  1826. var dims = map(coordSys.dimensions, function(dim) {
  1827. return data.mapDimension(dim);
  1828. }).slice(0, 2);
  1829. var dimLen = dims.length;
  1830. var stackResultDim = data.getCalculationInfo("stackResultDimension");
  1831. if (isDimensionStacked(data, dims[0])) {
  1832. dims[0] = stackResultDim;
  1833. }
  1834. if (isDimensionStacked(data, dims[1])) {
  1835. dims[1] = stackResultDim;
  1836. }
  1837. var store = data.getStore();
  1838. var dimIdx0 = data.getDimensionIndex(dims[0]);
  1839. var dimIdx1 = data.getDimensionIndex(dims[1]);
  1840. return dimLen && {
  1841. progress: function(params, data2) {
  1842. var segCount = params.end - params.start;
  1843. var points = useTypedArray && createFloat32Array(segCount * dimLen);
  1844. var tmpIn = [];
  1845. var tmpOut = [];
  1846. for (var i = params.start, offset = 0; i < params.end; i++) {
  1847. var point = void 0;
  1848. if (dimLen === 1) {
  1849. var x = store.get(dimIdx0, i);
  1850. point = coordSys.dataToPoint(x, null, tmpOut);
  1851. } else {
  1852. tmpIn[0] = store.get(dimIdx0, i);
  1853. tmpIn[1] = store.get(dimIdx1, i);
  1854. point = coordSys.dataToPoint(tmpIn, null, tmpOut);
  1855. }
  1856. if (useTypedArray) {
  1857. points[offset++] = point[0];
  1858. points[offset++] = point[1];
  1859. } else {
  1860. data2.setItemLayout(i, point.slice());
  1861. }
  1862. }
  1863. useTypedArray && data2.setLayout("points", points);
  1864. }
  1865. };
  1866. }
  1867. };
  1868. }
  1869. // node_modules/echarts/lib/processor/dataSample.js
  1870. init_define_APP_INFO();
  1871. var samplers = {
  1872. average: function(frame) {
  1873. var sum2 = 0;
  1874. var count = 0;
  1875. for (var i = 0; i < frame.length; i++) {
  1876. if (!isNaN(frame[i])) {
  1877. sum2 += frame[i];
  1878. count++;
  1879. }
  1880. }
  1881. return count === 0 ? NaN : sum2 / count;
  1882. },
  1883. sum: function(frame) {
  1884. var sum2 = 0;
  1885. for (var i = 0; i < frame.length; i++) {
  1886. sum2 += frame[i] || 0;
  1887. }
  1888. return sum2;
  1889. },
  1890. max: function(frame) {
  1891. var max = -Infinity;
  1892. for (var i = 0; i < frame.length; i++) {
  1893. frame[i] > max && (max = frame[i]);
  1894. }
  1895. return isFinite(max) ? max : NaN;
  1896. },
  1897. min: function(frame) {
  1898. var min = Infinity;
  1899. for (var i = 0; i < frame.length; i++) {
  1900. frame[i] < min && (min = frame[i]);
  1901. }
  1902. return isFinite(min) ? min : NaN;
  1903. },
  1904. nearest: function(frame) {
  1905. return frame[0];
  1906. }
  1907. };
  1908. var indexSampler = function(frame) {
  1909. return Math.round(frame.length / 2);
  1910. };
  1911. function dataSample(seriesType) {
  1912. return {
  1913. seriesType,
  1914. reset: function(seriesModel, ecModel, api) {
  1915. var data = seriesModel.getData();
  1916. var sampling = seriesModel.get("sampling");
  1917. var coordSys = seriesModel.coordinateSystem;
  1918. var count = data.count();
  1919. if (count > 10 && coordSys.type === "cartesian2d" && sampling) {
  1920. var baseAxis = coordSys.getBaseAxis();
  1921. var valueAxis = coordSys.getOtherAxis(baseAxis);
  1922. var extent = baseAxis.getExtent();
  1923. var dpr = api.getDevicePixelRatio();
  1924. var size = Math.abs(extent[1] - extent[0]) * (dpr || 1);
  1925. var rate = Math.round(count / size);
  1926. if (isFinite(rate) && rate > 1) {
  1927. if (sampling === "lttb") {
  1928. seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis.dim), 1 / rate));
  1929. }
  1930. var sampler = void 0;
  1931. if (isString(sampling)) {
  1932. sampler = samplers[sampling];
  1933. } else if (isFunction(sampling)) {
  1934. sampler = sampling;
  1935. }
  1936. if (sampler) {
  1937. seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));
  1938. }
  1939. }
  1940. }
  1941. }
  1942. };
  1943. }
  1944. // node_modules/echarts/lib/chart/line/install.js
  1945. function install5(registers) {
  1946. registers.registerChartView(LineView_default);
  1947. registers.registerSeriesModel(LineSeries_default);
  1948. registers.registerLayout(pointsLayout("line", true));
  1949. registers.registerVisual({
  1950. seriesType: "line",
  1951. reset: function(seriesModel) {
  1952. var data = seriesModel.getData();
  1953. var lineStyle = seriesModel.getModel("lineStyle").getLineStyle();
  1954. if (lineStyle && !lineStyle.stroke) {
  1955. lineStyle.stroke = data.getVisual("style").fill;
  1956. }
  1957. data.setVisual("legendLineStyle", lineStyle);
  1958. }
  1959. });
  1960. registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("line"));
  1961. }
  1962. // node_modules/echarts/lib/chart/bar/install.js
  1963. init_define_APP_INFO();
  1964. // node_modules/echarts/lib/chart/bar/BarSeries.js
  1965. init_define_APP_INFO();
  1966. // node_modules/echarts/lib/chart/bar/BaseBarSeries.js
  1967. init_define_APP_INFO();
  1968. var BaseBarSeriesModel = function(_super) {
  1969. __extends(BaseBarSeriesModel2, _super);
  1970. function BaseBarSeriesModel2() {
  1971. var _this = _super !== null && _super.apply(this, arguments) || this;
  1972. _this.type = BaseBarSeriesModel2.type;
  1973. return _this;
  1974. }
  1975. BaseBarSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  1976. return createSeriesData_default(null, this, {
  1977. useEncodeDefaulter: true
  1978. });
  1979. };
  1980. BaseBarSeriesModel2.prototype.getMarkerPosition = function(value) {
  1981. var coordSys = this.coordinateSystem;
  1982. if (coordSys && coordSys.clampData) {
  1983. var pt = coordSys.dataToPoint(coordSys.clampData(value));
  1984. var data = this.getData();
  1985. var offset = data.getLayout("offset");
  1986. var size = data.getLayout("size");
  1987. var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;
  1988. pt[offsetIndex] += offset + size / 2;
  1989. return pt;
  1990. }
  1991. return [NaN, NaN];
  1992. };
  1993. BaseBarSeriesModel2.type = "series.__base_bar__";
  1994. BaseBarSeriesModel2.defaultOption = {
  1995. z: 2,
  1996. coordinateSystem: "cartesian2d",
  1997. legendHoverLink: true,
  1998. barMinHeight: 0,
  1999. barMinAngle: 0,
  2000. large: false,
  2001. largeThreshold: 400,
  2002. progressive: 3e3,
  2003. progressiveChunkMode: "mod"
  2004. };
  2005. return BaseBarSeriesModel2;
  2006. }(Series_default);
  2007. Series_default.registerClass(BaseBarSeriesModel);
  2008. var BaseBarSeries_default = BaseBarSeriesModel;
  2009. // node_modules/echarts/lib/chart/bar/BarSeries.js
  2010. var BarSeriesModel = function(_super) {
  2011. __extends(BarSeriesModel2, _super);
  2012. function BarSeriesModel2() {
  2013. var _this = _super !== null && _super.apply(this, arguments) || this;
  2014. _this.type = BarSeriesModel2.type;
  2015. return _this;
  2016. }
  2017. BarSeriesModel2.prototype.getInitialData = function() {
  2018. return createSeriesData_default(null, this, {
  2019. useEncodeDefaulter: true,
  2020. createInvertedIndices: !!this.get("realtimeSort", true) || null
  2021. });
  2022. };
  2023. BarSeriesModel2.prototype.getProgressive = function() {
  2024. return this.get("large") ? this.get("progressive") : false;
  2025. };
  2026. BarSeriesModel2.prototype.getProgressiveThreshold = function() {
  2027. var progressiveThreshold = this.get("progressiveThreshold");
  2028. var largeThreshold = this.get("largeThreshold");
  2029. if (largeThreshold > progressiveThreshold) {
  2030. progressiveThreshold = largeThreshold;
  2031. }
  2032. return progressiveThreshold;
  2033. };
  2034. BarSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
  2035. return selectors.rect(data.getItemLayout(dataIndex));
  2036. };
  2037. BarSeriesModel2.type = "series.bar";
  2038. BarSeriesModel2.dependencies = ["grid", "polar"];
  2039. BarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeries_default.defaultOption, {
  2040. clip: true,
  2041. roundCap: false,
  2042. showBackground: false,
  2043. backgroundStyle: {
  2044. color: "rgba(180, 180, 180, 0.2)",
  2045. borderColor: null,
  2046. borderWidth: 0,
  2047. borderType: "solid",
  2048. borderRadius: 0,
  2049. shadowBlur: 0,
  2050. shadowColor: null,
  2051. shadowOffsetX: 0,
  2052. shadowOffsetY: 0,
  2053. opacity: 1
  2054. },
  2055. select: {
  2056. itemStyle: {
  2057. borderColor: "#212121"
  2058. }
  2059. },
  2060. realtimeSort: false
  2061. });
  2062. return BarSeriesModel2;
  2063. }(BaseBarSeries_default);
  2064. var BarSeries_default = BarSeriesModel;
  2065. // node_modules/echarts/lib/chart/bar/BarView.js
  2066. init_define_APP_INFO();
  2067. // node_modules/echarts/lib/util/shape/sausage.js
  2068. init_define_APP_INFO();
  2069. var SausageShape = function() {
  2070. function SausageShape2() {
  2071. this.cx = 0;
  2072. this.cy = 0;
  2073. this.r0 = 0;
  2074. this.r = 0;
  2075. this.startAngle = 0;
  2076. this.endAngle = Math.PI * 2;
  2077. this.clockwise = true;
  2078. }
  2079. return SausageShape2;
  2080. }();
  2081. var SausagePath = function(_super) {
  2082. __extends(SausagePath2, _super);
  2083. function SausagePath2(opts) {
  2084. var _this = _super.call(this, opts) || this;
  2085. _this.type = "sausage";
  2086. return _this;
  2087. }
  2088. SausagePath2.prototype.getDefaultShape = function() {
  2089. return new SausageShape();
  2090. };
  2091. SausagePath2.prototype.buildPath = function(ctx, shape) {
  2092. var cx = shape.cx;
  2093. var cy = shape.cy;
  2094. var r0 = Math.max(shape.r0 || 0, 0);
  2095. var r = Math.max(shape.r, 0);
  2096. var dr = (r - r0) * 0.5;
  2097. var rCenter = r0 + dr;
  2098. var startAngle = shape.startAngle;
  2099. var endAngle = shape.endAngle;
  2100. var clockwise = shape.clockwise;
  2101. var PI22 = Math.PI * 2;
  2102. var lessThanCircle = clockwise ? endAngle - startAngle < PI22 : startAngle - endAngle < PI22;
  2103. if (!lessThanCircle) {
  2104. startAngle = endAngle - (clockwise ? PI22 : -PI22);
  2105. }
  2106. var unitStartX = Math.cos(startAngle);
  2107. var unitStartY = Math.sin(startAngle);
  2108. var unitEndX = Math.cos(endAngle);
  2109. var unitEndY = Math.sin(endAngle);
  2110. if (lessThanCircle) {
  2111. ctx.moveTo(unitStartX * r0 + cx, unitStartY * r0 + cy);
  2112. ctx.arc(unitStartX * rCenter + cx, unitStartY * rCenter + cy, dr, -Math.PI + startAngle, startAngle, !clockwise);
  2113. } else {
  2114. ctx.moveTo(unitStartX * r + cx, unitStartY * r + cy);
  2115. }
  2116. ctx.arc(cx, cy, r, startAngle, endAngle, !clockwise);
  2117. ctx.arc(unitEndX * rCenter + cx, unitEndY * rCenter + cy, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);
  2118. if (r0 !== 0) {
  2119. ctx.arc(cx, cy, r0, endAngle, startAngle, clockwise);
  2120. }
  2121. };
  2122. return SausagePath2;
  2123. }(Path_default);
  2124. var sausage_default = SausagePath;
  2125. // node_modules/echarts/lib/label/sectorLabel.js
  2126. init_define_APP_INFO();
  2127. function createSectorCalculateTextPosition(positionMapping, opts) {
  2128. opts = opts || {};
  2129. var isRoundCap = opts.isRoundCap;
  2130. return function(out, opts2, boundingRect) {
  2131. var textPosition = opts2.position;
  2132. if (!textPosition || textPosition instanceof Array) {
  2133. return calculateTextPosition(out, opts2, boundingRect);
  2134. }
  2135. var mappedSectorPosition = positionMapping(textPosition);
  2136. var distance = opts2.distance != null ? opts2.distance : 5;
  2137. var sector = this.shape;
  2138. var cx = sector.cx;
  2139. var cy = sector.cy;
  2140. var r = sector.r;
  2141. var r0 = sector.r0;
  2142. var middleR = (r + r0) / 2;
  2143. var startAngle = sector.startAngle;
  2144. var endAngle = sector.endAngle;
  2145. var middleAngle = (startAngle + endAngle) / 2;
  2146. var extraDist = isRoundCap ? Math.abs(r - r0) / 2 : 0;
  2147. var mathCos = Math.cos;
  2148. var mathSin = Math.sin;
  2149. var x = cx + r * mathCos(startAngle);
  2150. var y = cy + r * mathSin(startAngle);
  2151. var textAlign = "left";
  2152. var textVerticalAlign = "top";
  2153. switch (mappedSectorPosition) {
  2154. case "startArc":
  2155. x = cx + (r0 - distance) * mathCos(middleAngle);
  2156. y = cy + (r0 - distance) * mathSin(middleAngle);
  2157. textAlign = "center";
  2158. textVerticalAlign = "top";
  2159. break;
  2160. case "insideStartArc":
  2161. x = cx + (r0 + distance) * mathCos(middleAngle);
  2162. y = cy + (r0 + distance) * mathSin(middleAngle);
  2163. textAlign = "center";
  2164. textVerticalAlign = "bottom";
  2165. break;
  2166. case "startAngle":
  2167. x = cx + middleR * mathCos(startAngle) + adjustAngleDistanceX(startAngle, distance + extraDist, false);
  2168. y = cy + middleR * mathSin(startAngle) + adjustAngleDistanceY(startAngle, distance + extraDist, false);
  2169. textAlign = "right";
  2170. textVerticalAlign = "middle";
  2171. break;
  2172. case "insideStartAngle":
  2173. x = cx + middleR * mathCos(startAngle) + adjustAngleDistanceX(startAngle, -distance + extraDist, false);
  2174. y = cy + middleR * mathSin(startAngle) + adjustAngleDistanceY(startAngle, -distance + extraDist, false);
  2175. textAlign = "left";
  2176. textVerticalAlign = "middle";
  2177. break;
  2178. case "middle":
  2179. x = cx + middleR * mathCos(middleAngle);
  2180. y = cy + middleR * mathSin(middleAngle);
  2181. textAlign = "center";
  2182. textVerticalAlign = "middle";
  2183. break;
  2184. case "endArc":
  2185. x = cx + (r + distance) * mathCos(middleAngle);
  2186. y = cy + (r + distance) * mathSin(middleAngle);
  2187. textAlign = "center";
  2188. textVerticalAlign = "bottom";
  2189. break;
  2190. case "insideEndArc":
  2191. x = cx + (r - distance) * mathCos(middleAngle);
  2192. y = cy + (r - distance) * mathSin(middleAngle);
  2193. textAlign = "center";
  2194. textVerticalAlign = "top";
  2195. break;
  2196. case "endAngle":
  2197. x = cx + middleR * mathCos(endAngle) + adjustAngleDistanceX(endAngle, distance + extraDist, true);
  2198. y = cy + middleR * mathSin(endAngle) + adjustAngleDistanceY(endAngle, distance + extraDist, true);
  2199. textAlign = "left";
  2200. textVerticalAlign = "middle";
  2201. break;
  2202. case "insideEndAngle":
  2203. x = cx + middleR * mathCos(endAngle) + adjustAngleDistanceX(endAngle, -distance + extraDist, true);
  2204. y = cy + middleR * mathSin(endAngle) + adjustAngleDistanceY(endAngle, -distance + extraDist, true);
  2205. textAlign = "right";
  2206. textVerticalAlign = "middle";
  2207. break;
  2208. default:
  2209. return calculateTextPosition(out, opts2, boundingRect);
  2210. }
  2211. out = out || {};
  2212. out.x = x;
  2213. out.y = y;
  2214. out.align = textAlign;
  2215. out.verticalAlign = textVerticalAlign;
  2216. return out;
  2217. };
  2218. }
  2219. function setSectorTextRotation(sector, textPosition, positionMapping, rotateType) {
  2220. if (isNumber(rotateType)) {
  2221. sector.setTextConfig({
  2222. rotation: rotateType
  2223. });
  2224. return;
  2225. } else if (isArray(textPosition)) {
  2226. sector.setTextConfig({
  2227. rotation: 0
  2228. });
  2229. return;
  2230. }
  2231. var shape = sector.shape;
  2232. var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle;
  2233. var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle;
  2234. var middleAngle = (startAngle + endAngle) / 2;
  2235. var anchorAngle;
  2236. var mappedSectorPosition = positionMapping(textPosition);
  2237. switch (mappedSectorPosition) {
  2238. case "startArc":
  2239. case "insideStartArc":
  2240. case "middle":
  2241. case "insideEndArc":
  2242. case "endArc":
  2243. anchorAngle = middleAngle;
  2244. break;
  2245. case "startAngle":
  2246. case "insideStartAngle":
  2247. anchorAngle = startAngle;
  2248. break;
  2249. case "endAngle":
  2250. case "insideEndAngle":
  2251. anchorAngle = endAngle;
  2252. break;
  2253. default:
  2254. sector.setTextConfig({
  2255. rotation: 0
  2256. });
  2257. return;
  2258. }
  2259. var rotate = Math.PI * 1.5 - anchorAngle;
  2260. if (mappedSectorPosition === "middle" && rotate > Math.PI / 2 && rotate < Math.PI * 1.5) {
  2261. rotate -= Math.PI;
  2262. }
  2263. sector.setTextConfig({
  2264. rotation: rotate
  2265. });
  2266. }
  2267. function adjustAngleDistanceX(angle, distance, isEnd) {
  2268. return distance * Math.sin(angle) * (isEnd ? -1 : 1);
  2269. }
  2270. function adjustAngleDistanceY(angle, distance, isEnd) {
  2271. return distance * Math.cos(angle) * (isEnd ? 1 : -1);
  2272. }
  2273. // node_modules/echarts/lib/chart/bar/BarView.js
  2274. var mathMax2 = Math.max;
  2275. var mathMin2 = Math.min;
  2276. function getClipArea(coord, data) {
  2277. var coordSysClipArea = coord.getArea && coord.getArea();
  2278. if (isCoordinateSystemType(coord, "cartesian2d")) {
  2279. var baseAxis = coord.getBaseAxis();
  2280. if (baseAxis.type !== "category" || !baseAxis.onBand) {
  2281. var expandWidth = data.getLayout("bandWidth");
  2282. if (baseAxis.isHorizontal()) {
  2283. coordSysClipArea.x -= expandWidth;
  2284. coordSysClipArea.width += expandWidth * 2;
  2285. } else {
  2286. coordSysClipArea.y -= expandWidth;
  2287. coordSysClipArea.height += expandWidth * 2;
  2288. }
  2289. }
  2290. }
  2291. return coordSysClipArea;
  2292. }
  2293. var BarView = function(_super) {
  2294. __extends(BarView2, _super);
  2295. function BarView2() {
  2296. var _this = _super.call(this) || this;
  2297. _this.type = BarView2.type;
  2298. _this._isFirstFrame = true;
  2299. return _this;
  2300. }
  2301. BarView2.prototype.render = function(seriesModel, ecModel, api, payload) {
  2302. this._model = seriesModel;
  2303. this._removeOnRenderedListener(api);
  2304. this._updateDrawMode(seriesModel);
  2305. var coordinateSystemType = seriesModel.get("coordinateSystem");
  2306. if (coordinateSystemType === "cartesian2d" || coordinateSystemType === "polar") {
  2307. this._progressiveEls = null;
  2308. this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api, payload);
  2309. } else if (true) {
  2310. warn("Only cartesian2d and polar supported for bar.");
  2311. }
  2312. };
  2313. BarView2.prototype.incrementalPrepareRender = function(seriesModel) {
  2314. this._clear();
  2315. this._updateDrawMode(seriesModel);
  2316. this._updateLargeClip(seriesModel);
  2317. };
  2318. BarView2.prototype.incrementalRender = function(params, seriesModel) {
  2319. this._progressiveEls = [];
  2320. this._incrementalRenderLarge(params, seriesModel);
  2321. };
  2322. BarView2.prototype.eachRendered = function(cb) {
  2323. traverseElements(this._progressiveEls || this.group, cb);
  2324. };
  2325. BarView2.prototype._updateDrawMode = function(seriesModel) {
  2326. var isLargeDraw = seriesModel.pipelineContext.large;
  2327. if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {
  2328. this._isLargeDraw = isLargeDraw;
  2329. this._clear();
  2330. }
  2331. };
  2332. BarView2.prototype._renderNormal = function(seriesModel, ecModel, api, payload) {
  2333. var group = this.group;
  2334. var data = seriesModel.getData();
  2335. var oldData = this._data;
  2336. var coord = seriesModel.coordinateSystem;
  2337. var baseAxis = coord.getBaseAxis();
  2338. var isHorizontalOrRadial;
  2339. if (coord.type === "cartesian2d") {
  2340. isHorizontalOrRadial = baseAxis.isHorizontal();
  2341. } else if (coord.type === "polar") {
  2342. isHorizontalOrRadial = baseAxis.dim === "angle";
  2343. }
  2344. var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;
  2345. var realtimeSortCfg = shouldRealtimeSort(seriesModel, coord);
  2346. if (realtimeSortCfg) {
  2347. this._enableRealtimeSort(realtimeSortCfg, data, api);
  2348. }
  2349. var needsClip = seriesModel.get("clip", true) || realtimeSortCfg;
  2350. var coordSysClipArea = getClipArea(coord, data);
  2351. group.removeClipPath();
  2352. var roundCap = seriesModel.get("roundCap", true);
  2353. var drawBackground = seriesModel.get("showBackground", true);
  2354. var backgroundModel = seriesModel.getModel("backgroundStyle");
  2355. var barBorderRadius = backgroundModel.get("borderRadius") || 0;
  2356. var bgEls = [];
  2357. var oldBgEls = this._backgroundEls;
  2358. var isInitSort = payload && payload.isInitSort;
  2359. var isChangeOrder = payload && payload.type === "changeAxisOrder";
  2360. function createBackground(dataIndex) {
  2361. var bgLayout = getLayout[coord.type](data, dataIndex);
  2362. var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);
  2363. bgEl.useStyle(backgroundModel.getItemStyle());
  2364. if (coord.type === "cartesian2d") {
  2365. bgEl.setShape("r", barBorderRadius);
  2366. }
  2367. bgEls[dataIndex] = bgEl;
  2368. return bgEl;
  2369. }
  2370. ;
  2371. data.diff(oldData).add(function(dataIndex) {
  2372. var itemModel = data.getItemModel(dataIndex);
  2373. var layout2 = getLayout[coord.type](data, dataIndex, itemModel);
  2374. if (drawBackground) {
  2375. createBackground(dataIndex);
  2376. }
  2377. if (!data.hasValue(dataIndex) || !isValidLayout[coord.type](layout2)) {
  2378. return;
  2379. }
  2380. var isClipped = false;
  2381. if (needsClip) {
  2382. isClipped = clip[coord.type](coordSysClipArea, layout2);
  2383. }
  2384. var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout2, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);
  2385. if (realtimeSortCfg) {
  2386. el.forceLabelAnimation = true;
  2387. }
  2388. updateStyle(el, data, dataIndex, itemModel, layout2, seriesModel, isHorizontalOrRadial, coord.type === "polar");
  2389. if (isInitSort) {
  2390. el.attr({
  2391. shape: layout2
  2392. });
  2393. } else if (realtimeSortCfg) {
  2394. updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout2, dataIndex, isHorizontalOrRadial, false, false);
  2395. } else {
  2396. initProps(el, {
  2397. shape: layout2
  2398. }, seriesModel, dataIndex);
  2399. }
  2400. data.setItemGraphicEl(dataIndex, el);
  2401. group.add(el);
  2402. el.ignore = isClipped;
  2403. }).update(function(newIndex, oldIndex) {
  2404. var itemModel = data.getItemModel(newIndex);
  2405. var layout2 = getLayout[coord.type](data, newIndex, itemModel);
  2406. if (drawBackground) {
  2407. var bgEl = void 0;
  2408. if (oldBgEls.length === 0) {
  2409. bgEl = createBackground(oldIndex);
  2410. } else {
  2411. bgEl = oldBgEls[oldIndex];
  2412. bgEl.useStyle(backgroundModel.getItemStyle());
  2413. if (coord.type === "cartesian2d") {
  2414. bgEl.setShape("r", barBorderRadius);
  2415. }
  2416. bgEls[newIndex] = bgEl;
  2417. }
  2418. var bgLayout = getLayout[coord.type](data, newIndex);
  2419. var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);
  2420. updateProps(bgEl, {
  2421. shape
  2422. }, animationModel, newIndex);
  2423. }
  2424. var el = oldData.getItemGraphicEl(oldIndex);
  2425. if (!data.hasValue(newIndex) || !isValidLayout[coord.type](layout2)) {
  2426. group.remove(el);
  2427. return;
  2428. }
  2429. var isClipped = false;
  2430. if (needsClip) {
  2431. isClipped = clip[coord.type](coordSysClipArea, layout2);
  2432. if (isClipped) {
  2433. group.remove(el);
  2434. }
  2435. }
  2436. if (!el) {
  2437. el = elementCreator[coord.type](seriesModel, data, newIndex, layout2, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap);
  2438. } else {
  2439. saveOldStyle(el);
  2440. }
  2441. if (realtimeSortCfg) {
  2442. el.forceLabelAnimation = true;
  2443. }
  2444. if (isChangeOrder) {
  2445. var textEl = el.getTextContent();
  2446. if (textEl) {
  2447. var labelInnerStore = labelInner(textEl);
  2448. if (labelInnerStore.prevValue != null) {
  2449. labelInnerStore.prevValue = labelInnerStore.value;
  2450. }
  2451. }
  2452. } else {
  2453. updateStyle(el, data, newIndex, itemModel, layout2, seriesModel, isHorizontalOrRadial, coord.type === "polar");
  2454. }
  2455. if (isInitSort) {
  2456. el.attr({
  2457. shape: layout2
  2458. });
  2459. } else if (realtimeSortCfg) {
  2460. updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout2, newIndex, isHorizontalOrRadial, true, isChangeOrder);
  2461. } else {
  2462. updateProps(el, {
  2463. shape: layout2
  2464. }, seriesModel, newIndex, null);
  2465. }
  2466. data.setItemGraphicEl(newIndex, el);
  2467. el.ignore = isClipped;
  2468. group.add(el);
  2469. }).remove(function(dataIndex) {
  2470. var el = oldData.getItemGraphicEl(dataIndex);
  2471. el && removeElementWithFadeOut(el, seriesModel, dataIndex);
  2472. }).execute();
  2473. var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group_default());
  2474. bgGroup.removeAll();
  2475. for (var i = 0; i < bgEls.length; ++i) {
  2476. bgGroup.add(bgEls[i]);
  2477. }
  2478. group.add(bgGroup);
  2479. this._backgroundEls = bgEls;
  2480. this._data = data;
  2481. };
  2482. BarView2.prototype._renderLarge = function(seriesModel, ecModel, api) {
  2483. this._clear();
  2484. createLarge(seriesModel, this.group);
  2485. this._updateLargeClip(seriesModel);
  2486. };
  2487. BarView2.prototype._incrementalRenderLarge = function(params, seriesModel) {
  2488. this._removeBackground();
  2489. createLarge(seriesModel, this.group, this._progressiveEls, true);
  2490. };
  2491. BarView2.prototype._updateLargeClip = function(seriesModel) {
  2492. var clipPath = seriesModel.get("clip", true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);
  2493. var group = this.group;
  2494. if (clipPath) {
  2495. group.setClipPath(clipPath);
  2496. } else {
  2497. group.removeClipPath();
  2498. }
  2499. };
  2500. BarView2.prototype._enableRealtimeSort = function(realtimeSortCfg, data, api) {
  2501. var _this = this;
  2502. if (!data.count()) {
  2503. return;
  2504. }
  2505. var baseAxis = realtimeSortCfg.baseAxis;
  2506. if (this._isFirstFrame) {
  2507. this._dispatchInitSort(data, realtimeSortCfg, api);
  2508. this._isFirstFrame = false;
  2509. } else {
  2510. var orderMapping_1 = function(idx) {
  2511. var el = data.getItemGraphicEl(idx);
  2512. var shape = el && el.shape;
  2513. return shape && Math.abs(baseAxis.isHorizontal() ? shape.height : shape.width) || 0;
  2514. };
  2515. this._onRendered = function() {
  2516. _this._updateSortWithinSameData(data, orderMapping_1, baseAxis, api);
  2517. };
  2518. api.getZr().on("rendered", this._onRendered);
  2519. }
  2520. };
  2521. BarView2.prototype._dataSort = function(data, baseAxis, orderMapping) {
  2522. var info = [];
  2523. data.each(data.mapDimension(baseAxis.dim), function(ordinalNumber, dataIdx) {
  2524. var mappedValue = orderMapping(dataIdx);
  2525. mappedValue = mappedValue == null ? NaN : mappedValue;
  2526. info.push({
  2527. dataIndex: dataIdx,
  2528. mappedValue,
  2529. ordinalNumber
  2530. });
  2531. });
  2532. info.sort(function(a, b) {
  2533. return b.mappedValue - a.mappedValue;
  2534. });
  2535. return {
  2536. ordinalNumbers: map(info, function(item) {
  2537. return item.ordinalNumber;
  2538. })
  2539. };
  2540. };
  2541. BarView2.prototype._isOrderChangedWithinSameData = function(data, orderMapping, baseAxis) {
  2542. var scale2 = baseAxis.scale;
  2543. var ordinalDataDim = data.mapDimension(baseAxis.dim);
  2544. var lastValue = Number.MAX_VALUE;
  2545. for (var tickNum = 0, len2 = scale2.getOrdinalMeta().categories.length; tickNum < len2; ++tickNum) {
  2546. var rawIdx = data.rawIndexOf(ordinalDataDim, scale2.getRawOrdinalNumber(tickNum));
  2547. var value = rawIdx < 0 ? Number.MIN_VALUE : orderMapping(data.indexOfRawIndex(rawIdx));
  2548. if (value > lastValue) {
  2549. return true;
  2550. }
  2551. lastValue = value;
  2552. }
  2553. return false;
  2554. };
  2555. BarView2.prototype._isOrderDifferentInView = function(orderInfo, baseAxis) {
  2556. var scale2 = baseAxis.scale;
  2557. var extent = scale2.getExtent();
  2558. var tickNum = Math.max(0, extent[0]);
  2559. var tickMax = Math.min(extent[1], scale2.getOrdinalMeta().categories.length - 1);
  2560. for (; tickNum <= tickMax; ++tickNum) {
  2561. if (orderInfo.ordinalNumbers[tickNum] !== scale2.getRawOrdinalNumber(tickNum)) {
  2562. return true;
  2563. }
  2564. }
  2565. };
  2566. BarView2.prototype._updateSortWithinSameData = function(data, orderMapping, baseAxis, api) {
  2567. if (!this._isOrderChangedWithinSameData(data, orderMapping, baseAxis)) {
  2568. return;
  2569. }
  2570. var sortInfo = this._dataSort(data, baseAxis, orderMapping);
  2571. if (this._isOrderDifferentInView(sortInfo, baseAxis)) {
  2572. this._removeOnRenderedListener(api);
  2573. api.dispatchAction({
  2574. type: "changeAxisOrder",
  2575. componentType: baseAxis.dim + "Axis",
  2576. axisId: baseAxis.index,
  2577. sortInfo
  2578. });
  2579. }
  2580. };
  2581. BarView2.prototype._dispatchInitSort = function(data, realtimeSortCfg, api) {
  2582. var baseAxis = realtimeSortCfg.baseAxis;
  2583. var sortResult = this._dataSort(data, baseAxis, function(dataIdx) {
  2584. return data.get(data.mapDimension(realtimeSortCfg.otherAxis.dim), dataIdx);
  2585. });
  2586. api.dispatchAction({
  2587. type: "changeAxisOrder",
  2588. componentType: baseAxis.dim + "Axis",
  2589. isInitSort: true,
  2590. axisId: baseAxis.index,
  2591. sortInfo: sortResult
  2592. });
  2593. };
  2594. BarView2.prototype.remove = function(ecModel, api) {
  2595. this._clear(this._model);
  2596. this._removeOnRenderedListener(api);
  2597. };
  2598. BarView2.prototype.dispose = function(ecModel, api) {
  2599. this._removeOnRenderedListener(api);
  2600. };
  2601. BarView2.prototype._removeOnRenderedListener = function(api) {
  2602. if (this._onRendered) {
  2603. api.getZr().off("rendered", this._onRendered);
  2604. this._onRendered = null;
  2605. }
  2606. };
  2607. BarView2.prototype._clear = function(model) {
  2608. var group = this.group;
  2609. var data = this._data;
  2610. if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {
  2611. this._removeBackground();
  2612. this._backgroundEls = [];
  2613. data.eachItemGraphicEl(function(el) {
  2614. removeElementWithFadeOut(el, model, getECData(el).dataIndex);
  2615. });
  2616. } else {
  2617. group.removeAll();
  2618. }
  2619. this._data = null;
  2620. this._isFirstFrame = true;
  2621. };
  2622. BarView2.prototype._removeBackground = function() {
  2623. this.group.remove(this._backgroundGroup);
  2624. this._backgroundGroup = null;
  2625. };
  2626. BarView2.type = "bar";
  2627. return BarView2;
  2628. }(Chart_default);
  2629. var clip = {
  2630. cartesian2d: function(coordSysBoundingRect, layout2) {
  2631. var signWidth = layout2.width < 0 ? -1 : 1;
  2632. var signHeight = layout2.height < 0 ? -1 : 1;
  2633. if (signWidth < 0) {
  2634. layout2.x += layout2.width;
  2635. layout2.width = -layout2.width;
  2636. }
  2637. if (signHeight < 0) {
  2638. layout2.y += layout2.height;
  2639. layout2.height = -layout2.height;
  2640. }
  2641. var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width;
  2642. var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height;
  2643. var x = mathMax2(layout2.x, coordSysBoundingRect.x);
  2644. var x2 = mathMin2(layout2.x + layout2.width, coordSysX2);
  2645. var y = mathMax2(layout2.y, coordSysBoundingRect.y);
  2646. var y2 = mathMin2(layout2.y + layout2.height, coordSysY2);
  2647. var xClipped = x2 < x;
  2648. var yClipped = y2 < y;
  2649. layout2.x = xClipped && x > coordSysX2 ? x2 : x;
  2650. layout2.y = yClipped && y > coordSysY2 ? y2 : y;
  2651. layout2.width = xClipped ? 0 : x2 - x;
  2652. layout2.height = yClipped ? 0 : y2 - y;
  2653. if (signWidth < 0) {
  2654. layout2.x += layout2.width;
  2655. layout2.width = -layout2.width;
  2656. }
  2657. if (signHeight < 0) {
  2658. layout2.y += layout2.height;
  2659. layout2.height = -layout2.height;
  2660. }
  2661. return xClipped || yClipped;
  2662. },
  2663. polar: function(coordSysClipArea, layout2) {
  2664. var signR = layout2.r0 <= layout2.r ? 1 : -1;
  2665. if (signR < 0) {
  2666. var tmp = layout2.r;
  2667. layout2.r = layout2.r0;
  2668. layout2.r0 = tmp;
  2669. }
  2670. var r = mathMin2(layout2.r, coordSysClipArea.r);
  2671. var r0 = mathMax2(layout2.r0, coordSysClipArea.r0);
  2672. layout2.r = r;
  2673. layout2.r0 = r0;
  2674. var clipped = r - r0 < 0;
  2675. if (signR < 0) {
  2676. var tmp = layout2.r;
  2677. layout2.r = layout2.r0;
  2678. layout2.r0 = tmp;
  2679. }
  2680. return clipped;
  2681. }
  2682. };
  2683. var elementCreator = {
  2684. cartesian2d: function(seriesModel, data, newIndex, layout2, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {
  2685. var rect = new Rect_default({
  2686. shape: extend({}, layout2),
  2687. z2: 1
  2688. });
  2689. rect.__dataIndex = newIndex;
  2690. rect.name = "item";
  2691. if (animationModel) {
  2692. var rectShape = rect.shape;
  2693. var animateProperty = isHorizontal ? "height" : "width";
  2694. rectShape[animateProperty] = 0;
  2695. }
  2696. return rect;
  2697. },
  2698. polar: function(seriesModel, data, newIndex, layout2, isRadial, animationModel, axisModel, isUpdate, roundCap) {
  2699. var ShapeClass = !isRadial && roundCap ? sausage_default : Sector_default;
  2700. var sector = new ShapeClass({
  2701. shape: layout2,
  2702. z2: 1
  2703. });
  2704. sector.name = "item";
  2705. var positionMap = createPolarPositionMapping(isRadial);
  2706. sector.calculateTextPosition = createSectorCalculateTextPosition(positionMap, {
  2707. isRoundCap: ShapeClass === sausage_default
  2708. });
  2709. if (animationModel) {
  2710. var sectorShape = sector.shape;
  2711. var animateProperty = isRadial ? "r" : "endAngle";
  2712. var animateTarget = {};
  2713. sectorShape[animateProperty] = isRadial ? 0 : layout2.startAngle;
  2714. animateTarget[animateProperty] = layout2[animateProperty];
  2715. (isUpdate ? updateProps : initProps)(sector, {
  2716. shape: animateTarget
  2717. }, animationModel);
  2718. }
  2719. return sector;
  2720. }
  2721. };
  2722. function shouldRealtimeSort(seriesModel, coordSys) {
  2723. var realtimeSortOption = seriesModel.get("realtimeSort", true);
  2724. var baseAxis = coordSys.getBaseAxis();
  2725. if (true) {
  2726. if (realtimeSortOption) {
  2727. if (baseAxis.type !== "category") {
  2728. warn("`realtimeSort` will not work because this bar series is not based on a category axis.");
  2729. }
  2730. if (coordSys.type !== "cartesian2d") {
  2731. warn("`realtimeSort` will not work because this bar series is not on cartesian2d.");
  2732. }
  2733. }
  2734. }
  2735. if (realtimeSortOption && baseAxis.type === "category" && coordSys.type === "cartesian2d") {
  2736. return {
  2737. baseAxis,
  2738. otherAxis: coordSys.getOtherAxis(baseAxis)
  2739. };
  2740. }
  2741. }
  2742. function updateRealtimeAnimation(realtimeSortCfg, seriesAnimationModel, el, layout2, newIndex, isHorizontal, isUpdate, isChangeOrder) {
  2743. var seriesTarget;
  2744. var axisTarget;
  2745. if (isHorizontal) {
  2746. axisTarget = {
  2747. x: layout2.x,
  2748. width: layout2.width
  2749. };
  2750. seriesTarget = {
  2751. y: layout2.y,
  2752. height: layout2.height
  2753. };
  2754. } else {
  2755. axisTarget = {
  2756. y: layout2.y,
  2757. height: layout2.height
  2758. };
  2759. seriesTarget = {
  2760. x: layout2.x,
  2761. width: layout2.width
  2762. };
  2763. }
  2764. if (!isChangeOrder) {
  2765. (isUpdate ? updateProps : initProps)(el, {
  2766. shape: seriesTarget
  2767. }, seriesAnimationModel, newIndex, null);
  2768. }
  2769. var axisAnimationModel = seriesAnimationModel ? realtimeSortCfg.baseAxis.model : null;
  2770. (isUpdate ? updateProps : initProps)(el, {
  2771. shape: axisTarget
  2772. }, axisAnimationModel, newIndex);
  2773. }
  2774. function checkPropertiesNotValid(obj, props) {
  2775. for (var i = 0; i < props.length; i++) {
  2776. if (!isFinite(obj[props[i]])) {
  2777. return true;
  2778. }
  2779. }
  2780. return false;
  2781. }
  2782. var rectPropties = ["x", "y", "width", "height"];
  2783. var polarPropties = ["cx", "cy", "r", "startAngle", "endAngle"];
  2784. var isValidLayout = {
  2785. cartesian2d: function(layout2) {
  2786. return !checkPropertiesNotValid(layout2, rectPropties);
  2787. },
  2788. polar: function(layout2) {
  2789. return !checkPropertiesNotValid(layout2, polarPropties);
  2790. }
  2791. };
  2792. var getLayout = {
  2793. cartesian2d: function(data, dataIndex, itemModel) {
  2794. var layout2 = data.getItemLayout(dataIndex);
  2795. var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout2) : 0;
  2796. var signX = layout2.width > 0 ? 1 : -1;
  2797. var signY = layout2.height > 0 ? 1 : -1;
  2798. return {
  2799. x: layout2.x + signX * fixedLineWidth / 2,
  2800. y: layout2.y + signY * fixedLineWidth / 2,
  2801. width: layout2.width - signX * fixedLineWidth,
  2802. height: layout2.height - signY * fixedLineWidth
  2803. };
  2804. },
  2805. polar: function(data, dataIndex, itemModel) {
  2806. var layout2 = data.getItemLayout(dataIndex);
  2807. return {
  2808. cx: layout2.cx,
  2809. cy: layout2.cy,
  2810. r0: layout2.r0,
  2811. r: layout2.r,
  2812. startAngle: layout2.startAngle,
  2813. endAngle: layout2.endAngle,
  2814. clockwise: layout2.clockwise
  2815. };
  2816. }
  2817. };
  2818. function isZeroOnPolar(layout2) {
  2819. return layout2.startAngle != null && layout2.endAngle != null && layout2.startAngle === layout2.endAngle;
  2820. }
  2821. function createPolarPositionMapping(isRadial) {
  2822. return function(isRadial2) {
  2823. var arcOrAngle = isRadial2 ? "Arc" : "Angle";
  2824. return function(position2) {
  2825. switch (position2) {
  2826. case "start":
  2827. case "insideStart":
  2828. case "end":
  2829. case "insideEnd":
  2830. return position2 + arcOrAngle;
  2831. default:
  2832. return position2;
  2833. }
  2834. };
  2835. }(isRadial);
  2836. }
  2837. function updateStyle(el, data, dataIndex, itemModel, layout2, seriesModel, isHorizontalOrRadial, isPolar) {
  2838. var style = data.getItemVisual(dataIndex, "style");
  2839. if (!isPolar) {
  2840. el.setShape("r", itemModel.get(["itemStyle", "borderRadius"]) || 0);
  2841. }
  2842. el.useStyle(style);
  2843. var cursorStyle = itemModel.getShallow("cursor");
  2844. cursorStyle && el.attr("cursor", cursorStyle);
  2845. var labelPositionOutside = isPolar ? isHorizontalOrRadial ? layout2.r >= layout2.r0 ? "endArc" : "startArc" : layout2.endAngle >= layout2.startAngle ? "endAngle" : "startAngle" : isHorizontalOrRadial ? layout2.height >= 0 ? "bottom" : "top" : layout2.width >= 0 ? "right" : "left";
  2846. var labelStatesModels = getLabelStatesModels(itemModel);
  2847. setLabelStyle(el, labelStatesModels, {
  2848. labelFetcher: seriesModel,
  2849. labelDataIndex: dataIndex,
  2850. defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),
  2851. inheritColor: style.fill,
  2852. defaultOpacity: style.opacity,
  2853. defaultOutsidePosition: labelPositionOutside
  2854. });
  2855. var label = el.getTextContent();
  2856. if (isPolar && label) {
  2857. var position2 = itemModel.get(["label", "position"]);
  2858. el.textConfig.inside = position2 === "middle" ? true : null;
  2859. setSectorTextRotation(el, position2 === "outside" ? labelPositionOutside : position2, createPolarPositionMapping(isHorizontalOrRadial), itemModel.get(["label", "rotate"]));
  2860. }
  2861. setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function(value) {
  2862. return getDefaultInterpolatedLabel(data, value);
  2863. });
  2864. var emphasisModel = itemModel.getModel(["emphasis"]);
  2865. toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  2866. setStatesStylesFromModel(el, itemModel);
  2867. if (isZeroOnPolar(layout2)) {
  2868. el.style.fill = "none";
  2869. el.style.stroke = "none";
  2870. each(el.states, function(state) {
  2871. if (state.style) {
  2872. state.style.fill = state.style.stroke = "none";
  2873. }
  2874. });
  2875. }
  2876. }
  2877. function getLineWidth(itemModel, rawLayout) {
  2878. var borderColor = itemModel.get(["itemStyle", "borderColor"]);
  2879. if (!borderColor || borderColor === "none") {
  2880. return 0;
  2881. }
  2882. var lineWidth = itemModel.get(["itemStyle", "borderWidth"]) || 0;
  2883. var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);
  2884. var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);
  2885. return Math.min(lineWidth, width, height);
  2886. }
  2887. var LagePathShape = function() {
  2888. function LagePathShape2() {
  2889. }
  2890. return LagePathShape2;
  2891. }();
  2892. var LargePath = function(_super) {
  2893. __extends(LargePath2, _super);
  2894. function LargePath2(opts) {
  2895. var _this = _super.call(this, opts) || this;
  2896. _this.type = "largeBar";
  2897. return _this;
  2898. }
  2899. LargePath2.prototype.getDefaultShape = function() {
  2900. return new LagePathShape();
  2901. };
  2902. LargePath2.prototype.buildPath = function(ctx, shape) {
  2903. var points = shape.points;
  2904. var baseDimIdx = this.baseDimIdx;
  2905. var valueDimIdx = 1 - this.baseDimIdx;
  2906. var startPoint = [];
  2907. var size = [];
  2908. var barWidth = this.barWidth;
  2909. for (var i = 0; i < points.length; i += 3) {
  2910. size[baseDimIdx] = barWidth;
  2911. size[valueDimIdx] = points[i + 2];
  2912. startPoint[baseDimIdx] = points[i + baseDimIdx];
  2913. startPoint[valueDimIdx] = points[i + valueDimIdx];
  2914. ctx.rect(startPoint[0], startPoint[1], size[0], size[1]);
  2915. }
  2916. };
  2917. return LargePath2;
  2918. }(Path_default);
  2919. function createLarge(seriesModel, group, progressiveEls, incremental) {
  2920. var data = seriesModel.getData();
  2921. var baseDimIdx = data.getLayout("valueAxisHorizontal") ? 1 : 0;
  2922. var largeDataIndices = data.getLayout("largeDataIndices");
  2923. var barWidth = data.getLayout("size");
  2924. var backgroundModel = seriesModel.getModel("backgroundStyle");
  2925. var bgPoints = data.getLayout("largeBackgroundPoints");
  2926. if (bgPoints) {
  2927. var bgEl = new LargePath({
  2928. shape: {
  2929. points: bgPoints
  2930. },
  2931. incremental: !!incremental,
  2932. silent: true,
  2933. z2: 0
  2934. });
  2935. bgEl.baseDimIdx = baseDimIdx;
  2936. bgEl.largeDataIndices = largeDataIndices;
  2937. bgEl.barWidth = barWidth;
  2938. bgEl.useStyle(backgroundModel.getItemStyle());
  2939. group.add(bgEl);
  2940. progressiveEls && progressiveEls.push(bgEl);
  2941. }
  2942. var el = new LargePath({
  2943. shape: {
  2944. points: data.getLayout("largePoints")
  2945. },
  2946. incremental: !!incremental,
  2947. z2: 1
  2948. });
  2949. el.baseDimIdx = baseDimIdx;
  2950. el.largeDataIndices = largeDataIndices;
  2951. el.barWidth = barWidth;
  2952. group.add(el);
  2953. el.useStyle(data.getVisual("style"));
  2954. getECData(el).seriesIndex = seriesModel.seriesIndex;
  2955. if (!seriesModel.get("silent")) {
  2956. el.on("mousedown", largePathUpdateDataIndex);
  2957. el.on("mousemove", largePathUpdateDataIndex);
  2958. }
  2959. progressiveEls && progressiveEls.push(el);
  2960. }
  2961. var largePathUpdateDataIndex = throttle(function(event) {
  2962. var largePath = this;
  2963. var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);
  2964. getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;
  2965. }, 30, false);
  2966. function largePathFindDataIndex(largePath, x, y) {
  2967. var baseDimIdx = largePath.baseDimIdx;
  2968. var valueDimIdx = 1 - baseDimIdx;
  2969. var points = largePath.shape.points;
  2970. var largeDataIndices = largePath.largeDataIndices;
  2971. var startPoint = [];
  2972. var size = [];
  2973. var barWidth = largePath.barWidth;
  2974. for (var i = 0, len2 = points.length / 3; i < len2; i++) {
  2975. var ii = i * 3;
  2976. size[baseDimIdx] = barWidth;
  2977. size[valueDimIdx] = points[ii + 2];
  2978. startPoint[baseDimIdx] = points[ii + baseDimIdx];
  2979. startPoint[valueDimIdx] = points[ii + valueDimIdx];
  2980. if (size[valueDimIdx] < 0) {
  2981. startPoint[valueDimIdx] += size[valueDimIdx];
  2982. size[valueDimIdx] = -size[valueDimIdx];
  2983. }
  2984. if (x >= startPoint[0] && x <= startPoint[0] + size[0] && y >= startPoint[1] && y <= startPoint[1] + size[1]) {
  2985. return largeDataIndices[i];
  2986. }
  2987. }
  2988. return -1;
  2989. }
  2990. function createBackgroundShape(isHorizontalOrRadial, layout2, coord) {
  2991. if (isCoordinateSystemType(coord, "cartesian2d")) {
  2992. var rectShape = layout2;
  2993. var coordLayout = coord.getArea();
  2994. return {
  2995. x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,
  2996. y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,
  2997. width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,
  2998. height: isHorizontalOrRadial ? coordLayout.height : rectShape.height
  2999. };
  3000. } else {
  3001. var coordLayout = coord.getArea();
  3002. var sectorShape = layout2;
  3003. return {
  3004. cx: coordLayout.cx,
  3005. cy: coordLayout.cy,
  3006. r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,
  3007. r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,
  3008. startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,
  3009. endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2
  3010. };
  3011. }
  3012. }
  3013. function createBackgroundEl(coord, isHorizontalOrRadial, layout2) {
  3014. var ElementClz = coord.type === "polar" ? Sector_default : Rect_default;
  3015. return new ElementClz({
  3016. shape: createBackgroundShape(isHorizontalOrRadial, layout2, coord),
  3017. silent: true,
  3018. z2: 0
  3019. });
  3020. }
  3021. var BarView_default = BarView;
  3022. // node_modules/echarts/lib/chart/bar/install.js
  3023. function install6(registers) {
  3024. registers.registerChartView(BarView_default);
  3025. registers.registerSeriesModel(BarSeries_default);
  3026. registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, "bar"));
  3027. registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout("bar"));
  3028. registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("bar"));
  3029. registers.registerAction({
  3030. type: "changeAxisOrder",
  3031. event: "changeAxisOrder",
  3032. update: "update"
  3033. }, function(payload, ecModel) {
  3034. var componentType = payload.componentType || "series";
  3035. ecModel.eachComponent({
  3036. mainType: componentType,
  3037. query: payload
  3038. }, function(componentModel) {
  3039. if (payload.sortInfo) {
  3040. componentModel.axis.setCategorySortInfo(payload.sortInfo);
  3041. }
  3042. });
  3043. });
  3044. }
  3045. // node_modules/echarts/lib/chart/pie/install.js
  3046. init_define_APP_INFO();
  3047. // node_modules/echarts/lib/chart/pie/pieLayout.js
  3048. init_define_APP_INFO();
  3049. var PI2 = Math.PI * 2;
  3050. var RADIAN = Math.PI / 180;
  3051. function getViewRect(seriesModel, api) {
  3052. return getLayoutRect(seriesModel.getBoxLayoutParams(), {
  3053. width: api.getWidth(),
  3054. height: api.getHeight()
  3055. });
  3056. }
  3057. function getBasicPieLayout(seriesModel, api) {
  3058. var viewRect = getViewRect(seriesModel, api);
  3059. var center2 = seriesModel.get("center");
  3060. var radius = seriesModel.get("radius");
  3061. if (!isArray(radius)) {
  3062. radius = [0, radius];
  3063. }
  3064. if (!isArray(center2)) {
  3065. center2 = [center2, center2];
  3066. }
  3067. var width = parsePercent2(viewRect.width, api.getWidth());
  3068. var height = parsePercent2(viewRect.height, api.getHeight());
  3069. var size = Math.min(width, height);
  3070. var cx = parsePercent2(center2[0], width) + viewRect.x;
  3071. var cy = parsePercent2(center2[1], height) + viewRect.y;
  3072. var r0 = parsePercent2(radius[0], size / 2);
  3073. var r = parsePercent2(radius[1], size / 2);
  3074. return {
  3075. cx,
  3076. cy,
  3077. r0,
  3078. r
  3079. };
  3080. }
  3081. function pieLayout(seriesType, ecModel, api) {
  3082. ecModel.eachSeriesByType(seriesType, function(seriesModel) {
  3083. var data = seriesModel.getData();
  3084. var valueDim = data.mapDimension("value");
  3085. var viewRect = getViewRect(seriesModel, api);
  3086. var _a = getBasicPieLayout(seriesModel, api), cx = _a.cx, cy = _a.cy, r = _a.r, r0 = _a.r0;
  3087. var startAngle = -seriesModel.get("startAngle") * RADIAN;
  3088. var minAngle = seriesModel.get("minAngle") * RADIAN;
  3089. var validDataCount = 0;
  3090. data.each(valueDim, function(value) {
  3091. !isNaN(value) && validDataCount++;
  3092. });
  3093. var sum2 = data.getSum(valueDim);
  3094. var unitRadian = Math.PI / (sum2 || validDataCount) * 2;
  3095. var clockwise = seriesModel.get("clockwise");
  3096. var roseType = seriesModel.get("roseType");
  3097. var stillShowZeroSum = seriesModel.get("stillShowZeroSum");
  3098. var extent = data.getDataExtent(valueDim);
  3099. extent[0] = 0;
  3100. var restAngle = PI2;
  3101. var valueSumLargerThanMinAngle = 0;
  3102. var currentAngle = startAngle;
  3103. var dir = clockwise ? 1 : -1;
  3104. data.setLayout({
  3105. viewRect,
  3106. r
  3107. });
  3108. data.each(valueDim, function(value, idx) {
  3109. var angle;
  3110. if (isNaN(value)) {
  3111. data.setItemLayout(idx, {
  3112. angle: NaN,
  3113. startAngle: NaN,
  3114. endAngle: NaN,
  3115. clockwise,
  3116. cx,
  3117. cy,
  3118. r0,
  3119. r: roseType ? NaN : r
  3120. });
  3121. return;
  3122. }
  3123. if (roseType !== "area") {
  3124. angle = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;
  3125. } else {
  3126. angle = PI2 / validDataCount;
  3127. }
  3128. if (angle < minAngle) {
  3129. angle = minAngle;
  3130. restAngle -= minAngle;
  3131. } else {
  3132. valueSumLargerThanMinAngle += value;
  3133. }
  3134. var endAngle = currentAngle + dir * angle;
  3135. data.setItemLayout(idx, {
  3136. angle,
  3137. startAngle: currentAngle,
  3138. endAngle,
  3139. clockwise,
  3140. cx,
  3141. cy,
  3142. r0,
  3143. r: roseType ? linearMap(value, extent, [r0, r]) : r
  3144. });
  3145. currentAngle = endAngle;
  3146. });
  3147. if (restAngle < PI2 && validDataCount) {
  3148. if (restAngle <= 1e-3) {
  3149. var angle_1 = PI2 / validDataCount;
  3150. data.each(valueDim, function(value, idx) {
  3151. if (!isNaN(value)) {
  3152. var layout_1 = data.getItemLayout(idx);
  3153. layout_1.angle = angle_1;
  3154. layout_1.startAngle = startAngle + dir * idx * angle_1;
  3155. layout_1.endAngle = startAngle + dir * (idx + 1) * angle_1;
  3156. }
  3157. });
  3158. } else {
  3159. unitRadian = restAngle / valueSumLargerThanMinAngle;
  3160. currentAngle = startAngle;
  3161. data.each(valueDim, function(value, idx) {
  3162. if (!isNaN(value)) {
  3163. var layout_2 = data.getItemLayout(idx);
  3164. var angle = layout_2.angle === minAngle ? minAngle : value * unitRadian;
  3165. layout_2.startAngle = currentAngle;
  3166. layout_2.endAngle = currentAngle + dir * angle;
  3167. currentAngle += dir * angle;
  3168. }
  3169. });
  3170. }
  3171. }
  3172. });
  3173. }
  3174. // node_modules/echarts/lib/processor/dataFilter.js
  3175. init_define_APP_INFO();
  3176. function dataFilter(seriesType) {
  3177. return {
  3178. seriesType,
  3179. reset: function(seriesModel, ecModel) {
  3180. var legendModels = ecModel.findComponents({
  3181. mainType: "legend"
  3182. });
  3183. if (!legendModels || !legendModels.length) {
  3184. return;
  3185. }
  3186. var data = seriesModel.getData();
  3187. data.filterSelf(function(idx) {
  3188. var name = data.getName(idx);
  3189. for (var i = 0; i < legendModels.length; i++) {
  3190. if (!legendModels[i].isSelected(name)) {
  3191. return false;
  3192. }
  3193. }
  3194. return true;
  3195. });
  3196. }
  3197. };
  3198. }
  3199. // node_modules/echarts/lib/chart/pie/PieView.js
  3200. init_define_APP_INFO();
  3201. // node_modules/echarts/lib/chart/pie/labelLayout.js
  3202. init_define_APP_INFO();
  3203. var RADIAN2 = Math.PI / 180;
  3204. function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {
  3205. if (list.length < 2) {
  3206. return;
  3207. }
  3208. ;
  3209. function recalculateXOnSemiToAlignOnEllipseCurve(semi) {
  3210. var rB = semi.rB;
  3211. var rB2 = rB * rB;
  3212. for (var i2 = 0; i2 < semi.list.length; i2++) {
  3213. var item = semi.list[i2];
  3214. var dy = Math.abs(item.label.y - cy);
  3215. var rA = r + item.len;
  3216. var rA2 = rA * rA;
  3217. var dx2 = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);
  3218. var newX = cx + (dx2 + item.len2) * dir;
  3219. var deltaX = newX - item.label.x;
  3220. var newTargetWidth = item.targetTextWidth - deltaX * dir;
  3221. constrainTextWidth(item, newTargetWidth, true);
  3222. item.label.x = newX;
  3223. }
  3224. }
  3225. function recalculateX(items) {
  3226. var topSemi = {
  3227. list: [],
  3228. maxY: 0
  3229. };
  3230. var bottomSemi = {
  3231. list: [],
  3232. maxY: 0
  3233. };
  3234. for (var i2 = 0; i2 < items.length; i2++) {
  3235. if (items[i2].labelAlignTo !== "none") {
  3236. continue;
  3237. }
  3238. var item = items[i2];
  3239. var semi = item.label.y > cy ? bottomSemi : topSemi;
  3240. var dy = Math.abs(item.label.y - cy);
  3241. if (dy >= semi.maxY) {
  3242. var dx2 = item.label.x - cx - item.len2 * dir;
  3243. var rA = r + item.len;
  3244. var rB = Math.abs(dx2) < rA ? Math.sqrt(dy * dy / (1 - dx2 * dx2 / rA / rA)) : rA;
  3245. semi.rB = rB;
  3246. semi.maxY = dy;
  3247. }
  3248. semi.list.push(item);
  3249. }
  3250. recalculateXOnSemiToAlignOnEllipseCurve(topSemi);
  3251. recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);
  3252. }
  3253. var len2 = list.length;
  3254. for (var i = 0; i < len2; i++) {
  3255. if (list[i].position === "outer" && list[i].labelAlignTo === "labelLine") {
  3256. var dx = list[i].label.x - farthestX;
  3257. list[i].linePoints[1][0] += dx;
  3258. list[i].label.x = farthestX;
  3259. }
  3260. }
  3261. if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {
  3262. recalculateX(list);
  3263. }
  3264. }
  3265. function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {
  3266. var leftList = [];
  3267. var rightList = [];
  3268. var leftmostX = Number.MAX_VALUE;
  3269. var rightmostX = -Number.MAX_VALUE;
  3270. for (var i = 0; i < labelLayoutList.length; i++) {
  3271. var label = labelLayoutList[i].label;
  3272. if (isPositionCenter(labelLayoutList[i])) {
  3273. continue;
  3274. }
  3275. if (label.x < cx) {
  3276. leftmostX = Math.min(leftmostX, label.x);
  3277. leftList.push(labelLayoutList[i]);
  3278. } else {
  3279. rightmostX = Math.max(rightmostX, label.x);
  3280. rightList.push(labelLayoutList[i]);
  3281. }
  3282. }
  3283. for (var i = 0; i < labelLayoutList.length; i++) {
  3284. var layout2 = labelLayoutList[i];
  3285. if (!isPositionCenter(layout2) && layout2.linePoints) {
  3286. if (layout2.labelStyleWidth != null) {
  3287. continue;
  3288. }
  3289. var label = layout2.label;
  3290. var linePoints = layout2.linePoints;
  3291. var targetTextWidth = void 0;
  3292. if (layout2.labelAlignTo === "edge") {
  3293. if (label.x < cx) {
  3294. targetTextWidth = linePoints[2][0] - layout2.labelDistance - viewLeft - layout2.edgeDistance;
  3295. } else {
  3296. targetTextWidth = viewLeft + viewWidth - layout2.edgeDistance - linePoints[2][0] - layout2.labelDistance;
  3297. }
  3298. } else if (layout2.labelAlignTo === "labelLine") {
  3299. if (label.x < cx) {
  3300. targetTextWidth = leftmostX - viewLeft - layout2.bleedMargin;
  3301. } else {
  3302. targetTextWidth = viewLeft + viewWidth - rightmostX - layout2.bleedMargin;
  3303. }
  3304. } else {
  3305. if (label.x < cx) {
  3306. targetTextWidth = label.x - viewLeft - layout2.bleedMargin;
  3307. } else {
  3308. targetTextWidth = viewLeft + viewWidth - label.x - layout2.bleedMargin;
  3309. }
  3310. }
  3311. layout2.targetTextWidth = targetTextWidth;
  3312. constrainTextWidth(layout2, targetTextWidth);
  3313. }
  3314. }
  3315. adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);
  3316. adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);
  3317. for (var i = 0; i < labelLayoutList.length; i++) {
  3318. var layout2 = labelLayoutList[i];
  3319. if (!isPositionCenter(layout2) && layout2.linePoints) {
  3320. var label = layout2.label;
  3321. var linePoints = layout2.linePoints;
  3322. var isAlignToEdge = layout2.labelAlignTo === "edge";
  3323. var padding = label.style.padding;
  3324. var paddingH = padding ? padding[1] + padding[3] : 0;
  3325. var extraPaddingH = label.style.backgroundColor ? 0 : paddingH;
  3326. var realTextWidth = layout2.rect.width + extraPaddingH;
  3327. var dist2 = linePoints[1][0] - linePoints[2][0];
  3328. if (isAlignToEdge) {
  3329. if (label.x < cx) {
  3330. linePoints[2][0] = viewLeft + layout2.edgeDistance + realTextWidth + layout2.labelDistance;
  3331. } else {
  3332. linePoints[2][0] = viewLeft + viewWidth - layout2.edgeDistance - realTextWidth - layout2.labelDistance;
  3333. }
  3334. } else {
  3335. if (label.x < cx) {
  3336. linePoints[2][0] = label.x + layout2.labelDistance;
  3337. } else {
  3338. linePoints[2][0] = label.x - layout2.labelDistance;
  3339. }
  3340. linePoints[1][0] = linePoints[2][0] + dist2;
  3341. }
  3342. linePoints[1][1] = linePoints[2][1] = label.y;
  3343. }
  3344. }
  3345. }
  3346. function constrainTextWidth(layout2, availableWidth, forceRecalculate) {
  3347. if (forceRecalculate === void 0) {
  3348. forceRecalculate = false;
  3349. }
  3350. if (layout2.labelStyleWidth != null) {
  3351. return;
  3352. }
  3353. var label = layout2.label;
  3354. var style = label.style;
  3355. var textRect = layout2.rect;
  3356. var bgColor = style.backgroundColor;
  3357. var padding = style.padding;
  3358. var paddingH = padding ? padding[1] + padding[3] : 0;
  3359. var overflow = style.overflow;
  3360. var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH);
  3361. if (availableWidth < oldOuterWidth || forceRecalculate) {
  3362. var oldHeight = textRect.height;
  3363. if (overflow && overflow.match("break")) {
  3364. label.setStyle("backgroundColor", null);
  3365. label.setStyle("width", availableWidth - paddingH);
  3366. var innerRect = label.getBoundingRect();
  3367. label.setStyle("width", Math.ceil(innerRect.width));
  3368. label.setStyle("backgroundColor", bgColor);
  3369. } else {
  3370. var availableInnerWidth = availableWidth - paddingH;
  3371. var newWidth = availableWidth < oldOuterWidth ? availableInnerWidth : forceRecalculate ? availableInnerWidth > layout2.unconstrainedWidth ? null : availableInnerWidth : null;
  3372. label.setStyle("width", newWidth);
  3373. }
  3374. var newRect = label.getBoundingRect();
  3375. textRect.width = newRect.width;
  3376. var margin = (label.style.margin || 0) + 2.1;
  3377. textRect.height = newRect.height + margin;
  3378. textRect.y -= (textRect.height - oldHeight) / 2;
  3379. }
  3380. }
  3381. function isPositionCenter(sectorShape) {
  3382. return sectorShape.position === "center";
  3383. }
  3384. function pieLabelLayout(seriesModel) {
  3385. var data = seriesModel.getData();
  3386. var labelLayoutList = [];
  3387. var cx;
  3388. var cy;
  3389. var hasLabelRotate = false;
  3390. var minShowLabelRadian = (seriesModel.get("minShowLabelAngle") || 0) * RADIAN2;
  3391. var viewRect = data.getLayout("viewRect");
  3392. var r = data.getLayout("r");
  3393. var viewWidth = viewRect.width;
  3394. var viewLeft = viewRect.x;
  3395. var viewTop = viewRect.y;
  3396. var viewHeight = viewRect.height;
  3397. function setNotShow(el) {
  3398. el.ignore = true;
  3399. }
  3400. function isLabelShown(label2) {
  3401. if (!label2.ignore) {
  3402. return true;
  3403. }
  3404. for (var key in label2.states) {
  3405. if (label2.states[key].ignore === false) {
  3406. return true;
  3407. }
  3408. }
  3409. return false;
  3410. }
  3411. data.each(function(idx) {
  3412. var sector = data.getItemGraphicEl(idx);
  3413. var sectorShape = sector.shape;
  3414. var label2 = sector.getTextContent();
  3415. var labelLine2 = sector.getTextGuideLine();
  3416. var itemModel = data.getItemModel(idx);
  3417. var labelModel = itemModel.getModel("label");
  3418. var labelPosition = labelModel.get("position") || itemModel.get(["emphasis", "label", "position"]);
  3419. var labelDistance = labelModel.get("distanceToLabelLine");
  3420. var labelAlignTo = labelModel.get("alignTo");
  3421. var edgeDistance = parsePercent2(labelModel.get("edgeDistance"), viewWidth);
  3422. var bleedMargin = labelModel.get("bleedMargin");
  3423. var labelLineModel = itemModel.getModel("labelLine");
  3424. var labelLineLen = labelLineModel.get("length");
  3425. labelLineLen = parsePercent2(labelLineLen, viewWidth);
  3426. var labelLineLen2 = labelLineModel.get("length2");
  3427. labelLineLen2 = parsePercent2(labelLineLen2, viewWidth);
  3428. if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {
  3429. each(label2.states, setNotShow);
  3430. label2.ignore = true;
  3431. return;
  3432. }
  3433. if (!isLabelShown(label2)) {
  3434. return;
  3435. }
  3436. var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;
  3437. var nx = Math.cos(midAngle);
  3438. var ny = Math.sin(midAngle);
  3439. var textX;
  3440. var textY;
  3441. var linePoints2;
  3442. var textAlign;
  3443. cx = sectorShape.cx;
  3444. cy = sectorShape.cy;
  3445. var isLabelInside = labelPosition === "inside" || labelPosition === "inner";
  3446. if (labelPosition === "center") {
  3447. textX = sectorShape.cx;
  3448. textY = sectorShape.cy;
  3449. textAlign = "center";
  3450. } else {
  3451. var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;
  3452. var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;
  3453. textX = x1 + nx * 3;
  3454. textY = y1 + ny * 3;
  3455. if (!isLabelInside) {
  3456. var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);
  3457. var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);
  3458. var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2;
  3459. var y3 = y2;
  3460. if (labelAlignTo === "edge") {
  3461. textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance;
  3462. } else {
  3463. textX = x3 + (nx < 0 ? -labelDistance : labelDistance);
  3464. }
  3465. textY = y3;
  3466. linePoints2 = [[x1, y1], [x2, y2], [x3, y3]];
  3467. }
  3468. textAlign = isLabelInside ? "center" : labelAlignTo === "edge" ? nx > 0 ? "right" : "left" : nx > 0 ? "left" : "right";
  3469. }
  3470. var PI3 = Math.PI;
  3471. var labelRotate = 0;
  3472. var rotate = labelModel.get("rotate");
  3473. if (isNumber(rotate)) {
  3474. labelRotate = rotate * (PI3 / 180);
  3475. } else if (labelPosition === "center") {
  3476. labelRotate = 0;
  3477. } else if (rotate === "radial" || rotate === true) {
  3478. var radialAngle = nx < 0 ? -midAngle + PI3 : -midAngle;
  3479. labelRotate = radialAngle;
  3480. } else if (rotate === "tangential" && labelPosition !== "outside" && labelPosition !== "outer") {
  3481. var rad = Math.atan2(nx, ny);
  3482. if (rad < 0) {
  3483. rad = PI3 * 2 + rad;
  3484. }
  3485. var isDown = ny > 0;
  3486. if (isDown) {
  3487. rad = PI3 + rad;
  3488. }
  3489. labelRotate = rad - PI3;
  3490. }
  3491. hasLabelRotate = !!labelRotate;
  3492. label2.x = textX;
  3493. label2.y = textY;
  3494. label2.rotation = labelRotate;
  3495. label2.setStyle({
  3496. verticalAlign: "middle"
  3497. });
  3498. if (!isLabelInside) {
  3499. var textRect = label2.getBoundingRect().clone();
  3500. textRect.applyTransform(label2.getComputedTransform());
  3501. var margin = (label2.style.margin || 0) + 2.1;
  3502. textRect.y -= margin / 2;
  3503. textRect.height += margin;
  3504. labelLayoutList.push({
  3505. label: label2,
  3506. labelLine: labelLine2,
  3507. position: labelPosition,
  3508. len: labelLineLen,
  3509. len2: labelLineLen2,
  3510. minTurnAngle: labelLineModel.get("minTurnAngle"),
  3511. maxSurfaceAngle: labelLineModel.get("maxSurfaceAngle"),
  3512. surfaceNormal: new Point_default(nx, ny),
  3513. linePoints: linePoints2,
  3514. textAlign,
  3515. labelDistance,
  3516. labelAlignTo,
  3517. edgeDistance,
  3518. bleedMargin,
  3519. rect: textRect,
  3520. unconstrainedWidth: textRect.width,
  3521. labelStyleWidth: label2.style.width
  3522. });
  3523. } else {
  3524. label2.setStyle({
  3525. align: textAlign
  3526. });
  3527. var selectState2 = label2.states.select;
  3528. if (selectState2) {
  3529. selectState2.x += label2.x;
  3530. selectState2.y += label2.y;
  3531. }
  3532. }
  3533. sector.setTextConfig({
  3534. inside: isLabelInside
  3535. });
  3536. });
  3537. if (!hasLabelRotate && seriesModel.get("avoidLabelOverlap")) {
  3538. avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);
  3539. }
  3540. for (var i = 0; i < labelLayoutList.length; i++) {
  3541. var layout2 = labelLayoutList[i];
  3542. var label = layout2.label;
  3543. var labelLine = layout2.labelLine;
  3544. var notShowLabel = isNaN(label.x) || isNaN(label.y);
  3545. if (label) {
  3546. label.setStyle({
  3547. align: layout2.textAlign
  3548. });
  3549. if (notShowLabel) {
  3550. each(label.states, setNotShow);
  3551. label.ignore = true;
  3552. }
  3553. var selectState = label.states.select;
  3554. if (selectState) {
  3555. selectState.x += label.x;
  3556. selectState.y += label.y;
  3557. }
  3558. }
  3559. if (labelLine) {
  3560. var linePoints = layout2.linePoints;
  3561. if (notShowLabel || !linePoints) {
  3562. each(labelLine.states, setNotShow);
  3563. labelLine.ignore = true;
  3564. } else {
  3565. limitTurnAngle(linePoints, layout2.minTurnAngle);
  3566. limitSurfaceAngle(linePoints, layout2.surfaceNormal, layout2.maxSurfaceAngle);
  3567. labelLine.setShape({
  3568. points: linePoints
  3569. });
  3570. label.__hostTarget.textGuideLineConfig = {
  3571. anchor: new Point_default(linePoints[0][0], linePoints[0][1])
  3572. };
  3573. }
  3574. }
  3575. }
  3576. }
  3577. // node_modules/echarts/lib/chart/helper/pieHelper.js
  3578. init_define_APP_INFO();
  3579. function getSectorCornerRadius(model, shape, zeroIfNull) {
  3580. var cornerRadius = model.get("borderRadius");
  3581. if (cornerRadius == null) {
  3582. return zeroIfNull ? {
  3583. cornerRadius: 0
  3584. } : null;
  3585. }
  3586. if (!isArray(cornerRadius)) {
  3587. cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius];
  3588. }
  3589. var dr = Math.abs(shape.r || 0 - shape.r0 || 0);
  3590. return {
  3591. cornerRadius: map(cornerRadius, function(cr) {
  3592. return parsePercent(cr, dr);
  3593. })
  3594. };
  3595. }
  3596. // node_modules/echarts/lib/chart/pie/PieView.js
  3597. var PiePiece = function(_super) {
  3598. __extends(PiePiece2, _super);
  3599. function PiePiece2(data, idx, startAngle) {
  3600. var _this = _super.call(this) || this;
  3601. _this.z2 = 2;
  3602. var text = new Text_default();
  3603. _this.setTextContent(text);
  3604. _this.updateData(data, idx, startAngle, true);
  3605. return _this;
  3606. }
  3607. PiePiece2.prototype.updateData = function(data, idx, startAngle, firstCreate) {
  3608. var sector = this;
  3609. var seriesModel = data.hostModel;
  3610. var itemModel = data.getItemModel(idx);
  3611. var emphasisModel = itemModel.getModel("emphasis");
  3612. var layout2 = data.getItemLayout(idx);
  3613. var sectorShape = extend(getSectorCornerRadius(itemModel.getModel("itemStyle"), layout2, true), layout2);
  3614. if (isNaN(sectorShape.startAngle)) {
  3615. sector.setShape(sectorShape);
  3616. return;
  3617. }
  3618. if (firstCreate) {
  3619. sector.setShape(sectorShape);
  3620. var animationType = seriesModel.getShallow("animationType");
  3621. if (seriesModel.ecModel.ssr) {
  3622. initProps(sector, {
  3623. scaleX: 0,
  3624. scaleY: 0
  3625. }, seriesModel, {
  3626. dataIndex: idx,
  3627. isFrom: true
  3628. });
  3629. sector.originX = sectorShape.cx;
  3630. sector.originY = sectorShape.cy;
  3631. } else if (animationType === "scale") {
  3632. sector.shape.r = layout2.r0;
  3633. initProps(sector, {
  3634. shape: {
  3635. r: layout2.r
  3636. }
  3637. }, seriesModel, idx);
  3638. } else {
  3639. if (startAngle != null) {
  3640. sector.setShape({
  3641. startAngle,
  3642. endAngle: startAngle
  3643. });
  3644. initProps(sector, {
  3645. shape: {
  3646. startAngle: layout2.startAngle,
  3647. endAngle: layout2.endAngle
  3648. }
  3649. }, seriesModel, idx);
  3650. } else {
  3651. sector.shape.endAngle = layout2.startAngle;
  3652. updateProps(sector, {
  3653. shape: {
  3654. endAngle: layout2.endAngle
  3655. }
  3656. }, seriesModel, idx);
  3657. }
  3658. }
  3659. } else {
  3660. saveOldStyle(sector);
  3661. updateProps(sector, {
  3662. shape: sectorShape
  3663. }, seriesModel, idx);
  3664. }
  3665. sector.useStyle(data.getItemVisual(idx, "style"));
  3666. setStatesStylesFromModel(sector, itemModel);
  3667. var midAngle = (layout2.startAngle + layout2.endAngle) / 2;
  3668. var offset = seriesModel.get("selectedOffset");
  3669. var dx = Math.cos(midAngle) * offset;
  3670. var dy = Math.sin(midAngle) * offset;
  3671. var cursorStyle = itemModel.getShallow("cursor");
  3672. cursorStyle && sector.attr("cursor", cursorStyle);
  3673. this._updateLabel(seriesModel, data, idx);
  3674. sector.ensureState("emphasis").shape = extend({
  3675. r: layout2.r + (emphasisModel.get("scale") ? emphasisModel.get("scaleSize") || 0 : 0)
  3676. }, getSectorCornerRadius(emphasisModel.getModel("itemStyle"), layout2));
  3677. extend(sector.ensureState("select"), {
  3678. x: dx,
  3679. y: dy,
  3680. shape: getSectorCornerRadius(itemModel.getModel(["select", "itemStyle"]), layout2)
  3681. });
  3682. extend(sector.ensureState("blur"), {
  3683. shape: getSectorCornerRadius(itemModel.getModel(["blur", "itemStyle"]), layout2)
  3684. });
  3685. var labelLine = sector.getTextGuideLine();
  3686. var labelText = sector.getTextContent();
  3687. labelLine && extend(labelLine.ensureState("select"), {
  3688. x: dx,
  3689. y: dy
  3690. });
  3691. extend(labelText.ensureState("select"), {
  3692. x: dx,
  3693. y: dy
  3694. });
  3695. toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  3696. };
  3697. PiePiece2.prototype._updateLabel = function(seriesModel, data, idx) {
  3698. var sector = this;
  3699. var itemModel = data.getItemModel(idx);
  3700. var labelLineModel = itemModel.getModel("labelLine");
  3701. var style = data.getItemVisual(idx, "style");
  3702. var visualColor = style && style.fill;
  3703. var visualOpacity = style && style.opacity;
  3704. setLabelStyle(sector, getLabelStatesModels(itemModel), {
  3705. labelFetcher: data.hostModel,
  3706. labelDataIndex: idx,
  3707. inheritColor: visualColor,
  3708. defaultOpacity: visualOpacity,
  3709. defaultText: seriesModel.getFormattedLabel(idx, "normal") || data.getName(idx)
  3710. });
  3711. var labelText = sector.getTextContent();
  3712. sector.setTextConfig({
  3713. position: null,
  3714. rotation: null
  3715. });
  3716. labelText.attr({
  3717. z2: 10
  3718. });
  3719. var labelPosition = seriesModel.get(["label", "position"]);
  3720. if (labelPosition !== "outside" && labelPosition !== "outer") {
  3721. sector.removeTextGuideLine();
  3722. } else {
  3723. var polyline = this.getTextGuideLine();
  3724. if (!polyline) {
  3725. polyline = new Polyline_default();
  3726. this.setTextGuideLine(polyline);
  3727. }
  3728. setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {
  3729. stroke: visualColor,
  3730. opacity: retrieve3(labelLineModel.get(["lineStyle", "opacity"]), visualOpacity, 1)
  3731. });
  3732. }
  3733. };
  3734. return PiePiece2;
  3735. }(Sector_default);
  3736. var PieView = function(_super) {
  3737. __extends(PieView2, _super);
  3738. function PieView2() {
  3739. var _this = _super !== null && _super.apply(this, arguments) || this;
  3740. _this.ignoreLabelLineUpdate = true;
  3741. return _this;
  3742. }
  3743. PieView2.prototype.render = function(seriesModel, ecModel, api, payload) {
  3744. var data = seriesModel.getData();
  3745. var oldData = this._data;
  3746. var group = this.group;
  3747. var startAngle;
  3748. if (!oldData && data.count() > 0) {
  3749. var shape = data.getItemLayout(0);
  3750. for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {
  3751. shape = data.getItemLayout(s);
  3752. }
  3753. if (shape) {
  3754. startAngle = shape.startAngle;
  3755. }
  3756. }
  3757. if (this._emptyCircleSector) {
  3758. group.remove(this._emptyCircleSector);
  3759. }
  3760. if (data.count() === 0 && seriesModel.get("showEmptyCircle")) {
  3761. var sector = new Sector_default({
  3762. shape: getBasicPieLayout(seriesModel, api)
  3763. });
  3764. sector.useStyle(seriesModel.getModel("emptyCircleStyle").getItemStyle());
  3765. this._emptyCircleSector = sector;
  3766. group.add(sector);
  3767. }
  3768. data.diff(oldData).add(function(idx) {
  3769. var piePiece = new PiePiece(data, idx, startAngle);
  3770. data.setItemGraphicEl(idx, piePiece);
  3771. group.add(piePiece);
  3772. }).update(function(newIdx, oldIdx) {
  3773. var piePiece = oldData.getItemGraphicEl(oldIdx);
  3774. piePiece.updateData(data, newIdx, startAngle);
  3775. piePiece.off("click");
  3776. group.add(piePiece);
  3777. data.setItemGraphicEl(newIdx, piePiece);
  3778. }).remove(function(idx) {
  3779. var piePiece = oldData.getItemGraphicEl(idx);
  3780. removeElementWithFadeOut(piePiece, seriesModel, idx);
  3781. }).execute();
  3782. pieLabelLayout(seriesModel);
  3783. if (seriesModel.get("animationTypeUpdate") !== "expansion") {
  3784. this._data = data;
  3785. }
  3786. };
  3787. PieView2.prototype.dispose = function() {
  3788. };
  3789. PieView2.prototype.containPoint = function(point, seriesModel) {
  3790. var data = seriesModel.getData();
  3791. var itemLayout = data.getItemLayout(0);
  3792. if (itemLayout) {
  3793. var dx = point[0] - itemLayout.cx;
  3794. var dy = point[1] - itemLayout.cy;
  3795. var radius = Math.sqrt(dx * dx + dy * dy);
  3796. return radius <= itemLayout.r && radius >= itemLayout.r0;
  3797. }
  3798. };
  3799. PieView2.type = "pie";
  3800. return PieView2;
  3801. }(Chart_default);
  3802. var PieView_default = PieView;
  3803. // node_modules/echarts/lib/chart/pie/PieSeries.js
  3804. init_define_APP_INFO();
  3805. // node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js
  3806. init_define_APP_INFO();
  3807. function createSeriesDataSimply(seriesModel, opt, nameList) {
  3808. opt = isArray(opt) && {
  3809. coordDimensions: opt
  3810. } || extend({
  3811. encodeDefine: seriesModel.getEncode()
  3812. }, opt);
  3813. var source = seriesModel.getSource();
  3814. var dimensions = prepareSeriesDataSchema(source, opt).dimensions;
  3815. var list = new SeriesData_default(dimensions, seriesModel);
  3816. list.initData(source, nameList);
  3817. return list;
  3818. }
  3819. // node_modules/echarts/lib/visual/LegendVisualProvider.js
  3820. init_define_APP_INFO();
  3821. var LegendVisualProvider = function() {
  3822. function LegendVisualProvider2(getDataWithEncodedVisual, getRawData) {
  3823. this._getDataWithEncodedVisual = getDataWithEncodedVisual;
  3824. this._getRawData = getRawData;
  3825. }
  3826. LegendVisualProvider2.prototype.getAllNames = function() {
  3827. var rawData = this._getRawData();
  3828. return rawData.mapArray(rawData.getName);
  3829. };
  3830. LegendVisualProvider2.prototype.containName = function(name) {
  3831. var rawData = this._getRawData();
  3832. return rawData.indexOfName(name) >= 0;
  3833. };
  3834. LegendVisualProvider2.prototype.indexOfName = function(name) {
  3835. var dataWithEncodedVisual = this._getDataWithEncodedVisual();
  3836. return dataWithEncodedVisual.indexOfName(name);
  3837. };
  3838. LegendVisualProvider2.prototype.getItemVisual = function(dataIndex, key) {
  3839. var dataWithEncodedVisual = this._getDataWithEncodedVisual();
  3840. return dataWithEncodedVisual.getItemVisual(dataIndex, key);
  3841. };
  3842. return LegendVisualProvider2;
  3843. }();
  3844. var LegendVisualProvider_default = LegendVisualProvider;
  3845. // node_modules/echarts/lib/chart/pie/PieSeries.js
  3846. var PieSeriesModel = function(_super) {
  3847. __extends(PieSeriesModel2, _super);
  3848. function PieSeriesModel2() {
  3849. return _super !== null && _super.apply(this, arguments) || this;
  3850. }
  3851. PieSeriesModel2.prototype.init = function(option) {
  3852. _super.prototype.init.apply(this, arguments);
  3853. this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this));
  3854. this._defaultLabelLine(option);
  3855. };
  3856. PieSeriesModel2.prototype.mergeOption = function() {
  3857. _super.prototype.mergeOption.apply(this, arguments);
  3858. };
  3859. PieSeriesModel2.prototype.getInitialData = function() {
  3860. return createSeriesDataSimply(this, {
  3861. coordDimensions: ["value"],
  3862. encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)
  3863. });
  3864. };
  3865. PieSeriesModel2.prototype.getDataParams = function(dataIndex) {
  3866. var data = this.getData();
  3867. var params = _super.prototype.getDataParams.call(this, dataIndex);
  3868. var valueList = [];
  3869. data.each(data.mapDimension("value"), function(value) {
  3870. valueList.push(value);
  3871. });
  3872. params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get("percentPrecision"));
  3873. params.$vars.push("percent");
  3874. return params;
  3875. };
  3876. PieSeriesModel2.prototype._defaultLabelLine = function(option) {
  3877. defaultEmphasis(option, "labelLine", ["show"]);
  3878. var labelLineNormalOpt = option.labelLine;
  3879. var labelLineEmphasisOpt = option.emphasis.labelLine;
  3880. labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;
  3881. labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;
  3882. };
  3883. PieSeriesModel2.type = "series.pie";
  3884. PieSeriesModel2.defaultOption = {
  3885. z: 2,
  3886. legendHoverLink: true,
  3887. colorBy: "data",
  3888. center: ["50%", "50%"],
  3889. radius: [0, "75%"],
  3890. clockwise: true,
  3891. startAngle: 90,
  3892. minAngle: 0,
  3893. minShowLabelAngle: 0,
  3894. selectedOffset: 10,
  3895. percentPrecision: 2,
  3896. stillShowZeroSum: true,
  3897. left: 0,
  3898. top: 0,
  3899. right: 0,
  3900. bottom: 0,
  3901. width: null,
  3902. height: null,
  3903. label: {
  3904. rotate: 0,
  3905. show: true,
  3906. overflow: "truncate",
  3907. position: "outer",
  3908. alignTo: "none",
  3909. edgeDistance: "25%",
  3910. bleedMargin: 10,
  3911. distanceToLabelLine: 5
  3912. },
  3913. labelLine: {
  3914. show: true,
  3915. length: 15,
  3916. length2: 15,
  3917. smooth: false,
  3918. minTurnAngle: 90,
  3919. maxSurfaceAngle: 90,
  3920. lineStyle: {
  3921. width: 1,
  3922. type: "solid"
  3923. }
  3924. },
  3925. itemStyle: {
  3926. borderWidth: 1,
  3927. borderJoin: "round"
  3928. },
  3929. showEmptyCircle: true,
  3930. emptyCircleStyle: {
  3931. color: "lightgray",
  3932. opacity: 1
  3933. },
  3934. labelLayout: {
  3935. hideOverlap: true
  3936. },
  3937. emphasis: {
  3938. scale: true,
  3939. scaleSize: 5
  3940. },
  3941. avoidLabelOverlap: true,
  3942. animationType: "expansion",
  3943. animationDuration: 1e3,
  3944. animationTypeUpdate: "transition",
  3945. animationEasingUpdate: "cubicInOut",
  3946. animationDurationUpdate: 500,
  3947. animationEasing: "cubicInOut"
  3948. };
  3949. return PieSeriesModel2;
  3950. }(Series_default);
  3951. var PieSeries_default = PieSeriesModel;
  3952. // node_modules/echarts/lib/processor/negativeDataFilter.js
  3953. init_define_APP_INFO();
  3954. function negativeDataFilter(seriesType) {
  3955. return {
  3956. seriesType,
  3957. reset: function(seriesModel, ecModel) {
  3958. var data = seriesModel.getData();
  3959. data.filterSelf(function(idx) {
  3960. var valueDim = data.mapDimension("value");
  3961. var curValue = data.get(valueDim, idx);
  3962. if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) {
  3963. return false;
  3964. }
  3965. return true;
  3966. });
  3967. }
  3968. };
  3969. }
  3970. // node_modules/echarts/lib/chart/pie/install.js
  3971. function install7(registers) {
  3972. registers.registerChartView(PieView_default);
  3973. registers.registerSeriesModel(PieSeries_default);
  3974. createLegacyDataSelectAction("pie", registers.registerAction);
  3975. registers.registerLayout(curry(pieLayout, "pie"));
  3976. registers.registerProcessor(dataFilter("pie"));
  3977. registers.registerProcessor(negativeDataFilter("pie"));
  3978. }
  3979. // node_modules/echarts/lib/chart/scatter/install.js
  3980. init_define_APP_INFO();
  3981. // node_modules/echarts/lib/chart/scatter/ScatterSeries.js
  3982. init_define_APP_INFO();
  3983. var ScatterSeriesModel = function(_super) {
  3984. __extends(ScatterSeriesModel2, _super);
  3985. function ScatterSeriesModel2() {
  3986. var _this = _super !== null && _super.apply(this, arguments) || this;
  3987. _this.type = ScatterSeriesModel2.type;
  3988. _this.hasSymbolVisual = true;
  3989. return _this;
  3990. }
  3991. ScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  3992. return createSeriesData_default(null, this, {
  3993. useEncodeDefaulter: true
  3994. });
  3995. };
  3996. ScatterSeriesModel2.prototype.getProgressive = function() {
  3997. var progressive = this.option.progressive;
  3998. if (progressive == null) {
  3999. return this.option.large ? 5e3 : this.get("progressive");
  4000. }
  4001. return progressive;
  4002. };
  4003. ScatterSeriesModel2.prototype.getProgressiveThreshold = function() {
  4004. var progressiveThreshold = this.option.progressiveThreshold;
  4005. if (progressiveThreshold == null) {
  4006. return this.option.large ? 1e4 : this.get("progressiveThreshold");
  4007. }
  4008. return progressiveThreshold;
  4009. };
  4010. ScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
  4011. return selectors.point(data.getItemLayout(dataIndex));
  4012. };
  4013. ScatterSeriesModel2.prototype.getZLevelKey = function() {
  4014. return this.getData().count() > this.getProgressiveThreshold() ? this.id : "";
  4015. };
  4016. ScatterSeriesModel2.type = "series.scatter";
  4017. ScatterSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"];
  4018. ScatterSeriesModel2.defaultOption = {
  4019. coordinateSystem: "cartesian2d",
  4020. z: 2,
  4021. legendHoverLink: true,
  4022. symbolSize: 10,
  4023. large: false,
  4024. largeThreshold: 2e3,
  4025. itemStyle: {
  4026. opacity: 0.8
  4027. },
  4028. emphasis: {
  4029. scale: true
  4030. },
  4031. clip: true,
  4032. select: {
  4033. itemStyle: {
  4034. borderColor: "#212121"
  4035. }
  4036. },
  4037. universalTransition: {
  4038. divideShape: "clone"
  4039. }
  4040. };
  4041. return ScatterSeriesModel2;
  4042. }(Series_default);
  4043. var ScatterSeries_default = ScatterSeriesModel;
  4044. // node_modules/echarts/lib/chart/scatter/ScatterView.js
  4045. init_define_APP_INFO();
  4046. // node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js
  4047. init_define_APP_INFO();
  4048. var BOOST_SIZE_THRESHOLD = 4;
  4049. var LargeSymbolPathShape = function() {
  4050. function LargeSymbolPathShape2() {
  4051. }
  4052. return LargeSymbolPathShape2;
  4053. }();
  4054. var LargeSymbolPath = function(_super) {
  4055. __extends(LargeSymbolPath2, _super);
  4056. function LargeSymbolPath2(opts) {
  4057. var _this = _super.call(this, opts) || this;
  4058. _this._off = 0;
  4059. _this.hoverDataIdx = -1;
  4060. return _this;
  4061. }
  4062. LargeSymbolPath2.prototype.getDefaultShape = function() {
  4063. return new LargeSymbolPathShape();
  4064. };
  4065. LargeSymbolPath2.prototype.reset = function() {
  4066. this.notClear = false;
  4067. this._off = 0;
  4068. };
  4069. LargeSymbolPath2.prototype.buildPath = function(path, shape) {
  4070. var points = shape.points;
  4071. var size = shape.size;
  4072. var symbolProxy = this.symbolProxy;
  4073. var symbolProxyShape = symbolProxy.shape;
  4074. var ctx = path.getContext ? path.getContext() : path;
  4075. var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD;
  4076. var softClipShape = this.softClipShape;
  4077. var i;
  4078. if (canBoost) {
  4079. this._ctx = ctx;
  4080. return;
  4081. }
  4082. this._ctx = null;
  4083. for (i = this._off; i < points.length; ) {
  4084. var x = points[i++];
  4085. var y = points[i++];
  4086. if (isNaN(x) || isNaN(y)) {
  4087. continue;
  4088. }
  4089. if (softClipShape && !softClipShape.contain(x, y)) {
  4090. continue;
  4091. }
  4092. symbolProxyShape.x = x - size[0] / 2;
  4093. symbolProxyShape.y = y - size[1] / 2;
  4094. symbolProxyShape.width = size[0];
  4095. symbolProxyShape.height = size[1];
  4096. symbolProxy.buildPath(path, symbolProxyShape, true);
  4097. }
  4098. if (this.incremental) {
  4099. this._off = i;
  4100. this.notClear = true;
  4101. }
  4102. };
  4103. LargeSymbolPath2.prototype.afterBrush = function() {
  4104. var shape = this.shape;
  4105. var points = shape.points;
  4106. var size = shape.size;
  4107. var ctx = this._ctx;
  4108. var softClipShape = this.softClipShape;
  4109. var i;
  4110. if (!ctx) {
  4111. return;
  4112. }
  4113. for (i = this._off; i < points.length; ) {
  4114. var x = points[i++];
  4115. var y = points[i++];
  4116. if (isNaN(x) || isNaN(y)) {
  4117. continue;
  4118. }
  4119. if (softClipShape && !softClipShape.contain(x, y)) {
  4120. continue;
  4121. }
  4122. ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);
  4123. }
  4124. if (this.incremental) {
  4125. this._off = i;
  4126. this.notClear = true;
  4127. }
  4128. };
  4129. LargeSymbolPath2.prototype.findDataIndex = function(x, y) {
  4130. var shape = this.shape;
  4131. var points = shape.points;
  4132. var size = shape.size;
  4133. var w = Math.max(size[0], 4);
  4134. var h = Math.max(size[1], 4);
  4135. for (var idx = points.length / 2 - 1; idx >= 0; idx--) {
  4136. var i = idx * 2;
  4137. var x0 = points[i] - w / 2;
  4138. var y0 = points[i + 1] - h / 2;
  4139. if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {
  4140. return idx;
  4141. }
  4142. }
  4143. return -1;
  4144. };
  4145. LargeSymbolPath2.prototype.contain = function(x, y) {
  4146. var localPos = this.transformCoordToLocal(x, y);
  4147. var rect = this.getBoundingRect();
  4148. x = localPos[0];
  4149. y = localPos[1];
  4150. if (rect.contain(x, y)) {
  4151. var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y);
  4152. return dataIdx >= 0;
  4153. }
  4154. this.hoverDataIdx = -1;
  4155. return false;
  4156. };
  4157. LargeSymbolPath2.prototype.getBoundingRect = function() {
  4158. var rect = this._rect;
  4159. if (!rect) {
  4160. var shape = this.shape;
  4161. var points = shape.points;
  4162. var size = shape.size;
  4163. var w = size[0];
  4164. var h = size[1];
  4165. var minX = Infinity;
  4166. var minY = Infinity;
  4167. var maxX = -Infinity;
  4168. var maxY = -Infinity;
  4169. for (var i = 0; i < points.length; ) {
  4170. var x = points[i++];
  4171. var y = points[i++];
  4172. minX = Math.min(x, minX);
  4173. maxX = Math.max(x, maxX);
  4174. minY = Math.min(y, minY);
  4175. maxY = Math.max(y, maxY);
  4176. }
  4177. rect = this._rect = new BoundingRect_default(minX - w / 2, minY - h / 2, maxX - minX + w, maxY - minY + h);
  4178. }
  4179. return rect;
  4180. };
  4181. return LargeSymbolPath2;
  4182. }(Path_default);
  4183. var LargeSymbolDraw = function() {
  4184. function LargeSymbolDraw2() {
  4185. this.group = new Group_default();
  4186. }
  4187. LargeSymbolDraw2.prototype.updateData = function(data, opt) {
  4188. this._clear();
  4189. var symbolEl = this._create();
  4190. symbolEl.setShape({
  4191. points: data.getLayout("points")
  4192. });
  4193. this._setCommon(symbolEl, data, opt);
  4194. };
  4195. LargeSymbolDraw2.prototype.updateLayout = function(data) {
  4196. var points = data.getLayout("points");
  4197. this.group.eachChild(function(child) {
  4198. if (child.startIndex != null) {
  4199. var len2 = (child.endIndex - child.startIndex) * 2;
  4200. var byteOffset = child.startIndex * 4 * 2;
  4201. points = new Float32Array(points.buffer, byteOffset, len2);
  4202. }
  4203. child.setShape("points", points);
  4204. child.reset();
  4205. });
  4206. };
  4207. LargeSymbolDraw2.prototype.incrementalPrepareUpdate = function(data) {
  4208. this._clear();
  4209. };
  4210. LargeSymbolDraw2.prototype.incrementalUpdate = function(taskParams, data, opt) {
  4211. var lastAdded = this._newAdded[0];
  4212. var points = data.getLayout("points");
  4213. var oldPoints = lastAdded && lastAdded.shape.points;
  4214. if (oldPoints && oldPoints.length < 2e4) {
  4215. var oldLen = oldPoints.length;
  4216. var newPoints = new Float32Array(oldLen + points.length);
  4217. newPoints.set(oldPoints);
  4218. newPoints.set(points, oldLen);
  4219. lastAdded.endIndex = taskParams.end;
  4220. lastAdded.setShape({
  4221. points: newPoints
  4222. });
  4223. } else {
  4224. this._newAdded = [];
  4225. var symbolEl = this._create();
  4226. symbolEl.startIndex = taskParams.start;
  4227. symbolEl.endIndex = taskParams.end;
  4228. symbolEl.incremental = true;
  4229. symbolEl.setShape({
  4230. points
  4231. });
  4232. this._setCommon(symbolEl, data, opt);
  4233. }
  4234. };
  4235. LargeSymbolDraw2.prototype.eachRendered = function(cb) {
  4236. this._newAdded[0] && cb(this._newAdded[0]);
  4237. };
  4238. LargeSymbolDraw2.prototype._create = function() {
  4239. var symbolEl = new LargeSymbolPath({
  4240. cursor: "default"
  4241. });
  4242. this.group.add(symbolEl);
  4243. this._newAdded.push(symbolEl);
  4244. return symbolEl;
  4245. };
  4246. LargeSymbolDraw2.prototype._setCommon = function(symbolEl, data, opt) {
  4247. var hostModel = data.hostModel;
  4248. opt = opt || {};
  4249. var size = data.getVisual("symbolSize");
  4250. symbolEl.setShape("size", size instanceof Array ? size : [size, size]);
  4251. symbolEl.softClipShape = opt.clipShape || null;
  4252. symbolEl.symbolProxy = createSymbol(data.getVisual("symbol"), 0, 0, 0, 0);
  4253. symbolEl.setColor = symbolEl.symbolProxy.setColor;
  4254. var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;
  4255. symbolEl.useStyle(
  4256. hostModel.getModel("itemStyle").getItemStyle(extrudeShadow ? ["color", "shadowBlur", "shadowColor"] : ["color"])
  4257. );
  4258. var globalStyle = data.getVisual("style");
  4259. var visualColor = globalStyle && globalStyle.fill;
  4260. if (visualColor) {
  4261. symbolEl.setColor(visualColor);
  4262. }
  4263. var ecData = getECData(symbolEl);
  4264. ecData.seriesIndex = hostModel.seriesIndex;
  4265. symbolEl.on("mousemove", function(e) {
  4266. ecData.dataIndex = null;
  4267. var dataIndex = symbolEl.hoverDataIdx;
  4268. if (dataIndex >= 0) {
  4269. ecData.dataIndex = dataIndex + (symbolEl.startIndex || 0);
  4270. }
  4271. });
  4272. };
  4273. LargeSymbolDraw2.prototype.remove = function() {
  4274. this._clear();
  4275. };
  4276. LargeSymbolDraw2.prototype._clear = function() {
  4277. this._newAdded = [];
  4278. this.group.removeAll();
  4279. };
  4280. return LargeSymbolDraw2;
  4281. }();
  4282. var LargeSymbolDraw_default = LargeSymbolDraw;
  4283. // node_modules/echarts/lib/chart/scatter/ScatterView.js
  4284. var ScatterView = function(_super) {
  4285. __extends(ScatterView2, _super);
  4286. function ScatterView2() {
  4287. var _this = _super !== null && _super.apply(this, arguments) || this;
  4288. _this.type = ScatterView2.type;
  4289. return _this;
  4290. }
  4291. ScatterView2.prototype.render = function(seriesModel, ecModel, api) {
  4292. var data = seriesModel.getData();
  4293. var symbolDraw = this._updateSymbolDraw(data, seriesModel);
  4294. symbolDraw.updateData(data, {
  4295. clipShape: this._getClipShape(seriesModel)
  4296. });
  4297. this._finished = true;
  4298. };
  4299. ScatterView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
  4300. var data = seriesModel.getData();
  4301. var symbolDraw = this._updateSymbolDraw(data, seriesModel);
  4302. symbolDraw.incrementalPrepareUpdate(data);
  4303. this._finished = false;
  4304. };
  4305. ScatterView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) {
  4306. this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {
  4307. clipShape: this._getClipShape(seriesModel)
  4308. });
  4309. this._finished = taskParams.end === seriesModel.getData().count();
  4310. };
  4311. ScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) {
  4312. var data = seriesModel.getData();
  4313. this.group.dirty();
  4314. if (!this._finished || data.count() > 1e4) {
  4315. return {
  4316. update: true
  4317. };
  4318. } else {
  4319. var res = pointsLayout("").reset(seriesModel, ecModel, api);
  4320. if (res.progress) {
  4321. res.progress({
  4322. start: 0,
  4323. end: data.count(),
  4324. count: data.count()
  4325. }, data);
  4326. }
  4327. this._symbolDraw.updateLayout(data);
  4328. }
  4329. };
  4330. ScatterView2.prototype.eachRendered = function(cb) {
  4331. this._symbolDraw && this._symbolDraw.eachRendered(cb);
  4332. };
  4333. ScatterView2.prototype._getClipShape = function(seriesModel) {
  4334. var coordSys = seriesModel.coordinateSystem;
  4335. var clipArea = coordSys && coordSys.getArea && coordSys.getArea();
  4336. return seriesModel.get("clip", true) ? clipArea : null;
  4337. };
  4338. ScatterView2.prototype._updateSymbolDraw = function(data, seriesModel) {
  4339. var symbolDraw = this._symbolDraw;
  4340. var pipelineContext = seriesModel.pipelineContext;
  4341. var isLargeDraw = pipelineContext.large;
  4342. if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {
  4343. symbolDraw && symbolDraw.remove();
  4344. symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw_default() : new SymbolDraw_default();
  4345. this._isLargeDraw = isLargeDraw;
  4346. this.group.removeAll();
  4347. }
  4348. this.group.add(symbolDraw.group);
  4349. return symbolDraw;
  4350. };
  4351. ScatterView2.prototype.remove = function(ecModel, api) {
  4352. this._symbolDraw && this._symbolDraw.remove(true);
  4353. this._symbolDraw = null;
  4354. };
  4355. ScatterView2.prototype.dispose = function() {
  4356. };
  4357. ScatterView2.type = "scatter";
  4358. return ScatterView2;
  4359. }(Chart_default);
  4360. var ScatterView_default = ScatterView;
  4361. // node_modules/echarts/lib/chart/scatter/install.js
  4362. function install8(registers) {
  4363. use(install);
  4364. registers.registerSeriesModel(ScatterSeries_default);
  4365. registers.registerChartView(ScatterView_default);
  4366. registers.registerLayout(pointsLayout("scatter"));
  4367. }
  4368. // node_modules/echarts/lib/chart/radar/install.js
  4369. init_define_APP_INFO();
  4370. // node_modules/echarts/lib/chart/radar/radarLayout.js
  4371. init_define_APP_INFO();
  4372. function radarLayout(ecModel) {
  4373. ecModel.eachSeriesByType("radar", function(seriesModel) {
  4374. var data = seriesModel.getData();
  4375. var points = [];
  4376. var coordSys = seriesModel.coordinateSystem;
  4377. if (!coordSys) {
  4378. return;
  4379. }
  4380. var axes = coordSys.getIndicatorAxes();
  4381. each(axes, function(axis, axisIndex) {
  4382. data.each(data.mapDimension(axes[axisIndex].dim), function(val, dataIndex) {
  4383. points[dataIndex] = points[dataIndex] || [];
  4384. var point = coordSys.dataToPoint(val, axisIndex);
  4385. points[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys);
  4386. });
  4387. });
  4388. data.each(function(idx) {
  4389. var firstPoint = find(points[idx], function(point) {
  4390. return isValidPoint(point);
  4391. }) || getValueMissingPoint(coordSys);
  4392. points[idx].push(firstPoint.slice());
  4393. data.setItemLayout(idx, points[idx]);
  4394. });
  4395. });
  4396. }
  4397. function isValidPoint(point) {
  4398. return !isNaN(point[0]) && !isNaN(point[1]);
  4399. }
  4400. function getValueMissingPoint(coordSys) {
  4401. return [coordSys.cx, coordSys.cy];
  4402. }
  4403. // node_modules/echarts/lib/chart/radar/backwardCompat.js
  4404. init_define_APP_INFO();
  4405. function radarBackwardCompat(option) {
  4406. var polarOptArr = option.polar;
  4407. if (polarOptArr) {
  4408. if (!isArray(polarOptArr)) {
  4409. polarOptArr = [polarOptArr];
  4410. }
  4411. var polarNotRadar_1 = [];
  4412. each(polarOptArr, function(polarOpt, idx) {
  4413. if (polarOpt.indicator) {
  4414. if (polarOpt.type && !polarOpt.shape) {
  4415. polarOpt.shape = polarOpt.type;
  4416. }
  4417. option.radar = option.radar || [];
  4418. if (!isArray(option.radar)) {
  4419. option.radar = [option.radar];
  4420. }
  4421. option.radar.push(polarOpt);
  4422. } else {
  4423. polarNotRadar_1.push(polarOpt);
  4424. }
  4425. });
  4426. option.polar = polarNotRadar_1;
  4427. }
  4428. each(option.series, function(seriesOpt) {
  4429. if (seriesOpt && seriesOpt.type === "radar" && seriesOpt.polarIndex) {
  4430. seriesOpt.radarIndex = seriesOpt.polarIndex;
  4431. }
  4432. });
  4433. }
  4434. // node_modules/echarts/lib/chart/radar/RadarView.js
  4435. init_define_APP_INFO();
  4436. var RadarView = function(_super) {
  4437. __extends(RadarView2, _super);
  4438. function RadarView2() {
  4439. var _this = _super !== null && _super.apply(this, arguments) || this;
  4440. _this.type = RadarView2.type;
  4441. return _this;
  4442. }
  4443. RadarView2.prototype.render = function(seriesModel, ecModel, api) {
  4444. var polar = seriesModel.coordinateSystem;
  4445. var group = this.group;
  4446. var data = seriesModel.getData();
  4447. var oldData = this._data;
  4448. function createSymbol2(data2, idx) {
  4449. var symbolType = data2.getItemVisual(idx, "symbol") || "circle";
  4450. if (symbolType === "none") {
  4451. return;
  4452. }
  4453. var symbolSize = normalizeSymbolSize(data2.getItemVisual(idx, "symbolSize"));
  4454. var symbolPath = createSymbol(symbolType, -1, -1, 2, 2);
  4455. var symbolRotate = data2.getItemVisual(idx, "symbolRotate") || 0;
  4456. symbolPath.attr({
  4457. style: {
  4458. strokeNoScale: true
  4459. },
  4460. z2: 100,
  4461. scaleX: symbolSize[0] / 2,
  4462. scaleY: symbolSize[1] / 2,
  4463. rotation: symbolRotate * Math.PI / 180 || 0
  4464. });
  4465. return symbolPath;
  4466. }
  4467. function updateSymbols(oldPoints, newPoints, symbolGroup, data2, idx, isInit) {
  4468. symbolGroup.removeAll();
  4469. for (var i = 0; i < newPoints.length - 1; i++) {
  4470. var symbolPath = createSymbol2(data2, idx);
  4471. if (symbolPath) {
  4472. symbolPath.__dimIdx = i;
  4473. if (oldPoints[i]) {
  4474. symbolPath.setPosition(oldPoints[i]);
  4475. graphic_exports[isInit ? "initProps" : "updateProps"](symbolPath, {
  4476. x: newPoints[i][0],
  4477. y: newPoints[i][1]
  4478. }, seriesModel, idx);
  4479. } else {
  4480. symbolPath.setPosition(newPoints[i]);
  4481. }
  4482. symbolGroup.add(symbolPath);
  4483. }
  4484. }
  4485. }
  4486. function getInitialPoints(points) {
  4487. return map(points, function(pt) {
  4488. return [polar.cx, polar.cy];
  4489. });
  4490. }
  4491. data.diff(oldData).add(function(idx) {
  4492. var points = data.getItemLayout(idx);
  4493. if (!points) {
  4494. return;
  4495. }
  4496. var polygon = new Polygon_default();
  4497. var polyline = new Polyline_default();
  4498. var target = {
  4499. shape: {
  4500. points
  4501. }
  4502. };
  4503. polygon.shape.points = getInitialPoints(points);
  4504. polyline.shape.points = getInitialPoints(points);
  4505. initProps(polygon, target, seriesModel, idx);
  4506. initProps(polyline, target, seriesModel, idx);
  4507. var itemGroup = new Group_default();
  4508. var symbolGroup = new Group_default();
  4509. itemGroup.add(polyline);
  4510. itemGroup.add(polygon);
  4511. itemGroup.add(symbolGroup);
  4512. updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);
  4513. data.setItemGraphicEl(idx, itemGroup);
  4514. }).update(function(newIdx, oldIdx) {
  4515. var itemGroup = oldData.getItemGraphicEl(oldIdx);
  4516. var polyline = itemGroup.childAt(0);
  4517. var polygon = itemGroup.childAt(1);
  4518. var symbolGroup = itemGroup.childAt(2);
  4519. var target = {
  4520. shape: {
  4521. points: data.getItemLayout(newIdx)
  4522. }
  4523. };
  4524. if (!target.shape.points) {
  4525. return;
  4526. }
  4527. updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);
  4528. saveOldStyle(polygon);
  4529. saveOldStyle(polyline);
  4530. updateProps(polyline, target, seriesModel);
  4531. updateProps(polygon, target, seriesModel);
  4532. data.setItemGraphicEl(newIdx, itemGroup);
  4533. }).remove(function(idx) {
  4534. group.remove(oldData.getItemGraphicEl(idx));
  4535. }).execute();
  4536. data.eachItemGraphicEl(function(itemGroup, idx) {
  4537. var itemModel = data.getItemModel(idx);
  4538. var polyline = itemGroup.childAt(0);
  4539. var polygon = itemGroup.childAt(1);
  4540. var symbolGroup = itemGroup.childAt(2);
  4541. var itemStyle = data.getItemVisual(idx, "style");
  4542. var color = itemStyle.fill;
  4543. group.add(itemGroup);
  4544. polyline.useStyle(defaults(itemModel.getModel("lineStyle").getLineStyle(), {
  4545. fill: "none",
  4546. stroke: color
  4547. }));
  4548. setStatesStylesFromModel(polyline, itemModel, "lineStyle");
  4549. setStatesStylesFromModel(polygon, itemModel, "areaStyle");
  4550. var areaStyleModel = itemModel.getModel("areaStyle");
  4551. var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();
  4552. polygon.ignore = polygonIgnore;
  4553. each(["emphasis", "select", "blur"], function(stateName) {
  4554. var stateModel = itemModel.getModel([stateName, "areaStyle"]);
  4555. var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty();
  4556. polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore;
  4557. });
  4558. polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {
  4559. fill: color,
  4560. opacity: 0.7,
  4561. decal: itemStyle.decal
  4562. }));
  4563. var emphasisModel = itemModel.getModel("emphasis");
  4564. var itemHoverStyle = emphasisModel.getModel("itemStyle").getItemStyle();
  4565. symbolGroup.eachChild(function(symbolPath) {
  4566. if (symbolPath instanceof Image_default) {
  4567. var pathStyle = symbolPath.style;
  4568. symbolPath.useStyle(extend({
  4569. image: pathStyle.image,
  4570. x: pathStyle.x,
  4571. y: pathStyle.y,
  4572. width: pathStyle.width,
  4573. height: pathStyle.height
  4574. }, itemStyle));
  4575. } else {
  4576. symbolPath.useStyle(itemStyle);
  4577. symbolPath.setColor(color);
  4578. symbolPath.style.strokeNoScale = true;
  4579. }
  4580. var pathEmphasisState = symbolPath.ensureState("emphasis");
  4581. pathEmphasisState.style = clone(itemHoverStyle);
  4582. var defaultText = data.getStore().get(data.getDimensionIndex(symbolPath.__dimIdx), idx);
  4583. (defaultText == null || isNaN(defaultText)) && (defaultText = "");
  4584. setLabelStyle(symbolPath, getLabelStatesModels(itemModel), {
  4585. labelFetcher: data.hostModel,
  4586. labelDataIndex: idx,
  4587. labelDimIndex: symbolPath.__dimIdx,
  4588. defaultText,
  4589. inheritColor: color,
  4590. defaultOpacity: itemStyle.opacity
  4591. });
  4592. });
  4593. toggleHoverEmphasis(itemGroup, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  4594. });
  4595. this._data = data;
  4596. };
  4597. RadarView2.prototype.remove = function() {
  4598. this.group.removeAll();
  4599. this._data = null;
  4600. };
  4601. RadarView2.type = "radar";
  4602. return RadarView2;
  4603. }(Chart_default);
  4604. var RadarView_default = RadarView;
  4605. // node_modules/echarts/lib/chart/radar/RadarSeries.js
  4606. init_define_APP_INFO();
  4607. var RadarSeriesModel = function(_super) {
  4608. __extends(RadarSeriesModel2, _super);
  4609. function RadarSeriesModel2() {
  4610. var _this = _super !== null && _super.apply(this, arguments) || this;
  4611. _this.type = RadarSeriesModel2.type;
  4612. _this.hasSymbolVisual = true;
  4613. return _this;
  4614. }
  4615. RadarSeriesModel2.prototype.init = function(option) {
  4616. _super.prototype.init.apply(this, arguments);
  4617. this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this));
  4618. };
  4619. RadarSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  4620. return createSeriesDataSimply(this, {
  4621. generateCoord: "indicator_",
  4622. generateCoordCount: Infinity
  4623. });
  4624. };
  4625. RadarSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
  4626. var data = this.getData();
  4627. var coordSys = this.coordinateSystem;
  4628. var indicatorAxes = coordSys.getIndicatorAxes();
  4629. var name = this.getData().getName(dataIndex);
  4630. var nameToDisplay = name === "" ? this.name : name;
  4631. var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex);
  4632. return createTooltipMarkup("section", {
  4633. header: nameToDisplay,
  4634. sortBlocks: true,
  4635. blocks: map(indicatorAxes, function(axis) {
  4636. var val = data.get(data.mapDimension(axis.dim), dataIndex);
  4637. return createTooltipMarkup("nameValue", {
  4638. markerType: "subItem",
  4639. markerColor,
  4640. name: axis.name,
  4641. value: val,
  4642. sortParam: val
  4643. });
  4644. })
  4645. });
  4646. };
  4647. RadarSeriesModel2.prototype.getTooltipPosition = function(dataIndex) {
  4648. if (dataIndex != null) {
  4649. var data_1 = this.getData();
  4650. var coordSys = this.coordinateSystem;
  4651. var values = data_1.getValues(map(coordSys.dimensions, function(dim) {
  4652. return data_1.mapDimension(dim);
  4653. }), dataIndex);
  4654. for (var i = 0, len2 = values.length; i < len2; i++) {
  4655. if (!isNaN(values[i])) {
  4656. var indicatorAxes = coordSys.getIndicatorAxes();
  4657. return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);
  4658. }
  4659. }
  4660. }
  4661. };
  4662. RadarSeriesModel2.type = "series.radar";
  4663. RadarSeriesModel2.dependencies = ["radar"];
  4664. RadarSeriesModel2.defaultOption = {
  4665. z: 2,
  4666. colorBy: "data",
  4667. coordinateSystem: "radar",
  4668. legendHoverLink: true,
  4669. radarIndex: 0,
  4670. lineStyle: {
  4671. width: 2,
  4672. type: "solid",
  4673. join: "round"
  4674. },
  4675. label: {
  4676. position: "top"
  4677. },
  4678. symbolSize: 8
  4679. };
  4680. return RadarSeriesModel2;
  4681. }(Series_default);
  4682. var RadarSeries_default = RadarSeriesModel;
  4683. // node_modules/echarts/lib/chart/radar/install.js
  4684. function install9(registers) {
  4685. use(install2);
  4686. registers.registerChartView(RadarView_default);
  4687. registers.registerSeriesModel(RadarSeries_default);
  4688. registers.registerLayout(radarLayout);
  4689. registers.registerProcessor(dataFilter("radar"));
  4690. registers.registerPreprocessor(radarBackwardCompat);
  4691. }
  4692. // node_modules/echarts/lib/chart/map/install.js
  4693. init_define_APP_INFO();
  4694. // node_modules/echarts/lib/chart/map/MapView.js
  4695. init_define_APP_INFO();
  4696. var MapView = function(_super) {
  4697. __extends(MapView2, _super);
  4698. function MapView2() {
  4699. var _this = _super !== null && _super.apply(this, arguments) || this;
  4700. _this.type = MapView2.type;
  4701. return _this;
  4702. }
  4703. MapView2.prototype.render = function(mapModel, ecModel, api, payload) {
  4704. if (payload && payload.type === "mapToggleSelect" && payload.from === this.uid) {
  4705. return;
  4706. }
  4707. var group = this.group;
  4708. group.removeAll();
  4709. if (mapModel.getHostGeoModel()) {
  4710. return;
  4711. }
  4712. if (this._mapDraw && payload && payload.type === "geoRoam") {
  4713. this._mapDraw.resetForLabelLayout();
  4714. }
  4715. if (!(payload && payload.type === "geoRoam" && payload.componentType === "series" && payload.seriesId === mapModel.id)) {
  4716. if (mapModel.needsDrawMap) {
  4717. var mapDraw = this._mapDraw || new MapDraw_default(api);
  4718. group.add(mapDraw.group);
  4719. mapDraw.draw(mapModel, ecModel, api, this, payload);
  4720. this._mapDraw = mapDraw;
  4721. } else {
  4722. this._mapDraw && this._mapDraw.remove();
  4723. this._mapDraw = null;
  4724. }
  4725. } else {
  4726. var mapDraw = this._mapDraw;
  4727. mapDraw && group.add(mapDraw.group);
  4728. }
  4729. mapModel.get("showLegendSymbol") && ecModel.getComponent("legend") && this._renderSymbols(mapModel, ecModel, api);
  4730. };
  4731. MapView2.prototype.remove = function() {
  4732. this._mapDraw && this._mapDraw.remove();
  4733. this._mapDraw = null;
  4734. this.group.removeAll();
  4735. };
  4736. MapView2.prototype.dispose = function() {
  4737. this._mapDraw && this._mapDraw.remove();
  4738. this._mapDraw = null;
  4739. };
  4740. MapView2.prototype._renderSymbols = function(mapModel, ecModel, api) {
  4741. var originalData = mapModel.originalData;
  4742. var group = this.group;
  4743. originalData.each(originalData.mapDimension("value"), function(value, originalDataIndex) {
  4744. if (isNaN(value)) {
  4745. return;
  4746. }
  4747. var layout2 = originalData.getItemLayout(originalDataIndex);
  4748. if (!layout2 || !layout2.point) {
  4749. return;
  4750. }
  4751. var point = layout2.point;
  4752. var offset = layout2.offset;
  4753. var circle = new Circle_default({
  4754. style: {
  4755. fill: mapModel.getData().getVisual("style").fill
  4756. },
  4757. shape: {
  4758. cx: point[0] + offset * 9,
  4759. cy: point[1],
  4760. r: 3
  4761. },
  4762. silent: true,
  4763. z2: 8 + (!offset ? Z2_EMPHASIS_LIFT + 1 : 0)
  4764. });
  4765. if (!offset) {
  4766. var fullData = mapModel.mainSeries.getData();
  4767. var name_1 = originalData.getName(originalDataIndex);
  4768. var fullIndex_1 = fullData.indexOfName(name_1);
  4769. var itemModel = originalData.getItemModel(originalDataIndex);
  4770. var labelModel = itemModel.getModel("label");
  4771. var regionGroup = fullData.getItemGraphicEl(fullIndex_1);
  4772. setLabelStyle(circle, getLabelStatesModels(itemModel), {
  4773. labelFetcher: {
  4774. getFormattedLabel: function(idx, state) {
  4775. return mapModel.getFormattedLabel(fullIndex_1, state);
  4776. }
  4777. },
  4778. defaultText: name_1
  4779. });
  4780. circle.disableLabelAnimation = true;
  4781. if (!labelModel.get("position")) {
  4782. circle.setTextConfig({
  4783. position: "bottom"
  4784. });
  4785. }
  4786. regionGroup.onHoverStateChange = function(toState) {
  4787. setStatesFlag(circle, toState);
  4788. };
  4789. }
  4790. group.add(circle);
  4791. });
  4792. };
  4793. MapView2.type = "map";
  4794. return MapView2;
  4795. }(Chart_default);
  4796. var MapView_default = MapView;
  4797. // node_modules/echarts/lib/chart/map/MapSeries.js
  4798. init_define_APP_INFO();
  4799. var MapSeries = function(_super) {
  4800. __extends(MapSeries2, _super);
  4801. function MapSeries2() {
  4802. var _this = _super !== null && _super.apply(this, arguments) || this;
  4803. _this.type = MapSeries2.type;
  4804. _this.needsDrawMap = false;
  4805. _this.seriesGroup = [];
  4806. _this.getTooltipPosition = function(dataIndex) {
  4807. if (dataIndex != null) {
  4808. var name_1 = this.getData().getName(dataIndex);
  4809. var geo = this.coordinateSystem;
  4810. var region = geo.getRegion(name_1);
  4811. return region && geo.dataToPoint(region.getCenter());
  4812. }
  4813. };
  4814. return _this;
  4815. }
  4816. MapSeries2.prototype.getInitialData = function(option) {
  4817. var data = createSeriesDataSimply(this, {
  4818. coordDimensions: ["value"],
  4819. encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)
  4820. });
  4821. var dataNameMap = createHashMap();
  4822. var toAppendNames = [];
  4823. for (var i = 0, len2 = data.count(); i < len2; i++) {
  4824. var name_2 = data.getName(i);
  4825. dataNameMap.set(name_2, true);
  4826. }
  4827. var geoSource = geoSourceManager_default.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);
  4828. each(geoSource.regions, function(region) {
  4829. var name = region.name;
  4830. if (!dataNameMap.get(name)) {
  4831. toAppendNames.push(name);
  4832. }
  4833. });
  4834. data.appendValues([], toAppendNames);
  4835. return data;
  4836. };
  4837. MapSeries2.prototype.getHostGeoModel = function() {
  4838. var geoIndex = this.option.geoIndex;
  4839. return geoIndex != null ? this.ecModel.getComponent("geo", geoIndex) : null;
  4840. };
  4841. MapSeries2.prototype.getMapType = function() {
  4842. return (this.getHostGeoModel() || this).option.map;
  4843. };
  4844. MapSeries2.prototype.getRawValue = function(dataIndex) {
  4845. var data = this.getData();
  4846. return data.get(data.mapDimension("value"), dataIndex);
  4847. };
  4848. MapSeries2.prototype.getRegionModel = function(regionName) {
  4849. var data = this.getData();
  4850. return data.getItemModel(data.indexOfName(regionName));
  4851. };
  4852. MapSeries2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
  4853. var data = this.getData();
  4854. var value = this.getRawValue(dataIndex);
  4855. var name = data.getName(dataIndex);
  4856. var seriesGroup = this.seriesGroup;
  4857. var seriesNames = [];
  4858. for (var i = 0; i < seriesGroup.length; i++) {
  4859. var otherIndex = seriesGroup[i].originalData.indexOfName(name);
  4860. var valueDim = data.mapDimension("value");
  4861. if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {
  4862. seriesNames.push(seriesGroup[i].name);
  4863. }
  4864. }
  4865. return createTooltipMarkup("section", {
  4866. header: seriesNames.join(", "),
  4867. noHeader: !seriesNames.length,
  4868. blocks: [createTooltipMarkup("nameValue", {
  4869. name,
  4870. value
  4871. })]
  4872. });
  4873. };
  4874. MapSeries2.prototype.setZoom = function(zoom) {
  4875. this.option.zoom = zoom;
  4876. };
  4877. MapSeries2.prototype.setCenter = function(center2) {
  4878. this.option.center = center2;
  4879. };
  4880. MapSeries2.prototype.getLegendIcon = function(opt) {
  4881. var iconType = opt.icon || "roundRect";
  4882. var icon = createSymbol(iconType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill);
  4883. icon.setStyle(opt.itemStyle);
  4884. icon.style.stroke = "none";
  4885. if (iconType.indexOf("empty") > -1) {
  4886. icon.style.stroke = icon.style.fill;
  4887. icon.style.fill = "#fff";
  4888. icon.style.lineWidth = 2;
  4889. }
  4890. return icon;
  4891. };
  4892. MapSeries2.type = "series.map";
  4893. MapSeries2.dependencies = ["geo"];
  4894. MapSeries2.layoutMode = "box";
  4895. MapSeries2.defaultOption = {
  4896. z: 2,
  4897. coordinateSystem: "geo",
  4898. map: "",
  4899. left: "center",
  4900. top: "center",
  4901. aspectScale: null,
  4902. showLegendSymbol: true,
  4903. boundingCoords: null,
  4904. center: null,
  4905. zoom: 1,
  4906. scaleLimit: null,
  4907. selectedMode: true,
  4908. label: {
  4909. show: false,
  4910. color: "#000"
  4911. },
  4912. itemStyle: {
  4913. borderWidth: 0.5,
  4914. borderColor: "#444",
  4915. areaColor: "#eee"
  4916. },
  4917. emphasis: {
  4918. label: {
  4919. show: true,
  4920. color: "rgb(100,0,0)"
  4921. },
  4922. itemStyle: {
  4923. areaColor: "rgba(255,215,0,0.8)"
  4924. }
  4925. },
  4926. select: {
  4927. label: {
  4928. show: true,
  4929. color: "rgb(100,0,0)"
  4930. },
  4931. itemStyle: {
  4932. color: "rgba(255,215,0,0.8)"
  4933. }
  4934. },
  4935. nameProperty: "name"
  4936. };
  4937. return MapSeries2;
  4938. }(Series_default);
  4939. var MapSeries_default = MapSeries;
  4940. // node_modules/echarts/lib/chart/map/mapDataStatistic.js
  4941. init_define_APP_INFO();
  4942. function dataStatistics(datas, statisticType) {
  4943. var dataNameMap = {};
  4944. each(datas, function(data) {
  4945. data.each(data.mapDimension("value"), function(value, idx) {
  4946. var mapKey = "ec-" + data.getName(idx);
  4947. dataNameMap[mapKey] = dataNameMap[mapKey] || [];
  4948. if (!isNaN(value)) {
  4949. dataNameMap[mapKey].push(value);
  4950. }
  4951. });
  4952. });
  4953. return datas[0].map(datas[0].mapDimension("value"), function(value, idx) {
  4954. var mapKey = "ec-" + datas[0].getName(idx);
  4955. var sum2 = 0;
  4956. var min = Infinity;
  4957. var max = -Infinity;
  4958. var len2 = dataNameMap[mapKey].length;
  4959. for (var i = 0; i < len2; i++) {
  4960. min = Math.min(min, dataNameMap[mapKey][i]);
  4961. max = Math.max(max, dataNameMap[mapKey][i]);
  4962. sum2 += dataNameMap[mapKey][i];
  4963. }
  4964. var result;
  4965. if (statisticType === "min") {
  4966. result = min;
  4967. } else if (statisticType === "max") {
  4968. result = max;
  4969. } else if (statisticType === "average") {
  4970. result = sum2 / len2;
  4971. } else {
  4972. result = sum2;
  4973. }
  4974. return len2 === 0 ? NaN : result;
  4975. });
  4976. }
  4977. function mapDataStatistic(ecModel) {
  4978. var seriesGroups = {};
  4979. ecModel.eachSeriesByType("map", function(seriesModel) {
  4980. var hostGeoModel = seriesModel.getHostGeoModel();
  4981. var key = hostGeoModel ? "o" + hostGeoModel.id : "i" + seriesModel.getMapType();
  4982. (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);
  4983. });
  4984. each(seriesGroups, function(seriesList, key) {
  4985. var data = dataStatistics(map(seriesList, function(seriesModel) {
  4986. return seriesModel.getData();
  4987. }), seriesList[0].get("mapValueCalculation"));
  4988. for (var i = 0; i < seriesList.length; i++) {
  4989. seriesList[i].originalData = seriesList[i].getData();
  4990. }
  4991. for (var i = 0; i < seriesList.length; i++) {
  4992. seriesList[i].seriesGroup = seriesList;
  4993. seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();
  4994. seriesList[i].setData(data.cloneShallow());
  4995. seriesList[i].mainSeries = seriesList[0];
  4996. }
  4997. });
  4998. }
  4999. // node_modules/echarts/lib/chart/map/mapSymbolLayout.js
  5000. init_define_APP_INFO();
  5001. function mapSymbolLayout(ecModel) {
  5002. var processedMapType = {};
  5003. ecModel.eachSeriesByType("map", function(mapSeries) {
  5004. var mapType = mapSeries.getMapType();
  5005. if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {
  5006. return;
  5007. }
  5008. var mapSymbolOffsets = {};
  5009. each(mapSeries.seriesGroup, function(subMapSeries) {
  5010. var geo = subMapSeries.coordinateSystem;
  5011. var data2 = subMapSeries.originalData;
  5012. if (subMapSeries.get("showLegendSymbol") && ecModel.getComponent("legend")) {
  5013. data2.each(data2.mapDimension("value"), function(value, idx) {
  5014. var name = data2.getName(idx);
  5015. var region = geo.getRegion(name);
  5016. if (!region || isNaN(value)) {
  5017. return;
  5018. }
  5019. var offset = mapSymbolOffsets[name] || 0;
  5020. var point = geo.dataToPoint(region.getCenter());
  5021. mapSymbolOffsets[name] = offset + 1;
  5022. data2.setItemLayout(idx, {
  5023. point,
  5024. offset
  5025. });
  5026. });
  5027. }
  5028. });
  5029. var data = mapSeries.getData();
  5030. data.each(function(idx) {
  5031. var name = data.getName(idx);
  5032. var layout2 = data.getItemLayout(idx) || {};
  5033. layout2.showLabel = !mapSymbolOffsets[name];
  5034. data.setItemLayout(idx, layout2);
  5035. });
  5036. processedMapType[mapType] = true;
  5037. });
  5038. }
  5039. // node_modules/echarts/lib/chart/map/install.js
  5040. function install10(registers) {
  5041. use(install3);
  5042. registers.registerChartView(MapView_default);
  5043. registers.registerSeriesModel(MapSeries_default);
  5044. registers.registerLayout(mapSymbolLayout);
  5045. registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);
  5046. createLegacyDataSelectAction("map", registers.registerAction);
  5047. }
  5048. // node_modules/echarts/lib/chart/tree/install.js
  5049. init_define_APP_INFO();
  5050. // node_modules/echarts/lib/chart/tree/TreeView.js
  5051. init_define_APP_INFO();
  5052. // node_modules/echarts/lib/chart/tree/layoutHelper.js
  5053. init_define_APP_INFO();
  5054. function init(inRoot) {
  5055. var root = inRoot;
  5056. root.hierNode = {
  5057. defaultAncestor: null,
  5058. ancestor: root,
  5059. prelim: 0,
  5060. modifier: 0,
  5061. change: 0,
  5062. shift: 0,
  5063. i: 0,
  5064. thread: null
  5065. };
  5066. var nodes = [root];
  5067. var node;
  5068. var children;
  5069. while (node = nodes.pop()) {
  5070. children = node.children;
  5071. if (node.isExpand && children.length) {
  5072. var n = children.length;
  5073. for (var i = n - 1; i >= 0; i--) {
  5074. var child = children[i];
  5075. child.hierNode = {
  5076. defaultAncestor: null,
  5077. ancestor: child,
  5078. prelim: 0,
  5079. modifier: 0,
  5080. change: 0,
  5081. shift: 0,
  5082. i,
  5083. thread: null
  5084. };
  5085. nodes.push(child);
  5086. }
  5087. }
  5088. }
  5089. }
  5090. function firstWalk(node, separation2) {
  5091. var children = node.isExpand ? node.children : [];
  5092. var siblings = node.parentNode.children;
  5093. var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;
  5094. if (children.length) {
  5095. executeShifts(node);
  5096. var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;
  5097. if (subtreeW) {
  5098. node.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node, subtreeW);
  5099. node.hierNode.modifier = node.hierNode.prelim - midPoint;
  5100. } else {
  5101. node.hierNode.prelim = midPoint;
  5102. }
  5103. } else if (subtreeW) {
  5104. node.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node, subtreeW);
  5105. }
  5106. node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation2);
  5107. }
  5108. function secondWalk(node) {
  5109. var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;
  5110. node.setLayout({
  5111. x: nodeX
  5112. }, true);
  5113. node.hierNode.modifier += node.parentNode.hierNode.modifier;
  5114. }
  5115. function separation(cb) {
  5116. return arguments.length ? cb : defaultSeparation;
  5117. }
  5118. function radialCoordinate(rad, r) {
  5119. rad -= Math.PI / 2;
  5120. return {
  5121. x: r * Math.cos(rad),
  5122. y: r * Math.sin(rad)
  5123. };
  5124. }
  5125. function getViewRect2(seriesModel, api) {
  5126. return getLayoutRect(seriesModel.getBoxLayoutParams(), {
  5127. width: api.getWidth(),
  5128. height: api.getHeight()
  5129. });
  5130. }
  5131. function executeShifts(node) {
  5132. var children = node.children;
  5133. var n = children.length;
  5134. var shift = 0;
  5135. var change = 0;
  5136. while (--n >= 0) {
  5137. var child = children[n];
  5138. child.hierNode.prelim += shift;
  5139. child.hierNode.modifier += shift;
  5140. change += child.hierNode.change;
  5141. shift += child.hierNode.shift + change;
  5142. }
  5143. }
  5144. function apportion(subtreeV, subtreeW, ancestor, separation2) {
  5145. if (subtreeW) {
  5146. var nodeOutRight = subtreeV;
  5147. var nodeInRight = subtreeV;
  5148. var nodeOutLeft = nodeInRight.parentNode.children[0];
  5149. var nodeInLeft = subtreeW;
  5150. var sumOutRight = nodeOutRight.hierNode.modifier;
  5151. var sumInRight = nodeInRight.hierNode.modifier;
  5152. var sumOutLeft = nodeOutLeft.hierNode.modifier;
  5153. var sumInLeft = nodeInLeft.hierNode.modifier;
  5154. while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {
  5155. nodeOutRight = nextRight(nodeOutRight);
  5156. nodeOutLeft = nextLeft(nodeOutLeft);
  5157. nodeOutRight.hierNode.ancestor = subtreeV;
  5158. var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation2(nodeInLeft, nodeInRight);
  5159. if (shift > 0) {
  5160. moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);
  5161. sumInRight += shift;
  5162. sumOutRight += shift;
  5163. }
  5164. sumInLeft += nodeInLeft.hierNode.modifier;
  5165. sumInRight += nodeInRight.hierNode.modifier;
  5166. sumOutRight += nodeOutRight.hierNode.modifier;
  5167. sumOutLeft += nodeOutLeft.hierNode.modifier;
  5168. }
  5169. if (nodeInLeft && !nextRight(nodeOutRight)) {
  5170. nodeOutRight.hierNode.thread = nodeInLeft;
  5171. nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;
  5172. }
  5173. if (nodeInRight && !nextLeft(nodeOutLeft)) {
  5174. nodeOutLeft.hierNode.thread = nodeInRight;
  5175. nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;
  5176. ancestor = subtreeV;
  5177. }
  5178. }
  5179. return ancestor;
  5180. }
  5181. function nextRight(node) {
  5182. var children = node.children;
  5183. return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;
  5184. }
  5185. function nextLeft(node) {
  5186. var children = node.children;
  5187. return children.length && node.isExpand ? children[0] : node.hierNode.thread;
  5188. }
  5189. function nextAncestor(nodeInLeft, node, ancestor) {
  5190. return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;
  5191. }
  5192. function moveSubtree(wl, wr, shift) {
  5193. var change = shift / (wr.hierNode.i - wl.hierNode.i);
  5194. wr.hierNode.change -= change;
  5195. wr.hierNode.shift += shift;
  5196. wr.hierNode.modifier += shift;
  5197. wr.hierNode.prelim += shift;
  5198. wl.hierNode.change += change;
  5199. }
  5200. function defaultSeparation(node1, node2) {
  5201. return node1.parentNode === node2.parentNode ? 1 : 2;
  5202. }
  5203. // node_modules/echarts/lib/chart/tree/TreeView.js
  5204. var TreeEdgeShape = function() {
  5205. function TreeEdgeShape2() {
  5206. this.parentPoint = [];
  5207. this.childPoints = [];
  5208. }
  5209. return TreeEdgeShape2;
  5210. }();
  5211. var TreePath = function(_super) {
  5212. __extends(TreePath2, _super);
  5213. function TreePath2(opts) {
  5214. return _super.call(this, opts) || this;
  5215. }
  5216. TreePath2.prototype.getDefaultStyle = function() {
  5217. return {
  5218. stroke: "#000",
  5219. fill: null
  5220. };
  5221. };
  5222. TreePath2.prototype.getDefaultShape = function() {
  5223. return new TreeEdgeShape();
  5224. };
  5225. TreePath2.prototype.buildPath = function(ctx, shape) {
  5226. var childPoints = shape.childPoints;
  5227. var childLen = childPoints.length;
  5228. var parentPoint = shape.parentPoint;
  5229. var firstChildPos = childPoints[0];
  5230. var lastChildPos = childPoints[childLen - 1];
  5231. if (childLen === 1) {
  5232. ctx.moveTo(parentPoint[0], parentPoint[1]);
  5233. ctx.lineTo(firstChildPos[0], firstChildPos[1]);
  5234. return;
  5235. }
  5236. var orient = shape.orient;
  5237. var forkDim = orient === "TB" || orient === "BT" ? 0 : 1;
  5238. var otherDim = 1 - forkDim;
  5239. var forkPosition = parsePercent2(shape.forkPosition, 1);
  5240. var tmpPoint = [];
  5241. tmpPoint[forkDim] = parentPoint[forkDim];
  5242. tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition;
  5243. ctx.moveTo(parentPoint[0], parentPoint[1]);
  5244. ctx.lineTo(tmpPoint[0], tmpPoint[1]);
  5245. ctx.moveTo(firstChildPos[0], firstChildPos[1]);
  5246. tmpPoint[forkDim] = firstChildPos[forkDim];
  5247. ctx.lineTo(tmpPoint[0], tmpPoint[1]);
  5248. tmpPoint[forkDim] = lastChildPos[forkDim];
  5249. ctx.lineTo(tmpPoint[0], tmpPoint[1]);
  5250. ctx.lineTo(lastChildPos[0], lastChildPos[1]);
  5251. for (var i = 1; i < childLen - 1; i++) {
  5252. var point = childPoints[i];
  5253. ctx.moveTo(point[0], point[1]);
  5254. tmpPoint[forkDim] = point[forkDim];
  5255. ctx.lineTo(tmpPoint[0], tmpPoint[1]);
  5256. }
  5257. };
  5258. return TreePath2;
  5259. }(Path_default);
  5260. var TreeView = function(_super) {
  5261. __extends(TreeView2, _super);
  5262. function TreeView2() {
  5263. var _this = _super !== null && _super.apply(this, arguments) || this;
  5264. _this.type = TreeView2.type;
  5265. _this._mainGroup = new Group_default();
  5266. return _this;
  5267. }
  5268. TreeView2.prototype.init = function(ecModel, api) {
  5269. this._controller = new RoamController_default(api.getZr());
  5270. this._controllerHost = {
  5271. target: this.group
  5272. };
  5273. this.group.add(this._mainGroup);
  5274. };
  5275. TreeView2.prototype.render = function(seriesModel, ecModel, api) {
  5276. var data = seriesModel.getData();
  5277. var layoutInfo = seriesModel.layoutInfo;
  5278. var group = this._mainGroup;
  5279. var layout2 = seriesModel.get("layout");
  5280. if (layout2 === "radial") {
  5281. group.x = layoutInfo.x + layoutInfo.width / 2;
  5282. group.y = layoutInfo.y + layoutInfo.height / 2;
  5283. } else {
  5284. group.x = layoutInfo.x;
  5285. group.y = layoutInfo.y;
  5286. }
  5287. this._updateViewCoordSys(seriesModel, api);
  5288. this._updateController(seriesModel, ecModel, api);
  5289. var oldData = this._data;
  5290. data.diff(oldData).add(function(newIdx) {
  5291. if (symbolNeedsDraw(data, newIdx)) {
  5292. updateNode(data, newIdx, null, group, seriesModel);
  5293. }
  5294. }).update(function(newIdx, oldIdx) {
  5295. var symbolEl = oldData.getItemGraphicEl(oldIdx);
  5296. if (!symbolNeedsDraw(data, newIdx)) {
  5297. symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel);
  5298. return;
  5299. }
  5300. updateNode(data, newIdx, symbolEl, group, seriesModel);
  5301. }).remove(function(oldIdx) {
  5302. var symbolEl = oldData.getItemGraphicEl(oldIdx);
  5303. if (symbolEl) {
  5304. removeNode(oldData, oldIdx, symbolEl, group, seriesModel);
  5305. }
  5306. }).execute();
  5307. this._nodeScaleRatio = seriesModel.get("nodeScaleRatio");
  5308. this._updateNodeAndLinkScale(seriesModel);
  5309. if (seriesModel.get("expandAndCollapse") === true) {
  5310. data.eachItemGraphicEl(function(el, dataIndex) {
  5311. el.off("click").on("click", function() {
  5312. api.dispatchAction({
  5313. type: "treeExpandAndCollapse",
  5314. seriesId: seriesModel.id,
  5315. dataIndex
  5316. });
  5317. });
  5318. });
  5319. }
  5320. this._data = data;
  5321. };
  5322. TreeView2.prototype._updateViewCoordSys = function(seriesModel, api) {
  5323. var data = seriesModel.getData();
  5324. var points = [];
  5325. data.each(function(idx) {
  5326. var layout2 = data.getItemLayout(idx);
  5327. if (layout2 && !isNaN(layout2.x) && !isNaN(layout2.y)) {
  5328. points.push([+layout2.x, +layout2.y]);
  5329. }
  5330. });
  5331. var min = [];
  5332. var max = [];
  5333. fromPoints(points, min, max);
  5334. var oldMin = this._min;
  5335. var oldMax = this._max;
  5336. if (max[0] - min[0] === 0) {
  5337. min[0] = oldMin ? oldMin[0] : min[0] - 1;
  5338. max[0] = oldMax ? oldMax[0] : max[0] + 1;
  5339. }
  5340. if (max[1] - min[1] === 0) {
  5341. min[1] = oldMin ? oldMin[1] : min[1] - 1;
  5342. max[1] = oldMax ? oldMax[1] : max[1] + 1;
  5343. }
  5344. var viewCoordSys = seriesModel.coordinateSystem = new View_default();
  5345. viewCoordSys.zoomLimit = seriesModel.get("scaleLimit");
  5346. viewCoordSys.setBoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);
  5347. viewCoordSys.setCenter(seriesModel.get("center"), api);
  5348. viewCoordSys.setZoom(seriesModel.get("zoom"));
  5349. this.group.attr({
  5350. x: viewCoordSys.x,
  5351. y: viewCoordSys.y,
  5352. scaleX: viewCoordSys.scaleX,
  5353. scaleY: viewCoordSys.scaleY
  5354. });
  5355. this._min = min;
  5356. this._max = max;
  5357. };
  5358. TreeView2.prototype._updateController = function(seriesModel, ecModel, api) {
  5359. var _this = this;
  5360. var controller = this._controller;
  5361. var controllerHost = this._controllerHost;
  5362. var group = this.group;
  5363. controller.setPointerChecker(function(e, x, y) {
  5364. var rect = group.getBoundingRect();
  5365. rect.applyTransform(group.transform);
  5366. return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);
  5367. });
  5368. controller.enable(seriesModel.get("roam"));
  5369. controllerHost.zoomLimit = seriesModel.get("scaleLimit");
  5370. controllerHost.zoom = seriesModel.coordinateSystem.getZoom();
  5371. controller.off("pan").off("zoom").on("pan", function(e) {
  5372. updateViewOnPan(controllerHost, e.dx, e.dy);
  5373. api.dispatchAction({
  5374. seriesId: seriesModel.id,
  5375. type: "treeRoam",
  5376. dx: e.dx,
  5377. dy: e.dy
  5378. });
  5379. }).on("zoom", function(e) {
  5380. updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);
  5381. api.dispatchAction({
  5382. seriesId: seriesModel.id,
  5383. type: "treeRoam",
  5384. zoom: e.scale,
  5385. originX: e.originX,
  5386. originY: e.originY
  5387. });
  5388. _this._updateNodeAndLinkScale(seriesModel);
  5389. api.updateLabelLayout();
  5390. });
  5391. };
  5392. TreeView2.prototype._updateNodeAndLinkScale = function(seriesModel) {
  5393. var data = seriesModel.getData();
  5394. var nodeScale = this._getNodeGlobalScale(seriesModel);
  5395. data.eachItemGraphicEl(function(el, idx) {
  5396. el.setSymbolScale(nodeScale);
  5397. });
  5398. };
  5399. TreeView2.prototype._getNodeGlobalScale = function(seriesModel) {
  5400. var coordSys = seriesModel.coordinateSystem;
  5401. if (coordSys.type !== "view") {
  5402. return 1;
  5403. }
  5404. var nodeScaleRatio = this._nodeScaleRatio;
  5405. var groupZoom = coordSys.scaleX || 1;
  5406. var roamZoom = coordSys.getZoom();
  5407. var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;
  5408. return nodeScale / groupZoom;
  5409. };
  5410. TreeView2.prototype.dispose = function() {
  5411. this._controller && this._controller.dispose();
  5412. this._controllerHost = null;
  5413. };
  5414. TreeView2.prototype.remove = function() {
  5415. this._mainGroup.removeAll();
  5416. this._data = null;
  5417. };
  5418. TreeView2.type = "tree";
  5419. return TreeView2;
  5420. }(Chart_default);
  5421. function symbolNeedsDraw(data, dataIndex) {
  5422. var layout2 = data.getItemLayout(dataIndex);
  5423. return layout2 && !isNaN(layout2.x) && !isNaN(layout2.y);
  5424. }
  5425. function updateNode(data, dataIndex, symbolEl, group, seriesModel) {
  5426. var isInit = !symbolEl;
  5427. var node = data.tree.getNodeByDataIndex(dataIndex);
  5428. var itemModel = node.getModel();
  5429. var visualColor = node.getVisual("style").fill;
  5430. var symbolInnerColor = node.isExpand === false && node.children.length !== 0 ? visualColor : "#fff";
  5431. var virtualRoot = data.tree.root;
  5432. var source = node.parentNode === virtualRoot ? node : node.parentNode || node;
  5433. var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);
  5434. var sourceLayout = source.getLayout();
  5435. var sourceOldLayout = sourceSymbolEl ? {
  5436. x: sourceSymbolEl.__oldX,
  5437. y: sourceSymbolEl.__oldY,
  5438. rawX: sourceSymbolEl.__radialOldRawX,
  5439. rawY: sourceSymbolEl.__radialOldRawY
  5440. } : sourceLayout;
  5441. var targetLayout = node.getLayout();
  5442. if (isInit) {
  5443. symbolEl = new Symbol_default(data, dataIndex, null, {
  5444. symbolInnerColor,
  5445. useNameLabel: true
  5446. });
  5447. symbolEl.x = sourceOldLayout.x;
  5448. symbolEl.y = sourceOldLayout.y;
  5449. } else {
  5450. symbolEl.updateData(data, dataIndex, null, {
  5451. symbolInnerColor,
  5452. useNameLabel: true
  5453. });
  5454. }
  5455. symbolEl.__radialOldRawX = symbolEl.__radialRawX;
  5456. symbolEl.__radialOldRawY = symbolEl.__radialRawY;
  5457. symbolEl.__radialRawX = targetLayout.rawX;
  5458. symbolEl.__radialRawY = targetLayout.rawY;
  5459. group.add(symbolEl);
  5460. data.setItemGraphicEl(dataIndex, symbolEl);
  5461. symbolEl.__oldX = symbolEl.x;
  5462. symbolEl.__oldY = symbolEl.y;
  5463. updateProps(symbolEl, {
  5464. x: targetLayout.x,
  5465. y: targetLayout.y
  5466. }, seriesModel);
  5467. var symbolPath = symbolEl.getSymbolPath();
  5468. if (seriesModel.get("layout") === "radial") {
  5469. var realRoot = virtualRoot.children[0];
  5470. var rootLayout = realRoot.getLayout();
  5471. var length_1 = realRoot.children.length;
  5472. var rad = void 0;
  5473. var isLeft = void 0;
  5474. if (targetLayout.x === rootLayout.x && node.isExpand === true && realRoot.children.length) {
  5475. var center2 = {
  5476. x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2,
  5477. y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2
  5478. };
  5479. rad = Math.atan2(center2.y - rootLayout.y, center2.x - rootLayout.x);
  5480. if (rad < 0) {
  5481. rad = Math.PI * 2 + rad;
  5482. }
  5483. isLeft = center2.x < rootLayout.x;
  5484. if (isLeft) {
  5485. rad = rad - Math.PI;
  5486. }
  5487. } else {
  5488. rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);
  5489. if (rad < 0) {
  5490. rad = Math.PI * 2 + rad;
  5491. }
  5492. if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) {
  5493. isLeft = targetLayout.x < rootLayout.x;
  5494. if (isLeft) {
  5495. rad = rad - Math.PI;
  5496. }
  5497. } else {
  5498. isLeft = targetLayout.x > rootLayout.x;
  5499. if (!isLeft) {
  5500. rad = rad - Math.PI;
  5501. }
  5502. }
  5503. }
  5504. var textPosition = isLeft ? "left" : "right";
  5505. var normalLabelModel = itemModel.getModel("label");
  5506. var rotate = normalLabelModel.get("rotate");
  5507. var labelRotateRadian = rotate * (Math.PI / 180);
  5508. var textContent = symbolPath.getTextContent();
  5509. if (textContent) {
  5510. symbolPath.setTextConfig({
  5511. position: normalLabelModel.get("position") || textPosition,
  5512. rotation: rotate == null ? -rad : labelRotateRadian,
  5513. origin: "center"
  5514. });
  5515. textContent.setStyle("verticalAlign", "middle");
  5516. }
  5517. }
  5518. var focus = itemModel.get(["emphasis", "focus"]);
  5519. var focusDataIndices = focus === "relative" ? concatArray(node.getAncestorsIndices(), node.getDescendantIndices()) : focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : null;
  5520. if (focusDataIndices) {
  5521. getECData(symbolEl).focus = focusDataIndices;
  5522. }
  5523. drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group);
  5524. if (symbolEl.__edge) {
  5525. symbolEl.onHoverStateChange = function(toState) {
  5526. if (toState !== "blur") {
  5527. var parentEl = node.parentNode && data.getItemGraphicEl(node.parentNode.dataIndex);
  5528. if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR)) {
  5529. setStatesFlag(symbolEl.__edge, toState);
  5530. }
  5531. }
  5532. };
  5533. }
  5534. }
  5535. function drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) {
  5536. var itemModel = node.getModel();
  5537. var edgeShape = seriesModel.get("edgeShape");
  5538. var layout2 = seriesModel.get("layout");
  5539. var orient = seriesModel.getOrient();
  5540. var curvature = seriesModel.get(["lineStyle", "curveness"]);
  5541. var edgeForkPosition = seriesModel.get("edgeForkPosition");
  5542. var lineStyle = itemModel.getModel("lineStyle").getLineStyle();
  5543. var edge = symbolEl.__edge;
  5544. if (edgeShape === "curve") {
  5545. if (node.parentNode && node.parentNode !== virtualRoot) {
  5546. if (!edge) {
  5547. edge = symbolEl.__edge = new BezierCurve_default({
  5548. shape: getEdgeShape(layout2, orient, curvature, sourceOldLayout, sourceOldLayout)
  5549. });
  5550. }
  5551. updateProps(edge, {
  5552. shape: getEdgeShape(layout2, orient, curvature, sourceLayout, targetLayout)
  5553. }, seriesModel);
  5554. }
  5555. } else if (edgeShape === "polyline") {
  5556. if (layout2 === "orthogonal") {
  5557. if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) {
  5558. var children = node.children;
  5559. var childPoints = [];
  5560. for (var i = 0; i < children.length; i++) {
  5561. var childLayout = children[i].getLayout();
  5562. childPoints.push([childLayout.x, childLayout.y]);
  5563. }
  5564. if (!edge) {
  5565. edge = symbolEl.__edge = new TreePath({
  5566. shape: {
  5567. parentPoint: [targetLayout.x, targetLayout.y],
  5568. childPoints: [[targetLayout.x, targetLayout.y]],
  5569. orient,
  5570. forkPosition: edgeForkPosition
  5571. }
  5572. });
  5573. }
  5574. updateProps(edge, {
  5575. shape: {
  5576. parentPoint: [targetLayout.x, targetLayout.y],
  5577. childPoints
  5578. }
  5579. }, seriesModel);
  5580. }
  5581. } else {
  5582. if (true) {
  5583. throw new Error("The polyline edgeShape can only be used in orthogonal layout");
  5584. }
  5585. }
  5586. }
  5587. if (edge && !(edgeShape === "polyline" && !node.isExpand)) {
  5588. edge.useStyle(defaults({
  5589. strokeNoScale: true,
  5590. fill: null
  5591. }, lineStyle));
  5592. setStatesStylesFromModel(edge, itemModel, "lineStyle");
  5593. setDefaultStateProxy(edge);
  5594. group.add(edge);
  5595. }
  5596. }
  5597. function removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt) {
  5598. var virtualRoot = data.tree.root;
  5599. var _a = getSourceNode(virtualRoot, node), source = _a.source, sourceLayout = _a.sourceLayout;
  5600. var symbolEl = data.getItemGraphicEl(node.dataIndex);
  5601. if (!symbolEl) {
  5602. return;
  5603. }
  5604. var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);
  5605. var sourceEdge = sourceSymbolEl.__edge;
  5606. var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : void 0);
  5607. var edgeShape = seriesModel.get("edgeShape");
  5608. var layoutOpt = seriesModel.get("layout");
  5609. var orient = seriesModel.get("orient");
  5610. var curvature = seriesModel.get(["lineStyle", "curveness"]);
  5611. if (edge) {
  5612. if (edgeShape === "curve") {
  5613. removeElement(edge, {
  5614. shape: getEdgeShape(layoutOpt, orient, curvature, sourceLayout, sourceLayout),
  5615. style: {
  5616. opacity: 0
  5617. }
  5618. }, seriesModel, {
  5619. cb: function() {
  5620. group.remove(edge);
  5621. },
  5622. removeOpt: removeAnimationOpt
  5623. });
  5624. } else if (edgeShape === "polyline" && seriesModel.get("layout") === "orthogonal") {
  5625. removeElement(edge, {
  5626. shape: {
  5627. parentPoint: [sourceLayout.x, sourceLayout.y],
  5628. childPoints: [[sourceLayout.x, sourceLayout.y]]
  5629. },
  5630. style: {
  5631. opacity: 0
  5632. }
  5633. }, seriesModel, {
  5634. cb: function() {
  5635. group.remove(edge);
  5636. },
  5637. removeOpt: removeAnimationOpt
  5638. });
  5639. }
  5640. }
  5641. }
  5642. function getSourceNode(virtualRoot, node) {
  5643. var source = node.parentNode === virtualRoot ? node : node.parentNode || node;
  5644. var sourceLayout;
  5645. while (sourceLayout = source.getLayout(), sourceLayout == null) {
  5646. source = source.parentNode === virtualRoot ? source : source.parentNode || source;
  5647. }
  5648. return {
  5649. source,
  5650. sourceLayout
  5651. };
  5652. }
  5653. function removeNode(data, dataIndex, symbolEl, group, seriesModel) {
  5654. var node = data.tree.getNodeByDataIndex(dataIndex);
  5655. var virtualRoot = data.tree.root;
  5656. var sourceLayout = getSourceNode(virtualRoot, node).sourceLayout;
  5657. var removeAnimationOpt = {
  5658. duration: seriesModel.get("animationDurationUpdate"),
  5659. easing: seriesModel.get("animationEasingUpdate")
  5660. };
  5661. removeElement(symbolEl, {
  5662. x: sourceLayout.x + 1,
  5663. y: sourceLayout.y + 1
  5664. }, seriesModel, {
  5665. cb: function() {
  5666. group.remove(symbolEl);
  5667. data.setItemGraphicEl(dataIndex, null);
  5668. },
  5669. removeOpt: removeAnimationOpt
  5670. });
  5671. symbolEl.fadeOut(null, data.hostModel, {
  5672. fadeLabel: true,
  5673. animation: removeAnimationOpt
  5674. });
  5675. node.children.forEach(function(childNode) {
  5676. removeNodeEdge(childNode, data, group, seriesModel, removeAnimationOpt);
  5677. });
  5678. removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt);
  5679. }
  5680. function getEdgeShape(layoutOpt, orient, curvature, sourceLayout, targetLayout) {
  5681. var cpx1;
  5682. var cpy1;
  5683. var cpx2;
  5684. var cpy2;
  5685. var x1;
  5686. var x2;
  5687. var y1;
  5688. var y2;
  5689. if (layoutOpt === "radial") {
  5690. x1 = sourceLayout.rawX;
  5691. y1 = sourceLayout.rawY;
  5692. x2 = targetLayout.rawX;
  5693. y2 = targetLayout.rawY;
  5694. var radialCoor1 = radialCoordinate(x1, y1);
  5695. var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature);
  5696. var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature);
  5697. var radialCoor4 = radialCoordinate(x2, y2);
  5698. return {
  5699. x1: radialCoor1.x || 0,
  5700. y1: radialCoor1.y || 0,
  5701. x2: radialCoor4.x || 0,
  5702. y2: radialCoor4.y || 0,
  5703. cpx1: radialCoor2.x || 0,
  5704. cpy1: radialCoor2.y || 0,
  5705. cpx2: radialCoor3.x || 0,
  5706. cpy2: radialCoor3.y || 0
  5707. };
  5708. } else {
  5709. x1 = sourceLayout.x;
  5710. y1 = sourceLayout.y;
  5711. x2 = targetLayout.x;
  5712. y2 = targetLayout.y;
  5713. if (orient === "LR" || orient === "RL") {
  5714. cpx1 = x1 + (x2 - x1) * curvature;
  5715. cpy1 = y1;
  5716. cpx2 = x2 + (x1 - x2) * curvature;
  5717. cpy2 = y2;
  5718. }
  5719. if (orient === "TB" || orient === "BT") {
  5720. cpx1 = x1;
  5721. cpy1 = y1 + (y2 - y1) * curvature;
  5722. cpx2 = x2;
  5723. cpy2 = y2 + (y1 - y2) * curvature;
  5724. }
  5725. }
  5726. return {
  5727. x1,
  5728. y1,
  5729. x2,
  5730. y2,
  5731. cpx1,
  5732. cpy1,
  5733. cpx2,
  5734. cpy2
  5735. };
  5736. }
  5737. var TreeView_default = TreeView;
  5738. // node_modules/echarts/lib/chart/tree/TreeSeries.js
  5739. init_define_APP_INFO();
  5740. // node_modules/echarts/lib/data/Tree.js
  5741. init_define_APP_INFO();
  5742. // node_modules/echarts/lib/data/helper/linkSeriesData.js
  5743. init_define_APP_INFO();
  5744. var inner = makeInner();
  5745. function linkSeriesData(opt) {
  5746. var mainData = opt.mainData;
  5747. var datas = opt.datas;
  5748. if (!datas) {
  5749. datas = {
  5750. main: mainData
  5751. };
  5752. opt.datasAttr = {
  5753. main: "data"
  5754. };
  5755. }
  5756. opt.datas = opt.mainData = null;
  5757. linkAll(mainData, datas, opt);
  5758. each(datas, function(data) {
  5759. each(mainData.TRANSFERABLE_METHODS, function(methodName) {
  5760. data.wrapMethod(methodName, curry(transferInjection, opt));
  5761. });
  5762. });
  5763. mainData.wrapMethod("cloneShallow", curry(cloneShallowInjection, opt));
  5764. each(mainData.CHANGABLE_METHODS, function(methodName) {
  5765. mainData.wrapMethod(methodName, curry(changeInjection, opt));
  5766. });
  5767. assert(datas[mainData.dataType] === mainData);
  5768. }
  5769. function transferInjection(opt, res) {
  5770. if (isMainData(this)) {
  5771. var datas = extend({}, inner(this).datas);
  5772. datas[this.dataType] = res;
  5773. linkAll(res, datas, opt);
  5774. } else {
  5775. linkSingle(res, this.dataType, inner(this).mainData, opt);
  5776. }
  5777. return res;
  5778. }
  5779. function changeInjection(opt, res) {
  5780. opt.struct && opt.struct.update();
  5781. return res;
  5782. }
  5783. function cloneShallowInjection(opt, res) {
  5784. each(inner(res).datas, function(data, dataType) {
  5785. data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);
  5786. });
  5787. return res;
  5788. }
  5789. function getLinkedData(dataType) {
  5790. var mainData = inner(this).mainData;
  5791. return dataType == null || mainData == null ? mainData : inner(mainData).datas[dataType];
  5792. }
  5793. function getLinkedDataAll() {
  5794. var mainData = inner(this).mainData;
  5795. return mainData == null ? [{
  5796. data: mainData
  5797. }] : map(keys(inner(mainData).datas), function(type) {
  5798. return {
  5799. type,
  5800. data: inner(mainData).datas[type]
  5801. };
  5802. });
  5803. }
  5804. function isMainData(data) {
  5805. return inner(data).mainData === data;
  5806. }
  5807. function linkAll(mainData, datas, opt) {
  5808. inner(mainData).datas = {};
  5809. each(datas, function(data, dataType) {
  5810. linkSingle(data, dataType, mainData, opt);
  5811. });
  5812. }
  5813. function linkSingle(data, dataType, mainData, opt) {
  5814. inner(mainData).datas[dataType] = data;
  5815. inner(data).mainData = mainData;
  5816. data.dataType = dataType;
  5817. if (opt.struct) {
  5818. data[opt.structAttr] = opt.struct;
  5819. opt.struct[opt.datasAttr[dataType]] = data;
  5820. }
  5821. data.getLinkedData = getLinkedData;
  5822. data.getLinkedDataAll = getLinkedDataAll;
  5823. }
  5824. var linkSeriesData_default = linkSeriesData;
  5825. // node_modules/echarts/lib/data/Tree.js
  5826. var TreeNode = function() {
  5827. function TreeNode2(name, hostTree) {
  5828. this.depth = 0;
  5829. this.height = 0;
  5830. this.dataIndex = -1;
  5831. this.children = [];
  5832. this.viewChildren = [];
  5833. this.isExpand = false;
  5834. this.name = name || "";
  5835. this.hostTree = hostTree;
  5836. }
  5837. TreeNode2.prototype.isRemoved = function() {
  5838. return this.dataIndex < 0;
  5839. };
  5840. TreeNode2.prototype.eachNode = function(options, cb, context) {
  5841. if (isFunction(options)) {
  5842. context = cb;
  5843. cb = options;
  5844. options = null;
  5845. }
  5846. options = options || {};
  5847. if (isString(options)) {
  5848. options = {
  5849. order: options
  5850. };
  5851. }
  5852. var order = options.order || "preorder";
  5853. var children = this[options.attr || "children"];
  5854. var suppressVisitSub;
  5855. order === "preorder" && (suppressVisitSub = cb.call(context, this));
  5856. for (var i = 0; !suppressVisitSub && i < children.length; i++) {
  5857. children[i].eachNode(options, cb, context);
  5858. }
  5859. order === "postorder" && cb.call(context, this);
  5860. };
  5861. TreeNode2.prototype.updateDepthAndHeight = function(depth) {
  5862. var height = 0;
  5863. this.depth = depth;
  5864. for (var i = 0; i < this.children.length; i++) {
  5865. var child = this.children[i];
  5866. child.updateDepthAndHeight(depth + 1);
  5867. if (child.height > height) {
  5868. height = child.height;
  5869. }
  5870. }
  5871. this.height = height + 1;
  5872. };
  5873. TreeNode2.prototype.getNodeById = function(id) {
  5874. if (this.getId() === id) {
  5875. return this;
  5876. }
  5877. for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) {
  5878. var res = children[i].getNodeById(id);
  5879. if (res) {
  5880. return res;
  5881. }
  5882. }
  5883. };
  5884. TreeNode2.prototype.contains = function(node) {
  5885. if (node === this) {
  5886. return true;
  5887. }
  5888. for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) {
  5889. var res = children[i].contains(node);
  5890. if (res) {
  5891. return res;
  5892. }
  5893. }
  5894. };
  5895. TreeNode2.prototype.getAncestors = function(includeSelf) {
  5896. var ancestors = [];
  5897. var node = includeSelf ? this : this.parentNode;
  5898. while (node) {
  5899. ancestors.push(node);
  5900. node = node.parentNode;
  5901. }
  5902. ancestors.reverse();
  5903. return ancestors;
  5904. };
  5905. TreeNode2.prototype.getAncestorsIndices = function() {
  5906. var indices = [];
  5907. var currNode = this;
  5908. while (currNode) {
  5909. indices.push(currNode.dataIndex);
  5910. currNode = currNode.parentNode;
  5911. }
  5912. indices.reverse();
  5913. return indices;
  5914. };
  5915. TreeNode2.prototype.getDescendantIndices = function() {
  5916. var indices = [];
  5917. this.eachNode(function(childNode) {
  5918. indices.push(childNode.dataIndex);
  5919. });
  5920. return indices;
  5921. };
  5922. TreeNode2.prototype.getValue = function(dimension) {
  5923. var data = this.hostTree.data;
  5924. return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex);
  5925. };
  5926. TreeNode2.prototype.setLayout = function(layout2, merge) {
  5927. this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout2, merge);
  5928. };
  5929. TreeNode2.prototype.getLayout = function() {
  5930. return this.hostTree.data.getItemLayout(this.dataIndex);
  5931. };
  5932. TreeNode2.prototype.getModel = function(path) {
  5933. if (this.dataIndex < 0) {
  5934. return;
  5935. }
  5936. var hostTree = this.hostTree;
  5937. var itemModel = hostTree.data.getItemModel(this.dataIndex);
  5938. return itemModel.getModel(path);
  5939. };
  5940. TreeNode2.prototype.getLevelModel = function() {
  5941. return (this.hostTree.levelModels || [])[this.depth];
  5942. };
  5943. TreeNode2.prototype.setVisual = function(key, value) {
  5944. this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);
  5945. };
  5946. TreeNode2.prototype.getVisual = function(key) {
  5947. return this.hostTree.data.getItemVisual(this.dataIndex, key);
  5948. };
  5949. TreeNode2.prototype.getRawIndex = function() {
  5950. return this.hostTree.data.getRawIndex(this.dataIndex);
  5951. };
  5952. TreeNode2.prototype.getId = function() {
  5953. return this.hostTree.data.getId(this.dataIndex);
  5954. };
  5955. TreeNode2.prototype.getChildIndex = function() {
  5956. if (this.parentNode) {
  5957. var children = this.parentNode.children;
  5958. for (var i = 0; i < children.length; ++i) {
  5959. if (children[i] === this) {
  5960. return i;
  5961. }
  5962. }
  5963. return -1;
  5964. }
  5965. return -1;
  5966. };
  5967. TreeNode2.prototype.isAncestorOf = function(node) {
  5968. var parent = node.parentNode;
  5969. while (parent) {
  5970. if (parent === this) {
  5971. return true;
  5972. }
  5973. parent = parent.parentNode;
  5974. }
  5975. return false;
  5976. };
  5977. TreeNode2.prototype.isDescendantOf = function(node) {
  5978. return node !== this && node.isAncestorOf(this);
  5979. };
  5980. return TreeNode2;
  5981. }();
  5982. var Tree = function() {
  5983. function Tree2(hostModel) {
  5984. this.type = "tree";
  5985. this._nodes = [];
  5986. this.hostModel = hostModel;
  5987. }
  5988. Tree2.prototype.eachNode = function(options, cb, context) {
  5989. this.root.eachNode(options, cb, context);
  5990. };
  5991. Tree2.prototype.getNodeByDataIndex = function(dataIndex) {
  5992. var rawIndex = this.data.getRawIndex(dataIndex);
  5993. return this._nodes[rawIndex];
  5994. };
  5995. Tree2.prototype.getNodeById = function(name) {
  5996. return this.root.getNodeById(name);
  5997. };
  5998. Tree2.prototype.update = function() {
  5999. var data = this.data;
  6000. var nodes = this._nodes;
  6001. for (var i = 0, len2 = nodes.length; i < len2; i++) {
  6002. nodes[i].dataIndex = -1;
  6003. }
  6004. for (var i = 0, len2 = data.count(); i < len2; i++) {
  6005. nodes[data.getRawIndex(i)].dataIndex = i;
  6006. }
  6007. };
  6008. Tree2.prototype.clearLayouts = function() {
  6009. this.data.clearItemLayouts();
  6010. };
  6011. Tree2.createTree = function(dataRoot, hostModel, beforeLink) {
  6012. var tree = new Tree2(hostModel);
  6013. var listData = [];
  6014. var dimMax = 1;
  6015. buildHierarchy(dataRoot);
  6016. function buildHierarchy(dataNode, parentNode) {
  6017. var value = dataNode.value;
  6018. dimMax = Math.max(dimMax, isArray(value) ? value.length : 1);
  6019. listData.push(dataNode);
  6020. var node = new TreeNode(convertOptionIdName(dataNode.name, ""), tree);
  6021. parentNode ? addChild(node, parentNode) : tree.root = node;
  6022. tree._nodes.push(node);
  6023. var children = dataNode.children;
  6024. if (children) {
  6025. for (var i = 0; i < children.length; i++) {
  6026. buildHierarchy(children[i], node);
  6027. }
  6028. }
  6029. }
  6030. tree.root.updateDepthAndHeight(0);
  6031. var dimensions = prepareSeriesDataSchema(listData, {
  6032. coordDimensions: ["value"],
  6033. dimensionsCount: dimMax
  6034. }).dimensions;
  6035. var list = new SeriesData_default(dimensions, hostModel);
  6036. list.initData(listData);
  6037. beforeLink && beforeLink(list);
  6038. linkSeriesData_default({
  6039. mainData: list,
  6040. struct: tree,
  6041. structAttr: "tree"
  6042. });
  6043. tree.update();
  6044. return tree;
  6045. };
  6046. return Tree2;
  6047. }();
  6048. function addChild(child, node) {
  6049. var children = node.children;
  6050. if (child.parentNode === node) {
  6051. return;
  6052. }
  6053. children.push(child);
  6054. child.parentNode = node;
  6055. }
  6056. var Tree_default = Tree;
  6057. // node_modules/echarts/lib/chart/helper/treeHelper.js
  6058. init_define_APP_INFO();
  6059. function retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {
  6060. if (payload && indexOf(validPayloadTypes, payload.type) >= 0) {
  6061. var root = seriesModel.getData().tree.root;
  6062. var targetNode = payload.targetNode;
  6063. if (isString(targetNode)) {
  6064. targetNode = root.getNodeById(targetNode);
  6065. }
  6066. if (targetNode && root.contains(targetNode)) {
  6067. return {
  6068. node: targetNode
  6069. };
  6070. }
  6071. var targetNodeId = payload.targetNodeId;
  6072. if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {
  6073. return {
  6074. node: targetNode
  6075. };
  6076. }
  6077. }
  6078. }
  6079. function getPathToRoot(node) {
  6080. var path = [];
  6081. while (node) {
  6082. node = node.parentNode;
  6083. node && path.push(node);
  6084. }
  6085. return path.reverse();
  6086. }
  6087. function aboveViewRoot(viewRoot, node) {
  6088. var viewPath = getPathToRoot(viewRoot);
  6089. return indexOf(viewPath, node) >= 0;
  6090. }
  6091. function wrapTreePathInfo(node, seriesModel) {
  6092. var treePathInfo = [];
  6093. while (node) {
  6094. var nodeDataIndex = node.dataIndex;
  6095. treePathInfo.push({
  6096. name: node.name,
  6097. dataIndex: nodeDataIndex,
  6098. value: seriesModel.getRawValue(nodeDataIndex)
  6099. });
  6100. node = node.parentNode;
  6101. }
  6102. treePathInfo.reverse();
  6103. return treePathInfo;
  6104. }
  6105. // node_modules/echarts/lib/chart/tree/TreeSeries.js
  6106. var TreeSeriesModel = function(_super) {
  6107. __extends(TreeSeriesModel2, _super);
  6108. function TreeSeriesModel2() {
  6109. var _this = _super !== null && _super.apply(this, arguments) || this;
  6110. _this.hasSymbolVisual = true;
  6111. _this.ignoreStyleOnData = true;
  6112. return _this;
  6113. }
  6114. TreeSeriesModel2.prototype.getInitialData = function(option) {
  6115. var root = {
  6116. name: option.name,
  6117. children: option.data
  6118. };
  6119. var leaves = option.leaves || {};
  6120. var leavesModel = new Model_default(leaves, this, this.ecModel);
  6121. var tree = Tree_default.createTree(root, this, beforeLink);
  6122. function beforeLink(nodeData) {
  6123. nodeData.wrapMethod("getItemModel", function(model, idx) {
  6124. var node = tree.getNodeByDataIndex(idx);
  6125. if (!(node && node.children.length && node.isExpand)) {
  6126. model.parentModel = leavesModel;
  6127. }
  6128. return model;
  6129. });
  6130. }
  6131. var treeDepth = 0;
  6132. tree.eachNode("preorder", function(node) {
  6133. if (node.depth > treeDepth) {
  6134. treeDepth = node.depth;
  6135. }
  6136. });
  6137. var expandAndCollapse = option.expandAndCollapse;
  6138. var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;
  6139. tree.root.eachNode("preorder", function(node) {
  6140. var item = node.hostTree.data.getRawDataItem(node.dataIndex);
  6141. node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth;
  6142. });
  6143. return tree.data;
  6144. };
  6145. TreeSeriesModel2.prototype.getOrient = function() {
  6146. var orient = this.get("orient");
  6147. if (orient === "horizontal") {
  6148. orient = "LR";
  6149. } else if (orient === "vertical") {
  6150. orient = "TB";
  6151. }
  6152. return orient;
  6153. };
  6154. TreeSeriesModel2.prototype.setZoom = function(zoom) {
  6155. this.option.zoom = zoom;
  6156. };
  6157. TreeSeriesModel2.prototype.setCenter = function(center2) {
  6158. this.option.center = center2;
  6159. };
  6160. TreeSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
  6161. var tree = this.getData().tree;
  6162. var realRoot = tree.root.children[0];
  6163. var node = tree.getNodeByDataIndex(dataIndex);
  6164. var value = node.getValue();
  6165. var name = node.name;
  6166. while (node && node !== realRoot) {
  6167. name = node.parentNode.name + "." + name;
  6168. node = node.parentNode;
  6169. }
  6170. return createTooltipMarkup("nameValue", {
  6171. name,
  6172. value,
  6173. noValue: isNaN(value) || value == null
  6174. });
  6175. };
  6176. TreeSeriesModel2.prototype.getDataParams = function(dataIndex) {
  6177. var params = _super.prototype.getDataParams.apply(this, arguments);
  6178. var node = this.getData().tree.getNodeByDataIndex(dataIndex);
  6179. params.treeAncestors = wrapTreePathInfo(node, this);
  6180. params.collapsed = !node.isExpand;
  6181. return params;
  6182. };
  6183. TreeSeriesModel2.type = "series.tree";
  6184. TreeSeriesModel2.layoutMode = "box";
  6185. TreeSeriesModel2.defaultOption = {
  6186. z: 2,
  6187. coordinateSystem: "view",
  6188. left: "12%",
  6189. top: "12%",
  6190. right: "12%",
  6191. bottom: "12%",
  6192. layout: "orthogonal",
  6193. edgeShape: "curve",
  6194. edgeForkPosition: "50%",
  6195. roam: false,
  6196. nodeScaleRatio: 0.4,
  6197. center: null,
  6198. zoom: 1,
  6199. orient: "LR",
  6200. symbol: "emptyCircle",
  6201. symbolSize: 7,
  6202. expandAndCollapse: true,
  6203. initialTreeDepth: 2,
  6204. lineStyle: {
  6205. color: "#ccc",
  6206. width: 1.5,
  6207. curveness: 0.5
  6208. },
  6209. itemStyle: {
  6210. color: "lightsteelblue",
  6211. borderWidth: 1.5
  6212. },
  6213. label: {
  6214. show: true
  6215. },
  6216. animationEasing: "linear",
  6217. animationDuration: 700,
  6218. animationDurationUpdate: 500
  6219. };
  6220. return TreeSeriesModel2;
  6221. }(Series_default);
  6222. var TreeSeries_default = TreeSeriesModel;
  6223. // node_modules/echarts/lib/chart/tree/treeLayout.js
  6224. init_define_APP_INFO();
  6225. // node_modules/echarts/lib/chart/tree/traversalHelper.js
  6226. init_define_APP_INFO();
  6227. function eachAfter(root, callback, separation2) {
  6228. var nodes = [root];
  6229. var next = [];
  6230. var node;
  6231. while (node = nodes.pop()) {
  6232. next.push(node);
  6233. if (node.isExpand) {
  6234. var children = node.children;
  6235. if (children.length) {
  6236. for (var i = 0; i < children.length; i++) {
  6237. nodes.push(children[i]);
  6238. }
  6239. }
  6240. }
  6241. }
  6242. while (node = next.pop()) {
  6243. callback(node, separation2);
  6244. }
  6245. }
  6246. function eachBefore(root, callback) {
  6247. var nodes = [root];
  6248. var node;
  6249. while (node = nodes.pop()) {
  6250. callback(node);
  6251. if (node.isExpand) {
  6252. var children = node.children;
  6253. if (children.length) {
  6254. for (var i = children.length - 1; i >= 0; i--) {
  6255. nodes.push(children[i]);
  6256. }
  6257. }
  6258. }
  6259. }
  6260. }
  6261. // node_modules/echarts/lib/chart/tree/treeLayout.js
  6262. function treeLayout(ecModel, api) {
  6263. ecModel.eachSeriesByType("tree", function(seriesModel) {
  6264. commonLayout(seriesModel, api);
  6265. });
  6266. }
  6267. function commonLayout(seriesModel, api) {
  6268. var layoutInfo = getViewRect2(seriesModel, api);
  6269. seriesModel.layoutInfo = layoutInfo;
  6270. var layout2 = seriesModel.get("layout");
  6271. var width = 0;
  6272. var height = 0;
  6273. var separation2 = null;
  6274. if (layout2 === "radial") {
  6275. width = 2 * Math.PI;
  6276. height = Math.min(layoutInfo.height, layoutInfo.width) / 2;
  6277. separation2 = separation(function(node1, node2) {
  6278. return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;
  6279. });
  6280. } else {
  6281. width = layoutInfo.width;
  6282. height = layoutInfo.height;
  6283. separation2 = separation();
  6284. }
  6285. var virtualRoot = seriesModel.getData().tree.root;
  6286. var realRoot = virtualRoot.children[0];
  6287. if (realRoot) {
  6288. init(virtualRoot);
  6289. eachAfter(realRoot, firstWalk, separation2);
  6290. virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;
  6291. eachBefore(realRoot, secondWalk);
  6292. var left_1 = realRoot;
  6293. var right_1 = realRoot;
  6294. var bottom_1 = realRoot;
  6295. eachBefore(realRoot, function(node) {
  6296. var x = node.getLayout().x;
  6297. if (x < left_1.getLayout().x) {
  6298. left_1 = node;
  6299. }
  6300. if (x > right_1.getLayout().x) {
  6301. right_1 = node;
  6302. }
  6303. if (node.depth > bottom_1.depth) {
  6304. bottom_1 = node;
  6305. }
  6306. });
  6307. var delta = left_1 === right_1 ? 1 : separation2(left_1, right_1) / 2;
  6308. var tx_1 = delta - left_1.getLayout().x;
  6309. var kx_1 = 0;
  6310. var ky_1 = 0;
  6311. var coorX_1 = 0;
  6312. var coorY_1 = 0;
  6313. if (layout2 === "radial") {
  6314. kx_1 = width / (right_1.getLayout().x + delta + tx_1);
  6315. ky_1 = height / (bottom_1.depth - 1 || 1);
  6316. eachBefore(realRoot, function(node) {
  6317. coorX_1 = (node.getLayout().x + tx_1) * kx_1;
  6318. coorY_1 = (node.depth - 1) * ky_1;
  6319. var finalCoor = radialCoordinate(coorX_1, coorY_1);
  6320. node.setLayout({
  6321. x: finalCoor.x,
  6322. y: finalCoor.y,
  6323. rawX: coorX_1,
  6324. rawY: coorY_1
  6325. }, true);
  6326. });
  6327. } else {
  6328. var orient_1 = seriesModel.getOrient();
  6329. if (orient_1 === "RL" || orient_1 === "LR") {
  6330. ky_1 = height / (right_1.getLayout().x + delta + tx_1);
  6331. kx_1 = width / (bottom_1.depth - 1 || 1);
  6332. eachBefore(realRoot, function(node) {
  6333. coorY_1 = (node.getLayout().x + tx_1) * ky_1;
  6334. coorX_1 = orient_1 === "LR" ? (node.depth - 1) * kx_1 : width - (node.depth - 1) * kx_1;
  6335. node.setLayout({
  6336. x: coorX_1,
  6337. y: coorY_1
  6338. }, true);
  6339. });
  6340. } else if (orient_1 === "TB" || orient_1 === "BT") {
  6341. kx_1 = width / (right_1.getLayout().x + delta + tx_1);
  6342. ky_1 = height / (bottom_1.depth - 1 || 1);
  6343. eachBefore(realRoot, function(node) {
  6344. coorX_1 = (node.getLayout().x + tx_1) * kx_1;
  6345. coorY_1 = orient_1 === "TB" ? (node.depth - 1) * ky_1 : height - (node.depth - 1) * ky_1;
  6346. node.setLayout({
  6347. x: coorX_1,
  6348. y: coorY_1
  6349. }, true);
  6350. });
  6351. }
  6352. }
  6353. }
  6354. }
  6355. // node_modules/echarts/lib/chart/tree/treeVisual.js
  6356. init_define_APP_INFO();
  6357. function treeVisual(ecModel) {
  6358. ecModel.eachSeriesByType("tree", function(seriesModel) {
  6359. var data = seriesModel.getData();
  6360. var tree = data.tree;
  6361. tree.eachNode(function(node) {
  6362. var model = node.getModel();
  6363. var style = model.getModel("itemStyle").getItemStyle();
  6364. var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style");
  6365. extend(existsStyle, style);
  6366. });
  6367. });
  6368. }
  6369. // node_modules/echarts/lib/chart/tree/treeAction.js
  6370. init_define_APP_INFO();
  6371. function installTreeAction(registers) {
  6372. registers.registerAction({
  6373. type: "treeExpandAndCollapse",
  6374. event: "treeExpandAndCollapse",
  6375. update: "update"
  6376. }, function(payload, ecModel) {
  6377. ecModel.eachComponent({
  6378. mainType: "series",
  6379. subType: "tree",
  6380. query: payload
  6381. }, function(seriesModel) {
  6382. var dataIndex = payload.dataIndex;
  6383. var tree = seriesModel.getData().tree;
  6384. var node = tree.getNodeByDataIndex(dataIndex);
  6385. node.isExpand = !node.isExpand;
  6386. });
  6387. });
  6388. registers.registerAction({
  6389. type: "treeRoam",
  6390. event: "treeRoam",
  6391. update: "none"
  6392. }, function(payload, ecModel, api) {
  6393. ecModel.eachComponent({
  6394. mainType: "series",
  6395. subType: "tree",
  6396. query: payload
  6397. }, function(seriesModel) {
  6398. var coordSys = seriesModel.coordinateSystem;
  6399. var res = updateCenterAndZoom(coordSys, payload, void 0, api);
  6400. seriesModel.setCenter && seriesModel.setCenter(res.center);
  6401. seriesModel.setZoom && seriesModel.setZoom(res.zoom);
  6402. });
  6403. });
  6404. }
  6405. // node_modules/echarts/lib/chart/tree/install.js
  6406. function install11(registers) {
  6407. registers.registerChartView(TreeView_default);
  6408. registers.registerSeriesModel(TreeSeries_default);
  6409. registers.registerLayout(treeLayout);
  6410. registers.registerVisual(treeVisual);
  6411. installTreeAction(registers);
  6412. }
  6413. // node_modules/echarts/lib/chart/treemap/install.js
  6414. init_define_APP_INFO();
  6415. // node_modules/echarts/lib/chart/treemap/treemapAction.js
  6416. init_define_APP_INFO();
  6417. var actionTypes = ["treemapZoomToNode", "treemapRender", "treemapMove"];
  6418. function installTreemapAction(registers) {
  6419. for (var i = 0; i < actionTypes.length; i++) {
  6420. registers.registerAction({
  6421. type: actionTypes[i],
  6422. update: "updateView"
  6423. }, noop);
  6424. }
  6425. registers.registerAction({
  6426. type: "treemapRootToNode",
  6427. update: "updateView"
  6428. }, function(payload, ecModel) {
  6429. ecModel.eachComponent({
  6430. mainType: "series",
  6431. subType: "treemap",
  6432. query: payload
  6433. }, handleRootToNode);
  6434. function handleRootToNode(model, index) {
  6435. var types = ["treemapZoomToNode", "treemapRootToNode"];
  6436. var targetInfo = retrieveTargetInfo(payload, types, model);
  6437. if (targetInfo) {
  6438. var originViewRoot = model.getViewRoot();
  6439. if (originViewRoot) {
  6440. payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown";
  6441. }
  6442. model.resetViewRoot(targetInfo.node);
  6443. }
  6444. }
  6445. });
  6446. }
  6447. // node_modules/echarts/lib/chart/treemap/TreemapSeries.js
  6448. init_define_APP_INFO();
  6449. // node_modules/echarts/lib/chart/helper/enableAriaDecalForTree.js
  6450. init_define_APP_INFO();
  6451. function enableAriaDecalForTree(seriesModel) {
  6452. var data = seriesModel.getData();
  6453. var tree = data.tree;
  6454. var decalPaletteScope = {};
  6455. tree.eachNode(function(node) {
  6456. var current = node;
  6457. while (current && current.depth > 1) {
  6458. current = current.parentNode;
  6459. }
  6460. var decal = getDecalFromPalette(seriesModel.ecModel, current.name || current.dataIndex + "", decalPaletteScope);
  6461. node.setVisual("decal", decal);
  6462. });
  6463. }
  6464. // node_modules/echarts/lib/chart/treemap/TreemapSeries.js
  6465. var TreemapSeriesModel = function(_super) {
  6466. __extends(TreemapSeriesModel2, _super);
  6467. function TreemapSeriesModel2() {
  6468. var _this = _super !== null && _super.apply(this, arguments) || this;
  6469. _this.type = TreemapSeriesModel2.type;
  6470. _this.preventUsingHoverLayer = true;
  6471. return _this;
  6472. }
  6473. TreemapSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  6474. var root = {
  6475. name: option.name,
  6476. children: option.data
  6477. };
  6478. completeTreeValue(root);
  6479. var levels = option.levels || [];
  6480. var designatedVisualItemStyle = this.designatedVisualItemStyle = {};
  6481. var designatedVisualModel = new Model_default({
  6482. itemStyle: designatedVisualItemStyle
  6483. }, this, ecModel);
  6484. levels = option.levels = setDefault(levels, ecModel);
  6485. var levelModels = map(levels || [], function(levelDefine) {
  6486. return new Model_default(levelDefine, designatedVisualModel, ecModel);
  6487. }, this);
  6488. var tree = Tree_default.createTree(root, this, beforeLink);
  6489. function beforeLink(nodeData) {
  6490. nodeData.wrapMethod("getItemModel", function(model, idx) {
  6491. var node = tree.getNodeByDataIndex(idx);
  6492. var levelModel = node ? levelModels[node.depth] : null;
  6493. model.parentModel = levelModel || designatedVisualModel;
  6494. return model;
  6495. });
  6496. }
  6497. return tree.data;
  6498. };
  6499. TreemapSeriesModel2.prototype.optionUpdated = function() {
  6500. this.resetViewRoot();
  6501. };
  6502. TreemapSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
  6503. var data = this.getData();
  6504. var value = this.getRawValue(dataIndex);
  6505. var name = data.getName(dataIndex);
  6506. return createTooltipMarkup("nameValue", {
  6507. name,
  6508. value
  6509. });
  6510. };
  6511. TreemapSeriesModel2.prototype.getDataParams = function(dataIndex) {
  6512. var params = _super.prototype.getDataParams.apply(this, arguments);
  6513. var node = this.getData().tree.getNodeByDataIndex(dataIndex);
  6514. params.treeAncestors = wrapTreePathInfo(node, this);
  6515. params.treePathInfo = params.treeAncestors;
  6516. return params;
  6517. };
  6518. TreemapSeriesModel2.prototype.setLayoutInfo = function(layoutInfo) {
  6519. this.layoutInfo = this.layoutInfo || {};
  6520. extend(this.layoutInfo, layoutInfo);
  6521. };
  6522. TreemapSeriesModel2.prototype.mapIdToIndex = function(id) {
  6523. var idIndexMap = this._idIndexMap;
  6524. if (!idIndexMap) {
  6525. idIndexMap = this._idIndexMap = createHashMap();
  6526. this._idIndexMapCount = 0;
  6527. }
  6528. var index = idIndexMap.get(id);
  6529. if (index == null) {
  6530. idIndexMap.set(id, index = this._idIndexMapCount++);
  6531. }
  6532. return index;
  6533. };
  6534. TreemapSeriesModel2.prototype.getViewRoot = function() {
  6535. return this._viewRoot;
  6536. };
  6537. TreemapSeriesModel2.prototype.resetViewRoot = function(viewRoot) {
  6538. viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;
  6539. var root = this.getRawData().tree.root;
  6540. if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {
  6541. this._viewRoot = root;
  6542. }
  6543. };
  6544. TreemapSeriesModel2.prototype.enableAriaDecal = function() {
  6545. enableAriaDecalForTree(this);
  6546. };
  6547. TreemapSeriesModel2.type = "series.treemap";
  6548. TreemapSeriesModel2.layoutMode = "box";
  6549. TreemapSeriesModel2.defaultOption = {
  6550. progressive: 0,
  6551. left: "center",
  6552. top: "middle",
  6553. width: "80%",
  6554. height: "80%",
  6555. sort: true,
  6556. clipWindow: "origin",
  6557. squareRatio: 0.5 * (1 + Math.sqrt(5)),
  6558. leafDepth: null,
  6559. drillDownIcon: "\u25B6",
  6560. zoomToNodeRatio: 0.32 * 0.32,
  6561. roam: true,
  6562. nodeClick: "zoomToNode",
  6563. animation: true,
  6564. animationDurationUpdate: 900,
  6565. animationEasing: "quinticInOut",
  6566. breadcrumb: {
  6567. show: true,
  6568. height: 22,
  6569. left: "center",
  6570. top: "bottom",
  6571. emptyItemWidth: 25,
  6572. itemStyle: {
  6573. color: "rgba(0,0,0,0.7)",
  6574. textStyle: {
  6575. color: "#fff"
  6576. }
  6577. }
  6578. },
  6579. label: {
  6580. show: true,
  6581. distance: 0,
  6582. padding: 5,
  6583. position: "inside",
  6584. color: "#fff",
  6585. overflow: "truncate"
  6586. },
  6587. upperLabel: {
  6588. show: false,
  6589. position: [0, "50%"],
  6590. height: 20,
  6591. overflow: "truncate",
  6592. verticalAlign: "middle"
  6593. },
  6594. itemStyle: {
  6595. color: null,
  6596. colorAlpha: null,
  6597. colorSaturation: null,
  6598. borderWidth: 0,
  6599. gapWidth: 0,
  6600. borderColor: "#fff",
  6601. borderColorSaturation: null
  6602. },
  6603. emphasis: {
  6604. upperLabel: {
  6605. show: true,
  6606. position: [0, "50%"],
  6607. overflow: "truncate",
  6608. verticalAlign: "middle"
  6609. }
  6610. },
  6611. visualDimension: 0,
  6612. visualMin: null,
  6613. visualMax: null,
  6614. color: [],
  6615. colorAlpha: null,
  6616. colorSaturation: null,
  6617. colorMappingBy: "index",
  6618. visibleMin: 10,
  6619. childrenVisibleMin: null,
  6620. levels: []
  6621. };
  6622. return TreemapSeriesModel2;
  6623. }(Series_default);
  6624. function completeTreeValue(dataNode) {
  6625. var sum2 = 0;
  6626. each(dataNode.children, function(child) {
  6627. completeTreeValue(child);
  6628. var childValue = child.value;
  6629. isArray(childValue) && (childValue = childValue[0]);
  6630. sum2 += childValue;
  6631. });
  6632. var thisValue = dataNode.value;
  6633. if (isArray(thisValue)) {
  6634. thisValue = thisValue[0];
  6635. }
  6636. if (thisValue == null || isNaN(thisValue)) {
  6637. thisValue = sum2;
  6638. }
  6639. if (thisValue < 0) {
  6640. thisValue = 0;
  6641. }
  6642. isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;
  6643. }
  6644. function setDefault(levels, ecModel) {
  6645. var globalColorList = normalizeToArray(ecModel.get("color"));
  6646. var globalDecalList = normalizeToArray(ecModel.get(["aria", "decal", "decals"]));
  6647. if (!globalColorList) {
  6648. return;
  6649. }
  6650. levels = levels || [];
  6651. var hasColorDefine;
  6652. var hasDecalDefine;
  6653. each(levels, function(levelDefine) {
  6654. var model = new Model_default(levelDefine);
  6655. var modelColor = model.get("color");
  6656. var modelDecal = model.get("decal");
  6657. if (model.get(["itemStyle", "color"]) || modelColor && modelColor !== "none") {
  6658. hasColorDefine = true;
  6659. }
  6660. if (model.get(["itemStyle", "decal"]) || modelDecal && modelDecal !== "none") {
  6661. hasDecalDefine = true;
  6662. }
  6663. });
  6664. var level0 = levels[0] || (levels[0] = {});
  6665. if (!hasColorDefine) {
  6666. level0.color = globalColorList.slice();
  6667. }
  6668. if (!hasDecalDefine && globalDecalList) {
  6669. level0.decal = globalDecalList.slice();
  6670. }
  6671. return levels;
  6672. }
  6673. var TreemapSeries_default = TreemapSeriesModel;
  6674. // node_modules/echarts/lib/chart/treemap/TreemapView.js
  6675. init_define_APP_INFO();
  6676. // node_modules/echarts/lib/chart/treemap/Breadcrumb.js
  6677. init_define_APP_INFO();
  6678. var TEXT_PADDING = 8;
  6679. var ITEM_GAP = 8;
  6680. var ARRAY_LENGTH = 5;
  6681. var Breadcrumb = function() {
  6682. function Breadcrumb2(containerGroup) {
  6683. this.group = new Group_default();
  6684. containerGroup.add(this.group);
  6685. }
  6686. Breadcrumb2.prototype.render = function(seriesModel, api, targetNode, onSelect) {
  6687. var model = seriesModel.getModel("breadcrumb");
  6688. var thisGroup = this.group;
  6689. thisGroup.removeAll();
  6690. if (!model.get("show") || !targetNode) {
  6691. return;
  6692. }
  6693. var normalStyleModel = model.getModel("itemStyle");
  6694. var textStyleModel = normalStyleModel.getModel("textStyle");
  6695. var layoutParam = {
  6696. pos: {
  6697. left: model.get("left"),
  6698. right: model.get("right"),
  6699. top: model.get("top"),
  6700. bottom: model.get("bottom")
  6701. },
  6702. box: {
  6703. width: api.getWidth(),
  6704. height: api.getHeight()
  6705. },
  6706. emptyItemWidth: model.get("emptyItemWidth"),
  6707. totalWidth: 0,
  6708. renderList: []
  6709. };
  6710. this._prepare(targetNode, layoutParam, textStyleModel);
  6711. this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect);
  6712. positionElement(thisGroup, layoutParam.pos, layoutParam.box);
  6713. };
  6714. Breadcrumb2.prototype._prepare = function(targetNode, layoutParam, textStyleModel) {
  6715. for (var node = targetNode; node; node = node.parentNode) {
  6716. var text = convertOptionIdName(node.getModel().get("name"), "");
  6717. var textRect = textStyleModel.getTextRect(text);
  6718. var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);
  6719. layoutParam.totalWidth += itemWidth + ITEM_GAP;
  6720. layoutParam.renderList.push({
  6721. node,
  6722. text,
  6723. width: itemWidth
  6724. });
  6725. }
  6726. };
  6727. Breadcrumb2.prototype._renderContent = function(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect) {
  6728. var lastX = 0;
  6729. var emptyItemWidth = layoutParam.emptyItemWidth;
  6730. var height = seriesModel.get(["breadcrumb", "height"]);
  6731. var availableSize = getAvailableSize(layoutParam.pos, layoutParam.box);
  6732. var totalWidth = layoutParam.totalWidth;
  6733. var renderList = layoutParam.renderList;
  6734. for (var i = renderList.length - 1; i >= 0; i--) {
  6735. var item = renderList[i];
  6736. var itemNode = item.node;
  6737. var itemWidth = item.width;
  6738. var text = item.text;
  6739. if (totalWidth > availableSize.width) {
  6740. totalWidth -= itemWidth - emptyItemWidth;
  6741. itemWidth = emptyItemWidth;
  6742. text = null;
  6743. }
  6744. var el = new Polygon_default({
  6745. shape: {
  6746. points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)
  6747. },
  6748. style: defaults(normalStyleModel.getItemStyle(), {
  6749. lineJoin: "bevel"
  6750. }),
  6751. textContent: new Text_default({
  6752. style: {
  6753. text,
  6754. fill: textStyleModel.getTextColor(),
  6755. font: textStyleModel.getFont()
  6756. }
  6757. }),
  6758. textConfig: {
  6759. position: "inside"
  6760. },
  6761. z2: Z2_EMPHASIS_LIFT * 1e4,
  6762. onclick: curry(onSelect, itemNode)
  6763. });
  6764. el.disableLabelAnimation = true;
  6765. this.group.add(el);
  6766. packEventData(el, seriesModel, itemNode);
  6767. lastX += itemWidth + ITEM_GAP;
  6768. }
  6769. };
  6770. Breadcrumb2.prototype.remove = function() {
  6771. this.group.removeAll();
  6772. };
  6773. return Breadcrumb2;
  6774. }();
  6775. function makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {
  6776. var points = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]];
  6777. !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);
  6778. !head && points.push([x, y + itemHeight / 2]);
  6779. return points;
  6780. }
  6781. function packEventData(el, seriesModel, itemNode) {
  6782. getECData(el).eventData = {
  6783. componentType: "series",
  6784. componentSubType: "treemap",
  6785. componentIndex: seriesModel.componentIndex,
  6786. seriesIndex: seriesModel.seriesIndex,
  6787. seriesName: seriesModel.name,
  6788. seriesType: "treemap",
  6789. selfType: "breadcrumb",
  6790. nodeData: {
  6791. dataIndex: itemNode && itemNode.dataIndex,
  6792. name: itemNode && itemNode.name
  6793. },
  6794. treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)
  6795. };
  6796. }
  6797. var Breadcrumb_default = Breadcrumb;
  6798. // node_modules/echarts/lib/util/animation.js
  6799. init_define_APP_INFO();
  6800. var AnimationWrap = function() {
  6801. function AnimationWrap2() {
  6802. this._storage = [];
  6803. this._elExistsMap = {};
  6804. }
  6805. AnimationWrap2.prototype.add = function(el, target, duration, delay, easing) {
  6806. if (this._elExistsMap[el.id]) {
  6807. return false;
  6808. }
  6809. this._elExistsMap[el.id] = true;
  6810. this._storage.push({
  6811. el,
  6812. target,
  6813. duration,
  6814. delay,
  6815. easing
  6816. });
  6817. return true;
  6818. };
  6819. AnimationWrap2.prototype.finished = function(callback) {
  6820. this._finishedCallback = callback;
  6821. return this;
  6822. };
  6823. AnimationWrap2.prototype.start = function() {
  6824. var _this = this;
  6825. var count = this._storage.length;
  6826. var checkTerminate = function() {
  6827. count--;
  6828. if (count <= 0) {
  6829. _this._storage.length = 0;
  6830. _this._elExistsMap = {};
  6831. _this._finishedCallback && _this._finishedCallback();
  6832. }
  6833. };
  6834. for (var i = 0, len2 = this._storage.length; i < len2; i++) {
  6835. var item = this._storage[i];
  6836. item.el.animateTo(item.target, {
  6837. duration: item.duration,
  6838. delay: item.delay,
  6839. easing: item.easing,
  6840. setToFinal: true,
  6841. done: checkTerminate,
  6842. aborted: checkTerminate
  6843. });
  6844. }
  6845. return this;
  6846. };
  6847. return AnimationWrap2;
  6848. }();
  6849. function createWrap() {
  6850. return new AnimationWrap();
  6851. }
  6852. // node_modules/echarts/lib/chart/treemap/TreemapView.js
  6853. var Group = Group_default;
  6854. var Rect = Rect_default;
  6855. var DRAG_THRESHOLD = 3;
  6856. var PATH_LABEL_NOAMAL = "label";
  6857. var PATH_UPPERLABEL_NORMAL = "upperLabel";
  6858. var Z2_BASE = Z2_EMPHASIS_LIFT * 10;
  6859. var Z2_BG = Z2_EMPHASIS_LIFT * 2;
  6860. var Z2_CONTENT = Z2_EMPHASIS_LIFT * 3;
  6861. var getStateItemStyle = makeStyleMapper([
  6862. ["fill", "color"],
  6863. ["stroke", "strokeColor"],
  6864. ["lineWidth", "strokeWidth"],
  6865. ["shadowBlur"],
  6866. ["shadowOffsetX"],
  6867. ["shadowOffsetY"],
  6868. ["shadowColor"]
  6869. ]);
  6870. var getItemStyleNormal = function(model) {
  6871. var itemStyle = getStateItemStyle(model);
  6872. itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;
  6873. return itemStyle;
  6874. };
  6875. var inner2 = makeInner();
  6876. var TreemapView = function(_super) {
  6877. __extends(TreemapView2, _super);
  6878. function TreemapView2() {
  6879. var _this = _super !== null && _super.apply(this, arguments) || this;
  6880. _this.type = TreemapView2.type;
  6881. _this._state = "ready";
  6882. _this._storage = createStorage();
  6883. return _this;
  6884. }
  6885. TreemapView2.prototype.render = function(seriesModel, ecModel, api, payload) {
  6886. var models = ecModel.findComponents({
  6887. mainType: "series",
  6888. subType: "treemap",
  6889. query: payload
  6890. });
  6891. if (indexOf(models, seriesModel) < 0) {
  6892. return;
  6893. }
  6894. this.seriesModel = seriesModel;
  6895. this.api = api;
  6896. this.ecModel = ecModel;
  6897. var types = ["treemapZoomToNode", "treemapRootToNode"];
  6898. var targetInfo = retrieveTargetInfo(payload, types, seriesModel);
  6899. var payloadType = payload && payload.type;
  6900. var layoutInfo = seriesModel.layoutInfo;
  6901. var isInit = !this._oldTree;
  6902. var thisStorage = this._storage;
  6903. var reRoot = payloadType === "treemapRootToNode" && targetInfo && thisStorage ? {
  6904. rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],
  6905. direction: payload.direction
  6906. } : null;
  6907. var containerGroup = this._giveContainerGroup(layoutInfo);
  6908. var hasAnimation = seriesModel.get("animation");
  6909. var renderResult = this._doRender(containerGroup, seriesModel, reRoot);
  6910. hasAnimation && !isInit && (!payloadType || payloadType === "treemapZoomToNode" || payloadType === "treemapRootToNode") ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally();
  6911. this._resetController(api);
  6912. this._renderBreadcrumb(seriesModel, api, targetInfo);
  6913. };
  6914. TreemapView2.prototype._giveContainerGroup = function(layoutInfo) {
  6915. var containerGroup = this._containerGroup;
  6916. if (!containerGroup) {
  6917. containerGroup = this._containerGroup = new Group();
  6918. this._initEvents(containerGroup);
  6919. this.group.add(containerGroup);
  6920. }
  6921. containerGroup.x = layoutInfo.x;
  6922. containerGroup.y = layoutInfo.y;
  6923. return containerGroup;
  6924. };
  6925. TreemapView2.prototype._doRender = function(containerGroup, seriesModel, reRoot) {
  6926. var thisTree = seriesModel.getData().tree;
  6927. var oldTree = this._oldTree;
  6928. var lastsForAnimation = createStorage();
  6929. var thisStorage = createStorage();
  6930. var oldStorage = this._storage;
  6931. var willInvisibleEls = [];
  6932. function doRenderNode(thisNode, oldNode, parentGroup, depth) {
  6933. return renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth);
  6934. }
  6935. dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0);
  6936. var willDeleteEls = clearStorage(oldStorage);
  6937. this._oldTree = thisTree;
  6938. this._storage = thisStorage;
  6939. return {
  6940. lastsForAnimation,
  6941. willDeleteEls,
  6942. renderFinally
  6943. };
  6944. function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {
  6945. if (sameTree) {
  6946. oldViewChildren = thisViewChildren;
  6947. each(thisViewChildren, function(child, index) {
  6948. !child.isRemoved() && processNode(index, index);
  6949. });
  6950. } else {
  6951. new DataDiffer_default(oldViewChildren, thisViewChildren, getKey2, getKey2).add(processNode).update(processNode).remove(curry(processNode, null)).execute();
  6952. }
  6953. function getKey2(node) {
  6954. return node.getId();
  6955. }
  6956. function processNode(newIndex, oldIndex) {
  6957. var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;
  6958. var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;
  6959. var group = doRenderNode(thisNode, oldNode, parentGroup, depth);
  6960. group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);
  6961. }
  6962. }
  6963. function clearStorage(storage) {
  6964. var willDeleteEls2 = createStorage();
  6965. storage && each(storage, function(store, storageName) {
  6966. var delEls = willDeleteEls2[storageName];
  6967. each(store, function(el) {
  6968. el && (delEls.push(el), inner2(el).willDelete = true);
  6969. });
  6970. });
  6971. return willDeleteEls2;
  6972. }
  6973. function renderFinally() {
  6974. each(willDeleteEls, function(els) {
  6975. each(els, function(el) {
  6976. el.parent && el.parent.remove(el);
  6977. });
  6978. });
  6979. each(willInvisibleEls, function(el) {
  6980. el.invisible = true;
  6981. el.dirty();
  6982. });
  6983. }
  6984. };
  6985. TreemapView2.prototype._doAnimation = function(containerGroup, renderResult, seriesModel, reRoot) {
  6986. var durationOption = seriesModel.get("animationDurationUpdate");
  6987. var easingOption = seriesModel.get("animationEasing");
  6988. var duration = (isFunction(durationOption) ? 0 : durationOption) || 0;
  6989. var easing = (isFunction(easingOption) ? null : easingOption) || "cubicOut";
  6990. var animationWrap = createWrap();
  6991. each(renderResult.willDeleteEls, function(store, storageName) {
  6992. each(store, function(el, rawIndex) {
  6993. if (el.invisible) {
  6994. return;
  6995. }
  6996. var parent = el.parent;
  6997. var target;
  6998. var innerStore = inner2(parent);
  6999. if (reRoot && reRoot.direction === "drillDown") {
  7000. target = parent === reRoot.rootNodeGroup ? {
  7001. shape: {
  7002. x: 0,
  7003. y: 0,
  7004. width: innerStore.nodeWidth,
  7005. height: innerStore.nodeHeight
  7006. },
  7007. style: {
  7008. opacity: 0
  7009. }
  7010. } : {
  7011. style: {
  7012. opacity: 0
  7013. }
  7014. };
  7015. } else {
  7016. var targetX = 0;
  7017. var targetY = 0;
  7018. if (!innerStore.willDelete) {
  7019. targetX = innerStore.nodeWidth / 2;
  7020. targetY = innerStore.nodeHeight / 2;
  7021. }
  7022. target = storageName === "nodeGroup" ? {
  7023. x: targetX,
  7024. y: targetY,
  7025. style: {
  7026. opacity: 0
  7027. }
  7028. } : {
  7029. shape: {
  7030. x: targetX,
  7031. y: targetY,
  7032. width: 0,
  7033. height: 0
  7034. },
  7035. style: {
  7036. opacity: 0
  7037. }
  7038. };
  7039. }
  7040. target && animationWrap.add(el, target, duration, 0, easing);
  7041. });
  7042. });
  7043. each(this._storage, function(store, storageName) {
  7044. each(store, function(el, rawIndex) {
  7045. var last = renderResult.lastsForAnimation[storageName][rawIndex];
  7046. var target = {};
  7047. if (!last) {
  7048. return;
  7049. }
  7050. if (el instanceof Group_default) {
  7051. if (last.oldX != null) {
  7052. target.x = el.x;
  7053. target.y = el.y;
  7054. el.x = last.oldX;
  7055. el.y = last.oldY;
  7056. }
  7057. } else {
  7058. if (last.oldShape) {
  7059. target.shape = extend({}, el.shape);
  7060. el.setShape(last.oldShape);
  7061. }
  7062. if (last.fadein) {
  7063. el.setStyle("opacity", 0);
  7064. target.style = {
  7065. opacity: 1
  7066. };
  7067. } else if (el.style.opacity !== 1) {
  7068. target.style = {
  7069. opacity: 1
  7070. };
  7071. }
  7072. }
  7073. animationWrap.add(el, target, duration, 0, easing);
  7074. });
  7075. }, this);
  7076. this._state = "animating";
  7077. animationWrap.finished(bind(function() {
  7078. this._state = "ready";
  7079. renderResult.renderFinally();
  7080. }, this)).start();
  7081. };
  7082. TreemapView2.prototype._resetController = function(api) {
  7083. var controller = this._controller;
  7084. if (!controller) {
  7085. controller = this._controller = new RoamController_default(api.getZr());
  7086. controller.enable(this.seriesModel.get("roam"));
  7087. controller.on("pan", bind(this._onPan, this));
  7088. controller.on("zoom", bind(this._onZoom, this));
  7089. }
  7090. var rect = new BoundingRect_default(0, 0, api.getWidth(), api.getHeight());
  7091. controller.setPointerChecker(function(e, x, y) {
  7092. return rect.contain(x, y);
  7093. });
  7094. };
  7095. TreemapView2.prototype._clearController = function() {
  7096. var controller = this._controller;
  7097. if (controller) {
  7098. controller.dispose();
  7099. controller = null;
  7100. }
  7101. };
  7102. TreemapView2.prototype._onPan = function(e) {
  7103. if (this._state !== "animating" && (Math.abs(e.dx) > DRAG_THRESHOLD || Math.abs(e.dy) > DRAG_THRESHOLD)) {
  7104. var root = this.seriesModel.getData().tree.root;
  7105. if (!root) {
  7106. return;
  7107. }
  7108. var rootLayout = root.getLayout();
  7109. if (!rootLayout) {
  7110. return;
  7111. }
  7112. this.api.dispatchAction({
  7113. type: "treemapMove",
  7114. from: this.uid,
  7115. seriesId: this.seriesModel.id,
  7116. rootRect: {
  7117. x: rootLayout.x + e.dx,
  7118. y: rootLayout.y + e.dy,
  7119. width: rootLayout.width,
  7120. height: rootLayout.height
  7121. }
  7122. });
  7123. }
  7124. };
  7125. TreemapView2.prototype._onZoom = function(e) {
  7126. var mouseX = e.originX;
  7127. var mouseY = e.originY;
  7128. if (this._state !== "animating") {
  7129. var root = this.seriesModel.getData().tree.root;
  7130. if (!root) {
  7131. return;
  7132. }
  7133. var rootLayout = root.getLayout();
  7134. if (!rootLayout) {
  7135. return;
  7136. }
  7137. var rect = new BoundingRect_default(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);
  7138. var layoutInfo = this.seriesModel.layoutInfo;
  7139. mouseX -= layoutInfo.x;
  7140. mouseY -= layoutInfo.y;
  7141. var m = create();
  7142. translate(m, m, [-mouseX, -mouseY]);
  7143. scale(m, m, [e.scale, e.scale]);
  7144. translate(m, m, [mouseX, mouseY]);
  7145. rect.applyTransform(m);
  7146. this.api.dispatchAction({
  7147. type: "treemapRender",
  7148. from: this.uid,
  7149. seriesId: this.seriesModel.id,
  7150. rootRect: {
  7151. x: rect.x,
  7152. y: rect.y,
  7153. width: rect.width,
  7154. height: rect.height
  7155. }
  7156. });
  7157. }
  7158. };
  7159. TreemapView2.prototype._initEvents = function(containerGroup) {
  7160. var _this = this;
  7161. containerGroup.on("click", function(e) {
  7162. if (_this._state !== "ready") {
  7163. return;
  7164. }
  7165. var nodeClick = _this.seriesModel.get("nodeClick", true);
  7166. if (!nodeClick) {
  7167. return;
  7168. }
  7169. var targetInfo = _this.findTarget(e.offsetX, e.offsetY);
  7170. if (!targetInfo) {
  7171. return;
  7172. }
  7173. var node = targetInfo.node;
  7174. if (node.getLayout().isLeafRoot) {
  7175. _this._rootToNode(targetInfo);
  7176. } else {
  7177. if (nodeClick === "zoomToNode") {
  7178. _this._zoomToNode(targetInfo);
  7179. } else if (nodeClick === "link") {
  7180. var itemModel = node.hostTree.data.getItemModel(node.dataIndex);
  7181. var link = itemModel.get("link", true);
  7182. var linkTarget = itemModel.get("target", true) || "blank";
  7183. link && windowOpen(link, linkTarget);
  7184. }
  7185. }
  7186. }, this);
  7187. };
  7188. TreemapView2.prototype._renderBreadcrumb = function(seriesModel, api, targetInfo) {
  7189. var _this = this;
  7190. if (!targetInfo) {
  7191. targetInfo = seriesModel.get("leafDepth", true) != null ? {
  7192. node: seriesModel.getViewRoot()
  7193. } : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);
  7194. if (!targetInfo) {
  7195. targetInfo = {
  7196. node: seriesModel.getData().tree.root
  7197. };
  7198. }
  7199. }
  7200. (this._breadcrumb || (this._breadcrumb = new Breadcrumb_default(this.group))).render(seriesModel, api, targetInfo.node, function(node) {
  7201. if (_this._state !== "animating") {
  7202. aboveViewRoot(seriesModel.getViewRoot(), node) ? _this._rootToNode({
  7203. node
  7204. }) : _this._zoomToNode({
  7205. node
  7206. });
  7207. }
  7208. });
  7209. };
  7210. TreemapView2.prototype.remove = function() {
  7211. this._clearController();
  7212. this._containerGroup && this._containerGroup.removeAll();
  7213. this._storage = createStorage();
  7214. this._state = "ready";
  7215. this._breadcrumb && this._breadcrumb.remove();
  7216. };
  7217. TreemapView2.prototype.dispose = function() {
  7218. this._clearController();
  7219. };
  7220. TreemapView2.prototype._zoomToNode = function(targetInfo) {
  7221. this.api.dispatchAction({
  7222. type: "treemapZoomToNode",
  7223. from: this.uid,
  7224. seriesId: this.seriesModel.id,
  7225. targetNode: targetInfo.node
  7226. });
  7227. };
  7228. TreemapView2.prototype._rootToNode = function(targetInfo) {
  7229. this.api.dispatchAction({
  7230. type: "treemapRootToNode",
  7231. from: this.uid,
  7232. seriesId: this.seriesModel.id,
  7233. targetNode: targetInfo.node
  7234. });
  7235. };
  7236. TreemapView2.prototype.findTarget = function(x, y) {
  7237. var targetInfo;
  7238. var viewRoot = this.seriesModel.getViewRoot();
  7239. viewRoot.eachNode({
  7240. attr: "viewChildren",
  7241. order: "preorder"
  7242. }, function(node) {
  7243. var bgEl = this._storage.background[node.getRawIndex()];
  7244. if (bgEl) {
  7245. var point = bgEl.transformCoordToLocal(x, y);
  7246. var shape = bgEl.shape;
  7247. if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) {
  7248. targetInfo = {
  7249. node,
  7250. offsetX: point[0],
  7251. offsetY: point[1]
  7252. };
  7253. } else {
  7254. return false;
  7255. }
  7256. }
  7257. }, this);
  7258. return targetInfo;
  7259. };
  7260. TreemapView2.type = "treemap";
  7261. return TreemapView2;
  7262. }(Chart_default);
  7263. function createStorage() {
  7264. return {
  7265. nodeGroup: [],
  7266. background: [],
  7267. content: []
  7268. };
  7269. }
  7270. function renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {
  7271. if (!thisNode) {
  7272. return;
  7273. }
  7274. var thisLayout = thisNode.getLayout();
  7275. var data = seriesModel.getData();
  7276. var nodeModel = thisNode.getModel();
  7277. data.setItemGraphicEl(thisNode.dataIndex, null);
  7278. if (!thisLayout || !thisLayout.isInView) {
  7279. return;
  7280. }
  7281. var thisWidth = thisLayout.width;
  7282. var thisHeight = thisLayout.height;
  7283. var borderWidth = thisLayout.borderWidth;
  7284. var thisInvisible = thisLayout.invisible;
  7285. var thisRawIndex = thisNode.getRawIndex();
  7286. var oldRawIndex = oldNode && oldNode.getRawIndex();
  7287. var thisViewChildren = thisNode.viewChildren;
  7288. var upperHeight = thisLayout.upperHeight;
  7289. var isParent = thisViewChildren && thisViewChildren.length;
  7290. var itemStyleNormalModel = nodeModel.getModel("itemStyle");
  7291. var itemStyleEmphasisModel = nodeModel.getModel(["emphasis", "itemStyle"]);
  7292. var itemStyleBlurModel = nodeModel.getModel(["blur", "itemStyle"]);
  7293. var itemStyleSelectModel = nodeModel.getModel(["select", "itemStyle"]);
  7294. var borderRadius = itemStyleNormalModel.get("borderRadius") || 0;
  7295. var group = giveGraphic("nodeGroup", Group);
  7296. if (!group) {
  7297. return;
  7298. }
  7299. parentGroup.add(group);
  7300. group.x = thisLayout.x || 0;
  7301. group.y = thisLayout.y || 0;
  7302. group.markRedraw();
  7303. inner2(group).nodeWidth = thisWidth;
  7304. inner2(group).nodeHeight = thisHeight;
  7305. if (thisLayout.isAboveViewRoot) {
  7306. return group;
  7307. }
  7308. var bg = giveGraphic("background", Rect, depth, Z2_BG);
  7309. bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight);
  7310. var emphasisModel = nodeModel.getModel("emphasis");
  7311. var focus = emphasisModel.get("focus");
  7312. var blurScope = emphasisModel.get("blurScope");
  7313. var isDisabled = emphasisModel.get("disabled");
  7314. var focusOrIndices = focus === "ancestor" ? thisNode.getAncestorsIndices() : focus === "descendant" ? thisNode.getDescendantIndices() : focus;
  7315. if (isParent) {
  7316. if (isHighDownDispatcher(group)) {
  7317. setAsHighDownDispatcher(group, false);
  7318. }
  7319. if (bg) {
  7320. setAsHighDownDispatcher(bg, !isDisabled);
  7321. data.setItemGraphicEl(thisNode.dataIndex, bg);
  7322. enableHoverFocus(bg, focusOrIndices, blurScope);
  7323. }
  7324. } else {
  7325. var content = giveGraphic("content", Rect, depth, Z2_CONTENT);
  7326. content && renderContent(group, content);
  7327. bg.disableMorphing = true;
  7328. if (bg && isHighDownDispatcher(bg)) {
  7329. setAsHighDownDispatcher(bg, false);
  7330. }
  7331. setAsHighDownDispatcher(group, !isDisabled);
  7332. data.setItemGraphicEl(thisNode.dataIndex, group);
  7333. enableHoverFocus(group, focusOrIndices, blurScope);
  7334. }
  7335. return group;
  7336. function renderBackground(group2, bg2, useUpperLabel) {
  7337. var ecData = getECData(bg2);
  7338. ecData.dataIndex = thisNode.dataIndex;
  7339. ecData.seriesIndex = seriesModel.seriesIndex;
  7340. bg2.setShape({
  7341. x: 0,
  7342. y: 0,
  7343. width: thisWidth,
  7344. height: thisHeight,
  7345. r: borderRadius
  7346. });
  7347. if (thisInvisible) {
  7348. processInvisible(bg2);
  7349. } else {
  7350. bg2.invisible = false;
  7351. var style = thisNode.getVisual("style");
  7352. var visualBorderColor = style.stroke;
  7353. var normalStyle = getItemStyleNormal(itemStyleNormalModel);
  7354. normalStyle.fill = visualBorderColor;
  7355. var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);
  7356. emphasisStyle.fill = itemStyleEmphasisModel.get("borderColor");
  7357. var blurStyle = getStateItemStyle(itemStyleBlurModel);
  7358. blurStyle.fill = itemStyleBlurModel.get("borderColor");
  7359. var selectStyle = getStateItemStyle(itemStyleSelectModel);
  7360. selectStyle.fill = itemStyleSelectModel.get("borderColor");
  7361. if (useUpperLabel) {
  7362. var upperLabelWidth = thisWidth - 2 * borderWidth;
  7363. prepareText(
  7364. bg2,
  7365. visualBorderColor,
  7366. style.opacity,
  7367. {
  7368. x: borderWidth,
  7369. y: 0,
  7370. width: upperLabelWidth,
  7371. height: upperHeight
  7372. }
  7373. );
  7374. } else {
  7375. bg2.removeTextContent();
  7376. }
  7377. bg2.setStyle(normalStyle);
  7378. bg2.ensureState("emphasis").style = emphasisStyle;
  7379. bg2.ensureState("blur").style = blurStyle;
  7380. bg2.ensureState("select").style = selectStyle;
  7381. setDefaultStateProxy(bg2);
  7382. }
  7383. group2.add(bg2);
  7384. }
  7385. function renderContent(group2, content2) {
  7386. var ecData = getECData(content2);
  7387. ecData.dataIndex = thisNode.dataIndex;
  7388. ecData.seriesIndex = seriesModel.seriesIndex;
  7389. var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0);
  7390. var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0);
  7391. content2.culling = true;
  7392. content2.setShape({
  7393. x: borderWidth,
  7394. y: borderWidth,
  7395. width: contentWidth,
  7396. height: contentHeight,
  7397. r: borderRadius
  7398. });
  7399. if (thisInvisible) {
  7400. processInvisible(content2);
  7401. } else {
  7402. content2.invisible = false;
  7403. var nodeStyle = thisNode.getVisual("style");
  7404. var visualColor = nodeStyle.fill;
  7405. var normalStyle = getItemStyleNormal(itemStyleNormalModel);
  7406. normalStyle.fill = visualColor;
  7407. normalStyle.decal = nodeStyle.decal;
  7408. var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);
  7409. var blurStyle = getStateItemStyle(itemStyleBlurModel);
  7410. var selectStyle = getStateItemStyle(itemStyleSelectModel);
  7411. prepareText(content2, visualColor, nodeStyle.opacity, null);
  7412. content2.setStyle(normalStyle);
  7413. content2.ensureState("emphasis").style = emphasisStyle;
  7414. content2.ensureState("blur").style = blurStyle;
  7415. content2.ensureState("select").style = selectStyle;
  7416. setDefaultStateProxy(content2);
  7417. }
  7418. group2.add(content2);
  7419. }
  7420. function processInvisible(element) {
  7421. !element.invisible && willInvisibleEls.push(element);
  7422. }
  7423. function prepareText(rectEl, visualColor, visualOpacity, upperLabelRect) {
  7424. var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);
  7425. var defaultText = convertOptionIdName(nodeModel.get("name"), null);
  7426. var isShow = normalLabelModel.getShallow("show");
  7427. setLabelStyle(rectEl, getLabelStatesModels(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL), {
  7428. defaultText: isShow ? defaultText : null,
  7429. inheritColor: visualColor,
  7430. defaultOpacity: visualOpacity,
  7431. labelFetcher: seriesModel,
  7432. labelDataIndex: thisNode.dataIndex
  7433. });
  7434. var textEl = rectEl.getTextContent();
  7435. if (!textEl) {
  7436. return;
  7437. }
  7438. var textStyle = textEl.style;
  7439. var textPadding = normalizeCssArray(textStyle.padding || 0);
  7440. if (upperLabelRect) {
  7441. rectEl.setTextConfig({
  7442. layoutRect: upperLabelRect
  7443. });
  7444. textEl.disableLabelLayout = true;
  7445. }
  7446. textEl.beforeUpdate = function() {
  7447. var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0);
  7448. var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0);
  7449. if (textStyle.width !== width || textStyle.height !== height) {
  7450. textEl.setStyle({
  7451. width,
  7452. height
  7453. });
  7454. }
  7455. };
  7456. textStyle.truncateMinChar = 2;
  7457. textStyle.lineOverflow = "truncate";
  7458. addDrillDownIcon(textStyle, upperLabelRect, thisLayout);
  7459. var textEmphasisState = textEl.getState("emphasis");
  7460. addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout);
  7461. }
  7462. function addDrillDownIcon(style, upperLabelRect, thisLayout2) {
  7463. var text = style ? style.text : null;
  7464. if (!upperLabelRect && thisLayout2.isLeafRoot && text != null) {
  7465. var iconChar = seriesModel.get("drillDownIcon", true);
  7466. style.text = iconChar ? iconChar + " " + text : text;
  7467. }
  7468. }
  7469. function giveGraphic(storageName, Ctor, depth2, z) {
  7470. var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];
  7471. var lasts = lastsForAnimation[storageName];
  7472. if (element) {
  7473. oldStorage[storageName][oldRawIndex] = null;
  7474. prepareAnimationWhenHasOld(lasts, element);
  7475. } else if (!thisInvisible) {
  7476. element = new Ctor();
  7477. if (element instanceof Displayable_default) {
  7478. element.z2 = calculateZ2(depth2, z);
  7479. }
  7480. prepareAnimationWhenNoOld(lasts, element);
  7481. }
  7482. return thisStorage[storageName][thisRawIndex] = element;
  7483. }
  7484. function prepareAnimationWhenHasOld(lasts, element) {
  7485. var lastCfg = lasts[thisRawIndex] = {};
  7486. if (element instanceof Group) {
  7487. lastCfg.oldX = element.x;
  7488. lastCfg.oldY = element.y;
  7489. } else {
  7490. lastCfg.oldShape = extend({}, element.shape);
  7491. }
  7492. }
  7493. function prepareAnimationWhenNoOld(lasts, element) {
  7494. var lastCfg = lasts[thisRawIndex] = {};
  7495. var parentNode = thisNode.parentNode;
  7496. var isGroup = element instanceof Group_default;
  7497. if (parentNode && (!reRoot || reRoot.direction === "drillDown")) {
  7498. var parentOldX = 0;
  7499. var parentOldY = 0;
  7500. var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()];
  7501. if (!reRoot && parentOldBg && parentOldBg.oldShape) {
  7502. parentOldX = parentOldBg.oldShape.width;
  7503. parentOldY = parentOldBg.oldShape.height;
  7504. }
  7505. if (isGroup) {
  7506. lastCfg.oldX = 0;
  7507. lastCfg.oldY = parentOldY;
  7508. } else {
  7509. lastCfg.oldShape = {
  7510. x: parentOldX,
  7511. y: parentOldY,
  7512. width: 0,
  7513. height: 0
  7514. };
  7515. }
  7516. }
  7517. lastCfg.fadein = !isGroup;
  7518. }
  7519. }
  7520. function calculateZ2(depth, z2InLevel) {
  7521. return depth * Z2_BASE + z2InLevel;
  7522. }
  7523. var TreemapView_default = TreemapView;
  7524. // node_modules/echarts/lib/chart/treemap/treemapVisual.js
  7525. init_define_APP_INFO();
  7526. var ITEM_STYLE_NORMAL = "itemStyle";
  7527. var inner3 = makeInner();
  7528. var treemapVisual_default = {
  7529. seriesType: "treemap",
  7530. reset: function(seriesModel) {
  7531. var tree = seriesModel.getData().tree;
  7532. var root = tree.root;
  7533. if (root.isRemoved()) {
  7534. return;
  7535. }
  7536. travelTree(
  7537. root,
  7538. {},
  7539. seriesModel.getViewRoot().getAncestors(),
  7540. seriesModel
  7541. );
  7542. }
  7543. };
  7544. function travelTree(node, designatedVisual, viewRootAncestors, seriesModel) {
  7545. var nodeModel = node.getModel();
  7546. var nodeLayout = node.getLayout();
  7547. var data = node.hostTree.data;
  7548. if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {
  7549. return;
  7550. }
  7551. var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL);
  7552. var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel);
  7553. var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style");
  7554. var borderColor = nodeItemStyleModel.get("borderColor");
  7555. var borderColorSaturation = nodeItemStyleModel.get("borderColorSaturation");
  7556. var thisNodeColor;
  7557. if (borderColorSaturation != null) {
  7558. thisNodeColor = calculateColor(visuals);
  7559. borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);
  7560. }
  7561. existsStyle.stroke = borderColor;
  7562. var viewChildren = node.viewChildren;
  7563. if (!viewChildren || !viewChildren.length) {
  7564. thisNodeColor = calculateColor(visuals);
  7565. existsStyle.fill = thisNodeColor;
  7566. } else {
  7567. var mapping_1 = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren);
  7568. each(viewChildren, function(child, index) {
  7569. if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) {
  7570. var childVisual = mapVisual(nodeModel, visuals, child, index, mapping_1, seriesModel);
  7571. travelTree(child, childVisual, viewRootAncestors, seriesModel);
  7572. }
  7573. });
  7574. }
  7575. }
  7576. function buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {
  7577. var visuals = extend({}, designatedVisual);
  7578. var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;
  7579. each(["color", "colorAlpha", "colorSaturation"], function(visualName) {
  7580. designatedVisualItemStyle[visualName] = designatedVisual[visualName];
  7581. var val = nodeItemStyleModel.get(visualName);
  7582. designatedVisualItemStyle[visualName] = null;
  7583. val != null && (visuals[visualName] = val);
  7584. });
  7585. return visuals;
  7586. }
  7587. function calculateColor(visuals) {
  7588. var color = getValueVisualDefine(visuals, "color");
  7589. if (color) {
  7590. var colorAlpha = getValueVisualDefine(visuals, "colorAlpha");
  7591. var colorSaturation = getValueVisualDefine(visuals, "colorSaturation");
  7592. if (colorSaturation) {
  7593. color = modifyHSL(color, null, null, colorSaturation);
  7594. }
  7595. if (colorAlpha) {
  7596. color = modifyAlpha(color, colorAlpha);
  7597. }
  7598. return color;
  7599. }
  7600. }
  7601. function calculateBorderColor(borderColorSaturation, thisNodeColor) {
  7602. return thisNodeColor != null ? modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null;
  7603. }
  7604. function getValueVisualDefine(visuals, name) {
  7605. var value = visuals[name];
  7606. if (value != null && value !== "none") {
  7607. return value;
  7608. }
  7609. }
  7610. function buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {
  7611. if (!viewChildren || !viewChildren.length) {
  7612. return;
  7613. }
  7614. var rangeVisual = getRangeVisual(nodeModel, "color") || visuals.color != null && visuals.color !== "none" && (getRangeVisual(nodeModel, "colorAlpha") || getRangeVisual(nodeModel, "colorSaturation"));
  7615. if (!rangeVisual) {
  7616. return;
  7617. }
  7618. var visualMin = nodeModel.get("visualMin");
  7619. var visualMax = nodeModel.get("visualMax");
  7620. var dataExtent = nodeLayout.dataExtent.slice();
  7621. visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);
  7622. visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);
  7623. var colorMappingBy = nodeModel.get("colorMappingBy");
  7624. var opt = {
  7625. type: rangeVisual.name,
  7626. dataExtent,
  7627. visual: rangeVisual.range
  7628. };
  7629. if (opt.type === "color" && (colorMappingBy === "index" || colorMappingBy === "id")) {
  7630. opt.mappingMethod = "category";
  7631. opt.loop = true;
  7632. } else {
  7633. opt.mappingMethod = "linear";
  7634. }
  7635. var mapping = new VisualMapping_default(opt);
  7636. inner3(mapping).drColorMappingBy = colorMappingBy;
  7637. return mapping;
  7638. }
  7639. function getRangeVisual(nodeModel, name) {
  7640. var range = nodeModel.get(name);
  7641. return isArray(range) && range.length ? {
  7642. name,
  7643. range
  7644. } : null;
  7645. }
  7646. function mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) {
  7647. var childVisuals = extend({}, visuals);
  7648. if (mapping) {
  7649. var mappingType = mapping.type;
  7650. var colorMappingBy = mappingType === "color" && inner3(mapping).drColorMappingBy;
  7651. var value = colorMappingBy === "index" ? index : colorMappingBy === "id" ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get("visualDimension"));
  7652. childVisuals[mappingType] = mapping.mapValueToVisual(value);
  7653. }
  7654. return childVisuals;
  7655. }
  7656. // node_modules/echarts/lib/chart/treemap/treemapLayout.js
  7657. init_define_APP_INFO();
  7658. var mathMax3 = Math.max;
  7659. var mathMin3 = Math.min;
  7660. var retrieveValue = retrieve;
  7661. var each2 = each;
  7662. var PATH_BORDER_WIDTH = ["itemStyle", "borderWidth"];
  7663. var PATH_GAP_WIDTH = ["itemStyle", "gapWidth"];
  7664. var PATH_UPPER_LABEL_SHOW = ["upperLabel", "show"];
  7665. var PATH_UPPER_LABEL_HEIGHT = ["upperLabel", "height"];
  7666. var treemapLayout_default = {
  7667. seriesType: "treemap",
  7668. reset: function(seriesModel, ecModel, api, payload) {
  7669. var ecWidth = api.getWidth();
  7670. var ecHeight = api.getHeight();
  7671. var seriesOption = seriesModel.option;
  7672. var layoutInfo = getLayoutRect(seriesModel.getBoxLayoutParams(), {
  7673. width: api.getWidth(),
  7674. height: api.getHeight()
  7675. });
  7676. var size = seriesOption.size || [];
  7677. var containerWidth = parsePercent2(retrieveValue(layoutInfo.width, size[0]), ecWidth);
  7678. var containerHeight = parsePercent2(retrieveValue(layoutInfo.height, size[1]), ecHeight);
  7679. var payloadType = payload && payload.type;
  7680. var types = ["treemapZoomToNode", "treemapRootToNode"];
  7681. var targetInfo = retrieveTargetInfo(payload, types, seriesModel);
  7682. var rootRect = payloadType === "treemapRender" || payloadType === "treemapMove" ? payload.rootRect : null;
  7683. var viewRoot = seriesModel.getViewRoot();
  7684. var viewAbovePath = getPathToRoot(viewRoot);
  7685. if (payloadType !== "treemapMove") {
  7686. var rootSize = payloadType === "treemapZoomToNode" ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight];
  7687. var sort_1 = seriesOption.sort;
  7688. if (sort_1 && sort_1 !== "asc" && sort_1 !== "desc") {
  7689. sort_1 = "desc";
  7690. }
  7691. var options = {
  7692. squareRatio: seriesOption.squareRatio,
  7693. sort: sort_1,
  7694. leafDepth: seriesOption.leafDepth
  7695. };
  7696. viewRoot.hostTree.clearLayouts();
  7697. var viewRootLayout_1 = {
  7698. x: 0,
  7699. y: 0,
  7700. width: rootSize[0],
  7701. height: rootSize[1],
  7702. area: rootSize[0] * rootSize[1]
  7703. };
  7704. viewRoot.setLayout(viewRootLayout_1);
  7705. squarify(viewRoot, options, false, 0);
  7706. viewRootLayout_1 = viewRoot.getLayout();
  7707. each2(viewAbovePath, function(node, index) {
  7708. var childValue = (viewAbovePath[index + 1] || viewRoot).getValue();
  7709. node.setLayout(extend({
  7710. dataExtent: [childValue, childValue],
  7711. borderWidth: 0,
  7712. upperHeight: 0
  7713. }, viewRootLayout_1));
  7714. });
  7715. }
  7716. var treeRoot = seriesModel.getData().tree.root;
  7717. treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);
  7718. seriesModel.setLayoutInfo(layoutInfo);
  7719. prunning(
  7720. treeRoot,
  7721. new BoundingRect_default(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight),
  7722. viewAbovePath,
  7723. viewRoot,
  7724. 0
  7725. );
  7726. }
  7727. };
  7728. function squarify(node, options, hideChildren, depth) {
  7729. var width;
  7730. var height;
  7731. if (node.isRemoved()) {
  7732. return;
  7733. }
  7734. var thisLayout = node.getLayout();
  7735. width = thisLayout.width;
  7736. height = thisLayout.height;
  7737. var nodeModel = node.getModel();
  7738. var borderWidth = nodeModel.get(PATH_BORDER_WIDTH);
  7739. var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;
  7740. var upperLabelHeight = getUpperLabelHeight(nodeModel);
  7741. var upperHeight = Math.max(borderWidth, upperLabelHeight);
  7742. var layoutOffset = borderWidth - halfGapWidth;
  7743. var layoutOffsetUpper = upperHeight - halfGapWidth;
  7744. node.setLayout({
  7745. borderWidth,
  7746. upperHeight,
  7747. upperLabelHeight
  7748. }, true);
  7749. width = mathMax3(width - 2 * layoutOffset, 0);
  7750. height = mathMax3(height - layoutOffset - layoutOffsetUpper, 0);
  7751. var totalArea = width * height;
  7752. var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth);
  7753. if (!viewChildren.length) {
  7754. return;
  7755. }
  7756. var rect = {
  7757. x: layoutOffset,
  7758. y: layoutOffsetUpper,
  7759. width,
  7760. height
  7761. };
  7762. var rowFixedLength = mathMin3(width, height);
  7763. var best = Infinity;
  7764. var row = [];
  7765. row.area = 0;
  7766. for (var i = 0, len2 = viewChildren.length; i < len2; ) {
  7767. var child = viewChildren[i];
  7768. row.push(child);
  7769. row.area += child.getLayout().area;
  7770. var score = worst(row, rowFixedLength, options.squareRatio);
  7771. if (score <= best) {
  7772. i++;
  7773. best = score;
  7774. } else {
  7775. row.area -= row.pop().getLayout().area;
  7776. position(row, rowFixedLength, rect, halfGapWidth, false);
  7777. rowFixedLength = mathMin3(rect.width, rect.height);
  7778. row.length = row.area = 0;
  7779. best = Infinity;
  7780. }
  7781. }
  7782. if (row.length) {
  7783. position(row, rowFixedLength, rect, halfGapWidth, true);
  7784. }
  7785. if (!hideChildren) {
  7786. var childrenVisibleMin = nodeModel.get("childrenVisibleMin");
  7787. if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {
  7788. hideChildren = true;
  7789. }
  7790. }
  7791. for (var i = 0, len2 = viewChildren.length; i < len2; i++) {
  7792. squarify(viewChildren[i], options, hideChildren, depth + 1);
  7793. }
  7794. }
  7795. function initChildren(node, nodeModel, totalArea, options, hideChildren, depth) {
  7796. var viewChildren = node.children || [];
  7797. var orderBy = options.sort;
  7798. orderBy !== "asc" && orderBy !== "desc" && (orderBy = null);
  7799. var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth;
  7800. if (hideChildren && !overLeafDepth) {
  7801. return node.viewChildren = [];
  7802. }
  7803. viewChildren = filter(viewChildren, function(child) {
  7804. return !child.isRemoved();
  7805. });
  7806. sort(viewChildren, orderBy);
  7807. var info = statistic(nodeModel, viewChildren, orderBy);
  7808. if (info.sum === 0) {
  7809. return node.viewChildren = [];
  7810. }
  7811. info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);
  7812. if (info.sum === 0) {
  7813. return node.viewChildren = [];
  7814. }
  7815. for (var i = 0, len2 = viewChildren.length; i < len2; i++) {
  7816. var area = viewChildren[i].getValue() / info.sum * totalArea;
  7817. viewChildren[i].setLayout({
  7818. area
  7819. });
  7820. }
  7821. if (overLeafDepth) {
  7822. viewChildren.length && node.setLayout({
  7823. isLeafRoot: true
  7824. }, true);
  7825. viewChildren.length = 0;
  7826. }
  7827. node.viewChildren = viewChildren;
  7828. node.setLayout({
  7829. dataExtent: info.dataExtent
  7830. }, true);
  7831. return viewChildren;
  7832. }
  7833. function filterByThreshold(nodeModel, totalArea, sum2, orderBy, orderedChildren) {
  7834. if (!orderBy) {
  7835. return sum2;
  7836. }
  7837. var visibleMin = nodeModel.get("visibleMin");
  7838. var len2 = orderedChildren.length;
  7839. var deletePoint = len2;
  7840. for (var i = len2 - 1; i >= 0; i--) {
  7841. var value = orderedChildren[orderBy === "asc" ? len2 - i - 1 : i].getValue();
  7842. if (value / sum2 * totalArea < visibleMin) {
  7843. deletePoint = i;
  7844. sum2 -= value;
  7845. }
  7846. }
  7847. orderBy === "asc" ? orderedChildren.splice(0, len2 - deletePoint) : orderedChildren.splice(deletePoint, len2 - deletePoint);
  7848. return sum2;
  7849. }
  7850. function sort(viewChildren, orderBy) {
  7851. if (orderBy) {
  7852. viewChildren.sort(function(a, b) {
  7853. var diff = orderBy === "asc" ? a.getValue() - b.getValue() : b.getValue() - a.getValue();
  7854. return diff === 0 ? orderBy === "asc" ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff;
  7855. });
  7856. }
  7857. return viewChildren;
  7858. }
  7859. function statistic(nodeModel, children, orderBy) {
  7860. var sum2 = 0;
  7861. for (var i = 0, len2 = children.length; i < len2; i++) {
  7862. sum2 += children[i].getValue();
  7863. }
  7864. var dimension = nodeModel.get("visualDimension");
  7865. var dataExtent;
  7866. if (!children || !children.length) {
  7867. dataExtent = [NaN, NaN];
  7868. } else if (dimension === "value" && orderBy) {
  7869. dataExtent = [children[children.length - 1].getValue(), children[0].getValue()];
  7870. orderBy === "asc" && dataExtent.reverse();
  7871. } else {
  7872. dataExtent = [Infinity, -Infinity];
  7873. each2(children, function(child) {
  7874. var value = child.getValue(dimension);
  7875. value < dataExtent[0] && (dataExtent[0] = value);
  7876. value > dataExtent[1] && (dataExtent[1] = value);
  7877. });
  7878. }
  7879. return {
  7880. sum: sum2,
  7881. dataExtent
  7882. };
  7883. }
  7884. function worst(row, rowFixedLength, ratio) {
  7885. var areaMax = 0;
  7886. var areaMin = Infinity;
  7887. for (var i = 0, area = void 0, len2 = row.length; i < len2; i++) {
  7888. area = row[i].getLayout().area;
  7889. if (area) {
  7890. area < areaMin && (areaMin = area);
  7891. area > areaMax && (areaMax = area);
  7892. }
  7893. }
  7894. var squareArea = row.area * row.area;
  7895. var f = rowFixedLength * rowFixedLength * ratio;
  7896. return squareArea ? mathMax3(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity;
  7897. }
  7898. function position(row, rowFixedLength, rect, halfGapWidth, flush) {
  7899. var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;
  7900. var idx1WhenH = 1 - idx0WhenH;
  7901. var xy = ["x", "y"];
  7902. var wh = ["width", "height"];
  7903. var last = rect[xy[idx0WhenH]];
  7904. var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0;
  7905. if (flush || rowOtherLength > rect[wh[idx1WhenH]]) {
  7906. rowOtherLength = rect[wh[idx1WhenH]];
  7907. }
  7908. for (var i = 0, rowLen = row.length; i < rowLen; i++) {
  7909. var node = row[i];
  7910. var nodeLayout = {};
  7911. var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0;
  7912. var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax3(rowOtherLength - 2 * halfGapWidth, 0);
  7913. var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last;
  7914. var modWH = i === rowLen - 1 || remain < step ? remain : step;
  7915. var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax3(modWH - 2 * halfGapWidth, 0);
  7916. nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin3(halfGapWidth, wh1 / 2);
  7917. nodeLayout[xy[idx0WhenH]] = last + mathMin3(halfGapWidth, wh0 / 2);
  7918. last += modWH;
  7919. node.setLayout(nodeLayout, true);
  7920. }
  7921. rect[xy[idx1WhenH]] += rowOtherLength;
  7922. rect[wh[idx1WhenH]] -= rowOtherLength;
  7923. }
  7924. function estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {
  7925. var currNode = (targetInfo || {}).node;
  7926. var defaultSize = [containerWidth, containerHeight];
  7927. if (!currNode || currNode === viewRoot) {
  7928. return defaultSize;
  7929. }
  7930. var parent;
  7931. var viewArea = containerWidth * containerHeight;
  7932. var area = viewArea * seriesModel.option.zoomToNodeRatio;
  7933. while (parent = currNode.parentNode) {
  7934. var sum2 = 0;
  7935. var siblings = parent.children;
  7936. for (var i = 0, len2 = siblings.length; i < len2; i++) {
  7937. sum2 += siblings[i].getValue();
  7938. }
  7939. var currNodeValue = currNode.getValue();
  7940. if (currNodeValue === 0) {
  7941. return defaultSize;
  7942. }
  7943. area *= sum2 / currNodeValue;
  7944. var parentModel = parent.getModel();
  7945. var borderWidth = parentModel.get(PATH_BORDER_WIDTH);
  7946. var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel));
  7947. area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5);
  7948. area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);
  7949. currNode = parent;
  7950. }
  7951. area < viewArea && (area = viewArea);
  7952. var scale2 = Math.pow(area / viewArea, 0.5);
  7953. return [containerWidth * scale2, containerHeight * scale2];
  7954. }
  7955. function calculateRootPosition(layoutInfo, rootRect, targetInfo) {
  7956. if (rootRect) {
  7957. return {
  7958. x: rootRect.x,
  7959. y: rootRect.y
  7960. };
  7961. }
  7962. var defaultPosition = {
  7963. x: 0,
  7964. y: 0
  7965. };
  7966. if (!targetInfo) {
  7967. return defaultPosition;
  7968. }
  7969. var targetNode = targetInfo.node;
  7970. var layout2 = targetNode.getLayout();
  7971. if (!layout2) {
  7972. return defaultPosition;
  7973. }
  7974. var targetCenter = [layout2.width / 2, layout2.height / 2];
  7975. var node = targetNode;
  7976. while (node) {
  7977. var nodeLayout = node.getLayout();
  7978. targetCenter[0] += nodeLayout.x;
  7979. targetCenter[1] += nodeLayout.y;
  7980. node = node.parentNode;
  7981. }
  7982. return {
  7983. x: layoutInfo.width / 2 - targetCenter[0],
  7984. y: layoutInfo.height / 2 - targetCenter[1]
  7985. };
  7986. }
  7987. function prunning(node, clipRect, viewAbovePath, viewRoot, depth) {
  7988. var nodeLayout = node.getLayout();
  7989. var nodeInViewAbovePath = viewAbovePath[depth];
  7990. var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node;
  7991. if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) {
  7992. return;
  7993. }
  7994. node.setLayout({
  7995. isInView: true,
  7996. invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),
  7997. isAboveViewRoot
  7998. }, true);
  7999. var childClipRect = new BoundingRect_default(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);
  8000. each2(node.viewChildren || [], function(child) {
  8001. prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);
  8002. });
  8003. }
  8004. function getUpperLabelHeight(model) {
  8005. return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;
  8006. }
  8007. // node_modules/echarts/lib/chart/treemap/install.js
  8008. function install12(registers) {
  8009. registers.registerSeriesModel(TreemapSeries_default);
  8010. registers.registerChartView(TreemapView_default);
  8011. registers.registerVisual(treemapVisual_default);
  8012. registers.registerLayout(treemapLayout_default);
  8013. installTreemapAction(registers);
  8014. }
  8015. // node_modules/echarts/lib/chart/graph/install.js
  8016. init_define_APP_INFO();
  8017. // node_modules/echarts/lib/chart/graph/categoryFilter.js
  8018. init_define_APP_INFO();
  8019. function categoryFilter(ecModel) {
  8020. var legendModels = ecModel.findComponents({
  8021. mainType: "legend"
  8022. });
  8023. if (!legendModels || !legendModels.length) {
  8024. return;
  8025. }
  8026. ecModel.eachSeriesByType("graph", function(graphSeries) {
  8027. var categoriesData = graphSeries.getCategoriesData();
  8028. var graph = graphSeries.getGraph();
  8029. var data = graph.data;
  8030. var categoryNames = categoriesData.mapArray(categoriesData.getName);
  8031. data.filterSelf(function(idx) {
  8032. var model = data.getItemModel(idx);
  8033. var category = model.getShallow("category");
  8034. if (category != null) {
  8035. if (isNumber(category)) {
  8036. category = categoryNames[category];
  8037. }
  8038. for (var i = 0; i < legendModels.length; i++) {
  8039. if (!legendModels[i].isSelected(category)) {
  8040. return false;
  8041. }
  8042. }
  8043. }
  8044. return true;
  8045. });
  8046. });
  8047. }
  8048. // node_modules/echarts/lib/chart/graph/categoryVisual.js
  8049. init_define_APP_INFO();
  8050. function categoryVisual(ecModel) {
  8051. var paletteScope = {};
  8052. ecModel.eachSeriesByType("graph", function(seriesModel) {
  8053. var categoriesData = seriesModel.getCategoriesData();
  8054. var data = seriesModel.getData();
  8055. var categoryNameIdxMap = {};
  8056. categoriesData.each(function(idx) {
  8057. var name = categoriesData.getName(idx);
  8058. categoryNameIdxMap["ec-" + name] = idx;
  8059. var itemModel = categoriesData.getItemModel(idx);
  8060. var style = itemModel.getModel("itemStyle").getItemStyle();
  8061. if (!style.fill) {
  8062. style.fill = seriesModel.getColorFromPalette(name, paletteScope);
  8063. }
  8064. categoriesData.setItemVisual(idx, "style", style);
  8065. var symbolVisualList = ["symbol", "symbolSize", "symbolKeepAspect"];
  8066. for (var i = 0; i < symbolVisualList.length; i++) {
  8067. var symbolVisual = itemModel.getShallow(symbolVisualList[i], true);
  8068. if (symbolVisual != null) {
  8069. categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual);
  8070. }
  8071. }
  8072. });
  8073. if (categoriesData.count()) {
  8074. data.each(function(idx) {
  8075. var model = data.getItemModel(idx);
  8076. var categoryIdx = model.getShallow("category");
  8077. if (categoryIdx != null) {
  8078. if (isString(categoryIdx)) {
  8079. categoryIdx = categoryNameIdxMap["ec-" + categoryIdx];
  8080. }
  8081. var categoryStyle = categoriesData.getItemVisual(categoryIdx, "style");
  8082. var style = data.ensureUniqueItemVisual(idx, "style");
  8083. extend(style, categoryStyle);
  8084. var visualList = ["symbol", "symbolSize", "symbolKeepAspect"];
  8085. for (var i = 0; i < visualList.length; i++) {
  8086. data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i]));
  8087. }
  8088. }
  8089. });
  8090. }
  8091. });
  8092. }
  8093. // node_modules/echarts/lib/chart/graph/edgeVisual.js
  8094. init_define_APP_INFO();
  8095. function normalize2(a) {
  8096. if (!(a instanceof Array)) {
  8097. a = [a, a];
  8098. }
  8099. return a;
  8100. }
  8101. function graphEdgeVisual(ecModel) {
  8102. ecModel.eachSeriesByType("graph", function(seriesModel) {
  8103. var graph = seriesModel.getGraph();
  8104. var edgeData = seriesModel.getEdgeData();
  8105. var symbolType = normalize2(seriesModel.get("edgeSymbol"));
  8106. var symbolSize = normalize2(seriesModel.get("edgeSymbolSize"));
  8107. edgeData.setVisual("fromSymbol", symbolType && symbolType[0]);
  8108. edgeData.setVisual("toSymbol", symbolType && symbolType[1]);
  8109. edgeData.setVisual("fromSymbolSize", symbolSize && symbolSize[0]);
  8110. edgeData.setVisual("toSymbolSize", symbolSize && symbolSize[1]);
  8111. edgeData.setVisual("style", seriesModel.getModel("lineStyle").getLineStyle());
  8112. edgeData.each(function(idx) {
  8113. var itemModel = edgeData.getItemModel(idx);
  8114. var edge = graph.getEdgeByIndex(idx);
  8115. var symbolType2 = normalize2(itemModel.getShallow("symbol", true));
  8116. var symbolSize2 = normalize2(itemModel.getShallow("symbolSize", true));
  8117. var style = itemModel.getModel("lineStyle").getLineStyle();
  8118. var existsStyle = edgeData.ensureUniqueItemVisual(idx, "style");
  8119. extend(existsStyle, style);
  8120. switch (existsStyle.stroke) {
  8121. case "source": {
  8122. var nodeStyle = edge.node1.getVisual("style");
  8123. existsStyle.stroke = nodeStyle && nodeStyle.fill;
  8124. break;
  8125. }
  8126. case "target": {
  8127. var nodeStyle = edge.node2.getVisual("style");
  8128. existsStyle.stroke = nodeStyle && nodeStyle.fill;
  8129. break;
  8130. }
  8131. }
  8132. symbolType2[0] && edge.setVisual("fromSymbol", symbolType2[0]);
  8133. symbolType2[1] && edge.setVisual("toSymbol", symbolType2[1]);
  8134. symbolSize2[0] && edge.setVisual("fromSymbolSize", symbolSize2[0]);
  8135. symbolSize2[1] && edge.setVisual("toSymbolSize", symbolSize2[1]);
  8136. });
  8137. });
  8138. }
  8139. // node_modules/echarts/lib/chart/graph/simpleLayout.js
  8140. init_define_APP_INFO();
  8141. // node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js
  8142. init_define_APP_INFO();
  8143. // node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js
  8144. init_define_APP_INFO();
  8145. var KEY_DELIMITER = "-->";
  8146. var getAutoCurvenessParams = function(seriesModel) {
  8147. return seriesModel.get("autoCurveness") || null;
  8148. };
  8149. var createCurveness = function(seriesModel, appendLength) {
  8150. var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);
  8151. var length = 20;
  8152. var curvenessList = [];
  8153. if (isNumber(autoCurvenessParmas)) {
  8154. length = autoCurvenessParmas;
  8155. } else if (isArray(autoCurvenessParmas)) {
  8156. seriesModel.__curvenessList = autoCurvenessParmas;
  8157. return;
  8158. }
  8159. if (appendLength > length) {
  8160. length = appendLength;
  8161. }
  8162. var len2 = length % 2 ? length + 2 : length + 3;
  8163. curvenessList = [];
  8164. for (var i = 0; i < len2; i++) {
  8165. curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));
  8166. }
  8167. seriesModel.__curvenessList = curvenessList;
  8168. };
  8169. var getKeyOfEdges = function(n1, n2, seriesModel) {
  8170. var source = [n1.id, n1.dataIndex].join(".");
  8171. var target = [n2.id, n2.dataIndex].join(".");
  8172. return [seriesModel.uid, source, target].join(KEY_DELIMITER);
  8173. };
  8174. var getOppositeKey = function(key) {
  8175. var keys2 = key.split(KEY_DELIMITER);
  8176. return [keys2[0], keys2[2], keys2[1]].join(KEY_DELIMITER);
  8177. };
  8178. var getEdgeFromMap = function(edge, seriesModel) {
  8179. var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
  8180. return seriesModel.__edgeMap[key];
  8181. };
  8182. var getTotalLengthBetweenNodes = function(edge, seriesModel) {
  8183. var len2 = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);
  8184. var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);
  8185. return len2 + lenV;
  8186. };
  8187. var getEdgeMapLengthWithKey = function(key, seriesModel) {
  8188. var edgeMap = seriesModel.__edgeMap;
  8189. return edgeMap[key] ? edgeMap[key].length : 0;
  8190. };
  8191. function initCurvenessList(seriesModel) {
  8192. if (!getAutoCurvenessParams(seriesModel)) {
  8193. return;
  8194. }
  8195. seriesModel.__curvenessList = [];
  8196. seriesModel.__edgeMap = {};
  8197. createCurveness(seriesModel);
  8198. }
  8199. function createEdgeMapForCurveness(n1, n2, seriesModel, index) {
  8200. if (!getAutoCurvenessParams(seriesModel)) {
  8201. return;
  8202. }
  8203. var key = getKeyOfEdges(n1, n2, seriesModel);
  8204. var edgeMap = seriesModel.__edgeMap;
  8205. var oppositeEdges = edgeMap[getOppositeKey(key)];
  8206. if (edgeMap[key] && !oppositeEdges) {
  8207. edgeMap[key].isForward = true;
  8208. } else if (oppositeEdges && edgeMap[key]) {
  8209. oppositeEdges.isForward = true;
  8210. edgeMap[key].isForward = false;
  8211. }
  8212. edgeMap[key] = edgeMap[key] || [];
  8213. edgeMap[key].push(index);
  8214. }
  8215. function getCurvenessForEdge(edge, seriesModel, index, needReverse) {
  8216. var autoCurvenessParams = getAutoCurvenessParams(seriesModel);
  8217. var isArrayParam = isArray(autoCurvenessParams);
  8218. if (!autoCurvenessParams) {
  8219. return null;
  8220. }
  8221. var edgeArray = getEdgeFromMap(edge, seriesModel);
  8222. if (!edgeArray) {
  8223. return null;
  8224. }
  8225. var edgeIndex = -1;
  8226. for (var i = 0; i < edgeArray.length; i++) {
  8227. if (edgeArray[i] === index) {
  8228. edgeIndex = i;
  8229. break;
  8230. }
  8231. }
  8232. var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);
  8233. createCurveness(seriesModel, totalLen);
  8234. edge.lineStyle = edge.lineStyle || {};
  8235. var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
  8236. var curvenessList = seriesModel.__curvenessList;
  8237. var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;
  8238. if (!edgeArray.isForward) {
  8239. var oppositeKey = getOppositeKey(curKey);
  8240. var len2 = getEdgeMapLengthWithKey(oppositeKey, seriesModel);
  8241. var resValue = curvenessList[edgeIndex + len2 + parityCorrection];
  8242. if (needReverse) {
  8243. if (isArrayParam) {
  8244. if (autoCurvenessParams && autoCurvenessParams[0] === 0) {
  8245. return (len2 + parityCorrection) % 2 ? resValue : -resValue;
  8246. } else {
  8247. return ((len2 % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;
  8248. }
  8249. } else {
  8250. return (len2 + parityCorrection) % 2 ? resValue : -resValue;
  8251. }
  8252. } else {
  8253. return curvenessList[edgeIndex + len2 + parityCorrection];
  8254. }
  8255. } else {
  8256. return curvenessList[parityCorrection + edgeIndex];
  8257. }
  8258. }
  8259. // node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js
  8260. function simpleLayout(seriesModel) {
  8261. var coordSys = seriesModel.coordinateSystem;
  8262. if (coordSys && coordSys.type !== "view") {
  8263. return;
  8264. }
  8265. var graph = seriesModel.getGraph();
  8266. graph.eachNode(function(node) {
  8267. var model = node.getModel();
  8268. node.setLayout([+model.get("x"), +model.get("y")]);
  8269. });
  8270. simpleLayoutEdge(graph, seriesModel);
  8271. }
  8272. function simpleLayoutEdge(graph, seriesModel) {
  8273. graph.eachEdge(function(edge, index) {
  8274. var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, seriesModel, index, true), 0);
  8275. var p1 = clone3(edge.node1.getLayout());
  8276. var p2 = clone3(edge.node2.getLayout());
  8277. var points = [p1, p2];
  8278. if (+curveness) {
  8279. points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);
  8280. }
  8281. edge.setLayout(points);
  8282. });
  8283. }
  8284. // node_modules/echarts/lib/chart/graph/simpleLayout.js
  8285. function graphSimpleLayout(ecModel, api) {
  8286. ecModel.eachSeriesByType("graph", function(seriesModel) {
  8287. var layout2 = seriesModel.get("layout");
  8288. var coordSys = seriesModel.coordinateSystem;
  8289. if (coordSys && coordSys.type !== "view") {
  8290. var data_1 = seriesModel.getData();
  8291. var dimensions_1 = [];
  8292. each(coordSys.dimensions, function(coordDim) {
  8293. dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim));
  8294. });
  8295. for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) {
  8296. var value = [];
  8297. var hasValue = false;
  8298. for (var i = 0; i < dimensions_1.length; i++) {
  8299. var val = data_1.get(dimensions_1[i], dataIndex);
  8300. if (!isNaN(val)) {
  8301. hasValue = true;
  8302. }
  8303. value.push(val);
  8304. }
  8305. if (hasValue) {
  8306. data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value));
  8307. } else {
  8308. data_1.setItemLayout(dataIndex, [NaN, NaN]);
  8309. }
  8310. }
  8311. simpleLayoutEdge(data_1.graph, seriesModel);
  8312. } else if (!layout2 || layout2 === "none") {
  8313. simpleLayout(seriesModel);
  8314. }
  8315. });
  8316. }
  8317. // node_modules/echarts/lib/chart/graph/circularLayout.js
  8318. init_define_APP_INFO();
  8319. // node_modules/echarts/lib/chart/graph/circularLayoutHelper.js
  8320. init_define_APP_INFO();
  8321. // node_modules/echarts/lib/chart/graph/graphHelper.js
  8322. init_define_APP_INFO();
  8323. function getNodeGlobalScale(seriesModel) {
  8324. var coordSys = seriesModel.coordinateSystem;
  8325. if (coordSys.type !== "view") {
  8326. return 1;
  8327. }
  8328. var nodeScaleRatio = seriesModel.option.nodeScaleRatio;
  8329. var groupZoom = coordSys.scaleX;
  8330. var roamZoom = coordSys.getZoom();
  8331. var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;
  8332. return nodeScale / groupZoom;
  8333. }
  8334. function getSymbolSize(node) {
  8335. var symbolSize = node.getVisual("symbolSize");
  8336. if (symbolSize instanceof Array) {
  8337. symbolSize = (symbolSize[0] + symbolSize[1]) / 2;
  8338. }
  8339. return +symbolSize;
  8340. }
  8341. // node_modules/echarts/lib/chart/graph/circularLayoutHelper.js
  8342. var PI = Math.PI;
  8343. var _symbolRadiansHalf = [];
  8344. function circularLayout(seriesModel, basedOn) {
  8345. var coordSys = seriesModel.coordinateSystem;
  8346. if (coordSys && coordSys.type !== "view") {
  8347. return;
  8348. }
  8349. var rect = coordSys.getBoundingRect();
  8350. var nodeData = seriesModel.getData();
  8351. var graph = nodeData.graph;
  8352. var cx = rect.width / 2 + rect.x;
  8353. var cy = rect.height / 2 + rect.y;
  8354. var r = Math.min(rect.width, rect.height) / 2;
  8355. var count = nodeData.count();
  8356. nodeData.setLayout({
  8357. cx,
  8358. cy
  8359. });
  8360. if (!count) {
  8361. return;
  8362. }
  8363. _layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r, cx, cy, count);
  8364. graph.eachEdge(function(edge, index) {
  8365. var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), getCurvenessForEdge(edge, seriesModel, index), 0);
  8366. var p1 = clone3(edge.node1.getLayout());
  8367. var p2 = clone3(edge.node2.getLayout());
  8368. var cp1;
  8369. var x12 = (p1[0] + p2[0]) / 2;
  8370. var y12 = (p1[1] + p2[1]) / 2;
  8371. if (+curveness) {
  8372. curveness *= 3;
  8373. cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];
  8374. }
  8375. edge.setLayout([p1, p2, cp1]);
  8376. });
  8377. }
  8378. var _layoutNodesBasedOn = {
  8379. value: function(seriesModel, graph, nodeData, r, cx, cy, count) {
  8380. var angle = 0;
  8381. var sum2 = nodeData.getSum("value");
  8382. var unitAngle = Math.PI * 2 / (sum2 || count);
  8383. graph.eachNode(function(node) {
  8384. var value = node.getValue("value");
  8385. var radianHalf = unitAngle * (sum2 ? value : 1) / 2;
  8386. angle += radianHalf;
  8387. node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);
  8388. angle += radianHalf;
  8389. });
  8390. },
  8391. symbolSize: function(seriesModel, graph, nodeData, r, cx, cy, count) {
  8392. var sumRadian = 0;
  8393. _symbolRadiansHalf.length = count;
  8394. var nodeScale = getNodeGlobalScale(seriesModel);
  8395. graph.eachNode(function(node) {
  8396. var symbolSize = getSymbolSize(node);
  8397. isNaN(symbolSize) && (symbolSize = 2);
  8398. symbolSize < 0 && (symbolSize = 0);
  8399. symbolSize *= nodeScale;
  8400. var symbolRadianHalf = Math.asin(symbolSize / 2 / r);
  8401. isNaN(symbolRadianHalf) && (symbolRadianHalf = PI / 2);
  8402. _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;
  8403. sumRadian += symbolRadianHalf * 2;
  8404. });
  8405. var halfRemainRadian = (2 * PI - sumRadian) / count / 2;
  8406. var angle = 0;
  8407. graph.eachNode(function(node) {
  8408. var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];
  8409. angle += radianHalf;
  8410. node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);
  8411. angle += radianHalf;
  8412. });
  8413. }
  8414. };
  8415. // node_modules/echarts/lib/chart/graph/circularLayout.js
  8416. function graphCircularLayout(ecModel) {
  8417. ecModel.eachSeriesByType("graph", function(seriesModel) {
  8418. if (seriesModel.get("layout") === "circular") {
  8419. circularLayout(seriesModel, "symbolSize");
  8420. }
  8421. });
  8422. }
  8423. // node_modules/echarts/lib/chart/graph/forceLayout.js
  8424. init_define_APP_INFO();
  8425. // node_modules/echarts/lib/chart/graph/forceHelper.js
  8426. init_define_APP_INFO();
  8427. var scaleAndAdd2 = scaleAndAdd;
  8428. function forceLayout(inNodes, inEdges, opts) {
  8429. var nodes = inNodes;
  8430. var edges = inEdges;
  8431. var rect = opts.rect;
  8432. var width = rect.width;
  8433. var height = rect.height;
  8434. var center2 = [rect.x + width / 2, rect.y + height / 2];
  8435. var gravity = opts.gravity == null ? 0.1 : opts.gravity;
  8436. for (var i = 0; i < nodes.length; i++) {
  8437. var n = nodes[i];
  8438. if (!n.p) {
  8439. n.p = create2(width * (Math.random() - 0.5) + center2[0], height * (Math.random() - 0.5) + center2[1]);
  8440. }
  8441. n.pp = clone3(n.p);
  8442. n.edges = null;
  8443. }
  8444. var initialFriction = opts.friction == null ? 0.6 : opts.friction;
  8445. var friction = initialFriction;
  8446. var beforeStepCallback;
  8447. var afterStepCallback;
  8448. return {
  8449. warmUp: function() {
  8450. friction = initialFriction * 0.8;
  8451. },
  8452. setFixed: function(idx) {
  8453. nodes[idx].fixed = true;
  8454. },
  8455. setUnfixed: function(idx) {
  8456. nodes[idx].fixed = false;
  8457. },
  8458. beforeStep: function(cb) {
  8459. beforeStepCallback = cb;
  8460. },
  8461. afterStep: function(cb) {
  8462. afterStepCallback = cb;
  8463. },
  8464. step: function(cb) {
  8465. beforeStepCallback && beforeStepCallback(nodes, edges);
  8466. var v12 = [];
  8467. var nLen = nodes.length;
  8468. for (var i2 = 0; i2 < edges.length; i2++) {
  8469. var e = edges[i2];
  8470. if (e.ignoreForceLayout) {
  8471. continue;
  8472. }
  8473. var n1 = e.n1;
  8474. var n2 = e.n2;
  8475. sub(v12, n2.p, n1.p);
  8476. var d = len(v12) - e.d;
  8477. var w = n2.w / (n1.w + n2.w);
  8478. if (isNaN(w)) {
  8479. w = 0;
  8480. }
  8481. normalize(v12, v12);
  8482. !n1.fixed && scaleAndAdd2(n1.p, n1.p, v12, w * d * friction);
  8483. !n2.fixed && scaleAndAdd2(n2.p, n2.p, v12, -(1 - w) * d * friction);
  8484. }
  8485. for (var i2 = 0; i2 < nLen; i2++) {
  8486. var n3 = nodes[i2];
  8487. if (!n3.fixed) {
  8488. sub(v12, center2, n3.p);
  8489. scaleAndAdd2(n3.p, n3.p, v12, gravity * friction);
  8490. }
  8491. }
  8492. for (var i2 = 0; i2 < nLen; i2++) {
  8493. var n1 = nodes[i2];
  8494. for (var j = i2 + 1; j < nLen; j++) {
  8495. var n2 = nodes[j];
  8496. sub(v12, n2.p, n1.p);
  8497. var d = len(v12);
  8498. if (d === 0) {
  8499. set(v12, Math.random() - 0.5, Math.random() - 0.5);
  8500. d = 1;
  8501. }
  8502. var repFact = (n1.rep + n2.rep) / d / d;
  8503. !n1.fixed && scaleAndAdd2(n1.pp, n1.pp, v12, repFact);
  8504. !n2.fixed && scaleAndAdd2(n2.pp, n2.pp, v12, -repFact);
  8505. }
  8506. }
  8507. var v = [];
  8508. for (var i2 = 0; i2 < nLen; i2++) {
  8509. var n3 = nodes[i2];
  8510. if (!n3.fixed) {
  8511. sub(v, n3.p, n3.pp);
  8512. scaleAndAdd2(n3.p, n3.p, v, friction);
  8513. copy(n3.pp, n3.p);
  8514. }
  8515. }
  8516. friction = friction * 0.992;
  8517. var finished = friction < 0.01;
  8518. afterStepCallback && afterStepCallback(nodes, edges, finished);
  8519. cb && cb(finished);
  8520. }
  8521. };
  8522. }
  8523. // node_modules/echarts/lib/chart/graph/forceLayout.js
  8524. function graphForceLayout(ecModel) {
  8525. ecModel.eachSeriesByType("graph", function(graphSeries) {
  8526. var coordSys = graphSeries.coordinateSystem;
  8527. if (coordSys && coordSys.type !== "view") {
  8528. return;
  8529. }
  8530. if (graphSeries.get("layout") === "force") {
  8531. var preservedPoints_1 = graphSeries.preservedPoints || {};
  8532. var graph_1 = graphSeries.getGraph();
  8533. var nodeData_1 = graph_1.data;
  8534. var edgeData = graph_1.edgeData;
  8535. var forceModel = graphSeries.getModel("force");
  8536. var initLayout = forceModel.get("initLayout");
  8537. if (graphSeries.preservedPoints) {
  8538. nodeData_1.each(function(idx) {
  8539. var id = nodeData_1.getId(idx);
  8540. nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]);
  8541. });
  8542. } else if (!initLayout || initLayout === "none") {
  8543. simpleLayout(graphSeries);
  8544. } else if (initLayout === "circular") {
  8545. circularLayout(graphSeries, "value");
  8546. }
  8547. var nodeDataExtent_1 = nodeData_1.getDataExtent("value");
  8548. var edgeDataExtent_1 = edgeData.getDataExtent("value");
  8549. var repulsion = forceModel.get("repulsion");
  8550. var edgeLength = forceModel.get("edgeLength");
  8551. var repulsionArr_1 = isArray(repulsion) ? repulsion : [repulsion, repulsion];
  8552. var edgeLengthArr_1 = isArray(edgeLength) ? edgeLength : [edgeLength, edgeLength];
  8553. edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]];
  8554. var nodes_1 = nodeData_1.mapArray("value", function(value, idx) {
  8555. var point = nodeData_1.getItemLayout(idx);
  8556. var rep = linearMap(value, nodeDataExtent_1, repulsionArr_1);
  8557. if (isNaN(rep)) {
  8558. rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2;
  8559. }
  8560. return {
  8561. w: rep,
  8562. rep,
  8563. fixed: nodeData_1.getItemModel(idx).get("fixed"),
  8564. p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point
  8565. };
  8566. });
  8567. var edges = edgeData.mapArray("value", function(value, idx) {
  8568. var edge = graph_1.getEdgeByIndex(idx);
  8569. var d = linearMap(value, edgeDataExtent_1, edgeLengthArr_1);
  8570. if (isNaN(d)) {
  8571. d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2;
  8572. }
  8573. var edgeModel = edge.getModel();
  8574. var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);
  8575. return {
  8576. n1: nodes_1[edge.node1.dataIndex],
  8577. n2: nodes_1[edge.node2.dataIndex],
  8578. d,
  8579. curveness,
  8580. ignoreForceLayout: edgeModel.get("ignoreForceLayout")
  8581. };
  8582. });
  8583. var rect = coordSys.getBoundingRect();
  8584. var forceInstance = forceLayout(nodes_1, edges, {
  8585. rect,
  8586. gravity: forceModel.get("gravity"),
  8587. friction: forceModel.get("friction")
  8588. });
  8589. forceInstance.beforeStep(function(nodes, edges2) {
  8590. for (var i = 0, l = nodes.length; i < l; i++) {
  8591. if (nodes[i].fixed) {
  8592. copy(nodes[i].p, graph_1.getNodeByIndex(i).getLayout());
  8593. }
  8594. }
  8595. });
  8596. forceInstance.afterStep(function(nodes, edges2, stopped) {
  8597. for (var i = 0, l = nodes.length; i < l; i++) {
  8598. if (!nodes[i].fixed) {
  8599. graph_1.getNodeByIndex(i).setLayout(nodes[i].p);
  8600. }
  8601. preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p;
  8602. }
  8603. for (var i = 0, l = edges2.length; i < l; i++) {
  8604. var e = edges2[i];
  8605. var edge = graph_1.getEdgeByIndex(i);
  8606. var p1 = e.n1.p;
  8607. var p2 = e.n2.p;
  8608. var points = edge.getLayout();
  8609. points = points ? points.slice() : [];
  8610. points[0] = points[0] || [];
  8611. points[1] = points[1] || [];
  8612. copy(points[0], p1);
  8613. copy(points[1], p2);
  8614. if (+e.curveness) {
  8615. points[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness];
  8616. }
  8617. edge.setLayout(points);
  8618. }
  8619. });
  8620. graphSeries.forceLayout = forceInstance;
  8621. graphSeries.preservedPoints = preservedPoints_1;
  8622. forceInstance.step();
  8623. } else {
  8624. graphSeries.forceLayout = null;
  8625. }
  8626. });
  8627. }
  8628. // node_modules/echarts/lib/chart/graph/createView.js
  8629. init_define_APP_INFO();
  8630. function getViewRect3(seriesModel, api, aspect) {
  8631. var option = extend(seriesModel.getBoxLayoutParams(), {
  8632. aspect
  8633. });
  8634. return getLayoutRect(option, {
  8635. width: api.getWidth(),
  8636. height: api.getHeight()
  8637. });
  8638. }
  8639. function createViewCoordSys(ecModel, api) {
  8640. var viewList = [];
  8641. ecModel.eachSeriesByType("graph", function(seriesModel) {
  8642. var coordSysType = seriesModel.get("coordinateSystem");
  8643. if (!coordSysType || coordSysType === "view") {
  8644. var data_1 = seriesModel.getData();
  8645. var positions = data_1.mapArray(function(idx) {
  8646. var itemModel = data_1.getItemModel(idx);
  8647. return [+itemModel.get("x"), +itemModel.get("y")];
  8648. });
  8649. var min = [];
  8650. var max = [];
  8651. fromPoints(positions, min, max);
  8652. if (max[0] - min[0] === 0) {
  8653. max[0] += 1;
  8654. min[0] -= 1;
  8655. }
  8656. if (max[1] - min[1] === 0) {
  8657. max[1] += 1;
  8658. min[1] -= 1;
  8659. }
  8660. var aspect = (max[0] - min[0]) / (max[1] - min[1]);
  8661. var viewRect = getViewRect3(seriesModel, api, aspect);
  8662. if (isNaN(aspect)) {
  8663. min = [viewRect.x, viewRect.y];
  8664. max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];
  8665. }
  8666. var bbWidth = max[0] - min[0];
  8667. var bbHeight = max[1] - min[1];
  8668. var viewWidth = viewRect.width;
  8669. var viewHeight = viewRect.height;
  8670. var viewCoordSys = seriesModel.coordinateSystem = new View_default();
  8671. viewCoordSys.zoomLimit = seriesModel.get("scaleLimit");
  8672. viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);
  8673. viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight);
  8674. viewCoordSys.setCenter(seriesModel.get("center"), api);
  8675. viewCoordSys.setZoom(seriesModel.get("zoom"));
  8676. viewList.push(viewCoordSys);
  8677. }
  8678. });
  8679. return viewList;
  8680. }
  8681. // node_modules/echarts/lib/chart/graph/GraphView.js
  8682. init_define_APP_INFO();
  8683. // node_modules/echarts/lib/chart/graph/adjustEdge.js
  8684. init_define_APP_INFO();
  8685. var v1 = [];
  8686. var v2 = [];
  8687. var v3 = [];
  8688. var quadraticAt2 = quadraticAt;
  8689. var v2DistSquare = distSquare;
  8690. var mathAbs = Math.abs;
  8691. function intersectCurveCircle(curvePoints, center2, radius) {
  8692. var p0 = curvePoints[0];
  8693. var p1 = curvePoints[1];
  8694. var p2 = curvePoints[2];
  8695. var d = Infinity;
  8696. var t;
  8697. var radiusSquare = radius * radius;
  8698. var interval = 0.1;
  8699. for (var _t = 0.1; _t <= 0.9; _t += 0.1) {
  8700. v1[0] = quadraticAt2(p0[0], p1[0], p2[0], _t);
  8701. v1[1] = quadraticAt2(p0[1], p1[1], p2[1], _t);
  8702. var diff = mathAbs(v2DistSquare(v1, center2) - radiusSquare);
  8703. if (diff < d) {
  8704. d = diff;
  8705. t = _t;
  8706. }
  8707. }
  8708. for (var i = 0; i < 32; i++) {
  8709. var next = t + interval;
  8710. v2[0] = quadraticAt2(p0[0], p1[0], p2[0], t);
  8711. v2[1] = quadraticAt2(p0[1], p1[1], p2[1], t);
  8712. v3[0] = quadraticAt2(p0[0], p1[0], p2[0], next);
  8713. v3[1] = quadraticAt2(p0[1], p1[1], p2[1], next);
  8714. var diff = v2DistSquare(v2, center2) - radiusSquare;
  8715. if (mathAbs(diff) < 0.01) {
  8716. break;
  8717. }
  8718. var nextDiff = v2DistSquare(v3, center2) - radiusSquare;
  8719. interval /= 2;
  8720. if (diff < 0) {
  8721. if (nextDiff >= 0) {
  8722. t = t + interval;
  8723. } else {
  8724. t = t - interval;
  8725. }
  8726. } else {
  8727. if (nextDiff >= 0) {
  8728. t = t - interval;
  8729. } else {
  8730. t = t + interval;
  8731. }
  8732. }
  8733. }
  8734. return t;
  8735. }
  8736. function adjustEdge(graph, scale2) {
  8737. var tmp0 = [];
  8738. var quadraticSubdivide2 = quadraticSubdivide;
  8739. var pts = [[], [], []];
  8740. var pts2 = [[], []];
  8741. var v = [];
  8742. scale2 /= 2;
  8743. graph.eachEdge(function(edge, idx) {
  8744. var linePoints = edge.getLayout();
  8745. var fromSymbol = edge.getVisual("fromSymbol");
  8746. var toSymbol = edge.getVisual("toSymbol");
  8747. if (!linePoints.__original) {
  8748. linePoints.__original = [clone3(linePoints[0]), clone3(linePoints[1])];
  8749. if (linePoints[2]) {
  8750. linePoints.__original.push(clone3(linePoints[2]));
  8751. }
  8752. }
  8753. var originalPoints = linePoints.__original;
  8754. if (linePoints[2] != null) {
  8755. copy(pts[0], originalPoints[0]);
  8756. copy(pts[1], originalPoints[2]);
  8757. copy(pts[2], originalPoints[1]);
  8758. if (fromSymbol && fromSymbol !== "none") {
  8759. var symbolSize = getSymbolSize(edge.node1);
  8760. var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale2);
  8761. quadraticSubdivide2(pts[0][0], pts[1][0], pts[2][0], t, tmp0);
  8762. pts[0][0] = tmp0[3];
  8763. pts[1][0] = tmp0[4];
  8764. quadraticSubdivide2(pts[0][1], pts[1][1], pts[2][1], t, tmp0);
  8765. pts[0][1] = tmp0[3];
  8766. pts[1][1] = tmp0[4];
  8767. }
  8768. if (toSymbol && toSymbol !== "none") {
  8769. var symbolSize = getSymbolSize(edge.node2);
  8770. var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale2);
  8771. quadraticSubdivide2(pts[0][0], pts[1][0], pts[2][0], t, tmp0);
  8772. pts[1][0] = tmp0[1];
  8773. pts[2][0] = tmp0[2];
  8774. quadraticSubdivide2(pts[0][1], pts[1][1], pts[2][1], t, tmp0);
  8775. pts[1][1] = tmp0[1];
  8776. pts[2][1] = tmp0[2];
  8777. }
  8778. copy(linePoints[0], pts[0]);
  8779. copy(linePoints[1], pts[2]);
  8780. copy(linePoints[2], pts[1]);
  8781. } else {
  8782. copy(pts2[0], originalPoints[0]);
  8783. copy(pts2[1], originalPoints[1]);
  8784. sub(v, pts2[1], pts2[0]);
  8785. normalize(v, v);
  8786. if (fromSymbol && fromSymbol !== "none") {
  8787. var symbolSize = getSymbolSize(edge.node1);
  8788. scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale2);
  8789. }
  8790. if (toSymbol && toSymbol !== "none") {
  8791. var symbolSize = getSymbolSize(edge.node2);
  8792. scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale2);
  8793. }
  8794. copy(linePoints[0], pts2[0]);
  8795. copy(linePoints[1], pts2[1]);
  8796. }
  8797. });
  8798. }
  8799. // node_modules/echarts/lib/chart/graph/GraphView.js
  8800. function isViewCoordSys(coordSys) {
  8801. return coordSys.type === "view";
  8802. }
  8803. var GraphView = function(_super) {
  8804. __extends(GraphView2, _super);
  8805. function GraphView2() {
  8806. var _this = _super !== null && _super.apply(this, arguments) || this;
  8807. _this.type = GraphView2.type;
  8808. return _this;
  8809. }
  8810. GraphView2.prototype.init = function(ecModel, api) {
  8811. var symbolDraw = new SymbolDraw_default();
  8812. var lineDraw = new LineDraw_default();
  8813. var group = this.group;
  8814. this._controller = new RoamController_default(api.getZr());
  8815. this._controllerHost = {
  8816. target: group
  8817. };
  8818. group.add(symbolDraw.group);
  8819. group.add(lineDraw.group);
  8820. this._symbolDraw = symbolDraw;
  8821. this._lineDraw = lineDraw;
  8822. this._firstRender = true;
  8823. };
  8824. GraphView2.prototype.render = function(seriesModel, ecModel, api) {
  8825. var _this = this;
  8826. var coordSys = seriesModel.coordinateSystem;
  8827. this._model = seriesModel;
  8828. var symbolDraw = this._symbolDraw;
  8829. var lineDraw = this._lineDraw;
  8830. var group = this.group;
  8831. if (isViewCoordSys(coordSys)) {
  8832. var groupNewProp = {
  8833. x: coordSys.x,
  8834. y: coordSys.y,
  8835. scaleX: coordSys.scaleX,
  8836. scaleY: coordSys.scaleY
  8837. };
  8838. if (this._firstRender) {
  8839. group.attr(groupNewProp);
  8840. } else {
  8841. updateProps(group, groupNewProp, seriesModel);
  8842. }
  8843. }
  8844. adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));
  8845. var data = seriesModel.getData();
  8846. symbolDraw.updateData(data);
  8847. var edgeData = seriesModel.getEdgeData();
  8848. lineDraw.updateData(edgeData);
  8849. this._updateNodeAndLinkScale();
  8850. this._updateController(seriesModel, ecModel, api);
  8851. clearTimeout(this._layoutTimeout);
  8852. var forceLayout2 = seriesModel.forceLayout;
  8853. var layoutAnimation = seriesModel.get(["force", "layoutAnimation"]);
  8854. if (forceLayout2) {
  8855. this._startForceLayoutIteration(forceLayout2, layoutAnimation);
  8856. }
  8857. data.graph.eachNode(function(node) {
  8858. var idx = node.dataIndex;
  8859. var el = node.getGraphicEl();
  8860. var itemModel = node.getModel();
  8861. if (!el) {
  8862. return;
  8863. }
  8864. el.off("drag").off("dragend");
  8865. var draggable = itemModel.get("draggable");
  8866. if (draggable) {
  8867. el.on("drag", function() {
  8868. if (forceLayout2) {
  8869. forceLayout2.warmUp();
  8870. !_this._layouting && _this._startForceLayoutIteration(forceLayout2, layoutAnimation);
  8871. forceLayout2.setFixed(idx);
  8872. data.setItemLayout(idx, [el.x, el.y]);
  8873. }
  8874. }).on("dragend", function() {
  8875. if (forceLayout2) {
  8876. forceLayout2.setUnfixed(idx);
  8877. }
  8878. });
  8879. }
  8880. el.setDraggable(draggable && !!forceLayout2, !!itemModel.get("cursor"));
  8881. var focus = itemModel.get(["emphasis", "focus"]);
  8882. if (focus === "adjacency") {
  8883. getECData(el).focus = node.getAdjacentDataIndices();
  8884. }
  8885. });
  8886. data.graph.eachEdge(function(edge) {
  8887. var el = edge.getGraphicEl();
  8888. var focus = edge.getModel().get(["emphasis", "focus"]);
  8889. if (!el) {
  8890. return;
  8891. }
  8892. if (focus === "adjacency") {
  8893. getECData(el).focus = {
  8894. edge: [edge.dataIndex],
  8895. node: [edge.node1.dataIndex, edge.node2.dataIndex]
  8896. };
  8897. }
  8898. });
  8899. var circularRotateLabel = seriesModel.get("layout") === "circular" && seriesModel.get(["circular", "rotateLabel"]);
  8900. var cx = data.getLayout("cx");
  8901. var cy = data.getLayout("cy");
  8902. data.eachItemGraphicEl(function(el, idx) {
  8903. var itemModel = data.getItemModel(idx);
  8904. var labelRotate = itemModel.get(["label", "rotate"]) || 0;
  8905. var symbolPath = el.getSymbolPath();
  8906. if (circularRotateLabel) {
  8907. var pos = data.getItemLayout(idx);
  8908. var rad = Math.atan2(pos[1] - cy, pos[0] - cx);
  8909. if (rad < 0) {
  8910. rad = Math.PI * 2 + rad;
  8911. }
  8912. var isLeft = pos[0] < cx;
  8913. if (isLeft) {
  8914. rad = rad - Math.PI;
  8915. }
  8916. var textPosition = isLeft ? "left" : "right";
  8917. symbolPath.setTextConfig({
  8918. rotation: -rad,
  8919. position: textPosition,
  8920. origin: "center"
  8921. });
  8922. var emphasisState = symbolPath.ensureState("emphasis");
  8923. extend(emphasisState.textConfig || (emphasisState.textConfig = {}), {
  8924. position: textPosition
  8925. });
  8926. } else {
  8927. symbolPath.setTextConfig({
  8928. rotation: labelRotate *= Math.PI / 180
  8929. });
  8930. }
  8931. });
  8932. this._firstRender = false;
  8933. };
  8934. GraphView2.prototype.dispose = function() {
  8935. this._controller && this._controller.dispose();
  8936. this._controllerHost = null;
  8937. };
  8938. GraphView2.prototype._startForceLayoutIteration = function(forceLayout2, layoutAnimation) {
  8939. var self = this;
  8940. (function step() {
  8941. forceLayout2.step(function(stopped) {
  8942. self.updateLayout(self._model);
  8943. (self._layouting = !stopped) && (layoutAnimation ? self._layoutTimeout = setTimeout(step, 16) : step());
  8944. });
  8945. })();
  8946. };
  8947. GraphView2.prototype._updateController = function(seriesModel, ecModel, api) {
  8948. var _this = this;
  8949. var controller = this._controller;
  8950. var controllerHost = this._controllerHost;
  8951. var group = this.group;
  8952. controller.setPointerChecker(function(e, x, y) {
  8953. var rect = group.getBoundingRect();
  8954. rect.applyTransform(group.transform);
  8955. return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);
  8956. });
  8957. if (!isViewCoordSys(seriesModel.coordinateSystem)) {
  8958. controller.disable();
  8959. return;
  8960. }
  8961. controller.enable(seriesModel.get("roam"));
  8962. controllerHost.zoomLimit = seriesModel.get("scaleLimit");
  8963. controllerHost.zoom = seriesModel.coordinateSystem.getZoom();
  8964. controller.off("pan").off("zoom").on("pan", function(e) {
  8965. updateViewOnPan(controllerHost, e.dx, e.dy);
  8966. api.dispatchAction({
  8967. seriesId: seriesModel.id,
  8968. type: "graphRoam",
  8969. dx: e.dx,
  8970. dy: e.dy
  8971. });
  8972. }).on("zoom", function(e) {
  8973. updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);
  8974. api.dispatchAction({
  8975. seriesId: seriesModel.id,
  8976. type: "graphRoam",
  8977. zoom: e.scale,
  8978. originX: e.originX,
  8979. originY: e.originY
  8980. });
  8981. _this._updateNodeAndLinkScale();
  8982. adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));
  8983. _this._lineDraw.updateLayout();
  8984. api.updateLabelLayout();
  8985. });
  8986. };
  8987. GraphView2.prototype._updateNodeAndLinkScale = function() {
  8988. var seriesModel = this._model;
  8989. var data = seriesModel.getData();
  8990. var nodeScale = getNodeGlobalScale(seriesModel);
  8991. data.eachItemGraphicEl(function(el, idx) {
  8992. el && el.setSymbolScale(nodeScale);
  8993. });
  8994. };
  8995. GraphView2.prototype.updateLayout = function(seriesModel) {
  8996. adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));
  8997. this._symbolDraw.updateLayout();
  8998. this._lineDraw.updateLayout();
  8999. };
  9000. GraphView2.prototype.remove = function(ecModel, api) {
  9001. this._symbolDraw && this._symbolDraw.remove();
  9002. this._lineDraw && this._lineDraw.remove();
  9003. };
  9004. GraphView2.type = "graph";
  9005. return GraphView2;
  9006. }(Chart_default);
  9007. var GraphView_default = GraphView;
  9008. // node_modules/echarts/lib/chart/graph/GraphSeries.js
  9009. init_define_APP_INFO();
  9010. // node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js
  9011. init_define_APP_INFO();
  9012. // node_modules/echarts/lib/data/Graph.js
  9013. init_define_APP_INFO();
  9014. function generateNodeKey(id) {
  9015. return "_EC_" + id;
  9016. }
  9017. var Graph = function() {
  9018. function Graph2(directed) {
  9019. this.type = "graph";
  9020. this.nodes = [];
  9021. this.edges = [];
  9022. this._nodesMap = {};
  9023. this._edgesMap = {};
  9024. this._directed = directed || false;
  9025. }
  9026. Graph2.prototype.isDirected = function() {
  9027. return this._directed;
  9028. };
  9029. ;
  9030. Graph2.prototype.addNode = function(id, dataIndex) {
  9031. id = id == null ? "" + dataIndex : "" + id;
  9032. var nodesMap = this._nodesMap;
  9033. if (nodesMap[generateNodeKey(id)]) {
  9034. if (true) {
  9035. console.error("Graph nodes have duplicate name or id");
  9036. }
  9037. return;
  9038. }
  9039. var node = new GraphNode(id, dataIndex);
  9040. node.hostGraph = this;
  9041. this.nodes.push(node);
  9042. nodesMap[generateNodeKey(id)] = node;
  9043. return node;
  9044. };
  9045. ;
  9046. Graph2.prototype.getNodeByIndex = function(dataIndex) {
  9047. var rawIdx = this.data.getRawIndex(dataIndex);
  9048. return this.nodes[rawIdx];
  9049. };
  9050. ;
  9051. Graph2.prototype.getNodeById = function(id) {
  9052. return this._nodesMap[generateNodeKey(id)];
  9053. };
  9054. ;
  9055. Graph2.prototype.addEdge = function(n1, n2, dataIndex) {
  9056. var nodesMap = this._nodesMap;
  9057. var edgesMap = this._edgesMap;
  9058. if (isNumber(n1)) {
  9059. n1 = this.nodes[n1];
  9060. }
  9061. if (isNumber(n2)) {
  9062. n2 = this.nodes[n2];
  9063. }
  9064. if (!(n1 instanceof GraphNode)) {
  9065. n1 = nodesMap[generateNodeKey(n1)];
  9066. }
  9067. if (!(n2 instanceof GraphNode)) {
  9068. n2 = nodesMap[generateNodeKey(n2)];
  9069. }
  9070. if (!n1 || !n2) {
  9071. return;
  9072. }
  9073. var key = n1.id + "-" + n2.id;
  9074. var edge = new GraphEdge(n1, n2, dataIndex);
  9075. edge.hostGraph = this;
  9076. if (this._directed) {
  9077. n1.outEdges.push(edge);
  9078. n2.inEdges.push(edge);
  9079. }
  9080. n1.edges.push(edge);
  9081. if (n1 !== n2) {
  9082. n2.edges.push(edge);
  9083. }
  9084. this.edges.push(edge);
  9085. edgesMap[key] = edge;
  9086. return edge;
  9087. };
  9088. ;
  9089. Graph2.prototype.getEdgeByIndex = function(dataIndex) {
  9090. var rawIdx = this.edgeData.getRawIndex(dataIndex);
  9091. return this.edges[rawIdx];
  9092. };
  9093. ;
  9094. Graph2.prototype.getEdge = function(n1, n2) {
  9095. if (n1 instanceof GraphNode) {
  9096. n1 = n1.id;
  9097. }
  9098. if (n2 instanceof GraphNode) {
  9099. n2 = n2.id;
  9100. }
  9101. var edgesMap = this._edgesMap;
  9102. if (this._directed) {
  9103. return edgesMap[n1 + "-" + n2];
  9104. } else {
  9105. return edgesMap[n1 + "-" + n2] || edgesMap[n2 + "-" + n1];
  9106. }
  9107. };
  9108. ;
  9109. Graph2.prototype.eachNode = function(cb, context) {
  9110. var nodes = this.nodes;
  9111. var len2 = nodes.length;
  9112. for (var i = 0; i < len2; i++) {
  9113. if (nodes[i].dataIndex >= 0) {
  9114. cb.call(context, nodes[i], i);
  9115. }
  9116. }
  9117. };
  9118. ;
  9119. Graph2.prototype.eachEdge = function(cb, context) {
  9120. var edges = this.edges;
  9121. var len2 = edges.length;
  9122. for (var i = 0; i < len2; i++) {
  9123. if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {
  9124. cb.call(context, edges[i], i);
  9125. }
  9126. }
  9127. };
  9128. ;
  9129. Graph2.prototype.breadthFirstTraverse = function(cb, startNode, direction, context) {
  9130. if (!(startNode instanceof GraphNode)) {
  9131. startNode = this._nodesMap[generateNodeKey(startNode)];
  9132. }
  9133. if (!startNode) {
  9134. return;
  9135. }
  9136. var edgeType = direction === "out" ? "outEdges" : direction === "in" ? "inEdges" : "edges";
  9137. for (var i = 0; i < this.nodes.length; i++) {
  9138. this.nodes[i].__visited = false;
  9139. }
  9140. if (cb.call(context, startNode, null)) {
  9141. return;
  9142. }
  9143. var queue = [startNode];
  9144. while (queue.length) {
  9145. var currentNode = queue.shift();
  9146. var edges = currentNode[edgeType];
  9147. for (var i = 0; i < edges.length; i++) {
  9148. var e = edges[i];
  9149. var otherNode = e.node1 === currentNode ? e.node2 : e.node1;
  9150. if (!otherNode.__visited) {
  9151. if (cb.call(context, otherNode, currentNode)) {
  9152. return;
  9153. }
  9154. queue.push(otherNode);
  9155. otherNode.__visited = true;
  9156. }
  9157. }
  9158. }
  9159. };
  9160. ;
  9161. Graph2.prototype.update = function() {
  9162. var data = this.data;
  9163. var edgeData = this.edgeData;
  9164. var nodes = this.nodes;
  9165. var edges = this.edges;
  9166. for (var i = 0, len2 = nodes.length; i < len2; i++) {
  9167. nodes[i].dataIndex = -1;
  9168. }
  9169. for (var i = 0, len2 = data.count(); i < len2; i++) {
  9170. nodes[data.getRawIndex(i)].dataIndex = i;
  9171. }
  9172. edgeData.filterSelf(function(idx) {
  9173. var edge = edges[edgeData.getRawIndex(idx)];
  9174. return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;
  9175. });
  9176. for (var i = 0, len2 = edges.length; i < len2; i++) {
  9177. edges[i].dataIndex = -1;
  9178. }
  9179. for (var i = 0, len2 = edgeData.count(); i < len2; i++) {
  9180. edges[edgeData.getRawIndex(i)].dataIndex = i;
  9181. }
  9182. };
  9183. ;
  9184. Graph2.prototype.clone = function() {
  9185. var graph = new Graph2(this._directed);
  9186. var nodes = this.nodes;
  9187. var edges = this.edges;
  9188. for (var i = 0; i < nodes.length; i++) {
  9189. graph.addNode(nodes[i].id, nodes[i].dataIndex);
  9190. }
  9191. for (var i = 0; i < edges.length; i++) {
  9192. var e = edges[i];
  9193. graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);
  9194. }
  9195. return graph;
  9196. };
  9197. ;
  9198. return Graph2;
  9199. }();
  9200. var GraphNode = function() {
  9201. function GraphNode2(id, dataIndex) {
  9202. this.inEdges = [];
  9203. this.outEdges = [];
  9204. this.edges = [];
  9205. this.dataIndex = -1;
  9206. this.id = id == null ? "" : id;
  9207. this.dataIndex = dataIndex == null ? -1 : dataIndex;
  9208. }
  9209. GraphNode2.prototype.degree = function() {
  9210. return this.edges.length;
  9211. };
  9212. GraphNode2.prototype.inDegree = function() {
  9213. return this.inEdges.length;
  9214. };
  9215. GraphNode2.prototype.outDegree = function() {
  9216. return this.outEdges.length;
  9217. };
  9218. GraphNode2.prototype.getModel = function(path) {
  9219. if (this.dataIndex < 0) {
  9220. return;
  9221. }
  9222. var graph = this.hostGraph;
  9223. var itemModel = graph.data.getItemModel(this.dataIndex);
  9224. return itemModel.getModel(path);
  9225. };
  9226. GraphNode2.prototype.getAdjacentDataIndices = function() {
  9227. var dataIndices = {
  9228. edge: [],
  9229. node: []
  9230. };
  9231. for (var i = 0; i < this.edges.length; i++) {
  9232. var adjacentEdge = this.edges[i];
  9233. if (adjacentEdge.dataIndex < 0) {
  9234. continue;
  9235. }
  9236. dataIndices.edge.push(adjacentEdge.dataIndex);
  9237. dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex);
  9238. }
  9239. return dataIndices;
  9240. };
  9241. return GraphNode2;
  9242. }();
  9243. var GraphEdge = function() {
  9244. function GraphEdge2(n1, n2, dataIndex) {
  9245. this.dataIndex = -1;
  9246. this.node1 = n1;
  9247. this.node2 = n2;
  9248. this.dataIndex = dataIndex == null ? -1 : dataIndex;
  9249. }
  9250. GraphEdge2.prototype.getModel = function(path) {
  9251. if (this.dataIndex < 0) {
  9252. return;
  9253. }
  9254. var graph = this.hostGraph;
  9255. var itemModel = graph.edgeData.getItemModel(this.dataIndex);
  9256. return itemModel.getModel(path);
  9257. };
  9258. GraphEdge2.prototype.getAdjacentDataIndices = function() {
  9259. return {
  9260. edge: [this.dataIndex],
  9261. node: [this.node1.dataIndex, this.node2.dataIndex]
  9262. };
  9263. };
  9264. return GraphEdge2;
  9265. }();
  9266. function createGraphDataProxyMixin(hostName, dataName) {
  9267. return {
  9268. getValue: function(dimension) {
  9269. var data = this[hostName][dataName];
  9270. return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex);
  9271. },
  9272. setVisual: function(key, value) {
  9273. this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);
  9274. },
  9275. getVisual: function(key) {
  9276. return this[hostName][dataName].getItemVisual(this.dataIndex, key);
  9277. },
  9278. setLayout: function(layout2, merge) {
  9279. this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout2, merge);
  9280. },
  9281. getLayout: function() {
  9282. return this[hostName][dataName].getItemLayout(this.dataIndex);
  9283. },
  9284. getGraphicEl: function() {
  9285. return this[hostName][dataName].getItemGraphicEl(this.dataIndex);
  9286. },
  9287. getRawIndex: function() {
  9288. return this[hostName][dataName].getRawIndex(this.dataIndex);
  9289. }
  9290. };
  9291. }
  9292. mixin(GraphNode, createGraphDataProxyMixin("hostGraph", "data"));
  9293. mixin(GraphEdge, createGraphDataProxyMixin("hostGraph", "edgeData"));
  9294. var Graph_default = Graph;
  9295. // node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js
  9296. function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) {
  9297. var graph = new Graph_default(directed);
  9298. for (var i = 0; i < nodes.length; i++) {
  9299. graph.addNode(retrieve(
  9300. nodes[i].id,
  9301. nodes[i].name,
  9302. i
  9303. ), i);
  9304. }
  9305. var linkNameList = [];
  9306. var validEdges = [];
  9307. var linkCount = 0;
  9308. for (var i = 0; i < edges.length; i++) {
  9309. var link = edges[i];
  9310. var source = link.source;
  9311. var target = link.target;
  9312. if (graph.addEdge(source, target, linkCount)) {
  9313. validEdges.push(link);
  9314. linkNameList.push(retrieve(convertOptionIdName(link.id, null), source + " > " + target));
  9315. linkCount++;
  9316. }
  9317. }
  9318. var coordSys = seriesModel.get("coordinateSystem");
  9319. var nodeData;
  9320. if (coordSys === "cartesian2d" || coordSys === "polar") {
  9321. nodeData = createSeriesData_default(nodes, seriesModel);
  9322. } else {
  9323. var coordSysCtor = CoordinateSystem_default.get(coordSys);
  9324. var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : [];
  9325. if (indexOf(coordDimensions, "value") < 0) {
  9326. coordDimensions.concat(["value"]);
  9327. }
  9328. var dimensions = prepareSeriesDataSchema(nodes, {
  9329. coordDimensions,
  9330. encodeDefine: seriesModel.getEncode()
  9331. }).dimensions;
  9332. nodeData = new SeriesData_default(dimensions, seriesModel);
  9333. nodeData.initData(nodes);
  9334. }
  9335. var edgeData = new SeriesData_default(["value"], seriesModel);
  9336. edgeData.initData(validEdges, linkNameList);
  9337. beforeLink && beforeLink(nodeData, edgeData);
  9338. linkSeriesData_default({
  9339. mainData: nodeData,
  9340. struct: graph,
  9341. structAttr: "graph",
  9342. datas: {
  9343. node: nodeData,
  9344. edge: edgeData
  9345. },
  9346. datasAttr: {
  9347. node: "data",
  9348. edge: "edgeData"
  9349. }
  9350. });
  9351. graph.update();
  9352. return graph;
  9353. }
  9354. // node_modules/echarts/lib/chart/graph/GraphSeries.js
  9355. var GraphSeriesModel = function(_super) {
  9356. __extends(GraphSeriesModel2, _super);
  9357. function GraphSeriesModel2() {
  9358. var _this = _super !== null && _super.apply(this, arguments) || this;
  9359. _this.type = GraphSeriesModel2.type;
  9360. _this.hasSymbolVisual = true;
  9361. return _this;
  9362. }
  9363. GraphSeriesModel2.prototype.init = function(option) {
  9364. _super.prototype.init.apply(this, arguments);
  9365. var self = this;
  9366. function getCategoriesData() {
  9367. return self._categoriesData;
  9368. }
  9369. this.legendVisualProvider = new LegendVisualProvider_default(getCategoriesData, getCategoriesData);
  9370. this.fillDataTextStyle(option.edges || option.links);
  9371. this._updateCategoriesData();
  9372. };
  9373. GraphSeriesModel2.prototype.mergeOption = function(option) {
  9374. _super.prototype.mergeOption.apply(this, arguments);
  9375. this.fillDataTextStyle(option.edges || option.links);
  9376. this._updateCategoriesData();
  9377. };
  9378. GraphSeriesModel2.prototype.mergeDefaultAndTheme = function(option) {
  9379. _super.prototype.mergeDefaultAndTheme.apply(this, arguments);
  9380. defaultEmphasis(option, "edgeLabel", ["show"]);
  9381. };
  9382. GraphSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  9383. var edges = option.edges || option.links || [];
  9384. var nodes = option.data || option.nodes || [];
  9385. var self = this;
  9386. if (nodes && edges) {
  9387. initCurvenessList(this);
  9388. var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);
  9389. each(graph.edges, function(edge) {
  9390. createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);
  9391. }, this);
  9392. return graph.data;
  9393. }
  9394. function beforeLink(nodeData, edgeData) {
  9395. nodeData.wrapMethod("getItemModel", function(model) {
  9396. var categoriesModels = self._categoriesModels;
  9397. var categoryIdx = model.getShallow("category");
  9398. var categoryModel = categoriesModels[categoryIdx];
  9399. if (categoryModel) {
  9400. categoryModel.parentModel = model.parentModel;
  9401. model.parentModel = categoryModel;
  9402. }
  9403. return model;
  9404. });
  9405. var oldGetModel = Model_default.prototype.getModel;
  9406. function newGetModel(path, parentModel) {
  9407. var model = oldGetModel.call(this, path, parentModel);
  9408. model.resolveParentPath = resolveParentPath;
  9409. return model;
  9410. }
  9411. edgeData.wrapMethod("getItemModel", function(model) {
  9412. model.resolveParentPath = resolveParentPath;
  9413. model.getModel = newGetModel;
  9414. return model;
  9415. });
  9416. function resolveParentPath(pathArr) {
  9417. if (pathArr && (pathArr[0] === "label" || pathArr[1] === "label")) {
  9418. var newPathArr = pathArr.slice();
  9419. if (pathArr[0] === "label") {
  9420. newPathArr[0] = "edgeLabel";
  9421. } else if (pathArr[1] === "label") {
  9422. newPathArr[1] = "edgeLabel";
  9423. }
  9424. return newPathArr;
  9425. }
  9426. return pathArr;
  9427. }
  9428. }
  9429. };
  9430. GraphSeriesModel2.prototype.getGraph = function() {
  9431. return this.getData().graph;
  9432. };
  9433. GraphSeriesModel2.prototype.getEdgeData = function() {
  9434. return this.getGraph().edgeData;
  9435. };
  9436. GraphSeriesModel2.prototype.getCategoriesData = function() {
  9437. return this._categoriesData;
  9438. };
  9439. GraphSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
  9440. if (dataType === "edge") {
  9441. var nodeData = this.getData();
  9442. var params = this.getDataParams(dataIndex, dataType);
  9443. var edge = nodeData.graph.getEdgeByIndex(dataIndex);
  9444. var sourceName = nodeData.getName(edge.node1.dataIndex);
  9445. var targetName = nodeData.getName(edge.node2.dataIndex);
  9446. var nameArr = [];
  9447. sourceName != null && nameArr.push(sourceName);
  9448. targetName != null && nameArr.push(targetName);
  9449. return createTooltipMarkup("nameValue", {
  9450. name: nameArr.join(" > "),
  9451. value: params.value,
  9452. noValue: params.value == null
  9453. });
  9454. }
  9455. var nodeMarkup = defaultSeriesFormatTooltip({
  9456. series: this,
  9457. dataIndex,
  9458. multipleSeries
  9459. });
  9460. return nodeMarkup;
  9461. };
  9462. GraphSeriesModel2.prototype._updateCategoriesData = function() {
  9463. var categories = map(this.option.categories || [], function(category) {
  9464. return category.value != null ? category : extend({
  9465. value: 0
  9466. }, category);
  9467. });
  9468. var categoriesData = new SeriesData_default(["value"], this);
  9469. categoriesData.initData(categories);
  9470. this._categoriesData = categoriesData;
  9471. this._categoriesModels = categoriesData.mapArray(function(idx) {
  9472. return categoriesData.getItemModel(idx);
  9473. });
  9474. };
  9475. GraphSeriesModel2.prototype.setZoom = function(zoom) {
  9476. this.option.zoom = zoom;
  9477. };
  9478. GraphSeriesModel2.prototype.setCenter = function(center2) {
  9479. this.option.center = center2;
  9480. };
  9481. GraphSeriesModel2.prototype.isAnimationEnabled = function() {
  9482. return _super.prototype.isAnimationEnabled.call(this) && !(this.get("layout") === "force" && this.get(["force", "layoutAnimation"]));
  9483. };
  9484. GraphSeriesModel2.type = "series.graph";
  9485. GraphSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"];
  9486. GraphSeriesModel2.defaultOption = {
  9487. z: 2,
  9488. coordinateSystem: "view",
  9489. legendHoverLink: true,
  9490. layout: null,
  9491. circular: {
  9492. rotateLabel: false
  9493. },
  9494. force: {
  9495. initLayout: null,
  9496. repulsion: [0, 50],
  9497. gravity: 0.1,
  9498. friction: 0.6,
  9499. edgeLength: 30,
  9500. layoutAnimation: true
  9501. },
  9502. left: "center",
  9503. top: "center",
  9504. symbol: "circle",
  9505. symbolSize: 10,
  9506. edgeSymbol: ["none", "none"],
  9507. edgeSymbolSize: 10,
  9508. edgeLabel: {
  9509. position: "middle",
  9510. distance: 5
  9511. },
  9512. draggable: false,
  9513. roam: false,
  9514. center: null,
  9515. zoom: 1,
  9516. nodeScaleRatio: 0.6,
  9517. label: {
  9518. show: false,
  9519. formatter: "{b}"
  9520. },
  9521. itemStyle: {},
  9522. lineStyle: {
  9523. color: "#aaa",
  9524. width: 1,
  9525. opacity: 0.5
  9526. },
  9527. emphasis: {
  9528. scale: true,
  9529. label: {
  9530. show: true
  9531. }
  9532. },
  9533. select: {
  9534. itemStyle: {
  9535. borderColor: "#212121"
  9536. }
  9537. }
  9538. };
  9539. return GraphSeriesModel2;
  9540. }(Series_default);
  9541. var GraphSeries_default = GraphSeriesModel;
  9542. // node_modules/echarts/lib/chart/graph/install.js
  9543. var actionInfo = {
  9544. type: "graphRoam",
  9545. event: "graphRoam",
  9546. update: "none"
  9547. };
  9548. function install13(registers) {
  9549. registers.registerChartView(GraphView_default);
  9550. registers.registerSeriesModel(GraphSeries_default);
  9551. registers.registerProcessor(categoryFilter);
  9552. registers.registerVisual(categoryVisual);
  9553. registers.registerVisual(graphEdgeVisual);
  9554. registers.registerLayout(graphSimpleLayout);
  9555. registers.registerLayout(registers.PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout);
  9556. registers.registerLayout(graphForceLayout);
  9557. registers.registerCoordinateSystem("graphView", {
  9558. dimensions: View_default.dimensions,
  9559. create: createViewCoordSys
  9560. });
  9561. registers.registerAction({
  9562. type: "focusNodeAdjacency",
  9563. event: "focusNodeAdjacency",
  9564. update: "series:focusNodeAdjacency"
  9565. }, noop);
  9566. registers.registerAction({
  9567. type: "unfocusNodeAdjacency",
  9568. event: "unfocusNodeAdjacency",
  9569. update: "series:unfocusNodeAdjacency"
  9570. }, noop);
  9571. registers.registerAction(actionInfo, function(payload, ecModel, api) {
  9572. ecModel.eachComponent({
  9573. mainType: "series",
  9574. query: payload
  9575. }, function(seriesModel) {
  9576. var coordSys = seriesModel.coordinateSystem;
  9577. var res = updateCenterAndZoom(coordSys, payload, void 0, api);
  9578. seriesModel.setCenter && seriesModel.setCenter(res.center);
  9579. seriesModel.setZoom && seriesModel.setZoom(res.zoom);
  9580. });
  9581. });
  9582. }
  9583. // node_modules/echarts/lib/chart/gauge/install.js
  9584. init_define_APP_INFO();
  9585. // node_modules/echarts/lib/chart/gauge/GaugeView.js
  9586. init_define_APP_INFO();
  9587. // node_modules/echarts/lib/chart/gauge/PointerPath.js
  9588. init_define_APP_INFO();
  9589. var PointerShape = function() {
  9590. function PointerShape2() {
  9591. this.angle = 0;
  9592. this.width = 10;
  9593. this.r = 10;
  9594. this.x = 0;
  9595. this.y = 0;
  9596. }
  9597. return PointerShape2;
  9598. }();
  9599. var PointerPath = function(_super) {
  9600. __extends(PointerPath2, _super);
  9601. function PointerPath2(opts) {
  9602. var _this = _super.call(this, opts) || this;
  9603. _this.type = "pointer";
  9604. return _this;
  9605. }
  9606. PointerPath2.prototype.getDefaultShape = function() {
  9607. return new PointerShape();
  9608. };
  9609. PointerPath2.prototype.buildPath = function(ctx, shape) {
  9610. var mathCos = Math.cos;
  9611. var mathSin = Math.sin;
  9612. var r = shape.r;
  9613. var width = shape.width;
  9614. var angle = shape.angle;
  9615. var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2);
  9616. var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2);
  9617. angle = shape.angle - Math.PI / 2;
  9618. ctx.moveTo(x, y);
  9619. ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width);
  9620. ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r);
  9621. ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width);
  9622. ctx.lineTo(x, y);
  9623. };
  9624. return PointerPath2;
  9625. }(Path_default);
  9626. var PointerPath_default = PointerPath;
  9627. // node_modules/echarts/lib/chart/gauge/GaugeView.js
  9628. function parsePosition(seriesModel, api) {
  9629. var center2 = seriesModel.get("center");
  9630. var width = api.getWidth();
  9631. var height = api.getHeight();
  9632. var size = Math.min(width, height);
  9633. var cx = parsePercent2(center2[0], api.getWidth());
  9634. var cy = parsePercent2(center2[1], api.getHeight());
  9635. var r = parsePercent2(seriesModel.get("radius"), size / 2);
  9636. return {
  9637. cx,
  9638. cy,
  9639. r
  9640. };
  9641. }
  9642. function formatLabel(value, labelFormatter) {
  9643. var label = value == null ? "" : value + "";
  9644. if (labelFormatter) {
  9645. if (isString(labelFormatter)) {
  9646. label = labelFormatter.replace("{value}", label);
  9647. } else if (isFunction(labelFormatter)) {
  9648. label = labelFormatter(value);
  9649. }
  9650. }
  9651. return label;
  9652. }
  9653. var GaugeView = function(_super) {
  9654. __extends(GaugeView2, _super);
  9655. function GaugeView2() {
  9656. var _this = _super !== null && _super.apply(this, arguments) || this;
  9657. _this.type = GaugeView2.type;
  9658. return _this;
  9659. }
  9660. GaugeView2.prototype.render = function(seriesModel, ecModel, api) {
  9661. this.group.removeAll();
  9662. var colorList = seriesModel.get(["axisLine", "lineStyle", "color"]);
  9663. var posInfo = parsePosition(seriesModel, api);
  9664. this._renderMain(seriesModel, ecModel, api, colorList, posInfo);
  9665. this._data = seriesModel.getData();
  9666. };
  9667. GaugeView2.prototype.dispose = function() {
  9668. };
  9669. GaugeView2.prototype._renderMain = function(seriesModel, ecModel, api, colorList, posInfo) {
  9670. var group = this.group;
  9671. var clockwise = seriesModel.get("clockwise");
  9672. var startAngle = -seriesModel.get("startAngle") / 180 * Math.PI;
  9673. var endAngle = -seriesModel.get("endAngle") / 180 * Math.PI;
  9674. var axisLineModel = seriesModel.getModel("axisLine");
  9675. var roundCap = axisLineModel.get("roundCap");
  9676. var MainPath = roundCap ? sausage_default : Sector_default;
  9677. var showAxis = axisLineModel.get("show");
  9678. var lineStyleModel = axisLineModel.getModel("lineStyle");
  9679. var axisLineWidth = lineStyleModel.get("width");
  9680. var angles = [startAngle, endAngle];
  9681. normalizeArcAngles(angles, !clockwise);
  9682. startAngle = angles[0];
  9683. endAngle = angles[1];
  9684. var angleRangeSpan = endAngle - startAngle;
  9685. var prevEndAngle = startAngle;
  9686. for (var i = 0; showAxis && i < colorList.length; i++) {
  9687. var percent = Math.min(Math.max(colorList[i][0], 0), 1);
  9688. endAngle = startAngle + angleRangeSpan * percent;
  9689. var sector = new MainPath({
  9690. shape: {
  9691. startAngle: prevEndAngle,
  9692. endAngle,
  9693. cx: posInfo.cx,
  9694. cy: posInfo.cy,
  9695. clockwise,
  9696. r0: posInfo.r - axisLineWidth,
  9697. r: posInfo.r
  9698. },
  9699. silent: true
  9700. });
  9701. sector.setStyle({
  9702. fill: colorList[i][1]
  9703. });
  9704. sector.setStyle(lineStyleModel.getLineStyle(
  9705. ["color", "width"]
  9706. ));
  9707. group.add(sector);
  9708. prevEndAngle = endAngle;
  9709. }
  9710. var getColor = function(percent2) {
  9711. if (percent2 <= 0) {
  9712. return colorList[0][1];
  9713. }
  9714. var i2;
  9715. for (i2 = 0; i2 < colorList.length; i2++) {
  9716. if (colorList[i2][0] >= percent2 && (i2 === 0 ? 0 : colorList[i2 - 1][0]) < percent2) {
  9717. return colorList[i2][1];
  9718. }
  9719. }
  9720. return colorList[i2 - 1][1];
  9721. };
  9722. this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);
  9723. this._renderTitleAndDetail(seriesModel, ecModel, api, getColor, posInfo);
  9724. this._renderAnchor(seriesModel, posInfo);
  9725. this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);
  9726. };
  9727. GaugeView2.prototype._renderTicks = function(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {
  9728. var group = this.group;
  9729. var cx = posInfo.cx;
  9730. var cy = posInfo.cy;
  9731. var r = posInfo.r;
  9732. var minVal = +seriesModel.get("min");
  9733. var maxVal = +seriesModel.get("max");
  9734. var splitLineModel = seriesModel.getModel("splitLine");
  9735. var tickModel = seriesModel.getModel("axisTick");
  9736. var labelModel = seriesModel.getModel("axisLabel");
  9737. var splitNumber = seriesModel.get("splitNumber");
  9738. var subSplitNumber = tickModel.get("splitNumber");
  9739. var splitLineLen = parsePercent2(splitLineModel.get("length"), r);
  9740. var tickLen = parsePercent2(tickModel.get("length"), r);
  9741. var angle = startAngle;
  9742. var step = (endAngle - startAngle) / splitNumber;
  9743. var subStep = step / subSplitNumber;
  9744. var splitLineStyle = splitLineModel.getModel("lineStyle").getLineStyle();
  9745. var tickLineStyle = tickModel.getModel("lineStyle").getLineStyle();
  9746. var splitLineDistance = splitLineModel.get("distance");
  9747. var unitX;
  9748. var unitY;
  9749. for (var i = 0; i <= splitNumber; i++) {
  9750. unitX = Math.cos(angle);
  9751. unitY = Math.sin(angle);
  9752. if (splitLineModel.get("show")) {
  9753. var distance = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth;
  9754. var splitLine = new Line_default({
  9755. shape: {
  9756. x1: unitX * (r - distance) + cx,
  9757. y1: unitY * (r - distance) + cy,
  9758. x2: unitX * (r - splitLineLen - distance) + cx,
  9759. y2: unitY * (r - splitLineLen - distance) + cy
  9760. },
  9761. style: splitLineStyle,
  9762. silent: true
  9763. });
  9764. if (splitLineStyle.stroke === "auto") {
  9765. splitLine.setStyle({
  9766. stroke: getColor(i / splitNumber)
  9767. });
  9768. }
  9769. group.add(splitLine);
  9770. }
  9771. if (labelModel.get("show")) {
  9772. var distance = labelModel.get("distance") + splitLineDistance;
  9773. var label = formatLabel(round(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get("formatter"));
  9774. var autoColor = getColor(i / splitNumber);
  9775. group.add(new Text_default({
  9776. style: createTextStyle(labelModel, {
  9777. text: label,
  9778. x: unitX * (r - splitLineLen - distance) + cx,
  9779. y: unitY * (r - splitLineLen - distance) + cy,
  9780. verticalAlign: unitY < -0.8 ? "top" : unitY > 0.8 ? "bottom" : "middle",
  9781. align: unitX < -0.4 ? "left" : unitX > 0.4 ? "right" : "center"
  9782. }, {
  9783. inheritColor: autoColor
  9784. }),
  9785. silent: true
  9786. }));
  9787. }
  9788. if (tickModel.get("show") && i !== splitNumber) {
  9789. var distance = tickModel.get("distance");
  9790. distance = distance ? distance + axisLineWidth : axisLineWidth;
  9791. for (var j = 0; j <= subSplitNumber; j++) {
  9792. unitX = Math.cos(angle);
  9793. unitY = Math.sin(angle);
  9794. var tickLine = new Line_default({
  9795. shape: {
  9796. x1: unitX * (r - distance) + cx,
  9797. y1: unitY * (r - distance) + cy,
  9798. x2: unitX * (r - tickLen - distance) + cx,
  9799. y2: unitY * (r - tickLen - distance) + cy
  9800. },
  9801. silent: true,
  9802. style: tickLineStyle
  9803. });
  9804. if (tickLineStyle.stroke === "auto") {
  9805. tickLine.setStyle({
  9806. stroke: getColor((i + j / subSplitNumber) / splitNumber)
  9807. });
  9808. }
  9809. group.add(tickLine);
  9810. angle += subStep;
  9811. }
  9812. angle -= subStep;
  9813. } else {
  9814. angle += step;
  9815. }
  9816. }
  9817. };
  9818. GaugeView2.prototype._renderPointer = function(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {
  9819. var group = this.group;
  9820. var oldData = this._data;
  9821. var oldProgressData = this._progressEls;
  9822. var progressList = [];
  9823. var showPointer = seriesModel.get(["pointer", "show"]);
  9824. var progressModel = seriesModel.getModel("progress");
  9825. var showProgress = progressModel.get("show");
  9826. var data = seriesModel.getData();
  9827. var valueDim = data.mapDimension("value");
  9828. var minVal = +seriesModel.get("min");
  9829. var maxVal = +seriesModel.get("max");
  9830. var valueExtent = [minVal, maxVal];
  9831. var angleExtent = [startAngle, endAngle];
  9832. function createPointer(idx, angle) {
  9833. var itemModel = data.getItemModel(idx);
  9834. var pointerModel = itemModel.getModel("pointer");
  9835. var pointerWidth = parsePercent2(pointerModel.get("width"), posInfo.r);
  9836. var pointerLength = parsePercent2(pointerModel.get("length"), posInfo.r);
  9837. var pointerStr = seriesModel.get(["pointer", "icon"]);
  9838. var pointerOffset = pointerModel.get("offsetCenter");
  9839. var pointerOffsetX = parsePercent2(pointerOffset[0], posInfo.r);
  9840. var pointerOffsetY = parsePercent2(pointerOffset[1], posInfo.r);
  9841. var pointerKeepAspect = pointerModel.get("keepAspect");
  9842. var pointer;
  9843. if (pointerStr) {
  9844. pointer = createSymbol(pointerStr, pointerOffsetX - pointerWidth / 2, pointerOffsetY - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect);
  9845. } else {
  9846. pointer = new PointerPath_default({
  9847. shape: {
  9848. angle: -Math.PI / 2,
  9849. width: pointerWidth,
  9850. r: pointerLength,
  9851. x: pointerOffsetX,
  9852. y: pointerOffsetY
  9853. }
  9854. });
  9855. }
  9856. pointer.rotation = -(angle + Math.PI / 2);
  9857. pointer.x = posInfo.cx;
  9858. pointer.y = posInfo.cy;
  9859. return pointer;
  9860. }
  9861. function createProgress(idx, endAngle2) {
  9862. var roundCap = progressModel.get("roundCap");
  9863. var ProgressPath = roundCap ? sausage_default : Sector_default;
  9864. var isOverlap = progressModel.get("overlap");
  9865. var progressWidth = isOverlap ? progressModel.get("width") : axisLineWidth / data.count();
  9866. var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth;
  9867. var r = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth;
  9868. var progress = new ProgressPath({
  9869. shape: {
  9870. startAngle,
  9871. endAngle: endAngle2,
  9872. cx: posInfo.cx,
  9873. cy: posInfo.cy,
  9874. clockwise,
  9875. r0,
  9876. r
  9877. }
  9878. });
  9879. isOverlap && (progress.z2 = maxVal - data.get(valueDim, idx) % maxVal);
  9880. return progress;
  9881. }
  9882. if (showProgress || showPointer) {
  9883. data.diff(oldData).add(function(idx) {
  9884. var val = data.get(valueDim, idx);
  9885. if (showPointer) {
  9886. var pointer = createPointer(idx, startAngle);
  9887. initProps(pointer, {
  9888. rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2)
  9889. }, seriesModel);
  9890. group.add(pointer);
  9891. data.setItemGraphicEl(idx, pointer);
  9892. }
  9893. if (showProgress) {
  9894. var progress = createProgress(idx, startAngle);
  9895. var isClip = progressModel.get("clip");
  9896. initProps(progress, {
  9897. shape: {
  9898. endAngle: linearMap(val, valueExtent, angleExtent, isClip)
  9899. }
  9900. }, seriesModel);
  9901. group.add(progress);
  9902. setCommonECData(seriesModel.seriesIndex, data.dataType, idx, progress);
  9903. progressList[idx] = progress;
  9904. }
  9905. }).update(function(newIdx, oldIdx) {
  9906. var val = data.get(valueDim, newIdx);
  9907. if (showPointer) {
  9908. var previousPointer = oldData.getItemGraphicEl(oldIdx);
  9909. var previousRotate = previousPointer ? previousPointer.rotation : startAngle;
  9910. var pointer = createPointer(newIdx, previousRotate);
  9911. pointer.rotation = previousRotate;
  9912. updateProps(pointer, {
  9913. rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2)
  9914. }, seriesModel);
  9915. group.add(pointer);
  9916. data.setItemGraphicEl(newIdx, pointer);
  9917. }
  9918. if (showProgress) {
  9919. var previousProgress = oldProgressData[oldIdx];
  9920. var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle;
  9921. var progress = createProgress(newIdx, previousEndAngle);
  9922. var isClip = progressModel.get("clip");
  9923. updateProps(progress, {
  9924. shape: {
  9925. endAngle: linearMap(val, valueExtent, angleExtent, isClip)
  9926. }
  9927. }, seriesModel);
  9928. group.add(progress);
  9929. setCommonECData(seriesModel.seriesIndex, data.dataType, newIdx, progress);
  9930. progressList[newIdx] = progress;
  9931. }
  9932. }).execute();
  9933. data.each(function(idx) {
  9934. var itemModel = data.getItemModel(idx);
  9935. var emphasisModel = itemModel.getModel("emphasis");
  9936. var focus = emphasisModel.get("focus");
  9937. var blurScope = emphasisModel.get("blurScope");
  9938. var emphasisDisabled = emphasisModel.get("disabled");
  9939. if (showPointer) {
  9940. var pointer = data.getItemGraphicEl(idx);
  9941. var symbolStyle = data.getItemVisual(idx, "style");
  9942. var visualColor = symbolStyle.fill;
  9943. if (pointer instanceof Image_default) {
  9944. var pathStyle = pointer.style;
  9945. pointer.useStyle(extend({
  9946. image: pathStyle.image,
  9947. x: pathStyle.x,
  9948. y: pathStyle.y,
  9949. width: pathStyle.width,
  9950. height: pathStyle.height
  9951. }, symbolStyle));
  9952. } else {
  9953. pointer.useStyle(symbolStyle);
  9954. pointer.type !== "pointer" && pointer.setColor(visualColor);
  9955. }
  9956. pointer.setStyle(itemModel.getModel(["pointer", "itemStyle"]).getItemStyle());
  9957. if (pointer.style.fill === "auto") {
  9958. pointer.setStyle("fill", getColor(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true)));
  9959. }
  9960. pointer.z2EmphasisLift = 0;
  9961. setStatesStylesFromModel(pointer, itemModel);
  9962. toggleHoverEmphasis(pointer, focus, blurScope, emphasisDisabled);
  9963. }
  9964. if (showProgress) {
  9965. var progress = progressList[idx];
  9966. progress.useStyle(data.getItemVisual(idx, "style"));
  9967. progress.setStyle(itemModel.getModel(["progress", "itemStyle"]).getItemStyle());
  9968. progress.z2EmphasisLift = 0;
  9969. setStatesStylesFromModel(progress, itemModel);
  9970. toggleHoverEmphasis(progress, focus, blurScope, emphasisDisabled);
  9971. }
  9972. });
  9973. this._progressEls = progressList;
  9974. }
  9975. };
  9976. GaugeView2.prototype._renderAnchor = function(seriesModel, posInfo) {
  9977. var anchorModel = seriesModel.getModel("anchor");
  9978. var showAnchor = anchorModel.get("show");
  9979. if (showAnchor) {
  9980. var anchorSize = anchorModel.get("size");
  9981. var anchorType = anchorModel.get("icon");
  9982. var offsetCenter = anchorModel.get("offsetCenter");
  9983. var anchorKeepAspect = anchorModel.get("keepAspect");
  9984. var anchor = createSymbol(anchorType, posInfo.cx - anchorSize / 2 + parsePercent2(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent2(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect);
  9985. anchor.z2 = anchorModel.get("showAbove") ? 1 : 0;
  9986. anchor.setStyle(anchorModel.getModel("itemStyle").getItemStyle());
  9987. this.group.add(anchor);
  9988. }
  9989. };
  9990. GaugeView2.prototype._renderTitleAndDetail = function(seriesModel, ecModel, api, getColor, posInfo) {
  9991. var _this = this;
  9992. var data = seriesModel.getData();
  9993. var valueDim = data.mapDimension("value");
  9994. var minVal = +seriesModel.get("min");
  9995. var maxVal = +seriesModel.get("max");
  9996. var contentGroup = new Group_default();
  9997. var newTitleEls = [];
  9998. var newDetailEls = [];
  9999. var hasAnimation = seriesModel.isAnimationEnabled();
  10000. var showPointerAbove = seriesModel.get(["pointer", "showAbove"]);
  10001. data.diff(this._data).add(function(idx) {
  10002. newTitleEls[idx] = new Text_default({
  10003. silent: true
  10004. });
  10005. newDetailEls[idx] = new Text_default({
  10006. silent: true
  10007. });
  10008. }).update(function(idx, oldIdx) {
  10009. newTitleEls[idx] = _this._titleEls[oldIdx];
  10010. newDetailEls[idx] = _this._detailEls[oldIdx];
  10011. }).execute();
  10012. data.each(function(idx) {
  10013. var itemModel = data.getItemModel(idx);
  10014. var value = data.get(valueDim, idx);
  10015. var itemGroup = new Group_default();
  10016. var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));
  10017. var itemTitleModel = itemModel.getModel("title");
  10018. if (itemTitleModel.get("show")) {
  10019. var titleOffsetCenter = itemTitleModel.get("offsetCenter");
  10020. var titleX = posInfo.cx + parsePercent2(titleOffsetCenter[0], posInfo.r);
  10021. var titleY = posInfo.cy + parsePercent2(titleOffsetCenter[1], posInfo.r);
  10022. var labelEl = newTitleEls[idx];
  10023. labelEl.attr({
  10024. z2: showPointerAbove ? 0 : 2,
  10025. style: createTextStyle(itemTitleModel, {
  10026. x: titleX,
  10027. y: titleY,
  10028. text: data.getName(idx),
  10029. align: "center",
  10030. verticalAlign: "middle"
  10031. }, {
  10032. inheritColor: autoColor
  10033. })
  10034. });
  10035. itemGroup.add(labelEl);
  10036. }
  10037. var itemDetailModel = itemModel.getModel("detail");
  10038. if (itemDetailModel.get("show")) {
  10039. var detailOffsetCenter = itemDetailModel.get("offsetCenter");
  10040. var detailX = posInfo.cx + parsePercent2(detailOffsetCenter[0], posInfo.r);
  10041. var detailY = posInfo.cy + parsePercent2(detailOffsetCenter[1], posInfo.r);
  10042. var width = parsePercent2(itemDetailModel.get("width"), posInfo.r);
  10043. var height = parsePercent2(itemDetailModel.get("height"), posInfo.r);
  10044. var detailColor = seriesModel.get(["progress", "show"]) ? data.getItemVisual(idx, "style").fill : autoColor;
  10045. var labelEl = newDetailEls[idx];
  10046. var formatter_1 = itemDetailModel.get("formatter");
  10047. labelEl.attr({
  10048. z2: showPointerAbove ? 0 : 2,
  10049. style: createTextStyle(itemDetailModel, {
  10050. x: detailX,
  10051. y: detailY,
  10052. text: formatLabel(value, formatter_1),
  10053. width: isNaN(width) ? null : width,
  10054. height: isNaN(height) ? null : height,
  10055. align: "center",
  10056. verticalAlign: "middle"
  10057. }, {
  10058. inheritColor: detailColor
  10059. })
  10060. });
  10061. setLabelValueAnimation(labelEl, {
  10062. normal: itemDetailModel
  10063. }, value, function(value2) {
  10064. return formatLabel(value2, formatter_1);
  10065. });
  10066. hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel, {
  10067. getFormattedLabel: function(labelDataIndex, status, dataType, labelDimIndex, fmt, extendParams) {
  10068. return formatLabel(extendParams ? extendParams.interpolatedValue : value, formatter_1);
  10069. }
  10070. });
  10071. itemGroup.add(labelEl);
  10072. }
  10073. contentGroup.add(itemGroup);
  10074. });
  10075. this.group.add(contentGroup);
  10076. this._titleEls = newTitleEls;
  10077. this._detailEls = newDetailEls;
  10078. };
  10079. GaugeView2.type = "gauge";
  10080. return GaugeView2;
  10081. }(Chart_default);
  10082. var GaugeView_default = GaugeView;
  10083. // node_modules/echarts/lib/chart/gauge/GaugeSeries.js
  10084. init_define_APP_INFO();
  10085. var GaugeSeriesModel = function(_super) {
  10086. __extends(GaugeSeriesModel2, _super);
  10087. function GaugeSeriesModel2() {
  10088. var _this = _super !== null && _super.apply(this, arguments) || this;
  10089. _this.type = GaugeSeriesModel2.type;
  10090. _this.visualStyleAccessPath = "itemStyle";
  10091. return _this;
  10092. }
  10093. GaugeSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  10094. return createSeriesDataSimply(this, ["value"]);
  10095. };
  10096. GaugeSeriesModel2.type = "series.gauge";
  10097. GaugeSeriesModel2.defaultOption = {
  10098. z: 2,
  10099. colorBy: "data",
  10100. center: ["50%", "50%"],
  10101. legendHoverLink: true,
  10102. radius: "75%",
  10103. startAngle: 225,
  10104. endAngle: -45,
  10105. clockwise: true,
  10106. min: 0,
  10107. max: 100,
  10108. splitNumber: 10,
  10109. axisLine: {
  10110. show: true,
  10111. roundCap: false,
  10112. lineStyle: {
  10113. color: [[1, "#E6EBF8"]],
  10114. width: 10
  10115. }
  10116. },
  10117. progress: {
  10118. show: false,
  10119. overlap: true,
  10120. width: 10,
  10121. roundCap: false,
  10122. clip: true
  10123. },
  10124. splitLine: {
  10125. show: true,
  10126. length: 10,
  10127. distance: 10,
  10128. lineStyle: {
  10129. color: "#63677A",
  10130. width: 3,
  10131. type: "solid"
  10132. }
  10133. },
  10134. axisTick: {
  10135. show: true,
  10136. splitNumber: 5,
  10137. length: 6,
  10138. distance: 10,
  10139. lineStyle: {
  10140. color: "#63677A",
  10141. width: 1,
  10142. type: "solid"
  10143. }
  10144. },
  10145. axisLabel: {
  10146. show: true,
  10147. distance: 15,
  10148. color: "#464646",
  10149. fontSize: 12
  10150. },
  10151. pointer: {
  10152. icon: null,
  10153. offsetCenter: [0, 0],
  10154. show: true,
  10155. showAbove: true,
  10156. length: "60%",
  10157. width: 6,
  10158. keepAspect: false
  10159. },
  10160. anchor: {
  10161. show: false,
  10162. showAbove: false,
  10163. size: 6,
  10164. icon: "circle",
  10165. offsetCenter: [0, 0],
  10166. keepAspect: false,
  10167. itemStyle: {
  10168. color: "#fff",
  10169. borderWidth: 0,
  10170. borderColor: "#5470c6"
  10171. }
  10172. },
  10173. title: {
  10174. show: true,
  10175. offsetCenter: [0, "20%"],
  10176. color: "#464646",
  10177. fontSize: 16,
  10178. valueAnimation: false
  10179. },
  10180. detail: {
  10181. show: true,
  10182. backgroundColor: "rgba(0,0,0,0)",
  10183. borderWidth: 0,
  10184. borderColor: "#ccc",
  10185. width: 100,
  10186. height: null,
  10187. padding: [5, 10],
  10188. offsetCenter: [0, "40%"],
  10189. color: "#464646",
  10190. fontSize: 30,
  10191. fontWeight: "bold",
  10192. lineHeight: 30,
  10193. valueAnimation: false
  10194. }
  10195. };
  10196. return GaugeSeriesModel2;
  10197. }(Series_default);
  10198. var GaugeSeries_default = GaugeSeriesModel;
  10199. // node_modules/echarts/lib/chart/gauge/install.js
  10200. function install14(registers) {
  10201. registers.registerChartView(GaugeView_default);
  10202. registers.registerSeriesModel(GaugeSeries_default);
  10203. }
  10204. // node_modules/echarts/lib/chart/funnel/install.js
  10205. init_define_APP_INFO();
  10206. // node_modules/echarts/lib/chart/funnel/FunnelView.js
  10207. init_define_APP_INFO();
  10208. var opacityAccessPath = ["itemStyle", "opacity"];
  10209. var FunnelPiece = function(_super) {
  10210. __extends(FunnelPiece2, _super);
  10211. function FunnelPiece2(data, idx) {
  10212. var _this = _super.call(this) || this;
  10213. var polygon = _this;
  10214. var labelLine = new Polyline_default();
  10215. var text = new Text_default();
  10216. polygon.setTextContent(text);
  10217. _this.setTextGuideLine(labelLine);
  10218. _this.updateData(data, idx, true);
  10219. return _this;
  10220. }
  10221. FunnelPiece2.prototype.updateData = function(data, idx, firstCreate) {
  10222. var polygon = this;
  10223. var seriesModel = data.hostModel;
  10224. var itemModel = data.getItemModel(idx);
  10225. var layout2 = data.getItemLayout(idx);
  10226. var emphasisModel = itemModel.getModel("emphasis");
  10227. var opacity = itemModel.get(opacityAccessPath);
  10228. opacity = opacity == null ? 1 : opacity;
  10229. if (!firstCreate) {
  10230. saveOldStyle(polygon);
  10231. }
  10232. polygon.useStyle(data.getItemVisual(idx, "style"));
  10233. polygon.style.lineJoin = "round";
  10234. if (firstCreate) {
  10235. polygon.setShape({
  10236. points: layout2.points
  10237. });
  10238. polygon.style.opacity = 0;
  10239. initProps(polygon, {
  10240. style: {
  10241. opacity
  10242. }
  10243. }, seriesModel, idx);
  10244. } else {
  10245. updateProps(polygon, {
  10246. style: {
  10247. opacity
  10248. },
  10249. shape: {
  10250. points: layout2.points
  10251. }
  10252. }, seriesModel, idx);
  10253. }
  10254. setStatesStylesFromModel(polygon, itemModel);
  10255. this._updateLabel(data, idx);
  10256. toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  10257. };
  10258. FunnelPiece2.prototype._updateLabel = function(data, idx) {
  10259. var polygon = this;
  10260. var labelLine = this.getTextGuideLine();
  10261. var labelText = polygon.getTextContent();
  10262. var seriesModel = data.hostModel;
  10263. var itemModel = data.getItemModel(idx);
  10264. var layout2 = data.getItemLayout(idx);
  10265. var labelLayout2 = layout2.label;
  10266. var style = data.getItemVisual(idx, "style");
  10267. var visualColor = style.fill;
  10268. setLabelStyle(
  10269. labelText,
  10270. getLabelStatesModels(itemModel),
  10271. {
  10272. labelFetcher: data.hostModel,
  10273. labelDataIndex: idx,
  10274. defaultOpacity: style.opacity,
  10275. defaultText: data.getName(idx)
  10276. },
  10277. {
  10278. normal: {
  10279. align: labelLayout2.textAlign,
  10280. verticalAlign: labelLayout2.verticalAlign
  10281. }
  10282. }
  10283. );
  10284. polygon.setTextConfig({
  10285. local: true,
  10286. inside: !!labelLayout2.inside,
  10287. insideStroke: visualColor,
  10288. outsideFill: visualColor
  10289. });
  10290. var linePoints = labelLayout2.linePoints;
  10291. labelLine.setShape({
  10292. points: linePoints
  10293. });
  10294. polygon.textGuideLineConfig = {
  10295. anchor: linePoints ? new Point_default(linePoints[0][0], linePoints[0][1]) : null
  10296. };
  10297. updateProps(labelText, {
  10298. style: {
  10299. x: labelLayout2.x,
  10300. y: labelLayout2.y
  10301. }
  10302. }, seriesModel, idx);
  10303. labelText.attr({
  10304. rotation: labelLayout2.rotation,
  10305. originX: labelLayout2.x,
  10306. originY: labelLayout2.y,
  10307. z2: 10
  10308. });
  10309. setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), {
  10310. stroke: visualColor
  10311. });
  10312. };
  10313. return FunnelPiece2;
  10314. }(Polygon_default);
  10315. var FunnelView = function(_super) {
  10316. __extends(FunnelView2, _super);
  10317. function FunnelView2() {
  10318. var _this = _super !== null && _super.apply(this, arguments) || this;
  10319. _this.type = FunnelView2.type;
  10320. _this.ignoreLabelLineUpdate = true;
  10321. return _this;
  10322. }
  10323. FunnelView2.prototype.render = function(seriesModel, ecModel, api) {
  10324. var data = seriesModel.getData();
  10325. var oldData = this._data;
  10326. var group = this.group;
  10327. data.diff(oldData).add(function(idx) {
  10328. var funnelPiece = new FunnelPiece(data, idx);
  10329. data.setItemGraphicEl(idx, funnelPiece);
  10330. group.add(funnelPiece);
  10331. }).update(function(newIdx, oldIdx) {
  10332. var piece = oldData.getItemGraphicEl(oldIdx);
  10333. piece.updateData(data, newIdx);
  10334. group.add(piece);
  10335. data.setItemGraphicEl(newIdx, piece);
  10336. }).remove(function(idx) {
  10337. var piece = oldData.getItemGraphicEl(idx);
  10338. removeElementWithFadeOut(piece, seriesModel, idx);
  10339. }).execute();
  10340. this._data = data;
  10341. };
  10342. FunnelView2.prototype.remove = function() {
  10343. this.group.removeAll();
  10344. this._data = null;
  10345. };
  10346. FunnelView2.prototype.dispose = function() {
  10347. };
  10348. FunnelView2.type = "funnel";
  10349. return FunnelView2;
  10350. }(Chart_default);
  10351. var FunnelView_default = FunnelView;
  10352. // node_modules/echarts/lib/chart/funnel/FunnelSeries.js
  10353. init_define_APP_INFO();
  10354. var FunnelSeriesModel = function(_super) {
  10355. __extends(FunnelSeriesModel2, _super);
  10356. function FunnelSeriesModel2() {
  10357. var _this = _super !== null && _super.apply(this, arguments) || this;
  10358. _this.type = FunnelSeriesModel2.type;
  10359. return _this;
  10360. }
  10361. FunnelSeriesModel2.prototype.init = function(option) {
  10362. _super.prototype.init.apply(this, arguments);
  10363. this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this));
  10364. this._defaultLabelLine(option);
  10365. };
  10366. FunnelSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  10367. return createSeriesDataSimply(this, {
  10368. coordDimensions: ["value"],
  10369. encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)
  10370. });
  10371. };
  10372. FunnelSeriesModel2.prototype._defaultLabelLine = function(option) {
  10373. defaultEmphasis(option, "labelLine", ["show"]);
  10374. var labelLineNormalOpt = option.labelLine;
  10375. var labelLineEmphasisOpt = option.emphasis.labelLine;
  10376. labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;
  10377. labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;
  10378. };
  10379. FunnelSeriesModel2.prototype.getDataParams = function(dataIndex) {
  10380. var data = this.getData();
  10381. var params = _super.prototype.getDataParams.call(this, dataIndex);
  10382. var valueDim = data.mapDimension("value");
  10383. var sum2 = data.getSum(valueDim);
  10384. params.percent = !sum2 ? 0 : +(data.get(valueDim, dataIndex) / sum2 * 100).toFixed(2);
  10385. params.$vars.push("percent");
  10386. return params;
  10387. };
  10388. FunnelSeriesModel2.type = "series.funnel";
  10389. FunnelSeriesModel2.defaultOption = {
  10390. z: 2,
  10391. legendHoverLink: true,
  10392. colorBy: "data",
  10393. left: 80,
  10394. top: 60,
  10395. right: 80,
  10396. bottom: 60,
  10397. minSize: "0%",
  10398. maxSize: "100%",
  10399. sort: "descending",
  10400. orient: "vertical",
  10401. gap: 0,
  10402. funnelAlign: "center",
  10403. label: {
  10404. show: true,
  10405. position: "outer"
  10406. },
  10407. labelLine: {
  10408. show: true,
  10409. length: 20,
  10410. lineStyle: {
  10411. width: 1
  10412. }
  10413. },
  10414. itemStyle: {
  10415. borderColor: "#fff",
  10416. borderWidth: 1
  10417. },
  10418. emphasis: {
  10419. label: {
  10420. show: true
  10421. }
  10422. },
  10423. select: {
  10424. itemStyle: {
  10425. borderColor: "#212121"
  10426. }
  10427. }
  10428. };
  10429. return FunnelSeriesModel2;
  10430. }(Series_default);
  10431. var FunnelSeries_default = FunnelSeriesModel;
  10432. // node_modules/echarts/lib/chart/funnel/funnelLayout.js
  10433. init_define_APP_INFO();
  10434. function getViewRect4(seriesModel, api) {
  10435. return getLayoutRect(seriesModel.getBoxLayoutParams(), {
  10436. width: api.getWidth(),
  10437. height: api.getHeight()
  10438. });
  10439. }
  10440. function getSortedIndices(data, sort3) {
  10441. var valueDim = data.mapDimension("value");
  10442. var valueArr = data.mapArray(valueDim, function(val) {
  10443. return val;
  10444. });
  10445. var indices = [];
  10446. var isAscending = sort3 === "ascending";
  10447. for (var i = 0, len2 = data.count(); i < len2; i++) {
  10448. indices[i] = i;
  10449. }
  10450. if (isFunction(sort3)) {
  10451. indices.sort(sort3);
  10452. } else if (sort3 !== "none") {
  10453. indices.sort(function(a, b) {
  10454. return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];
  10455. });
  10456. }
  10457. return indices;
  10458. }
  10459. function labelLayout(data) {
  10460. var seriesModel = data.hostModel;
  10461. var orient = seriesModel.get("orient");
  10462. data.each(function(idx) {
  10463. var itemModel = data.getItemModel(idx);
  10464. var labelModel = itemModel.getModel("label");
  10465. var labelPosition = labelModel.get("position");
  10466. var labelLineModel = itemModel.getModel("labelLine");
  10467. var layout2 = data.getItemLayout(idx);
  10468. var points = layout2.points;
  10469. var isLabelInside = labelPosition === "inner" || labelPosition === "inside" || labelPosition === "center" || labelPosition === "insideLeft" || labelPosition === "insideRight";
  10470. var textAlign;
  10471. var textX;
  10472. var textY;
  10473. var linePoints;
  10474. if (isLabelInside) {
  10475. if (labelPosition === "insideLeft") {
  10476. textX = (points[0][0] + points[3][0]) / 2 + 5;
  10477. textY = (points[0][1] + points[3][1]) / 2;
  10478. textAlign = "left";
  10479. } else if (labelPosition === "insideRight") {
  10480. textX = (points[1][0] + points[2][0]) / 2 - 5;
  10481. textY = (points[1][1] + points[2][1]) / 2;
  10482. textAlign = "right";
  10483. } else {
  10484. textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;
  10485. textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;
  10486. textAlign = "center";
  10487. }
  10488. linePoints = [[textX, textY], [textX, textY]];
  10489. } else {
  10490. var x1 = void 0;
  10491. var y1 = void 0;
  10492. var x2 = void 0;
  10493. var y2 = void 0;
  10494. var labelLineLen = labelLineModel.get("length");
  10495. if (true) {
  10496. if (orient === "vertical" && ["top", "bottom"].indexOf(labelPosition) > -1) {
  10497. labelPosition = "left";
  10498. console.warn("Position error: Funnel chart on vertical orient dose not support top and bottom.");
  10499. }
  10500. if (orient === "horizontal" && ["left", "right"].indexOf(labelPosition) > -1) {
  10501. labelPosition = "bottom";
  10502. console.warn("Position error: Funnel chart on horizontal orient dose not support left and right.");
  10503. }
  10504. }
  10505. if (labelPosition === "left") {
  10506. x1 = (points[3][0] + points[0][0]) / 2;
  10507. y1 = (points[3][1] + points[0][1]) / 2;
  10508. x2 = x1 - labelLineLen;
  10509. textX = x2 - 5;
  10510. textAlign = "right";
  10511. } else if (labelPosition === "right") {
  10512. x1 = (points[1][0] + points[2][0]) / 2;
  10513. y1 = (points[1][1] + points[2][1]) / 2;
  10514. x2 = x1 + labelLineLen;
  10515. textX = x2 + 5;
  10516. textAlign = "left";
  10517. } else if (labelPosition === "top") {
  10518. x1 = (points[3][0] + points[0][0]) / 2;
  10519. y1 = (points[3][1] + points[0][1]) / 2;
  10520. y2 = y1 - labelLineLen;
  10521. textY = y2 - 5;
  10522. textAlign = "center";
  10523. } else if (labelPosition === "bottom") {
  10524. x1 = (points[1][0] + points[2][0]) / 2;
  10525. y1 = (points[1][1] + points[2][1]) / 2;
  10526. y2 = y1 + labelLineLen;
  10527. textY = y2 + 5;
  10528. textAlign = "center";
  10529. } else if (labelPosition === "rightTop") {
  10530. x1 = orient === "horizontal" ? points[3][0] : points[1][0];
  10531. y1 = orient === "horizontal" ? points[3][1] : points[1][1];
  10532. if (orient === "horizontal") {
  10533. y2 = y1 - labelLineLen;
  10534. textY = y2 - 5;
  10535. textAlign = "center";
  10536. } else {
  10537. x2 = x1 + labelLineLen;
  10538. textX = x2 + 5;
  10539. textAlign = "top";
  10540. }
  10541. } else if (labelPosition === "rightBottom") {
  10542. x1 = points[2][0];
  10543. y1 = points[2][1];
  10544. if (orient === "horizontal") {
  10545. y2 = y1 + labelLineLen;
  10546. textY = y2 + 5;
  10547. textAlign = "center";
  10548. } else {
  10549. x2 = x1 + labelLineLen;
  10550. textX = x2 + 5;
  10551. textAlign = "bottom";
  10552. }
  10553. } else if (labelPosition === "leftTop") {
  10554. x1 = points[0][0];
  10555. y1 = orient === "horizontal" ? points[0][1] : points[1][1];
  10556. if (orient === "horizontal") {
  10557. y2 = y1 - labelLineLen;
  10558. textY = y2 - 5;
  10559. textAlign = "center";
  10560. } else {
  10561. x2 = x1 - labelLineLen;
  10562. textX = x2 - 5;
  10563. textAlign = "right";
  10564. }
  10565. } else if (labelPosition === "leftBottom") {
  10566. x1 = orient === "horizontal" ? points[1][0] : points[3][0];
  10567. y1 = orient === "horizontal" ? points[1][1] : points[2][1];
  10568. if (orient === "horizontal") {
  10569. y2 = y1 + labelLineLen;
  10570. textY = y2 + 5;
  10571. textAlign = "center";
  10572. } else {
  10573. x2 = x1 - labelLineLen;
  10574. textX = x2 - 5;
  10575. textAlign = "right";
  10576. }
  10577. } else {
  10578. x1 = (points[1][0] + points[2][0]) / 2;
  10579. y1 = (points[1][1] + points[2][1]) / 2;
  10580. if (orient === "horizontal") {
  10581. y2 = y1 + labelLineLen;
  10582. textY = y2 + 5;
  10583. textAlign = "center";
  10584. } else {
  10585. x2 = x1 + labelLineLen;
  10586. textX = x2 + 5;
  10587. textAlign = "left";
  10588. }
  10589. }
  10590. if (orient === "horizontal") {
  10591. x2 = x1;
  10592. textX = x2;
  10593. } else {
  10594. y2 = y1;
  10595. textY = y2;
  10596. }
  10597. linePoints = [[x1, y1], [x2, y2]];
  10598. }
  10599. layout2.label = {
  10600. linePoints,
  10601. x: textX,
  10602. y: textY,
  10603. verticalAlign: "middle",
  10604. textAlign,
  10605. inside: isLabelInside
  10606. };
  10607. });
  10608. }
  10609. function funnelLayout(ecModel, api) {
  10610. ecModel.eachSeriesByType("funnel", function(seriesModel) {
  10611. var data = seriesModel.getData();
  10612. var valueDim = data.mapDimension("value");
  10613. var sort3 = seriesModel.get("sort");
  10614. var viewRect = getViewRect4(seriesModel, api);
  10615. var orient = seriesModel.get("orient");
  10616. var viewWidth = viewRect.width;
  10617. var viewHeight = viewRect.height;
  10618. var indices = getSortedIndices(data, sort3);
  10619. var x = viewRect.x;
  10620. var y = viewRect.y;
  10621. var sizeExtent = orient === "horizontal" ? [parsePercent2(seriesModel.get("minSize"), viewHeight), parsePercent2(seriesModel.get("maxSize"), viewHeight)] : [parsePercent2(seriesModel.get("minSize"), viewWidth), parsePercent2(seriesModel.get("maxSize"), viewWidth)];
  10622. var dataExtent = data.getDataExtent(valueDim);
  10623. var min = seriesModel.get("min");
  10624. var max = seriesModel.get("max");
  10625. if (min == null) {
  10626. min = Math.min(dataExtent[0], 0);
  10627. }
  10628. if (max == null) {
  10629. max = dataExtent[1];
  10630. }
  10631. var funnelAlign = seriesModel.get("funnelAlign");
  10632. var gap = seriesModel.get("gap");
  10633. var viewSize = orient === "horizontal" ? viewWidth : viewHeight;
  10634. var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();
  10635. var getLinePoints = function(idx2, offset) {
  10636. if (orient === "horizontal") {
  10637. var val_1 = data.get(valueDim, idx2) || 0;
  10638. var itemHeight = linearMap(val_1, [min, max], sizeExtent, true);
  10639. var y0 = void 0;
  10640. switch (funnelAlign) {
  10641. case "top":
  10642. y0 = y;
  10643. break;
  10644. case "center":
  10645. y0 = y + (viewHeight - itemHeight) / 2;
  10646. break;
  10647. case "bottom":
  10648. y0 = y + (viewHeight - itemHeight);
  10649. break;
  10650. }
  10651. return [[offset, y0], [offset, y0 + itemHeight]];
  10652. }
  10653. var val = data.get(valueDim, idx2) || 0;
  10654. var itemWidth = linearMap(val, [min, max], sizeExtent, true);
  10655. var x0;
  10656. switch (funnelAlign) {
  10657. case "left":
  10658. x0 = x;
  10659. break;
  10660. case "center":
  10661. x0 = x + (viewWidth - itemWidth) / 2;
  10662. break;
  10663. case "right":
  10664. x0 = x + viewWidth - itemWidth;
  10665. break;
  10666. }
  10667. return [[x0, offset], [x0 + itemWidth, offset]];
  10668. };
  10669. if (sort3 === "ascending") {
  10670. itemSize = -itemSize;
  10671. gap = -gap;
  10672. if (orient === "horizontal") {
  10673. x += viewWidth;
  10674. } else {
  10675. y += viewHeight;
  10676. }
  10677. indices = indices.reverse();
  10678. }
  10679. for (var i = 0; i < indices.length; i++) {
  10680. var idx = indices[i];
  10681. var nextIdx = indices[i + 1];
  10682. var itemModel = data.getItemModel(idx);
  10683. if (orient === "horizontal") {
  10684. var width = itemModel.get(["itemStyle", "width"]);
  10685. if (width == null) {
  10686. width = itemSize;
  10687. } else {
  10688. width = parsePercent2(width, viewWidth);
  10689. if (sort3 === "ascending") {
  10690. width = -width;
  10691. }
  10692. }
  10693. var start = getLinePoints(idx, x);
  10694. var end = getLinePoints(nextIdx, x + width);
  10695. x += width + gap;
  10696. data.setItemLayout(idx, {
  10697. points: start.concat(end.slice().reverse())
  10698. });
  10699. } else {
  10700. var height = itemModel.get(["itemStyle", "height"]);
  10701. if (height == null) {
  10702. height = itemSize;
  10703. } else {
  10704. height = parsePercent2(height, viewHeight);
  10705. if (sort3 === "ascending") {
  10706. height = -height;
  10707. }
  10708. }
  10709. var start = getLinePoints(idx, y);
  10710. var end = getLinePoints(nextIdx, y + height);
  10711. y += height + gap;
  10712. data.setItemLayout(idx, {
  10713. points: start.concat(end.slice().reverse())
  10714. });
  10715. }
  10716. }
  10717. labelLayout(data);
  10718. });
  10719. }
  10720. // node_modules/echarts/lib/chart/funnel/install.js
  10721. function install15(registers) {
  10722. registers.registerChartView(FunnelView_default);
  10723. registers.registerSeriesModel(FunnelSeries_default);
  10724. registers.registerLayout(funnelLayout);
  10725. registers.registerProcessor(dataFilter("funnel"));
  10726. }
  10727. // node_modules/echarts/lib/chart/parallel/install.js
  10728. init_define_APP_INFO();
  10729. // node_modules/echarts/lib/chart/parallel/ParallelView.js
  10730. init_define_APP_INFO();
  10731. var DEFAULT_SMOOTH = 0.3;
  10732. var ParallelView = function(_super) {
  10733. __extends(ParallelView2, _super);
  10734. function ParallelView2() {
  10735. var _this = _super !== null && _super.apply(this, arguments) || this;
  10736. _this.type = ParallelView2.type;
  10737. _this._dataGroup = new Group_default();
  10738. _this._initialized = false;
  10739. return _this;
  10740. }
  10741. ParallelView2.prototype.init = function() {
  10742. this.group.add(this._dataGroup);
  10743. };
  10744. ParallelView2.prototype.render = function(seriesModel, ecModel, api, payload) {
  10745. this._progressiveEls = null;
  10746. var dataGroup = this._dataGroup;
  10747. var data = seriesModel.getData();
  10748. var oldData = this._data;
  10749. var coordSys = seriesModel.coordinateSystem;
  10750. var dimensions = coordSys.dimensions;
  10751. var seriesScope = makeSeriesScope(seriesModel);
  10752. data.diff(oldData).add(add).update(update).remove(remove).execute();
  10753. function add(newDataIndex) {
  10754. var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);
  10755. updateElCommon(line, data, newDataIndex, seriesScope);
  10756. }
  10757. function update(newDataIndex, oldDataIndex) {
  10758. var line = oldData.getItemGraphicEl(oldDataIndex);
  10759. var points = createLinePoints(data, newDataIndex, dimensions, coordSys);
  10760. data.setItemGraphicEl(newDataIndex, line);
  10761. updateProps(line, {
  10762. shape: {
  10763. points
  10764. }
  10765. }, seriesModel, newDataIndex);
  10766. saveOldStyle(line);
  10767. updateElCommon(line, data, newDataIndex, seriesScope);
  10768. }
  10769. function remove(oldDataIndex) {
  10770. var line = oldData.getItemGraphicEl(oldDataIndex);
  10771. dataGroup.remove(line);
  10772. }
  10773. if (!this._initialized) {
  10774. this._initialized = true;
  10775. var clipPath = createGridClipShape(coordSys, seriesModel, function() {
  10776. setTimeout(function() {
  10777. dataGroup.removeClipPath();
  10778. });
  10779. });
  10780. dataGroup.setClipPath(clipPath);
  10781. }
  10782. this._data = data;
  10783. };
  10784. ParallelView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
  10785. this._initialized = true;
  10786. this._data = null;
  10787. this._dataGroup.removeAll();
  10788. };
  10789. ParallelView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) {
  10790. var data = seriesModel.getData();
  10791. var coordSys = seriesModel.coordinateSystem;
  10792. var dimensions = coordSys.dimensions;
  10793. var seriesScope = makeSeriesScope(seriesModel);
  10794. var progressiveEls = this._progressiveEls = [];
  10795. for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {
  10796. var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);
  10797. line.incremental = true;
  10798. updateElCommon(line, data, dataIndex, seriesScope);
  10799. progressiveEls.push(line);
  10800. }
  10801. };
  10802. ParallelView2.prototype.remove = function() {
  10803. this._dataGroup && this._dataGroup.removeAll();
  10804. this._data = null;
  10805. };
  10806. ParallelView2.type = "parallel";
  10807. return ParallelView2;
  10808. }(Chart_default);
  10809. function createGridClipShape(coordSys, seriesModel, cb) {
  10810. var parallelModel = coordSys.model;
  10811. var rect = coordSys.getRect();
  10812. var rectEl = new Rect_default({
  10813. shape: {
  10814. x: rect.x,
  10815. y: rect.y,
  10816. width: rect.width,
  10817. height: rect.height
  10818. }
  10819. });
  10820. var dim = parallelModel.get("layout") === "horizontal" ? "width" : "height";
  10821. rectEl.setShape(dim, 0);
  10822. initProps(rectEl, {
  10823. shape: {
  10824. width: rect.width,
  10825. height: rect.height
  10826. }
  10827. }, seriesModel, cb);
  10828. return rectEl;
  10829. }
  10830. function createLinePoints(data, dataIndex, dimensions, coordSys) {
  10831. var points = [];
  10832. for (var i = 0; i < dimensions.length; i++) {
  10833. var dimName = dimensions[i];
  10834. var value = data.get(data.mapDimension(dimName), dataIndex);
  10835. if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {
  10836. points.push(coordSys.dataToPoint(value, dimName));
  10837. }
  10838. }
  10839. return points;
  10840. }
  10841. function addEl(data, dataGroup, dataIndex, dimensions, coordSys) {
  10842. var points = createLinePoints(data, dataIndex, dimensions, coordSys);
  10843. var line = new Polyline_default({
  10844. shape: {
  10845. points
  10846. },
  10847. z2: 10
  10848. });
  10849. dataGroup.add(line);
  10850. data.setItemGraphicEl(dataIndex, line);
  10851. return line;
  10852. }
  10853. function makeSeriesScope(seriesModel) {
  10854. var smooth = seriesModel.get("smooth", true);
  10855. smooth === true && (smooth = DEFAULT_SMOOTH);
  10856. smooth = numericToNumber(smooth);
  10857. eqNaN(smooth) && (smooth = 0);
  10858. return {
  10859. smooth
  10860. };
  10861. }
  10862. function updateElCommon(el, data, dataIndex, seriesScope) {
  10863. el.useStyle(data.getItemVisual(dataIndex, "style"));
  10864. el.style.fill = null;
  10865. el.setShape("smooth", seriesScope.smooth);
  10866. var itemModel = data.getItemModel(dataIndex);
  10867. var emphasisModel = itemModel.getModel("emphasis");
  10868. setStatesStylesFromModel(el, itemModel, "lineStyle");
  10869. toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  10870. }
  10871. function isEmptyValue(val, axisType) {
  10872. return axisType === "category" ? val == null : val == null || isNaN(val);
  10873. }
  10874. var ParallelView_default = ParallelView;
  10875. // node_modules/echarts/lib/chart/parallel/ParallelSeries.js
  10876. init_define_APP_INFO();
  10877. var ParallelSeriesModel = function(_super) {
  10878. __extends(ParallelSeriesModel2, _super);
  10879. function ParallelSeriesModel2() {
  10880. var _this = _super !== null && _super.apply(this, arguments) || this;
  10881. _this.type = ParallelSeriesModel2.type;
  10882. _this.visualStyleAccessPath = "lineStyle";
  10883. _this.visualDrawType = "stroke";
  10884. return _this;
  10885. }
  10886. ParallelSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  10887. return createSeriesData_default(null, this, {
  10888. useEncodeDefaulter: bind(makeDefaultEncode, null, this)
  10889. });
  10890. };
  10891. ParallelSeriesModel2.prototype.getRawIndicesByActiveState = function(activeState) {
  10892. var coordSys = this.coordinateSystem;
  10893. var data = this.getData();
  10894. var indices = [];
  10895. coordSys.eachActiveState(data, function(theActiveState, dataIndex) {
  10896. if (activeState === theActiveState) {
  10897. indices.push(data.getRawIndex(dataIndex));
  10898. }
  10899. });
  10900. return indices;
  10901. };
  10902. ParallelSeriesModel2.type = "series.parallel";
  10903. ParallelSeriesModel2.dependencies = ["parallel"];
  10904. ParallelSeriesModel2.defaultOption = {
  10905. z: 2,
  10906. coordinateSystem: "parallel",
  10907. parallelIndex: 0,
  10908. label: {
  10909. show: false
  10910. },
  10911. inactiveOpacity: 0.05,
  10912. activeOpacity: 1,
  10913. lineStyle: {
  10914. width: 1,
  10915. opacity: 0.45,
  10916. type: "solid"
  10917. },
  10918. emphasis: {
  10919. label: {
  10920. show: false
  10921. }
  10922. },
  10923. progressive: 500,
  10924. smooth: false,
  10925. animationEasing: "linear"
  10926. };
  10927. return ParallelSeriesModel2;
  10928. }(Series_default);
  10929. function makeDefaultEncode(seriesModel) {
  10930. var parallelModel = seriesModel.ecModel.getComponent("parallel", seriesModel.get("parallelIndex"));
  10931. if (!parallelModel) {
  10932. return;
  10933. }
  10934. var encodeDefine = {};
  10935. each(parallelModel.dimensions, function(axisDim) {
  10936. var dataDimIndex = convertDimNameToNumber(axisDim);
  10937. encodeDefine[axisDim] = dataDimIndex;
  10938. });
  10939. return encodeDefine;
  10940. }
  10941. function convertDimNameToNumber(dimName) {
  10942. return +dimName.replace("dim", "");
  10943. }
  10944. var ParallelSeries_default = ParallelSeriesModel;
  10945. // node_modules/echarts/lib/chart/parallel/parallelVisual.js
  10946. init_define_APP_INFO();
  10947. var opacityAccessPath2 = ["lineStyle", "opacity"];
  10948. var parallelVisual = {
  10949. seriesType: "parallel",
  10950. reset: function(seriesModel, ecModel) {
  10951. var coordSys = seriesModel.coordinateSystem;
  10952. var opacityMap = {
  10953. normal: seriesModel.get(["lineStyle", "opacity"]),
  10954. active: seriesModel.get("activeOpacity"),
  10955. inactive: seriesModel.get("inactiveOpacity")
  10956. };
  10957. return {
  10958. progress: function(params, data) {
  10959. coordSys.eachActiveState(data, function(activeState, dataIndex) {
  10960. var opacity = opacityMap[activeState];
  10961. if (activeState === "normal" && data.hasItemOption) {
  10962. var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath2, true);
  10963. itemOpacity != null && (opacity = itemOpacity);
  10964. }
  10965. var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style");
  10966. existsStyle.opacity = opacity;
  10967. }, params.start, params.end);
  10968. }
  10969. };
  10970. }
  10971. };
  10972. var parallelVisual_default = parallelVisual;
  10973. // node_modules/echarts/lib/chart/parallel/install.js
  10974. function install16(registers) {
  10975. use(install4);
  10976. registers.registerChartView(ParallelView_default);
  10977. registers.registerSeriesModel(ParallelSeries_default);
  10978. registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, parallelVisual_default);
  10979. }
  10980. // node_modules/echarts/lib/chart/sankey/install.js
  10981. init_define_APP_INFO();
  10982. // node_modules/echarts/lib/chart/sankey/SankeyView.js
  10983. init_define_APP_INFO();
  10984. var SankeyPathShape = function() {
  10985. function SankeyPathShape2() {
  10986. this.x1 = 0;
  10987. this.y1 = 0;
  10988. this.x2 = 0;
  10989. this.y2 = 0;
  10990. this.cpx1 = 0;
  10991. this.cpy1 = 0;
  10992. this.cpx2 = 0;
  10993. this.cpy2 = 0;
  10994. this.extent = 0;
  10995. }
  10996. return SankeyPathShape2;
  10997. }();
  10998. var SankeyPath = function(_super) {
  10999. __extends(SankeyPath2, _super);
  11000. function SankeyPath2(opts) {
  11001. return _super.call(this, opts) || this;
  11002. }
  11003. SankeyPath2.prototype.getDefaultShape = function() {
  11004. return new SankeyPathShape();
  11005. };
  11006. SankeyPath2.prototype.buildPath = function(ctx, shape) {
  11007. var extent = shape.extent;
  11008. ctx.moveTo(shape.x1, shape.y1);
  11009. ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2);
  11010. if (shape.orient === "vertical") {
  11011. ctx.lineTo(shape.x2 + extent, shape.y2);
  11012. ctx.bezierCurveTo(shape.cpx2 + extent, shape.cpy2, shape.cpx1 + extent, shape.cpy1, shape.x1 + extent, shape.y1);
  11013. } else {
  11014. ctx.lineTo(shape.x2, shape.y2 + extent);
  11015. ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent, shape.cpx1, shape.cpy1 + extent, shape.x1, shape.y1 + extent);
  11016. }
  11017. ctx.closePath();
  11018. };
  11019. SankeyPath2.prototype.highlight = function() {
  11020. enterEmphasis(this);
  11021. };
  11022. SankeyPath2.prototype.downplay = function() {
  11023. leaveEmphasis(this);
  11024. };
  11025. return SankeyPath2;
  11026. }(Path_default);
  11027. var SankeyView = function(_super) {
  11028. __extends(SankeyView2, _super);
  11029. function SankeyView2() {
  11030. var _this = _super !== null && _super.apply(this, arguments) || this;
  11031. _this.type = SankeyView2.type;
  11032. _this._focusAdjacencyDisabled = false;
  11033. return _this;
  11034. }
  11035. SankeyView2.prototype.render = function(seriesModel, ecModel, api) {
  11036. var sankeyView = this;
  11037. var graph = seriesModel.getGraph();
  11038. var group = this.group;
  11039. var layoutInfo = seriesModel.layoutInfo;
  11040. var width = layoutInfo.width;
  11041. var height = layoutInfo.height;
  11042. var nodeData = seriesModel.getData();
  11043. var edgeData = seriesModel.getData("edge");
  11044. var orient = seriesModel.get("orient");
  11045. this._model = seriesModel;
  11046. group.removeAll();
  11047. group.x = layoutInfo.x;
  11048. group.y = layoutInfo.y;
  11049. graph.eachEdge(function(edge) {
  11050. var curve = new SankeyPath();
  11051. var ecData = getECData(curve);
  11052. ecData.dataIndex = edge.dataIndex;
  11053. ecData.seriesIndex = seriesModel.seriesIndex;
  11054. ecData.dataType = "edge";
  11055. var edgeModel = edge.getModel();
  11056. var lineStyleModel = edgeModel.getModel("lineStyle");
  11057. var curvature = lineStyleModel.get("curveness");
  11058. var n1Layout = edge.node1.getLayout();
  11059. var node1Model = edge.node1.getModel();
  11060. var dragX1 = node1Model.get("localX");
  11061. var dragY1 = node1Model.get("localY");
  11062. var n2Layout = edge.node2.getLayout();
  11063. var node2Model = edge.node2.getModel();
  11064. var dragX2 = node2Model.get("localX");
  11065. var dragY2 = node2Model.get("localY");
  11066. var edgeLayout = edge.getLayout();
  11067. var x1;
  11068. var y1;
  11069. var x2;
  11070. var y2;
  11071. var cpx1;
  11072. var cpy1;
  11073. var cpx2;
  11074. var cpy2;
  11075. curve.shape.extent = Math.max(1, edgeLayout.dy);
  11076. curve.shape.orient = orient;
  11077. if (orient === "vertical") {
  11078. x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy;
  11079. y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy;
  11080. x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty;
  11081. y2 = dragY2 != null ? dragY2 * height : n2Layout.y;
  11082. cpx1 = x1;
  11083. cpy1 = y1 * (1 - curvature) + y2 * curvature;
  11084. cpx2 = x2;
  11085. cpy2 = y1 * curvature + y2 * (1 - curvature);
  11086. } else {
  11087. x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx;
  11088. y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy;
  11089. x2 = dragX2 != null ? dragX2 * width : n2Layout.x;
  11090. y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty;
  11091. cpx1 = x1 * (1 - curvature) + x2 * curvature;
  11092. cpy1 = y1;
  11093. cpx2 = x1 * curvature + x2 * (1 - curvature);
  11094. cpy2 = y2;
  11095. }
  11096. curve.setShape({
  11097. x1,
  11098. y1,
  11099. x2,
  11100. y2,
  11101. cpx1,
  11102. cpy1,
  11103. cpx2,
  11104. cpy2
  11105. });
  11106. curve.useStyle(lineStyleModel.getItemStyle());
  11107. switch (curve.style.fill) {
  11108. case "source":
  11109. curve.style.fill = edge.node1.getVisual("color");
  11110. curve.style.decal = edge.node1.getVisual("style").decal;
  11111. break;
  11112. case "target":
  11113. curve.style.fill = edge.node2.getVisual("color");
  11114. curve.style.decal = edge.node2.getVisual("style").decal;
  11115. break;
  11116. case "gradient":
  11117. var sourceColor = edge.node1.getVisual("color");
  11118. var targetColor = edge.node2.getVisual("color");
  11119. if (isString(sourceColor) && isString(targetColor)) {
  11120. curve.style.fill = new LinearGradient_default(0, 0, +(orient === "horizontal"), +(orient === "vertical"), [{
  11121. color: sourceColor,
  11122. offset: 0
  11123. }, {
  11124. color: targetColor,
  11125. offset: 1
  11126. }]);
  11127. }
  11128. }
  11129. var emphasisModel = edgeModel.getModel("emphasis");
  11130. setStatesStylesFromModel(curve, edgeModel, "lineStyle", function(model) {
  11131. return model.getItemStyle();
  11132. });
  11133. group.add(curve);
  11134. edgeData.setItemGraphicEl(edge.dataIndex, curve);
  11135. var focus = emphasisModel.get("focus");
  11136. toggleHoverEmphasis(curve, focus === "adjacency" ? edge.getAdjacentDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  11137. getECData(curve).dataType = "edge";
  11138. });
  11139. graph.eachNode(function(node) {
  11140. var layout2 = node.getLayout();
  11141. var itemModel = node.getModel();
  11142. var dragX = itemModel.get("localX");
  11143. var dragY = itemModel.get("localY");
  11144. var emphasisModel = itemModel.getModel("emphasis");
  11145. var rect = new Rect_default({
  11146. shape: {
  11147. x: dragX != null ? dragX * width : layout2.x,
  11148. y: dragY != null ? dragY * height : layout2.y,
  11149. width: layout2.dx,
  11150. height: layout2.dy
  11151. },
  11152. style: itemModel.getModel("itemStyle").getItemStyle(),
  11153. z2: 10
  11154. });
  11155. setLabelStyle(rect, getLabelStatesModels(itemModel), {
  11156. labelFetcher: seriesModel,
  11157. labelDataIndex: node.dataIndex,
  11158. defaultText: node.id
  11159. });
  11160. rect.disableLabelAnimation = true;
  11161. rect.setStyle("fill", node.getVisual("color"));
  11162. rect.setStyle("decal", node.getVisual("style").decal);
  11163. setStatesStylesFromModel(rect, itemModel);
  11164. group.add(rect);
  11165. nodeData.setItemGraphicEl(node.dataIndex, rect);
  11166. getECData(rect).dataType = "node";
  11167. var focus = emphasisModel.get("focus");
  11168. toggleHoverEmphasis(rect, focus === "adjacency" ? node.getAdjacentDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  11169. });
  11170. nodeData.eachItemGraphicEl(function(el, dataIndex) {
  11171. var itemModel = nodeData.getItemModel(dataIndex);
  11172. if (itemModel.get("draggable")) {
  11173. el.drift = function(dx, dy) {
  11174. sankeyView._focusAdjacencyDisabled = true;
  11175. this.shape.x += dx;
  11176. this.shape.y += dy;
  11177. this.dirty();
  11178. api.dispatchAction({
  11179. type: "dragNode",
  11180. seriesId: seriesModel.id,
  11181. dataIndex: nodeData.getRawIndex(dataIndex),
  11182. localX: this.shape.x / width,
  11183. localY: this.shape.y / height
  11184. });
  11185. };
  11186. el.ondragend = function() {
  11187. sankeyView._focusAdjacencyDisabled = false;
  11188. };
  11189. el.draggable = true;
  11190. el.cursor = "move";
  11191. }
  11192. });
  11193. if (!this._data && seriesModel.isAnimationEnabled()) {
  11194. group.setClipPath(createGridClipShape2(group.getBoundingRect(), seriesModel, function() {
  11195. group.removeClipPath();
  11196. }));
  11197. }
  11198. this._data = seriesModel.getData();
  11199. };
  11200. SankeyView2.prototype.dispose = function() {
  11201. };
  11202. SankeyView2.type = "sankey";
  11203. return SankeyView2;
  11204. }(Chart_default);
  11205. function createGridClipShape2(rect, seriesModel, cb) {
  11206. var rectEl = new Rect_default({
  11207. shape: {
  11208. x: rect.x - 10,
  11209. y: rect.y - 10,
  11210. width: 0,
  11211. height: rect.height + 20
  11212. }
  11213. });
  11214. initProps(rectEl, {
  11215. shape: {
  11216. width: rect.width + 20
  11217. }
  11218. }, seriesModel, cb);
  11219. return rectEl;
  11220. }
  11221. var SankeyView_default = SankeyView;
  11222. // node_modules/echarts/lib/chart/sankey/SankeySeries.js
  11223. init_define_APP_INFO();
  11224. var SankeySeriesModel = function(_super) {
  11225. __extends(SankeySeriesModel2, _super);
  11226. function SankeySeriesModel2() {
  11227. var _this = _super !== null && _super.apply(this, arguments) || this;
  11228. _this.type = SankeySeriesModel2.type;
  11229. return _this;
  11230. }
  11231. SankeySeriesModel2.prototype.getInitialData = function(option, ecModel) {
  11232. var links = option.edges || option.links;
  11233. var nodes = option.data || option.nodes;
  11234. var levels = option.levels;
  11235. this.levelModels = [];
  11236. var levelModels = this.levelModels;
  11237. for (var i = 0; i < levels.length; i++) {
  11238. if (levels[i].depth != null && levels[i].depth >= 0) {
  11239. levelModels[levels[i].depth] = new Model_default(levels[i], this, ecModel);
  11240. } else {
  11241. if (true) {
  11242. throw new Error("levels[i].depth is mandatory and should be natural number");
  11243. }
  11244. }
  11245. }
  11246. if (nodes && links) {
  11247. var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);
  11248. return graph.data;
  11249. }
  11250. function beforeLink(nodeData, edgeData) {
  11251. nodeData.wrapMethod("getItemModel", function(model, idx) {
  11252. var seriesModel = model.parentModel;
  11253. var layout2 = seriesModel.getData().getItemLayout(idx);
  11254. if (layout2) {
  11255. var nodeDepth = layout2.depth;
  11256. var levelModel = seriesModel.levelModels[nodeDepth];
  11257. if (levelModel) {
  11258. model.parentModel = levelModel;
  11259. }
  11260. }
  11261. return model;
  11262. });
  11263. edgeData.wrapMethod("getItemModel", function(model, idx) {
  11264. var seriesModel = model.parentModel;
  11265. var edge = seriesModel.getGraph().getEdgeByIndex(idx);
  11266. var layout2 = edge.node1.getLayout();
  11267. if (layout2) {
  11268. var depth = layout2.depth;
  11269. var levelModel = seriesModel.levelModels[depth];
  11270. if (levelModel) {
  11271. model.parentModel = levelModel;
  11272. }
  11273. }
  11274. return model;
  11275. });
  11276. }
  11277. };
  11278. SankeySeriesModel2.prototype.setNodePosition = function(dataIndex, localPosition) {
  11279. var nodes = this.option.data || this.option.nodes;
  11280. var dataItem = nodes[dataIndex];
  11281. dataItem.localX = localPosition[0];
  11282. dataItem.localY = localPosition[1];
  11283. };
  11284. SankeySeriesModel2.prototype.getGraph = function() {
  11285. return this.getData().graph;
  11286. };
  11287. SankeySeriesModel2.prototype.getEdgeData = function() {
  11288. return this.getGraph().edgeData;
  11289. };
  11290. SankeySeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
  11291. function noValue(val) {
  11292. return isNaN(val) || val == null;
  11293. }
  11294. if (dataType === "edge") {
  11295. var params = this.getDataParams(dataIndex, dataType);
  11296. var rawDataOpt = params.data;
  11297. var edgeValue = params.value;
  11298. var edgeName = rawDataOpt.source + " -- " + rawDataOpt.target;
  11299. return createTooltipMarkup("nameValue", {
  11300. name: edgeName,
  11301. value: edgeValue,
  11302. noValue: noValue(edgeValue)
  11303. });
  11304. } else {
  11305. var node = this.getGraph().getNodeByIndex(dataIndex);
  11306. var value = node.getLayout().value;
  11307. var name_1 = this.getDataParams(dataIndex, dataType).data.name;
  11308. return createTooltipMarkup("nameValue", {
  11309. name: name_1 != null ? name_1 + "" : null,
  11310. value,
  11311. noValue: noValue(value)
  11312. });
  11313. }
  11314. };
  11315. SankeySeriesModel2.prototype.optionUpdated = function() {
  11316. };
  11317. SankeySeriesModel2.prototype.getDataParams = function(dataIndex, dataType) {
  11318. var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);
  11319. if (params.value == null && dataType === "node") {
  11320. var node = this.getGraph().getNodeByIndex(dataIndex);
  11321. var nodeValue = node.getLayout().value;
  11322. params.value = nodeValue;
  11323. }
  11324. return params;
  11325. };
  11326. SankeySeriesModel2.type = "series.sankey";
  11327. SankeySeriesModel2.defaultOption = {
  11328. z: 2,
  11329. coordinateSystem: "view",
  11330. left: "5%",
  11331. top: "5%",
  11332. right: "20%",
  11333. bottom: "5%",
  11334. orient: "horizontal",
  11335. nodeWidth: 20,
  11336. nodeGap: 8,
  11337. draggable: true,
  11338. layoutIterations: 32,
  11339. label: {
  11340. show: true,
  11341. position: "right",
  11342. fontSize: 12
  11343. },
  11344. levels: [],
  11345. nodeAlign: "justify",
  11346. lineStyle: {
  11347. color: "#314656",
  11348. opacity: 0.2,
  11349. curveness: 0.5
  11350. },
  11351. emphasis: {
  11352. label: {
  11353. show: true
  11354. },
  11355. lineStyle: {
  11356. opacity: 0.5
  11357. }
  11358. },
  11359. select: {
  11360. itemStyle: {
  11361. borderColor: "#212121"
  11362. }
  11363. },
  11364. animationEasing: "linear",
  11365. animationDuration: 1e3
  11366. };
  11367. return SankeySeriesModel2;
  11368. }(Series_default);
  11369. var SankeySeries_default = SankeySeriesModel;
  11370. // node_modules/echarts/lib/chart/sankey/sankeyLayout.js
  11371. init_define_APP_INFO();
  11372. function sankeyLayout(ecModel, api) {
  11373. ecModel.eachSeriesByType("sankey", function(seriesModel) {
  11374. var nodeWidth = seriesModel.get("nodeWidth");
  11375. var nodeGap = seriesModel.get("nodeGap");
  11376. var layoutInfo = getViewRect5(seriesModel, api);
  11377. seriesModel.layoutInfo = layoutInfo;
  11378. var width = layoutInfo.width;
  11379. var height = layoutInfo.height;
  11380. var graph = seriesModel.getGraph();
  11381. var nodes = graph.nodes;
  11382. var edges = graph.edges;
  11383. computeNodeValues(nodes);
  11384. var filteredNodes = filter(nodes, function(node) {
  11385. return node.getLayout().value === 0;
  11386. });
  11387. var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get("layoutIterations");
  11388. var orient = seriesModel.get("orient");
  11389. var nodeAlign = seriesModel.get("nodeAlign");
  11390. layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign);
  11391. });
  11392. }
  11393. function getViewRect5(seriesModel, api) {
  11394. return getLayoutRect(seriesModel.getBoxLayoutParams(), {
  11395. width: api.getWidth(),
  11396. height: api.getHeight()
  11397. });
  11398. }
  11399. function layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) {
  11400. computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign);
  11401. computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient);
  11402. computeEdgeDepths(nodes, orient);
  11403. }
  11404. function computeNodeValues(nodes) {
  11405. each(nodes, function(node) {
  11406. var value1 = sum(node.outEdges, getEdgeValue);
  11407. var value2 = sum(node.inEdges, getEdgeValue);
  11408. var nodeRawValue = node.getValue() || 0;
  11409. var value = Math.max(value1, value2, nodeRawValue);
  11410. node.setLayout({
  11411. value
  11412. }, true);
  11413. });
  11414. }
  11415. function computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) {
  11416. var remainEdges = [];
  11417. var indegreeArr = [];
  11418. var zeroIndegrees = [];
  11419. var nextTargetNode = [];
  11420. var x = 0;
  11421. for (var i = 0; i < edges.length; i++) {
  11422. remainEdges[i] = 1;
  11423. }
  11424. for (var i = 0; i < nodes.length; i++) {
  11425. indegreeArr[i] = nodes[i].inEdges.length;
  11426. if (indegreeArr[i] === 0) {
  11427. zeroIndegrees.push(nodes[i]);
  11428. }
  11429. }
  11430. var maxNodeDepth = -1;
  11431. while (zeroIndegrees.length) {
  11432. for (var idx = 0; idx < zeroIndegrees.length; idx++) {
  11433. var node = zeroIndegrees[idx];
  11434. var item = node.hostGraph.data.getRawDataItem(node.dataIndex);
  11435. var isItemDepth = item.depth != null && item.depth >= 0;
  11436. if (isItemDepth && item.depth > maxNodeDepth) {
  11437. maxNodeDepth = item.depth;
  11438. }
  11439. node.setLayout({
  11440. depth: isItemDepth ? item.depth : x
  11441. }, true);
  11442. orient === "vertical" ? node.setLayout({
  11443. dy: nodeWidth
  11444. }, true) : node.setLayout({
  11445. dx: nodeWidth
  11446. }, true);
  11447. for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) {
  11448. var edge = node.outEdges[edgeIdx];
  11449. var indexEdge = edges.indexOf(edge);
  11450. remainEdges[indexEdge] = 0;
  11451. var targetNode = edge.node2;
  11452. var nodeIndex = nodes.indexOf(targetNode);
  11453. if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) {
  11454. nextTargetNode.push(targetNode);
  11455. }
  11456. }
  11457. }
  11458. ++x;
  11459. zeroIndegrees = nextTargetNode;
  11460. nextTargetNode = [];
  11461. }
  11462. for (var i = 0; i < remainEdges.length; i++) {
  11463. if (remainEdges[i] === 1) {
  11464. throw new Error("Sankey is a DAG, the original data has cycle!");
  11465. }
  11466. }
  11467. var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1;
  11468. if (nodeAlign && nodeAlign !== "left") {
  11469. adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth);
  11470. }
  11471. var kx = orient === "vertical" ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth;
  11472. scaleNodeBreadths(nodes, kx, orient);
  11473. }
  11474. function isNodeDepth(node) {
  11475. var item = node.hostGraph.data.getRawDataItem(node.dataIndex);
  11476. return item.depth != null && item.depth >= 0;
  11477. }
  11478. function adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {
  11479. if (nodeAlign === "right") {
  11480. var nextSourceNode = [];
  11481. var remainNodes = nodes;
  11482. var nodeHeight = 0;
  11483. while (remainNodes.length) {
  11484. for (var i = 0; i < remainNodes.length; i++) {
  11485. var node = remainNodes[i];
  11486. node.setLayout({
  11487. skNodeHeight: nodeHeight
  11488. }, true);
  11489. for (var j = 0; j < node.inEdges.length; j++) {
  11490. var edge = node.inEdges[j];
  11491. if (nextSourceNode.indexOf(edge.node1) < 0) {
  11492. nextSourceNode.push(edge.node1);
  11493. }
  11494. }
  11495. }
  11496. remainNodes = nextSourceNode;
  11497. nextSourceNode = [];
  11498. ++nodeHeight;
  11499. }
  11500. each(nodes, function(node2) {
  11501. if (!isNodeDepth(node2)) {
  11502. node2.setLayout({
  11503. depth: Math.max(0, maxDepth - node2.getLayout().skNodeHeight)
  11504. }, true);
  11505. }
  11506. });
  11507. } else if (nodeAlign === "justify") {
  11508. moveSinksRight(nodes, maxDepth);
  11509. }
  11510. }
  11511. function moveSinksRight(nodes, maxDepth) {
  11512. each(nodes, function(node) {
  11513. if (!isNodeDepth(node) && !node.outEdges.length) {
  11514. node.setLayout({
  11515. depth: maxDepth
  11516. }, true);
  11517. }
  11518. });
  11519. }
  11520. function scaleNodeBreadths(nodes, kx, orient) {
  11521. each(nodes, function(node) {
  11522. var nodeDepth = node.getLayout().depth * kx;
  11523. orient === "vertical" ? node.setLayout({
  11524. y: nodeDepth
  11525. }, true) : node.setLayout({
  11526. x: nodeDepth
  11527. }, true);
  11528. });
  11529. }
  11530. function computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) {
  11531. var nodesByBreadth = prepareNodesByBreadth(nodes, orient);
  11532. initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient);
  11533. resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);
  11534. for (var alpha = 1; iterations > 0; iterations--) {
  11535. alpha *= 0.99;
  11536. relaxRightToLeft(nodesByBreadth, alpha, orient);
  11537. resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);
  11538. relaxLeftToRight(nodesByBreadth, alpha, orient);
  11539. resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);
  11540. }
  11541. }
  11542. function prepareNodesByBreadth(nodes, orient) {
  11543. var nodesByBreadth = [];
  11544. var keyAttr = orient === "vertical" ? "y" : "x";
  11545. var groupResult = groupData(nodes, function(node) {
  11546. return node.getLayout()[keyAttr];
  11547. });
  11548. groupResult.keys.sort(function(a, b) {
  11549. return a - b;
  11550. });
  11551. each(groupResult.keys, function(key) {
  11552. nodesByBreadth.push(groupResult.buckets.get(key));
  11553. });
  11554. return nodesByBreadth;
  11555. }
  11556. function initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) {
  11557. var minKy = Infinity;
  11558. each(nodesByBreadth, function(nodes) {
  11559. var n = nodes.length;
  11560. var sum2 = 0;
  11561. each(nodes, function(node) {
  11562. sum2 += node.getLayout().value;
  11563. });
  11564. var ky = orient === "vertical" ? (width - (n - 1) * nodeGap) / sum2 : (height - (n - 1) * nodeGap) / sum2;
  11565. if (ky < minKy) {
  11566. minKy = ky;
  11567. }
  11568. });
  11569. each(nodesByBreadth, function(nodes) {
  11570. each(nodes, function(node, i) {
  11571. var nodeDy = node.getLayout().value * minKy;
  11572. if (orient === "vertical") {
  11573. node.setLayout({
  11574. x: i
  11575. }, true);
  11576. node.setLayout({
  11577. dx: nodeDy
  11578. }, true);
  11579. } else {
  11580. node.setLayout({
  11581. y: i
  11582. }, true);
  11583. node.setLayout({
  11584. dy: nodeDy
  11585. }, true);
  11586. }
  11587. });
  11588. });
  11589. each(edges, function(edge) {
  11590. var edgeDy = +edge.getValue() * minKy;
  11591. edge.setLayout({
  11592. dy: edgeDy
  11593. }, true);
  11594. });
  11595. }
  11596. function resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {
  11597. var keyAttr = orient === "vertical" ? "x" : "y";
  11598. each(nodesByBreadth, function(nodes) {
  11599. nodes.sort(function(a, b) {
  11600. return a.getLayout()[keyAttr] - b.getLayout()[keyAttr];
  11601. });
  11602. var nodeX;
  11603. var node;
  11604. var dy;
  11605. var y0 = 0;
  11606. var n = nodes.length;
  11607. var nodeDyAttr = orient === "vertical" ? "dx" : "dy";
  11608. for (var i = 0; i < n; i++) {
  11609. node = nodes[i];
  11610. dy = y0 - node.getLayout()[keyAttr];
  11611. if (dy > 0) {
  11612. nodeX = node.getLayout()[keyAttr] + dy;
  11613. orient === "vertical" ? node.setLayout({
  11614. x: nodeX
  11615. }, true) : node.setLayout({
  11616. y: nodeX
  11617. }, true);
  11618. }
  11619. y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap;
  11620. }
  11621. var viewWidth = orient === "vertical" ? width : height;
  11622. dy = y0 - nodeGap - viewWidth;
  11623. if (dy > 0) {
  11624. nodeX = node.getLayout()[keyAttr] - dy;
  11625. orient === "vertical" ? node.setLayout({
  11626. x: nodeX
  11627. }, true) : node.setLayout({
  11628. y: nodeX
  11629. }, true);
  11630. y0 = nodeX;
  11631. for (var i = n - 2; i >= 0; --i) {
  11632. node = nodes[i];
  11633. dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0;
  11634. if (dy > 0) {
  11635. nodeX = node.getLayout()[keyAttr] - dy;
  11636. orient === "vertical" ? node.setLayout({
  11637. x: nodeX
  11638. }, true) : node.setLayout({
  11639. y: nodeX
  11640. }, true);
  11641. }
  11642. y0 = node.getLayout()[keyAttr];
  11643. }
  11644. }
  11645. });
  11646. }
  11647. function relaxRightToLeft(nodesByBreadth, alpha, orient) {
  11648. each(nodesByBreadth.slice().reverse(), function(nodes) {
  11649. each(nodes, function(node) {
  11650. if (node.outEdges.length) {
  11651. var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue);
  11652. if (isNaN(y)) {
  11653. var len2 = node.outEdges.length;
  11654. y = len2 ? sum(node.outEdges, centerTarget, orient) / len2 : 0;
  11655. }
  11656. if (orient === "vertical") {
  11657. var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;
  11658. node.setLayout({
  11659. x: nodeX
  11660. }, true);
  11661. } else {
  11662. var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;
  11663. node.setLayout({
  11664. y: nodeY
  11665. }, true);
  11666. }
  11667. }
  11668. });
  11669. });
  11670. }
  11671. function weightedTarget(edge, orient) {
  11672. return center(edge.node2, orient) * edge.getValue();
  11673. }
  11674. function centerTarget(edge, orient) {
  11675. return center(edge.node2, orient);
  11676. }
  11677. function weightedSource(edge, orient) {
  11678. return center(edge.node1, orient) * edge.getValue();
  11679. }
  11680. function centerSource(edge, orient) {
  11681. return center(edge.node1, orient);
  11682. }
  11683. function center(node, orient) {
  11684. return orient === "vertical" ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2;
  11685. }
  11686. function getEdgeValue(edge) {
  11687. return edge.getValue();
  11688. }
  11689. function sum(array, cb, orient) {
  11690. var sum2 = 0;
  11691. var len2 = array.length;
  11692. var i = -1;
  11693. while (++i < len2) {
  11694. var value = +cb(array[i], orient);
  11695. if (!isNaN(value)) {
  11696. sum2 += value;
  11697. }
  11698. }
  11699. return sum2;
  11700. }
  11701. function relaxLeftToRight(nodesByBreadth, alpha, orient) {
  11702. each(nodesByBreadth, function(nodes) {
  11703. each(nodes, function(node) {
  11704. if (node.inEdges.length) {
  11705. var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue);
  11706. if (isNaN(y)) {
  11707. var len2 = node.inEdges.length;
  11708. y = len2 ? sum(node.inEdges, centerSource, orient) / len2 : 0;
  11709. }
  11710. if (orient === "vertical") {
  11711. var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;
  11712. node.setLayout({
  11713. x: nodeX
  11714. }, true);
  11715. } else {
  11716. var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;
  11717. node.setLayout({
  11718. y: nodeY
  11719. }, true);
  11720. }
  11721. }
  11722. });
  11723. });
  11724. }
  11725. function computeEdgeDepths(nodes, orient) {
  11726. var keyAttr = orient === "vertical" ? "x" : "y";
  11727. each(nodes, function(node) {
  11728. node.outEdges.sort(function(a, b) {
  11729. return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr];
  11730. });
  11731. node.inEdges.sort(function(a, b) {
  11732. return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr];
  11733. });
  11734. });
  11735. each(nodes, function(node) {
  11736. var sy = 0;
  11737. var ty = 0;
  11738. each(node.outEdges, function(edge) {
  11739. edge.setLayout({
  11740. sy
  11741. }, true);
  11742. sy += edge.getLayout().dy;
  11743. });
  11744. each(node.inEdges, function(edge) {
  11745. edge.setLayout({
  11746. ty
  11747. }, true);
  11748. ty += edge.getLayout().dy;
  11749. });
  11750. });
  11751. }
  11752. // node_modules/echarts/lib/chart/sankey/sankeyVisual.js
  11753. init_define_APP_INFO();
  11754. function sankeyVisual(ecModel) {
  11755. ecModel.eachSeriesByType("sankey", function(seriesModel) {
  11756. var graph = seriesModel.getGraph();
  11757. var nodes = graph.nodes;
  11758. if (nodes.length) {
  11759. var minValue_1 = Infinity;
  11760. var maxValue_1 = -Infinity;
  11761. each(nodes, function(node) {
  11762. var nodeValue = node.getLayout().value;
  11763. if (nodeValue < minValue_1) {
  11764. minValue_1 = nodeValue;
  11765. }
  11766. if (nodeValue > maxValue_1) {
  11767. maxValue_1 = nodeValue;
  11768. }
  11769. });
  11770. each(nodes, function(node) {
  11771. var mapping = new VisualMapping_default({
  11772. type: "color",
  11773. mappingMethod: "linear",
  11774. dataExtent: [minValue_1, maxValue_1],
  11775. visual: seriesModel.get("color")
  11776. });
  11777. var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);
  11778. var customColor = node.getModel().get(["itemStyle", "color"]);
  11779. if (customColor != null) {
  11780. node.setVisual("color", customColor);
  11781. node.setVisual("style", {
  11782. fill: customColor
  11783. });
  11784. } else {
  11785. node.setVisual("color", mapValueToColor);
  11786. node.setVisual("style", {
  11787. fill: mapValueToColor
  11788. });
  11789. }
  11790. });
  11791. }
  11792. });
  11793. }
  11794. // node_modules/echarts/lib/chart/sankey/install.js
  11795. function install17(registers) {
  11796. registers.registerChartView(SankeyView_default);
  11797. registers.registerSeriesModel(SankeySeries_default);
  11798. registers.registerLayout(sankeyLayout);
  11799. registers.registerVisual(sankeyVisual);
  11800. registers.registerAction({
  11801. type: "dragNode",
  11802. event: "dragnode",
  11803. update: "update"
  11804. }, function(payload, ecModel) {
  11805. ecModel.eachComponent({
  11806. mainType: "series",
  11807. subType: "sankey",
  11808. query: payload
  11809. }, function(seriesModel) {
  11810. seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]);
  11811. });
  11812. });
  11813. }
  11814. // node_modules/echarts/lib/chart/boxplot/install.js
  11815. init_define_APP_INFO();
  11816. // node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js
  11817. init_define_APP_INFO();
  11818. // node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js
  11819. init_define_APP_INFO();
  11820. var WhiskerBoxCommonMixin = function() {
  11821. function WhiskerBoxCommonMixin2() {
  11822. }
  11823. WhiskerBoxCommonMixin2.prototype.getInitialData = function(option, ecModel) {
  11824. var ordinalMeta;
  11825. var xAxisModel = ecModel.getComponent("xAxis", this.get("xAxisIndex"));
  11826. var yAxisModel = ecModel.getComponent("yAxis", this.get("yAxisIndex"));
  11827. var xAxisType = xAxisModel.get("type");
  11828. var yAxisType = yAxisModel.get("type");
  11829. var addOrdinal;
  11830. if (xAxisType === "category") {
  11831. option.layout = "horizontal";
  11832. ordinalMeta = xAxisModel.getOrdinalMeta();
  11833. addOrdinal = true;
  11834. } else if (yAxisType === "category") {
  11835. option.layout = "vertical";
  11836. ordinalMeta = yAxisModel.getOrdinalMeta();
  11837. addOrdinal = true;
  11838. } else {
  11839. option.layout = option.layout || "horizontal";
  11840. }
  11841. var coordDims = ["x", "y"];
  11842. var baseAxisDimIndex = option.layout === "horizontal" ? 0 : 1;
  11843. var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];
  11844. var otherAxisDim = coordDims[1 - baseAxisDimIndex];
  11845. var axisModels = [xAxisModel, yAxisModel];
  11846. var baseAxisType = axisModels[baseAxisDimIndex].get("type");
  11847. var otherAxisType = axisModels[1 - baseAxisDimIndex].get("type");
  11848. var data = option.data;
  11849. if (data && addOrdinal) {
  11850. var newOptionData_1 = [];
  11851. each(data, function(item, index) {
  11852. var newItem;
  11853. if (isArray(item)) {
  11854. newItem = item.slice();
  11855. item.unshift(index);
  11856. } else if (isArray(item.value)) {
  11857. newItem = extend({}, item);
  11858. newItem.value = newItem.value.slice();
  11859. item.value.unshift(index);
  11860. } else {
  11861. newItem = item;
  11862. }
  11863. newOptionData_1.push(newItem);
  11864. });
  11865. option.data = newOptionData_1;
  11866. }
  11867. var defaultValueDimensions = this.defaultValueDimensions;
  11868. var coordDimensions = [{
  11869. name: baseAxisDim,
  11870. type: getDimensionTypeByAxis(baseAxisType),
  11871. ordinalMeta,
  11872. otherDims: {
  11873. tooltip: false,
  11874. itemName: 0
  11875. },
  11876. dimsDef: ["base"]
  11877. }, {
  11878. name: otherAxisDim,
  11879. type: getDimensionTypeByAxis(otherAxisType),
  11880. dimsDef: defaultValueDimensions.slice()
  11881. }];
  11882. return createSeriesDataSimply(this, {
  11883. coordDimensions,
  11884. dimensionsCount: defaultValueDimensions.length + 1,
  11885. encodeDefaulter: curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)
  11886. });
  11887. };
  11888. WhiskerBoxCommonMixin2.prototype.getBaseAxis = function() {
  11889. var dim = this._baseAxisDim;
  11890. return this.ecModel.getComponent(dim + "Axis", this.get(dim + "AxisIndex")).axis;
  11891. };
  11892. return WhiskerBoxCommonMixin2;
  11893. }();
  11894. // node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js
  11895. var BoxplotSeriesModel = function(_super) {
  11896. __extends(BoxplotSeriesModel2, _super);
  11897. function BoxplotSeriesModel2() {
  11898. var _this = _super !== null && _super.apply(this, arguments) || this;
  11899. _this.type = BoxplotSeriesModel2.type;
  11900. _this.defaultValueDimensions = [{
  11901. name: "min",
  11902. defaultTooltip: true
  11903. }, {
  11904. name: "Q1",
  11905. defaultTooltip: true
  11906. }, {
  11907. name: "median",
  11908. defaultTooltip: true
  11909. }, {
  11910. name: "Q3",
  11911. defaultTooltip: true
  11912. }, {
  11913. name: "max",
  11914. defaultTooltip: true
  11915. }];
  11916. _this.visualDrawType = "stroke";
  11917. return _this;
  11918. }
  11919. BoxplotSeriesModel2.type = "series.boxplot";
  11920. BoxplotSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"];
  11921. BoxplotSeriesModel2.defaultOption = {
  11922. z: 2,
  11923. coordinateSystem: "cartesian2d",
  11924. legendHoverLink: true,
  11925. layout: null,
  11926. boxWidth: [7, 50],
  11927. itemStyle: {
  11928. color: "#fff",
  11929. borderWidth: 1
  11930. },
  11931. emphasis: {
  11932. scale: true,
  11933. itemStyle: {
  11934. borderWidth: 2,
  11935. shadowBlur: 5,
  11936. shadowOffsetX: 1,
  11937. shadowOffsetY: 1,
  11938. shadowColor: "rgba(0,0,0,0.2)"
  11939. }
  11940. },
  11941. animationDuration: 800
  11942. };
  11943. return BoxplotSeriesModel2;
  11944. }(Series_default);
  11945. mixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true);
  11946. var BoxplotSeries_default = BoxplotSeriesModel;
  11947. // node_modules/echarts/lib/chart/boxplot/BoxplotView.js
  11948. init_define_APP_INFO();
  11949. var BoxplotView = function(_super) {
  11950. __extends(BoxplotView2, _super);
  11951. function BoxplotView2() {
  11952. var _this = _super !== null && _super.apply(this, arguments) || this;
  11953. _this.type = BoxplotView2.type;
  11954. return _this;
  11955. }
  11956. BoxplotView2.prototype.render = function(seriesModel, ecModel, api) {
  11957. var data = seriesModel.getData();
  11958. var group = this.group;
  11959. var oldData = this._data;
  11960. if (!this._data) {
  11961. group.removeAll();
  11962. }
  11963. var constDim = seriesModel.get("layout") === "horizontal" ? 1 : 0;
  11964. data.diff(oldData).add(function(newIdx) {
  11965. if (data.hasValue(newIdx)) {
  11966. var itemLayout = data.getItemLayout(newIdx);
  11967. var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);
  11968. data.setItemGraphicEl(newIdx, symbolEl);
  11969. group.add(symbolEl);
  11970. }
  11971. }).update(function(newIdx, oldIdx) {
  11972. var symbolEl = oldData.getItemGraphicEl(oldIdx);
  11973. if (!data.hasValue(newIdx)) {
  11974. group.remove(symbolEl);
  11975. return;
  11976. }
  11977. var itemLayout = data.getItemLayout(newIdx);
  11978. if (!symbolEl) {
  11979. symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);
  11980. } else {
  11981. saveOldStyle(symbolEl);
  11982. updateNormalBoxData(itemLayout, symbolEl, data, newIdx);
  11983. }
  11984. group.add(symbolEl);
  11985. data.setItemGraphicEl(newIdx, symbolEl);
  11986. }).remove(function(oldIdx) {
  11987. var el = oldData.getItemGraphicEl(oldIdx);
  11988. el && group.remove(el);
  11989. }).execute();
  11990. this._data = data;
  11991. };
  11992. BoxplotView2.prototype.remove = function(ecModel) {
  11993. var group = this.group;
  11994. var data = this._data;
  11995. this._data = null;
  11996. data && data.eachItemGraphicEl(function(el) {
  11997. el && group.remove(el);
  11998. });
  11999. };
  12000. BoxplotView2.type = "boxplot";
  12001. return BoxplotView2;
  12002. }(Chart_default);
  12003. var BoxPathShape = function() {
  12004. function BoxPathShape2() {
  12005. }
  12006. return BoxPathShape2;
  12007. }();
  12008. var BoxPath = function(_super) {
  12009. __extends(BoxPath2, _super);
  12010. function BoxPath2(opts) {
  12011. var _this = _super.call(this, opts) || this;
  12012. _this.type = "boxplotBoxPath";
  12013. return _this;
  12014. }
  12015. BoxPath2.prototype.getDefaultShape = function() {
  12016. return new BoxPathShape();
  12017. };
  12018. BoxPath2.prototype.buildPath = function(ctx, shape) {
  12019. var ends = shape.points;
  12020. var i = 0;
  12021. ctx.moveTo(ends[i][0], ends[i][1]);
  12022. i++;
  12023. for (; i < 4; i++) {
  12024. ctx.lineTo(ends[i][0], ends[i][1]);
  12025. }
  12026. ctx.closePath();
  12027. for (; i < ends.length; i++) {
  12028. ctx.moveTo(ends[i][0], ends[i][1]);
  12029. i++;
  12030. ctx.lineTo(ends[i][0], ends[i][1]);
  12031. }
  12032. };
  12033. return BoxPath2;
  12034. }(Path_default);
  12035. function createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {
  12036. var ends = itemLayout.ends;
  12037. var el = new BoxPath({
  12038. shape: {
  12039. points: isInit ? transInit(ends, constDim, itemLayout) : ends
  12040. }
  12041. });
  12042. updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);
  12043. return el;
  12044. }
  12045. function updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {
  12046. var seriesModel = data.hostModel;
  12047. var updateMethod = graphic_exports[isInit ? "initProps" : "updateProps"];
  12048. updateMethod(el, {
  12049. shape: {
  12050. points: itemLayout.ends
  12051. }
  12052. }, seriesModel, dataIndex);
  12053. el.useStyle(data.getItemVisual(dataIndex, "style"));
  12054. el.style.strokeNoScale = true;
  12055. el.z2 = 100;
  12056. var itemModel = data.getItemModel(dataIndex);
  12057. var emphasisModel = itemModel.getModel("emphasis");
  12058. setStatesStylesFromModel(el, itemModel);
  12059. toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  12060. }
  12061. function transInit(points, dim, itemLayout) {
  12062. return map(points, function(point) {
  12063. point = point.slice();
  12064. point[dim] = itemLayout.initBaseline;
  12065. return point;
  12066. });
  12067. }
  12068. var BoxplotView_default = BoxplotView;
  12069. // node_modules/echarts/lib/chart/boxplot/boxplotVisual.js
  12070. init_define_APP_INFO();
  12071. function boxplotVisual(ecModel, api) {
  12072. }
  12073. // node_modules/echarts/lib/chart/boxplot/boxplotLayout.js
  12074. init_define_APP_INFO();
  12075. var each3 = each;
  12076. function boxplotLayout(ecModel) {
  12077. var groupResult = groupSeriesByAxis(ecModel);
  12078. each3(groupResult, function(groupItem) {
  12079. var seriesModels = groupItem.seriesModels;
  12080. if (!seriesModels.length) {
  12081. return;
  12082. }
  12083. calculateBase(groupItem);
  12084. each3(seriesModels, function(seriesModel, idx) {
  12085. layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);
  12086. });
  12087. });
  12088. }
  12089. function groupSeriesByAxis(ecModel) {
  12090. var result = [];
  12091. var axisList = [];
  12092. ecModel.eachSeriesByType("boxplot", function(seriesModel) {
  12093. var baseAxis = seriesModel.getBaseAxis();
  12094. var idx = indexOf(axisList, baseAxis);
  12095. if (idx < 0) {
  12096. idx = axisList.length;
  12097. axisList[idx] = baseAxis;
  12098. result[idx] = {
  12099. axis: baseAxis,
  12100. seriesModels: []
  12101. };
  12102. }
  12103. result[idx].seriesModels.push(seriesModel);
  12104. });
  12105. return result;
  12106. }
  12107. function calculateBase(groupItem) {
  12108. var baseAxis = groupItem.axis;
  12109. var seriesModels = groupItem.seriesModels;
  12110. var seriesCount = seriesModels.length;
  12111. var boxWidthList = groupItem.boxWidthList = [];
  12112. var boxOffsetList = groupItem.boxOffsetList = [];
  12113. var boundList = [];
  12114. var bandWidth;
  12115. if (baseAxis.type === "category") {
  12116. bandWidth = baseAxis.getBandWidth();
  12117. } else {
  12118. var maxDataCount_1 = 0;
  12119. each3(seriesModels, function(seriesModel) {
  12120. maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count());
  12121. });
  12122. var extent = baseAxis.getExtent();
  12123. bandWidth = Math.abs(extent[1] - extent[0]) / maxDataCount_1;
  12124. }
  12125. each3(seriesModels, function(seriesModel) {
  12126. var boxWidthBound = seriesModel.get("boxWidth");
  12127. if (!isArray(boxWidthBound)) {
  12128. boxWidthBound = [boxWidthBound, boxWidthBound];
  12129. }
  12130. boundList.push([parsePercent2(boxWidthBound[0], bandWidth) || 0, parsePercent2(boxWidthBound[1], bandWidth) || 0]);
  12131. });
  12132. var availableWidth = bandWidth * 0.8 - 2;
  12133. var boxGap = availableWidth / seriesCount * 0.3;
  12134. var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;
  12135. var base = boxWidth / 2 - availableWidth / 2;
  12136. each3(seriesModels, function(seriesModel, idx) {
  12137. boxOffsetList.push(base);
  12138. base += boxGap + boxWidth;
  12139. boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));
  12140. });
  12141. }
  12142. function layoutSingleSeries(seriesModel, offset, boxWidth) {
  12143. var coordSys = seriesModel.coordinateSystem;
  12144. var data = seriesModel.getData();
  12145. var halfWidth = boxWidth / 2;
  12146. var cDimIdx = seriesModel.get("layout") === "horizontal" ? 0 : 1;
  12147. var vDimIdx = 1 - cDimIdx;
  12148. var coordDims = ["x", "y"];
  12149. var cDim = data.mapDimension(coordDims[cDimIdx]);
  12150. var vDims = data.mapDimensionsAll(coordDims[vDimIdx]);
  12151. if (cDim == null || vDims.length < 5) {
  12152. return;
  12153. }
  12154. for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {
  12155. var axisDimVal = data.get(cDim, dataIndex);
  12156. var median = getPoint(axisDimVal, vDims[2], dataIndex);
  12157. var end1 = getPoint(axisDimVal, vDims[0], dataIndex);
  12158. var end2 = getPoint(axisDimVal, vDims[1], dataIndex);
  12159. var end4 = getPoint(axisDimVal, vDims[3], dataIndex);
  12160. var end5 = getPoint(axisDimVal, vDims[4], dataIndex);
  12161. var ends = [];
  12162. addBodyEnd(ends, end2, false);
  12163. addBodyEnd(ends, end4, true);
  12164. ends.push(end1, end2, end5, end4);
  12165. layEndLine(ends, end1);
  12166. layEndLine(ends, end5);
  12167. layEndLine(ends, median);
  12168. data.setItemLayout(dataIndex, {
  12169. initBaseline: median[vDimIdx],
  12170. ends
  12171. });
  12172. }
  12173. function getPoint(axisDimVal2, dim, dataIndex2) {
  12174. var val = data.get(dim, dataIndex2);
  12175. var p = [];
  12176. p[cDimIdx] = axisDimVal2;
  12177. p[vDimIdx] = val;
  12178. var point;
  12179. if (isNaN(axisDimVal2) || isNaN(val)) {
  12180. point = [NaN, NaN];
  12181. } else {
  12182. point = coordSys.dataToPoint(p);
  12183. point[cDimIdx] += offset;
  12184. }
  12185. return point;
  12186. }
  12187. function addBodyEnd(ends2, point, start) {
  12188. var point1 = point.slice();
  12189. var point2 = point.slice();
  12190. point1[cDimIdx] += halfWidth;
  12191. point2[cDimIdx] -= halfWidth;
  12192. start ? ends2.push(point1, point2) : ends2.push(point2, point1);
  12193. }
  12194. function layEndLine(ends2, endCenter) {
  12195. var from = endCenter.slice();
  12196. var to = endCenter.slice();
  12197. from[cDimIdx] -= halfWidth;
  12198. to[cDimIdx] += halfWidth;
  12199. ends2.push(from, to);
  12200. }
  12201. }
  12202. // node_modules/echarts/lib/chart/boxplot/boxplotTransform.js
  12203. init_define_APP_INFO();
  12204. // node_modules/echarts/lib/chart/boxplot/prepareBoxplotData.js
  12205. init_define_APP_INFO();
  12206. function prepareBoxplotData(rawData, opt) {
  12207. opt = opt || {};
  12208. var boxData = [];
  12209. var outliers = [];
  12210. var boundIQR = opt.boundIQR;
  12211. var useExtreme = boundIQR === "none" || boundIQR === 0;
  12212. for (var i = 0; i < rawData.length; i++) {
  12213. var ascList = asc(rawData[i].slice());
  12214. var Q1 = quantile(ascList, 0.25);
  12215. var Q2 = quantile(ascList, 0.5);
  12216. var Q3 = quantile(ascList, 0.75);
  12217. var min = ascList[0];
  12218. var max = ascList[ascList.length - 1];
  12219. var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1);
  12220. var low = useExtreme ? min : Math.max(min, Q1 - bound);
  12221. var high = useExtreme ? max : Math.min(max, Q3 + bound);
  12222. var itemNameFormatter = opt.itemNameFormatter;
  12223. var itemName = isFunction(itemNameFormatter) ? itemNameFormatter({
  12224. value: i
  12225. }) : isString(itemNameFormatter) ? itemNameFormatter.replace("{value}", i + "") : i + "";
  12226. boxData.push([itemName, low, Q1, Q2, Q3, high]);
  12227. for (var j = 0; j < ascList.length; j++) {
  12228. var dataItem = ascList[j];
  12229. if (dataItem < low || dataItem > high) {
  12230. var outlier = [itemName, dataItem];
  12231. outliers.push(outlier);
  12232. }
  12233. }
  12234. }
  12235. return {
  12236. boxData,
  12237. outliers
  12238. };
  12239. }
  12240. // node_modules/echarts/lib/chart/boxplot/boxplotTransform.js
  12241. var boxplotTransform = {
  12242. type: "echarts:boxplot",
  12243. transform: function transform(params) {
  12244. var upstream = params.upstream;
  12245. if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) {
  12246. var errMsg = "";
  12247. if (true) {
  12248. errMsg = makePrintable("source data is not applicable for this boxplot transform. Expect number[][].");
  12249. }
  12250. throwError(errMsg);
  12251. }
  12252. var result = prepareBoxplotData(upstream.getRawData(), params.config);
  12253. return [{
  12254. dimensions: ["ItemName", "Low", "Q1", "Q2", "Q3", "High"],
  12255. data: result.boxData
  12256. }, {
  12257. data: result.outliers
  12258. }];
  12259. }
  12260. };
  12261. // node_modules/echarts/lib/chart/boxplot/install.js
  12262. function install18(registers) {
  12263. registers.registerSeriesModel(BoxplotSeries_default);
  12264. registers.registerChartView(BoxplotView_default);
  12265. registers.registerVisual(boxplotVisual);
  12266. registers.registerLayout(boxplotLayout);
  12267. registers.registerTransform(boxplotTransform);
  12268. }
  12269. // node_modules/echarts/lib/chart/candlestick/install.js
  12270. init_define_APP_INFO();
  12271. // node_modules/echarts/lib/chart/candlestick/CandlestickView.js
  12272. init_define_APP_INFO();
  12273. var SKIP_PROPS = ["color", "borderColor"];
  12274. var CandlestickView = function(_super) {
  12275. __extends(CandlestickView2, _super);
  12276. function CandlestickView2() {
  12277. var _this = _super !== null && _super.apply(this, arguments) || this;
  12278. _this.type = CandlestickView2.type;
  12279. return _this;
  12280. }
  12281. CandlestickView2.prototype.render = function(seriesModel, ecModel, api) {
  12282. this.group.removeClipPath();
  12283. this._progressiveEls = null;
  12284. this._updateDrawMode(seriesModel);
  12285. this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);
  12286. };
  12287. CandlestickView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
  12288. this._clear();
  12289. this._updateDrawMode(seriesModel);
  12290. };
  12291. CandlestickView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) {
  12292. this._progressiveEls = [];
  12293. this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);
  12294. };
  12295. CandlestickView2.prototype.eachRendered = function(cb) {
  12296. traverseElements(this._progressiveEls || this.group, cb);
  12297. };
  12298. CandlestickView2.prototype._updateDrawMode = function(seriesModel) {
  12299. var isLargeDraw = seriesModel.pipelineContext.large;
  12300. if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {
  12301. this._isLargeDraw = isLargeDraw;
  12302. this._clear();
  12303. }
  12304. };
  12305. CandlestickView2.prototype._renderNormal = function(seriesModel) {
  12306. var data = seriesModel.getData();
  12307. var oldData = this._data;
  12308. var group = this.group;
  12309. var isSimpleBox = data.getLayout("isSimpleBox");
  12310. var needsClip = seriesModel.get("clip", true);
  12311. var coord = seriesModel.coordinateSystem;
  12312. var clipArea = coord.getArea && coord.getArea();
  12313. if (!this._data) {
  12314. group.removeAll();
  12315. }
  12316. data.diff(oldData).add(function(newIdx) {
  12317. if (data.hasValue(newIdx)) {
  12318. var itemLayout = data.getItemLayout(newIdx);
  12319. if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {
  12320. return;
  12321. }
  12322. var el = createNormalBox2(itemLayout, newIdx, true);
  12323. initProps(el, {
  12324. shape: {
  12325. points: itemLayout.ends
  12326. }
  12327. }, seriesModel, newIdx);
  12328. setBoxCommon(el, data, newIdx, isSimpleBox);
  12329. group.add(el);
  12330. data.setItemGraphicEl(newIdx, el);
  12331. }
  12332. }).update(function(newIdx, oldIdx) {
  12333. var el = oldData.getItemGraphicEl(oldIdx);
  12334. if (!data.hasValue(newIdx)) {
  12335. group.remove(el);
  12336. return;
  12337. }
  12338. var itemLayout = data.getItemLayout(newIdx);
  12339. if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {
  12340. group.remove(el);
  12341. return;
  12342. }
  12343. if (!el) {
  12344. el = createNormalBox2(itemLayout, newIdx);
  12345. } else {
  12346. updateProps(el, {
  12347. shape: {
  12348. points: itemLayout.ends
  12349. }
  12350. }, seriesModel, newIdx);
  12351. saveOldStyle(el);
  12352. }
  12353. setBoxCommon(el, data, newIdx, isSimpleBox);
  12354. group.add(el);
  12355. data.setItemGraphicEl(newIdx, el);
  12356. }).remove(function(oldIdx) {
  12357. var el = oldData.getItemGraphicEl(oldIdx);
  12358. el && group.remove(el);
  12359. }).execute();
  12360. this._data = data;
  12361. };
  12362. CandlestickView2.prototype._renderLarge = function(seriesModel) {
  12363. this._clear();
  12364. createLarge2(seriesModel, this.group);
  12365. var clipPath = seriesModel.get("clip", true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;
  12366. if (clipPath) {
  12367. this.group.setClipPath(clipPath);
  12368. } else {
  12369. this.group.removeClipPath();
  12370. }
  12371. };
  12372. CandlestickView2.prototype._incrementalRenderNormal = function(params, seriesModel) {
  12373. var data = seriesModel.getData();
  12374. var isSimpleBox = data.getLayout("isSimpleBox");
  12375. var dataIndex;
  12376. while ((dataIndex = params.next()) != null) {
  12377. var itemLayout = data.getItemLayout(dataIndex);
  12378. var el = createNormalBox2(itemLayout, dataIndex);
  12379. setBoxCommon(el, data, dataIndex, isSimpleBox);
  12380. el.incremental = true;
  12381. this.group.add(el);
  12382. this._progressiveEls.push(el);
  12383. }
  12384. };
  12385. CandlestickView2.prototype._incrementalRenderLarge = function(params, seriesModel) {
  12386. createLarge2(seriesModel, this.group, this._progressiveEls, true);
  12387. };
  12388. CandlestickView2.prototype.remove = function(ecModel) {
  12389. this._clear();
  12390. };
  12391. CandlestickView2.prototype._clear = function() {
  12392. this.group.removeAll();
  12393. this._data = null;
  12394. };
  12395. CandlestickView2.type = "candlestick";
  12396. return CandlestickView2;
  12397. }(Chart_default);
  12398. var NormalBoxPathShape = function() {
  12399. function NormalBoxPathShape2() {
  12400. }
  12401. return NormalBoxPathShape2;
  12402. }();
  12403. var NormalBoxPath = function(_super) {
  12404. __extends(NormalBoxPath2, _super);
  12405. function NormalBoxPath2(opts) {
  12406. var _this = _super.call(this, opts) || this;
  12407. _this.type = "normalCandlestickBox";
  12408. return _this;
  12409. }
  12410. NormalBoxPath2.prototype.getDefaultShape = function() {
  12411. return new NormalBoxPathShape();
  12412. };
  12413. NormalBoxPath2.prototype.buildPath = function(ctx, shape) {
  12414. var ends = shape.points;
  12415. if (this.__simpleBox) {
  12416. ctx.moveTo(ends[4][0], ends[4][1]);
  12417. ctx.lineTo(ends[6][0], ends[6][1]);
  12418. } else {
  12419. ctx.moveTo(ends[0][0], ends[0][1]);
  12420. ctx.lineTo(ends[1][0], ends[1][1]);
  12421. ctx.lineTo(ends[2][0], ends[2][1]);
  12422. ctx.lineTo(ends[3][0], ends[3][1]);
  12423. ctx.closePath();
  12424. ctx.moveTo(ends[4][0], ends[4][1]);
  12425. ctx.lineTo(ends[5][0], ends[5][1]);
  12426. ctx.moveTo(ends[6][0], ends[6][1]);
  12427. ctx.lineTo(ends[7][0], ends[7][1]);
  12428. }
  12429. };
  12430. return NormalBoxPath2;
  12431. }(Path_default);
  12432. function createNormalBox2(itemLayout, dataIndex, isInit) {
  12433. var ends = itemLayout.ends;
  12434. return new NormalBoxPath({
  12435. shape: {
  12436. points: isInit ? transInit2(ends, itemLayout) : ends
  12437. },
  12438. z2: 100
  12439. });
  12440. }
  12441. function isNormalBoxClipped(clipArea, itemLayout) {
  12442. var clipped = true;
  12443. for (var i = 0; i < itemLayout.ends.length; i++) {
  12444. if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {
  12445. clipped = false;
  12446. break;
  12447. }
  12448. }
  12449. return clipped;
  12450. }
  12451. function setBoxCommon(el, data, dataIndex, isSimpleBox) {
  12452. var itemModel = data.getItemModel(dataIndex);
  12453. el.useStyle(data.getItemVisual(dataIndex, "style"));
  12454. el.style.strokeNoScale = true;
  12455. el.__simpleBox = isSimpleBox;
  12456. setStatesStylesFromModel(el, itemModel);
  12457. }
  12458. function transInit2(points, itemLayout) {
  12459. return map(points, function(point) {
  12460. point = point.slice();
  12461. point[1] = itemLayout.initBaseline;
  12462. return point;
  12463. });
  12464. }
  12465. var LargeBoxPathShape = function() {
  12466. function LargeBoxPathShape2() {
  12467. }
  12468. return LargeBoxPathShape2;
  12469. }();
  12470. var LargeBoxPath = function(_super) {
  12471. __extends(LargeBoxPath2, _super);
  12472. function LargeBoxPath2(opts) {
  12473. var _this = _super.call(this, opts) || this;
  12474. _this.type = "largeCandlestickBox";
  12475. return _this;
  12476. }
  12477. LargeBoxPath2.prototype.getDefaultShape = function() {
  12478. return new LargeBoxPathShape();
  12479. };
  12480. LargeBoxPath2.prototype.buildPath = function(ctx, shape) {
  12481. var points = shape.points;
  12482. for (var i = 0; i < points.length; ) {
  12483. if (this.__sign === points[i++]) {
  12484. var x = points[i++];
  12485. ctx.moveTo(x, points[i++]);
  12486. ctx.lineTo(x, points[i++]);
  12487. } else {
  12488. i += 3;
  12489. }
  12490. }
  12491. };
  12492. return LargeBoxPath2;
  12493. }(Path_default);
  12494. function createLarge2(seriesModel, group, progressiveEls, incremental) {
  12495. var data = seriesModel.getData();
  12496. var largePoints = data.getLayout("largePoints");
  12497. var elP = new LargeBoxPath({
  12498. shape: {
  12499. points: largePoints
  12500. },
  12501. __sign: 1
  12502. });
  12503. group.add(elP);
  12504. var elN = new LargeBoxPath({
  12505. shape: {
  12506. points: largePoints
  12507. },
  12508. __sign: -1
  12509. });
  12510. group.add(elN);
  12511. setLargeStyle(1, elP, seriesModel, data);
  12512. setLargeStyle(-1, elN, seriesModel, data);
  12513. if (incremental) {
  12514. elP.incremental = true;
  12515. elN.incremental = true;
  12516. }
  12517. if (progressiveEls) {
  12518. progressiveEls.push(elP, elN);
  12519. }
  12520. }
  12521. function setLargeStyle(sign, el, seriesModel, data) {
  12522. var borderColor = seriesModel.get(["itemStyle", sign > 0 ? "borderColor" : "borderColor0"]) || seriesModel.get(["itemStyle", sign > 0 ? "color" : "color0"]);
  12523. var itemStyle = seriesModel.getModel("itemStyle").getItemStyle(SKIP_PROPS);
  12524. el.useStyle(itemStyle);
  12525. el.style.fill = null;
  12526. el.style.stroke = borderColor;
  12527. }
  12528. var CandlestickView_default = CandlestickView;
  12529. // node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js
  12530. init_define_APP_INFO();
  12531. var CandlestickSeriesModel = function(_super) {
  12532. __extends(CandlestickSeriesModel2, _super);
  12533. function CandlestickSeriesModel2() {
  12534. var _this = _super !== null && _super.apply(this, arguments) || this;
  12535. _this.type = CandlestickSeriesModel2.type;
  12536. _this.defaultValueDimensions = [{
  12537. name: "open",
  12538. defaultTooltip: true
  12539. }, {
  12540. name: "close",
  12541. defaultTooltip: true
  12542. }, {
  12543. name: "lowest",
  12544. defaultTooltip: true
  12545. }, {
  12546. name: "highest",
  12547. defaultTooltip: true
  12548. }];
  12549. return _this;
  12550. }
  12551. CandlestickSeriesModel2.prototype.getShadowDim = function() {
  12552. return "open";
  12553. };
  12554. CandlestickSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
  12555. var itemLayout = data.getItemLayout(dataIndex);
  12556. return itemLayout && selectors.rect(itemLayout.brushRect);
  12557. };
  12558. CandlestickSeriesModel2.type = "series.candlestick";
  12559. CandlestickSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"];
  12560. CandlestickSeriesModel2.defaultOption = {
  12561. z: 2,
  12562. coordinateSystem: "cartesian2d",
  12563. legendHoverLink: true,
  12564. layout: null,
  12565. clip: true,
  12566. itemStyle: {
  12567. color: "#eb5454",
  12568. color0: "#47b262",
  12569. borderColor: "#eb5454",
  12570. borderColor0: "#47b262",
  12571. borderWidth: 1
  12572. },
  12573. emphasis: {
  12574. scale: true,
  12575. itemStyle: {
  12576. borderWidth: 2
  12577. }
  12578. },
  12579. barMaxWidth: null,
  12580. barMinWidth: null,
  12581. barWidth: null,
  12582. large: true,
  12583. largeThreshold: 600,
  12584. progressive: 3e3,
  12585. progressiveThreshold: 1e4,
  12586. progressiveChunkMode: "mod",
  12587. animationEasing: "linear",
  12588. animationDuration: 300
  12589. };
  12590. return CandlestickSeriesModel2;
  12591. }(Series_default);
  12592. mixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true);
  12593. var CandlestickSeries_default = CandlestickSeriesModel;
  12594. // node_modules/echarts/lib/chart/candlestick/preprocessor.js
  12595. init_define_APP_INFO();
  12596. function candlestickPreprocessor(option) {
  12597. if (!option || !isArray(option.series)) {
  12598. return;
  12599. }
  12600. each(option.series, function(seriesItem) {
  12601. if (isObject(seriesItem) && seriesItem.type === "k") {
  12602. seriesItem.type = "candlestick";
  12603. }
  12604. });
  12605. }
  12606. // node_modules/echarts/lib/chart/candlestick/candlestickVisual.js
  12607. init_define_APP_INFO();
  12608. var positiveBorderColorQuery = ["itemStyle", "borderColor"];
  12609. var negativeBorderColorQuery = ["itemStyle", "borderColor0"];
  12610. var positiveColorQuery = ["itemStyle", "color"];
  12611. var negativeColorQuery = ["itemStyle", "color0"];
  12612. var candlestickVisual = {
  12613. seriesType: "candlestick",
  12614. plan: createRenderPlanner(),
  12615. performRawSeries: true,
  12616. reset: function(seriesModel, ecModel) {
  12617. function getColor(sign, model) {
  12618. return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);
  12619. }
  12620. function getBorderColor(sign, model) {
  12621. return model.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);
  12622. }
  12623. if (ecModel.isSeriesFiltered(seriesModel)) {
  12624. return;
  12625. }
  12626. var isLargeRender = seriesModel.pipelineContext.large;
  12627. return !isLargeRender && {
  12628. progress: function(params, data) {
  12629. var dataIndex;
  12630. while ((dataIndex = params.next()) != null) {
  12631. var itemModel = data.getItemModel(dataIndex);
  12632. var sign = data.getItemLayout(dataIndex).sign;
  12633. var style = itemModel.getItemStyle();
  12634. style.fill = getColor(sign, itemModel);
  12635. style.stroke = getBorderColor(sign, itemModel) || style.fill;
  12636. var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style");
  12637. extend(existsStyle, style);
  12638. }
  12639. }
  12640. };
  12641. }
  12642. };
  12643. var candlestickVisual_default = candlestickVisual;
  12644. // node_modules/echarts/lib/chart/candlestick/candlestickLayout.js
  12645. init_define_APP_INFO();
  12646. var candlestickLayout = {
  12647. seriesType: "candlestick",
  12648. plan: createRenderPlanner(),
  12649. reset: function(seriesModel) {
  12650. var coordSys = seriesModel.coordinateSystem;
  12651. var data = seriesModel.getData();
  12652. var candleWidth = calculateCandleWidth(seriesModel, data);
  12653. var cDimIdx = 0;
  12654. var vDimIdx = 1;
  12655. var coordDims = ["x", "y"];
  12656. var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx]));
  12657. var vDimsI = map(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data);
  12658. var openDimI = vDimsI[0];
  12659. var closeDimI = vDimsI[1];
  12660. var lowestDimI = vDimsI[2];
  12661. var highestDimI = vDimsI[3];
  12662. data.setLayout({
  12663. candleWidth,
  12664. isSimpleBox: candleWidth <= 1.3
  12665. });
  12666. if (cDimI < 0 || vDimsI.length < 4) {
  12667. return;
  12668. }
  12669. return {
  12670. progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress
  12671. };
  12672. function normalProgress(params, data2) {
  12673. var dataIndex;
  12674. var store = data2.getStore();
  12675. while ((dataIndex = params.next()) != null) {
  12676. var axisDimVal = store.get(cDimI, dataIndex);
  12677. var openVal = store.get(openDimI, dataIndex);
  12678. var closeVal = store.get(closeDimI, dataIndex);
  12679. var lowestVal = store.get(lowestDimI, dataIndex);
  12680. var highestVal = store.get(highestDimI, dataIndex);
  12681. var ocLow = Math.min(openVal, closeVal);
  12682. var ocHigh = Math.max(openVal, closeVal);
  12683. var ocLowPoint = getPoint(ocLow, axisDimVal);
  12684. var ocHighPoint = getPoint(ocHigh, axisDimVal);
  12685. var lowestPoint = getPoint(lowestVal, axisDimVal);
  12686. var highestPoint = getPoint(highestVal, axisDimVal);
  12687. var ends = [];
  12688. addBodyEnd(ends, ocHighPoint, 0);
  12689. addBodyEnd(ends, ocLowPoint, 1);
  12690. ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));
  12691. data2.setItemLayout(dataIndex, {
  12692. sign: getSign(store, dataIndex, openVal, closeVal, closeDimI),
  12693. initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],
  12694. ends,
  12695. brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)
  12696. });
  12697. }
  12698. function getPoint(val, axisDimVal2) {
  12699. var p = [];
  12700. p[cDimIdx] = axisDimVal2;
  12701. p[vDimIdx] = val;
  12702. return isNaN(axisDimVal2) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);
  12703. }
  12704. function addBodyEnd(ends2, point, start) {
  12705. var point1 = point.slice();
  12706. var point2 = point.slice();
  12707. point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);
  12708. point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);
  12709. start ? ends2.push(point1, point2) : ends2.push(point2, point1);
  12710. }
  12711. function makeBrushRect(lowestVal2, highestVal2, axisDimVal2) {
  12712. var pmin = getPoint(lowestVal2, axisDimVal2);
  12713. var pmax = getPoint(highestVal2, axisDimVal2);
  12714. pmin[cDimIdx] -= candleWidth / 2;
  12715. pmax[cDimIdx] -= candleWidth / 2;
  12716. return {
  12717. x: pmin[0],
  12718. y: pmin[1],
  12719. width: vDimIdx ? candleWidth : pmax[0] - pmin[0],
  12720. height: vDimIdx ? pmax[1] - pmin[1] : candleWidth
  12721. };
  12722. }
  12723. function subPixelOptimizePoint(point) {
  12724. point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);
  12725. return point;
  12726. }
  12727. }
  12728. function largeProgress(params, data2) {
  12729. var points = createFloat32Array(params.count * 4);
  12730. var offset = 0;
  12731. var point;
  12732. var tmpIn = [];
  12733. var tmpOut = [];
  12734. var dataIndex;
  12735. var store = data2.getStore();
  12736. while ((dataIndex = params.next()) != null) {
  12737. var axisDimVal = store.get(cDimI, dataIndex);
  12738. var openVal = store.get(openDimI, dataIndex);
  12739. var closeVal = store.get(closeDimI, dataIndex);
  12740. var lowestVal = store.get(lowestDimI, dataIndex);
  12741. var highestVal = store.get(highestDimI, dataIndex);
  12742. if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {
  12743. points[offset++] = NaN;
  12744. offset += 3;
  12745. continue;
  12746. }
  12747. points[offset++] = getSign(store, dataIndex, openVal, closeVal, closeDimI);
  12748. tmpIn[cDimIdx] = axisDimVal;
  12749. tmpIn[vDimIdx] = lowestVal;
  12750. point = coordSys.dataToPoint(tmpIn, null, tmpOut);
  12751. points[offset++] = point ? point[0] : NaN;
  12752. points[offset++] = point ? point[1] : NaN;
  12753. tmpIn[vDimIdx] = highestVal;
  12754. point = coordSys.dataToPoint(tmpIn, null, tmpOut);
  12755. points[offset++] = point ? point[1] : NaN;
  12756. }
  12757. data2.setLayout("largePoints", points);
  12758. }
  12759. }
  12760. };
  12761. function getSign(store, dataIndex, openVal, closeVal, closeDimI) {
  12762. var sign;
  12763. if (openVal > closeVal) {
  12764. sign = -1;
  12765. } else if (openVal < closeVal) {
  12766. sign = 1;
  12767. } else {
  12768. sign = dataIndex > 0 ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 : 1;
  12769. }
  12770. return sign;
  12771. }
  12772. function calculateCandleWidth(seriesModel, data) {
  12773. var baseAxis = seriesModel.getBaseAxis();
  12774. var extent;
  12775. var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());
  12776. var barMaxWidth = parsePercent2(retrieve2(seriesModel.get("barMaxWidth"), bandWidth), bandWidth);
  12777. var barMinWidth = parsePercent2(retrieve2(seriesModel.get("barMinWidth"), 1), bandWidth);
  12778. var barWidth = seriesModel.get("barWidth");
  12779. return barWidth != null ? parsePercent2(barWidth, bandWidth) : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);
  12780. }
  12781. var candlestickLayout_default = candlestickLayout;
  12782. // node_modules/echarts/lib/chart/candlestick/install.js
  12783. function install19(registers) {
  12784. registers.registerChartView(CandlestickView_default);
  12785. registers.registerSeriesModel(CandlestickSeries_default);
  12786. registers.registerPreprocessor(candlestickPreprocessor);
  12787. registers.registerVisual(candlestickVisual_default);
  12788. registers.registerLayout(candlestickLayout_default);
  12789. }
  12790. // node_modules/echarts/lib/chart/effectScatter/install.js
  12791. init_define_APP_INFO();
  12792. // node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js
  12793. init_define_APP_INFO();
  12794. // node_modules/echarts/lib/chart/helper/EffectSymbol.js
  12795. init_define_APP_INFO();
  12796. function updateRipplePath(rippleGroup, effectCfg) {
  12797. var color = effectCfg.rippleEffectColor || effectCfg.color;
  12798. rippleGroup.eachChild(function(ripplePath) {
  12799. ripplePath.attr({
  12800. z: effectCfg.z,
  12801. zlevel: effectCfg.zlevel,
  12802. style: {
  12803. stroke: effectCfg.brushType === "stroke" ? color : null,
  12804. fill: effectCfg.brushType === "fill" ? color : null
  12805. }
  12806. });
  12807. });
  12808. }
  12809. var EffectSymbol = function(_super) {
  12810. __extends(EffectSymbol2, _super);
  12811. function EffectSymbol2(data, idx) {
  12812. var _this = _super.call(this) || this;
  12813. var symbol = new Symbol_default(data, idx);
  12814. var rippleGroup = new Group_default();
  12815. _this.add(symbol);
  12816. _this.add(rippleGroup);
  12817. _this.updateData(data, idx);
  12818. return _this;
  12819. }
  12820. EffectSymbol2.prototype.stopEffectAnimation = function() {
  12821. this.childAt(1).removeAll();
  12822. };
  12823. EffectSymbol2.prototype.startEffectAnimation = function(effectCfg) {
  12824. var symbolType = effectCfg.symbolType;
  12825. var color = effectCfg.color;
  12826. var rippleNumber = effectCfg.rippleNumber;
  12827. var rippleGroup = this.childAt(1);
  12828. for (var i = 0; i < rippleNumber; i++) {
  12829. var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);
  12830. ripplePath.attr({
  12831. style: {
  12832. strokeNoScale: true
  12833. },
  12834. z2: 99,
  12835. silent: true,
  12836. scaleX: 0.5,
  12837. scaleY: 0.5
  12838. });
  12839. var delay = -i / rippleNumber * effectCfg.period + effectCfg.effectOffset;
  12840. ripplePath.animate("", true).when(effectCfg.period, {
  12841. scaleX: effectCfg.rippleScale / 2,
  12842. scaleY: effectCfg.rippleScale / 2
  12843. }).delay(delay).start();
  12844. ripplePath.animateStyle(true).when(effectCfg.period, {
  12845. opacity: 0
  12846. }).delay(delay).start();
  12847. rippleGroup.add(ripplePath);
  12848. }
  12849. updateRipplePath(rippleGroup, effectCfg);
  12850. };
  12851. EffectSymbol2.prototype.updateEffectAnimation = function(effectCfg) {
  12852. var oldEffectCfg = this._effectCfg;
  12853. var rippleGroup = this.childAt(1);
  12854. var DIFFICULT_PROPS = ["symbolType", "period", "rippleScale", "rippleNumber"];
  12855. for (var i = 0; i < DIFFICULT_PROPS.length; i++) {
  12856. var propName = DIFFICULT_PROPS[i];
  12857. if (oldEffectCfg[propName] !== effectCfg[propName]) {
  12858. this.stopEffectAnimation();
  12859. this.startEffectAnimation(effectCfg);
  12860. return;
  12861. }
  12862. }
  12863. updateRipplePath(rippleGroup, effectCfg);
  12864. };
  12865. EffectSymbol2.prototype.highlight = function() {
  12866. enterEmphasis(this);
  12867. };
  12868. EffectSymbol2.prototype.downplay = function() {
  12869. leaveEmphasis(this);
  12870. };
  12871. EffectSymbol2.prototype.getSymbolType = function() {
  12872. var symbol = this.childAt(0);
  12873. return symbol && symbol.getSymbolType();
  12874. };
  12875. EffectSymbol2.prototype.updateData = function(data, idx) {
  12876. var _this = this;
  12877. var seriesModel = data.hostModel;
  12878. this.childAt(0).updateData(data, idx);
  12879. var rippleGroup = this.childAt(1);
  12880. var itemModel = data.getItemModel(idx);
  12881. var symbolType = data.getItemVisual(idx, "symbol");
  12882. var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, "symbolSize"));
  12883. var symbolStyle = data.getItemVisual(idx, "style");
  12884. var color = symbolStyle && symbolStyle.fill;
  12885. var emphasisModel = itemModel.getModel("emphasis");
  12886. rippleGroup.setScale(symbolSize);
  12887. rippleGroup.traverse(function(ripplePath) {
  12888. ripplePath.setStyle("fill", color);
  12889. });
  12890. var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, "symbolOffset"), symbolSize);
  12891. if (symbolOffset) {
  12892. rippleGroup.x = symbolOffset[0];
  12893. rippleGroup.y = symbolOffset[1];
  12894. }
  12895. var symbolRotate = data.getItemVisual(idx, "symbolRotate");
  12896. rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;
  12897. var effectCfg = {};
  12898. effectCfg.showEffectOn = seriesModel.get("showEffectOn");
  12899. effectCfg.rippleScale = itemModel.get(["rippleEffect", "scale"]);
  12900. effectCfg.brushType = itemModel.get(["rippleEffect", "brushType"]);
  12901. effectCfg.period = itemModel.get(["rippleEffect", "period"]) * 1e3;
  12902. effectCfg.effectOffset = idx / data.count();
  12903. effectCfg.z = seriesModel.getShallow("z") || 0;
  12904. effectCfg.zlevel = seriesModel.getShallow("zlevel") || 0;
  12905. effectCfg.symbolType = symbolType;
  12906. effectCfg.color = color;
  12907. effectCfg.rippleEffectColor = itemModel.get(["rippleEffect", "color"]);
  12908. effectCfg.rippleNumber = itemModel.get(["rippleEffect", "number"]);
  12909. if (effectCfg.showEffectOn === "render") {
  12910. this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg);
  12911. this._effectCfg = effectCfg;
  12912. } else {
  12913. this._effectCfg = null;
  12914. this.stopEffectAnimation();
  12915. this.onHoverStateChange = function(toState) {
  12916. if (toState === "emphasis") {
  12917. if (effectCfg.showEffectOn !== "render") {
  12918. _this.startEffectAnimation(effectCfg);
  12919. }
  12920. } else if (toState === "normal") {
  12921. if (effectCfg.showEffectOn !== "render") {
  12922. _this.stopEffectAnimation();
  12923. }
  12924. }
  12925. };
  12926. }
  12927. this._effectCfg = effectCfg;
  12928. toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  12929. };
  12930. ;
  12931. EffectSymbol2.prototype.fadeOut = function(cb) {
  12932. cb && cb();
  12933. };
  12934. ;
  12935. return EffectSymbol2;
  12936. }(Group_default);
  12937. var EffectSymbol_default = EffectSymbol;
  12938. // node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js
  12939. var EffectScatterView = function(_super) {
  12940. __extends(EffectScatterView2, _super);
  12941. function EffectScatterView2() {
  12942. var _this = _super !== null && _super.apply(this, arguments) || this;
  12943. _this.type = EffectScatterView2.type;
  12944. return _this;
  12945. }
  12946. EffectScatterView2.prototype.init = function() {
  12947. this._symbolDraw = new SymbolDraw_default(EffectSymbol_default);
  12948. };
  12949. EffectScatterView2.prototype.render = function(seriesModel, ecModel, api) {
  12950. var data = seriesModel.getData();
  12951. var effectSymbolDraw = this._symbolDraw;
  12952. effectSymbolDraw.updateData(data, {
  12953. clipShape: this._getClipShape(seriesModel)
  12954. });
  12955. this.group.add(effectSymbolDraw.group);
  12956. };
  12957. EffectScatterView2.prototype._getClipShape = function(seriesModel) {
  12958. var coordSys = seriesModel.coordinateSystem;
  12959. var clipArea = coordSys && coordSys.getArea && coordSys.getArea();
  12960. return seriesModel.get("clip", true) ? clipArea : null;
  12961. };
  12962. EffectScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) {
  12963. var data = seriesModel.getData();
  12964. this.group.dirty();
  12965. var res = pointsLayout("").reset(seriesModel, ecModel, api);
  12966. if (res.progress) {
  12967. res.progress({
  12968. start: 0,
  12969. end: data.count(),
  12970. count: data.count()
  12971. }, data);
  12972. }
  12973. this._symbolDraw.updateLayout();
  12974. };
  12975. EffectScatterView2.prototype._updateGroupTransform = function(seriesModel) {
  12976. var coordSys = seriesModel.coordinateSystem;
  12977. if (coordSys && coordSys.getRoamTransform) {
  12978. this.group.transform = clone2(coordSys.getRoamTransform());
  12979. this.group.decomposeTransform();
  12980. }
  12981. };
  12982. EffectScatterView2.prototype.remove = function(ecModel, api) {
  12983. this._symbolDraw && this._symbolDraw.remove(true);
  12984. };
  12985. EffectScatterView2.type = "effectScatter";
  12986. return EffectScatterView2;
  12987. }(Chart_default);
  12988. var EffectScatterView_default = EffectScatterView;
  12989. // node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js
  12990. init_define_APP_INFO();
  12991. var EffectScatterSeriesModel = function(_super) {
  12992. __extends(EffectScatterSeriesModel2, _super);
  12993. function EffectScatterSeriesModel2() {
  12994. var _this = _super !== null && _super.apply(this, arguments) || this;
  12995. _this.type = EffectScatterSeriesModel2.type;
  12996. _this.hasSymbolVisual = true;
  12997. return _this;
  12998. }
  12999. EffectScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  13000. return createSeriesData_default(null, this, {
  13001. useEncodeDefaulter: true
  13002. });
  13003. };
  13004. EffectScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
  13005. return selectors.point(data.getItemLayout(dataIndex));
  13006. };
  13007. EffectScatterSeriesModel2.type = "series.effectScatter";
  13008. EffectScatterSeriesModel2.dependencies = ["grid", "polar"];
  13009. EffectScatterSeriesModel2.defaultOption = {
  13010. coordinateSystem: "cartesian2d",
  13011. z: 2,
  13012. legendHoverLink: true,
  13013. effectType: "ripple",
  13014. progressive: 0,
  13015. showEffectOn: "render",
  13016. clip: true,
  13017. rippleEffect: {
  13018. period: 4,
  13019. scale: 2.5,
  13020. brushType: "fill",
  13021. number: 3
  13022. },
  13023. universalTransition: {
  13024. divideShape: "clone"
  13025. },
  13026. symbolSize: 10
  13027. };
  13028. return EffectScatterSeriesModel2;
  13029. }(Series_default);
  13030. var EffectScatterSeries_default = EffectScatterSeriesModel;
  13031. // node_modules/echarts/lib/chart/effectScatter/install.js
  13032. function install20(registers) {
  13033. registers.registerChartView(EffectScatterView_default);
  13034. registers.registerSeriesModel(EffectScatterSeries_default);
  13035. registers.registerLayout(pointsLayout("effectScatter"));
  13036. }
  13037. // node_modules/echarts/lib/chart/lines/install.js
  13038. init_define_APP_INFO();
  13039. // node_modules/echarts/lib/chart/lines/LinesView.js
  13040. init_define_APP_INFO();
  13041. // node_modules/echarts/lib/chart/helper/EffectLine.js
  13042. init_define_APP_INFO();
  13043. var EffectLine = function(_super) {
  13044. __extends(EffectLine2, _super);
  13045. function EffectLine2(lineData, idx, seriesScope) {
  13046. var _this = _super.call(this) || this;
  13047. _this.add(_this.createLine(lineData, idx, seriesScope));
  13048. _this._updateEffectSymbol(lineData, idx);
  13049. return _this;
  13050. }
  13051. EffectLine2.prototype.createLine = function(lineData, idx, seriesScope) {
  13052. return new Line_default2(lineData, idx, seriesScope);
  13053. };
  13054. EffectLine2.prototype._updateEffectSymbol = function(lineData, idx) {
  13055. var itemModel = lineData.getItemModel(idx);
  13056. var effectModel = itemModel.getModel("effect");
  13057. var size = effectModel.get("symbolSize");
  13058. var symbolType = effectModel.get("symbol");
  13059. if (!isArray(size)) {
  13060. size = [size, size];
  13061. }
  13062. var lineStyle = lineData.getItemVisual(idx, "style");
  13063. var color = effectModel.get("color") || lineStyle && lineStyle.stroke;
  13064. var symbol = this.childAt(1);
  13065. if (this._symbolType !== symbolType) {
  13066. this.remove(symbol);
  13067. symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);
  13068. symbol.z2 = 100;
  13069. symbol.culling = true;
  13070. this.add(symbol);
  13071. }
  13072. if (!symbol) {
  13073. return;
  13074. }
  13075. symbol.setStyle("shadowColor", color);
  13076. symbol.setStyle(effectModel.getItemStyle(["color"]));
  13077. symbol.scaleX = size[0];
  13078. symbol.scaleY = size[1];
  13079. symbol.setColor(color);
  13080. this._symbolType = symbolType;
  13081. this._symbolScale = size;
  13082. this._updateEffectAnimation(lineData, effectModel, idx);
  13083. };
  13084. EffectLine2.prototype._updateEffectAnimation = function(lineData, effectModel, idx) {
  13085. var symbol = this.childAt(1);
  13086. if (!symbol) {
  13087. return;
  13088. }
  13089. var points = lineData.getItemLayout(idx);
  13090. var period = effectModel.get("period") * 1e3;
  13091. var loop = effectModel.get("loop");
  13092. var constantSpeed = effectModel.get("constantSpeed");
  13093. var delayExpr = retrieve(effectModel.get("delay"), function(idx2) {
  13094. return idx2 / lineData.count() * period / 3;
  13095. });
  13096. symbol.ignore = true;
  13097. this._updateAnimationPoints(symbol, points);
  13098. if (constantSpeed > 0) {
  13099. period = this._getLineLength(symbol) / constantSpeed * 1e3;
  13100. }
  13101. if (period !== this._period || loop !== this._loop) {
  13102. symbol.stopAnimation();
  13103. var delayNum = void 0;
  13104. if (isFunction(delayExpr)) {
  13105. delayNum = delayExpr(idx);
  13106. } else {
  13107. delayNum = delayExpr;
  13108. }
  13109. if (symbol.__t > 0) {
  13110. delayNum = -period * symbol.__t;
  13111. }
  13112. this._animateSymbol(symbol, period, delayNum, loop);
  13113. }
  13114. this._period = period;
  13115. this._loop = loop;
  13116. };
  13117. EffectLine2.prototype._animateSymbol = function(symbol, period, delayNum, loop) {
  13118. if (period > 0) {
  13119. symbol.__t = 0;
  13120. var self_1 = this;
  13121. var animator = symbol.animate("", loop).when(period, {
  13122. __t: 1
  13123. }).delay(delayNum).during(function() {
  13124. self_1._updateSymbolPosition(symbol);
  13125. });
  13126. if (!loop) {
  13127. animator.done(function() {
  13128. self_1.remove(symbol);
  13129. });
  13130. }
  13131. animator.start();
  13132. }
  13133. };
  13134. EffectLine2.prototype._getLineLength = function(symbol) {
  13135. return dist(symbol.__p1, symbol.__cp1) + dist(symbol.__cp1, symbol.__p2);
  13136. };
  13137. EffectLine2.prototype._updateAnimationPoints = function(symbol, points) {
  13138. symbol.__p1 = points[0];
  13139. symbol.__p2 = points[1];
  13140. symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2];
  13141. };
  13142. EffectLine2.prototype.updateData = function(lineData, idx, seriesScope) {
  13143. this.childAt(0).updateData(lineData, idx, seriesScope);
  13144. this._updateEffectSymbol(lineData, idx);
  13145. };
  13146. EffectLine2.prototype._updateSymbolPosition = function(symbol) {
  13147. var p1 = symbol.__p1;
  13148. var p2 = symbol.__p2;
  13149. var cp1 = symbol.__cp1;
  13150. var t = symbol.__t;
  13151. var pos = [symbol.x, symbol.y];
  13152. var lastPos = pos.slice();
  13153. var quadraticAt3 = quadraticAt;
  13154. var quadraticDerivativeAt2 = quadraticDerivativeAt;
  13155. pos[0] = quadraticAt3(p1[0], cp1[0], p2[0], t);
  13156. pos[1] = quadraticAt3(p1[1], cp1[1], p2[1], t);
  13157. var tx = quadraticDerivativeAt2(p1[0], cp1[0], p2[0], t);
  13158. var ty = quadraticDerivativeAt2(p1[1], cp1[1], p2[1], t);
  13159. symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;
  13160. if (this._symbolType === "line" || this._symbolType === "rect" || this._symbolType === "roundRect") {
  13161. if (symbol.__lastT !== void 0 && symbol.__lastT < symbol.__t) {
  13162. symbol.scaleY = dist(lastPos, pos) * 1.05;
  13163. if (t === 1) {
  13164. pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;
  13165. pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;
  13166. }
  13167. } else if (symbol.__lastT === 1) {
  13168. symbol.scaleY = 2 * dist(p1, pos);
  13169. } else {
  13170. symbol.scaleY = this._symbolScale[1];
  13171. }
  13172. }
  13173. symbol.__lastT = symbol.__t;
  13174. symbol.ignore = false;
  13175. symbol.x = pos[0];
  13176. symbol.y = pos[1];
  13177. };
  13178. EffectLine2.prototype.updateLayout = function(lineData, idx) {
  13179. this.childAt(0).updateLayout(lineData, idx);
  13180. var effectModel = lineData.getItemModel(idx).getModel("effect");
  13181. this._updateEffectAnimation(lineData, effectModel, idx);
  13182. };
  13183. return EffectLine2;
  13184. }(Group_default);
  13185. var EffectLine_default = EffectLine;
  13186. // node_modules/echarts/lib/chart/helper/Polyline.js
  13187. init_define_APP_INFO();
  13188. var Polyline = function(_super) {
  13189. __extends(Polyline2, _super);
  13190. function Polyline2(lineData, idx, seriesScope) {
  13191. var _this = _super.call(this) || this;
  13192. _this._createPolyline(lineData, idx, seriesScope);
  13193. return _this;
  13194. }
  13195. Polyline2.prototype._createPolyline = function(lineData, idx, seriesScope) {
  13196. var points = lineData.getItemLayout(idx);
  13197. var line = new Polyline_default({
  13198. shape: {
  13199. points
  13200. }
  13201. });
  13202. this.add(line);
  13203. this._updateCommonStl(lineData, idx, seriesScope);
  13204. };
  13205. ;
  13206. Polyline2.prototype.updateData = function(lineData, idx, seriesScope) {
  13207. var seriesModel = lineData.hostModel;
  13208. var line = this.childAt(0);
  13209. var target = {
  13210. shape: {
  13211. points: lineData.getItemLayout(idx)
  13212. }
  13213. };
  13214. updateProps(line, target, seriesModel, idx);
  13215. this._updateCommonStl(lineData, idx, seriesScope);
  13216. };
  13217. ;
  13218. Polyline2.prototype._updateCommonStl = function(lineData, idx, seriesScope) {
  13219. var line = this.childAt(0);
  13220. var itemModel = lineData.getItemModel(idx);
  13221. var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;
  13222. var focus = seriesScope && seriesScope.focus;
  13223. var blurScope = seriesScope && seriesScope.blurScope;
  13224. var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled;
  13225. if (!seriesScope || lineData.hasItemOption) {
  13226. var emphasisModel = itemModel.getModel("emphasis");
  13227. emphasisLineStyle = emphasisModel.getModel("lineStyle").getLineStyle();
  13228. emphasisDisabled = emphasisModel.get("disabled");
  13229. focus = emphasisModel.get("focus");
  13230. blurScope = emphasisModel.get("blurScope");
  13231. }
  13232. line.useStyle(lineData.getItemVisual(idx, "style"));
  13233. line.style.fill = null;
  13234. line.style.strokeNoScale = true;
  13235. var lineEmphasisState = line.ensureState("emphasis");
  13236. lineEmphasisState.style = emphasisLineStyle;
  13237. toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);
  13238. };
  13239. ;
  13240. Polyline2.prototype.updateLayout = function(lineData, idx) {
  13241. var polyline = this.childAt(0);
  13242. polyline.setShape("points", lineData.getItemLayout(idx));
  13243. };
  13244. ;
  13245. return Polyline2;
  13246. }(Group_default);
  13247. var Polyline_default2 = Polyline;
  13248. // node_modules/echarts/lib/chart/helper/EffectPolyline.js
  13249. init_define_APP_INFO();
  13250. var EffectPolyline = function(_super) {
  13251. __extends(EffectPolyline2, _super);
  13252. function EffectPolyline2() {
  13253. var _this = _super !== null && _super.apply(this, arguments) || this;
  13254. _this._lastFrame = 0;
  13255. _this._lastFramePercent = 0;
  13256. return _this;
  13257. }
  13258. EffectPolyline2.prototype.createLine = function(lineData, idx, seriesScope) {
  13259. return new Polyline_default2(lineData, idx, seriesScope);
  13260. };
  13261. ;
  13262. EffectPolyline2.prototype._updateAnimationPoints = function(symbol, points) {
  13263. this._points = points;
  13264. var accLenArr = [0];
  13265. var len2 = 0;
  13266. for (var i = 1; i < points.length; i++) {
  13267. var p1 = points[i - 1];
  13268. var p2 = points[i];
  13269. len2 += dist(p1, p2);
  13270. accLenArr.push(len2);
  13271. }
  13272. if (len2 === 0) {
  13273. this._length = 0;
  13274. return;
  13275. }
  13276. for (var i = 0; i < accLenArr.length; i++) {
  13277. accLenArr[i] /= len2;
  13278. }
  13279. this._offsets = accLenArr;
  13280. this._length = len2;
  13281. };
  13282. ;
  13283. EffectPolyline2.prototype._getLineLength = function() {
  13284. return this._length;
  13285. };
  13286. ;
  13287. EffectPolyline2.prototype._updateSymbolPosition = function(symbol) {
  13288. var t = symbol.__t;
  13289. var points = this._points;
  13290. var offsets = this._offsets;
  13291. var len2 = points.length;
  13292. if (!offsets) {
  13293. return;
  13294. }
  13295. var lastFrame = this._lastFrame;
  13296. var frame;
  13297. if (t < this._lastFramePercent) {
  13298. var start = Math.min(lastFrame + 1, len2 - 1);
  13299. for (frame = start; frame >= 0; frame--) {
  13300. if (offsets[frame] <= t) {
  13301. break;
  13302. }
  13303. }
  13304. frame = Math.min(frame, len2 - 2);
  13305. } else {
  13306. for (frame = lastFrame; frame < len2; frame++) {
  13307. if (offsets[frame] > t) {
  13308. break;
  13309. }
  13310. }
  13311. frame = Math.min(frame - 1, len2 - 2);
  13312. }
  13313. var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]);
  13314. var p0 = points[frame];
  13315. var p1 = points[frame + 1];
  13316. symbol.x = p0[0] * (1 - p) + p * p1[0];
  13317. symbol.y = p0[1] * (1 - p) + p * p1[1];
  13318. var tx = p1[0] - p0[0];
  13319. var ty = p1[1] - p0[1];
  13320. symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;
  13321. this._lastFrame = frame;
  13322. this._lastFramePercent = t;
  13323. symbol.ignore = false;
  13324. };
  13325. ;
  13326. return EffectPolyline2;
  13327. }(EffectLine_default);
  13328. var EffectPolyline_default = EffectPolyline;
  13329. // node_modules/echarts/lib/chart/helper/LargeLineDraw.js
  13330. init_define_APP_INFO();
  13331. var LargeLinesPathShape = function() {
  13332. function LargeLinesPathShape2() {
  13333. this.polyline = false;
  13334. this.curveness = 0;
  13335. this.segs = [];
  13336. }
  13337. return LargeLinesPathShape2;
  13338. }();
  13339. var LargeLinesPath = function(_super) {
  13340. __extends(LargeLinesPath2, _super);
  13341. function LargeLinesPath2(opts) {
  13342. var _this = _super.call(this, opts) || this;
  13343. _this._off = 0;
  13344. _this.hoverDataIdx = -1;
  13345. return _this;
  13346. }
  13347. LargeLinesPath2.prototype.reset = function() {
  13348. this.notClear = false;
  13349. this._off = 0;
  13350. };
  13351. LargeLinesPath2.prototype.getDefaultStyle = function() {
  13352. return {
  13353. stroke: "#000",
  13354. fill: null
  13355. };
  13356. };
  13357. LargeLinesPath2.prototype.getDefaultShape = function() {
  13358. return new LargeLinesPathShape();
  13359. };
  13360. LargeLinesPath2.prototype.buildPath = function(ctx, shape) {
  13361. var segs = shape.segs;
  13362. var curveness = shape.curveness;
  13363. var i;
  13364. if (shape.polyline) {
  13365. for (i = this._off; i < segs.length; ) {
  13366. var count = segs[i++];
  13367. if (count > 0) {
  13368. ctx.moveTo(segs[i++], segs[i++]);
  13369. for (var k = 1; k < count; k++) {
  13370. ctx.lineTo(segs[i++], segs[i++]);
  13371. }
  13372. }
  13373. }
  13374. } else {
  13375. for (i = this._off; i < segs.length; ) {
  13376. var x0 = segs[i++];
  13377. var y0 = segs[i++];
  13378. var x1 = segs[i++];
  13379. var y1 = segs[i++];
  13380. ctx.moveTo(x0, y0);
  13381. if (curveness > 0) {
  13382. var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;
  13383. var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;
  13384. ctx.quadraticCurveTo(x2, y2, x1, y1);
  13385. } else {
  13386. ctx.lineTo(x1, y1);
  13387. }
  13388. }
  13389. }
  13390. if (this.incremental) {
  13391. this._off = i;
  13392. this.notClear = true;
  13393. }
  13394. };
  13395. LargeLinesPath2.prototype.findDataIndex = function(x, y) {
  13396. var shape = this.shape;
  13397. var segs = shape.segs;
  13398. var curveness = shape.curveness;
  13399. var lineWidth = this.style.lineWidth;
  13400. if (shape.polyline) {
  13401. var dataIndex = 0;
  13402. for (var i = 0; i < segs.length; ) {
  13403. var count = segs[i++];
  13404. if (count > 0) {
  13405. var x0 = segs[i++];
  13406. var y0 = segs[i++];
  13407. for (var k = 1; k < count; k++) {
  13408. var x1 = segs[i++];
  13409. var y1 = segs[i++];
  13410. if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) {
  13411. return dataIndex;
  13412. }
  13413. }
  13414. }
  13415. dataIndex++;
  13416. }
  13417. } else {
  13418. var dataIndex = 0;
  13419. for (var i = 0; i < segs.length; ) {
  13420. var x0 = segs[i++];
  13421. var y0 = segs[i++];
  13422. var x1 = segs[i++];
  13423. var y1 = segs[i++];
  13424. if (curveness > 0) {
  13425. var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;
  13426. var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;
  13427. if (containStroke2(x0, y0, x2, y2, x1, y1, lineWidth, x, y)) {
  13428. return dataIndex;
  13429. }
  13430. } else {
  13431. if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) {
  13432. return dataIndex;
  13433. }
  13434. }
  13435. dataIndex++;
  13436. }
  13437. }
  13438. return -1;
  13439. };
  13440. LargeLinesPath2.prototype.contain = function(x, y) {
  13441. var localPos = this.transformCoordToLocal(x, y);
  13442. var rect = this.getBoundingRect();
  13443. x = localPos[0];
  13444. y = localPos[1];
  13445. if (rect.contain(x, y)) {
  13446. var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y);
  13447. return dataIdx >= 0;
  13448. }
  13449. this.hoverDataIdx = -1;
  13450. return false;
  13451. };
  13452. LargeLinesPath2.prototype.getBoundingRect = function() {
  13453. var rect = this._rect;
  13454. if (!rect) {
  13455. var shape = this.shape;
  13456. var points = shape.segs;
  13457. var minX = Infinity;
  13458. var minY = Infinity;
  13459. var maxX = -Infinity;
  13460. var maxY = -Infinity;
  13461. for (var i = 0; i < points.length; ) {
  13462. var x = points[i++];
  13463. var y = points[i++];
  13464. minX = Math.min(x, minX);
  13465. maxX = Math.max(x, maxX);
  13466. minY = Math.min(y, minY);
  13467. maxY = Math.max(y, maxY);
  13468. }
  13469. rect = this._rect = new BoundingRect_default(minX, minY, maxX, maxY);
  13470. }
  13471. return rect;
  13472. };
  13473. return LargeLinesPath2;
  13474. }(Path_default);
  13475. var LargeLineDraw = function() {
  13476. function LargeLineDraw2() {
  13477. this.group = new Group_default();
  13478. }
  13479. LargeLineDraw2.prototype.updateData = function(data) {
  13480. this._clear();
  13481. var lineEl = this._create();
  13482. lineEl.setShape({
  13483. segs: data.getLayout("linesPoints")
  13484. });
  13485. this._setCommon(lineEl, data);
  13486. };
  13487. ;
  13488. LargeLineDraw2.prototype.incrementalPrepareUpdate = function(data) {
  13489. this.group.removeAll();
  13490. this._clear();
  13491. };
  13492. ;
  13493. LargeLineDraw2.prototype.incrementalUpdate = function(taskParams, data) {
  13494. var lastAdded = this._newAdded[0];
  13495. var linePoints = data.getLayout("linesPoints");
  13496. var oldSegs = lastAdded && lastAdded.shape.segs;
  13497. if (oldSegs && oldSegs.length < 2e4) {
  13498. var oldLen = oldSegs.length;
  13499. var newSegs = new Float32Array(oldLen + linePoints.length);
  13500. newSegs.set(oldSegs);
  13501. newSegs.set(linePoints, oldLen);
  13502. lastAdded.setShape({
  13503. segs: newSegs
  13504. });
  13505. } else {
  13506. this._newAdded = [];
  13507. var lineEl = this._create();
  13508. lineEl.incremental = true;
  13509. lineEl.setShape({
  13510. segs: linePoints
  13511. });
  13512. this._setCommon(lineEl, data);
  13513. lineEl.__startIndex = taskParams.start;
  13514. }
  13515. };
  13516. LargeLineDraw2.prototype.remove = function() {
  13517. this._clear();
  13518. };
  13519. LargeLineDraw2.prototype.eachRendered = function(cb) {
  13520. this._newAdded[0] && cb(this._newAdded[0]);
  13521. };
  13522. LargeLineDraw2.prototype._create = function() {
  13523. var lineEl = new LargeLinesPath({
  13524. cursor: "default"
  13525. });
  13526. this._newAdded.push(lineEl);
  13527. this.group.add(lineEl);
  13528. return lineEl;
  13529. };
  13530. LargeLineDraw2.prototype._setCommon = function(lineEl, data, isIncremental) {
  13531. var hostModel = data.hostModel;
  13532. lineEl.setShape({
  13533. polyline: hostModel.get("polyline"),
  13534. curveness: hostModel.get(["lineStyle", "curveness"])
  13535. });
  13536. lineEl.useStyle(hostModel.getModel("lineStyle").getLineStyle());
  13537. lineEl.style.strokeNoScale = true;
  13538. var style = data.getVisual("style");
  13539. if (style && style.stroke) {
  13540. lineEl.setStyle("stroke", style.stroke);
  13541. }
  13542. lineEl.setStyle("fill", null);
  13543. var ecData = getECData(lineEl);
  13544. ecData.seriesIndex = hostModel.seriesIndex;
  13545. lineEl.on("mousemove", function(e) {
  13546. ecData.dataIndex = null;
  13547. var dataIndex = lineEl.hoverDataIdx;
  13548. if (dataIndex > 0) {
  13549. ecData.dataIndex = dataIndex + lineEl.__startIndex;
  13550. }
  13551. });
  13552. };
  13553. ;
  13554. LargeLineDraw2.prototype._clear = function() {
  13555. this._newAdded = [];
  13556. this.group.removeAll();
  13557. };
  13558. ;
  13559. return LargeLineDraw2;
  13560. }();
  13561. var LargeLineDraw_default = LargeLineDraw;
  13562. // node_modules/echarts/lib/chart/lines/linesLayout.js
  13563. init_define_APP_INFO();
  13564. var linesLayout = {
  13565. seriesType: "lines",
  13566. plan: createRenderPlanner(),
  13567. reset: function(seriesModel) {
  13568. var coordSys = seriesModel.coordinateSystem;
  13569. if (!coordSys) {
  13570. if (true) {
  13571. error("The lines series must have a coordinate system.");
  13572. }
  13573. return;
  13574. }
  13575. var isPolyline = seriesModel.get("polyline");
  13576. var isLarge = seriesModel.pipelineContext.large;
  13577. return {
  13578. progress: function(params, lineData) {
  13579. var lineCoords = [];
  13580. if (isLarge) {
  13581. var points = void 0;
  13582. var segCount = params.end - params.start;
  13583. if (isPolyline) {
  13584. var totalCoordsCount = 0;
  13585. for (var i = params.start; i < params.end; i++) {
  13586. totalCoordsCount += seriesModel.getLineCoordsCount(i);
  13587. }
  13588. points = new Float32Array(segCount + totalCoordsCount * 2);
  13589. } else {
  13590. points = new Float32Array(segCount * 4);
  13591. }
  13592. var offset = 0;
  13593. var pt = [];
  13594. for (var i = params.start; i < params.end; i++) {
  13595. var len2 = seriesModel.getLineCoords(i, lineCoords);
  13596. if (isPolyline) {
  13597. points[offset++] = len2;
  13598. }
  13599. for (var k = 0; k < len2; k++) {
  13600. pt = coordSys.dataToPoint(lineCoords[k], false, pt);
  13601. points[offset++] = pt[0];
  13602. points[offset++] = pt[1];
  13603. }
  13604. }
  13605. lineData.setLayout("linesPoints", points);
  13606. } else {
  13607. for (var i = params.start; i < params.end; i++) {
  13608. var itemModel = lineData.getItemModel(i);
  13609. var len2 = seriesModel.getLineCoords(i, lineCoords);
  13610. var pts = [];
  13611. if (isPolyline) {
  13612. for (var j = 0; j < len2; j++) {
  13613. pts.push(coordSys.dataToPoint(lineCoords[j]));
  13614. }
  13615. } else {
  13616. pts[0] = coordSys.dataToPoint(lineCoords[0]);
  13617. pts[1] = coordSys.dataToPoint(lineCoords[1]);
  13618. var curveness = itemModel.get(["lineStyle", "curveness"]);
  13619. if (+curveness) {
  13620. 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];
  13621. }
  13622. }
  13623. lineData.setItemLayout(i, pts);
  13624. }
  13625. }
  13626. }
  13627. };
  13628. }
  13629. };
  13630. var linesLayout_default = linesLayout;
  13631. // node_modules/echarts/lib/chart/lines/LinesView.js
  13632. var LinesView = function(_super) {
  13633. __extends(LinesView2, _super);
  13634. function LinesView2() {
  13635. var _this = _super !== null && _super.apply(this, arguments) || this;
  13636. _this.type = LinesView2.type;
  13637. return _this;
  13638. }
  13639. LinesView2.prototype.render = function(seriesModel, ecModel, api) {
  13640. var data = seriesModel.getData();
  13641. var lineDraw = this._updateLineDraw(data, seriesModel);
  13642. var zlevel = seriesModel.get("zlevel");
  13643. var trailLength = seriesModel.get(["effect", "trailLength"]);
  13644. var zr = api.getZr();
  13645. var isSvg = zr.painter.getType() === "svg";
  13646. if (!isSvg) {
  13647. zr.painter.getLayer(zlevel).clear(true);
  13648. }
  13649. if (this._lastZlevel != null && !isSvg) {
  13650. zr.configLayer(this._lastZlevel, {
  13651. motionBlur: false
  13652. });
  13653. }
  13654. if (this._showEffect(seriesModel) && trailLength > 0) {
  13655. if (!isSvg) {
  13656. zr.configLayer(zlevel, {
  13657. motionBlur: true,
  13658. lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)
  13659. });
  13660. } else if (true) {
  13661. console.warn("SVG render mode doesn't support lines with trail effect");
  13662. }
  13663. }
  13664. lineDraw.updateData(data);
  13665. var clipPath = seriesModel.get("clip", true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);
  13666. if (clipPath) {
  13667. this.group.setClipPath(clipPath);
  13668. } else {
  13669. this.group.removeClipPath();
  13670. }
  13671. this._lastZlevel = zlevel;
  13672. this._finished = true;
  13673. };
  13674. LinesView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
  13675. var data = seriesModel.getData();
  13676. var lineDraw = this._updateLineDraw(data, seriesModel);
  13677. lineDraw.incrementalPrepareUpdate(data);
  13678. this._clearLayer(api);
  13679. this._finished = false;
  13680. };
  13681. LinesView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) {
  13682. this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());
  13683. this._finished = taskParams.end === seriesModel.getData().count();
  13684. };
  13685. LinesView2.prototype.eachRendered = function(cb) {
  13686. this._lineDraw && this._lineDraw.eachRendered(cb);
  13687. };
  13688. LinesView2.prototype.updateTransform = function(seriesModel, ecModel, api) {
  13689. var data = seriesModel.getData();
  13690. var pipelineContext = seriesModel.pipelineContext;
  13691. if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {
  13692. return {
  13693. update: true
  13694. };
  13695. } else {
  13696. var res = linesLayout_default.reset(seriesModel, ecModel, api);
  13697. if (res.progress) {
  13698. res.progress({
  13699. start: 0,
  13700. end: data.count(),
  13701. count: data.count()
  13702. }, data);
  13703. }
  13704. this._lineDraw.updateLayout();
  13705. this._clearLayer(api);
  13706. }
  13707. };
  13708. LinesView2.prototype._updateLineDraw = function(data, seriesModel) {
  13709. var lineDraw = this._lineDraw;
  13710. var hasEffect = this._showEffect(seriesModel);
  13711. var isPolyline = !!seriesModel.get("polyline");
  13712. var pipelineContext = seriesModel.pipelineContext;
  13713. var isLargeDraw = pipelineContext.large;
  13714. if (true) {
  13715. if (hasEffect && isLargeDraw) {
  13716. console.warn("Large lines not support effect");
  13717. }
  13718. }
  13719. if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {
  13720. if (lineDraw) {
  13721. lineDraw.remove();
  13722. }
  13723. lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw_default() : new LineDraw_default(isPolyline ? hasEffect ? EffectPolyline_default : Polyline_default2 : hasEffect ? EffectLine_default : Line_default2);
  13724. this._hasEffet = hasEffect;
  13725. this._isPolyline = isPolyline;
  13726. this._isLargeDraw = isLargeDraw;
  13727. }
  13728. this.group.add(lineDraw.group);
  13729. return lineDraw;
  13730. };
  13731. LinesView2.prototype._showEffect = function(seriesModel) {
  13732. return !!seriesModel.get(["effect", "show"]);
  13733. };
  13734. LinesView2.prototype._clearLayer = function(api) {
  13735. var zr = api.getZr();
  13736. var isSvg = zr.painter.getType() === "svg";
  13737. if (!isSvg && this._lastZlevel != null) {
  13738. zr.painter.getLayer(this._lastZlevel).clear(true);
  13739. }
  13740. };
  13741. LinesView2.prototype.remove = function(ecModel, api) {
  13742. this._lineDraw && this._lineDraw.remove();
  13743. this._lineDraw = null;
  13744. this._clearLayer(api);
  13745. };
  13746. LinesView2.prototype.dispose = function(ecModel, api) {
  13747. this.remove(ecModel, api);
  13748. };
  13749. LinesView2.type = "lines";
  13750. return LinesView2;
  13751. }(Chart_default);
  13752. var LinesView_default = LinesView;
  13753. // node_modules/echarts/lib/chart/lines/LinesSeries.js
  13754. init_define_APP_INFO();
  13755. var Uint32Arr = typeof Uint32Array === "undefined" ? Array : Uint32Array;
  13756. var Float64Arr = typeof Float64Array === "undefined" ? Array : Float64Array;
  13757. function compatEc2(seriesOpt) {
  13758. var data = seriesOpt.data;
  13759. if (data && data[0] && data[0][0] && data[0][0].coord) {
  13760. if (true) {
  13761. console.warn("Lines data configuration has been changed to { coords:[[1,2],[2,3]] }");
  13762. }
  13763. seriesOpt.data = map(data, function(itemOpt) {
  13764. var coords = [itemOpt[0].coord, itemOpt[1].coord];
  13765. var target = {
  13766. coords
  13767. };
  13768. if (itemOpt[0].name) {
  13769. target.fromName = itemOpt[0].name;
  13770. }
  13771. if (itemOpt[1].name) {
  13772. target.toName = itemOpt[1].name;
  13773. }
  13774. return mergeAll([target, itemOpt[0], itemOpt[1]]);
  13775. });
  13776. }
  13777. }
  13778. var LinesSeriesModel = function(_super) {
  13779. __extends(LinesSeriesModel2, _super);
  13780. function LinesSeriesModel2() {
  13781. var _this = _super !== null && _super.apply(this, arguments) || this;
  13782. _this.type = LinesSeriesModel2.type;
  13783. _this.visualStyleAccessPath = "lineStyle";
  13784. _this.visualDrawType = "stroke";
  13785. return _this;
  13786. }
  13787. LinesSeriesModel2.prototype.init = function(option) {
  13788. option.data = option.data || [];
  13789. compatEc2(option);
  13790. var result = this._processFlatCoordsArray(option.data);
  13791. this._flatCoords = result.flatCoords;
  13792. this._flatCoordsOffset = result.flatCoordsOffset;
  13793. if (result.flatCoords) {
  13794. option.data = new Float32Array(result.count);
  13795. }
  13796. _super.prototype.init.apply(this, arguments);
  13797. };
  13798. LinesSeriesModel2.prototype.mergeOption = function(option) {
  13799. compatEc2(option);
  13800. if (option.data) {
  13801. var result = this._processFlatCoordsArray(option.data);
  13802. this._flatCoords = result.flatCoords;
  13803. this._flatCoordsOffset = result.flatCoordsOffset;
  13804. if (result.flatCoords) {
  13805. option.data = new Float32Array(result.count);
  13806. }
  13807. }
  13808. _super.prototype.mergeOption.apply(this, arguments);
  13809. };
  13810. LinesSeriesModel2.prototype.appendData = function(params) {
  13811. var result = this._processFlatCoordsArray(params.data);
  13812. if (result.flatCoords) {
  13813. if (!this._flatCoords) {
  13814. this._flatCoords = result.flatCoords;
  13815. this._flatCoordsOffset = result.flatCoordsOffset;
  13816. } else {
  13817. this._flatCoords = concatArray(this._flatCoords, result.flatCoords);
  13818. this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);
  13819. }
  13820. params.data = new Float32Array(result.count);
  13821. }
  13822. this.getRawData().appendData(params.data);
  13823. };
  13824. LinesSeriesModel2.prototype._getCoordsFromItemModel = function(idx) {
  13825. var itemModel = this.getData().getItemModel(idx);
  13826. var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow("coords");
  13827. if (true) {
  13828. if (!(coords instanceof Array && coords.length > 0 && coords[0] instanceof Array)) {
  13829. throw new Error("Invalid coords " + JSON.stringify(coords) + ". Lines must have 2d coords array in data item.");
  13830. }
  13831. }
  13832. return coords;
  13833. };
  13834. LinesSeriesModel2.prototype.getLineCoordsCount = function(idx) {
  13835. if (this._flatCoordsOffset) {
  13836. return this._flatCoordsOffset[idx * 2 + 1];
  13837. } else {
  13838. return this._getCoordsFromItemModel(idx).length;
  13839. }
  13840. };
  13841. LinesSeriesModel2.prototype.getLineCoords = function(idx, out) {
  13842. if (this._flatCoordsOffset) {
  13843. var offset = this._flatCoordsOffset[idx * 2];
  13844. var len2 = this._flatCoordsOffset[idx * 2 + 1];
  13845. for (var i = 0; i < len2; i++) {
  13846. out[i] = out[i] || [];
  13847. out[i][0] = this._flatCoords[offset + i * 2];
  13848. out[i][1] = this._flatCoords[offset + i * 2 + 1];
  13849. }
  13850. return len2;
  13851. } else {
  13852. var coords = this._getCoordsFromItemModel(idx);
  13853. for (var i = 0; i < coords.length; i++) {
  13854. out[i] = out[i] || [];
  13855. out[i][0] = coords[i][0];
  13856. out[i][1] = coords[i][1];
  13857. }
  13858. return coords.length;
  13859. }
  13860. };
  13861. LinesSeriesModel2.prototype._processFlatCoordsArray = function(data) {
  13862. var startOffset = 0;
  13863. if (this._flatCoords) {
  13864. startOffset = this._flatCoords.length;
  13865. }
  13866. if (isNumber(data[0])) {
  13867. var len2 = data.length;
  13868. var coordsOffsetAndLenStorage = new Uint32Arr(len2);
  13869. var coordsStorage = new Float64Arr(len2);
  13870. var coordsCursor = 0;
  13871. var offsetCursor = 0;
  13872. var dataCount = 0;
  13873. for (var i = 0; i < len2; ) {
  13874. dataCount++;
  13875. var count = data[i++];
  13876. coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset;
  13877. coordsOffsetAndLenStorage[offsetCursor++] = count;
  13878. for (var k = 0; k < count; k++) {
  13879. var x = data[i++];
  13880. var y = data[i++];
  13881. coordsStorage[coordsCursor++] = x;
  13882. coordsStorage[coordsCursor++] = y;
  13883. if (i > len2) {
  13884. if (true) {
  13885. throw new Error("Invalid data format.");
  13886. }
  13887. }
  13888. }
  13889. }
  13890. return {
  13891. flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),
  13892. flatCoords: coordsStorage,
  13893. count: dataCount
  13894. };
  13895. }
  13896. return {
  13897. flatCoordsOffset: null,
  13898. flatCoords: null,
  13899. count: data.length
  13900. };
  13901. };
  13902. LinesSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  13903. if (true) {
  13904. var CoordSys = CoordinateSystem_default.get(option.coordinateSystem);
  13905. if (!CoordSys) {
  13906. throw new Error("Unkown coordinate system " + option.coordinateSystem);
  13907. }
  13908. }
  13909. var lineData = new SeriesData_default(["value"], this);
  13910. lineData.hasItemOption = false;
  13911. lineData.initData(option.data, [], function(dataItem, dimName, dataIndex, dimIndex) {
  13912. if (dataItem instanceof Array) {
  13913. return NaN;
  13914. } else {
  13915. lineData.hasItemOption = true;
  13916. var value = dataItem.value;
  13917. if (value != null) {
  13918. return value instanceof Array ? value[dimIndex] : value;
  13919. }
  13920. }
  13921. });
  13922. return lineData;
  13923. };
  13924. LinesSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
  13925. var data = this.getData();
  13926. var itemModel = data.getItemModel(dataIndex);
  13927. var name = itemModel.get("name");
  13928. if (name) {
  13929. return name;
  13930. }
  13931. var fromName = itemModel.get("fromName");
  13932. var toName = itemModel.get("toName");
  13933. var nameArr = [];
  13934. fromName != null && nameArr.push(fromName);
  13935. toName != null && nameArr.push(toName);
  13936. return createTooltipMarkup("nameValue", {
  13937. name: nameArr.join(" > ")
  13938. });
  13939. };
  13940. LinesSeriesModel2.prototype.preventIncremental = function() {
  13941. return !!this.get(["effect", "show"]);
  13942. };
  13943. LinesSeriesModel2.prototype.getProgressive = function() {
  13944. var progressive = this.option.progressive;
  13945. if (progressive == null) {
  13946. return this.option.large ? 1e4 : this.get("progressive");
  13947. }
  13948. return progressive;
  13949. };
  13950. LinesSeriesModel2.prototype.getProgressiveThreshold = function() {
  13951. var progressiveThreshold = this.option.progressiveThreshold;
  13952. if (progressiveThreshold == null) {
  13953. return this.option.large ? 2e4 : this.get("progressiveThreshold");
  13954. }
  13955. return progressiveThreshold;
  13956. };
  13957. LinesSeriesModel2.prototype.getZLevelKey = function() {
  13958. var effectModel = this.getModel("effect");
  13959. var trailLength = effectModel.get("trailLength");
  13960. return this.getData().count() > this.getProgressiveThreshold() ? this.id : effectModel.get("show") && trailLength > 0 ? trailLength + "" : "";
  13961. };
  13962. LinesSeriesModel2.type = "series.lines";
  13963. LinesSeriesModel2.dependencies = ["grid", "polar", "geo", "calendar"];
  13964. LinesSeriesModel2.defaultOption = {
  13965. coordinateSystem: "geo",
  13966. z: 2,
  13967. legendHoverLink: true,
  13968. xAxisIndex: 0,
  13969. yAxisIndex: 0,
  13970. symbol: ["none", "none"],
  13971. symbolSize: [10, 10],
  13972. geoIndex: 0,
  13973. effect: {
  13974. show: false,
  13975. period: 4,
  13976. constantSpeed: 0,
  13977. symbol: "circle",
  13978. symbolSize: 3,
  13979. loop: true,
  13980. trailLength: 0.2
  13981. },
  13982. large: false,
  13983. largeThreshold: 2e3,
  13984. polyline: false,
  13985. clip: true,
  13986. label: {
  13987. show: false,
  13988. position: "end"
  13989. },
  13990. lineStyle: {
  13991. opacity: 0.5
  13992. }
  13993. };
  13994. return LinesSeriesModel2;
  13995. }(Series_default);
  13996. var LinesSeries_default = LinesSeriesModel;
  13997. // node_modules/echarts/lib/chart/lines/linesVisual.js
  13998. init_define_APP_INFO();
  13999. function normalize3(a) {
  14000. if (!(a instanceof Array)) {
  14001. a = [a, a];
  14002. }
  14003. return a;
  14004. }
  14005. var linesVisual = {
  14006. seriesType: "lines",
  14007. reset: function(seriesModel) {
  14008. var symbolType = normalize3(seriesModel.get("symbol"));
  14009. var symbolSize = normalize3(seriesModel.get("symbolSize"));
  14010. var data = seriesModel.getData();
  14011. data.setVisual("fromSymbol", symbolType && symbolType[0]);
  14012. data.setVisual("toSymbol", symbolType && symbolType[1]);
  14013. data.setVisual("fromSymbolSize", symbolSize && symbolSize[0]);
  14014. data.setVisual("toSymbolSize", symbolSize && symbolSize[1]);
  14015. function dataEach(data2, idx) {
  14016. var itemModel = data2.getItemModel(idx);
  14017. var symbolType2 = normalize3(itemModel.getShallow("symbol", true));
  14018. var symbolSize2 = normalize3(itemModel.getShallow("symbolSize", true));
  14019. symbolType2[0] && data2.setItemVisual(idx, "fromSymbol", symbolType2[0]);
  14020. symbolType2[1] && data2.setItemVisual(idx, "toSymbol", symbolType2[1]);
  14021. symbolSize2[0] && data2.setItemVisual(idx, "fromSymbolSize", symbolSize2[0]);
  14022. symbolSize2[1] && data2.setItemVisual(idx, "toSymbolSize", symbolSize2[1]);
  14023. }
  14024. return {
  14025. dataEach: data.hasItemOption ? dataEach : null
  14026. };
  14027. }
  14028. };
  14029. var linesVisual_default = linesVisual;
  14030. // node_modules/echarts/lib/chart/lines/install.js
  14031. function install21(registers) {
  14032. registers.registerChartView(LinesView_default);
  14033. registers.registerSeriesModel(LinesSeries_default);
  14034. registers.registerLayout(linesLayout_default);
  14035. registers.registerVisual(linesVisual_default);
  14036. }
  14037. // node_modules/echarts/lib/chart/heatmap/install.js
  14038. init_define_APP_INFO();
  14039. // node_modules/echarts/lib/chart/heatmap/HeatmapView.js
  14040. init_define_APP_INFO();
  14041. // node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js
  14042. init_define_APP_INFO();
  14043. var GRADIENT_LEVELS = 256;
  14044. var HeatmapLayer = function() {
  14045. function HeatmapLayer2() {
  14046. this.blurSize = 30;
  14047. this.pointSize = 20;
  14048. this.maxOpacity = 1;
  14049. this.minOpacity = 0;
  14050. this._gradientPixels = {
  14051. inRange: null,
  14052. outOfRange: null
  14053. };
  14054. var canvas = platformApi.createCanvas();
  14055. this.canvas = canvas;
  14056. }
  14057. HeatmapLayer2.prototype.update = function(data, width, height, normalize4, colorFunc, isInRange) {
  14058. var brush = this._getBrush();
  14059. var gradientInRange = this._getGradient(colorFunc, "inRange");
  14060. var gradientOutOfRange = this._getGradient(colorFunc, "outOfRange");
  14061. var r = this.pointSize + this.blurSize;
  14062. var canvas = this.canvas;
  14063. var ctx = canvas.getContext("2d");
  14064. var len2 = data.length;
  14065. canvas.width = width;
  14066. canvas.height = height;
  14067. for (var i = 0; i < len2; ++i) {
  14068. var p = data[i];
  14069. var x = p[0];
  14070. var y = p[1];
  14071. var value = p[2];
  14072. var alpha = normalize4(value);
  14073. ctx.globalAlpha = alpha;
  14074. ctx.drawImage(brush, x - r, y - r);
  14075. }
  14076. if (!canvas.width || !canvas.height) {
  14077. return canvas;
  14078. }
  14079. var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  14080. var pixels = imageData.data;
  14081. var offset = 0;
  14082. var pixelLen = pixels.length;
  14083. var minOpacity = this.minOpacity;
  14084. var maxOpacity = this.maxOpacity;
  14085. var diffOpacity = maxOpacity - minOpacity;
  14086. while (offset < pixelLen) {
  14087. var alpha = pixels[offset + 3] / 256;
  14088. var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4;
  14089. if (alpha > 0) {
  14090. var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange;
  14091. alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);
  14092. pixels[offset++] = gradient[gradientOffset];
  14093. pixels[offset++] = gradient[gradientOffset + 1];
  14094. pixels[offset++] = gradient[gradientOffset + 2];
  14095. pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256;
  14096. } else {
  14097. offset += 4;
  14098. }
  14099. }
  14100. ctx.putImageData(imageData, 0, 0);
  14101. return canvas;
  14102. };
  14103. HeatmapLayer2.prototype._getBrush = function() {
  14104. var brushCanvas = this._brushCanvas || (this._brushCanvas = platformApi.createCanvas());
  14105. var r = this.pointSize + this.blurSize;
  14106. var d = r * 2;
  14107. brushCanvas.width = d;
  14108. brushCanvas.height = d;
  14109. var ctx = brushCanvas.getContext("2d");
  14110. ctx.clearRect(0, 0, d, d);
  14111. ctx.shadowOffsetX = d;
  14112. ctx.shadowBlur = this.blurSize;
  14113. ctx.shadowColor = "#000";
  14114. ctx.beginPath();
  14115. ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true);
  14116. ctx.closePath();
  14117. ctx.fill();
  14118. return brushCanvas;
  14119. };
  14120. HeatmapLayer2.prototype._getGradient = function(colorFunc, state) {
  14121. var gradientPixels = this._gradientPixels;
  14122. var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));
  14123. var color = [0, 0, 0, 0];
  14124. var off = 0;
  14125. for (var i = 0; i < 256; i++) {
  14126. colorFunc[state](i / 255, true, color);
  14127. pixelsSingleState[off++] = color[0];
  14128. pixelsSingleState[off++] = color[1];
  14129. pixelsSingleState[off++] = color[2];
  14130. pixelsSingleState[off++] = color[3];
  14131. }
  14132. return pixelsSingleState;
  14133. };
  14134. return HeatmapLayer2;
  14135. }();
  14136. var HeatmapLayer_default = HeatmapLayer;
  14137. // node_modules/echarts/lib/chart/heatmap/HeatmapView.js
  14138. function getIsInPiecewiseRange(dataExtent, pieceList, selected) {
  14139. var dataSpan = dataExtent[1] - dataExtent[0];
  14140. pieceList = map(pieceList, function(piece) {
  14141. return {
  14142. interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan]
  14143. };
  14144. });
  14145. var len2 = pieceList.length;
  14146. var lastIndex = 0;
  14147. return function(val) {
  14148. var i;
  14149. for (i = lastIndex; i < len2; i++) {
  14150. var interval = pieceList[i].interval;
  14151. if (interval[0] <= val && val <= interval[1]) {
  14152. lastIndex = i;
  14153. break;
  14154. }
  14155. }
  14156. if (i === len2) {
  14157. for (i = lastIndex - 1; i >= 0; i--) {
  14158. var interval = pieceList[i].interval;
  14159. if (interval[0] <= val && val <= interval[1]) {
  14160. lastIndex = i;
  14161. break;
  14162. }
  14163. }
  14164. }
  14165. return i >= 0 && i < len2 && selected[i];
  14166. };
  14167. }
  14168. function getIsInContinuousRange(dataExtent, range) {
  14169. var dataSpan = dataExtent[1] - dataExtent[0];
  14170. range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan];
  14171. return function(val) {
  14172. return val >= range[0] && val <= range[1];
  14173. };
  14174. }
  14175. function isGeoCoordSys(coordSys) {
  14176. var dimensions = coordSys.dimensions;
  14177. return dimensions[0] === "lng" && dimensions[1] === "lat";
  14178. }
  14179. var HeatmapView = function(_super) {
  14180. __extends(HeatmapView2, _super);
  14181. function HeatmapView2() {
  14182. var _this = _super !== null && _super.apply(this, arguments) || this;
  14183. _this.type = HeatmapView2.type;
  14184. return _this;
  14185. }
  14186. HeatmapView2.prototype.render = function(seriesModel, ecModel, api) {
  14187. var visualMapOfThisSeries;
  14188. ecModel.eachComponent("visualMap", function(visualMap) {
  14189. visualMap.eachTargetSeries(function(targetSeries) {
  14190. if (targetSeries === seriesModel) {
  14191. visualMapOfThisSeries = visualMap;
  14192. }
  14193. });
  14194. });
  14195. if (true) {
  14196. if (!visualMapOfThisSeries) {
  14197. throw new Error("Heatmap must use with visualMap");
  14198. }
  14199. }
  14200. this._progressiveEls = null;
  14201. this.group.removeAll();
  14202. var coordSys = seriesModel.coordinateSystem;
  14203. if (coordSys.type === "cartesian2d" || coordSys.type === "calendar") {
  14204. this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());
  14205. } else if (isGeoCoordSys(coordSys)) {
  14206. this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);
  14207. }
  14208. };
  14209. HeatmapView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
  14210. this.group.removeAll();
  14211. };
  14212. HeatmapView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) {
  14213. var coordSys = seriesModel.coordinateSystem;
  14214. if (coordSys) {
  14215. if (isGeoCoordSys(coordSys)) {
  14216. this.render(seriesModel, ecModel, api);
  14217. } else {
  14218. this._progressiveEls = [];
  14219. this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);
  14220. }
  14221. }
  14222. };
  14223. HeatmapView2.prototype.eachRendered = function(cb) {
  14224. traverseElements(this._progressiveEls || this.group, cb);
  14225. };
  14226. HeatmapView2.prototype._renderOnCartesianAndCalendar = function(seriesModel, api, start, end, incremental) {
  14227. var coordSys = seriesModel.coordinateSystem;
  14228. var isCartesian2d = isCoordinateSystemType(coordSys, "cartesian2d");
  14229. var width;
  14230. var height;
  14231. var xAxisExtent;
  14232. var yAxisExtent;
  14233. if (isCartesian2d) {
  14234. var xAxis = coordSys.getAxis("x");
  14235. var yAxis = coordSys.getAxis("y");
  14236. if (true) {
  14237. if (!(xAxis.type === "category" && yAxis.type === "category")) {
  14238. throw new Error("Heatmap on cartesian must have two category axes");
  14239. }
  14240. if (!(xAxis.onBand && yAxis.onBand)) {
  14241. throw new Error("Heatmap on cartesian must have two axes with boundaryGap true");
  14242. }
  14243. }
  14244. width = xAxis.getBandWidth() + 0.5;
  14245. height = yAxis.getBandWidth() + 0.5;
  14246. xAxisExtent = xAxis.scale.getExtent();
  14247. yAxisExtent = yAxis.scale.getExtent();
  14248. }
  14249. var group = this.group;
  14250. var data = seriesModel.getData();
  14251. var emphasisStyle = seriesModel.getModel(["emphasis", "itemStyle"]).getItemStyle();
  14252. var blurStyle = seriesModel.getModel(["blur", "itemStyle"]).getItemStyle();
  14253. var selectStyle = seriesModel.getModel(["select", "itemStyle"]).getItemStyle();
  14254. var borderRadius = seriesModel.get(["itemStyle", "borderRadius"]);
  14255. var labelStatesModels = getLabelStatesModels(seriesModel);
  14256. var emphasisModel = seriesModel.getModel("emphasis");
  14257. var focus = emphasisModel.get("focus");
  14258. var blurScope = emphasisModel.get("blurScope");
  14259. var emphasisDisabled = emphasisModel.get("disabled");
  14260. var dataDims = isCartesian2d ? [data.mapDimension("x"), data.mapDimension("y"), data.mapDimension("value")] : [data.mapDimension("time"), data.mapDimension("value")];
  14261. for (var idx = start; idx < end; idx++) {
  14262. var rect = void 0;
  14263. var style = data.getItemVisual(idx, "style");
  14264. if (isCartesian2d) {
  14265. var dataDimX = data.get(dataDims[0], idx);
  14266. var dataDimY = data.get(dataDims[1], idx);
  14267. if (isNaN(data.get(dataDims[2], idx)) || dataDimX < xAxisExtent[0] || dataDimX > xAxisExtent[1] || dataDimY < yAxisExtent[0] || dataDimY > yAxisExtent[1]) {
  14268. continue;
  14269. }
  14270. var point = coordSys.dataToPoint([dataDimX, dataDimY]);
  14271. rect = new Rect_default({
  14272. shape: {
  14273. x: point[0] - width / 2,
  14274. y: point[1] - height / 2,
  14275. width,
  14276. height
  14277. },
  14278. style
  14279. });
  14280. } else {
  14281. if (isNaN(data.get(dataDims[1], idx))) {
  14282. continue;
  14283. }
  14284. rect = new Rect_default({
  14285. z2: 1,
  14286. shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,
  14287. style
  14288. });
  14289. }
  14290. if (data.hasItemOption) {
  14291. var itemModel = data.getItemModel(idx);
  14292. var emphasisModel_1 = itemModel.getModel("emphasis");
  14293. emphasisStyle = emphasisModel_1.getModel("itemStyle").getItemStyle();
  14294. blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle();
  14295. selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle();
  14296. borderRadius = itemModel.get(["itemStyle", "borderRadius"]);
  14297. focus = emphasisModel_1.get("focus");
  14298. blurScope = emphasisModel_1.get("blurScope");
  14299. emphasisDisabled = emphasisModel_1.get("disabled");
  14300. labelStatesModels = getLabelStatesModels(itemModel);
  14301. }
  14302. rect.shape.r = borderRadius;
  14303. var rawValue = seriesModel.getRawValue(idx);
  14304. var defaultText = "-";
  14305. if (rawValue && rawValue[2] != null) {
  14306. defaultText = rawValue[2] + "";
  14307. }
  14308. setLabelStyle(rect, labelStatesModels, {
  14309. labelFetcher: seriesModel,
  14310. labelDataIndex: idx,
  14311. defaultOpacity: style.opacity,
  14312. defaultText
  14313. });
  14314. rect.ensureState("emphasis").style = emphasisStyle;
  14315. rect.ensureState("blur").style = blurStyle;
  14316. rect.ensureState("select").style = selectStyle;
  14317. toggleHoverEmphasis(rect, focus, blurScope, emphasisDisabled);
  14318. rect.incremental = incremental;
  14319. if (incremental) {
  14320. rect.states.emphasis.hoverLayer = true;
  14321. }
  14322. group.add(rect);
  14323. data.setItemGraphicEl(idx, rect);
  14324. if (this._progressiveEls) {
  14325. this._progressiveEls.push(rect);
  14326. }
  14327. }
  14328. };
  14329. HeatmapView2.prototype._renderOnGeo = function(geo, seriesModel, visualMapModel, api) {
  14330. var inRangeVisuals = visualMapModel.targetVisuals.inRange;
  14331. var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange;
  14332. var data = seriesModel.getData();
  14333. var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer_default();
  14334. hmLayer.blurSize = seriesModel.get("blurSize");
  14335. hmLayer.pointSize = seriesModel.get("pointSize");
  14336. hmLayer.minOpacity = seriesModel.get("minOpacity");
  14337. hmLayer.maxOpacity = seriesModel.get("maxOpacity");
  14338. var rect = geo.getViewRect().clone();
  14339. var roamTransform = geo.getRoamTransform();
  14340. rect.applyTransform(roamTransform);
  14341. var x = Math.max(rect.x, 0);
  14342. var y = Math.max(rect.y, 0);
  14343. var x2 = Math.min(rect.width + rect.x, api.getWidth());
  14344. var y2 = Math.min(rect.height + rect.y, api.getHeight());
  14345. var width = x2 - x;
  14346. var height = y2 - y;
  14347. var dims = [data.mapDimension("lng"), data.mapDimension("lat"), data.mapDimension("value")];
  14348. var points = data.mapArray(dims, function(lng, lat, value) {
  14349. var pt = geo.dataToPoint([lng, lat]);
  14350. pt[0] -= x;
  14351. pt[1] -= y;
  14352. pt.push(value);
  14353. return pt;
  14354. });
  14355. var dataExtent = visualMapModel.getExtent();
  14356. var isInRange = visualMapModel.type === "visualMap.continuous" ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);
  14357. hmLayer.update(points, width, height, inRangeVisuals.color.getNormalizer(), {
  14358. inRange: inRangeVisuals.color.getColorMapper(),
  14359. outOfRange: outOfRangeVisuals.color.getColorMapper()
  14360. }, isInRange);
  14361. var img = new Image_default({
  14362. style: {
  14363. width,
  14364. height,
  14365. x,
  14366. y,
  14367. image: hmLayer.canvas
  14368. },
  14369. silent: true
  14370. });
  14371. this.group.add(img);
  14372. };
  14373. HeatmapView2.type = "heatmap";
  14374. return HeatmapView2;
  14375. }(Chart_default);
  14376. var HeatmapView_default = HeatmapView;
  14377. // node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js
  14378. init_define_APP_INFO();
  14379. var HeatmapSeriesModel = function(_super) {
  14380. __extends(HeatmapSeriesModel2, _super);
  14381. function HeatmapSeriesModel2() {
  14382. var _this = _super !== null && _super.apply(this, arguments) || this;
  14383. _this.type = HeatmapSeriesModel2.type;
  14384. return _this;
  14385. }
  14386. HeatmapSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  14387. return createSeriesData_default(null, this, {
  14388. generateCoord: "value"
  14389. });
  14390. };
  14391. HeatmapSeriesModel2.prototype.preventIncremental = function() {
  14392. var coordSysCreator = CoordinateSystem_default.get(this.get("coordinateSystem"));
  14393. if (coordSysCreator && coordSysCreator.dimensions) {
  14394. return coordSysCreator.dimensions[0] === "lng" && coordSysCreator.dimensions[1] === "lat";
  14395. }
  14396. };
  14397. HeatmapSeriesModel2.type = "series.heatmap";
  14398. HeatmapSeriesModel2.dependencies = ["grid", "geo", "calendar"];
  14399. HeatmapSeriesModel2.defaultOption = {
  14400. coordinateSystem: "cartesian2d",
  14401. z: 2,
  14402. geoIndex: 0,
  14403. blurSize: 30,
  14404. pointSize: 20,
  14405. maxOpacity: 1,
  14406. minOpacity: 0,
  14407. select: {
  14408. itemStyle: {
  14409. borderColor: "#212121"
  14410. }
  14411. }
  14412. };
  14413. return HeatmapSeriesModel2;
  14414. }(Series_default);
  14415. var HeatmapSeries_default = HeatmapSeriesModel;
  14416. // node_modules/echarts/lib/chart/heatmap/install.js
  14417. function install22(registers) {
  14418. registers.registerChartView(HeatmapView_default);
  14419. registers.registerSeriesModel(HeatmapSeries_default);
  14420. }
  14421. // node_modules/echarts/lib/chart/bar/installPictorialBar.js
  14422. init_define_APP_INFO();
  14423. // node_modules/echarts/lib/chart/bar/PictorialBarView.js
  14424. init_define_APP_INFO();
  14425. var BAR_BORDER_WIDTH_QUERY = ["itemStyle", "borderWidth"];
  14426. var LAYOUT_ATTRS = [{
  14427. xy: "x",
  14428. wh: "width",
  14429. index: 0,
  14430. posDesc: ["left", "right"]
  14431. }, {
  14432. xy: "y",
  14433. wh: "height",
  14434. index: 1,
  14435. posDesc: ["top", "bottom"]
  14436. }];
  14437. var pathForLineWidth = new Circle_default();
  14438. var PictorialBarView = function(_super) {
  14439. __extends(PictorialBarView2, _super);
  14440. function PictorialBarView2() {
  14441. var _this = _super !== null && _super.apply(this, arguments) || this;
  14442. _this.type = PictorialBarView2.type;
  14443. return _this;
  14444. }
  14445. PictorialBarView2.prototype.render = function(seriesModel, ecModel, api) {
  14446. var group = this.group;
  14447. var data = seriesModel.getData();
  14448. var oldData = this._data;
  14449. var cartesian = seriesModel.coordinateSystem;
  14450. var baseAxis = cartesian.getBaseAxis();
  14451. var isHorizontal = baseAxis.isHorizontal();
  14452. var coordSysRect = cartesian.master.getRect();
  14453. var opt = {
  14454. ecSize: {
  14455. width: api.getWidth(),
  14456. height: api.getHeight()
  14457. },
  14458. seriesModel,
  14459. coordSys: cartesian,
  14460. coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],
  14461. isHorizontal,
  14462. valueDim: LAYOUT_ATTRS[+isHorizontal],
  14463. categoryDim: LAYOUT_ATTRS[1 - +isHorizontal]
  14464. };
  14465. data.diff(oldData).add(function(dataIndex) {
  14466. if (!data.hasValue(dataIndex)) {
  14467. return;
  14468. }
  14469. var itemModel = getItemModel(data, dataIndex);
  14470. var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);
  14471. var bar = createBar(data, opt, symbolMeta);
  14472. data.setItemGraphicEl(dataIndex, bar);
  14473. group.add(bar);
  14474. updateCommon(bar, opt, symbolMeta);
  14475. }).update(function(newIndex, oldIndex) {
  14476. var bar = oldData.getItemGraphicEl(oldIndex);
  14477. if (!data.hasValue(newIndex)) {
  14478. group.remove(bar);
  14479. return;
  14480. }
  14481. var itemModel = getItemModel(data, newIndex);
  14482. var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);
  14483. var pictorialShapeStr = getShapeStr(data, symbolMeta);
  14484. if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {
  14485. group.remove(bar);
  14486. data.setItemGraphicEl(newIndex, null);
  14487. bar = null;
  14488. }
  14489. if (bar) {
  14490. updateBar(bar, opt, symbolMeta);
  14491. } else {
  14492. bar = createBar(data, opt, symbolMeta, true);
  14493. }
  14494. data.setItemGraphicEl(newIndex, bar);
  14495. bar.__pictorialSymbolMeta = symbolMeta;
  14496. group.add(bar);
  14497. updateCommon(bar, opt, symbolMeta);
  14498. }).remove(function(dataIndex) {
  14499. var bar = oldData.getItemGraphicEl(dataIndex);
  14500. bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);
  14501. }).execute();
  14502. this._data = data;
  14503. return this.group;
  14504. };
  14505. PictorialBarView2.prototype.remove = function(ecModel, api) {
  14506. var group = this.group;
  14507. var data = this._data;
  14508. if (ecModel.get("animation")) {
  14509. if (data) {
  14510. data.eachItemGraphicEl(function(bar) {
  14511. removeBar(data, getECData(bar).dataIndex, ecModel, bar);
  14512. });
  14513. }
  14514. } else {
  14515. group.removeAll();
  14516. }
  14517. };
  14518. PictorialBarView2.type = "pictorialBar";
  14519. return PictorialBarView2;
  14520. }(Chart_default);
  14521. function getSymbolMeta(data, dataIndex, itemModel, opt) {
  14522. var layout2 = data.getItemLayout(dataIndex);
  14523. var symbolRepeat = itemModel.get("symbolRepeat");
  14524. var symbolClip = itemModel.get("symbolClip");
  14525. var symbolPosition = itemModel.get("symbolPosition") || "start";
  14526. var symbolRotate = itemModel.get("symbolRotate");
  14527. var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;
  14528. var symbolPatternSize = itemModel.get("symbolPatternSize") || 2;
  14529. var isAnimationEnabled2 = itemModel.isAnimationEnabled();
  14530. var symbolMeta = {
  14531. dataIndex,
  14532. layout: layout2,
  14533. itemModel,
  14534. symbolType: data.getItemVisual(dataIndex, "symbol") || "circle",
  14535. style: data.getItemVisual(dataIndex, "style"),
  14536. symbolClip,
  14537. symbolRepeat,
  14538. symbolRepeatDirection: itemModel.get("symbolRepeatDirection"),
  14539. symbolPatternSize,
  14540. rotation,
  14541. animationModel: isAnimationEnabled2 ? itemModel : null,
  14542. hoverScale: isAnimationEnabled2 && itemModel.get(["emphasis", "scale"]),
  14543. z2: itemModel.getShallow("z", true) || 0
  14544. };
  14545. prepareBarLength(itemModel, symbolRepeat, layout2, opt, symbolMeta);
  14546. prepareSymbolSize(data, dataIndex, layout2, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);
  14547. prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);
  14548. var symbolSize = symbolMeta.symbolSize;
  14549. var symbolOffset = normalizeSymbolOffset(itemModel.get("symbolOffset"), symbolSize);
  14550. prepareLayoutInfo(itemModel, symbolSize, layout2, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);
  14551. return symbolMeta;
  14552. }
  14553. function prepareBarLength(itemModel, symbolRepeat, layout2, opt, outputSymbolMeta) {
  14554. var valueDim = opt.valueDim;
  14555. var symbolBoundingData = itemModel.get("symbolBoundingData");
  14556. var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());
  14557. var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));
  14558. var pxSignIdx = 1 - +(layout2[valueDim.wh] <= 0);
  14559. var boundingLength;
  14560. if (isArray(symbolBoundingData)) {
  14561. var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx];
  14562. symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();
  14563. boundingLength = symbolBoundingExtent[pxSignIdx];
  14564. } else if (symbolBoundingData != null) {
  14565. boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;
  14566. } else if (symbolRepeat) {
  14567. boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;
  14568. } else {
  14569. boundingLength = layout2[valueDim.wh];
  14570. }
  14571. outputSymbolMeta.boundingLength = boundingLength;
  14572. if (symbolRepeat) {
  14573. outputSymbolMeta.repeatCutLength = layout2[valueDim.wh];
  14574. }
  14575. outputSymbolMeta.pxSign = boundingLength > 0 ? 1 : -1;
  14576. }
  14577. function convertToCoordOnAxis(axis, value) {
  14578. return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));
  14579. }
  14580. function prepareSymbolSize(data, dataIndex, layout2, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) {
  14581. var valueDim = opt.valueDim;
  14582. var categoryDim = opt.categoryDim;
  14583. var categorySize = Math.abs(layout2[categoryDim.wh]);
  14584. var symbolSize = data.getItemVisual(dataIndex, "symbolSize");
  14585. var parsedSymbolSize;
  14586. if (isArray(symbolSize)) {
  14587. parsedSymbolSize = symbolSize.slice();
  14588. } else {
  14589. if (symbolSize == null) {
  14590. parsedSymbolSize = ["100%", "100%"];
  14591. } else {
  14592. parsedSymbolSize = [symbolSize, symbolSize];
  14593. }
  14594. }
  14595. parsedSymbolSize[categoryDim.index] = parsePercent2(parsedSymbolSize[categoryDim.index], categorySize);
  14596. parsedSymbolSize[valueDim.index] = parsePercent2(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));
  14597. outputSymbolMeta.symbolSize = parsedSymbolSize;
  14598. var symbolScale = outputSymbolMeta.symbolScale = [parsedSymbolSize[0] / symbolPatternSize, parsedSymbolSize[1] / symbolPatternSize];
  14599. symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;
  14600. }
  14601. function prepareLineWidth(itemModel, symbolScale, rotation, opt, outputSymbolMeta) {
  14602. var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;
  14603. if (valueLineWidth) {
  14604. pathForLineWidth.attr({
  14605. scaleX: symbolScale[0],
  14606. scaleY: symbolScale[1],
  14607. rotation
  14608. });
  14609. pathForLineWidth.updateTransform();
  14610. valueLineWidth /= pathForLineWidth.getLineScale();
  14611. valueLineWidth *= symbolScale[opt.valueDim.index];
  14612. }
  14613. outputSymbolMeta.valueLineWidth = valueLineWidth || 0;
  14614. }
  14615. function prepareLayoutInfo(itemModel, symbolSize, layout2, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) {
  14616. var categoryDim = opt.categoryDim;
  14617. var valueDim = opt.valueDim;
  14618. var pxSign = outputSymbolMeta.pxSign;
  14619. var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);
  14620. var pathLen = unitLength;
  14621. if (symbolRepeat) {
  14622. var absBoundingLength = Math.abs(boundingLength);
  14623. var symbolMargin = retrieve(itemModel.get("symbolMargin"), "15%") + "";
  14624. var hasEndGap = false;
  14625. if (symbolMargin.lastIndexOf("!") === symbolMargin.length - 1) {
  14626. hasEndGap = true;
  14627. symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);
  14628. }
  14629. var symbolMarginNumeric = parsePercent2(symbolMargin, symbolSize[valueDim.index]);
  14630. var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0);
  14631. var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;
  14632. var repeatSpecified = isNumeric(symbolRepeat);
  14633. var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin);
  14634. var mDiff = absBoundingLength - repeatTimes * unitLength;
  14635. symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : Math.max(repeatTimes - 1, 1));
  14636. uLenWithMargin = unitLength + symbolMarginNumeric * 2;
  14637. endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;
  14638. if (!repeatSpecified && symbolRepeat !== "fixed") {
  14639. repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;
  14640. }
  14641. pathLen = repeatTimes * uLenWithMargin - endFix;
  14642. outputSymbolMeta.repeatTimes = repeatTimes;
  14643. outputSymbolMeta.symbolMargin = symbolMarginNumeric;
  14644. }
  14645. var sizeFix = pxSign * (pathLen / 2);
  14646. var pathPosition = outputSymbolMeta.pathPosition = [];
  14647. pathPosition[categoryDim.index] = layout2[categoryDim.wh] / 2;
  14648. pathPosition[valueDim.index] = symbolPosition === "start" ? sizeFix : symbolPosition === "end" ? boundingLength - sizeFix : boundingLength / 2;
  14649. if (symbolOffset) {
  14650. pathPosition[0] += symbolOffset[0];
  14651. pathPosition[1] += symbolOffset[1];
  14652. }
  14653. var bundlePosition = outputSymbolMeta.bundlePosition = [];
  14654. bundlePosition[categoryDim.index] = layout2[categoryDim.xy];
  14655. bundlePosition[valueDim.index] = layout2[valueDim.xy];
  14656. var barRectShape = outputSymbolMeta.barRectShape = extend({}, layout2);
  14657. barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout2[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));
  14658. barRectShape[categoryDim.wh] = layout2[categoryDim.wh];
  14659. var clipShape = outputSymbolMeta.clipShape = {};
  14660. clipShape[categoryDim.xy] = -layout2[categoryDim.xy];
  14661. clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];
  14662. clipShape[valueDim.xy] = 0;
  14663. clipShape[valueDim.wh] = layout2[valueDim.wh];
  14664. }
  14665. function createPath(symbolMeta) {
  14666. var symbolPatternSize = symbolMeta.symbolPatternSize;
  14667. var path = createSymbol(
  14668. symbolMeta.symbolType,
  14669. -symbolPatternSize / 2,
  14670. -symbolPatternSize / 2,
  14671. symbolPatternSize,
  14672. symbolPatternSize
  14673. );
  14674. path.attr({
  14675. culling: true
  14676. });
  14677. path.type !== "image" && path.setStyle({
  14678. strokeNoScale: true
  14679. });
  14680. return path;
  14681. }
  14682. function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {
  14683. var bundle = bar.__pictorialBundle;
  14684. var symbolSize = symbolMeta.symbolSize;
  14685. var valueLineWidth = symbolMeta.valueLineWidth;
  14686. var pathPosition = symbolMeta.pathPosition;
  14687. var valueDim = opt.valueDim;
  14688. var repeatTimes = symbolMeta.repeatTimes || 0;
  14689. var index = 0;
  14690. var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;
  14691. eachPath(bar, function(path2) {
  14692. path2.__pictorialAnimationIndex = index;
  14693. path2.__pictorialRepeatTimes = repeatTimes;
  14694. if (index < repeatTimes) {
  14695. updateAttr(path2, null, makeTarget(index), symbolMeta, isUpdate);
  14696. } else {
  14697. updateAttr(path2, null, {
  14698. scaleX: 0,
  14699. scaleY: 0
  14700. }, symbolMeta, isUpdate, function() {
  14701. bundle.remove(path2);
  14702. });
  14703. }
  14704. index++;
  14705. });
  14706. for (; index < repeatTimes; index++) {
  14707. var path = createPath(symbolMeta);
  14708. path.__pictorialAnimationIndex = index;
  14709. path.__pictorialRepeatTimes = repeatTimes;
  14710. bundle.add(path);
  14711. var target = makeTarget(index);
  14712. updateAttr(path, {
  14713. x: target.x,
  14714. y: target.y,
  14715. scaleX: 0,
  14716. scaleY: 0
  14717. }, {
  14718. scaleX: target.scaleX,
  14719. scaleY: target.scaleY,
  14720. rotation: target.rotation
  14721. }, symbolMeta, isUpdate);
  14722. }
  14723. function makeTarget(index2) {
  14724. var position2 = pathPosition.slice();
  14725. var pxSign = symbolMeta.pxSign;
  14726. var i = index2;
  14727. if (symbolMeta.symbolRepeatDirection === "start" ? pxSign > 0 : pxSign < 0) {
  14728. i = repeatTimes - 1 - index2;
  14729. }
  14730. position2[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];
  14731. return {
  14732. x: position2[0],
  14733. y: position2[1],
  14734. scaleX: symbolMeta.symbolScale[0],
  14735. scaleY: symbolMeta.symbolScale[1],
  14736. rotation: symbolMeta.rotation
  14737. };
  14738. }
  14739. }
  14740. function createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {
  14741. var bundle = bar.__pictorialBundle;
  14742. var mainPath = bar.__pictorialMainPath;
  14743. if (!mainPath) {
  14744. mainPath = bar.__pictorialMainPath = createPath(symbolMeta);
  14745. bundle.add(mainPath);
  14746. updateAttr(mainPath, {
  14747. x: symbolMeta.pathPosition[0],
  14748. y: symbolMeta.pathPosition[1],
  14749. scaleX: 0,
  14750. scaleY: 0,
  14751. rotation: symbolMeta.rotation
  14752. }, {
  14753. scaleX: symbolMeta.symbolScale[0],
  14754. scaleY: symbolMeta.symbolScale[1]
  14755. }, symbolMeta, isUpdate);
  14756. } else {
  14757. updateAttr(mainPath, null, {
  14758. x: symbolMeta.pathPosition[0],
  14759. y: symbolMeta.pathPosition[1],
  14760. scaleX: symbolMeta.symbolScale[0],
  14761. scaleY: symbolMeta.symbolScale[1],
  14762. rotation: symbolMeta.rotation
  14763. }, symbolMeta, isUpdate);
  14764. }
  14765. }
  14766. function createOrUpdateBarRect(bar, symbolMeta, isUpdate) {
  14767. var rectShape = extend({}, symbolMeta.barRectShape);
  14768. var barRect = bar.__pictorialBarRect;
  14769. if (!barRect) {
  14770. barRect = bar.__pictorialBarRect = new Rect_default({
  14771. z2: 2,
  14772. shape: rectShape,
  14773. silent: true,
  14774. style: {
  14775. stroke: "transparent",
  14776. fill: "transparent",
  14777. lineWidth: 0
  14778. }
  14779. });
  14780. barRect.disableMorphing = true;
  14781. bar.add(barRect);
  14782. } else {
  14783. updateAttr(barRect, null, {
  14784. shape: rectShape
  14785. }, symbolMeta, isUpdate);
  14786. }
  14787. }
  14788. function createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {
  14789. if (symbolMeta.symbolClip) {
  14790. var clipPath = bar.__pictorialClipPath;
  14791. var clipShape = extend({}, symbolMeta.clipShape);
  14792. var valueDim = opt.valueDim;
  14793. var animationModel = symbolMeta.animationModel;
  14794. var dataIndex = symbolMeta.dataIndex;
  14795. if (clipPath) {
  14796. updateProps(clipPath, {
  14797. shape: clipShape
  14798. }, animationModel, dataIndex);
  14799. } else {
  14800. clipShape[valueDim.wh] = 0;
  14801. clipPath = new Rect_default({
  14802. shape: clipShape
  14803. });
  14804. bar.__pictorialBundle.setClipPath(clipPath);
  14805. bar.__pictorialClipPath = clipPath;
  14806. var target = {};
  14807. target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];
  14808. graphic_exports[isUpdate ? "updateProps" : "initProps"](clipPath, {
  14809. shape: target
  14810. }, animationModel, dataIndex);
  14811. }
  14812. }
  14813. }
  14814. function getItemModel(data, dataIndex) {
  14815. var itemModel = data.getItemModel(dataIndex);
  14816. itemModel.getAnimationDelayParams = getAnimationDelayParams;
  14817. itemModel.isAnimationEnabled = isAnimationEnabled;
  14818. return itemModel;
  14819. }
  14820. function getAnimationDelayParams(path) {
  14821. return {
  14822. index: path.__pictorialAnimationIndex,
  14823. count: path.__pictorialRepeatTimes
  14824. };
  14825. }
  14826. function isAnimationEnabled() {
  14827. return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation");
  14828. }
  14829. function createBar(data, opt, symbolMeta, isUpdate) {
  14830. var bar = new Group_default();
  14831. var bundle = new Group_default();
  14832. bar.add(bundle);
  14833. bar.__pictorialBundle = bundle;
  14834. bundle.x = symbolMeta.bundlePosition[0];
  14835. bundle.y = symbolMeta.bundlePosition[1];
  14836. if (symbolMeta.symbolRepeat) {
  14837. createOrUpdateRepeatSymbols(bar, opt, symbolMeta);
  14838. } else {
  14839. createOrUpdateSingleSymbol(bar, opt, symbolMeta);
  14840. }
  14841. createOrUpdateBarRect(bar, symbolMeta, isUpdate);
  14842. createOrUpdateClip(bar, opt, symbolMeta, isUpdate);
  14843. bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);
  14844. bar.__pictorialSymbolMeta = symbolMeta;
  14845. return bar;
  14846. }
  14847. function updateBar(bar, opt, symbolMeta) {
  14848. var animationModel = symbolMeta.animationModel;
  14849. var dataIndex = symbolMeta.dataIndex;
  14850. var bundle = bar.__pictorialBundle;
  14851. updateProps(bundle, {
  14852. x: symbolMeta.bundlePosition[0],
  14853. y: symbolMeta.bundlePosition[1]
  14854. }, animationModel, dataIndex);
  14855. if (symbolMeta.symbolRepeat) {
  14856. createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);
  14857. } else {
  14858. createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);
  14859. }
  14860. createOrUpdateBarRect(bar, symbolMeta, true);
  14861. createOrUpdateClip(bar, opt, symbolMeta, true);
  14862. }
  14863. function removeBar(data, dataIndex, animationModel, bar) {
  14864. var labelRect = bar.__pictorialBarRect;
  14865. labelRect && labelRect.removeTextContent();
  14866. var paths = [];
  14867. eachPath(bar, function(path) {
  14868. paths.push(path);
  14869. });
  14870. bar.__pictorialMainPath && paths.push(bar.__pictorialMainPath);
  14871. bar.__pictorialClipPath && (animationModel = null);
  14872. each(paths, function(path) {
  14873. removeElement(path, {
  14874. scaleX: 0,
  14875. scaleY: 0
  14876. }, animationModel, dataIndex, function() {
  14877. bar.parent && bar.parent.remove(bar);
  14878. });
  14879. });
  14880. data.setItemGraphicEl(dataIndex, null);
  14881. }
  14882. function getShapeStr(data, symbolMeta) {
  14883. return [data.getItemVisual(symbolMeta.dataIndex, "symbol") || "none", !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(":");
  14884. }
  14885. function eachPath(bar, cb, context) {
  14886. each(bar.__pictorialBundle.children(), function(el) {
  14887. el !== bar.__pictorialBarRect && cb.call(context, el);
  14888. });
  14889. }
  14890. function updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {
  14891. immediateAttrs && el.attr(immediateAttrs);
  14892. if (symbolMeta.symbolClip && !isUpdate) {
  14893. animationAttrs && el.attr(animationAttrs);
  14894. } else {
  14895. animationAttrs && graphic_exports[isUpdate ? "updateProps" : "initProps"](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);
  14896. }
  14897. }
  14898. function updateCommon(bar, opt, symbolMeta) {
  14899. var dataIndex = symbolMeta.dataIndex;
  14900. var itemModel = symbolMeta.itemModel;
  14901. var emphasisModel = itemModel.getModel("emphasis");
  14902. var emphasisStyle = emphasisModel.getModel("itemStyle").getItemStyle();
  14903. var blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle();
  14904. var selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle();
  14905. var cursorStyle = itemModel.getShallow("cursor");
  14906. var focus = emphasisModel.get("focus");
  14907. var blurScope = emphasisModel.get("blurScope");
  14908. var hoverScale = emphasisModel.get("scale");
  14909. eachPath(bar, function(path) {
  14910. if (path instanceof Image_default) {
  14911. var pathStyle = path.style;
  14912. path.useStyle(extend({
  14913. image: pathStyle.image,
  14914. x: pathStyle.x,
  14915. y: pathStyle.y,
  14916. width: pathStyle.width,
  14917. height: pathStyle.height
  14918. }, symbolMeta.style));
  14919. } else {
  14920. path.useStyle(symbolMeta.style);
  14921. }
  14922. var emphasisState = path.ensureState("emphasis");
  14923. emphasisState.style = emphasisStyle;
  14924. if (hoverScale) {
  14925. emphasisState.scaleX = path.scaleX * 1.1;
  14926. emphasisState.scaleY = path.scaleY * 1.1;
  14927. }
  14928. path.ensureState("blur").style = blurStyle;
  14929. path.ensureState("select").style = selectStyle;
  14930. cursorStyle && (path.cursor = cursorStyle);
  14931. path.z2 = symbolMeta.z2;
  14932. });
  14933. var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];
  14934. var barRect = bar.__pictorialBarRect;
  14935. setLabelStyle(barRect, getLabelStatesModels(itemModel), {
  14936. labelFetcher: opt.seriesModel,
  14937. labelDataIndex: dataIndex,
  14938. defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex),
  14939. inheritColor: symbolMeta.style.fill,
  14940. defaultOpacity: symbolMeta.style.opacity,
  14941. defaultOutsidePosition: barPositionOutside
  14942. });
  14943. toggleHoverEmphasis(bar, focus, blurScope, emphasisModel.get("disabled"));
  14944. }
  14945. function toIntTimes(times) {
  14946. var roundedTimes = Math.round(times);
  14947. return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);
  14948. }
  14949. var PictorialBarView_default = PictorialBarView;
  14950. // node_modules/echarts/lib/chart/bar/PictorialBarSeries.js
  14951. init_define_APP_INFO();
  14952. var PictorialBarSeriesModel = function(_super) {
  14953. __extends(PictorialBarSeriesModel2, _super);
  14954. function PictorialBarSeriesModel2() {
  14955. var _this = _super !== null && _super.apply(this, arguments) || this;
  14956. _this.type = PictorialBarSeriesModel2.type;
  14957. _this.hasSymbolVisual = true;
  14958. _this.defaultSymbol = "roundRect";
  14959. return _this;
  14960. }
  14961. PictorialBarSeriesModel2.prototype.getInitialData = function(option) {
  14962. option.stack = null;
  14963. return _super.prototype.getInitialData.apply(this, arguments);
  14964. };
  14965. PictorialBarSeriesModel2.type = "series.pictorialBar";
  14966. PictorialBarSeriesModel2.dependencies = ["grid"];
  14967. PictorialBarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeries_default.defaultOption, {
  14968. symbol: "circle",
  14969. symbolSize: null,
  14970. symbolRotate: null,
  14971. symbolPosition: null,
  14972. symbolOffset: null,
  14973. symbolMargin: null,
  14974. symbolRepeat: false,
  14975. symbolRepeatDirection: "end",
  14976. symbolClip: false,
  14977. symbolBoundingData: null,
  14978. symbolPatternSize: 400,
  14979. barGap: "-100%",
  14980. progressive: 0,
  14981. emphasis: {
  14982. scale: false
  14983. },
  14984. select: {
  14985. itemStyle: {
  14986. borderColor: "#212121"
  14987. }
  14988. }
  14989. });
  14990. return PictorialBarSeriesModel2;
  14991. }(BaseBarSeries_default);
  14992. var PictorialBarSeries_default = PictorialBarSeriesModel;
  14993. // node_modules/echarts/lib/chart/bar/installPictorialBar.js
  14994. function install23(registers) {
  14995. registers.registerChartView(PictorialBarView_default);
  14996. registers.registerSeriesModel(PictorialBarSeries_default);
  14997. registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, "pictorialBar"));
  14998. registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout("pictorialBar"));
  14999. }
  15000. // node_modules/echarts/lib/chart/themeRiver/install.js
  15001. init_define_APP_INFO();
  15002. // node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js
  15003. init_define_APP_INFO();
  15004. var ThemeRiverView = function(_super) {
  15005. __extends(ThemeRiverView2, _super);
  15006. function ThemeRiverView2() {
  15007. var _this = _super !== null && _super.apply(this, arguments) || this;
  15008. _this.type = ThemeRiverView2.type;
  15009. _this._layers = [];
  15010. return _this;
  15011. }
  15012. ThemeRiverView2.prototype.render = function(seriesModel, ecModel, api) {
  15013. var data = seriesModel.getData();
  15014. var self = this;
  15015. var group = this.group;
  15016. var layersSeries = seriesModel.getLayerSeries();
  15017. var layoutInfo = data.getLayout("layoutInfo");
  15018. var rect = layoutInfo.rect;
  15019. var boundaryGap = layoutInfo.boundaryGap;
  15020. group.x = 0;
  15021. group.y = rect.y + boundaryGap[0];
  15022. function keyGetter(item) {
  15023. return item.name;
  15024. }
  15025. var dataDiffer = new DataDiffer_default(this._layersSeries || [], layersSeries, keyGetter, keyGetter);
  15026. var newLayersGroups = [];
  15027. dataDiffer.add(bind(process2, this, "add")).update(bind(process2, this, "update")).remove(bind(process2, this, "remove")).execute();
  15028. function process2(status, idx, oldIdx) {
  15029. var oldLayersGroups = self._layers;
  15030. if (status === "remove") {
  15031. group.remove(oldLayersGroups[idx]);
  15032. return;
  15033. }
  15034. var points0 = [];
  15035. var points1 = [];
  15036. var style;
  15037. var indices = layersSeries[idx].indices;
  15038. var j = 0;
  15039. for (; j < indices.length; j++) {
  15040. var layout2 = data.getItemLayout(indices[j]);
  15041. var x = layout2.x;
  15042. var y0 = layout2.y0;
  15043. var y = layout2.y;
  15044. points0.push(x, y0);
  15045. points1.push(x, y0 + y);
  15046. style = data.getItemVisual(indices[j], "style");
  15047. }
  15048. var polygon;
  15049. var textLayout = data.getItemLayout(indices[0]);
  15050. var labelModel = seriesModel.getModel("label");
  15051. var margin = labelModel.get("margin");
  15052. var emphasisModel = seriesModel.getModel("emphasis");
  15053. if (status === "add") {
  15054. var layerGroup = newLayersGroups[idx] = new Group_default();
  15055. polygon = new ECPolygon({
  15056. shape: {
  15057. points: points0,
  15058. stackedOnPoints: points1,
  15059. smooth: 0.4,
  15060. stackedOnSmooth: 0.4,
  15061. smoothConstraint: false
  15062. },
  15063. z2: 0
  15064. });
  15065. layerGroup.add(polygon);
  15066. group.add(layerGroup);
  15067. if (seriesModel.isAnimationEnabled()) {
  15068. polygon.setClipPath(createGridClipShape3(polygon.getBoundingRect(), seriesModel, function() {
  15069. polygon.removeClipPath();
  15070. }));
  15071. }
  15072. } else {
  15073. var layerGroup = oldLayersGroups[oldIdx];
  15074. polygon = layerGroup.childAt(0);
  15075. group.add(layerGroup);
  15076. newLayersGroups[idx] = layerGroup;
  15077. updateProps(polygon, {
  15078. shape: {
  15079. points: points0,
  15080. stackedOnPoints: points1
  15081. }
  15082. }, seriesModel);
  15083. saveOldStyle(polygon);
  15084. }
  15085. setLabelStyle(polygon, getLabelStatesModels(seriesModel), {
  15086. labelDataIndex: indices[j - 1],
  15087. defaultText: data.getName(indices[j - 1]),
  15088. inheritColor: style.fill
  15089. }, {
  15090. normal: {
  15091. verticalAlign: "middle"
  15092. }
  15093. });
  15094. polygon.setTextConfig({
  15095. position: null,
  15096. local: true
  15097. });
  15098. var labelEl = polygon.getTextContent();
  15099. if (labelEl) {
  15100. labelEl.x = textLayout.x - margin;
  15101. labelEl.y = textLayout.y0 + textLayout.y / 2;
  15102. }
  15103. polygon.useStyle(style);
  15104. data.setItemGraphicEl(idx, polygon);
  15105. setStatesStylesFromModel(polygon, seriesModel);
  15106. toggleHoverEmphasis(polygon, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  15107. }
  15108. this._layersSeries = layersSeries;
  15109. this._layers = newLayersGroups;
  15110. };
  15111. ThemeRiverView2.type = "themeRiver";
  15112. return ThemeRiverView2;
  15113. }(Chart_default);
  15114. function createGridClipShape3(rect, seriesModel, cb) {
  15115. var rectEl = new Rect_default({
  15116. shape: {
  15117. x: rect.x - 10,
  15118. y: rect.y - 10,
  15119. width: 0,
  15120. height: rect.height + 20
  15121. }
  15122. });
  15123. initProps(rectEl, {
  15124. shape: {
  15125. x: rect.x - 50,
  15126. width: rect.width + 100,
  15127. height: rect.height + 20
  15128. }
  15129. }, seriesModel, cb);
  15130. return rectEl;
  15131. }
  15132. var ThemeRiverView_default = ThemeRiverView;
  15133. // node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js
  15134. init_define_APP_INFO();
  15135. var DATA_NAME_INDEX = 2;
  15136. var ThemeRiverSeriesModel = function(_super) {
  15137. __extends(ThemeRiverSeriesModel2, _super);
  15138. function ThemeRiverSeriesModel2() {
  15139. var _this = _super !== null && _super.apply(this, arguments) || this;
  15140. _this.type = ThemeRiverSeriesModel2.type;
  15141. return _this;
  15142. }
  15143. ThemeRiverSeriesModel2.prototype.init = function(option) {
  15144. _super.prototype.init.apply(this, arguments);
  15145. this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this));
  15146. };
  15147. ThemeRiverSeriesModel2.prototype.fixData = function(data) {
  15148. var rawDataLength = data.length;
  15149. var timeValueKeys = {};
  15150. var groupResult = groupData(data, function(item) {
  15151. if (!timeValueKeys.hasOwnProperty(item[0] + "")) {
  15152. timeValueKeys[item[0] + ""] = -1;
  15153. }
  15154. return item[2];
  15155. });
  15156. var layerData = [];
  15157. groupResult.buckets.each(function(items, key) {
  15158. layerData.push({
  15159. name: key,
  15160. dataList: items
  15161. });
  15162. });
  15163. var layerNum = layerData.length;
  15164. for (var k = 0; k < layerNum; ++k) {
  15165. var name_1 = layerData[k].name;
  15166. for (var j = 0; j < layerData[k].dataList.length; ++j) {
  15167. var timeValue = layerData[k].dataList[j][0] + "";
  15168. timeValueKeys[timeValue] = k;
  15169. }
  15170. for (var timeValue in timeValueKeys) {
  15171. if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {
  15172. timeValueKeys[timeValue] = k;
  15173. data[rawDataLength] = [timeValue, 0, name_1];
  15174. rawDataLength++;
  15175. }
  15176. }
  15177. }
  15178. return data;
  15179. };
  15180. ThemeRiverSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  15181. var singleAxisModel = this.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0];
  15182. var axisType = singleAxisModel.get("type");
  15183. var filterData = filter(option.data, function(dataItem) {
  15184. return dataItem[2] !== void 0;
  15185. });
  15186. var data = this.fixData(filterData || []);
  15187. var nameList = [];
  15188. var nameMap = this.nameMap = createHashMap();
  15189. var count = 0;
  15190. for (var i = 0; i < data.length; ++i) {
  15191. nameList.push(data[i][DATA_NAME_INDEX]);
  15192. if (!nameMap.get(data[i][DATA_NAME_INDEX])) {
  15193. nameMap.set(data[i][DATA_NAME_INDEX], count);
  15194. count++;
  15195. }
  15196. }
  15197. var dimensions = prepareSeriesDataSchema(data, {
  15198. coordDimensions: ["single"],
  15199. dimensionsDefine: [{
  15200. name: "time",
  15201. type: getDimensionTypeByAxis(axisType)
  15202. }, {
  15203. name: "value",
  15204. type: "float"
  15205. }, {
  15206. name: "name",
  15207. type: "ordinal"
  15208. }],
  15209. encodeDefine: {
  15210. single: 0,
  15211. value: 1,
  15212. itemName: 2
  15213. }
  15214. }).dimensions;
  15215. var list = new SeriesData_default(dimensions, this);
  15216. list.initData(data);
  15217. return list;
  15218. };
  15219. ThemeRiverSeriesModel2.prototype.getLayerSeries = function() {
  15220. var data = this.getData();
  15221. var lenCount = data.count();
  15222. var indexArr = [];
  15223. for (var i = 0; i < lenCount; ++i) {
  15224. indexArr[i] = i;
  15225. }
  15226. var timeDim = data.mapDimension("single");
  15227. var groupResult = groupData(indexArr, function(index) {
  15228. return data.get("name", index);
  15229. });
  15230. var layerSeries = [];
  15231. groupResult.buckets.each(function(items, key) {
  15232. items.sort(function(index1, index2) {
  15233. return data.get(timeDim, index1) - data.get(timeDim, index2);
  15234. });
  15235. layerSeries.push({
  15236. name: key,
  15237. indices: items
  15238. });
  15239. });
  15240. return layerSeries;
  15241. };
  15242. ThemeRiverSeriesModel2.prototype.getAxisTooltipData = function(dim, value, baseAxis) {
  15243. if (!isArray(dim)) {
  15244. dim = dim ? [dim] : [];
  15245. }
  15246. var data = this.getData();
  15247. var layerSeries = this.getLayerSeries();
  15248. var indices = [];
  15249. var layerNum = layerSeries.length;
  15250. var nestestValue;
  15251. for (var i = 0; i < layerNum; ++i) {
  15252. var minDist = Number.MAX_VALUE;
  15253. var nearestIdx = -1;
  15254. var pointNum = layerSeries[i].indices.length;
  15255. for (var j = 0; j < pointNum; ++j) {
  15256. var theValue = data.get(dim[0], layerSeries[i].indices[j]);
  15257. var dist2 = Math.abs(theValue - value);
  15258. if (dist2 <= minDist) {
  15259. nestestValue = theValue;
  15260. minDist = dist2;
  15261. nearestIdx = layerSeries[i].indices[j];
  15262. }
  15263. }
  15264. indices.push(nearestIdx);
  15265. }
  15266. return {
  15267. dataIndices: indices,
  15268. nestestValue
  15269. };
  15270. };
  15271. ThemeRiverSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
  15272. var data = this.getData();
  15273. var name = data.getName(dataIndex);
  15274. var value = data.get(data.mapDimension("value"), dataIndex);
  15275. return createTooltipMarkup("nameValue", {
  15276. name,
  15277. value
  15278. });
  15279. };
  15280. ThemeRiverSeriesModel2.type = "series.themeRiver";
  15281. ThemeRiverSeriesModel2.dependencies = ["singleAxis"];
  15282. ThemeRiverSeriesModel2.defaultOption = {
  15283. z: 2,
  15284. colorBy: "data",
  15285. coordinateSystem: "singleAxis",
  15286. boundaryGap: ["10%", "10%"],
  15287. singleAxisIndex: 0,
  15288. animationEasing: "linear",
  15289. label: {
  15290. margin: 4,
  15291. show: true,
  15292. position: "left",
  15293. fontSize: 11
  15294. },
  15295. emphasis: {
  15296. label: {
  15297. show: true
  15298. }
  15299. }
  15300. };
  15301. return ThemeRiverSeriesModel2;
  15302. }(Series_default);
  15303. var ThemeRiverSeries_default = ThemeRiverSeriesModel;
  15304. // node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js
  15305. init_define_APP_INFO();
  15306. function themeRiverLayout(ecModel, api) {
  15307. ecModel.eachSeriesByType("themeRiver", function(seriesModel) {
  15308. var data = seriesModel.getData();
  15309. var single = seriesModel.coordinateSystem;
  15310. var layoutInfo = {};
  15311. var rect = single.getRect();
  15312. layoutInfo.rect = rect;
  15313. var boundaryGap = seriesModel.get("boundaryGap");
  15314. var axis = single.getAxis();
  15315. layoutInfo.boundaryGap = boundaryGap;
  15316. if (axis.orient === "horizontal") {
  15317. boundaryGap[0] = parsePercent2(boundaryGap[0], rect.height);
  15318. boundaryGap[1] = parsePercent2(boundaryGap[1], rect.height);
  15319. var height = rect.height - boundaryGap[0] - boundaryGap[1];
  15320. doThemeRiverLayout(data, seriesModel, height);
  15321. } else {
  15322. boundaryGap[0] = parsePercent2(boundaryGap[0], rect.width);
  15323. boundaryGap[1] = parsePercent2(boundaryGap[1], rect.width);
  15324. var width = rect.width - boundaryGap[0] - boundaryGap[1];
  15325. doThemeRiverLayout(data, seriesModel, width);
  15326. }
  15327. data.setLayout("layoutInfo", layoutInfo);
  15328. });
  15329. }
  15330. function doThemeRiverLayout(data, seriesModel, height) {
  15331. if (!data.count()) {
  15332. return;
  15333. }
  15334. var coordSys = seriesModel.coordinateSystem;
  15335. var layerSeries = seriesModel.getLayerSeries();
  15336. var timeDim = data.mapDimension("single");
  15337. var valueDim = data.mapDimension("value");
  15338. var layerPoints = map(layerSeries, function(singleLayer) {
  15339. return map(singleLayer.indices, function(idx) {
  15340. var pt = coordSys.dataToPoint(data.get(timeDim, idx));
  15341. pt[1] = data.get(valueDim, idx);
  15342. return pt;
  15343. });
  15344. });
  15345. var base = computeBaseline(layerPoints);
  15346. var baseLine = base.y0;
  15347. var ky = height / base.max;
  15348. var n = layerSeries.length;
  15349. var m = layerSeries[0].indices.length;
  15350. var baseY0;
  15351. for (var j = 0; j < m; ++j) {
  15352. baseY0 = baseLine[j] * ky;
  15353. data.setItemLayout(layerSeries[0].indices[j], {
  15354. layerIndex: 0,
  15355. x: layerPoints[0][j][0],
  15356. y0: baseY0,
  15357. y: layerPoints[0][j][1] * ky
  15358. });
  15359. for (var i = 1; i < n; ++i) {
  15360. baseY0 += layerPoints[i - 1][j][1] * ky;
  15361. data.setItemLayout(layerSeries[i].indices[j], {
  15362. layerIndex: i,
  15363. x: layerPoints[i][j][0],
  15364. y0: baseY0,
  15365. y: layerPoints[i][j][1] * ky
  15366. });
  15367. }
  15368. }
  15369. }
  15370. function computeBaseline(data) {
  15371. var layerNum = data.length;
  15372. var pointNum = data[0].length;
  15373. var sums = [];
  15374. var y0 = [];
  15375. var max = 0;
  15376. for (var i = 0; i < pointNum; ++i) {
  15377. var temp = 0;
  15378. for (var j = 0; j < layerNum; ++j) {
  15379. temp += data[j][i][1];
  15380. }
  15381. if (temp > max) {
  15382. max = temp;
  15383. }
  15384. sums.push(temp);
  15385. }
  15386. for (var k = 0; k < pointNum; ++k) {
  15387. y0[k] = (max - sums[k]) / 2;
  15388. }
  15389. max = 0;
  15390. for (var l = 0; l < pointNum; ++l) {
  15391. var sum2 = sums[l] + y0[l];
  15392. if (sum2 > max) {
  15393. max = sum2;
  15394. }
  15395. }
  15396. return {
  15397. y0,
  15398. max
  15399. };
  15400. }
  15401. // node_modules/echarts/lib/chart/themeRiver/install.js
  15402. function install24(registers) {
  15403. registers.registerChartView(ThemeRiverView_default);
  15404. registers.registerSeriesModel(ThemeRiverSeries_default);
  15405. registers.registerLayout(themeRiverLayout);
  15406. registers.registerProcessor(dataFilter("themeRiver"));
  15407. }
  15408. // node_modules/echarts/lib/chart/sunburst/install.js
  15409. init_define_APP_INFO();
  15410. // node_modules/echarts/lib/chart/sunburst/SunburstView.js
  15411. init_define_APP_INFO();
  15412. // node_modules/echarts/lib/chart/sunburst/SunburstPiece.js
  15413. init_define_APP_INFO();
  15414. var DEFAULT_SECTOR_Z = 2;
  15415. var DEFAULT_TEXT_Z = 4;
  15416. var SunburstPiece = function(_super) {
  15417. __extends(SunburstPiece2, _super);
  15418. function SunburstPiece2(node, seriesModel, ecModel, api) {
  15419. var _this = _super.call(this) || this;
  15420. _this.z2 = DEFAULT_SECTOR_Z;
  15421. _this.textConfig = {
  15422. inside: true
  15423. };
  15424. getECData(_this).seriesIndex = seriesModel.seriesIndex;
  15425. var text = new Text_default({
  15426. z2: DEFAULT_TEXT_Z,
  15427. silent: node.getModel().get(["label", "silent"])
  15428. });
  15429. _this.setTextContent(text);
  15430. _this.updateData(true, node, seriesModel, ecModel, api);
  15431. return _this;
  15432. }
  15433. SunburstPiece2.prototype.updateData = function(firstCreate, node, seriesModel, ecModel, api) {
  15434. this.node = node;
  15435. node.piece = this;
  15436. seriesModel = seriesModel || this._seriesModel;
  15437. ecModel = ecModel || this._ecModel;
  15438. var sector = this;
  15439. getECData(sector).dataIndex = node.dataIndex;
  15440. var itemModel = node.getModel();
  15441. var emphasisModel = itemModel.getModel("emphasis");
  15442. var layout2 = node.getLayout();
  15443. var sectorShape = extend({}, layout2);
  15444. sectorShape.label = null;
  15445. var normalStyle = node.getVisual("style");
  15446. normalStyle.lineJoin = "bevel";
  15447. var decal = node.getVisual("decal");
  15448. if (decal) {
  15449. normalStyle.decal = createOrUpdatePatternFromDecal(decal, api);
  15450. }
  15451. var cornerRadius = getSectorCornerRadius(itemModel.getModel("itemStyle"), sectorShape, true);
  15452. extend(sectorShape, cornerRadius);
  15453. each(SPECIAL_STATES, function(stateName) {
  15454. var state = sector.ensureState(stateName);
  15455. var itemStyleModel = itemModel.getModel([stateName, "itemStyle"]);
  15456. state.style = itemStyleModel.getItemStyle();
  15457. var cornerRadius2 = getSectorCornerRadius(itemStyleModel, sectorShape);
  15458. if (cornerRadius2) {
  15459. state.shape = cornerRadius2;
  15460. }
  15461. });
  15462. if (firstCreate) {
  15463. sector.setShape(sectorShape);
  15464. sector.shape.r = layout2.r0;
  15465. updateProps(sector, {
  15466. shape: {
  15467. r: layout2.r
  15468. }
  15469. }, seriesModel, node.dataIndex);
  15470. } else {
  15471. updateProps(sector, {
  15472. shape: sectorShape
  15473. }, seriesModel);
  15474. saveOldStyle(sector);
  15475. }
  15476. sector.useStyle(normalStyle);
  15477. this._updateLabel(seriesModel);
  15478. var cursorStyle = itemModel.getShallow("cursor");
  15479. cursorStyle && sector.attr("cursor", cursorStyle);
  15480. this._seriesModel = seriesModel || this._seriesModel;
  15481. this._ecModel = ecModel || this._ecModel;
  15482. var focus = emphasisModel.get("focus");
  15483. var focusOrIndices = focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : focus;
  15484. toggleHoverEmphasis(this, focusOrIndices, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
  15485. };
  15486. SunburstPiece2.prototype._updateLabel = function(seriesModel) {
  15487. var _this = this;
  15488. var itemModel = this.node.getModel();
  15489. var normalLabelModel = itemModel.getModel("label");
  15490. var layout2 = this.node.getLayout();
  15491. var angle = layout2.endAngle - layout2.startAngle;
  15492. var midAngle = (layout2.startAngle + layout2.endAngle) / 2;
  15493. var dx = Math.cos(midAngle);
  15494. var dy = Math.sin(midAngle);
  15495. var sector = this;
  15496. var label = sector.getTextContent();
  15497. var dataIndex = this.node.dataIndex;
  15498. var labelMinAngle = normalLabelModel.get("minAngle") / 180 * Math.PI;
  15499. var isNormalShown = normalLabelModel.get("show") && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle);
  15500. label.ignore = !isNormalShown;
  15501. each(DISPLAY_STATES, function(stateName) {
  15502. var labelStateModel = stateName === "normal" ? itemModel.getModel("label") : itemModel.getModel([stateName, "label"]);
  15503. var isNormal = stateName === "normal";
  15504. var state = isNormal ? label : label.ensureState(stateName);
  15505. var text = seriesModel.getFormattedLabel(dataIndex, stateName);
  15506. if (isNormal) {
  15507. text = text || _this.node.name;
  15508. }
  15509. state.style = createTextStyle(labelStateModel, {}, null, stateName !== "normal", true);
  15510. if (text) {
  15511. state.style.text = text;
  15512. }
  15513. var isShown = labelStateModel.get("show");
  15514. if (isShown != null && !isNormal) {
  15515. state.ignore = !isShown;
  15516. }
  15517. var labelPosition = getLabelAttr(labelStateModel, "position");
  15518. var sectorState = isNormal ? sector : sector.states[stateName];
  15519. var labelColor = sectorState.style.fill;
  15520. sectorState.textConfig = {
  15521. outsideFill: labelStateModel.get("color") === "inherit" ? labelColor : null,
  15522. inside: labelPosition !== "outside"
  15523. };
  15524. var r;
  15525. var labelPadding = getLabelAttr(labelStateModel, "distance") || 0;
  15526. var textAlign = getLabelAttr(labelStateModel, "align");
  15527. if (labelPosition === "outside") {
  15528. r = layout2.r + labelPadding;
  15529. textAlign = midAngle > Math.PI / 2 ? "right" : "left";
  15530. } else {
  15531. if (!textAlign || textAlign === "center") {
  15532. if (angle === 2 * Math.PI && layout2.r0 === 0) {
  15533. r = 0;
  15534. } else {
  15535. r = (layout2.r + layout2.r0) / 2;
  15536. }
  15537. textAlign = "center";
  15538. } else if (textAlign === "left") {
  15539. r = layout2.r0 + labelPadding;
  15540. if (midAngle > Math.PI / 2) {
  15541. textAlign = "right";
  15542. }
  15543. } else if (textAlign === "right") {
  15544. r = layout2.r - labelPadding;
  15545. if (midAngle > Math.PI / 2) {
  15546. textAlign = "left";
  15547. }
  15548. }
  15549. }
  15550. state.style.align = textAlign;
  15551. state.style.verticalAlign = getLabelAttr(labelStateModel, "verticalAlign") || "middle";
  15552. state.x = r * dx + layout2.cx;
  15553. state.y = r * dy + layout2.cy;
  15554. var rotateType = getLabelAttr(labelStateModel, "rotate");
  15555. var rotate = 0;
  15556. if (rotateType === "radial") {
  15557. rotate = -midAngle;
  15558. if (rotate < -Math.PI / 2) {
  15559. rotate += Math.PI;
  15560. }
  15561. } else if (rotateType === "tangential") {
  15562. rotate = Math.PI / 2 - midAngle;
  15563. if (rotate > Math.PI / 2) {
  15564. rotate -= Math.PI;
  15565. } else if (rotate < -Math.PI / 2) {
  15566. rotate += Math.PI;
  15567. }
  15568. } else if (isNumber(rotateType)) {
  15569. rotate = rotateType * Math.PI / 180;
  15570. }
  15571. state.rotation = rotate;
  15572. });
  15573. function getLabelAttr(model, name) {
  15574. var stateAttr = model.get(name);
  15575. if (stateAttr == null) {
  15576. return normalLabelModel.get(name);
  15577. }
  15578. return stateAttr;
  15579. }
  15580. label.dirtyStyle();
  15581. };
  15582. return SunburstPiece2;
  15583. }(Sector_default);
  15584. var SunburstPiece_default = SunburstPiece;
  15585. // node_modules/echarts/lib/chart/sunburst/sunburstAction.js
  15586. init_define_APP_INFO();
  15587. var ROOT_TO_NODE_ACTION = "sunburstRootToNode";
  15588. var HIGHLIGHT_ACTION = "sunburstHighlight";
  15589. var UNHIGHLIGHT_ACTION = "sunburstUnhighlight";
  15590. function installSunburstAction(registers) {
  15591. registers.registerAction({
  15592. type: ROOT_TO_NODE_ACTION,
  15593. update: "updateView"
  15594. }, function(payload, ecModel) {
  15595. ecModel.eachComponent({
  15596. mainType: "series",
  15597. subType: "sunburst",
  15598. query: payload
  15599. }, handleRootToNode);
  15600. function handleRootToNode(model, index) {
  15601. var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);
  15602. if (targetInfo) {
  15603. var originViewRoot = model.getViewRoot();
  15604. if (originViewRoot) {
  15605. payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown";
  15606. }
  15607. model.resetViewRoot(targetInfo.node);
  15608. }
  15609. }
  15610. });
  15611. registers.registerAction({
  15612. type: HIGHLIGHT_ACTION,
  15613. update: "none"
  15614. }, function(payload, ecModel, api) {
  15615. payload = extend({}, payload);
  15616. ecModel.eachComponent({
  15617. mainType: "series",
  15618. subType: "sunburst",
  15619. query: payload
  15620. }, handleHighlight);
  15621. function handleHighlight(model) {
  15622. var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);
  15623. if (targetInfo) {
  15624. payload.dataIndex = targetInfo.node.dataIndex;
  15625. }
  15626. }
  15627. if (true) {
  15628. deprecateReplaceLog("highlight", "sunburstHighlight");
  15629. }
  15630. api.dispatchAction(extend(payload, {
  15631. type: "highlight"
  15632. }));
  15633. });
  15634. registers.registerAction({
  15635. type: UNHIGHLIGHT_ACTION,
  15636. update: "updateView"
  15637. }, function(payload, ecModel, api) {
  15638. payload = extend({}, payload);
  15639. if (true) {
  15640. deprecateReplaceLog("downplay", "sunburstUnhighlight");
  15641. }
  15642. api.dispatchAction(extend(payload, {
  15643. type: "downplay"
  15644. }));
  15645. });
  15646. }
  15647. // node_modules/echarts/lib/chart/sunburst/SunburstView.js
  15648. var SunburstView = function(_super) {
  15649. __extends(SunburstView2, _super);
  15650. function SunburstView2() {
  15651. var _this = _super !== null && _super.apply(this, arguments) || this;
  15652. _this.type = SunburstView2.type;
  15653. return _this;
  15654. }
  15655. SunburstView2.prototype.render = function(seriesModel, ecModel, api, payload) {
  15656. var self = this;
  15657. this.seriesModel = seriesModel;
  15658. this.api = api;
  15659. this.ecModel = ecModel;
  15660. var data = seriesModel.getData();
  15661. var virtualRoot = data.tree.root;
  15662. var newRoot = seriesModel.getViewRoot();
  15663. var group = this.group;
  15664. var renderLabelForZeroData = seriesModel.get("renderLabelForZeroData");
  15665. var newChildren = [];
  15666. newRoot.eachNode(function(node) {
  15667. newChildren.push(node);
  15668. });
  15669. var oldChildren = this._oldChildren || [];
  15670. dualTravel(newChildren, oldChildren);
  15671. renderRollUp(virtualRoot, newRoot);
  15672. this._initEvents();
  15673. this._oldChildren = newChildren;
  15674. function dualTravel(newChildren2, oldChildren2) {
  15675. if (newChildren2.length === 0 && oldChildren2.length === 0) {
  15676. return;
  15677. }
  15678. new DataDiffer_default(oldChildren2, newChildren2, getKey2, getKey2).add(processNode).update(processNode).remove(curry(processNode, null)).execute();
  15679. function getKey2(node) {
  15680. return node.getId();
  15681. }
  15682. function processNode(newIdx, oldIdx) {
  15683. var newNode = newIdx == null ? null : newChildren2[newIdx];
  15684. var oldNode = oldIdx == null ? null : oldChildren2[oldIdx];
  15685. doRenderNode(newNode, oldNode);
  15686. }
  15687. }
  15688. function doRenderNode(newNode, oldNode) {
  15689. if (!renderLabelForZeroData && newNode && !newNode.getValue()) {
  15690. newNode = null;
  15691. }
  15692. if (newNode !== virtualRoot && oldNode !== virtualRoot) {
  15693. if (oldNode && oldNode.piece) {
  15694. if (newNode) {
  15695. oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api);
  15696. data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);
  15697. } else {
  15698. removeNode2(oldNode);
  15699. }
  15700. } else if (newNode) {
  15701. var piece = new SunburstPiece_default(newNode, seriesModel, ecModel, api);
  15702. group.add(piece);
  15703. data.setItemGraphicEl(newNode.dataIndex, piece);
  15704. }
  15705. }
  15706. }
  15707. function removeNode2(node) {
  15708. if (!node) {
  15709. return;
  15710. }
  15711. if (node.piece) {
  15712. group.remove(node.piece);
  15713. node.piece = null;
  15714. }
  15715. }
  15716. function renderRollUp(virtualRoot2, viewRoot) {
  15717. if (viewRoot.depth > 0) {
  15718. if (self.virtualPiece) {
  15719. self.virtualPiece.updateData(false, virtualRoot2, seriesModel, ecModel, api);
  15720. } else {
  15721. self.virtualPiece = new SunburstPiece_default(virtualRoot2, seriesModel, ecModel, api);
  15722. group.add(self.virtualPiece);
  15723. }
  15724. viewRoot.piece.off("click");
  15725. self.virtualPiece.on("click", function(e) {
  15726. self._rootToNode(viewRoot.parentNode);
  15727. });
  15728. } else if (self.virtualPiece) {
  15729. group.remove(self.virtualPiece);
  15730. self.virtualPiece = null;
  15731. }
  15732. }
  15733. };
  15734. SunburstView2.prototype._initEvents = function() {
  15735. var _this = this;
  15736. this.group.off("click");
  15737. this.group.on("click", function(e) {
  15738. var targetFound = false;
  15739. var viewRoot = _this.seriesModel.getViewRoot();
  15740. viewRoot.eachNode(function(node) {
  15741. if (!targetFound && node.piece && node.piece === e.target) {
  15742. var nodeClick = node.getModel().get("nodeClick");
  15743. if (nodeClick === "rootToNode") {
  15744. _this._rootToNode(node);
  15745. } else if (nodeClick === "link") {
  15746. var itemModel = node.getModel();
  15747. var link = itemModel.get("link");
  15748. if (link) {
  15749. var linkTarget = itemModel.get("target", true) || "_blank";
  15750. windowOpen(link, linkTarget);
  15751. }
  15752. }
  15753. targetFound = true;
  15754. }
  15755. });
  15756. });
  15757. };
  15758. SunburstView2.prototype._rootToNode = function(node) {
  15759. if (node !== this.seriesModel.getViewRoot()) {
  15760. this.api.dispatchAction({
  15761. type: ROOT_TO_NODE_ACTION,
  15762. from: this.uid,
  15763. seriesId: this.seriesModel.id,
  15764. targetNode: node
  15765. });
  15766. }
  15767. };
  15768. SunburstView2.prototype.containPoint = function(point, seriesModel) {
  15769. var treeRoot = seriesModel.getData();
  15770. var itemLayout = treeRoot.getItemLayout(0);
  15771. if (itemLayout) {
  15772. var dx = point[0] - itemLayout.cx;
  15773. var dy = point[1] - itemLayout.cy;
  15774. var radius = Math.sqrt(dx * dx + dy * dy);
  15775. return radius <= itemLayout.r && radius >= itemLayout.r0;
  15776. }
  15777. };
  15778. SunburstView2.type = "sunburst";
  15779. return SunburstView2;
  15780. }(Chart_default);
  15781. var SunburstView_default = SunburstView;
  15782. // node_modules/echarts/lib/chart/sunburst/SunburstSeries.js
  15783. init_define_APP_INFO();
  15784. var SunburstSeriesModel = function(_super) {
  15785. __extends(SunburstSeriesModel2, _super);
  15786. function SunburstSeriesModel2() {
  15787. var _this = _super !== null && _super.apply(this, arguments) || this;
  15788. _this.type = SunburstSeriesModel2.type;
  15789. _this.ignoreStyleOnData = true;
  15790. return _this;
  15791. }
  15792. SunburstSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  15793. var root = {
  15794. name: option.name,
  15795. children: option.data
  15796. };
  15797. completeTreeValue2(root);
  15798. var levelModels = this._levelModels = map(option.levels || [], function(levelDefine) {
  15799. return new Model_default(levelDefine, this, ecModel);
  15800. }, this);
  15801. var tree = Tree_default.createTree(root, this, beforeLink);
  15802. function beforeLink(nodeData) {
  15803. nodeData.wrapMethod("getItemModel", function(model, idx) {
  15804. var node = tree.getNodeByDataIndex(idx);
  15805. var levelModel = levelModels[node.depth];
  15806. levelModel && (model.parentModel = levelModel);
  15807. return model;
  15808. });
  15809. }
  15810. return tree.data;
  15811. };
  15812. SunburstSeriesModel2.prototype.optionUpdated = function() {
  15813. this.resetViewRoot();
  15814. };
  15815. SunburstSeriesModel2.prototype.getDataParams = function(dataIndex) {
  15816. var params = _super.prototype.getDataParams.apply(this, arguments);
  15817. var node = this.getData().tree.getNodeByDataIndex(dataIndex);
  15818. params.treePathInfo = wrapTreePathInfo(node, this);
  15819. return params;
  15820. };
  15821. SunburstSeriesModel2.prototype.getLevelModel = function(node) {
  15822. return this._levelModels && this._levelModels[node.depth];
  15823. };
  15824. SunburstSeriesModel2.prototype.getViewRoot = function() {
  15825. return this._viewRoot;
  15826. };
  15827. SunburstSeriesModel2.prototype.resetViewRoot = function(viewRoot) {
  15828. viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;
  15829. var root = this.getRawData().tree.root;
  15830. if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {
  15831. this._viewRoot = root;
  15832. }
  15833. };
  15834. SunburstSeriesModel2.prototype.enableAriaDecal = function() {
  15835. enableAriaDecalForTree(this);
  15836. };
  15837. SunburstSeriesModel2.type = "series.sunburst";
  15838. SunburstSeriesModel2.defaultOption = {
  15839. z: 2,
  15840. center: ["50%", "50%"],
  15841. radius: [0, "75%"],
  15842. clockwise: true,
  15843. startAngle: 90,
  15844. minAngle: 0,
  15845. stillShowZeroSum: true,
  15846. nodeClick: "rootToNode",
  15847. renderLabelForZeroData: false,
  15848. label: {
  15849. rotate: "radial",
  15850. show: true,
  15851. opacity: 1,
  15852. align: "center",
  15853. position: "inside",
  15854. distance: 5,
  15855. silent: true
  15856. },
  15857. itemStyle: {
  15858. borderWidth: 1,
  15859. borderColor: "white",
  15860. borderType: "solid",
  15861. shadowBlur: 0,
  15862. shadowColor: "rgba(0, 0, 0, 0.2)",
  15863. shadowOffsetX: 0,
  15864. shadowOffsetY: 0,
  15865. opacity: 1
  15866. },
  15867. emphasis: {
  15868. focus: "descendant"
  15869. },
  15870. blur: {
  15871. itemStyle: {
  15872. opacity: 0.2
  15873. },
  15874. label: {
  15875. opacity: 0.1
  15876. }
  15877. },
  15878. animationType: "expansion",
  15879. animationDuration: 1e3,
  15880. animationDurationUpdate: 500,
  15881. data: [],
  15882. sort: "desc"
  15883. };
  15884. return SunburstSeriesModel2;
  15885. }(Series_default);
  15886. function completeTreeValue2(dataNode) {
  15887. var sum2 = 0;
  15888. each(dataNode.children, function(child) {
  15889. completeTreeValue2(child);
  15890. var childValue = child.value;
  15891. isArray(childValue) && (childValue = childValue[0]);
  15892. sum2 += childValue;
  15893. });
  15894. var thisValue = dataNode.value;
  15895. if (isArray(thisValue)) {
  15896. thisValue = thisValue[0];
  15897. }
  15898. if (thisValue == null || isNaN(thisValue)) {
  15899. thisValue = sum2;
  15900. }
  15901. if (thisValue < 0) {
  15902. thisValue = 0;
  15903. }
  15904. isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;
  15905. }
  15906. var SunburstSeries_default = SunburstSeriesModel;
  15907. // node_modules/echarts/lib/chart/sunburst/sunburstLayout.js
  15908. init_define_APP_INFO();
  15909. var RADIAN3 = Math.PI / 180;
  15910. function sunburstLayout(seriesType, ecModel, api) {
  15911. ecModel.eachSeriesByType(seriesType, function(seriesModel) {
  15912. var center2 = seriesModel.get("center");
  15913. var radius = seriesModel.get("radius");
  15914. if (!isArray(radius)) {
  15915. radius = [0, radius];
  15916. }
  15917. if (!isArray(center2)) {
  15918. center2 = [center2, center2];
  15919. }
  15920. var width = api.getWidth();
  15921. var height = api.getHeight();
  15922. var size = Math.min(width, height);
  15923. var cx = parsePercent2(center2[0], width);
  15924. var cy = parsePercent2(center2[1], height);
  15925. var r0 = parsePercent2(radius[0], size / 2);
  15926. var r = parsePercent2(radius[1], size / 2);
  15927. var startAngle = -seriesModel.get("startAngle") * RADIAN3;
  15928. var minAngle = seriesModel.get("minAngle") * RADIAN3;
  15929. var virtualRoot = seriesModel.getData().tree.root;
  15930. var treeRoot = seriesModel.getViewRoot();
  15931. var rootDepth = treeRoot.depth;
  15932. var sort3 = seriesModel.get("sort");
  15933. if (sort3 != null) {
  15934. initChildren2(treeRoot, sort3);
  15935. }
  15936. var validDataCount = 0;
  15937. each(treeRoot.children, function(child) {
  15938. !isNaN(child.getValue()) && validDataCount++;
  15939. });
  15940. var sum2 = treeRoot.getValue();
  15941. var unitRadian = Math.PI / (sum2 || validDataCount) * 2;
  15942. var renderRollupNode = treeRoot.depth > 0;
  15943. var levels = treeRoot.height - (renderRollupNode ? -1 : 1);
  15944. var rPerLevel = (r - r0) / (levels || 1);
  15945. var clockwise = seriesModel.get("clockwise");
  15946. var stillShowZeroSum = seriesModel.get("stillShowZeroSum");
  15947. var dir = clockwise ? 1 : -1;
  15948. var renderNode2 = function(node, startAngle2) {
  15949. if (!node) {
  15950. return;
  15951. }
  15952. var endAngle = startAngle2;
  15953. if (node !== virtualRoot) {
  15954. var value = node.getValue();
  15955. var angle2 = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;
  15956. if (angle2 < minAngle) {
  15957. angle2 = minAngle;
  15958. }
  15959. endAngle = startAngle2 + dir * angle2;
  15960. var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1);
  15961. var rStart2 = r0 + rPerLevel * depth;
  15962. var rEnd2 = r0 + rPerLevel * (depth + 1);
  15963. var levelModel = seriesModel.getLevelModel(node);
  15964. if (levelModel) {
  15965. var r0_1 = levelModel.get("r0", true);
  15966. var r_1 = levelModel.get("r", true);
  15967. var radius_1 = levelModel.get("radius", true);
  15968. if (radius_1 != null) {
  15969. r0_1 = radius_1[0];
  15970. r_1 = radius_1[1];
  15971. }
  15972. r0_1 != null && (rStart2 = parsePercent2(r0_1, size / 2));
  15973. r_1 != null && (rEnd2 = parsePercent2(r_1, size / 2));
  15974. }
  15975. node.setLayout({
  15976. angle: angle2,
  15977. startAngle: startAngle2,
  15978. endAngle,
  15979. clockwise,
  15980. cx,
  15981. cy,
  15982. r0: rStart2,
  15983. r: rEnd2
  15984. });
  15985. }
  15986. if (node.children && node.children.length) {
  15987. var siblingAngle_1 = 0;
  15988. each(node.children, function(node2) {
  15989. siblingAngle_1 += renderNode2(node2, startAngle2 + siblingAngle_1);
  15990. });
  15991. }
  15992. return endAngle - startAngle2;
  15993. };
  15994. if (renderRollupNode) {
  15995. var rStart = r0;
  15996. var rEnd = r0 + rPerLevel;
  15997. var angle = Math.PI * 2;
  15998. virtualRoot.setLayout({
  15999. angle,
  16000. startAngle,
  16001. endAngle: startAngle + angle,
  16002. clockwise,
  16003. cx,
  16004. cy,
  16005. r0: rStart,
  16006. r: rEnd
  16007. });
  16008. }
  16009. renderNode2(treeRoot, startAngle);
  16010. });
  16011. }
  16012. function initChildren2(node, sortOrder) {
  16013. var children = node.children || [];
  16014. node.children = sort2(children, sortOrder);
  16015. if (children.length) {
  16016. each(node.children, function(child) {
  16017. initChildren2(child, sortOrder);
  16018. });
  16019. }
  16020. }
  16021. function sort2(children, sortOrder) {
  16022. if (isFunction(sortOrder)) {
  16023. var sortTargets = map(children, function(child, idx) {
  16024. var value = child.getValue();
  16025. return {
  16026. params: {
  16027. depth: child.depth,
  16028. height: child.height,
  16029. dataIndex: child.dataIndex,
  16030. getValue: function() {
  16031. return value;
  16032. }
  16033. },
  16034. index: idx
  16035. };
  16036. });
  16037. sortTargets.sort(function(a, b) {
  16038. return sortOrder(a.params, b.params);
  16039. });
  16040. return map(sortTargets, function(target) {
  16041. return children[target.index];
  16042. });
  16043. } else {
  16044. var isAsc_1 = sortOrder === "asc";
  16045. return children.sort(function(a, b) {
  16046. var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1);
  16047. return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1) : diff;
  16048. });
  16049. }
  16050. }
  16051. // node_modules/echarts/lib/chart/sunburst/sunburstVisual.js
  16052. init_define_APP_INFO();
  16053. function sunburstVisual(ecModel) {
  16054. var paletteScope = {};
  16055. function pickColor(node, seriesModel, treeHeight) {
  16056. var current = node;
  16057. while (current && current.depth > 1) {
  16058. current = current.parentNode;
  16059. }
  16060. var color = seriesModel.getColorFromPalette(current.name || current.dataIndex + "", paletteScope);
  16061. if (node.depth > 1 && isString(color)) {
  16062. color = lift(color, (node.depth - 1) / (treeHeight - 1) * 0.5);
  16063. }
  16064. return color;
  16065. }
  16066. ecModel.eachSeriesByType("sunburst", function(seriesModel) {
  16067. var data = seriesModel.getData();
  16068. var tree = data.tree;
  16069. tree.eachNode(function(node) {
  16070. var model = node.getModel();
  16071. var style = model.getModel("itemStyle").getItemStyle();
  16072. if (!style.fill) {
  16073. style.fill = pickColor(node, seriesModel, tree.root.height);
  16074. }
  16075. var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style");
  16076. extend(existsStyle, style);
  16077. });
  16078. });
  16079. }
  16080. // node_modules/echarts/lib/chart/sunburst/install.js
  16081. function install25(registers) {
  16082. registers.registerChartView(SunburstView_default);
  16083. registers.registerSeriesModel(SunburstSeries_default);
  16084. registers.registerLayout(curry(sunburstLayout, "sunburst"));
  16085. registers.registerProcessor(curry(dataFilter, "sunburst"));
  16086. registers.registerVisual(sunburstVisual);
  16087. installSunburstAction(registers);
  16088. }
  16089. // node_modules/echarts/lib/chart/custom/install.js
  16090. init_define_APP_INFO();
  16091. // node_modules/echarts/lib/chart/custom/CustomSeries.js
  16092. init_define_APP_INFO();
  16093. var STYLE_VISUAL_TYPE = {
  16094. color: "fill",
  16095. borderColor: "stroke"
  16096. };
  16097. var NON_STYLE_VISUAL_PROPS = {
  16098. symbol: 1,
  16099. symbolSize: 1,
  16100. symbolKeepAspect: 1,
  16101. legendIcon: 1,
  16102. visualMeta: 1,
  16103. liftZ: 1,
  16104. decal: 1
  16105. };
  16106. var customInnerStore = makeInner();
  16107. var CustomSeriesModel = function(_super) {
  16108. __extends(CustomSeriesModel2, _super);
  16109. function CustomSeriesModel2() {
  16110. var _this = _super !== null && _super.apply(this, arguments) || this;
  16111. _this.type = CustomSeriesModel2.type;
  16112. return _this;
  16113. }
  16114. CustomSeriesModel2.prototype.optionUpdated = function() {
  16115. this.currentZLevel = this.get("zlevel", true);
  16116. this.currentZ = this.get("z", true);
  16117. };
  16118. CustomSeriesModel2.prototype.getInitialData = function(option, ecModel) {
  16119. return createSeriesData_default(null, this);
  16120. };
  16121. CustomSeriesModel2.prototype.getDataParams = function(dataIndex, dataType, el) {
  16122. var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);
  16123. el && (params.info = customInnerStore(el).info);
  16124. return params;
  16125. };
  16126. CustomSeriesModel2.type = "series.custom";
  16127. CustomSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"];
  16128. CustomSeriesModel2.defaultOption = {
  16129. coordinateSystem: "cartesian2d",
  16130. z: 2,
  16131. legendHoverLink: true,
  16132. clip: false
  16133. };
  16134. return CustomSeriesModel2;
  16135. }(Series_default);
  16136. var CustomSeries_default = CustomSeriesModel;
  16137. // node_modules/echarts/lib/chart/custom/CustomView.js
  16138. init_define_APP_INFO();
  16139. // node_modules/echarts/lib/coord/cartesian/prepareCustom.js
  16140. init_define_APP_INFO();
  16141. function dataToCoordSize(dataSize, dataItem) {
  16142. dataItem = dataItem || [0, 0];
  16143. return map(["x", "y"], function(dim, dimIdx) {
  16144. var axis = this.getAxis(dim);
  16145. var val = dataItem[dimIdx];
  16146. var halfSize = dataSize[dimIdx] / 2;
  16147. return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
  16148. }, this);
  16149. }
  16150. function cartesianPrepareCustom(coordSys) {
  16151. var rect = coordSys.master.getRect();
  16152. return {
  16153. coordSys: {
  16154. type: "cartesian2d",
  16155. x: rect.x,
  16156. y: rect.y,
  16157. width: rect.width,
  16158. height: rect.height
  16159. },
  16160. api: {
  16161. coord: function(data) {
  16162. return coordSys.dataToPoint(data);
  16163. },
  16164. size: bind(dataToCoordSize, coordSys)
  16165. }
  16166. };
  16167. }
  16168. // node_modules/echarts/lib/coord/geo/prepareCustom.js
  16169. init_define_APP_INFO();
  16170. function dataToCoordSize2(dataSize, dataItem) {
  16171. dataItem = dataItem || [0, 0];
  16172. return map([0, 1], function(dimIdx) {
  16173. var val = dataItem[dimIdx];
  16174. var halfSize = dataSize[dimIdx] / 2;
  16175. var p1 = [];
  16176. var p2 = [];
  16177. p1[dimIdx] = val - halfSize;
  16178. p2[dimIdx] = val + halfSize;
  16179. p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];
  16180. return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);
  16181. }, this);
  16182. }
  16183. function geoPrepareCustom(coordSys) {
  16184. var rect = coordSys.getBoundingRect();
  16185. return {
  16186. coordSys: {
  16187. type: "geo",
  16188. x: rect.x,
  16189. y: rect.y,
  16190. width: rect.width,
  16191. height: rect.height,
  16192. zoom: coordSys.getZoom()
  16193. },
  16194. api: {
  16195. coord: function(data) {
  16196. return coordSys.dataToPoint(data);
  16197. },
  16198. size: bind(dataToCoordSize2, coordSys)
  16199. }
  16200. };
  16201. }
  16202. // node_modules/echarts/lib/coord/single/prepareCustom.js
  16203. init_define_APP_INFO();
  16204. function dataToCoordSize3(dataSize, dataItem) {
  16205. var axis = this.getAxis();
  16206. var val = dataItem instanceof Array ? dataItem[0] : dataItem;
  16207. var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;
  16208. return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
  16209. }
  16210. function singlePrepareCustom(coordSys) {
  16211. var rect = coordSys.getRect();
  16212. return {
  16213. coordSys: {
  16214. type: "singleAxis",
  16215. x: rect.x,
  16216. y: rect.y,
  16217. width: rect.width,
  16218. height: rect.height
  16219. },
  16220. api: {
  16221. coord: function(val) {
  16222. return coordSys.dataToPoint(val);
  16223. },
  16224. size: bind(dataToCoordSize3, coordSys)
  16225. }
  16226. };
  16227. }
  16228. // node_modules/echarts/lib/coord/polar/prepareCustom.js
  16229. init_define_APP_INFO();
  16230. function dataToCoordSize4(dataSize, dataItem) {
  16231. dataItem = dataItem || [0, 0];
  16232. return map(["Radius", "Angle"], function(dim, dimIdx) {
  16233. var getterName = "get" + dim + "Axis";
  16234. var axis = this[getterName]();
  16235. var val = dataItem[dimIdx];
  16236. var halfSize = dataSize[dimIdx] / 2;
  16237. var result = axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
  16238. if (dim === "Angle") {
  16239. result = result * Math.PI / 180;
  16240. }
  16241. return result;
  16242. }, this);
  16243. }
  16244. function polarPrepareCustom(coordSys) {
  16245. var radiusAxis = coordSys.getRadiusAxis();
  16246. var angleAxis = coordSys.getAngleAxis();
  16247. var radius = radiusAxis.getExtent();
  16248. radius[0] > radius[1] && radius.reverse();
  16249. return {
  16250. coordSys: {
  16251. type: "polar",
  16252. cx: coordSys.cx,
  16253. cy: coordSys.cy,
  16254. r: radius[1],
  16255. r0: radius[0]
  16256. },
  16257. api: {
  16258. coord: function(data) {
  16259. var radius2 = radiusAxis.dataToRadius(data[0]);
  16260. var angle = angleAxis.dataToAngle(data[1]);
  16261. var coord = coordSys.coordToPoint([radius2, angle]);
  16262. coord.push(radius2, angle * Math.PI / 180);
  16263. return coord;
  16264. },
  16265. size: bind(dataToCoordSize4, coordSys)
  16266. }
  16267. };
  16268. }
  16269. // node_modules/echarts/lib/coord/calendar/prepareCustom.js
  16270. init_define_APP_INFO();
  16271. function calendarPrepareCustom(coordSys) {
  16272. var rect = coordSys.getRect();
  16273. var rangeInfo = coordSys.getRangeInfo();
  16274. return {
  16275. coordSys: {
  16276. type: "calendar",
  16277. x: rect.x,
  16278. y: rect.y,
  16279. width: rect.width,
  16280. height: rect.height,
  16281. cellWidth: coordSys.getCellWidth(),
  16282. cellHeight: coordSys.getCellHeight(),
  16283. rangeInfo: {
  16284. start: rangeInfo.start,
  16285. end: rangeInfo.end,
  16286. weeks: rangeInfo.weeks,
  16287. dayCount: rangeInfo.allDay
  16288. }
  16289. },
  16290. api: {
  16291. coord: function(data, clamp) {
  16292. return coordSys.dataToPoint(data, clamp);
  16293. }
  16294. }
  16295. };
  16296. }
  16297. // node_modules/echarts/lib/chart/custom/CustomView.js
  16298. var EMPHASIS = "emphasis";
  16299. var NORMAL = "normal";
  16300. var BLUR = "blur";
  16301. var SELECT = "select";
  16302. var STATES = [NORMAL, EMPHASIS, BLUR, SELECT];
  16303. var PATH_ITEM_STYLE = {
  16304. normal: ["itemStyle"],
  16305. emphasis: [EMPHASIS, "itemStyle"],
  16306. blur: [BLUR, "itemStyle"],
  16307. select: [SELECT, "itemStyle"]
  16308. };
  16309. var PATH_LABEL = {
  16310. normal: ["label"],
  16311. emphasis: [EMPHASIS, "label"],
  16312. blur: [BLUR, "label"],
  16313. select: [SELECT, "label"]
  16314. };
  16315. var DEFAULT_TRANSITION = ["x", "y"];
  16316. var GROUP_DIFF_PREFIX = "e\0\0";
  16317. var attachedTxInfoTmp = {
  16318. normal: {},
  16319. emphasis: {},
  16320. blur: {},
  16321. select: {}
  16322. };
  16323. var prepareCustoms = {
  16324. cartesian2d: cartesianPrepareCustom,
  16325. geo: geoPrepareCustom,
  16326. single: singlePrepareCustom,
  16327. polar: polarPrepareCustom,
  16328. calendar: calendarPrepareCustom
  16329. };
  16330. function isPath(el) {
  16331. return el instanceof Path_default;
  16332. }
  16333. function isDisplayable(el) {
  16334. return el instanceof Displayable_default;
  16335. }
  16336. function copyElement(sourceEl, targetEl) {
  16337. targetEl.copyTransform(sourceEl);
  16338. if (isDisplayable(targetEl) && isDisplayable(sourceEl)) {
  16339. targetEl.setStyle(sourceEl.style);
  16340. targetEl.z = sourceEl.z;
  16341. targetEl.z2 = sourceEl.z2;
  16342. targetEl.zlevel = sourceEl.zlevel;
  16343. targetEl.invisible = sourceEl.invisible;
  16344. targetEl.ignore = sourceEl.ignore;
  16345. if (isPath(targetEl) && isPath(sourceEl)) {
  16346. targetEl.setShape(sourceEl.shape);
  16347. }
  16348. }
  16349. }
  16350. var CustomChartView = function(_super) {
  16351. __extends(CustomChartView2, _super);
  16352. function CustomChartView2() {
  16353. var _this = _super !== null && _super.apply(this, arguments) || this;
  16354. _this.type = CustomChartView2.type;
  16355. return _this;
  16356. }
  16357. CustomChartView2.prototype.render = function(customSeries, ecModel, api, payload) {
  16358. this._progressiveEls = null;
  16359. var oldData = this._data;
  16360. var data = customSeries.getData();
  16361. var group = this.group;
  16362. var renderItem = makeRenderItem(customSeries, data, ecModel, api);
  16363. if (!oldData) {
  16364. group.removeAll();
  16365. }
  16366. data.diff(oldData).add(function(newIdx) {
  16367. createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data);
  16368. }).remove(function(oldIdx) {
  16369. var el = oldData.getItemGraphicEl(oldIdx);
  16370. applyLeaveTransition(el, customInnerStore(el).option, customSeries);
  16371. }).update(function(newIdx, oldIdx) {
  16372. var oldEl = oldData.getItemGraphicEl(oldIdx);
  16373. createOrUpdateItem(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data);
  16374. }).execute();
  16375. var clipPath = customSeries.get("clip", true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null;
  16376. if (clipPath) {
  16377. group.setClipPath(clipPath);
  16378. } else {
  16379. group.removeClipPath();
  16380. }
  16381. this._data = data;
  16382. };
  16383. CustomChartView2.prototype.incrementalPrepareRender = function(customSeries, ecModel, api) {
  16384. this.group.removeAll();
  16385. this._data = null;
  16386. };
  16387. CustomChartView2.prototype.incrementalRender = function(params, customSeries, ecModel, api, payload) {
  16388. var data = customSeries.getData();
  16389. var renderItem = makeRenderItem(customSeries, data, ecModel, api);
  16390. var progressiveEls = this._progressiveEls = [];
  16391. function setIncrementalAndHoverLayer(el2) {
  16392. if (!el2.isGroup) {
  16393. el2.incremental = true;
  16394. el2.ensureState("emphasis").hoverLayer = true;
  16395. }
  16396. }
  16397. for (var idx = params.start; idx < params.end; idx++) {
  16398. var el = createOrUpdateItem(null, null, idx, renderItem(idx, payload), customSeries, this.group, data);
  16399. if (el) {
  16400. el.traverse(setIncrementalAndHoverLayer);
  16401. progressiveEls.push(el);
  16402. }
  16403. }
  16404. };
  16405. CustomChartView2.prototype.eachRendered = function(cb) {
  16406. traverseElements(this._progressiveEls || this.group, cb);
  16407. };
  16408. CustomChartView2.prototype.filterForExposedEvent = function(eventType, query, targetEl, packedEvent) {
  16409. var elementName = query.element;
  16410. if (elementName == null || targetEl.name === elementName) {
  16411. return true;
  16412. }
  16413. while ((targetEl = targetEl.__hostTarget || targetEl.parent) && targetEl !== this.group) {
  16414. if (targetEl.name === elementName) {
  16415. return true;
  16416. }
  16417. }
  16418. return false;
  16419. };
  16420. CustomChartView2.type = "custom";
  16421. return CustomChartView2;
  16422. }(Chart_default);
  16423. var CustomView_default = CustomChartView;
  16424. function createEl(elOption) {
  16425. var graphicType = elOption.type;
  16426. var el;
  16427. if (graphicType === "path") {
  16428. var shape = elOption.shape;
  16429. var pathRect = shape.width != null && shape.height != null ? {
  16430. x: shape.x || 0,
  16431. y: shape.y || 0,
  16432. width: shape.width,
  16433. height: shape.height
  16434. } : null;
  16435. var pathData = getPathData(shape);
  16436. el = makePath(pathData, null, pathRect, shape.layout || "center");
  16437. customInnerStore(el).customPathData = pathData;
  16438. } else if (graphicType === "image") {
  16439. el = new Image_default({});
  16440. customInnerStore(el).customImagePath = elOption.style.image;
  16441. } else if (graphicType === "text") {
  16442. el = new Text_default({});
  16443. } else if (graphicType === "group") {
  16444. el = new Group_default();
  16445. } else if (graphicType === "compoundPath") {
  16446. throw new Error('"compoundPath" is not supported yet.');
  16447. } else {
  16448. var Clz = getShapeClass(graphicType);
  16449. if (!Clz) {
  16450. var errMsg = "";
  16451. if (true) {
  16452. errMsg = 'graphic type "' + graphicType + '" can not be found.';
  16453. }
  16454. throwError(errMsg);
  16455. }
  16456. el = new Clz();
  16457. }
  16458. customInnerStore(el).customGraphicType = graphicType;
  16459. el.name = elOption.name;
  16460. el.z2EmphasisLift = 1;
  16461. el.z2SelectLift = 1;
  16462. return el;
  16463. }
  16464. function updateElNormal(api, el, dataIndex, elOption, attachedTxInfo, seriesModel, isInit) {
  16465. stopPreviousKeyframeAnimationAndRestore(el);
  16466. var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg;
  16467. if (txCfgOpt) {
  16468. el.setTextConfig(txCfgOpt);
  16469. }
  16470. if (elOption && elOption.transition == null) {
  16471. elOption.transition = DEFAULT_TRANSITION;
  16472. }
  16473. var styleOpt = elOption && elOption.style;
  16474. if (styleOpt) {
  16475. if (el.type === "text") {
  16476. var textOptionStyle = styleOpt;
  16477. hasOwn(textOptionStyle, "textFill") && (textOptionStyle.fill = textOptionStyle.textFill);
  16478. hasOwn(textOptionStyle, "textStroke") && (textOptionStyle.stroke = textOptionStyle.textStroke);
  16479. }
  16480. var decalPattern = void 0;
  16481. var decalObj = isPath(el) ? styleOpt.decal : null;
  16482. if (api && decalObj) {
  16483. decalObj.dirty = true;
  16484. decalPattern = createOrUpdatePatternFromDecal(decalObj, api);
  16485. }
  16486. styleOpt.__decalPattern = decalPattern;
  16487. }
  16488. if (isDisplayable(el)) {
  16489. if (styleOpt) {
  16490. var decalPattern = styleOpt.__decalPattern;
  16491. if (decalPattern) {
  16492. styleOpt.decal = decalPattern;
  16493. }
  16494. }
  16495. }
  16496. applyUpdateTransition(el, elOption, seriesModel, {
  16497. dataIndex,
  16498. isInit,
  16499. clearStyle: true
  16500. });
  16501. applyKeyframeAnimation(el, elOption.keyframeAnimation, seriesModel);
  16502. }
  16503. function updateElOnState(state, el, elStateOpt, styleOpt, attachedTxInfo) {
  16504. var elDisplayable = el.isGroup ? null : el;
  16505. var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg;
  16506. if (elDisplayable) {
  16507. var stateObj = elDisplayable.ensureState(state);
  16508. if (styleOpt === false) {
  16509. var existingEmphasisState = elDisplayable.getState(state);
  16510. if (existingEmphasisState) {
  16511. existingEmphasisState.style = null;
  16512. }
  16513. } else {
  16514. stateObj.style = styleOpt || null;
  16515. }
  16516. if (txCfgOpt) {
  16517. stateObj.textConfig = txCfgOpt;
  16518. }
  16519. setDefaultStateProxy(elDisplayable);
  16520. }
  16521. }
  16522. function updateZ(el, elOption, seriesModel) {
  16523. if (el.isGroup) {
  16524. return;
  16525. }
  16526. var elDisplayable = el;
  16527. var currentZ = seriesModel.currentZ;
  16528. var currentZLevel = seriesModel.currentZLevel;
  16529. elDisplayable.z = currentZ;
  16530. elDisplayable.zlevel = currentZLevel;
  16531. var optZ2 = elOption.z2;
  16532. optZ2 != null && (elDisplayable.z2 = optZ2 || 0);
  16533. for (var i = 0; i < STATES.length; i++) {
  16534. updateZForEachState(elDisplayable, elOption, STATES[i]);
  16535. }
  16536. }
  16537. function updateZForEachState(elDisplayable, elOption, state) {
  16538. var isNormal = state === NORMAL;
  16539. var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state);
  16540. var optZ2 = elStateOpt ? elStateOpt.z2 : null;
  16541. var stateObj;
  16542. if (optZ2 != null) {
  16543. stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state);
  16544. stateObj.z2 = optZ2 || 0;
  16545. }
  16546. }
  16547. function makeRenderItem(customSeries, data, ecModel, api) {
  16548. var renderItem = customSeries.get("renderItem");
  16549. var coordSys = customSeries.coordinateSystem;
  16550. var prepareResult = {};
  16551. if (coordSys) {
  16552. if (true) {
  16553. assert(renderItem, "series.render is required.");
  16554. assert(coordSys.prepareCustoms || prepareCustoms[coordSys.type], "This coordSys does not support custom series.");
  16555. }
  16556. prepareResult = coordSys.prepareCustoms ? coordSys.prepareCustoms(coordSys) : prepareCustoms[coordSys.type](coordSys);
  16557. }
  16558. var userAPI = defaults({
  16559. getWidth: api.getWidth,
  16560. getHeight: api.getHeight,
  16561. getZr: api.getZr,
  16562. getDevicePixelRatio: api.getDevicePixelRatio,
  16563. value,
  16564. style,
  16565. ordinalRawValue,
  16566. styleEmphasis,
  16567. visual,
  16568. barLayout,
  16569. currentSeriesIndices,
  16570. font
  16571. }, prepareResult.api || {});
  16572. var userParams = {
  16573. context: {},
  16574. seriesId: customSeries.id,
  16575. seriesName: customSeries.name,
  16576. seriesIndex: customSeries.seriesIndex,
  16577. coordSys: prepareResult.coordSys,
  16578. dataInsideLength: data.count(),
  16579. encode: wrapEncodeDef(customSeries.getData())
  16580. };
  16581. var currDataIndexInside;
  16582. var currItemModel;
  16583. var currItemStyleModels = {};
  16584. var currLabelModels = {};
  16585. var seriesItemStyleModels = {};
  16586. var seriesLabelModels = {};
  16587. for (var i = 0; i < STATES.length; i++) {
  16588. var stateName = STATES[i];
  16589. seriesItemStyleModels[stateName] = customSeries.getModel(PATH_ITEM_STYLE[stateName]);
  16590. seriesLabelModels[stateName] = customSeries.getModel(PATH_LABEL[stateName]);
  16591. }
  16592. function getItemModel2(dataIndexInside) {
  16593. return dataIndexInside === currDataIndexInside ? currItemModel || (currItemModel = data.getItemModel(dataIndexInside)) : data.getItemModel(dataIndexInside);
  16594. }
  16595. function getItemStyleModel(dataIndexInside, state) {
  16596. return !data.hasItemOption ? seriesItemStyleModels[state] : dataIndexInside === currDataIndexInside ? currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state])) : getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state]);
  16597. }
  16598. function getLabelModel(dataIndexInside, state) {
  16599. return !data.hasItemOption ? seriesLabelModels[state] : dataIndexInside === currDataIndexInside ? currLabelModels[state] || (currLabelModels[state] = getItemModel2(dataIndexInside).getModel(PATH_LABEL[state])) : getItemModel2(dataIndexInside).getModel(PATH_LABEL[state]);
  16600. }
  16601. return function(dataIndexInside, payload) {
  16602. currDataIndexInside = dataIndexInside;
  16603. currItemModel = null;
  16604. currItemStyleModels = {};
  16605. currLabelModels = {};
  16606. return renderItem && renderItem(defaults({
  16607. dataIndexInside,
  16608. dataIndex: data.getRawIndex(dataIndexInside),
  16609. actionType: payload ? payload.type : null
  16610. }, userParams), userAPI);
  16611. };
  16612. function value(dim, dataIndexInside) {
  16613. dataIndexInside == null && (dataIndexInside = currDataIndexInside);
  16614. return data.getStore().get(data.getDimensionIndex(dim || 0), dataIndexInside);
  16615. }
  16616. function ordinalRawValue(dim, dataIndexInside) {
  16617. dataIndexInside == null && (dataIndexInside = currDataIndexInside);
  16618. dim = dim || 0;
  16619. var dimInfo = data.getDimensionInfo(dim);
  16620. if (!dimInfo) {
  16621. var dimIndex = data.getDimensionIndex(dim);
  16622. return dimIndex >= 0 ? data.getStore().get(dimIndex, dataIndexInside) : void 0;
  16623. }
  16624. var val = data.get(dimInfo.name, dataIndexInside);
  16625. var ordinalMeta = dimInfo && dimInfo.ordinalMeta;
  16626. return ordinalMeta ? ordinalMeta.categories[val] : val;
  16627. }
  16628. function style(userProps, dataIndexInside) {
  16629. if (true) {
  16630. warnDeprecated("api.style", "Please write literal style directly instead.");
  16631. }
  16632. dataIndexInside == null && (dataIndexInside = currDataIndexInside);
  16633. var style2 = data.getItemVisual(dataIndexInside, "style");
  16634. var visualColor = style2 && style2.fill;
  16635. var opacity = style2 && style2.opacity;
  16636. var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle();
  16637. visualColor != null && (itemStyle.fill = visualColor);
  16638. opacity != null && (itemStyle.opacity = opacity);
  16639. var opt = {
  16640. inheritColor: isString(visualColor) ? visualColor : "#000"
  16641. };
  16642. var labelModel = getLabelModel(dataIndexInside, NORMAL);
  16643. var textStyle = createTextStyle(labelModel, null, opt, false, true);
  16644. textStyle.text = labelModel.getShallow("show") ? retrieve2(customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null;
  16645. var textConfig = createTextConfig(labelModel, opt, false);
  16646. preFetchFromExtra(userProps, itemStyle);
  16647. itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);
  16648. userProps && applyUserPropsAfter(itemStyle, userProps);
  16649. itemStyle.legacy = true;
  16650. return itemStyle;
  16651. }
  16652. function styleEmphasis(userProps, dataIndexInside) {
  16653. if (true) {
  16654. warnDeprecated("api.styleEmphasis", "Please write literal style directly instead.");
  16655. }
  16656. dataIndexInside == null && (dataIndexInside = currDataIndexInside);
  16657. var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle();
  16658. var labelModel = getLabelModel(dataIndexInside, EMPHASIS);
  16659. var textStyle = createTextStyle(labelModel, null, null, true, true);
  16660. textStyle.text = labelModel.getShallow("show") ? retrieve3(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS), customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null;
  16661. var textConfig = createTextConfig(labelModel, null, true);
  16662. preFetchFromExtra(userProps, itemStyle);
  16663. itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);
  16664. userProps && applyUserPropsAfter(itemStyle, userProps);
  16665. itemStyle.legacy = true;
  16666. return itemStyle;
  16667. }
  16668. function applyUserPropsAfter(itemStyle, extra) {
  16669. for (var key in extra) {
  16670. if (hasOwn(extra, key)) {
  16671. itemStyle[key] = extra[key];
  16672. }
  16673. }
  16674. }
  16675. function preFetchFromExtra(extra, itemStyle) {
  16676. if (extra) {
  16677. extra.textFill && (itemStyle.textFill = extra.textFill);
  16678. extra.textPosition && (itemStyle.textPosition = extra.textPosition);
  16679. }
  16680. }
  16681. function visual(visualType, dataIndexInside) {
  16682. dataIndexInside == null && (dataIndexInside = currDataIndexInside);
  16683. if (hasOwn(STYLE_VISUAL_TYPE, visualType)) {
  16684. var style_1 = data.getItemVisual(dataIndexInside, "style");
  16685. return style_1 ? style_1[STYLE_VISUAL_TYPE[visualType]] : null;
  16686. }
  16687. if (hasOwn(NON_STYLE_VISUAL_PROPS, visualType)) {
  16688. return data.getItemVisual(dataIndexInside, visualType);
  16689. }
  16690. }
  16691. function barLayout(opt) {
  16692. if (coordSys.type === "cartesian2d") {
  16693. var baseAxis = coordSys.getBaseAxis();
  16694. return getLayoutOnAxis(defaults({
  16695. axis: baseAxis
  16696. }, opt));
  16697. }
  16698. }
  16699. function currentSeriesIndices() {
  16700. return ecModel.getCurrentSeriesIndices();
  16701. }
  16702. function font(opt) {
  16703. return getFont(opt, ecModel);
  16704. }
  16705. }
  16706. function wrapEncodeDef(data) {
  16707. var encodeDef = {};
  16708. each(data.dimensions, function(dimName) {
  16709. var dimInfo = data.getDimensionInfo(dimName);
  16710. if (!dimInfo.isExtraCoord) {
  16711. var coordDim = dimInfo.coordDim;
  16712. var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];
  16713. dataDims[dimInfo.coordDimIndex] = data.getDimensionIndex(dimName);
  16714. }
  16715. });
  16716. return encodeDef;
  16717. }
  16718. function createOrUpdateItem(api, existsEl, dataIndex, elOption, seriesModel, group, data) {
  16719. if (!elOption) {
  16720. group.remove(existsEl);
  16721. return;
  16722. }
  16723. var el = doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group);
  16724. el && data.setItemGraphicEl(dataIndex, el);
  16725. el && toggleHoverEmphasis(el, elOption.focus, elOption.blurScope, elOption.emphasisDisabled);
  16726. return el;
  16727. }
  16728. function doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group) {
  16729. if (true) {
  16730. assert(elOption, "should not have an null/undefined element setting");
  16731. }
  16732. var toBeReplacedIdx = -1;
  16733. var oldEl = existsEl;
  16734. if (existsEl && doesElNeedRecreate(existsEl, elOption, seriesModel)) {
  16735. toBeReplacedIdx = indexOf(group.childrenRef(), existsEl);
  16736. existsEl = null;
  16737. }
  16738. var isInit = !existsEl;
  16739. var el = existsEl;
  16740. if (!el) {
  16741. el = createEl(elOption);
  16742. if (oldEl) {
  16743. copyElement(oldEl, el);
  16744. }
  16745. } else {
  16746. el.clearStates();
  16747. }
  16748. if (elOption.morph === false) {
  16749. el.disableMorphing = true;
  16750. } else if (el.disableMorphing) {
  16751. el.disableMorphing = false;
  16752. }
  16753. 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;
  16754. attachedTxInfoTmp.isLegacy = false;
  16755. doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp);
  16756. doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit);
  16757. updateElNormal(api, el, dataIndex, elOption, attachedTxInfoTmp, seriesModel, isInit);
  16758. hasOwn(elOption, "info") && (customInnerStore(el).info = elOption.info);
  16759. for (var i = 0; i < STATES.length; i++) {
  16760. var stateName = STATES[i];
  16761. if (stateName !== NORMAL) {
  16762. var otherStateOpt = retrieveStateOption(elOption, stateName);
  16763. var otherStyleOpt = retrieveStyleOptionOnState(elOption, otherStateOpt, stateName);
  16764. updateElOnState(stateName, el, otherStateOpt, otherStyleOpt, attachedTxInfoTmp);
  16765. }
  16766. }
  16767. updateZ(el, elOption, seriesModel);
  16768. if (elOption.type === "group") {
  16769. mergeChildren(api, el, dataIndex, elOption, seriesModel);
  16770. }
  16771. if (toBeReplacedIdx >= 0) {
  16772. group.replaceAt(el, toBeReplacedIdx);
  16773. } else {
  16774. group.add(el);
  16775. }
  16776. return el;
  16777. }
  16778. function doesElNeedRecreate(el, elOption, seriesModel) {
  16779. var elInner = customInnerStore(el);
  16780. var elOptionType = elOption.type;
  16781. var elOptionShape = elOption.shape;
  16782. var elOptionStyle = elOption.style;
  16783. return seriesModel.isUniversalTransitionEnabled() || elOptionType != null && elOptionType !== elInner.customGraphicType || elOptionType === "path" && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== elInner.customPathData || elOptionType === "image" && hasOwn(elOptionStyle, "image") && elOptionStyle.image !== elInner.customImagePath;
  16784. }
  16785. function doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit) {
  16786. var clipPathOpt = elOption.clipPath;
  16787. if (clipPathOpt === false) {
  16788. if (el && el.getClipPath()) {
  16789. el.removeClipPath();
  16790. }
  16791. } else if (clipPathOpt) {
  16792. var clipPath = el.getClipPath();
  16793. if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt, seriesModel)) {
  16794. clipPath = null;
  16795. }
  16796. if (!clipPath) {
  16797. clipPath = createEl(clipPathOpt);
  16798. if (true) {
  16799. assert(isPath(clipPath), "Only any type of `path` can be used in `clipPath`, rather than " + clipPath.type + ".");
  16800. }
  16801. el.setClipPath(clipPath);
  16802. }
  16803. updateElNormal(null, clipPath, dataIndex, clipPathOpt, null, seriesModel, isInit);
  16804. }
  16805. }
  16806. function doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) {
  16807. if (el.isGroup) {
  16808. return;
  16809. }
  16810. processTxInfo(elOption, null, attachedTxInfo);
  16811. processTxInfo(elOption, EMPHASIS, attachedTxInfo);
  16812. var txConOptNormal = attachedTxInfo.normal.conOpt;
  16813. var txConOptEmphasis = attachedTxInfo.emphasis.conOpt;
  16814. var txConOptBlur = attachedTxInfo.blur.conOpt;
  16815. var txConOptSelect = attachedTxInfo.select.conOpt;
  16816. if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) {
  16817. var textContent = el.getTextContent();
  16818. if (txConOptNormal === false) {
  16819. textContent && el.removeTextContent();
  16820. } else {
  16821. txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || {
  16822. type: "text"
  16823. };
  16824. if (!textContent) {
  16825. textContent = createEl(txConOptNormal);
  16826. el.setTextContent(textContent);
  16827. } else {
  16828. textContent.clearStates();
  16829. }
  16830. updateElNormal(null, textContent, dataIndex, txConOptNormal, null, seriesModel, isInit);
  16831. var txConStlOptNormal = txConOptNormal && txConOptNormal.style;
  16832. for (var i = 0; i < STATES.length; i++) {
  16833. var stateName = STATES[i];
  16834. if (stateName !== NORMAL) {
  16835. var txConOptOtherState = attachedTxInfo[stateName].conOpt;
  16836. updateElOnState(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState(txConOptNormal, txConOptOtherState, stateName), null);
  16837. }
  16838. }
  16839. txConStlOptNormal ? textContent.dirty() : textContent.markRedraw();
  16840. }
  16841. }
  16842. }
  16843. function processTxInfo(elOption, state, attachedTxInfo) {
  16844. var stateOpt = !state ? elOption : retrieveStateOption(elOption, state);
  16845. var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS);
  16846. var elType = elOption.type;
  16847. var txCfg = stateOpt ? stateOpt.textConfig : null;
  16848. var txConOptNormal = elOption.textContent;
  16849. var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption(txConOptNormal, state);
  16850. if (styleOpt && (attachedTxInfo.isLegacy || isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))) {
  16851. attachedTxInfo.isLegacy = true;
  16852. var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state);
  16853. if (!txCfg && convertResult.textConfig) {
  16854. txCfg = convertResult.textConfig;
  16855. }
  16856. if (!txConOpt && convertResult.textContent) {
  16857. txConOpt = convertResult.textContent;
  16858. }
  16859. }
  16860. if (!state && txConOpt) {
  16861. var txConOptNormal_1 = txConOpt;
  16862. !txConOptNormal_1.type && (txConOptNormal_1.type = "text");
  16863. if (true) {
  16864. assert(txConOptNormal_1.type === "text", 'textContent.type must be "text"');
  16865. }
  16866. }
  16867. var info = !state ? attachedTxInfo.normal : attachedTxInfo[state];
  16868. info.cfg = txCfg;
  16869. info.conOpt = txConOpt;
  16870. }
  16871. function retrieveStateOption(elOption, state) {
  16872. return !state ? elOption : elOption ? elOption[state] : null;
  16873. }
  16874. function retrieveStyleOptionOnState(stateOptionNormal, stateOption, state) {
  16875. var style = stateOption && stateOption.style;
  16876. if (style == null && state === EMPHASIS && stateOptionNormal) {
  16877. style = stateOptionNormal.styleEmphasis;
  16878. }
  16879. return style;
  16880. }
  16881. function mergeChildren(api, el, dataIndex, elOption, seriesModel) {
  16882. var newChildren = elOption.children;
  16883. var newLen = newChildren ? newChildren.length : 0;
  16884. var mergeChildren2 = elOption.$mergeChildren;
  16885. var byName = mergeChildren2 === "byName" || elOption.diffChildrenByName;
  16886. var notMerge = mergeChildren2 === false;
  16887. if (!newLen && !byName && !notMerge) {
  16888. return;
  16889. }
  16890. if (byName) {
  16891. diffGroupChildren({
  16892. api,
  16893. oldChildren: el.children() || [],
  16894. newChildren: newChildren || [],
  16895. dataIndex,
  16896. seriesModel,
  16897. group: el
  16898. });
  16899. return;
  16900. }
  16901. notMerge && el.removeAll();
  16902. var index = 0;
  16903. for (; index < newLen; index++) {
  16904. newChildren[index] && doCreateOrUpdateEl(api, el.childAt(index), dataIndex, newChildren[index], seriesModel, el);
  16905. }
  16906. for (var i = el.childCount() - 1; i >= index; i--) {
  16907. var child = el.childAt(i);
  16908. applyLeaveTransition(child, customInnerStore(el).option, seriesModel);
  16909. }
  16910. }
  16911. function diffGroupChildren(context) {
  16912. new DataDiffer_default(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();
  16913. }
  16914. function getKey(item, idx) {
  16915. var name = item && item.name;
  16916. return name != null ? name : GROUP_DIFF_PREFIX + idx;
  16917. }
  16918. function processAddUpdate(newIndex, oldIndex) {
  16919. var context = this.context;
  16920. var childOption = newIndex != null ? context.newChildren[newIndex] : null;
  16921. var child = oldIndex != null ? context.oldChildren[oldIndex] : null;
  16922. doCreateOrUpdateEl(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group);
  16923. }
  16924. function processRemove(oldIndex) {
  16925. var context = this.context;
  16926. var child = context.oldChildren[oldIndex];
  16927. applyLeaveTransition(child, customInnerStore(child).option, context.seriesModel);
  16928. }
  16929. function getPathData(shape) {
  16930. return shape && (shape.pathData || shape.d);
  16931. }
  16932. function hasOwnPathData(shape) {
  16933. return shape && (hasOwn(shape, "pathData") || hasOwn(shape, "d"));
  16934. }
  16935. // node_modules/echarts/lib/chart/custom/install.js
  16936. function install26(registers) {
  16937. registers.registerChartView(CustomView_default);
  16938. registers.registerSeriesModel(CustomSeries_default);
  16939. }
  16940. export {
  16941. install6 as BarChart,
  16942. install18 as BoxplotChart,
  16943. install19 as CandlestickChart,
  16944. install26 as CustomChart,
  16945. install20 as EffectScatterChart,
  16946. install15 as FunnelChart,
  16947. install14 as GaugeChart,
  16948. install13 as GraphChart,
  16949. install22 as HeatmapChart,
  16950. install5 as LineChart,
  16951. install21 as LinesChart,
  16952. install10 as MapChart,
  16953. install16 as ParallelChart,
  16954. install23 as PictorialBarChart,
  16955. install7 as PieChart,
  16956. install9 as RadarChart,
  16957. install17 as SankeyChart,
  16958. install8 as ScatterChart,
  16959. install25 as SunburstChart,
  16960. install24 as ThemeRiverChart,
  16961. install11 as TreeChart,
  16962. install12 as TreemapChart
  16963. };
  16964. //# sourceMappingURL=echarts_charts.js.map