f2-simple.js 360 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085
  1. (function webpackUniversalModuleDefinition(root, factory) {
  2. if(typeof exports === 'object' && typeof module === 'object')
  3. module.exports = factory();
  4. else if(typeof define === 'function' && define.amd)
  5. define([], factory);
  6. else if(typeof exports === 'object')
  7. exports["F2"] = factory();
  8. else
  9. root["F2"] = factory();
  10. })(this, function() {
  11. return /******/ (function(modules) { // webpackBootstrap
  12. /******/ // The module cache
  13. /******/ var installedModules = {};
  14. /******/
  15. /******/ // The require function
  16. /******/ function __webpack_require__(moduleId) {
  17. /******/
  18. /******/ // Check if module is in cache
  19. /******/ if(installedModules[moduleId]) {
  20. /******/ return installedModules[moduleId].exports;
  21. /******/ }
  22. /******/ // Create a new module (and put it into the cache)
  23. /******/ var module = installedModules[moduleId] = {
  24. /******/ i: moduleId,
  25. /******/ l: false,
  26. /******/ exports: {}
  27. /******/ };
  28. /******/
  29. /******/ // Execute the module function
  30. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  31. /******/
  32. /******/ // Flag the module as loaded
  33. /******/ module.l = true;
  34. /******/
  35. /******/ // Return the exports of the module
  36. /******/ return module.exports;
  37. /******/ }
  38. /******/
  39. /******/
  40. /******/ // expose the modules object (__webpack_modules__)
  41. /******/ __webpack_require__.m = modules;
  42. /******/
  43. /******/ // expose the module cache
  44. /******/ __webpack_require__.c = installedModules;
  45. /******/
  46. /******/ // define getter function for harmony exports
  47. /******/ __webpack_require__.d = function(exports, name, getter) {
  48. /******/ if(!__webpack_require__.o(exports, name)) {
  49. /******/ Object.defineProperty(exports, name, {
  50. /******/ configurable: false,
  51. /******/ enumerable: true,
  52. /******/ get: getter
  53. /******/ });
  54. /******/ }
  55. /******/ };
  56. /******/
  57. /******/ // getDefaultExport function for compatibility with non-harmony modules
  58. /******/ __webpack_require__.n = function(module) {
  59. /******/ var getter = module && module.__esModule ?
  60. /******/ function getDefault() { return module['default']; } :
  61. /******/ function getModuleExports() { return module; };
  62. /******/ __webpack_require__.d(getter, 'a', getter);
  63. /******/ return getter;
  64. /******/ };
  65. /******/
  66. /******/ // Object.prototype.hasOwnProperty.call
  67. /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  68. /******/
  69. /******/ // __webpack_public_path__
  70. /******/ __webpack_require__.p = "";
  71. /******/
  72. /******/ // Load entry module and return exports
  73. /******/ return __webpack_require__(__webpack_require__.s = 251);
  74. /******/ })
  75. /************************************************************************/
  76. /******/ ([
  77. /* 0 */
  78. /***/ (function(module, exports, __webpack_require__) {
  79. "use strict";
  80. var _interopRequireWildcard = __webpack_require__(49);
  81. exports.__esModule = true;
  82. var _exportNames = {
  83. isObjectValueEqual: true,
  84. parsePadding: true,
  85. directionEnabled: true,
  86. upperFirst: true,
  87. lowerFirst: true,
  88. isString: true,
  89. isNumber: true,
  90. isBoolean: true,
  91. isFunction: true,
  92. isDate: true,
  93. isArray: true,
  94. isNil: true,
  95. isObject: true,
  96. isPlainObject: true,
  97. isEqual: true,
  98. deepMix: true,
  99. mix: true,
  100. each: true,
  101. uniq: true,
  102. find: true,
  103. Array: true
  104. };
  105. exports.isObjectValueEqual = isObjectValueEqual;
  106. exports.parsePadding = parsePadding;
  107. exports.directionEnabled = directionEnabled;
  108. exports.Array = void 0;
  109. var _util = __webpack_require__(20);
  110. exports.upperFirst = _util.upperFirst;
  111. exports.lowerFirst = _util.lowerFirst;
  112. exports.isString = _util.isString;
  113. exports.isNumber = _util.isNumber;
  114. exports.isBoolean = _util.isBoolean;
  115. exports.isFunction = _util.isFunction;
  116. exports.isDate = _util.isDate;
  117. exports.isArray = _util.isArray;
  118. exports.isNil = _util.isNil;
  119. exports.isObject = _util.isObject;
  120. exports.isPlainObject = _util.isPlainObject;
  121. exports.isEqual = _util.isEqual;
  122. exports.deepMix = _util.deepMix;
  123. exports.mix = _util.mix;
  124. exports.each = _util.each;
  125. exports.uniq = _util.uniq;
  126. exports.find = _util.find;
  127. var ArrayUtil = _interopRequireWildcard(__webpack_require__(75));
  128. exports.Array = ArrayUtil;
  129. var _dom = __webpack_require__(62);
  130. Object.keys(_dom).forEach(function (key) {
  131. if (key === "default" || key === "__esModule") return;
  132. if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
  133. exports[key] = _dom[key];
  134. });
  135. /**
  136. * @fileOverview Utility for F2
  137. * @author dxq613 @gmail.com
  138. * @author sima.zhang1990@gmail.com
  139. */
  140. function isObjectValueEqual(a, b) {
  141. // for vue.js
  142. a = Object.assign({}, a);
  143. b = Object.assign({}, b);
  144. var aProps = Object.getOwnPropertyNames(a);
  145. var bProps = Object.getOwnPropertyNames(b);
  146. if (aProps.length !== bProps.length) {
  147. return false;
  148. }
  149. for (var i = 0, len = aProps.length; i < len; i++) {
  150. var propName = aProps[i];
  151. if (a[propName] !== b[propName]) {
  152. return false;
  153. }
  154. }
  155. return true;
  156. }
  157. function parsePadding(padding) {
  158. var top;
  159. var right;
  160. var bottom;
  161. var left;
  162. if ((0, _util.isNumber)(padding) || (0, _util.isString)(padding)) {
  163. top = bottom = left = right = padding;
  164. } else if ((0, _util.isArray)(padding)) {
  165. top = padding[0];
  166. right = !(0, _util.isNil)(padding[1]) ? padding[1] : padding[0];
  167. bottom = !(0, _util.isNil)(padding[2]) ? padding[2] : padding[0];
  168. left = !(0, _util.isNil)(padding[3]) ? padding[3] : right;
  169. }
  170. return [top, right, bottom, left];
  171. }
  172. function directionEnabled(mode, dir) {
  173. if (mode === undefined) {
  174. return true;
  175. } else if (typeof mode === 'string') {
  176. return mode.indexOf(dir) !== -1;
  177. }
  178. return false;
  179. }
  180. /***/ }),
  181. /* 1 */
  182. /***/ (function(module, exports) {
  183. function _interopRequireDefault(obj) {
  184. return obj && obj.__esModule ? obj : {
  185. "default": obj
  186. };
  187. }
  188. module.exports = _interopRequireDefault;
  189. /***/ }),
  190. /* 2 */
  191. /***/ (function(module, exports, __webpack_require__) {
  192. var _typeof = __webpack_require__(50);
  193. var assertThisInitialized = __webpack_require__(22);
  194. function _possibleConstructorReturn(self, call) {
  195. if (call && (_typeof(call) === "object" || typeof call === "function")) {
  196. return call;
  197. }
  198. return assertThisInitialized(self);
  199. }
  200. module.exports = _possibleConstructorReturn;
  201. /***/ }),
  202. /* 3 */
  203. /***/ (function(module, exports) {
  204. function _getPrototypeOf(o) {
  205. module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
  206. return o.__proto__ || Object.getPrototypeOf(o);
  207. };
  208. return _getPrototypeOf(o);
  209. }
  210. module.exports = _getPrototypeOf;
  211. /***/ }),
  212. /* 4 */
  213. /***/ (function(module, exports) {
  214. function _inheritsLoose(subClass, superClass) {
  215. subClass.prototype = Object.create(superClass.prototype);
  216. subClass.prototype.constructor = subClass;
  217. subClass.__proto__ = superClass;
  218. }
  219. module.exports = _inheritsLoose;
  220. /***/ }),
  221. /* 5 */
  222. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  223. "use strict";
  224. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11);
  225. /* harmony default export */ __webpack_exports__["a"] = (function (value) {
  226. return Array.isArray ? Array.isArray(value) : Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Array');
  227. });
  228. /***/ }),
  229. /* 6 */
  230. /***/ (function(module, exports, __webpack_require__) {
  231. "use strict";
  232. var Theme = __webpack_require__(78);
  233. var Util = __webpack_require__(0);
  234. var Global = {
  235. version: '3.6.3',
  236. scales: {},
  237. widthRatio: {
  238. column: 1 / 2,
  239. rose: 0.999999,
  240. multiplePie: 3 / 4
  241. },
  242. lineDash: [4, 4]
  243. };
  244. Global.setTheme = function (theme) {
  245. Util.deepMix(this, theme);
  246. };
  247. Global.setTheme(Theme);
  248. module.exports = Global;
  249. /***/ }),
  250. /* 7 */
  251. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  252. "use strict";
  253. var isArrayLike = function (value) {
  254. /**
  255. * isArrayLike([1, 2, 3]) => true
  256. * isArrayLike(document.body.children) => true
  257. * isArrayLike('abc') => true
  258. * isArrayLike(Function) => false
  259. */
  260. return value !== null && typeof value !== 'function' && isFinite(value.length);
  261. };
  262. /* harmony default export */ __webpack_exports__["a"] = (isArrayLike);
  263. /***/ }),
  264. /* 8 */
  265. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  266. "use strict";
  267. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  268. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(29);
  269. function each(elements, func) {
  270. if (!elements) {
  271. return;
  272. }
  273. var rst;
  274. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(elements)) {
  275. for (var i = 0, len = elements.length; i < len; i++) {
  276. rst = func(elements[i], i);
  277. if (rst === false) {
  278. break;
  279. }
  280. }
  281. } else if (Object(__WEBPACK_IMPORTED_MODULE_1__is_object__["a" /* default */])(elements)) {
  282. for (var k in elements) {
  283. if (elements.hasOwnProperty(k)) {
  284. rst = func(elements[k], k);
  285. if (rst === false) {
  286. break;
  287. }
  288. }
  289. }
  290. }
  291. }
  292. /* harmony default export */ __webpack_exports__["a"] = (each);
  293. /***/ }),
  294. /* 9 */
  295. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  296. "use strict";
  297. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11);
  298. /**
  299. * 是否为函数
  300. * @param {*} fn 对象
  301. * @return {Boolean} 是否函数
  302. */
  303. /* harmony default export */ __webpack_exports__["a"] = (function (value) {
  304. return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Function');
  305. });
  306. /***/ }),
  307. /* 10 */
  308. /***/ (function(module, exports, __webpack_require__) {
  309. "use strict";
  310. var _interopRequireDefault = __webpack_require__(1);
  311. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  312. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  313. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  314. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  315. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  316. var Util = __webpack_require__(0);
  317. var Element = __webpack_require__(46);
  318. var Shape = /*#__PURE__*/function (_Element) {
  319. (0, _inheritsLoose2["default"])(Shape, _Element);
  320. var _super = _createSuper(Shape);
  321. function Shape() {
  322. return _Element.apply(this, arguments) || this;
  323. }
  324. var _proto = Shape.prototype;
  325. _proto._initProperties = function _initProperties() {
  326. this._attrs = {
  327. zIndex: 0,
  328. visible: true,
  329. destroyed: false,
  330. isShape: true,
  331. attrs: {}
  332. };
  333. };
  334. _proto.getType = function getType() {
  335. return this._attrs.type;
  336. };
  337. _proto.drawInner = function drawInner(context) {
  338. var self = this;
  339. var attrs = self.get('attrs');
  340. self.createPath(context);
  341. var originOpacity = context.globalAlpha;
  342. if (self.hasFill()) {
  343. var fillOpacity = attrs.fillOpacity;
  344. if (!Util.isNil(fillOpacity) && fillOpacity !== 1) {
  345. context.globalAlpha = fillOpacity;
  346. context.fill();
  347. context.globalAlpha = originOpacity;
  348. } else {
  349. context.fill();
  350. }
  351. }
  352. if (self.hasStroke()) {
  353. var lineWidth = attrs.lineWidth;
  354. if (lineWidth > 0) {
  355. var strokeOpacity = attrs.strokeOpacity;
  356. if (!Util.isNil(strokeOpacity) && strokeOpacity !== 1) {
  357. context.globalAlpha = strokeOpacity;
  358. }
  359. context.stroke();
  360. }
  361. }
  362. };
  363. _proto.getBBox = function getBBox() {
  364. var bbox = this._attrs.bbox;
  365. if (!bbox) {
  366. bbox = this.calculateBox();
  367. if (bbox) {
  368. bbox.x = bbox.minX;
  369. bbox.y = bbox.minY;
  370. bbox.width = bbox.maxX - bbox.minX;
  371. bbox.height = bbox.maxY - bbox.minY;
  372. }
  373. this._attrs.bbox = bbox;
  374. }
  375. return bbox;
  376. };
  377. _proto.calculateBox = function calculateBox() {
  378. return null;
  379. };
  380. _proto.createPath = function createPath() {};
  381. return Shape;
  382. }(Element);
  383. module.exports = Shape;
  384. /***/ }),
  385. /* 11 */
  386. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  387. "use strict";
  388. var toString = {}.toString;
  389. var isType = function (value, type) {
  390. return toString.call(value) === '[object ' + type + ']';
  391. };
  392. /* harmony default export */ __webpack_exports__["a"] = (isType);
  393. /***/ }),
  394. /* 12 */
  395. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  396. "use strict";
  397. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11);
  398. /**
  399. * 判断是否数字
  400. * @return {Boolean} 是否数字
  401. */
  402. var isNumber = function (value) {
  403. return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Number');
  404. };
  405. /* harmony default export */ __webpack_exports__["a"] = (isNumber);
  406. /***/ }),
  407. /* 13 */
  408. /***/ (function(module, exports, __webpack_require__) {
  409. "use strict";
  410. /**
  411. * 2 Dimensional Vector
  412. * @module vector2
  413. */
  414. module.exports = {
  415. /**
  416. * Creates a new, empty vector2
  417. *
  418. * @return {vector2} a new 2D vector
  419. */
  420. create: function create() {
  421. return [0, 0];
  422. },
  423. /**
  424. * Calculates the length of a vector2
  425. *
  426. * @param {vector2} v vector to calculate length of
  427. * @return {Number} length of v
  428. */
  429. length: function length(v) {
  430. var x = v[0];
  431. var y = v[1];
  432. return Math.sqrt(x * x + y * y);
  433. },
  434. /**
  435. * Normalize a vector2
  436. *
  437. * @param {vector2} out the receiving vector
  438. * @param {vector2} v vector to normalize
  439. * @return {vector2} out
  440. */
  441. normalize: function normalize(out, v) {
  442. var len = this.length(v);
  443. if (len === 0) {
  444. out[0] = 0;
  445. out[1] = 0;
  446. } else {
  447. out[0] = v[0] / len;
  448. out[1] = v[1] / len;
  449. }
  450. return out;
  451. },
  452. /**
  453. * Adds two vector2's
  454. *
  455. * @param {vector2} out the receiving vector
  456. * @param {vector2} v1 the first operand
  457. * @param {vector2} v2 the second operand
  458. * @return {vector2} out
  459. */
  460. add: function add(out, v1, v2) {
  461. out[0] = v1[0] + v2[0];
  462. out[1] = v1[1] + v2[1];
  463. return out;
  464. },
  465. /**
  466. * Subtracts vector v2 from vector v1
  467. *
  468. * @param {vector2} out the receiving vector
  469. * @param {vector2} v1 the first operand
  470. * @param {vector2} v2 the second operand
  471. * @return {vector2} out
  472. */
  473. sub: function sub(out, v1, v2) {
  474. out[0] = v1[0] - v2[0];
  475. out[1] = v1[1] - v2[1];
  476. return out;
  477. },
  478. /**
  479. * Scales a vector2 by a scalar number
  480. *
  481. * @param {vector2} out the receiving vector
  482. * @param {vector2} v the vector to scale
  483. * @param {Number} s amount to scale the vector by
  484. * @return {vector2} out
  485. */
  486. scale: function scale(out, v, s) {
  487. out[0] = v[0] * s;
  488. out[1] = v[1] * s;
  489. return out;
  490. },
  491. /**
  492. * Calculates the dot product of two vector2's
  493. *
  494. * @param {vector2} v1 the first operand
  495. * @param {vector2} v2 the second operand
  496. * @return {Number} dot product of v1 and v2
  497. */
  498. dot: function dot(v1, v2) {
  499. return v1[0] * v2[0] + v1[1] * v2[1];
  500. },
  501. /**
  502. * Calculates the direction of two vector2's
  503. *
  504. * @param {vector2} v1 the first operand
  505. * @param {vector2} v2 the second operand
  506. * @return {Boolean} the direction of v1 and v2
  507. */
  508. direction: function direction(v1, v2) {
  509. return v1[0] * v2[1] - v2[0] * v1[1];
  510. },
  511. /**
  512. * Calculates the angle of two vector2's
  513. *
  514. * @param {vector2} v1 the first operand
  515. * @param {vector2} v2 the second operand
  516. * @return {Number} angle of v1 and v2
  517. */
  518. angle: function angle(v1, v2) {
  519. var theta = this.dot(v1, v2) / (this.length(v1) * this.length(v2));
  520. return Math.acos(theta);
  521. },
  522. /**
  523. * Calculates the angle of two vector2's with direction
  524. *
  525. * @param {vector2} v1 the first operand
  526. * @param {vector2} v2 the second operand
  527. * @param {Boolean} direction the direction of two vector2's
  528. * @return {Number} angle of v1 and v2
  529. */
  530. angleTo: function angleTo(v1, v2, direction) {
  531. var angle = this.angle(v1, v2);
  532. var angleLargeThanPI = this.direction(v1, v2) >= 0;
  533. if (direction) {
  534. if (angleLargeThanPI) {
  535. return Math.PI * 2 - angle;
  536. }
  537. return angle;
  538. }
  539. if (angleLargeThanPI) {
  540. return angle;
  541. }
  542. return Math.PI * 2 - angle;
  543. },
  544. /**
  545. * whether a vector2 is zero vector
  546. *
  547. * @param {vector2} v vector to calculate
  548. * @return {Boolean} is or not a zero vector
  549. */
  550. zero: function zero(v) {
  551. return v[0] === 0 && v[1] === 0;
  552. },
  553. /**
  554. * Calculates the euclidian distance between two vector2's
  555. *
  556. * @param {vector2} v1 the first operand
  557. * @param {vector2} v2 the second operand
  558. * @return {Number} distance between a and b
  559. */
  560. distance: function distance(v1, v2) {
  561. var x = v2[0] - v1[0];
  562. var y = v2[1] - v1[1];
  563. return Math.sqrt(x * x + y * y);
  564. },
  565. /**
  566. * Creates a new vector2 initialized with values from an existing vector
  567. *
  568. * @param {vector2} v vector to clone
  569. * @return {Array} a new 2D vector
  570. */
  571. clone: function clone(v) {
  572. return [v[0], v[1]];
  573. },
  574. /**
  575. * Return the minimum of two vector2's
  576. *
  577. * @param {vector2} out the receiving vector
  578. * @param {vector2} v1 the first operand
  579. * @param {vector2} v2 the second operand
  580. * @return {vector2} out
  581. */
  582. min: function min(out, v1, v2) {
  583. out[0] = Math.min(v1[0], v2[0]);
  584. out[1] = Math.min(v1[1], v2[1]);
  585. return out;
  586. },
  587. /**
  588. * Return the maximum of two vector2's
  589. *
  590. * @param {vector2} out the receiving vector
  591. * @param {vector2} v1 the first operand
  592. * @param {vector2} v2 the second operand
  593. * @return {vector2} out
  594. */
  595. max: function max(out, v1, v2) {
  596. out[0] = Math.max(v1[0], v2[0]);
  597. out[1] = Math.max(v1[1], v2[1]);
  598. return out;
  599. },
  600. /**
  601. * Transforms the vector2 with a mat2d
  602. *
  603. * @param {vector2} out the receiving vector
  604. * @param {vector2} v the vector to transform
  605. * @param {mat2d} m matrix to transform with
  606. * @return {vector2} out
  607. */
  608. transformMat2d: function transformMat2d(out, v, m) {
  609. var x = v[0];
  610. var y = v[1];
  611. out[0] = m[0] * x + m[2] * y + m[4];
  612. out[1] = m[1] * x + m[3] * y + m[5];
  613. return out;
  614. }
  615. };
  616. /***/ }),
  617. /* 14 */
  618. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  619. "use strict";
  620. // isFinite,
  621. var isNil = function (value) {
  622. /**
  623. * isNil(null) => true
  624. * isNil() => true
  625. */
  626. return value === null || value === undefined;
  627. };
  628. /* harmony default export */ __webpack_exports__["a"] = (isNil);
  629. /***/ }),
  630. /* 15 */
  631. /***/ (function(module, exports, __webpack_require__) {
  632. var isObject = __webpack_require__(44);
  633. var isArray = __webpack_require__(34);
  634. var each = function each(elements, func) {
  635. if (!elements) {
  636. return;
  637. }
  638. var rst = void 0;
  639. if (isArray(elements)) {
  640. for (var i = 0, len = elements.length; i < len; i++) {
  641. rst = func(elements[i], i);
  642. if (rst === false) {
  643. break;
  644. }
  645. }
  646. } else if (isObject(elements)) {
  647. for (var k in elements) {
  648. if (elements.hasOwnProperty(k)) {
  649. rst = func(elements[k], k);
  650. if (rst === false) {
  651. break;
  652. }
  653. }
  654. }
  655. }
  656. };
  657. module.exports = each;
  658. /***/ }),
  659. /* 16 */
  660. /***/ (function(module, exports, __webpack_require__) {
  661. "use strict";
  662. var G = {
  663. Canvas: __webpack_require__(176),
  664. Group: __webpack_require__(67),
  665. Shape: __webpack_require__(10),
  666. Matrix: __webpack_require__(31),
  667. Vector2: __webpack_require__(13)
  668. };
  669. __webpack_require__(180);
  670. __webpack_require__(181);
  671. __webpack_require__(182);
  672. __webpack_require__(183);
  673. __webpack_require__(184);
  674. __webpack_require__(185);
  675. __webpack_require__(186);
  676. __webpack_require__(187);
  677. __webpack_require__(189);
  678. module.exports = G;
  679. /***/ }),
  680. /* 17 */
  681. /***/ (function(module, exports, __webpack_require__) {
  682. "use strict";
  683. var _interopRequireWildcard = __webpack_require__(49);
  684. var _interopRequireDefault = __webpack_require__(1);
  685. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  686. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  687. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  688. var Attr = _interopRequireWildcard(__webpack_require__(161));
  689. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  690. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  691. var Util = __webpack_require__(0);
  692. var Base = __webpack_require__(63);
  693. var GROUP_ATTRS = ['color', 'size', 'shape'];
  694. var FIELD_ORIGIN = '_origin';
  695. var FIELD_ORIGIN_Y = '_originY';
  696. var Global = __webpack_require__(6);
  697. var GeometryShape = __webpack_require__(19);
  698. var Adjust = __webpack_require__(33);
  699. function parseFields(field) {
  700. if (Util.isArray(field)) {
  701. return field;
  702. }
  703. if (Util.isString(field)) {
  704. return field.split('*');
  705. }
  706. return [field];
  707. }
  708. /**
  709. * The parent class for Geometry
  710. * @class Geom
  711. */
  712. var Geom = /*#__PURE__*/function (_Base) {
  713. (0, _inheritsLoose2["default"])(Geom, _Base);
  714. var _super = _createSuper(Geom);
  715. function Geom() {
  716. return _Base.apply(this, arguments) || this;
  717. }
  718. var _proto = Geom.prototype;
  719. _proto.getDefaultCfg = function getDefaultCfg() {
  720. return {
  721. /**
  722. * geometry type
  723. * @type {String}
  724. */
  725. type: null,
  726. /**
  727. * the data of geometry
  728. * @type {Array}
  729. */
  730. data: null,
  731. /**
  732. * the attrs of geo,etry
  733. * @type {Object}
  734. */
  735. attrs: {},
  736. scales: {},
  737. /**
  738. * group for storing the shapes
  739. * @type {Canvas}
  740. */
  741. container: null,
  742. /**
  743. * style options
  744. * @type {Object}
  745. */
  746. styleOptions: null,
  747. chart: null,
  748. shapeType: '',
  749. /**
  750. * wether to generate key points for each shape
  751. * @protected
  752. * @type {Boolean}
  753. */
  754. generatePoints: false,
  755. attrOptions: {},
  756. sortable: false,
  757. startOnZero: true,
  758. visible: true,
  759. connectNulls: false,
  760. // 是否丢弃没有值的分组。
  761. ignoreEmptyGroup: false
  762. };
  763. };
  764. _proto.init = function init() {
  765. var self = this;
  766. self._initAttrs();
  767. self._processData();
  768. };
  769. _proto._getGroupScales = function _getGroupScales() {
  770. var self = this;
  771. var scales = [];
  772. Util.each(GROUP_ATTRS, function (attrName) {
  773. var attr = self.getAttr(attrName);
  774. if (attr) {
  775. var attrScales = attr.scales;
  776. Util.each(attrScales, function (scale) {
  777. if (scale && scale.isCategory && scales.indexOf(scale) === -1) {
  778. scales.push(scale);
  779. }
  780. });
  781. }
  782. });
  783. return scales;
  784. };
  785. _proto._groupData = function _groupData(data) {
  786. var self = this;
  787. var colDefs = self.get('colDefs');
  788. var groupScales = self._getGroupScales();
  789. if (groupScales.length) {
  790. var appendConditions = {};
  791. var names = [];
  792. Util.each(groupScales, function (scale) {
  793. var field = scale.field;
  794. names.push(field);
  795. if (colDefs && colDefs[field] && colDefs[field].values) {
  796. // users have defined
  797. appendConditions[scale.field] = colDefs[field].values;
  798. }
  799. });
  800. return Util.Array.group(data, names, appendConditions);
  801. }
  802. return [data];
  803. };
  804. _proto._setAttrOptions = function _setAttrOptions(attrName, attrCfg) {
  805. var options = this.get('attrOptions');
  806. options[attrName] = attrCfg;
  807. var attrs = this.get('attrs'); // 说明已经初始化过了
  808. if (Object.keys(attrs).length) {
  809. this._createAttr(attrName, attrCfg);
  810. }
  811. };
  812. _proto._createAttrOption = function _createAttrOption(attrName, field, cfg, defaultValues) {
  813. var attrCfg = {};
  814. attrCfg.field = field;
  815. if (cfg) {
  816. if (Util.isFunction(cfg)) {
  817. attrCfg.callback = cfg;
  818. } else {
  819. attrCfg.values = cfg;
  820. }
  821. } else {
  822. attrCfg.values = defaultValues;
  823. }
  824. this._setAttrOptions(attrName, attrCfg);
  825. };
  826. _proto._createAttr = function _createAttr(type, option) {
  827. var self = this;
  828. var attrs = self.get('attrs');
  829. var coord = self.get('coord');
  830. var className = Util.upperFirst(type);
  831. var fields = parseFields(option.field);
  832. if (type === 'position') {
  833. option.coord = coord;
  834. }
  835. var scales = [];
  836. for (var i = 0, len = fields.length; i < len; i++) {
  837. var field = fields[i];
  838. var scale = self._createScale(field);
  839. scales.push(scale);
  840. }
  841. if (type === 'position') {
  842. var yScale = scales[1]; // 饼图的处理,但是还不知道为啥
  843. if (coord.type === 'polar' && coord.transposed && self.hasAdjust('stack')) {
  844. if (yScale.values.length) {
  845. yScale.change({
  846. nice: false,
  847. min: 0,
  848. max: Math.max.apply(null, yScale.values)
  849. });
  850. }
  851. }
  852. }
  853. option.scales = scales;
  854. var attr = new Attr[className](option);
  855. attrs[type] = attr;
  856. return attr;
  857. };
  858. _proto._initAttrs = function _initAttrs() {
  859. var self = this;
  860. var attrOptions = self.get('attrOptions');
  861. for (var type in attrOptions) {
  862. if (attrOptions.hasOwnProperty(type)) {
  863. this._createAttr(type, attrOptions[type]);
  864. }
  865. }
  866. };
  867. _proto._createScale = function _createScale(field) {
  868. var scales = this.get('scales');
  869. var scale = scales[field];
  870. if (!scale) {
  871. scale = this.get('chart').createScale(field);
  872. scales[field] = scale;
  873. }
  874. return scale;
  875. };
  876. _proto._processData = function _processData() {
  877. var self = this;
  878. var data = this.get('data');
  879. var dataArray = [];
  880. var groupedArray = this._groupData(data);
  881. if (this.get('ignoreEmptyGroup')) {
  882. var yScale = this.getYScale();
  883. groupedArray = groupedArray.filter(function (group) {
  884. return group.some(function (item) {
  885. return typeof item[yScale.field] !== 'undefined';
  886. });
  887. });
  888. }
  889. for (var i = 0, len = groupedArray.length; i < len; i++) {
  890. var subData = groupedArray[i];
  891. var tempData = self._saveOrigin(subData);
  892. if (this.hasAdjust('dodge')) {
  893. self._numberic(tempData);
  894. }
  895. dataArray.push(tempData);
  896. }
  897. if (self.get('adjust')) {
  898. self._adjustData(dataArray);
  899. }
  900. if (self.get('sortable')) {
  901. self._sort(dataArray);
  902. }
  903. self.set('dataArray', dataArray);
  904. return dataArray;
  905. };
  906. _proto._saveOrigin = function _saveOrigin(data) {
  907. var rst = [];
  908. for (var i = 0, len = data.length; i < len; i++) {
  909. var origin = data[i];
  910. var obj = {};
  911. for (var k in origin) {
  912. obj[k] = origin[k];
  913. }
  914. obj[FIELD_ORIGIN] = origin;
  915. rst.push(obj);
  916. }
  917. return rst;
  918. };
  919. _proto._numberic = function _numberic(data) {
  920. var positionAttr = this.getAttr('position');
  921. var scales = positionAttr.scales;
  922. for (var j = 0, len = data.length; j < len; j++) {
  923. var obj = data[j];
  924. var count = Math.min(2, scales.length);
  925. for (var i = 0; i < count; i++) {
  926. var scale = scales[i];
  927. if (scale.isCategory) {
  928. var field = scale.field;
  929. obj[field] = scale.translate(obj[field]);
  930. }
  931. }
  932. }
  933. };
  934. _proto._adjustData = function _adjustData(dataArray) {
  935. var self = this;
  936. var adjust = self.get('adjust');
  937. if (adjust) {
  938. var adjustType = Util.upperFirst(adjust.type);
  939. if (!Adjust[adjustType]) {
  940. throw new Error('not support such adjust : ' + adjust);
  941. }
  942. var xScale = self.getXScale();
  943. var yScale = self.getYScale();
  944. var cfg = Util.mix({
  945. xField: xScale.field,
  946. yField: yScale.field
  947. }, adjust);
  948. var adjustObject = new Adjust[adjustType](cfg);
  949. adjustObject.processAdjust(dataArray);
  950. if (adjustType === 'Stack') {
  951. self._updateStackRange(yScale.field, yScale, dataArray);
  952. }
  953. }
  954. };
  955. _proto._updateStackRange = function _updateStackRange(field, scale, dataArray) {
  956. var mergeArray = Util.Array.merge(dataArray);
  957. var min = scale.min;
  958. var max = scale.max;
  959. for (var i = 0, len = mergeArray.length; i < len; i++) {
  960. var obj = mergeArray[i];
  961. var tmpMin = Math.min.apply(null, obj[field]);
  962. var tmpMax = Math.max.apply(null, obj[field]);
  963. if (tmpMin < min) {
  964. min = tmpMin;
  965. }
  966. if (tmpMax > max) {
  967. max = tmpMax;
  968. }
  969. }
  970. if (min < scale.min || max > scale.max) {
  971. scale.change({
  972. min: min,
  973. max: max
  974. });
  975. }
  976. };
  977. _proto._sort = function _sort(mappedArray) {
  978. var self = this;
  979. var xScale = self.getXScale();
  980. var field = xScale.field,
  981. type = xScale.type;
  982. if (type !== 'identity' && xScale.values.length > 1) {
  983. Util.each(mappedArray, function (itemArr) {
  984. itemArr.sort(function (obj1, obj2) {
  985. if (type === 'timeCat') {
  986. return xScale._toTimeStamp(obj1[FIELD_ORIGIN][field]) - xScale._toTimeStamp(obj2[FIELD_ORIGIN][field]);
  987. }
  988. return xScale.translate(obj1[FIELD_ORIGIN][field]) - xScale.translate(obj2[FIELD_ORIGIN][field]);
  989. });
  990. });
  991. }
  992. self.set('hasSorted', true);
  993. self.set('dataArray', mappedArray);
  994. };
  995. _proto.paint = function paint() {
  996. var self = this;
  997. var dataArray = self.get('dataArray');
  998. var mappedArray = [];
  999. var shapeFactory = self.getShapeFactory();
  1000. shapeFactory.setCoord(self.get('coord'));
  1001. self._beforeMapping(dataArray);
  1002. for (var i = 0, len = dataArray.length; i < len; i++) {
  1003. var data = dataArray[i];
  1004. if (data.length) {
  1005. data = self._mapping(data);
  1006. mappedArray.push(data);
  1007. self.draw(data, shapeFactory);
  1008. }
  1009. }
  1010. self.set('dataArray', mappedArray);
  1011. };
  1012. _proto.getShapeFactory = function getShapeFactory() {
  1013. var shapeFactory = this.get('shapeFactory');
  1014. if (!shapeFactory) {
  1015. var shapeType = this.get('shapeType');
  1016. shapeFactory = GeometryShape.getShapeFactory(shapeType);
  1017. this.set('shapeFactory', shapeFactory);
  1018. }
  1019. return shapeFactory;
  1020. };
  1021. _proto._mapping = function _mapping(data) {
  1022. var self = this;
  1023. var attrs = self.get('attrs');
  1024. var yField = self.getYScale().field; // 用来缓存转换的值,减少mapping耗时
  1025. var mappedCache = {};
  1026. for (var k in attrs) {
  1027. if (attrs.hasOwnProperty(k)) {
  1028. var attr = attrs[k];
  1029. var names = attr.names;
  1030. var scales = attr.scales;
  1031. for (var i = 0, len = data.length; i < len; i++) {
  1032. var record = data[i];
  1033. record[FIELD_ORIGIN_Y] = record[yField]; // 获取视觉属性对应的value值
  1034. // 位置的缓存命中率低,还是每次单独计算
  1035. if (attr.type === 'position') {
  1036. var values = self._getAttrValues(attr, record);
  1037. for (var j = 0, _len = values.length; j < _len; j++) {
  1038. var val = values[j];
  1039. var name = names[j];
  1040. record[name] = Util.isArray(val) && val.length === 1 ? val[0] : val;
  1041. }
  1042. } else {
  1043. // 除了position其他都只有一项
  1044. var _name = names[0];
  1045. var field = scales[0].field;
  1046. var value = record[field];
  1047. var key = "" + _name + value;
  1048. var _values = mappedCache[key];
  1049. if (!_values) {
  1050. _values = self._getAttrValues(attr, record);
  1051. mappedCache[key] = _values;
  1052. }
  1053. record[_name] = _values[0];
  1054. }
  1055. }
  1056. }
  1057. }
  1058. return data;
  1059. };
  1060. _proto._getAttrValues = function _getAttrValues(attr, record) {
  1061. var scales = attr.scales;
  1062. var params = [];
  1063. for (var i = 0, len = scales.length; i < len; i++) {
  1064. var scale = scales[i];
  1065. var field = scale.field;
  1066. if (scale.type === 'identity') {
  1067. params.push(scale.value);
  1068. } else {
  1069. params.push(record[field]);
  1070. }
  1071. }
  1072. var values = attr.mapping.apply(attr, params);
  1073. return values;
  1074. };
  1075. _proto.getAttrValue = function getAttrValue(attrName, record) {
  1076. var attr = this.getAttr(attrName);
  1077. var rst = null;
  1078. if (attr) {
  1079. var values = this._getAttrValues(attr, record);
  1080. rst = values[0];
  1081. }
  1082. return rst;
  1083. };
  1084. _proto._beforeMapping = function _beforeMapping(dataArray) {
  1085. var self = this;
  1086. if (self.get('generatePoints')) {
  1087. self._generatePoints(dataArray);
  1088. }
  1089. };
  1090. _proto.isInCircle = function isInCircle() {
  1091. var coord = this.get('coord');
  1092. return coord && coord.isPolar;
  1093. };
  1094. _proto.getCallbackCfg = function getCallbackCfg(fields, cfg, origin) {
  1095. if (!fields) {
  1096. return cfg;
  1097. }
  1098. var tmpCfg = {};
  1099. var params = fields.map(function (field) {
  1100. return origin[field];
  1101. });
  1102. Util.each(cfg, function (v, k) {
  1103. if (Util.isFunction(v)) {
  1104. tmpCfg[k] = v.apply(null, params);
  1105. } else {
  1106. tmpCfg[k] = v;
  1107. }
  1108. });
  1109. return tmpCfg;
  1110. };
  1111. _proto.getDrawCfg = function getDrawCfg(obj) {
  1112. var self = this;
  1113. var isInCircle = self.isInCircle();
  1114. var cfg = {
  1115. origin: obj,
  1116. x: obj.x,
  1117. y: obj.y,
  1118. color: obj.color,
  1119. size: obj.size,
  1120. shape: obj.shape,
  1121. isInCircle: isInCircle,
  1122. opacity: obj.opacity
  1123. };
  1124. var styleOptions = self.get('styleOptions');
  1125. if (styleOptions && styleOptions.style) {
  1126. cfg.style = self.getCallbackCfg(styleOptions.fields, styleOptions.style, obj[FIELD_ORIGIN]);
  1127. }
  1128. if (self.get('generatePoints')) {
  1129. cfg.points = obj.points;
  1130. cfg.nextPoints = obj.nextPoints;
  1131. }
  1132. if (isInCircle) {
  1133. cfg.center = self.get('coord').center;
  1134. }
  1135. return cfg;
  1136. };
  1137. _proto.draw = function draw(data, shapeFactory) {
  1138. var self = this;
  1139. var container = self.get('container');
  1140. var yScale = self.getYScale();
  1141. Util.each(data, function (obj, index) {
  1142. if (yScale && Util.isNil(obj._origin[yScale.field])) {
  1143. return;
  1144. }
  1145. obj.index = index;
  1146. var cfg = self.getDrawCfg(obj);
  1147. var shape = obj.shape;
  1148. self.drawShape(shape, obj, cfg, container, shapeFactory);
  1149. });
  1150. };
  1151. _proto.drawShape = function drawShape(shape, shapeData, cfg, container, shapeFactory) {
  1152. var gShape = shapeFactory.drawShape(shape, cfg, container);
  1153. if (gShape) {
  1154. Util.each([].concat(gShape), function (s) {
  1155. s.set('origin', shapeData);
  1156. });
  1157. }
  1158. };
  1159. _proto._generatePoints = function _generatePoints(dataArray) {
  1160. var self = this;
  1161. var shapeFactory = self.getShapeFactory();
  1162. var shapeAttr = self.getAttr('shape');
  1163. Util.each(dataArray, function (data) {
  1164. for (var i = 0, len = data.length; i < len; i++) {
  1165. var obj = data[i];
  1166. var cfg = self.createShapePointsCfg(obj);
  1167. var shape = shapeAttr ? self._getAttrValues(shapeAttr, obj) : null;
  1168. var points = shapeFactory.getShapePoints(shape, cfg);
  1169. obj.points = points;
  1170. }
  1171. }); // 添加nextPoints
  1172. Util.each(dataArray, function (data, index) {
  1173. var nextData = dataArray[index + 1];
  1174. if (nextData) {
  1175. data[0].nextPoints = nextData[0].points;
  1176. }
  1177. });
  1178. }
  1179. /**
  1180. * get the info of each shape
  1181. * @protected
  1182. * @param {Object} obj the data item
  1183. * @return {Object} cfg return the result
  1184. */
  1185. ;
  1186. _proto.createShapePointsCfg = function createShapePointsCfg(obj) {
  1187. var xScale = this.getXScale();
  1188. var yScale = this.getYScale();
  1189. var x = this._normalizeValues(obj[xScale.field], xScale);
  1190. var y;
  1191. if (yScale) {
  1192. y = this._normalizeValues(obj[yScale.field], yScale);
  1193. } else {
  1194. y = obj.y ? obj.y : 0.1;
  1195. }
  1196. return {
  1197. x: x,
  1198. y: y,
  1199. y0: yScale ? yScale.scale(this.getYMinValue()) : undefined
  1200. };
  1201. };
  1202. _proto.getYMinValue = function getYMinValue() {
  1203. var yScale = this.getYScale();
  1204. var min = yScale.min,
  1205. max = yScale.max;
  1206. var value;
  1207. if (this.get('startOnZero')) {
  1208. if (max <= 0 && min <= 0) {
  1209. value = max;
  1210. } else {
  1211. value = min >= 0 ? min : 0;
  1212. }
  1213. } else {
  1214. value = min;
  1215. }
  1216. return value;
  1217. };
  1218. _proto._normalizeValues = function _normalizeValues(values, scale) {
  1219. var rst = [];
  1220. if (Util.isArray(values)) {
  1221. for (var i = 0, len = values.length; i < len; i++) {
  1222. var v = values[i];
  1223. rst.push(scale.scale(v));
  1224. }
  1225. } else {
  1226. rst = scale.scale(values);
  1227. }
  1228. return rst;
  1229. };
  1230. _proto.getAttr = function getAttr(name) {
  1231. return this.get('attrs')[name];
  1232. };
  1233. _proto.getXScale = function getXScale() {
  1234. return this.getAttr('position').scales[0];
  1235. };
  1236. _proto.getYScale = function getYScale() {
  1237. return this.getAttr('position').scales[1];
  1238. };
  1239. _proto.hasAdjust = function hasAdjust(adjust) {
  1240. return this.get('adjust') && this.get('adjust').type === adjust;
  1241. };
  1242. _proto._getSnap = function _getSnap(scale, item, arr) {
  1243. var i = 0;
  1244. var values;
  1245. var yField = this.getYScale().field; // 叠加的维度
  1246. if (this.hasAdjust('stack') && scale.field === yField) {
  1247. values = [];
  1248. arr.forEach(function (obj) {
  1249. values.push(obj[FIELD_ORIGIN_Y]);
  1250. });
  1251. for (var len = values.length; i < len; i++) {
  1252. if (values[0][0] > item) {
  1253. break;
  1254. }
  1255. if (values[values.length - 1][1] <= item) {
  1256. i = values.length - 1;
  1257. break;
  1258. }
  1259. if (values[i][0] <= item && values[i][1] > item) {
  1260. break;
  1261. }
  1262. }
  1263. } else {
  1264. values = scale.values;
  1265. values.sort(function (a, b) {
  1266. return a - b;
  1267. });
  1268. for (var _len2 = values.length; i < _len2; i++) {
  1269. // 如果只有1个点直接返回第1个点
  1270. if (_len2 <= 1) {
  1271. break;
  1272. } // 第1个点和第2个点之间
  1273. if ((values[0] + values[1]) / 2 > item) {
  1274. break;
  1275. } // 中间的点
  1276. if ((values[i - 1] + values[i]) / 2 <= item && (values[i + 1] + values[i]) / 2 > item) {
  1277. break;
  1278. } // 最后2个点
  1279. if ((values[values.length - 2] + values[values.length - 1]) / 2 <= item) {
  1280. i = values.length - 1;
  1281. break;
  1282. }
  1283. }
  1284. }
  1285. var result = values[i];
  1286. return result;
  1287. };
  1288. _proto.getSnapRecords = function getSnapRecords(point) {
  1289. var self = this;
  1290. var coord = self.get('coord');
  1291. var xScale = self.getXScale();
  1292. var yScale = self.getYScale();
  1293. var xfield = xScale.field;
  1294. var dataArray = self.get('dataArray');
  1295. if (!this.get('hasSorted')) {
  1296. this._sort(dataArray);
  1297. }
  1298. var rst = [];
  1299. var invertPoint = coord.invertPoint(point);
  1300. var invertPointX = invertPoint.x;
  1301. if (self.isInCircle() && !coord.transposed && invertPointX > (1 + xScale.rangeMax()) / 2) {
  1302. invertPointX = xScale.rangeMin();
  1303. }
  1304. var xValue = xScale.invert(invertPointX);
  1305. if (!xScale.isCategory) {
  1306. xValue = self._getSnap(xScale, xValue);
  1307. }
  1308. var tmp = [];
  1309. dataArray.forEach(function (data) {
  1310. data.forEach(function (obj) {
  1311. var originValue = Util.isNil(obj[FIELD_ORIGIN]) ? obj[xfield] : obj[FIELD_ORIGIN][xfield];
  1312. if (self._isEqual(originValue, xValue, xScale)) {
  1313. tmp.push(obj);
  1314. }
  1315. });
  1316. }); // special for pie chart
  1317. if (this.hasAdjust('stack') && coord.isPolar && coord.transposed) {
  1318. if (invertPointX >= 0 && invertPointX <= 1) {
  1319. var yValue = yScale.invert(invertPoint.y);
  1320. yValue = self._getSnap(yScale, yValue, tmp);
  1321. tmp.forEach(function (obj) {
  1322. if (Util.isArray(yValue) ? obj[FIELD_ORIGIN_Y].toString() === yValue.toString() : obj[FIELD_ORIGIN_Y] === yValue) {
  1323. rst.push(obj);
  1324. }
  1325. });
  1326. }
  1327. } else {
  1328. rst = tmp;
  1329. }
  1330. return rst;
  1331. };
  1332. _proto._isEqual = function _isEqual(originValue, value, scale) {
  1333. if (scale.type === 'timeCat') {
  1334. return scale._toTimeStamp(originValue) === value;
  1335. }
  1336. return value === originValue;
  1337. };
  1338. _proto.position = function position(field) {
  1339. this._setAttrOptions('position', {
  1340. field: field
  1341. });
  1342. return this;
  1343. };
  1344. _proto.color = function color(field, values) {
  1345. this._createAttrOption('color', field, values, Global.colors);
  1346. return this;
  1347. };
  1348. _proto.size = function size(field, values) {
  1349. this._createAttrOption('size', field, values, Global.sizes);
  1350. return this;
  1351. };
  1352. _proto.shape = function shape(field, values) {
  1353. var type = this.get('type');
  1354. var shapes = Global.shapes[type] || [];
  1355. this._createAttrOption('shape', field, values, shapes);
  1356. return this;
  1357. };
  1358. _proto.style = function style(field, cfg) {
  1359. var styleOptions = this.get('styleOptions');
  1360. if (!styleOptions) {
  1361. styleOptions = {};
  1362. this.set('styleOptions', styleOptions);
  1363. }
  1364. if (Util.isObject(field)) {
  1365. cfg = field;
  1366. field = null;
  1367. }
  1368. var fields;
  1369. if (field) {
  1370. fields = parseFields(field);
  1371. }
  1372. styleOptions.fields = fields;
  1373. styleOptions.style = cfg;
  1374. return this;
  1375. };
  1376. _proto.adjust = function adjust(type) {
  1377. if (Util.isString(type)) {
  1378. type = {
  1379. type: type
  1380. };
  1381. }
  1382. this.set('adjust', type);
  1383. return this;
  1384. };
  1385. _proto.animate = function animate(cfg) {
  1386. this.set('animateCfg', cfg);
  1387. return this;
  1388. };
  1389. _proto.changeData = function changeData(data) {
  1390. this.set('data', data); // 改变数据后,情况度量,因为需要重新实例化
  1391. this.set('scales', {});
  1392. this.init();
  1393. };
  1394. _proto.clearInner = function clearInner() {
  1395. var container = this.get('container');
  1396. if (container) {
  1397. container.clear(); // container.setMatrix([ 1, 0, 0, 1, 0, 0 ]);
  1398. }
  1399. };
  1400. _proto.reset = function reset() {
  1401. this.set('attrs', {});
  1402. this.set('attrOptions', {});
  1403. this.set('adjust', null);
  1404. this.clearInner();
  1405. };
  1406. _proto.clear = function clear() {
  1407. this.clearInner();
  1408. };
  1409. _proto.destroy = function destroy() {
  1410. this.clear();
  1411. _Base.prototype.destroy.call(this);
  1412. };
  1413. _proto._display = function _display(visible) {
  1414. this.set('visible', visible);
  1415. var container = this.get('container');
  1416. var canvas = container.get('canvas');
  1417. container.set('visible', visible);
  1418. canvas.draw();
  1419. };
  1420. _proto.show = function show() {
  1421. this._display(true);
  1422. };
  1423. _proto.hide = function hide() {
  1424. this._display(false);
  1425. };
  1426. return Geom;
  1427. }(Base);
  1428. module.exports = Geom;
  1429. /***/ }),
  1430. /* 18 */
  1431. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1432. "use strict";
  1433. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11);
  1434. /* harmony default export */ __webpack_exports__["a"] = (function (str) {
  1435. return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(str, 'String');
  1436. });
  1437. /***/ }),
  1438. /* 19 */
  1439. /***/ (function(module, exports, __webpack_require__) {
  1440. "use strict";
  1441. var Util = __webpack_require__(0);
  1442. var Global = __webpack_require__(6);
  1443. var Shape = {};
  1444. var ShapeBase = {
  1445. _coord: null,
  1446. /**
  1447. * draw the shape
  1448. * @param {Object} cfg options
  1449. * @param {Object} container container to store the shapes
  1450. */
  1451. draw: function draw(cfg, container) {
  1452. if (this.drawShape) {
  1453. this.drawShape(cfg, container);
  1454. }
  1455. },
  1456. /**
  1457. * set the coordinate instance
  1458. * @param {Coord} coord coordinate instance
  1459. */
  1460. setCoord: function setCoord(coord) {
  1461. this._coord = coord;
  1462. },
  1463. /**
  1464. * convert the normalized value to the canvas position
  1465. * @param {point} point the point to convert
  1466. * @return {point} point return the result
  1467. */
  1468. parsePoint: function parsePoint(point) {
  1469. var coord = this._coord;
  1470. if (coord.isPolar) {
  1471. if (point.x === 1) point.x = 0.9999999;
  1472. if (point.y === 1) point.y = 0.9999999;
  1473. }
  1474. return coord.convertPoint(point);
  1475. },
  1476. /**
  1477. * convert the normalized value to the canvas position
  1478. * @param {points} points the array that store the points
  1479. * @return {points} points return the result
  1480. */
  1481. parsePoints: function parsePoints(points) {
  1482. if (!points) return false;
  1483. var self = this;
  1484. var rst = [];
  1485. points.forEach(function (point) {
  1486. rst.push(self.parsePoint(point));
  1487. });
  1488. return rst;
  1489. }
  1490. };
  1491. var ShapeFactoryBase = {
  1492. defaultShapeType: null,
  1493. setCoord: function setCoord(coord) {
  1494. this._coord = coord;
  1495. },
  1496. getShape: function getShape(type) {
  1497. var self = this;
  1498. if (Util.isArray(type)) {
  1499. type = type[0];
  1500. }
  1501. var shape = self[type] || self[self.defaultShapeType];
  1502. shape._coord = self._coord;
  1503. return shape;
  1504. },
  1505. getShapePoints: function getShapePoints(type, cfg) {
  1506. var shape = this.getShape(type);
  1507. var fn = shape.getPoints || shape.getShapePoints || this.getDefaultPoints;
  1508. var points = fn(cfg);
  1509. return points;
  1510. },
  1511. getDefaultPoints: function getDefaultPoints()
  1512. /* cfg */
  1513. {
  1514. return [];
  1515. },
  1516. drawShape: function drawShape(type, cfg, container) {
  1517. var shape = this.getShape(type);
  1518. if (!cfg.color) {
  1519. cfg.color = Global.colors[0];
  1520. }
  1521. return shape.draw(cfg, container);
  1522. }
  1523. };
  1524. Shape.registerFactory = function (factoryName, cfg) {
  1525. var className = Util.upperFirst(factoryName);
  1526. var geomObj = Util.mix({}, ShapeFactoryBase, cfg);
  1527. Shape[className] = geomObj;
  1528. geomObj.name = factoryName;
  1529. return geomObj;
  1530. };
  1531. Shape.registerShape = function (factoryName, shapeType, cfg) {
  1532. var className = Util.upperFirst(factoryName);
  1533. var factory = Shape[className];
  1534. var shapeObj = Util.mix({}, ShapeBase, cfg);
  1535. factory[shapeType] = shapeObj;
  1536. return shapeObj;
  1537. };
  1538. Shape.registShape = Shape.registerShape;
  1539. Shape.getShapeFactory = function (factoryName) {
  1540. var self = this;
  1541. factoryName = factoryName || 'point';
  1542. var className = Util.upperFirst(factoryName);
  1543. return self[className];
  1544. };
  1545. module.exports = Shape;
  1546. /***/ }),
  1547. /* 20 */
  1548. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1549. "use strict";
  1550. Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
  1551. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(28);
  1552. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "contains", function() { return __WEBPACK_IMPORTED_MODULE_0__contains__["a"]; });
  1553. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return __WEBPACK_IMPORTED_MODULE_0__contains__["a"]; });
  1554. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__difference__ = __webpack_require__(79);
  1555. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "difference", function() { return __WEBPACK_IMPORTED_MODULE_1__difference__["a"]; });
  1556. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__find__ = __webpack_require__(80);
  1557. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return __WEBPACK_IMPORTED_MODULE_2__find__["a"]; });
  1558. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__find_index__ = __webpack_require__(81);
  1559. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return __WEBPACK_IMPORTED_MODULE_3__find_index__["a"]; });
  1560. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__first_value__ = __webpack_require__(82);
  1561. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "firstValue", function() { return __WEBPACK_IMPORTED_MODULE_4__first_value__["a"]; });
  1562. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__flatten__ = __webpack_require__(83);
  1563. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return __WEBPACK_IMPORTED_MODULE_5__flatten__["a"]; });
  1564. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__flatten_deep__ = __webpack_require__(84);
  1565. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "flattenDeep", function() { return __WEBPACK_IMPORTED_MODULE_6__flatten_deep__["a"]; });
  1566. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__get_range__ = __webpack_require__(85);
  1567. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "getRange", function() { return __WEBPACK_IMPORTED_MODULE_7__get_range__["a"]; });
  1568. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__pull__ = __webpack_require__(86);
  1569. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pull", function() { return __WEBPACK_IMPORTED_MODULE_8__pull__["a"]; });
  1570. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__pull_at__ = __webpack_require__(53);
  1571. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pullAt", function() { return __WEBPACK_IMPORTED_MODULE_9__pull_at__["a"]; });
  1572. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__reduce__ = __webpack_require__(87);
  1573. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return __WEBPACK_IMPORTED_MODULE_10__reduce__["a"]; });
  1574. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__remove__ = __webpack_require__(88);
  1575. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "remove", function() { return __WEBPACK_IMPORTED_MODULE_11__remove__["a"]; });
  1576. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__sort_by__ = __webpack_require__(89);
  1577. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sortBy", function() { return __WEBPACK_IMPORTED_MODULE_12__sort_by__["a"]; });
  1578. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__union__ = __webpack_require__(90);
  1579. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "union", function() { return __WEBPACK_IMPORTED_MODULE_13__union__["a"]; });
  1580. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__uniq__ = __webpack_require__(54);
  1581. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "uniq", function() { return __WEBPACK_IMPORTED_MODULE_14__uniq__["a"]; });
  1582. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__values_of_key__ = __webpack_require__(91);
  1583. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "valuesOfKey", function() { return __WEBPACK_IMPORTED_MODULE_15__values_of_key__["a"]; });
  1584. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__head__ = __webpack_require__(92);
  1585. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "head", function() { return __WEBPACK_IMPORTED_MODULE_16__head__["a"]; });
  1586. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__last__ = __webpack_require__(93);
  1587. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return __WEBPACK_IMPORTED_MODULE_17__last__["a"]; });
  1588. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__starts_with__ = __webpack_require__(94);
  1589. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "startsWith", function() { return __WEBPACK_IMPORTED_MODULE_18__starts_with__["a"]; });
  1590. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__ends_with__ = __webpack_require__(95);
  1591. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "endsWith", function() { return __WEBPACK_IMPORTED_MODULE_19__ends_with__["a"]; });
  1592. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__filter__ = __webpack_require__(39);
  1593. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return __WEBPACK_IMPORTED_MODULE_20__filter__["a"]; });
  1594. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__every__ = __webpack_require__(96);
  1595. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return __WEBPACK_IMPORTED_MODULE_21__every__["a"]; });
  1596. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__some__ = __webpack_require__(97);
  1597. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "some", function() { return __WEBPACK_IMPORTED_MODULE_22__some__["a"]; });
  1598. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__group__ = __webpack_require__(98);
  1599. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "group", function() { return __WEBPACK_IMPORTED_MODULE_23__group__["a"]; });
  1600. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__group_by__ = __webpack_require__(56);
  1601. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return __WEBPACK_IMPORTED_MODULE_24__group_by__["a"]; });
  1602. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__group_to_map__ = __webpack_require__(55);
  1603. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "groupToMap", function() { return __WEBPACK_IMPORTED_MODULE_25__group_to_map__["a"]; });
  1604. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__get_wrap_behavior__ = __webpack_require__(99);
  1605. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "getWrapBehavior", function() { return __WEBPACK_IMPORTED_MODULE_26__get_wrap_behavior__["a"]; });
  1606. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__wrap_behavior__ = __webpack_require__(100);
  1607. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "wrapBehavior", function() { return __WEBPACK_IMPORTED_MODULE_27__wrap_behavior__["a"]; });
  1608. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__number2color__ = __webpack_require__(101);
  1609. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "number2color", function() { return __WEBPACK_IMPORTED_MODULE_28__number2color__["a"]; });
  1610. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__parse_radius__ = __webpack_require__(102);
  1611. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "parseRadius", function() { return __WEBPACK_IMPORTED_MODULE_29__parse_radius__["a"]; });
  1612. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__clamp__ = __webpack_require__(103);
  1613. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "clamp", function() { return __WEBPACK_IMPORTED_MODULE_30__clamp__["a"]; });
  1614. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__fixed_base__ = __webpack_require__(104);
  1615. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "fixedBase", function() { return __WEBPACK_IMPORTED_MODULE_31__fixed_base__["a"]; });
  1616. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__is_decimal__ = __webpack_require__(105);
  1617. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isDecimal", function() { return __WEBPACK_IMPORTED_MODULE_32__is_decimal__["a"]; });
  1618. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__is_even__ = __webpack_require__(106);
  1619. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEven", function() { return __WEBPACK_IMPORTED_MODULE_33__is_even__["a"]; });
  1620. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__is_integer__ = __webpack_require__(107);
  1621. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isInteger", function() { return __WEBPACK_IMPORTED_MODULE_34__is_integer__["a"]; });
  1622. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__is_negative__ = __webpack_require__(108);
  1623. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNegative", function() { return __WEBPACK_IMPORTED_MODULE_35__is_negative__["a"]; });
  1624. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__is_number_equal__ = __webpack_require__(109);
  1625. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNumberEqual", function() { return __WEBPACK_IMPORTED_MODULE_36__is_number_equal__["a"]; });
  1626. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__is_odd__ = __webpack_require__(110);
  1627. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isOdd", function() { return __WEBPACK_IMPORTED_MODULE_37__is_odd__["a"]; });
  1628. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__is_positive__ = __webpack_require__(111);
  1629. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isPositive", function() { return __WEBPACK_IMPORTED_MODULE_38__is_positive__["a"]; });
  1630. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__max_by__ = __webpack_require__(112);
  1631. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "maxBy", function() { return __WEBPACK_IMPORTED_MODULE_39__max_by__["a"]; });
  1632. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__min_by__ = __webpack_require__(113);
  1633. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "minBy", function() { return __WEBPACK_IMPORTED_MODULE_40__min_by__["a"]; });
  1634. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__mod__ = __webpack_require__(114);
  1635. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mod", function() { return __WEBPACK_IMPORTED_MODULE_41__mod__["a"]; });
  1636. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__to_degree__ = __webpack_require__(115);
  1637. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toDegree", function() { return __WEBPACK_IMPORTED_MODULE_42__to_degree__["a"]; });
  1638. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__to_integer__ = __webpack_require__(116);
  1639. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toInteger", function() { return __WEBPACK_IMPORTED_MODULE_43__to_integer__["a"]; });
  1640. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__to_radian__ = __webpack_require__(117);
  1641. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toRadian", function() { return __WEBPACK_IMPORTED_MODULE_44__to_radian__["a"]; });
  1642. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__for_in__ = __webpack_require__(118);
  1643. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "forIn", function() { return __WEBPACK_IMPORTED_MODULE_45__for_in__["a"]; });
  1644. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__has__ = __webpack_require__(57);
  1645. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "has", function() { return __WEBPACK_IMPORTED_MODULE_46__has__["a"]; });
  1646. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__has_key__ = __webpack_require__(119);
  1647. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "hasKey", function() { return __WEBPACK_IMPORTED_MODULE_47__has_key__["a"]; });
  1648. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__has_value__ = __webpack_require__(120);
  1649. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "hasValue", function() { return __WEBPACK_IMPORTED_MODULE_48__has_value__["a"]; });
  1650. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__keys__ = __webpack_require__(52);
  1651. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return __WEBPACK_IMPORTED_MODULE_49__keys__["a"]; });
  1652. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__is_match__ = __webpack_require__(51);
  1653. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isMatch", function() { return __WEBPACK_IMPORTED_MODULE_50__is_match__["a"]; });
  1654. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__values__ = __webpack_require__(58);
  1655. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "values", function() { return __WEBPACK_IMPORTED_MODULE_51__values__["a"]; });
  1656. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__lower_case__ = __webpack_require__(121);
  1657. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "lowerCase", function() { return __WEBPACK_IMPORTED_MODULE_52__lower_case__["a"]; });
  1658. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__lower_first__ = __webpack_require__(122);
  1659. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "lowerFirst", function() { return __WEBPACK_IMPORTED_MODULE_53__lower_first__["a"]; });
  1660. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__substitute__ = __webpack_require__(123);
  1661. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "substitute", function() { return __WEBPACK_IMPORTED_MODULE_54__substitute__["a"]; });
  1662. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__upper_case__ = __webpack_require__(124);
  1663. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "upperCase", function() { return __WEBPACK_IMPORTED_MODULE_55__upper_case__["a"]; });
  1664. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__upper_first__ = __webpack_require__(125);
  1665. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "upperFirst", function() { return __WEBPACK_IMPORTED_MODULE_56__upper_first__["a"]; });
  1666. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__get_type__ = __webpack_require__(59);
  1667. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "getType", function() { return __WEBPACK_IMPORTED_MODULE_57__get_type__["a"]; });
  1668. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__is_arguments__ = __webpack_require__(126);
  1669. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isArguments", function() { return __WEBPACK_IMPORTED_MODULE_58__is_arguments__["a"]; });
  1670. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__is_array__ = __webpack_require__(5);
  1671. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return __WEBPACK_IMPORTED_MODULE_59__is_array__["a"]; });
  1672. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__is_array_like__ = __webpack_require__(7);
  1673. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayLike", function() { return __WEBPACK_IMPORTED_MODULE_60__is_array_like__["a"]; });
  1674. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__is_boolean__ = __webpack_require__(127);
  1675. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return __WEBPACK_IMPORTED_MODULE_61__is_boolean__["a"]; });
  1676. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__is_date__ = __webpack_require__(128);
  1677. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return __WEBPACK_IMPORTED_MODULE_62__is_date__["a"]; });
  1678. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__is_error__ = __webpack_require__(129);
  1679. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isError", function() { return __WEBPACK_IMPORTED_MODULE_63__is_error__["a"]; });
  1680. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__is_function__ = __webpack_require__(9);
  1681. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return __WEBPACK_IMPORTED_MODULE_64__is_function__["a"]; });
  1682. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__is_finite__ = __webpack_require__(130);
  1683. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isFinite", function() { return __WEBPACK_IMPORTED_MODULE_65__is_finite__["a"]; });
  1684. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__is_nil__ = __webpack_require__(14);
  1685. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNil", function() { return __WEBPACK_IMPORTED_MODULE_66__is_nil__["a"]; });
  1686. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__is_null__ = __webpack_require__(131);
  1687. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNull", function() { return __WEBPACK_IMPORTED_MODULE_67__is_null__["a"]; });
  1688. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__is_number__ = __webpack_require__(12);
  1689. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return __WEBPACK_IMPORTED_MODULE_68__is_number__["a"]; });
  1690. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__is_object__ = __webpack_require__(29);
  1691. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return __WEBPACK_IMPORTED_MODULE_69__is_object__["a"]; });
  1692. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__is_object_like__ = __webpack_require__(40);
  1693. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isObjectLike", function() { return __WEBPACK_IMPORTED_MODULE_70__is_object_like__["a"]; });
  1694. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__is_plain_object__ = __webpack_require__(24);
  1695. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isPlainObject", function() { return __WEBPACK_IMPORTED_MODULE_71__is_plain_object__["a"]; });
  1696. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__is_prototype__ = __webpack_require__(60);
  1697. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isPrototype", function() { return __WEBPACK_IMPORTED_MODULE_72__is_prototype__["a"]; });
  1698. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__is_reg_exp__ = __webpack_require__(132);
  1699. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isRegExp", function() { return __WEBPACK_IMPORTED_MODULE_73__is_reg_exp__["a"]; });
  1700. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__is_string__ = __webpack_require__(18);
  1701. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return __WEBPACK_IMPORTED_MODULE_74__is_string__["a"]; });
  1702. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__is_type__ = __webpack_require__(11);
  1703. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isType", function() { return __WEBPACK_IMPORTED_MODULE_75__is_type__["a"]; });
  1704. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__is_undefined__ = __webpack_require__(133);
  1705. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return __WEBPACK_IMPORTED_MODULE_76__is_undefined__["a"]; });
  1706. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__is_element__ = __webpack_require__(134);
  1707. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isElement", function() { return __WEBPACK_IMPORTED_MODULE_77__is_element__["a"]; });
  1708. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__request_animation_frame__ = __webpack_require__(135);
  1709. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "requestAnimationFrame", function() { return __WEBPACK_IMPORTED_MODULE_78__request_animation_frame__["a"]; });
  1710. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__clear_animation_frame__ = __webpack_require__(136);
  1711. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "clearAnimationFrame", function() { return __WEBPACK_IMPORTED_MODULE_79__clear_animation_frame__["a"]; });
  1712. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__augment__ = __webpack_require__(137);
  1713. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "augment", function() { return __WEBPACK_IMPORTED_MODULE_80__augment__["a"]; });
  1714. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__clone__ = __webpack_require__(138);
  1715. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "clone", function() { return __WEBPACK_IMPORTED_MODULE_81__clone__["a"]; });
  1716. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__debounce__ = __webpack_require__(139);
  1717. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return __WEBPACK_IMPORTED_MODULE_82__debounce__["a"]; });
  1718. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__memoize__ = __webpack_require__(140);
  1719. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "memoize", function() { return __WEBPACK_IMPORTED_MODULE_83__memoize__["a"]; });
  1720. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__deep_mix__ = __webpack_require__(141);
  1721. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "deepMix", function() { return __WEBPACK_IMPORTED_MODULE_84__deep_mix__["a"]; });
  1722. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__each__ = __webpack_require__(8);
  1723. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "each", function() { return __WEBPACK_IMPORTED_MODULE_85__each__["a"]; });
  1724. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__extend__ = __webpack_require__(142);
  1725. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return __WEBPACK_IMPORTED_MODULE_86__extend__["a"]; });
  1726. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__index_of__ = __webpack_require__(143);
  1727. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return __WEBPACK_IMPORTED_MODULE_87__index_of__["a"]; });
  1728. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__is_empty__ = __webpack_require__(144);
  1729. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return __WEBPACK_IMPORTED_MODULE_88__is_empty__["a"]; });
  1730. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__is_equal__ = __webpack_require__(61);
  1731. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEqual", function() { return __WEBPACK_IMPORTED_MODULE_89__is_equal__["a"]; });
  1732. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__is_equal_with__ = __webpack_require__(145);
  1733. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isEqualWith", function() { return __WEBPACK_IMPORTED_MODULE_90__is_equal_with__["a"]; });
  1734. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__map__ = __webpack_require__(146);
  1735. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return __WEBPACK_IMPORTED_MODULE_91__map__["a"]; });
  1736. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__map_values__ = __webpack_require__(147);
  1737. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mapValues", function() { return __WEBPACK_IMPORTED_MODULE_92__map_values__["a"]; });
  1738. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__mix__ = __webpack_require__(41);
  1739. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mix", function() { return __WEBPACK_IMPORTED_MODULE_93__mix__["a"]; });
  1740. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "assign", function() { return __WEBPACK_IMPORTED_MODULE_93__mix__["a"]; });
  1741. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__get__ = __webpack_require__(148);
  1742. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return __WEBPACK_IMPORTED_MODULE_94__get__["a"]; });
  1743. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__set__ = __webpack_require__(149);
  1744. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "set", function() { return __WEBPACK_IMPORTED_MODULE_95__set__["a"]; });
  1745. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__pick__ = __webpack_require__(150);
  1746. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pick", function() { return __WEBPACK_IMPORTED_MODULE_96__pick__["a"]; });
  1747. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__throttle__ = __webpack_require__(151);
  1748. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return __WEBPACK_IMPORTED_MODULE_97__throttle__["a"]; });
  1749. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__to_array__ = __webpack_require__(152);
  1750. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return __WEBPACK_IMPORTED_MODULE_98__to_array__["a"]; });
  1751. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__to_string__ = __webpack_require__(25);
  1752. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "toString", function() { return __WEBPACK_IMPORTED_MODULE_99__to_string__["a"]; });
  1753. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__unique_id__ = __webpack_require__(153);
  1754. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "uniqueId", function() { return __WEBPACK_IMPORTED_MODULE_100__unique_id__["a"]; });
  1755. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__noop__ = __webpack_require__(154);
  1756. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return __WEBPACK_IMPORTED_MODULE_101__noop__["a"]; });
  1757. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__identity__ = __webpack_require__(155);
  1758. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return __WEBPACK_IMPORTED_MODULE_102__identity__["a"]; });
  1759. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__size__ = __webpack_require__(156);
  1760. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "size", function() { return __WEBPACK_IMPORTED_MODULE_103__size__["a"]; });
  1761. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__cache__ = __webpack_require__(157);
  1762. /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Cache", function() { return __WEBPACK_IMPORTED_MODULE_104__cache__["a"]; });
  1763. // array
  1764. // event
  1765. // format
  1766. // math
  1767. // object
  1768. // string
  1769. // type
  1770. // other
  1771. // 不知道为什么,需要把这个 export,不然 ts 会报类型错误
  1772. /***/ }),
  1773. /* 21 */
  1774. /***/ (function(module, exports, __webpack_require__) {
  1775. "use strict";
  1776. var Vector2 = __webpack_require__(13);
  1777. var start = Vector2.create();
  1778. var end = Vector2.create();
  1779. var extremity = Vector2.create();
  1780. function getCubicBezierXYatT(startPt, controlPt1, controlPt2, endPt, T) {
  1781. var x = CubicN(T, startPt.x, controlPt1.x, controlPt2.x, endPt.x);
  1782. var y = CubicN(T, startPt.y, controlPt1.y, controlPt2.y, endPt.y);
  1783. return {
  1784. x: x,
  1785. y: y
  1786. };
  1787. } // cubic helper formula at T distance
  1788. function CubicN(T, a, b, c, d) {
  1789. var t2 = T * T;
  1790. var t3 = t2 * T;
  1791. return a + (-a * 3 + T * (3 * a - a * T)) * T + (3 * b + T * (-6 * b + b * 3 * T)) * T + (c * 3 - c * 3 * T) * t2 + d * t3;
  1792. }
  1793. function cubicBezierBounds(c) {
  1794. var minX = Infinity;
  1795. var maxX = -Infinity;
  1796. var minY = Infinity;
  1797. var maxY = -Infinity;
  1798. var s = {
  1799. x: c[0],
  1800. y: c[1]
  1801. };
  1802. var c1 = {
  1803. x: c[2],
  1804. y: c[3]
  1805. };
  1806. var c2 = {
  1807. x: c[4],
  1808. y: c[5]
  1809. };
  1810. var e = {
  1811. x: c[6],
  1812. y: c[7]
  1813. };
  1814. for (var t = 0; t < 100; t++) {
  1815. var pt = getCubicBezierXYatT(s, c1, c2, e, t / 100);
  1816. if (pt.x < minX) {
  1817. minX = pt.x;
  1818. }
  1819. if (pt.x > maxX) {
  1820. maxX = pt.x;
  1821. }
  1822. if (pt.y < minY) {
  1823. minY = pt.y;
  1824. }
  1825. if (pt.y > maxY) {
  1826. maxY = pt.y;
  1827. }
  1828. }
  1829. return {
  1830. minX: minX,
  1831. minY: minY,
  1832. maxX: maxX,
  1833. maxY: maxY
  1834. };
  1835. }
  1836. module.exports = {
  1837. getBBoxFromPoints: function getBBoxFromPoints(points, lineWidth) {
  1838. if (points.length === 0) {
  1839. return;
  1840. }
  1841. var p = points[0];
  1842. var left = p.x;
  1843. var right = p.x;
  1844. var top = p.y;
  1845. var bottom = p.y;
  1846. var len = points.length;
  1847. for (var i = 1; i < len; i++) {
  1848. p = points[i];
  1849. left = Math.min(left, p.x);
  1850. right = Math.max(right, p.x);
  1851. top = Math.min(top, p.y);
  1852. bottom = Math.max(bottom, p.y);
  1853. }
  1854. lineWidth = lineWidth / 2 || 0;
  1855. return {
  1856. minX: left - lineWidth,
  1857. minY: top - lineWidth,
  1858. maxX: right + lineWidth,
  1859. maxY: bottom + lineWidth
  1860. };
  1861. },
  1862. getBBoxFromLine: function getBBoxFromLine(x0, y0, x1, y1, lineWidth) {
  1863. lineWidth = lineWidth / 2 || 0;
  1864. return {
  1865. minX: Math.min(x0, x1) - lineWidth,
  1866. minY: Math.min(y0, y1) - lineWidth,
  1867. maxX: Math.max(x0, x1) + lineWidth,
  1868. maxY: Math.max(y0, y1) + lineWidth
  1869. };
  1870. },
  1871. getBBoxFromArc: function getBBoxFromArc(x, y, r, startAngle, endAngle, anticlockwise) {
  1872. var diff = Math.abs(startAngle - endAngle);
  1873. if (diff % (Math.PI * 2) < 1e-4 && diff > 1e-4) {
  1874. // Is a circle
  1875. return {
  1876. minX: x - r,
  1877. minY: y - r,
  1878. maxX: x + r,
  1879. maxY: y + r
  1880. };
  1881. }
  1882. start[0] = Math.cos(startAngle) * r + x;
  1883. start[1] = Math.sin(startAngle) * r + y;
  1884. end[0] = Math.cos(endAngle) * r + x;
  1885. end[1] = Math.sin(endAngle) * r + y;
  1886. var min = [0, 0];
  1887. var max = [0, 0];
  1888. Vector2.min(min, start, end);
  1889. Vector2.max(max, start, end); // Thresh to [0, Math.PI * 2]
  1890. startAngle = startAngle % (Math.PI * 2);
  1891. if (startAngle < 0) {
  1892. startAngle = startAngle + Math.PI * 2;
  1893. }
  1894. endAngle = endAngle % (Math.PI * 2);
  1895. if (endAngle < 0) {
  1896. endAngle = endAngle + Math.PI * 2;
  1897. }
  1898. if (startAngle > endAngle && !anticlockwise) {
  1899. endAngle += Math.PI * 2;
  1900. } else if (startAngle < endAngle && anticlockwise) {
  1901. startAngle += Math.PI * 2;
  1902. }
  1903. if (anticlockwise) {
  1904. var tmp = endAngle;
  1905. endAngle = startAngle;
  1906. startAngle = tmp;
  1907. }
  1908. for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {
  1909. if (angle > startAngle) {
  1910. extremity[0] = Math.cos(angle) * r + x;
  1911. extremity[1] = Math.sin(angle) * r + y;
  1912. Vector2.min(min, extremity, min);
  1913. Vector2.max(max, extremity, max);
  1914. }
  1915. }
  1916. return {
  1917. minX: min[0],
  1918. minY: min[1],
  1919. maxX: max[0],
  1920. maxY: max[1]
  1921. };
  1922. },
  1923. getBBoxFromBezierGroup: function getBBoxFromBezierGroup(points, lineWidth) {
  1924. var minX = Infinity;
  1925. var maxX = -Infinity;
  1926. var minY = Infinity;
  1927. var maxY = -Infinity;
  1928. for (var i = 0, len = points.length; i < len; i++) {
  1929. var bbox = cubicBezierBounds(points[i]);
  1930. if (bbox.minX < minX) {
  1931. minX = bbox.minX;
  1932. }
  1933. if (bbox.maxX > maxX) {
  1934. maxX = bbox.maxX;
  1935. }
  1936. if (bbox.minY < minY) {
  1937. minY = bbox.minY;
  1938. }
  1939. if (bbox.maxY > maxY) {
  1940. maxY = bbox.maxY;
  1941. }
  1942. }
  1943. lineWidth = lineWidth / 2 || 0;
  1944. return {
  1945. minX: minX - lineWidth,
  1946. minY: minY - lineWidth,
  1947. maxX: maxX + lineWidth,
  1948. maxY: maxY + lineWidth
  1949. };
  1950. }
  1951. };
  1952. /***/ }),
  1953. /* 22 */
  1954. /***/ (function(module, exports) {
  1955. function _assertThisInitialized(self) {
  1956. if (self === void 0) {
  1957. throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  1958. }
  1959. return self;
  1960. }
  1961. module.exports = _assertThisInitialized;
  1962. /***/ }),
  1963. /* 23 */,
  1964. /* 24 */
  1965. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1966. "use strict";
  1967. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(40);
  1968. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_type__ = __webpack_require__(11);
  1969. var isPlainObject = function (value) {
  1970. /**
  1971. * isObjectLike(new Foo) => false
  1972. * isObjectLike([1, 2, 3]) => false
  1973. * isObjectLike({ x: 0, y: 0 }) => true
  1974. * isObjectLike(Object.create(null)) => true
  1975. */
  1976. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__["a" /* default */])(value) || !Object(__WEBPACK_IMPORTED_MODULE_1__is_type__["a" /* default */])(value, 'Object')) {
  1977. return false;
  1978. }
  1979. if (Object.getPrototypeOf(value) === null) {
  1980. return true;
  1981. }
  1982. var proto = value;
  1983. while (Object.getPrototypeOf(proto) !== null) {
  1984. proto = Object.getPrototypeOf(proto);
  1985. }
  1986. return Object.getPrototypeOf(value) === proto;
  1987. };
  1988. /* harmony default export */ __webpack_exports__["a"] = (isPlainObject);
  1989. /***/ }),
  1990. /* 25 */
  1991. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1992. "use strict";
  1993. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14);
  1994. /* harmony default export */ __webpack_exports__["a"] = (function (value) {
  1995. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(value)) return '';
  1996. return value.toString();
  1997. });
  1998. /***/ }),
  1999. /* 26 */
  2000. /***/ (function(module, exports, __webpack_require__) {
  2001. var mix = __webpack_require__(64);
  2002. var each = __webpack_require__(15);
  2003. var isObject = __webpack_require__(44);
  2004. var isNil = __webpack_require__(35);
  2005. var Scale = /*#__PURE__*/function () {
  2006. var _proto = Scale.prototype;
  2007. _proto._initDefaultCfg = function _initDefaultCfg() {
  2008. this.type = 'base';
  2009. /**
  2010. * 格式化函数,输出文本或者tick时的格式化函数
  2011. * @type {Function}
  2012. */
  2013. this.formatter = null;
  2014. /**
  2015. * 输出的值域
  2016. * @type {Array}
  2017. */
  2018. this.range = [0, 1];
  2019. /**
  2020. * 度量的标记
  2021. * @type {Array}
  2022. */
  2023. this.ticks = null;
  2024. /**
  2025. * 参与度量计算的值,可选项
  2026. * @type {Array}
  2027. */
  2028. this.values = [];
  2029. };
  2030. function Scale(cfg) {
  2031. this._initDefaultCfg();
  2032. mix(this, cfg);
  2033. this.init();
  2034. }
  2035. /**
  2036. * 度量初始化
  2037. * @protected
  2038. */
  2039. _proto.init = function init() {}
  2040. /**
  2041. * 获取该度量的ticks,返回的是多个对象,
  2042. * - text: tick 的文本
  2043. * - value: 对应的度量转换后的值
  2044. * <code>
  2045. * [
  2046. * {text: 0,value:0}
  2047. * {text: 1,value:0.2}
  2048. * {text: 2,value:0.4}
  2049. * {text: 3,value:0.6}
  2050. * {text: 4,value:0.8}
  2051. * {text: 5,value:1}
  2052. * ]
  2053. * </code>
  2054. * @param {Number} count 输出tick的个数的近似值,默认是 10
  2055. * @return {Array} 返回 ticks 数组
  2056. */
  2057. ;
  2058. _proto.getTicks = function getTicks() {
  2059. var self = this;
  2060. var ticks = self.ticks;
  2061. var rst = [];
  2062. each(ticks, function (tick) {
  2063. var obj;
  2064. if (isObject(tick)) {
  2065. obj = tick;
  2066. } else {
  2067. obj = {
  2068. text: self.getText(tick),
  2069. tickValue: tick,
  2070. value: self.scale(tick)
  2071. };
  2072. }
  2073. rst.push(obj);
  2074. });
  2075. return rst;
  2076. }
  2077. /**
  2078. * 获取格式化后的文本
  2079. * @param {*} value 输入的数据
  2080. * @param {*} key 字段的 key
  2081. * @return {String} 格式化的文本
  2082. */
  2083. ;
  2084. _proto.getText = function getText(value, key) {
  2085. var formatter = this.formatter;
  2086. value = formatter ? formatter(value, key) : value;
  2087. if (isNil(value) || !value.toString) {
  2088. value = '';
  2089. }
  2090. return value.toString();
  2091. }
  2092. /**
  2093. * 输出的值域最小值
  2094. * @protected
  2095. * @return {Number} 返回最小的值
  2096. */
  2097. ;
  2098. _proto.rangeMin = function rangeMin() {
  2099. return this.range[0];
  2100. }
  2101. /**
  2102. * 输出的值域最大值
  2103. * @protected
  2104. * @return {Number} 返回最大的值
  2105. */
  2106. ;
  2107. _proto.rangeMax = function rangeMax() {
  2108. var range = this.range;
  2109. return range[range.length - 1];
  2110. }
  2111. /**
  2112. * 度量转换后的结果,翻转回输入域
  2113. * @param {Number} value 需要翻转的数值
  2114. * @return {*} 度量的输入值
  2115. */
  2116. ;
  2117. _proto.invert = function invert(value) {
  2118. return value;
  2119. }
  2120. /**
  2121. * 将传入的值从非数值转换成数值格式,如分类字符串、时间字符串等
  2122. * @param {*} value 传入的值
  2123. * @return {Number} 转换的值
  2124. */
  2125. ;
  2126. _proto.translate = function translate(value) {
  2127. return value;
  2128. }
  2129. /**
  2130. * 进行度量转换
  2131. * @param {*} value 输入值
  2132. * @return {Number} 输出值,在设定的输出值域之间,默认[0,1]
  2133. */
  2134. ;
  2135. _proto.scale = function scale(value) {
  2136. return value;
  2137. }
  2138. /**
  2139. * 克隆一个新的scale,拥有跟当前scale相同的输入域、输出域等
  2140. * @return {Scale} 克隆的度量
  2141. */
  2142. ;
  2143. _proto.clone = function clone() {
  2144. var self = this;
  2145. var constr = self.constructor;
  2146. var cfg = {};
  2147. each(self, function (v, k) {
  2148. cfg[k] = self[k];
  2149. });
  2150. return new constr(cfg);
  2151. }
  2152. /**
  2153. * 更改度量的属性信息
  2154. * @param {Object} info 属性信息
  2155. * @chainable
  2156. * @return {Scale} 返回自身的引用
  2157. */
  2158. ;
  2159. _proto.change = function change(info) {
  2160. this.ticks = null;
  2161. mix(this, info);
  2162. this.init();
  2163. return this;
  2164. };
  2165. return Scale;
  2166. }();
  2167. module.exports = Scale;
  2168. /***/ }),
  2169. /* 27 */
  2170. /***/ (function(module, exports) {
  2171. var toString = {}.toString;
  2172. var isType = function isType(value, type) {
  2173. return toString.call(value) === '[object ' + type + ']';
  2174. };
  2175. module.exports = isType;
  2176. /***/ }),
  2177. /* 28 */
  2178. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2179. "use strict";
  2180. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7);
  2181. var contains = function (arr, value) {
  2182. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(arr)) {
  2183. return false;
  2184. }
  2185. return arr.indexOf(value) > -1;
  2186. };
  2187. /* harmony default export */ __webpack_exports__["a"] = (contains);
  2188. /***/ }),
  2189. /* 29 */
  2190. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2191. "use strict";
  2192. /* harmony default export */ __webpack_exports__["a"] = (function (value) {
  2193. /**
  2194. * isObject({}) => true
  2195. * isObject([1, 2, 3]) => true
  2196. * isObject(Function) => true
  2197. * isObject(null) => false
  2198. */
  2199. var type = typeof value;
  2200. return value !== null && type === 'object' || type === 'function';
  2201. });
  2202. /***/ }),
  2203. /* 30 */
  2204. /***/ (function(module, exports, __webpack_require__) {
  2205. "use strict";
  2206. var _interopRequireDefault = __webpack_require__(1);
  2207. var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(22));
  2208. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  2209. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  2210. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  2211. var _const = __webpack_require__(47);
  2212. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  2213. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  2214. var Base = __webpack_require__(63);
  2215. var Plot = __webpack_require__(158);
  2216. var Util = __webpack_require__(0);
  2217. var Coord = __webpack_require__(159);
  2218. var Geom = __webpack_require__(17);
  2219. var ScaleController = __webpack_require__(167);
  2220. var AxisController = __webpack_require__(173);
  2221. var Global = __webpack_require__(6);
  2222. var _require = __webpack_require__(16),
  2223. Canvas = _require.Canvas;
  2224. var Helper = __webpack_require__(37);
  2225. function compare(a, b) {
  2226. return a - b;
  2227. }
  2228. function _isScaleExist(scales, compareScale) {
  2229. var flag = false;
  2230. Util.each(scales, function (scale) {
  2231. var scaleValues = [].concat(scale.values);
  2232. var compareScaleValues = [].concat(compareScale.values);
  2233. if (scale.type === compareScale.type && scale.field === compareScale.field && scaleValues.sort(compare).toString() === compareScaleValues.sort(compare).toString()) {
  2234. flag = true;
  2235. return;
  2236. }
  2237. });
  2238. return flag;
  2239. }
  2240. var Chart = /*#__PURE__*/function (_Base) {
  2241. (0, _inheritsLoose2["default"])(Chart, _Base);
  2242. var _super = _createSuper(Chart);
  2243. Chart.initPlugins = function initPlugins() {
  2244. return {
  2245. _plugins: [],
  2246. _cacheId: 0,
  2247. register: function register(plugins) {
  2248. var p = this._plugins;
  2249. [].concat(plugins).forEach(function (plugin) {
  2250. if (p.indexOf(plugin) === -1) {
  2251. p.push(plugin);
  2252. }
  2253. });
  2254. this._cacheId++;
  2255. },
  2256. unregister: function unregister(plugins) {
  2257. var p = this._plugins;
  2258. [].concat(plugins).forEach(function (plugin) {
  2259. var idx = p.indexOf(plugin);
  2260. if (idx !== -1) {
  2261. p.splice(idx, 1);
  2262. }
  2263. });
  2264. this._cacheId++;
  2265. },
  2266. clear: function clear() {
  2267. this._plugins = [];
  2268. this._cacheId++;
  2269. },
  2270. count: function count() {
  2271. return this._plugins.length;
  2272. },
  2273. getAll: function getAll() {
  2274. return this._plugins;
  2275. },
  2276. notify: function notify(chart, hook, args) {
  2277. var descriptors = this.descriptors(chart);
  2278. var ilen = descriptors.length;
  2279. var i;
  2280. var descriptor;
  2281. var plugin;
  2282. var params;
  2283. var method;
  2284. for (i = 0; i < ilen; ++i) {
  2285. descriptor = descriptors[i];
  2286. plugin = descriptor.plugin;
  2287. method = plugin[hook];
  2288. if (typeof method === 'function') {
  2289. params = [chart].concat(args || []);
  2290. if (method.apply(plugin, params) === false) {
  2291. return false;
  2292. }
  2293. }
  2294. }
  2295. return true;
  2296. },
  2297. descriptors: function descriptors(chart) {
  2298. var cache = chart._plugins || (chart._plugins = {});
  2299. if (cache.id === this._cacheId) {
  2300. return cache.descriptors;
  2301. }
  2302. var plugins = [];
  2303. var descriptors = [];
  2304. this._plugins.concat(chart && chart.get('plugins') || []).forEach(function (plugin) {
  2305. var idx = plugins.indexOf(plugin);
  2306. if (idx !== -1) {
  2307. return;
  2308. }
  2309. plugins.push(plugin);
  2310. descriptors.push({
  2311. plugin: plugin
  2312. });
  2313. });
  2314. cache.descriptors = descriptors;
  2315. cache.id = this._cacheId;
  2316. return descriptors;
  2317. }
  2318. };
  2319. };
  2320. var _proto = Chart.prototype;
  2321. _proto.getDefaultCfg = function getDefaultCfg() {
  2322. return {
  2323. /**
  2324. * the id of canvas
  2325. * @type {String}
  2326. */
  2327. id: null,
  2328. rendered: false,
  2329. /**
  2330. * padding
  2331. * @type {Array|Number}
  2332. */
  2333. padding: Global.padding,
  2334. /**
  2335. * data
  2336. * @type {Array}
  2337. */
  2338. data: null,
  2339. /**
  2340. * scales of chart
  2341. * @type {Object}
  2342. */
  2343. scales: {},
  2344. /**
  2345. * @private
  2346. * geometry instances
  2347. * @type {Array}
  2348. */
  2349. geoms: [],
  2350. /**
  2351. * scale configuration
  2352. * @type {Object}
  2353. */
  2354. colDefs: null,
  2355. pixelRatio: Global.pixelRatio,
  2356. /**
  2357. * filter options
  2358. * @type {Object}
  2359. */
  2360. filters: null,
  2361. appendPadding: Global.appendPadding
  2362. };
  2363. };
  2364. _proto._syncYScales = function _syncYScales() {
  2365. var syncY = this.get('syncY');
  2366. if (!syncY) {
  2367. return;
  2368. }
  2369. var geoms = this.get('geoms');
  2370. var syncScales = [];
  2371. var min = [];
  2372. var max = [];
  2373. Util.each(geoms, function (geom) {
  2374. var yScale = geom.getYScale();
  2375. if (yScale.isLinear) {
  2376. syncScales.push(yScale);
  2377. min.push(yScale.min);
  2378. max.push(yScale.max);
  2379. }
  2380. });
  2381. min = Math.min.apply(null, min);
  2382. max = Math.max.apply(null, max);
  2383. Util.each(syncScales, function (scale) {
  2384. scale.change({
  2385. min: min
  2386. });
  2387. scale.change({
  2388. max: max
  2389. });
  2390. });
  2391. };
  2392. _proto._getFieldsForLegend = function _getFieldsForLegend() {
  2393. var fields = [];
  2394. var geoms = this.get('geoms');
  2395. Util.each(geoms, function (geom) {
  2396. var attrOptions = geom.get('attrOptions');
  2397. var attrCfg = attrOptions.color;
  2398. if (attrCfg && attrCfg.field && Util.isString(attrCfg.field)) {
  2399. var arr = attrCfg.field.split('*');
  2400. Util.each(arr, function (item) {
  2401. if (fields.indexOf(item) === -1) {
  2402. fields.push(item);
  2403. }
  2404. });
  2405. }
  2406. });
  2407. return fields;
  2408. };
  2409. _proto._getScaleData = function _getScaleData(field) {
  2410. var data = this.get('data');
  2411. var filteredData = this.get('filteredData');
  2412. if (filteredData.length) {
  2413. var legendFields = this._getFieldsForLegend();
  2414. if (legendFields.indexOf(field) === -1) {
  2415. data = filteredData;
  2416. }
  2417. }
  2418. return data;
  2419. } // _updateScales() {
  2420. // const scaleController = this.get('scaleController');
  2421. // scaleController.updateScales();
  2422. // this._adjustScale();
  2423. // }
  2424. ;
  2425. _proto._adjustScale = function _adjustScale() {
  2426. var self = this;
  2427. var scaleController = self.get('scaleController'); // 看起来是为了让柱状图最小或最大都默认从0开始
  2428. var geoms = this.get('geoms');
  2429. for (var i = 0; i < geoms.length; i++) {
  2430. var geom = geoms[i];
  2431. if (geom.get('type') === 'interval') {
  2432. var yScale = geom.getYScale();
  2433. scaleController.adjustStartZero(yScale);
  2434. }
  2435. }
  2436. };
  2437. _proto._removeGeoms = function _removeGeoms() {
  2438. var geoms = this.get('geoms');
  2439. while (geoms.length > 0) {
  2440. var geom = geoms.shift();
  2441. geom.destroy();
  2442. }
  2443. };
  2444. _proto._clearGeoms = function _clearGeoms() {
  2445. var geoms = this.get('geoms');
  2446. for (var i = 0, length = geoms.length; i < length; i++) {
  2447. var geom = geoms[i];
  2448. geom.clear();
  2449. }
  2450. };
  2451. _proto._clearInner = function _clearInner() {
  2452. this._clearGeoms();
  2453. Chart.plugins.notify(this, 'clearInner');
  2454. this.get('axisController') && this.get('axisController').clear();
  2455. };
  2456. _proto._initFilteredData = function _initFilteredData() {
  2457. var filters = this.get('filters');
  2458. var data = this.get('data') || [];
  2459. if (filters) {
  2460. data = data.filter(function (obj) {
  2461. var rst = true;
  2462. Util.each(filters, function (fn, k) {
  2463. if (fn) {
  2464. rst = fn(obj[k], obj);
  2465. if (!rst) {
  2466. return false;
  2467. }
  2468. }
  2469. });
  2470. return rst;
  2471. });
  2472. }
  2473. this.set('filteredData', data);
  2474. };
  2475. _proto._changeGeomsData = function _changeGeomsData() {
  2476. var geoms = this.get('geoms');
  2477. var data = this.get('filteredData');
  2478. for (var i = 0, length = geoms.length; i < length; i++) {
  2479. var geom = geoms[i];
  2480. geom.changeData(data);
  2481. }
  2482. };
  2483. _proto._initGeom = function _initGeom(geom) {
  2484. var coord = this.get('coord');
  2485. var data = this.get('filteredData');
  2486. var colDefs = this.get('colDefs');
  2487. var middlePlot = this.get('middlePlot');
  2488. geom.set('chart', this);
  2489. geom.set('container', middlePlot.addGroup());
  2490. geom.set('data', data);
  2491. geom.set('coord', coord);
  2492. geom.set('colDefs', colDefs);
  2493. geom.init();
  2494. this.emit(_const.EVENT_AFTER_GEOM_INIT, geom);
  2495. };
  2496. _proto._initGeoms = function _initGeoms() {
  2497. var geoms = this.get('geoms');
  2498. for (var i = 0, length = geoms.length; i < length; i++) {
  2499. this._initGeom(geoms[i]);
  2500. }
  2501. };
  2502. _proto._initCoord = function _initCoord() {
  2503. var plot = this.get('plotRange');
  2504. var coordCfg = Util.mix({
  2505. type: 'cartesian'
  2506. }, this.get('coordCfg'), {
  2507. plot: plot
  2508. });
  2509. var type = coordCfg.type;
  2510. var C = Coord[Util.upperFirst(type)];
  2511. var coord = new C(coordCfg);
  2512. this.set('coord', coord);
  2513. };
  2514. _proto._initLayout = function _initLayout() {
  2515. var padding = this.get('_padding');
  2516. if (!padding) {
  2517. padding = this.get('margin') || this.get('padding');
  2518. padding = Util.parsePadding(padding);
  2519. }
  2520. var top = padding[0] === 'auto' ? 0 : padding[0];
  2521. var right = padding[1] === 'auto' ? 0 : padding[1];
  2522. var bottom = padding[2] === 'auto' ? 0 : padding[2];
  2523. var left = padding[3] === 'auto' ? 0 : padding[3];
  2524. var width = this.get('width');
  2525. var height = this.get('height');
  2526. var start = {
  2527. x: left,
  2528. y: top
  2529. };
  2530. var end = {
  2531. x: width - right,
  2532. y: height - bottom
  2533. };
  2534. var plot = this.get('plot');
  2535. if (plot) {
  2536. plot.reset(start, end);
  2537. return;
  2538. }
  2539. var newPlot = new Plot({
  2540. start: start,
  2541. end: end
  2542. });
  2543. this.set('plotRange', newPlot);
  2544. this.set('plot', newPlot);
  2545. };
  2546. _proto._initCanvas = function _initCanvas() {
  2547. var self = this;
  2548. try {
  2549. var canvas = new Canvas({
  2550. el: self.get('el') || self.get('id'),
  2551. context: self.get('context'),
  2552. pixelRatio: self.get('pixelRatio'),
  2553. width: self.get('width'),
  2554. height: self.get('height'),
  2555. fontFamily: Global.fontFamily
  2556. });
  2557. self.set('canvas', canvas);
  2558. self.set('el', canvas.get('el'));
  2559. self.set('width', canvas.get('width'));
  2560. self.set('height', canvas.get('height'));
  2561. } catch (error) {
  2562. throw error;
  2563. }
  2564. Chart.plugins.notify(self, 'afterCanvasInit');
  2565. };
  2566. _proto._initLayers = function _initLayers() {
  2567. var canvas = this.get('canvas');
  2568. this.set('backPlot', canvas.addGroup());
  2569. this.set('middlePlot', canvas.addGroup({
  2570. zIndex: 10
  2571. }));
  2572. this.set('frontPlot', canvas.addGroup({
  2573. zIndex: 20
  2574. }));
  2575. };
  2576. _proto._initEvents = function _initEvents() {
  2577. var _this2 = this;
  2578. // 数据更新后的一些更新
  2579. this.on(_const.EVENT_AFTER_DATA_CHANGE, function () {
  2580. // 数据更新后,重新设置filterdata
  2581. _this2._initFilteredData(); // 更新geoms里的数据
  2582. _this2._changeGeomsData();
  2583. _this2._adjustScale();
  2584. }); // 大小变化后的一些更新
  2585. this.on(_const.EVENT_AFTER_SIZE_CHANGE, function () {
  2586. _this2._initLayout(); // layout变化后,坐标轴也需要做相应的变化
  2587. var coord = _this2.get('coord');
  2588. if (coord) {
  2589. coord.reset(_this2.get('plot'));
  2590. }
  2591. });
  2592. };
  2593. _proto._initScaleController = function _initScaleController() {
  2594. var scaleController = new ScaleController({
  2595. chart: this
  2596. }); // 让colDefs 和 scaleController.defs 用同一个对象,这样就不用考虑同步的问题
  2597. this.set('colDefs', scaleController.defs); // 已经实例化的scales 也保持统一个对象
  2598. this.set('scales', scaleController.scales);
  2599. this.set('scaleController', scaleController);
  2600. };
  2601. _proto._clearScaleController = function _clearScaleController() {
  2602. var scaleController = this.get('scaleController');
  2603. scaleController.clear();
  2604. };
  2605. _proto._init = function _init() {
  2606. var self = this;
  2607. self._initCanvas();
  2608. self._initLayout();
  2609. self._initLayers();
  2610. self._initEvents();
  2611. self._initScaleController();
  2612. self.set('axisController', new AxisController({
  2613. frontPlot: self.get('frontPlot').addGroup({
  2614. className: 'axisContainer'
  2615. }),
  2616. backPlot: self.get('backPlot').addGroup({
  2617. className: 'axisContainer'
  2618. }),
  2619. chart: self
  2620. }));
  2621. Chart.plugins.notify(self, 'init');
  2622. };
  2623. function Chart(cfg) {
  2624. var _this;
  2625. _this = _Base.call(this, cfg) || this;
  2626. var self = (0, _assertThisInitialized2["default"])(_this);
  2627. Util.each(Geom, function (geomConstructor, className) {
  2628. var methodName = Util.lowerFirst(className);
  2629. self[methodName] = function (cfg) {
  2630. var geom = new geomConstructor(cfg);
  2631. self.addGeom(geom);
  2632. return geom;
  2633. };
  2634. });
  2635. self._init();
  2636. return _this;
  2637. }
  2638. _proto.init = function init() {
  2639. // 初始filterData
  2640. this._initFilteredData(); // initialization coordinate instance
  2641. this._initCoord();
  2642. Chart.plugins.notify(this, 'beforeGeomInit'); // init all geometry instances
  2643. this._initGeoms(); // 多 Y 轴的情况时,统一 Y 轴的数值范围。
  2644. this._syncYScales(); // do some adjust for data
  2645. this._adjustScale();
  2646. this.emit(_const.EVENT_AFTER_INIT);
  2647. }
  2648. /**
  2649. * set data and some scale configuration
  2650. * @chainable
  2651. * @param {Array} data the dataset to visualize
  2652. * @param {Object} colDefs the configuration for scales
  2653. * @return {Chart} return the chart instance
  2654. */
  2655. ;
  2656. _proto.source = function source(data, colDefs) {
  2657. this.set('data', data);
  2658. if (colDefs) {
  2659. this.scale(colDefs);
  2660. }
  2661. return this;
  2662. };
  2663. _proto.scale = function scale(field, cfg) {
  2664. var scaleController = this.get('scaleController');
  2665. scaleController.setFieldDef(field, cfg);
  2666. return this;
  2667. }
  2668. /**
  2669. * configure the axis
  2670. * @chainable
  2671. * @param {String|Boolean} field the field name of data
  2672. * @param {Object} cfg configuration for axis
  2673. * @return {Chart} return the chart instance
  2674. */
  2675. ;
  2676. _proto.axis = function axis(field, cfg) {
  2677. var axisController = this.get('axisController');
  2678. if (!field) {
  2679. axisController.axisCfg = null;
  2680. } else {
  2681. axisController.axisCfg = axisController.axisCfg || {};
  2682. axisController.axisCfg[field] = cfg;
  2683. }
  2684. return this;
  2685. }
  2686. /**
  2687. * configure the coordinate
  2688. * @chainable
  2689. * @param {String} type set the type of coodinate
  2690. * @param {Object} cfg configuration for coordinate
  2691. * @return {Chart} return the chart instance
  2692. */
  2693. ;
  2694. _proto.coord = function coord(type, cfg) {
  2695. var coordCfg;
  2696. if (Util.isObject(type)) {
  2697. coordCfg = type;
  2698. } else {
  2699. coordCfg = cfg || {};
  2700. coordCfg.type = type || 'cartesian';
  2701. }
  2702. this.set('coordCfg', coordCfg);
  2703. return this;
  2704. };
  2705. _proto.filter = function filter(field, condition) {
  2706. var filters = this.get('filters') || {};
  2707. filters[field] = condition;
  2708. this.set('filters', filters); // 如果已经render过,则再重新触发一次change
  2709. if (this.get('rendered')) {
  2710. this.emit(_const.EVENT_AFTER_DATA_CHANGE, this.get('data'));
  2711. }
  2712. }
  2713. /**
  2714. * render the chart
  2715. * @chainable
  2716. * @return {Chart} return the chart instance
  2717. */
  2718. ;
  2719. _proto.render = function render() {
  2720. var rendered = this.get('rendered');
  2721. var canvas = this.get('canvas');
  2722. var geoms = this.get('geoms');
  2723. if (!rendered) {
  2724. this.init();
  2725. this.set('rendered', true);
  2726. }
  2727. this.emit(_const.EVENT_BEFORE_RENDER);
  2728. Chart.plugins.notify(this, 'beforeGeomDraw');
  2729. this._renderAxis();
  2730. var middlePlot = this.get('middlePlot');
  2731. if (this.get('limitInPlot') && !middlePlot.attr('clip')) {
  2732. var coord = this.get('coord');
  2733. var clip = Helper.getClip(coord);
  2734. clip.set('canvas', middlePlot.get('canvas'));
  2735. middlePlot.attr('clip', clip);
  2736. }
  2737. for (var i = 0, length = geoms.length; i < length; i++) {
  2738. var geom = geoms[i];
  2739. geom.paint();
  2740. }
  2741. Chart.plugins.notify(this, 'afterGeomDraw');
  2742. canvas.sort();
  2743. this.get('frontPlot').sort();
  2744. Chart.plugins.notify(this, 'beforeCanvasDraw');
  2745. canvas.draw();
  2746. this.emit(_const.EVENT_AFTER_RENDER);
  2747. return this;
  2748. }
  2749. /**
  2750. * clear the chart, include geometris and all the shapes
  2751. * @chainable
  2752. * @return {Chart} return the chart
  2753. */
  2754. ;
  2755. _proto.clear = function clear() {
  2756. Chart.plugins.notify(this, 'clear');
  2757. this._clearInner();
  2758. this._removeGeoms();
  2759. this._clearScaleController();
  2760. this.set('legendItems', null);
  2761. this.set('filters', null);
  2762. this.set('isUpdate', false);
  2763. this.set('_padding', null);
  2764. this.set('rendered', false);
  2765. var canvas = this.get('canvas');
  2766. canvas.draw();
  2767. return this;
  2768. };
  2769. _proto.repaint = function repaint() {
  2770. // 如果在没有render之前就repaint的,就直接return退出
  2771. var rendered = this.get('rendered');
  2772. if (!rendered) {
  2773. return;
  2774. }
  2775. this.set('isUpdate', true);
  2776. this.set('legendItems', null);
  2777. Chart.plugins.notify(this, 'repaint');
  2778. this._clearInner();
  2779. this.render();
  2780. };
  2781. _proto.changeData = function changeData(data) {
  2782. this.emit(_const.EVENT_BEFORE_DATA_CHANGE, data);
  2783. this.set('data', data);
  2784. Chart.plugins.notify(this, 'changeData');
  2785. this.emit(_const.EVENT_AFTER_DATA_CHANGE, data);
  2786. this.set('_padding', null);
  2787. this.repaint();
  2788. };
  2789. _proto.changeSize = function changeSize(width, height) {
  2790. if (width) {
  2791. this.set('width', width);
  2792. } else {
  2793. width = this.get('width');
  2794. }
  2795. if (height) {
  2796. this.set('height', height);
  2797. } else {
  2798. height = this.get('height');
  2799. }
  2800. var canvas = this.get('canvas');
  2801. canvas.changeSize(width, height);
  2802. this.emit(_const.EVENT_AFTER_SIZE_CHANGE, {
  2803. width: width,
  2804. height: height
  2805. });
  2806. this.repaint();
  2807. return this;
  2808. };
  2809. _proto.destroy = function destroy() {
  2810. this.clear();
  2811. var canvas = this.get('canvas');
  2812. canvas.destroy();
  2813. Chart.plugins.notify(this, 'afterCanvasDestroyed');
  2814. if (this._interactions) {
  2815. Util.each(this._interactions, function (interaction) {
  2816. interaction.destroy();
  2817. });
  2818. }
  2819. _Base.prototype.destroy.call(this);
  2820. }
  2821. /**
  2822. * calculate dataset's position on canvas
  2823. * @param {Object} record the dataset
  2824. * @return {Object} return the position
  2825. */
  2826. ;
  2827. _proto.getPosition = function getPosition(record) {
  2828. var self = this;
  2829. var coord = self.get('coord');
  2830. var xScale = self.getXScale();
  2831. var yScale = self.getYScales()[0];
  2832. var xField = xScale.field;
  2833. var x = xScale.scale(record[xField]);
  2834. var yField = yScale.field;
  2835. var y = yScale.scale(record[yField]);
  2836. return coord.convertPoint({
  2837. x: x,
  2838. y: y
  2839. });
  2840. }
  2841. /**
  2842. * get the data item of the point
  2843. * @param {Object} point canvas position
  2844. * @return {Object} return the data item
  2845. */
  2846. ;
  2847. _proto.getRecord = function getRecord(point) {
  2848. var self = this;
  2849. var coord = self.get('coord');
  2850. var xScale = self.getXScale();
  2851. var yScale = self.getYScales()[0];
  2852. var invertPoint = coord.invertPoint(point);
  2853. var record = {};
  2854. record[xScale.field] = xScale.invert(invertPoint.x);
  2855. record[yScale.field] = yScale.invert(invertPoint.y);
  2856. return record;
  2857. }
  2858. /**
  2859. * get the dataset of the point
  2860. * @param {Object} point canvas position
  2861. * @return {Array} return the dataset
  2862. **/
  2863. ;
  2864. _proto.getSnapRecords = function getSnapRecords(point) {
  2865. var geom = this.get('geoms')[0];
  2866. var data = [];
  2867. if (geom) {
  2868. // need to judge
  2869. data = geom.getSnapRecords(point);
  2870. }
  2871. return data;
  2872. }
  2873. /**
  2874. * creat scale instances
  2875. * @param {String} field field name of data
  2876. * @return {Scale} return the scale
  2877. */
  2878. ;
  2879. _proto.createScale = function createScale(field) {
  2880. var data = this._getScaleData(field);
  2881. var scaleController = this.get('scaleController');
  2882. return scaleController.createScale(field, data);
  2883. }
  2884. /**
  2885. * @protected
  2886. * add geometry instance to geoms
  2887. * @param {Geom} geom geometry instance
  2888. */
  2889. ;
  2890. _proto.addGeom = function addGeom(geom) {
  2891. var rendered = this.get('rendered');
  2892. var geoms = this.get('geoms');
  2893. geoms.push(geom); // 如果图表已经渲染过了,则直接初始化geom
  2894. if (rendered) {
  2895. this._initGeom(geom);
  2896. }
  2897. }
  2898. /**
  2899. * get the scale of x axis
  2900. * @return {Scale} return the scale
  2901. */
  2902. ;
  2903. _proto.getXScale = function getXScale() {
  2904. var self = this;
  2905. var geoms = self.get('geoms');
  2906. var xScale = geoms[0].getXScale();
  2907. return xScale;
  2908. }
  2909. /**
  2910. * get the scale of y axis
  2911. * @return {Array} return the scale
  2912. */
  2913. ;
  2914. _proto.getYScales = function getYScales() {
  2915. var geoms = this.get('geoms');
  2916. var rst = [];
  2917. Util.each(geoms, function (geom) {
  2918. var yScale = geom.getYScale();
  2919. if (rst.indexOf(yScale) === -1) {
  2920. rst.push(yScale);
  2921. }
  2922. });
  2923. return rst;
  2924. };
  2925. _proto.getLegendItems = function getLegendItems() {
  2926. if (this.get('legendItems')) {
  2927. return this.get('legendItems');
  2928. }
  2929. var legendItems = {};
  2930. var scales = [];
  2931. var geoms = this.get('geoms');
  2932. Util.each(geoms, function (geom) {
  2933. var colorAttr = geom.getAttr('color');
  2934. if (colorAttr) {
  2935. var scale = colorAttr.getScale('color'); // 只支持分类图例
  2936. if (scale.isCategory && !_isScaleExist(scales, scale)) {
  2937. scales.push(scale);
  2938. var field = scale.field;
  2939. var ticks = scale.getTicks();
  2940. var items = [];
  2941. Util.each(ticks, function (tick) {
  2942. var text = tick.text;
  2943. var name = text;
  2944. var scaleValue = tick.value;
  2945. var value = scale.invert(scaleValue);
  2946. var color = colorAttr.mapping(value).join('') || Global.defaultColor;
  2947. var marker = {
  2948. fill: color,
  2949. radius: 3,
  2950. symbol: 'circle',
  2951. stroke: '#fff'
  2952. };
  2953. items.push({
  2954. name: name,
  2955. // for display
  2956. dataValue: value,
  2957. // the origin value
  2958. checked: true,
  2959. marker: marker
  2960. });
  2961. });
  2962. legendItems[field] = items;
  2963. }
  2964. }
  2965. });
  2966. this.set('legendItems', legendItems);
  2967. return legendItems;
  2968. } // register the plugins
  2969. ;
  2970. _proto.registerPlugins = function registerPlugins(plugins) {
  2971. var self = this;
  2972. var chartPlugins = self.get('plugins') || [];
  2973. if (!Util.isArray(chartPlugins)) {
  2974. chartPlugins = [chartPlugins];
  2975. }
  2976. [].concat(plugins).forEach(function (plugin) {
  2977. if (chartPlugins.indexOf(plugin) === -1) {
  2978. plugin.init && plugin.init(self); // init
  2979. chartPlugins.push(plugin);
  2980. }
  2981. });
  2982. Chart.plugins._cacheId++;
  2983. self.set('plugins', chartPlugins);
  2984. };
  2985. _proto._renderAxis = function _renderAxis() {
  2986. var axisController = this.get('axisController');
  2987. var xScale = this.getXScale();
  2988. var yScales = this.getYScales();
  2989. var coord = this.get('coord');
  2990. Chart.plugins.notify(this, 'beforeRenderAxis');
  2991. axisController.createAxis(coord, xScale, yScales);
  2992. };
  2993. _proto._isAutoPadding = function _isAutoPadding() {
  2994. if (this.get('_padding')) {
  2995. return false;
  2996. }
  2997. var padding = this.get('padding');
  2998. if (Util.isArray(padding)) {
  2999. return padding.indexOf('auto') !== -1;
  3000. }
  3001. return padding === 'auto';
  3002. };
  3003. _proto._updateLayout = function _updateLayout(padding) {
  3004. var width = this.get('width');
  3005. var height = this.get('height');
  3006. var start = {
  3007. x: padding[3],
  3008. y: padding[0]
  3009. };
  3010. var end = {
  3011. x: width - padding[1],
  3012. y: height - padding[2]
  3013. };
  3014. var plot = this.get('plot');
  3015. var coord = this.get('coord');
  3016. plot.reset(start, end);
  3017. coord.reset(plot);
  3018. };
  3019. return Chart;
  3020. }(Base);
  3021. Chart.plugins = Chart.initPlugins();
  3022. module.exports = Chart;
  3023. /***/ }),
  3024. /* 31 */
  3025. /***/ (function(module, exports, __webpack_require__) {
  3026. "use strict";
  3027. var Matrix = {
  3028. multiply: function multiply(m1, m2) {
  3029. var m11 = m1[0] * m2[0] + m1[2] * m2[1];
  3030. var m12 = m1[1] * m2[0] + m1[3] * m2[1];
  3031. var m21 = m1[0] * m2[2] + m1[2] * m2[3];
  3032. var m22 = m1[1] * m2[2] + m1[3] * m2[3];
  3033. var dx = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];
  3034. var dy = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];
  3035. return [m11, m12, m21, m22, dx, dy];
  3036. },
  3037. scale: function scale(out, m, v) {
  3038. out[0] = m[0] * v[0];
  3039. out[1] = m[1] * v[0];
  3040. out[2] = m[2] * v[1];
  3041. out[3] = m[3] * v[1];
  3042. out[4] = m[4];
  3043. out[5] = m[5];
  3044. return out;
  3045. },
  3046. rotate: function rotate(out, m, radian) {
  3047. var c = Math.cos(radian);
  3048. var s = Math.sin(radian);
  3049. var m11 = m[0] * c + m[2] * s;
  3050. var m12 = m[1] * c + m[3] * s;
  3051. var m21 = m[0] * -s + m[2] * c;
  3052. var m22 = m[1] * -s + m[3] * c;
  3053. out[0] = m11;
  3054. out[1] = m12;
  3055. out[2] = m21;
  3056. out[3] = m22;
  3057. out[4] = m[4];
  3058. out[5] = m[5];
  3059. return out;
  3060. },
  3061. translate: function translate(out, m, v) {
  3062. out[0] = m[0];
  3063. out[1] = m[1];
  3064. out[2] = m[2];
  3065. out[3] = m[3];
  3066. out[4] = m[4] + m[0] * v[0] + m[2] * v[1];
  3067. out[5] = m[5] + m[1] * v[0] + m[3] * v[1];
  3068. return out;
  3069. },
  3070. transform: function transform(m, actions) {
  3071. var out = [].concat(m);
  3072. for (var i = 0, len = actions.length; i < len; i++) {
  3073. var action = actions[i];
  3074. switch (action[0]) {
  3075. case 't':
  3076. Matrix.translate(out, out, [action[1], action[2]]);
  3077. break;
  3078. case 's':
  3079. Matrix.scale(out, out, [action[1], action[2]]);
  3080. break;
  3081. case 'r':
  3082. Matrix.rotate(out, out, action[1]);
  3083. break;
  3084. default:
  3085. break;
  3086. }
  3087. }
  3088. return out;
  3089. }
  3090. };
  3091. module.exports = Matrix;
  3092. /***/ }),
  3093. /* 32 */
  3094. /***/ (function(module, exports, __webpack_require__) {
  3095. "use strict";
  3096. exports.__esModule = true;
  3097. exports["default"] = void 0;
  3098. var _util = __webpack_require__(20);
  3099. /**
  3100. * @fileOverview the Attribute base class
  3101. */
  3102. function toScaleString(scale, value) {
  3103. if ((0, _util.isString)(value)) {
  3104. return value;
  3105. }
  3106. return scale.invert(scale.scale(value));
  3107. }
  3108. /**
  3109. * 所有视觉通道属性的基类
  3110. * @class Attr
  3111. */
  3112. var AttributeBase = /*#__PURE__*/function () {
  3113. function AttributeBase(cfg) {
  3114. var _this = this;
  3115. /**
  3116. * 属性的类型
  3117. * @type {String}
  3118. */
  3119. this.type = 'base';
  3120. /**
  3121. * 属性的名称
  3122. * @type {String}
  3123. */
  3124. this.name = null;
  3125. /**
  3126. * 回调函数
  3127. * @type {Function}
  3128. */
  3129. this.method = null;
  3130. /**
  3131. * 备选的值数组
  3132. * @type {Array}
  3133. */
  3134. this.values = [];
  3135. /**
  3136. * 属性内部的度量
  3137. * @type {Array}
  3138. */
  3139. this.scales = [];
  3140. /**
  3141. * 是否通过线性取值, 如果未指定,则根据数值的类型判定
  3142. * @type {Boolean}
  3143. */
  3144. this.linear = null;
  3145. /**
  3146. * 当用户设置的 callback 返回 null 时, 应该返回默认 callback 中的值
  3147. */
  3148. var mixedCallback = null;
  3149. var defaultCallback = this.callback;
  3150. if (cfg.callback) {
  3151. var userCallback = cfg.callback;
  3152. mixedCallback = function mixedCallback() {
  3153. for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
  3154. params[_key] = arguments[_key];
  3155. }
  3156. var ret = userCallback.apply(void 0, params);
  3157. if ((0, _util.isNil)(ret)) {
  3158. ret = defaultCallback.apply(_this, params);
  3159. }
  3160. return ret;
  3161. };
  3162. }
  3163. (0, _util.mix)(this, cfg);
  3164. if (mixedCallback) {
  3165. (0, _util.mix)(this, {
  3166. callback: mixedCallback
  3167. });
  3168. }
  3169. } // 获取属性值,将值映射到视觉通道
  3170. var _proto = AttributeBase.prototype;
  3171. _proto._getAttrValue = function _getAttrValue(scale, value) {
  3172. var values = this.values;
  3173. if (scale.isCategory && !this.linear) {
  3174. var index = scale.translate(value);
  3175. return values[index % values.length];
  3176. }
  3177. var percent = scale.scale(value);
  3178. return this.getLinearValue(percent);
  3179. }
  3180. /**
  3181. * 如果进行线性映射,返回对应的映射值
  3182. * @protected
  3183. * @param {Number} percent 百分比
  3184. * @return {*} 颜色值、形状、大小等
  3185. */
  3186. ;
  3187. _proto.getLinearValue = function getLinearValue(percent) {
  3188. var values = this.values;
  3189. var steps = values.length - 1;
  3190. var step = Math.floor(steps * percent);
  3191. var leftPercent = steps * percent - step;
  3192. var start = values[step];
  3193. var end = step === steps ? start : values[step + 1];
  3194. var rstValue = start + (end - start) * leftPercent;
  3195. return rstValue;
  3196. }
  3197. /**
  3198. * 默认的回调函数
  3199. * @param {*} value 回调函数的值
  3200. * @type {Function}
  3201. * @return {Array} 返回映射后的值
  3202. */
  3203. ;
  3204. _proto.callback = function callback(value) {
  3205. var self = this;
  3206. var scale = self.scales[0];
  3207. var rstValue = null;
  3208. if (scale.type === 'identity') {
  3209. rstValue = scale.value;
  3210. } else {
  3211. rstValue = self._getAttrValue(scale, value);
  3212. }
  3213. return rstValue;
  3214. }
  3215. /**
  3216. * 根据度量获取属性名
  3217. * @return {Array} dims of this Attribute
  3218. */
  3219. ;
  3220. _proto.getNames = function getNames() {
  3221. var scales = this.scales;
  3222. var names = this.names;
  3223. var length = Math.min(scales.length, names.length);
  3224. var rst = [];
  3225. for (var i = 0; i < length; i++) {
  3226. rst.push(names[i]);
  3227. }
  3228. return rst;
  3229. }
  3230. /**
  3231. * 根据度量获取维度名
  3232. * @return {Array} dims of this Attribute
  3233. */
  3234. ;
  3235. _proto.getFields = function getFields() {
  3236. var scales = this.scales;
  3237. var rst = [];
  3238. (0, _util.each)(scales, function (scale) {
  3239. rst.push(scale.field);
  3240. });
  3241. return rst;
  3242. }
  3243. /**
  3244. * 根据名称获取度量
  3245. * @param {String} name the name of scale
  3246. * @return {Scale} scale
  3247. */
  3248. ;
  3249. _proto.getScale = function getScale(name) {
  3250. var scales = this.scales;
  3251. var names = this.names;
  3252. var index = names.indexOf(name);
  3253. return scales[index];
  3254. }
  3255. /**
  3256. * 映射数据
  3257. * @param {*} param1...paramn 多个数值
  3258. * @return {Array} 映射的值组成的数组
  3259. */
  3260. ;
  3261. _proto.mapping = function mapping() {
  3262. var scales = this.scales;
  3263. var callback = this.callback;
  3264. for (var _len2 = arguments.length, params = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
  3265. params[_key2] = arguments[_key2];
  3266. }
  3267. var values = params;
  3268. if (callback) {
  3269. for (var i = 0, len = params.length; i < len; i++) {
  3270. params[i] = this._toOriginParam(params[i], scales[i]);
  3271. }
  3272. values = callback.apply(this, params);
  3273. }
  3274. values = [].concat(values);
  3275. return values;
  3276. } // 原始的参数
  3277. ;
  3278. _proto._toOriginParam = function _toOriginParam(param, scale) {
  3279. var rst = param;
  3280. if (!scale.isLinear) {
  3281. if ((0, _util.isArray)(param)) {
  3282. rst = [];
  3283. for (var i = 0, len = param.length; i < len; i++) {
  3284. rst.push(toScaleString(scale, param[i]));
  3285. }
  3286. } else {
  3287. rst = toScaleString(scale, param);
  3288. }
  3289. }
  3290. return rst;
  3291. };
  3292. return AttributeBase;
  3293. }();
  3294. var _default = AttributeBase;
  3295. exports["default"] = _default;
  3296. /***/ }),
  3297. /* 33 */
  3298. /***/ (function(module, exports, __webpack_require__) {
  3299. var mix = __webpack_require__(64);
  3300. var Adjust = /*#__PURE__*/function () {
  3301. var _proto = Adjust.prototype;
  3302. _proto._initDefaultCfg = function _initDefaultCfg() {
  3303. this.adjustNames = ['x', 'y']; // 调整的维度,默认,x,y都做调整
  3304. };
  3305. function Adjust(cfg) {
  3306. this._initDefaultCfg();
  3307. mix(this, cfg);
  3308. }
  3309. /**
  3310. * @override
  3311. */
  3312. _proto.processAdjust = function processAdjust()
  3313. /* dataArray */
  3314. {};
  3315. return Adjust;
  3316. }();
  3317. module.exports = Adjust;
  3318. /***/ }),
  3319. /* 34 */
  3320. /***/ (function(module, exports, __webpack_require__) {
  3321. var isType = __webpack_require__(27);
  3322. var isArray = Array.isArray ? Array.isArray : function (value) {
  3323. return isType(value, 'Array');
  3324. };
  3325. module.exports = isArray;
  3326. /***/ }),
  3327. /* 35 */
  3328. /***/ (function(module, exports) {
  3329. // isFinite,
  3330. var isNil = function isNil(value) {
  3331. /**
  3332. * isNil(null) => true
  3333. * isNil() => true
  3334. */
  3335. return value === null || value === undefined;
  3336. };
  3337. module.exports = isNil;
  3338. /***/ }),
  3339. /* 36 */
  3340. /***/ (function(module, exports, __webpack_require__) {
  3341. /**
  3342. * 判断是否数字
  3343. * @return {Boolean} 是否数字
  3344. */
  3345. var isType = __webpack_require__(27);
  3346. var isNumber = function isNumber(value) {
  3347. return isType(value, 'Number');
  3348. };
  3349. module.exports = isNumber;
  3350. /***/ }),
  3351. /* 37 */
  3352. /***/ (function(module, exports, __webpack_require__) {
  3353. "use strict";
  3354. exports.__esModule = true;
  3355. exports.getClip = getClip;
  3356. exports.isPointInPlot = isPointInPlot;
  3357. var _require = __webpack_require__(16),
  3358. Shape = _require.Shape;
  3359. function getClip(coord) {
  3360. var start = coord.start;
  3361. var end = coord.end;
  3362. var width = end.x - start.x;
  3363. var height = Math.abs(end.y - start.y);
  3364. var margin = 10;
  3365. var clip;
  3366. if (coord.isPolar) {
  3367. var circleRadius = coord.circleRadius,
  3368. center = coord.center,
  3369. startAngle = coord.startAngle,
  3370. endAngle = coord.endAngle;
  3371. clip = new Shape.Sector({
  3372. attrs: {
  3373. x: center.x,
  3374. y: center.y,
  3375. r: circleRadius,
  3376. r0: 0,
  3377. startAngle: startAngle,
  3378. endAngle: endAngle
  3379. }
  3380. });
  3381. } else {
  3382. clip = new Shape.Rect({
  3383. attrs: {
  3384. x: start.x,
  3385. y: end.y - margin,
  3386. width: width,
  3387. height: height + 2 * margin
  3388. }
  3389. });
  3390. }
  3391. clip.isClip = true;
  3392. return clip;
  3393. }
  3394. function isPointInPlot(point, plot) {
  3395. var x = point.x,
  3396. y = point.y;
  3397. var tl = plot.tl,
  3398. tr = plot.tr,
  3399. br = plot.br;
  3400. return x >= tl.x && x <= tr.x && y >= tl.y && y <= br.y;
  3401. }
  3402. /***/ }),
  3403. /* 38 */
  3404. /***/ (function(module, exports, __webpack_require__) {
  3405. "use strict";
  3406. /**
  3407. * @fileOverview shape util
  3408. * @author dxq613@gmail.com
  3409. */
  3410. var Util = __webpack_require__(0);
  3411. var ShapeUtil = {
  3412. splitPoints: function splitPoints(obj) {
  3413. var points = [];
  3414. var x = obj.x;
  3415. var y = obj.y;
  3416. y = Util.isArray(y) ? y : [y];
  3417. y.forEach(function (yItem, index) {
  3418. var point = {
  3419. x: Util.isArray(x) ? x[index] : x,
  3420. y: yItem
  3421. };
  3422. points.push(point);
  3423. });
  3424. return points;
  3425. },
  3426. splitArray: function splitArray(data, yField, connectNulls) {
  3427. if (!data.length) return [];
  3428. var arr = [];
  3429. var tmp = [];
  3430. var yValue;
  3431. Util.each(data, function (obj) {
  3432. yValue = obj._origin ? obj._origin[yField] : obj[yField];
  3433. if (connectNulls) {
  3434. if (!Util.isNil(yValue)) {
  3435. tmp.push(obj);
  3436. }
  3437. } else {
  3438. if (Util.isArray(yValue) && Util.isNil(yValue[0]) || Util.isNil(yValue)) {
  3439. if (tmp.length) {
  3440. arr.push(tmp);
  3441. tmp = [];
  3442. }
  3443. } else {
  3444. tmp.push(obj);
  3445. }
  3446. }
  3447. });
  3448. if (tmp.length) {
  3449. arr.push(tmp);
  3450. }
  3451. return arr;
  3452. }
  3453. };
  3454. module.exports = ShapeUtil;
  3455. /***/ }),
  3456. /* 39 */
  3457. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3458. "use strict";
  3459. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  3460. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7);
  3461. var filter = function (arr, func) {
  3462. if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(arr)) {
  3463. return arr;
  3464. }
  3465. var result = [];
  3466. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (value, index) {
  3467. if (func(value, index)) {
  3468. result.push(value);
  3469. }
  3470. });
  3471. return result;
  3472. };
  3473. /* harmony default export */ __webpack_exports__["a"] = (filter);
  3474. /***/ }),
  3475. /* 40 */
  3476. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3477. "use strict";
  3478. var isObjectLike = function (value) {
  3479. /**
  3480. * isObjectLike({}) => true
  3481. * isObjectLike([1, 2, 3]) => true
  3482. * isObjectLike(Function) => false
  3483. * isObjectLike(null) => false
  3484. */
  3485. return typeof value === 'object' && value !== null;
  3486. };
  3487. /* harmony default export */ __webpack_exports__["a"] = (isObjectLike);
  3488. /***/ }),
  3489. /* 41 */
  3490. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3491. "use strict";
  3492. /* harmony export (immutable) */ __webpack_exports__["a"] = mix;
  3493. // FIXME: Mutable param should be forbidden in static lang.
  3494. function _mix(dist, obj) {
  3495. for (var key in obj) {
  3496. if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {
  3497. dist[key] = obj[key];
  3498. }
  3499. }
  3500. }
  3501. function mix(dist, src1, src2, src3) {
  3502. if (src1) _mix(dist, src1);
  3503. if (src2) _mix(dist, src2);
  3504. if (src3) _mix(dist, src3);
  3505. return dist;
  3506. }
  3507. /***/ }),
  3508. /* 42 */
  3509. /***/ (function(module, exports, __webpack_require__) {
  3510. "use strict";
  3511. exports.__esModule = true;
  3512. exports["default"] = void 0;
  3513. var _common = __webpack_require__(0);
  3514. // 实现简单的事件机制
  3515. var EventEmit = /*#__PURE__*/function () {
  3516. function EventEmit() {
  3517. this.__events = {};
  3518. }
  3519. var _proto = EventEmit.prototype;
  3520. _proto.on = function on(type, listener) {
  3521. if (!type || !listener) {
  3522. return;
  3523. }
  3524. var events = this.__events[type] || [];
  3525. events.push(listener);
  3526. this.__events[type] = events;
  3527. };
  3528. _proto.emit = function emit(type, e) {
  3529. var _this = this;
  3530. if ((0, _common.isObject)(type)) {
  3531. e = type;
  3532. type = e && e.type;
  3533. }
  3534. if (!type) {
  3535. return;
  3536. }
  3537. var events = this.__events[type];
  3538. if (!events || !events.length) {
  3539. return;
  3540. }
  3541. events.forEach(function (listener) {
  3542. listener.call(_this, e);
  3543. });
  3544. };
  3545. _proto.off = function off(type, listener) {
  3546. var __events = this.__events;
  3547. var events = __events[type];
  3548. if (!events || !events.length) {
  3549. return;
  3550. } // 如果没有指定方法,则删除所有项
  3551. if (!listener) {
  3552. delete __events[type];
  3553. return;
  3554. } // 删除指定的 listener
  3555. for (var i = 0, len = events.length; i < len; i++) {
  3556. if (events[i] === listener) {
  3557. events.splice(i, 1);
  3558. }
  3559. }
  3560. };
  3561. return EventEmit;
  3562. }();
  3563. var _default = EventEmit;
  3564. exports["default"] = _default;
  3565. /***/ }),
  3566. /* 43 */
  3567. /***/ (function(module, exports, __webpack_require__) {
  3568. "use strict";
  3569. var Util = __webpack_require__(0);
  3570. var MatrixUtil = __webpack_require__(31);
  3571. var Vector2 = __webpack_require__(13);
  3572. var defaultMatrix = [1, 0, 0, 1, 0, 0];
  3573. var Base = /*#__PURE__*/function () {
  3574. var _proto = Base.prototype;
  3575. _proto._initDefaultCfg = function _initDefaultCfg() {};
  3576. function Base(cfg) {
  3577. this._initDefaultCfg();
  3578. Util.mix(this, cfg);
  3579. var start;
  3580. var end;
  3581. if (this.plot) {
  3582. start = this.plot.bl;
  3583. end = this.plot.tr;
  3584. this.start = start;
  3585. this.end = end;
  3586. } else {
  3587. start = this.start;
  3588. end = this.end;
  3589. }
  3590. this.init(start, end);
  3591. }
  3592. _proto._scale = function _scale(s1, s2) {
  3593. var matrix = this.matrix;
  3594. var center = this.center;
  3595. MatrixUtil.translate(matrix, matrix, [center.x, center.y]);
  3596. MatrixUtil.scale(matrix, matrix, [s1, s2]);
  3597. MatrixUtil.translate(matrix, matrix, [-center.x, -center.y]);
  3598. };
  3599. _proto.init = function init(start, end) {
  3600. this.matrix = [].concat(defaultMatrix); // 设置中心点
  3601. this.center = {
  3602. x: (end.x - start.x) / 2 + start.x,
  3603. y: (end.y - start.y) / 2 + start.y
  3604. };
  3605. if (this.scale) {
  3606. this._scale(this.scale[0], this.scale[1]);
  3607. }
  3608. };
  3609. _proto.convertPoint = function convertPoint(point) {
  3610. var _this$_convertPoint = this._convertPoint(point),
  3611. x = _this$_convertPoint.x,
  3612. y = _this$_convertPoint.y;
  3613. var vector = [x, y];
  3614. Vector2.transformMat2d(vector, vector, this.matrix);
  3615. return {
  3616. x: vector[0],
  3617. y: vector[1]
  3618. };
  3619. };
  3620. _proto.invertPoint = function invertPoint(point) {
  3621. return this._invertPoint(point);
  3622. };
  3623. _proto._convertPoint = function _convertPoint(point) {
  3624. return point;
  3625. };
  3626. _proto._invertPoint = function _invertPoint(point) {
  3627. return point;
  3628. };
  3629. _proto.reset = function reset(plot) {
  3630. this.plot = plot;
  3631. var bl = plot.bl,
  3632. tr = plot.tr;
  3633. this.start = bl;
  3634. this.end = tr;
  3635. this.init(bl, tr);
  3636. };
  3637. return Base;
  3638. }();
  3639. module.exports = Base;
  3640. /***/ }),
  3641. /* 44 */
  3642. /***/ (function(module, exports) {
  3643. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
  3644. return typeof obj;
  3645. } : function (obj) {
  3646. return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  3647. };
  3648. var isObject = function isObject(value) {
  3649. /**
  3650. * isObject({}) => true
  3651. * isObject([1, 2, 3]) => true
  3652. * isObject(Function) => true
  3653. * isObject(null) => false
  3654. */
  3655. var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);
  3656. return value !== null && type === 'object' || type === 'function';
  3657. };
  3658. module.exports = isObject;
  3659. /***/ }),
  3660. /* 45 */
  3661. /***/ (function(module, exports, __webpack_require__) {
  3662. "use strict";
  3663. var Util = __webpack_require__(0);
  3664. var Global = __webpack_require__(6);
  3665. var Vector2 = __webpack_require__(13);
  3666. var Abastract = /*#__PURE__*/function () {
  3667. var _proto = Abastract.prototype;
  3668. _proto._initDefaultCfg = function _initDefaultCfg() {
  3669. /**
  3670. * ticks
  3671. * @type {Array}
  3672. */
  3673. this.ticks = [];
  3674. /**
  3675. * the configuration for tickLine
  3676. * @type {Object}
  3677. */
  3678. this.tickLine = {};
  3679. /**
  3680. * the direction of ticks, 1 means clockwise
  3681. * @type {Number}
  3682. */
  3683. this.offsetFactor = 1;
  3684. /**
  3685. * the top container
  3686. * @type {container}
  3687. */
  3688. this.frontContainer = null;
  3689. /**
  3690. * the back container
  3691. * @type {[type]}
  3692. */
  3693. this.backContainer = null;
  3694. /**
  3695. * points for draw grid line
  3696. * @type {Array}
  3697. */
  3698. this.gridPoints = [];
  3699. };
  3700. function Abastract(cfg) {
  3701. this._initDefaultCfg();
  3702. Util.mix(this, cfg);
  3703. this.draw();
  3704. }
  3705. _proto.draw = function draw() {
  3706. var line = this.line,
  3707. tickLine = this.tickLine,
  3708. label = this.label,
  3709. grid = this.grid;
  3710. grid && this.drawGrid(grid); // draw the grid lines
  3711. tickLine && this.drawTicks(tickLine); // draw the tickLine
  3712. line && this.drawLine(line); // draw axis line
  3713. label && this.drawLabels(); // draw ticks
  3714. };
  3715. _proto.drawTicks = function drawTicks(tickCfg) {
  3716. var self = this;
  3717. var ticks = self.ticks;
  3718. var length = tickCfg.length;
  3719. var container = self.getContainer(tickCfg.top);
  3720. Util.each(ticks, function (tick) {
  3721. var start = self.getOffsetPoint(tick.value);
  3722. var end = self.getSidePoint(start, length);
  3723. var shape = container.addShape('line', {
  3724. className: 'axis-tick',
  3725. attrs: Util.mix({
  3726. x1: start.x,
  3727. y1: start.y,
  3728. x2: end.x,
  3729. y2: end.y
  3730. }, tickCfg)
  3731. });
  3732. shape._id = self._id + '-ticks';
  3733. });
  3734. };
  3735. _proto.drawLabels = function drawLabels() {
  3736. var self = this;
  3737. var labelOffset = self.labelOffset;
  3738. var labels = self.labels;
  3739. Util.each(labels, function (labelShape) {
  3740. var container = self.getContainer(labelShape.get('top'));
  3741. var start = self.getOffsetPoint(labelShape.get('value'));
  3742. var _self$getSidePoint = self.getSidePoint(start, labelOffset),
  3743. x = _self$getSidePoint.x,
  3744. y = _self$getSidePoint.y;
  3745. labelShape.attr(Util.mix({
  3746. x: x,
  3747. y: y
  3748. }, self.getTextAlignInfo(start, labelOffset), labelShape.get('textStyle')));
  3749. labelShape._id = self._id + '-' + labelShape.attr('text');
  3750. container.add(labelShape);
  3751. });
  3752. };
  3753. _proto.drawLine = function drawLine() {};
  3754. _proto.drawGrid = function drawGrid(grid) {
  3755. var self = this;
  3756. var gridPoints = self.gridPoints,
  3757. ticks = self.ticks;
  3758. var gridCfg = grid;
  3759. var count = gridPoints.length;
  3760. Util.each(gridPoints, function (subPoints, index) {
  3761. if (Util.isFunction(grid)) {
  3762. var tick = ticks[index] || {};
  3763. var executedGrid = grid(tick.text, index, count);
  3764. gridCfg = executedGrid ? Util.mix({}, Global._defaultAxis.grid, executedGrid) : null;
  3765. }
  3766. if (gridCfg) {
  3767. var type = gridCfg.type; // has two types: 'line' and 'arc'
  3768. var points = subPoints.points;
  3769. var container = self.getContainer(gridCfg.top);
  3770. var shape;
  3771. if (type === 'arc') {
  3772. var center = self.center,
  3773. startAngle = self.startAngle,
  3774. endAngle = self.endAngle;
  3775. var radius = Vector2.length([points[0].x - center.x, points[0].y - center.y]);
  3776. shape = container.addShape('Arc', {
  3777. className: 'axis-grid',
  3778. attrs: Util.mix({
  3779. x: center.x,
  3780. y: center.y,
  3781. startAngle: startAngle,
  3782. endAngle: endAngle,
  3783. r: radius
  3784. }, gridCfg)
  3785. });
  3786. } else {
  3787. shape = container.addShape('Polyline', {
  3788. className: 'axis-grid',
  3789. attrs: Util.mix({
  3790. points: points
  3791. }, gridCfg)
  3792. });
  3793. }
  3794. shape._id = subPoints._id;
  3795. }
  3796. });
  3797. };
  3798. _proto.getOffsetPoint = function getOffsetPoint() {};
  3799. _proto.getAxisVector = function getAxisVector() {};
  3800. _proto.getOffsetVector = function getOffsetVector(point, offset) {
  3801. var self = this;
  3802. var axisVector = self.getAxisVector(point);
  3803. var normal = Vector2.normalize([], axisVector);
  3804. var factor = self.offsetFactor;
  3805. var verticalVector = [normal[1] * -1 * factor, normal[0] * factor];
  3806. return Vector2.scale([], verticalVector, offset);
  3807. };
  3808. _proto.getSidePoint = function getSidePoint(point, offset) {
  3809. var self = this;
  3810. var offsetVector = self.getOffsetVector(point, offset);
  3811. return {
  3812. x: point.x + offsetVector[0],
  3813. y: point.y + offsetVector[1]
  3814. };
  3815. };
  3816. _proto.getTextAlignInfo = function getTextAlignInfo(point, offset) {
  3817. var self = this;
  3818. var offsetVector = self.getOffsetVector(point, offset);
  3819. var align;
  3820. var baseLine;
  3821. if (offsetVector[0] > 0) {
  3822. align = 'left';
  3823. } else if (offsetVector[0] < 0) {
  3824. align = 'right';
  3825. } else {
  3826. align = 'center';
  3827. }
  3828. if (offsetVector[1] > 0) {
  3829. baseLine = 'top';
  3830. } else if (offsetVector[1] < 0) {
  3831. baseLine = 'bottom';
  3832. } else {
  3833. baseLine = 'middle';
  3834. }
  3835. return {
  3836. textAlign: align,
  3837. textBaseline: baseLine
  3838. };
  3839. };
  3840. _proto.getContainer = function getContainer(isTop) {
  3841. var frontContainer = this.frontContainer,
  3842. backContainer = this.backContainer;
  3843. return isTop ? frontContainer : backContainer;
  3844. };
  3845. return Abastract;
  3846. }();
  3847. module.exports = Abastract;
  3848. /***/ }),
  3849. /* 46 */
  3850. /***/ (function(module, exports, __webpack_require__) {
  3851. "use strict";
  3852. var Util = __webpack_require__(0);
  3853. var MatrixUtil = __webpack_require__(31);
  3854. var Vector2 = __webpack_require__(13);
  3855. var StyleUtil = __webpack_require__(179);
  3856. function isUnchanged(m) {
  3857. return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;
  3858. }
  3859. var ALIAS_ATTRS_MAP = {
  3860. stroke: 'strokeStyle',
  3861. fill: 'fillStyle',
  3862. opacity: 'globalAlpha'
  3863. };
  3864. var SHAPE_ATTRS = ['fillStyle', 'font', 'globalAlpha', 'lineCap', 'lineWidth', 'lineJoin', 'miterLimit', 'shadowBlur', 'shadowColor', 'shadowOffsetX', 'shadowOffsetY', 'strokeStyle', 'textAlign', 'textBaseline', 'lineDash', 'shadow' // 兼容支付宝小程序
  3865. ];
  3866. var CLIP_SHAPES = ['circle', 'sector', 'polygon', 'rect', 'polyline'];
  3867. var Element = /*#__PURE__*/function () {
  3868. var _proto = Element.prototype;
  3869. _proto._initProperties = function _initProperties() {
  3870. this._attrs = {
  3871. zIndex: 0,
  3872. visible: true,
  3873. destroyed: false
  3874. };
  3875. };
  3876. function Element(cfg) {
  3877. this._initProperties();
  3878. Util.mix(this._attrs, cfg);
  3879. var attrs = this._attrs.attrs;
  3880. if (attrs) {
  3881. this.initAttrs(attrs);
  3882. }
  3883. this.initTransform();
  3884. }
  3885. _proto.get = function get(name) {
  3886. return this._attrs[name];
  3887. };
  3888. _proto.set = function set(name, value) {
  3889. this._attrs[name] = value;
  3890. };
  3891. _proto.isGroup = function isGroup() {
  3892. return this.get('isGroup');
  3893. };
  3894. _proto.isShape = function isShape() {
  3895. return this.get('isShape');
  3896. };
  3897. _proto.initAttrs = function initAttrs(attrs) {
  3898. this.attr(Util.mix(this.getDefaultAttrs(), attrs));
  3899. };
  3900. _proto.getDefaultAttrs = function getDefaultAttrs() {
  3901. return {};
  3902. };
  3903. _proto._setAttr = function _setAttr(name, value) {
  3904. var attrs = this._attrs.attrs;
  3905. if (name === 'clip') {
  3906. value = this._setAttrClip(value);
  3907. } else {
  3908. var alias = ALIAS_ATTRS_MAP[name];
  3909. if (alias) {
  3910. attrs[alias] = value;
  3911. }
  3912. }
  3913. attrs[name] = value;
  3914. };
  3915. _proto._getAttr = function _getAttr(name) {
  3916. return this._attrs.attrs[name];
  3917. } // _afterAttrsSet() {}
  3918. ;
  3919. _proto._setAttrClip = function _setAttrClip(clip) {
  3920. if (clip && CLIP_SHAPES.indexOf(clip._attrs.type) > -1) {
  3921. if (clip.get('canvas') === null) {
  3922. clip = Object.assign({}, clip);
  3923. }
  3924. clip.set('parent', this.get('parent'));
  3925. clip.set('context', this.get('context'));
  3926. return clip;
  3927. }
  3928. return null;
  3929. };
  3930. _proto.attr = function attr(name, value) {
  3931. var self = this;
  3932. if (self.get('destroyed')) return null;
  3933. var argumentsLen = arguments.length;
  3934. if (argumentsLen === 0) {
  3935. return self._attrs.attrs;
  3936. }
  3937. if (Util.isObject(name)) {
  3938. this._attrs.bbox = null;
  3939. for (var k in name) {
  3940. self._setAttr(k, name[k]);
  3941. }
  3942. if (self._afterAttrsSet) {
  3943. self._afterAttrsSet();
  3944. }
  3945. return self;
  3946. }
  3947. if (argumentsLen === 2) {
  3948. this._attrs.bbox = null;
  3949. self._setAttr(name, value);
  3950. if (self._afterAttrsSet) {
  3951. self._afterAttrsSet();
  3952. }
  3953. return self;
  3954. }
  3955. return self._getAttr(name);
  3956. };
  3957. _proto.getParent = function getParent() {
  3958. return this.get('parent');
  3959. };
  3960. _proto.draw = function draw(context) {
  3961. if (this.get('destroyed')) {
  3962. return;
  3963. }
  3964. if (this.get('visible')) {
  3965. this.setContext(context);
  3966. this.drawInner(context);
  3967. this.restoreContext(context);
  3968. }
  3969. };
  3970. _proto.setContext = function setContext(context) {
  3971. var clip = this._attrs.attrs.clip;
  3972. context.save();
  3973. if (clip) {
  3974. clip.resetTransform(context);
  3975. clip.createPath(context);
  3976. context.clip();
  3977. }
  3978. this.resetContext(context);
  3979. this.resetTransform(context);
  3980. };
  3981. _proto.restoreContext = function restoreContext(context) {
  3982. context.restore();
  3983. };
  3984. _proto.resetContext = function resetContext(context) {
  3985. var elAttrs = this._attrs.attrs;
  3986. if (!this._attrs.isGroup) {
  3987. for (var k in elAttrs) {
  3988. if (SHAPE_ATTRS.indexOf(k) > -1) {
  3989. var v = elAttrs[k];
  3990. if (k === 'fillStyle' || k === 'strokeStyle') {
  3991. v = StyleUtil.parseStyle(v, this, context);
  3992. }
  3993. if (k === 'lineDash' && context.setLineDash && Util.isArray(v)) {
  3994. context.setLineDash(v);
  3995. } else {
  3996. context[k] = v;
  3997. }
  3998. }
  3999. }
  4000. }
  4001. };
  4002. _proto.hasFill = function hasFill() {
  4003. return this.get('canFill') && this._attrs.attrs.fillStyle;
  4004. };
  4005. _proto.hasStroke = function hasStroke() {
  4006. return this.get('canStroke') && this._attrs.attrs.strokeStyle;
  4007. };
  4008. _proto.drawInner = function drawInner()
  4009. /* context */
  4010. {};
  4011. _proto.show = function show() {
  4012. this.set('visible', true);
  4013. return this;
  4014. };
  4015. _proto.hide = function hide() {
  4016. this.set('visible', false);
  4017. return this;
  4018. };
  4019. _proto.isVisible = function isVisible() {
  4020. return this.get('visible');
  4021. };
  4022. _proto._removeFromParent = function _removeFromParent() {
  4023. var parent = this.get('parent');
  4024. if (parent) {
  4025. var children = parent.get('children');
  4026. Util.Array.remove(children, this);
  4027. }
  4028. return this;
  4029. };
  4030. _proto.remove = function remove(destroy) {
  4031. if (destroy) {
  4032. this.destroy();
  4033. } else {
  4034. this._removeFromParent();
  4035. }
  4036. };
  4037. _proto.destroy = function destroy() {
  4038. var destroyed = this.get('destroyed');
  4039. if (destroyed) {
  4040. return null;
  4041. }
  4042. this._removeFromParent();
  4043. this._attrs = {};
  4044. this.set('destroyed', true);
  4045. };
  4046. _proto.getBBox = function getBBox() {
  4047. return {
  4048. minX: 0,
  4049. maxX: 0,
  4050. minY: 0,
  4051. maxY: 0,
  4052. width: 0,
  4053. height: 0
  4054. };
  4055. };
  4056. _proto.initTransform = function initTransform() {
  4057. var attrs = this._attrs.attrs || {};
  4058. if (!attrs.matrix) {
  4059. attrs.matrix = [1, 0, 0, 1, 0, 0];
  4060. }
  4061. this._attrs.attrs = attrs;
  4062. };
  4063. _proto.getMatrix = function getMatrix() {
  4064. return this._attrs.attrs.matrix;
  4065. };
  4066. _proto.setMatrix = function setMatrix(m) {
  4067. this._attrs.attrs.matrix = [m[0], m[1], m[2], m[3], m[4], m[5]];
  4068. };
  4069. _proto.transform = function transform(actions) {
  4070. var matrix = this._attrs.attrs.matrix;
  4071. this._attrs.attrs.matrix = MatrixUtil.transform(matrix, actions);
  4072. return this;
  4073. };
  4074. _proto.setTransform = function setTransform(actions) {
  4075. this._attrs.attrs.matrix = [1, 0, 0, 1, 0, 0];
  4076. return this.transform(actions);
  4077. };
  4078. _proto.translate = function translate(x, y) {
  4079. var matrix = this._attrs.attrs.matrix;
  4080. MatrixUtil.translate(matrix, matrix, [x, y]);
  4081. };
  4082. _proto.rotate = function rotate(rad) {
  4083. var matrix = this._attrs.attrs.matrix;
  4084. MatrixUtil.rotate(matrix, matrix, rad);
  4085. };
  4086. _proto.scale = function scale(sx, sy) {
  4087. var matrix = this._attrs.attrs.matrix;
  4088. MatrixUtil.scale(matrix, matrix, [sx, sy]);
  4089. };
  4090. _proto.moveTo = function moveTo(x, y) {
  4091. var cx = this._attrs.x || 0;
  4092. var cy = this._attrs.y || 0;
  4093. this.translate(x - cx, y - cy);
  4094. this.set('x', x);
  4095. this.set('y', y);
  4096. };
  4097. _proto.apply = function apply(v) {
  4098. var m = this._attrs.attrs.matrix;
  4099. Vector2.transformMat2d(v, v, m);
  4100. return this;
  4101. };
  4102. _proto.resetTransform = function resetTransform(context) {
  4103. var mo = this._attrs.attrs.matrix;
  4104. if (!isUnchanged(mo)) {
  4105. context.transform(mo[0], mo[1], mo[2], mo[3], mo[4], mo[5]);
  4106. }
  4107. };
  4108. _proto.isDestroyed = function isDestroyed() {
  4109. return this.get('destroyed');
  4110. };
  4111. return Element;
  4112. }();
  4113. module.exports = Element;
  4114. /***/ }),
  4115. /* 47 */
  4116. /***/ (function(module, exports, __webpack_require__) {
  4117. "use strict";
  4118. exports.__esModule = true;
  4119. exports.EVENT_AFTER_GEOM_INIT = exports.EVENT_AFTER_SIZE_CHANGE = exports.EVENT_AFTER_DATA_CHANGE = exports.EVENT_BEFORE_DATA_CHANGE = exports.EVENT_AFTER_RENDER = exports.EVENT_BEFORE_RENDER = exports.EVENT_AFTER_INIT = void 0;
  4120. var EVENT_AFTER_INIT = 'afterinit';
  4121. exports.EVENT_AFTER_INIT = EVENT_AFTER_INIT;
  4122. var EVENT_BEFORE_RENDER = 'beforerender';
  4123. exports.EVENT_BEFORE_RENDER = EVENT_BEFORE_RENDER;
  4124. var EVENT_AFTER_RENDER = 'afterrender';
  4125. exports.EVENT_AFTER_RENDER = EVENT_AFTER_RENDER;
  4126. var EVENT_BEFORE_DATA_CHANGE = 'beforedatachange';
  4127. exports.EVENT_BEFORE_DATA_CHANGE = EVENT_BEFORE_DATA_CHANGE;
  4128. var EVENT_AFTER_DATA_CHANGE = 'afterdatachange';
  4129. exports.EVENT_AFTER_DATA_CHANGE = EVENT_AFTER_DATA_CHANGE;
  4130. var EVENT_AFTER_SIZE_CHANGE = '_aftersizechange';
  4131. exports.EVENT_AFTER_SIZE_CHANGE = EVENT_AFTER_SIZE_CHANGE;
  4132. var EVENT_AFTER_GEOM_INIT = '_aftergeominit';
  4133. exports.EVENT_AFTER_GEOM_INIT = EVENT_AFTER_GEOM_INIT;
  4134. /***/ }),
  4135. /* 48 */
  4136. /***/ (function(module, exports, __webpack_require__) {
  4137. var isType = __webpack_require__(27);
  4138. var isString = function isString(str) {
  4139. return isType(str, 'String');
  4140. };
  4141. module.exports = isString;
  4142. /***/ }),
  4143. /* 49 */
  4144. /***/ (function(module, exports, __webpack_require__) {
  4145. var _typeof = __webpack_require__(50);
  4146. function _getRequireWildcardCache() {
  4147. if (typeof WeakMap !== "function") return null;
  4148. var cache = new WeakMap();
  4149. _getRequireWildcardCache = function _getRequireWildcardCache() {
  4150. return cache;
  4151. };
  4152. return cache;
  4153. }
  4154. function _interopRequireWildcard(obj) {
  4155. if (obj && obj.__esModule) {
  4156. return obj;
  4157. }
  4158. if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
  4159. return {
  4160. "default": obj
  4161. };
  4162. }
  4163. var cache = _getRequireWildcardCache();
  4164. if (cache && cache.has(obj)) {
  4165. return cache.get(obj);
  4166. }
  4167. var newObj = {};
  4168. var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
  4169. for (var key in obj) {
  4170. if (Object.prototype.hasOwnProperty.call(obj, key)) {
  4171. var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
  4172. if (desc && (desc.get || desc.set)) {
  4173. Object.defineProperty(newObj, key, desc);
  4174. } else {
  4175. newObj[key] = obj[key];
  4176. }
  4177. }
  4178. }
  4179. newObj["default"] = obj;
  4180. if (cache) {
  4181. cache.set(obj, newObj);
  4182. }
  4183. return newObj;
  4184. }
  4185. module.exports = _interopRequireWildcard;
  4186. /***/ }),
  4187. /* 50 */
  4188. /***/ (function(module, exports) {
  4189. function _typeof(obj) {
  4190. "@babel/helpers - typeof";
  4191. if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
  4192. module.exports = _typeof = function _typeof(obj) {
  4193. return typeof obj;
  4194. };
  4195. } else {
  4196. module.exports = _typeof = function _typeof(obj) {
  4197. return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  4198. };
  4199. }
  4200. return _typeof(obj);
  4201. }
  4202. module.exports = _typeof;
  4203. /***/ }),
  4204. /* 51 */
  4205. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4206. "use strict";
  4207. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14);
  4208. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys__ = __webpack_require__(52);
  4209. function isMatch(obj, attrs) {
  4210. var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys__["a" /* default */])(attrs);
  4211. var length = _keys.length;
  4212. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(obj)) return !length;
  4213. for (var i = 0; i < length; i += 1) {
  4214. var key = _keys[i];
  4215. if (attrs[key] !== obj[key] || !(key in obj)) {
  4216. return false;
  4217. }
  4218. }
  4219. return true;
  4220. }
  4221. /* harmony default export */ __webpack_exports__["a"] = (isMatch);
  4222. /***/ }),
  4223. /* 52 */
  4224. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4225. "use strict";
  4226. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  4227. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9);
  4228. var keys = Object.keys ? function (obj) {
  4229. return Object.keys(obj);
  4230. } : function (obj) {
  4231. var result = [];
  4232. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(obj, function (value, key) {
  4233. if (!(Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(obj) && key === 'prototype')) {
  4234. result.push(key);
  4235. }
  4236. });
  4237. return result;
  4238. };
  4239. /* harmony default export */ __webpack_exports__["a"] = (keys);
  4240. /***/ }),
  4241. /* 53 */
  4242. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4243. "use strict";
  4244. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7);
  4245. var splice = Array.prototype.splice;
  4246. var pullAt = function pullAt(arr, indexes) {
  4247. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(arr)) {
  4248. return [];
  4249. }
  4250. var length = arr ? indexes.length : 0;
  4251. var last = length - 1;
  4252. while (length--) {
  4253. var previous = void 0;
  4254. var index = indexes[length];
  4255. if (length === last || index !== previous) {
  4256. previous = index;
  4257. splice.call(arr, index, 1);
  4258. }
  4259. }
  4260. return arr;
  4261. };
  4262. /* harmony default export */ __webpack_exports__["a"] = (pullAt);
  4263. /***/ }),
  4264. /* 54 */
  4265. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4266. "use strict";
  4267. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(28);
  4268. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each__ = __webpack_require__(8);
  4269. var uniq = function (arr) {
  4270. var resultArr = [];
  4271. Object(__WEBPACK_IMPORTED_MODULE_1__each__["a" /* default */])(arr, function (item) {
  4272. if (!Object(__WEBPACK_IMPORTED_MODULE_0__contains__["a" /* default */])(resultArr, item)) {
  4273. resultArr.push(item);
  4274. }
  4275. });
  4276. return resultArr;
  4277. };
  4278. /* harmony default export */ __webpack_exports__["a"] = (uniq);
  4279. /***/ }),
  4280. /* 55 */
  4281. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4282. "use strict";
  4283. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  4284. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9);
  4285. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__group_by__ = __webpack_require__(56);
  4286. var groupToMap = function (data, condition) {
  4287. if (!condition) {
  4288. return {
  4289. 0: data
  4290. };
  4291. }
  4292. if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(condition)) {
  4293. var paramsCondition_1 = Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(condition) ? condition : condition.replace(/\s+/g, '').split('*');
  4294. condition = function (row) {
  4295. var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序
  4296. for (var i = 0, l = paramsCondition_1.length; i < l; i++) {
  4297. unique += row[paramsCondition_1[i]] && row[paramsCondition_1[i]].toString();
  4298. }
  4299. return unique;
  4300. };
  4301. }
  4302. var groups = Object(__WEBPACK_IMPORTED_MODULE_2__group_by__["a" /* default */])(data, condition);
  4303. return groups;
  4304. };
  4305. /* harmony default export */ __webpack_exports__["a"] = (groupToMap);
  4306. /***/ }),
  4307. /* 56 */
  4308. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4309. "use strict";
  4310. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  4311. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5);
  4312. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(9);
  4313. var hasOwnProperty = Object.prototype.hasOwnProperty;
  4314. function groupBy(data, condition) {
  4315. if (!condition || !Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(data)) {
  4316. return {};
  4317. }
  4318. var result = {}; // 兼容方法和 字符串的写法
  4319. var predicate = Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(condition) ? condition : function (item) {
  4320. return item[condition];
  4321. };
  4322. var key;
  4323. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(data, function (item) {
  4324. key = predicate(item);
  4325. if (hasOwnProperty.call(result, key)) {
  4326. result[key].push(item);
  4327. } else {
  4328. result[key] = [item];
  4329. }
  4330. });
  4331. return result;
  4332. }
  4333. /* harmony default export */ __webpack_exports__["a"] = (groupBy);
  4334. /***/ }),
  4335. /* 57 */
  4336. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4337. "use strict";
  4338. /* harmony default export */ __webpack_exports__["a"] = (function (obj, key) {
  4339. return obj.hasOwnProperty(key);
  4340. });
  4341. /***/ }),
  4342. /* 58 */
  4343. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4344. "use strict";
  4345. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  4346. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9);
  4347. // @ts-ignore
  4348. var values = Object.values ? function (obj) {
  4349. return Object.values(obj);
  4350. } : function (obj) {
  4351. var result = [];
  4352. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(obj, function (value, key) {
  4353. if (!(Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(obj) && key === 'prototype')) {
  4354. result.push(value);
  4355. }
  4356. });
  4357. return result;
  4358. };
  4359. /* harmony default export */ __webpack_exports__["a"] = (values);
  4360. /***/ }),
  4361. /* 59 */
  4362. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4363. "use strict";
  4364. var toString = {}.toString;
  4365. var getType = function (value) {
  4366. return toString.call(value).replace(/^\[object /, '').replace(/]$/, '');
  4367. };
  4368. /* harmony default export */ __webpack_exports__["a"] = (getType);
  4369. /***/ }),
  4370. /* 60 */
  4371. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4372. "use strict";
  4373. var objectProto = Object.prototype;
  4374. var isPrototype = function (value) {
  4375. var Ctor = value && value.constructor;
  4376. var proto = typeof Ctor === 'function' && Ctor.prototype || objectProto;
  4377. return value === proto;
  4378. };
  4379. /* harmony default export */ __webpack_exports__["a"] = (isPrototype);
  4380. /***/ }),
  4381. /* 61 */
  4382. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4383. "use strict";
  4384. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(40);
  4385. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7);
  4386. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_string__ = __webpack_require__(18);
  4387. var isEqual = function (value, other) {
  4388. if (value === other) {
  4389. return true;
  4390. }
  4391. if (!value || !other) {
  4392. return false;
  4393. }
  4394. if (Object(__WEBPACK_IMPORTED_MODULE_2__is_string__["a" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_2__is_string__["a" /* default */])(other)) {
  4395. return false;
  4396. }
  4397. if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(other)) {
  4398. if (value.length !== other.length) {
  4399. return false;
  4400. }
  4401. var rst = true;
  4402. for (var i = 0; i < value.length; i++) {
  4403. rst = isEqual(value[i], other[i]);
  4404. if (!rst) {
  4405. break;
  4406. }
  4407. }
  4408. return rst;
  4409. }
  4410. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__["a" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__["a" /* default */])(other)) {
  4411. var valueKeys = Object.keys(value);
  4412. var otherKeys = Object.keys(other);
  4413. if (valueKeys.length !== otherKeys.length) {
  4414. return false;
  4415. }
  4416. var rst = true;
  4417. for (var i = 0; i < valueKeys.length; i++) {
  4418. rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);
  4419. if (!rst) {
  4420. break;
  4421. }
  4422. }
  4423. return rst;
  4424. }
  4425. return false;
  4426. };
  4427. /* harmony default export */ __webpack_exports__["a"] = (isEqual);
  4428. /***/ }),
  4429. /* 62 */
  4430. /***/ (function(module, exports, __webpack_require__) {
  4431. "use strict";
  4432. exports.__esModule = true;
  4433. exports.isCanvasElement = isCanvasElement;
  4434. exports.getPixelRatio = getPixelRatio;
  4435. exports.getStyle = getStyle;
  4436. exports.getWidth = getWidth;
  4437. exports.getHeight = getHeight;
  4438. exports.getDomById = getDomById;
  4439. exports.getRelativePosition = getRelativePosition;
  4440. exports.addEventListener = addEventListener;
  4441. exports.removeEventListener = removeEventListener;
  4442. exports.createEvent = createEvent;
  4443. exports.measureText = measureText;
  4444. exports.isBrowser = exports.isNode = exports.isMy = exports.isWx = void 0;
  4445. /**
  4446. * Detects support for options object argument in addEventListener.
  4447. * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support
  4448. * @private
  4449. */
  4450. var supportsEventListenerOptions = function () {
  4451. var supports = false;
  4452. try {
  4453. var options = Object.defineProperty({}, 'passive', {
  4454. get: function get() {
  4455. supports = true;
  4456. }
  4457. });
  4458. window.addEventListener('e', null, options);
  4459. } catch (e) {// continue regardless of error
  4460. }
  4461. return supports;
  4462. }(); // Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.
  4463. // https://github.com/chartjs/Chart.js/issues/4287
  4464. var eventListenerOptions = supportsEventListenerOptions ? {
  4465. passive: true
  4466. } : false;
  4467. /* global wx, my */
  4468. // weixin miniprogram
  4469. var isWx = typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function'; // ant miniprogram
  4470. exports.isWx = isWx;
  4471. var isMy = typeof my === 'object' && typeof my.getSystemInfoSync === 'function'; // in node
  4472. exports.isMy = isMy;
  4473. var isNode = typeof module !== 'undefined' && typeof module.exports !== 'undefined'; // in browser
  4474. exports.isNode = isNode;
  4475. var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.sessionStorage !== 'undefined';
  4476. exports.isBrowser = isBrowser;
  4477. function isCanvasElement(el) {
  4478. if (!el || typeof el !== 'object') return false;
  4479. if (el.nodeType === 1 && el.nodeName) {
  4480. // HTMLCanvasElement
  4481. return true;
  4482. } // CanvasElement
  4483. return !!el.isCanvasElement;
  4484. }
  4485. function getPixelRatio() {
  4486. return window && window.devicePixelRatio || 1;
  4487. }
  4488. function getStyle(el, property) {
  4489. return el.currentStyle ? el.currentStyle[property] : document.defaultView.getComputedStyle(el, null).getPropertyValue(property);
  4490. }
  4491. function getWidth(el) {
  4492. var width = getStyle(el, 'width');
  4493. if (width === 'auto') {
  4494. width = el.offsetWidth;
  4495. }
  4496. return parseFloat(width);
  4497. }
  4498. function getHeight(el) {
  4499. var height = getStyle(el, 'height');
  4500. if (height === 'auto') {
  4501. height = el.offsetHeight;
  4502. }
  4503. return parseFloat(height);
  4504. }
  4505. function getDomById(id) {
  4506. if (!id) {
  4507. return null;
  4508. }
  4509. return document.getElementById(id);
  4510. }
  4511. function getRelativePosition(point, canvas) {
  4512. var canvasDom = canvas.get('el');
  4513. if (!canvasDom) return point;
  4514. var _canvasDom$getBoundin = canvasDom.getBoundingClientRect(),
  4515. top = _canvasDom$getBoundin.top,
  4516. right = _canvasDom$getBoundin.right,
  4517. bottom = _canvasDom$getBoundin.bottom,
  4518. left = _canvasDom$getBoundin.left;
  4519. var paddingLeft = parseFloat(getStyle(canvasDom, 'padding-left'));
  4520. var paddingTop = parseFloat(getStyle(canvasDom, 'padding-top'));
  4521. var paddingRight = parseFloat(getStyle(canvasDom, 'padding-right'));
  4522. var paddingBottom = parseFloat(getStyle(canvasDom, 'padding-bottom'));
  4523. var width = right - left - paddingLeft - paddingRight;
  4524. var height = bottom - top - paddingTop - paddingBottom;
  4525. var pixelRatio = canvas.get('pixelRatio');
  4526. var mouseX = (point.x - left - paddingLeft) / width * canvasDom.width / pixelRatio;
  4527. var mouseY = (point.y - top - paddingTop) / height * canvasDom.height / pixelRatio;
  4528. return {
  4529. x: mouseX,
  4530. y: mouseY
  4531. };
  4532. }
  4533. function addEventListener(source, type, listener) {
  4534. source.addEventListener(type, listener, eventListenerOptions);
  4535. }
  4536. function removeEventListener(source, type, listener) {
  4537. source.removeEventListener(type, listener, eventListenerOptions);
  4538. }
  4539. function createEventObj(type, chart, x, y, nativeEvent) {
  4540. return {
  4541. type: type,
  4542. chart: chart,
  4543. "native": nativeEvent || null,
  4544. x: x !== undefined ? x : null,
  4545. y: y !== undefined ? y : null
  4546. };
  4547. }
  4548. function createEvent(event, chart) {
  4549. var type = event.type;
  4550. var clientPoint; // 说明是touch相关事件
  4551. if (event.touches) {
  4552. // https://developer.mozilla.org/zh-CN/docs/Web/API/TouchEvent/changedTouches
  4553. // 这里直接拿changedTouches就可以了,不管是touchstart, touchmove, touchend changedTouches 都是有的
  4554. // 为了以防万一,做个空判断
  4555. var touch = event.changedTouches[0] || {}; // x, y: 相对canvas原点的位置,clientX, clientY 相对于可视窗口的位置
  4556. var x = touch.x,
  4557. y = touch.y,
  4558. clientX = touch.clientX,
  4559. clientY = touch.clientY; // 小程序环境会有x,y,这里就直接返回
  4560. if (x && y) {
  4561. return createEventObj(type, chart, x, y, event);
  4562. }
  4563. clientPoint = {
  4564. x: clientX,
  4565. y: clientY
  4566. };
  4567. } else {
  4568. // mouse相关事件
  4569. clientPoint = {
  4570. x: event.clientX,
  4571. y: event.clientY
  4572. };
  4573. } // 理论上应该是只有有在浏览器环境才会走到这里
  4574. var canvas = chart.get('canvas'); // 通过clientX, clientY 计算x, y
  4575. var point = getRelativePosition(clientPoint, canvas);
  4576. return createEventObj(type, chart, point.x, point.y, event);
  4577. }
  4578. function measureText(text, font, ctx) {
  4579. if (!ctx) {
  4580. ctx = document.createElement('canvas').getContext('2d');
  4581. }
  4582. ctx.font = font || '12px sans-serif';
  4583. return ctx.measureText(text);
  4584. }
  4585. /***/ }),
  4586. /* 63 */
  4587. /***/ (function(module, exports, __webpack_require__) {
  4588. "use strict";
  4589. var _interopRequireDefault = __webpack_require__(1);
  4590. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  4591. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  4592. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  4593. var _emit = _interopRequireDefault(__webpack_require__(42));
  4594. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  4595. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  4596. var Util = __webpack_require__(0);
  4597. var Base = /*#__PURE__*/function (_Emit) {
  4598. (0, _inheritsLoose2["default"])(Base, _Emit);
  4599. var _super = _createSuper(Base);
  4600. var _proto = Base.prototype;
  4601. _proto.getDefaultCfg = function getDefaultCfg() {
  4602. return {};
  4603. };
  4604. function Base(cfg) {
  4605. var _this;
  4606. _this = _Emit.call(this) || this;
  4607. var attrs = {};
  4608. var defaultCfg = _this.getDefaultCfg();
  4609. _this._attrs = attrs;
  4610. Util.mix(attrs, defaultCfg, cfg);
  4611. return _this;
  4612. }
  4613. _proto.get = function get(name) {
  4614. return this._attrs[name];
  4615. };
  4616. _proto.set = function set(name, value) {
  4617. this._attrs[name] = value;
  4618. };
  4619. _proto.destroy = function destroy() {
  4620. this._attrs = {};
  4621. this.destroyed = true;
  4622. };
  4623. return Base;
  4624. }(_emit["default"]);
  4625. module.exports = Base;
  4626. /***/ }),
  4627. /* 64 */
  4628. /***/ (function(module, exports) {
  4629. function _mix(dist, obj) {
  4630. for (var key in obj) {
  4631. if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {
  4632. dist[key] = obj[key];
  4633. }
  4634. }
  4635. }
  4636. var mix = function mix(dist, src1, src2, src3) {
  4637. if (src1) _mix(dist, src1);
  4638. if (src2) _mix(dist, src2);
  4639. if (src3) _mix(dist, src3);
  4640. return dist;
  4641. };
  4642. module.exports = mix;
  4643. /***/ }),
  4644. /* 65 */
  4645. /***/ (function(module, exports, __webpack_require__) {
  4646. /**
  4647. * @fileOverview 计算分类的的坐标点
  4648. * @author dxq613@gmail.com
  4649. */
  4650. var each = __webpack_require__(15);
  4651. var MAX_COUNT = 8;
  4652. var SUB_COUNT = 4; // 控制个数不能过小
  4653. function getSimpleArray(data) {
  4654. var arr = [];
  4655. each(data, function (sub) {
  4656. arr = arr.concat(sub);
  4657. });
  4658. return arr;
  4659. }
  4660. function getGreatestFactor(count, number) {
  4661. var i;
  4662. for (i = number; i > 0; i--) {
  4663. if (count % i === 0) {
  4664. break;
  4665. }
  4666. } // 如果是素数,没有可以整除的数字
  4667. if (i === 1) {
  4668. for (i = number; i > 0; i--) {
  4669. if ((count - 1) % i === 0) {
  4670. break;
  4671. }
  4672. }
  4673. }
  4674. return i;
  4675. }
  4676. module.exports = function (info) {
  4677. var rst = {};
  4678. var ticks = [];
  4679. var isRounding = info.isRounding;
  4680. var categories = getSimpleArray(info.data);
  4681. var length = categories.length;
  4682. var maxCount = info.maxCount || MAX_COUNT;
  4683. var tickCount;
  4684. if (isRounding) {
  4685. // 取整操作
  4686. tickCount = getGreatestFactor(length - 1, maxCount - 1) + 1; // 如果计算出来只有两个坐标点,则直接使用传入的 maxCount
  4687. if (tickCount === 2) {
  4688. tickCount = maxCount;
  4689. } else if (tickCount < maxCount - SUB_COUNT) {
  4690. tickCount = maxCount - SUB_COUNT;
  4691. }
  4692. } else {
  4693. tickCount = maxCount;
  4694. }
  4695. if (!isRounding && length <= tickCount + tickCount / 2) {
  4696. ticks = [].concat(categories);
  4697. } else {
  4698. var step = parseInt(length / (tickCount - 1), 10);
  4699. var groups = categories.map(function (e, i) {
  4700. return i % step === 0 ? categories.slice(i, i + step) : null;
  4701. }).filter(function (e) {
  4702. return e;
  4703. });
  4704. for (var i = 1, groupLen = groups.length; i < groupLen && (isRounding ? i * step < length - step : i < tickCount - 1); i++) {
  4705. ticks.push(groups[i][0]);
  4706. }
  4707. if (categories.length) {
  4708. ticks.unshift(categories[0]);
  4709. var last = categories[length - 1];
  4710. if (ticks.indexOf(last) === -1) {
  4711. ticks.push(last);
  4712. }
  4713. }
  4714. }
  4715. rst.categories = categories;
  4716. rst.ticks = ticks;
  4717. return rst;
  4718. };
  4719. /***/ }),
  4720. /* 66 */
  4721. /***/ (function(module, exports, __webpack_require__) {
  4722. "use strict";
  4723. var Util = __webpack_require__(0);
  4724. var Shape = __webpack_require__(10);
  4725. var SHAPE_MAP = {};
  4726. var INDEX = '_INDEX';
  4727. function getComparer(compare) {
  4728. return function (left, right) {
  4729. var result = compare(left, right);
  4730. return result === 0 ? left[INDEX] - right[INDEX] : result;
  4731. };
  4732. }
  4733. module.exports = {
  4734. getGroupClass: function getGroupClass() {},
  4735. getChildren: function getChildren() {
  4736. return this.get('children');
  4737. },
  4738. addShape: function addShape(type, cfg) {
  4739. if (cfg === void 0) {
  4740. cfg = {};
  4741. }
  4742. var canvas = this.get('canvas');
  4743. var shapeType = SHAPE_MAP[type];
  4744. if (!shapeType) {
  4745. shapeType = Util.upperFirst(type);
  4746. SHAPE_MAP[type] = shapeType;
  4747. }
  4748. cfg.canvas = canvas;
  4749. if (shapeType === 'Text' && canvas && canvas.get('fontFamily')) {
  4750. cfg.attrs.fontFamily = cfg.attrs.fontFamily || canvas.get('fontFamily');
  4751. }
  4752. var shape = new Shape[shapeType](cfg);
  4753. this.add(shape);
  4754. return shape;
  4755. },
  4756. addGroup: function addGroup(cfg) {
  4757. var canvas = this.get('canvas');
  4758. var groupClass = this.getGroupClass();
  4759. cfg = Util.mix({}, cfg);
  4760. cfg.canvas = canvas;
  4761. cfg.parent = this;
  4762. var rst = new groupClass(cfg);
  4763. this.add(rst);
  4764. return rst;
  4765. },
  4766. contain: function contain(item) {
  4767. var children = this.get('children');
  4768. return children.indexOf(item) > -1;
  4769. },
  4770. sort: function sort() {
  4771. var children = this.get('children');
  4772. for (var i = 0, len = children.length; i < len; i++) {
  4773. var child = children[i];
  4774. child[INDEX] = i;
  4775. }
  4776. children.sort(getComparer(function (obj1, obj2) {
  4777. return obj1.get('zIndex') - obj2.get('zIndex');
  4778. }));
  4779. return this;
  4780. },
  4781. clear: function clear() {
  4782. var children = this.get('children');
  4783. while (children.length !== 0) {
  4784. children[children.length - 1].remove(true);
  4785. }
  4786. return this;
  4787. },
  4788. add: function add(items) {
  4789. var self = this;
  4790. var children = self.get('children');
  4791. if (!Util.isArray(items)) {
  4792. items = [items];
  4793. }
  4794. for (var i = 0, len = items.length; i < len; i++) {
  4795. var item = items[i];
  4796. var parent = item.get('parent');
  4797. if (parent) {
  4798. var descendants = parent.get('children');
  4799. Util.Array.remove(descendants, item);
  4800. }
  4801. self._setEvn(item);
  4802. children.push(item);
  4803. }
  4804. return self;
  4805. },
  4806. _setEvn: function _setEvn(item) {
  4807. var self = this;
  4808. item._attrs.parent = self;
  4809. item._attrs.context = self._attrs.context;
  4810. item._attrs.canvas = self._attrs.canvas;
  4811. var clip = item._attrs.attrs.clip;
  4812. if (clip) {
  4813. clip.set('parent', self);
  4814. clip.set('context', self.get('context'));
  4815. }
  4816. if (item._attrs.isGroup) {
  4817. var children = item._attrs.children;
  4818. for (var i = 0, len = children.length; i < len; i++) {
  4819. item._setEvn(children[i]);
  4820. }
  4821. }
  4822. }
  4823. };
  4824. /***/ }),
  4825. /* 67 */
  4826. /***/ (function(module, exports, __webpack_require__) {
  4827. "use strict";
  4828. var _interopRequireDefault = __webpack_require__(1);
  4829. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  4830. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  4831. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  4832. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  4833. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  4834. var Util = __webpack_require__(0);
  4835. var Element = __webpack_require__(46);
  4836. var Container = __webpack_require__(66);
  4837. var Vector2 = __webpack_require__(13);
  4838. var Group = /*#__PURE__*/function (_Element) {
  4839. (0, _inheritsLoose2["default"])(Group, _Element);
  4840. var _super = _createSuper(Group);
  4841. function Group() {
  4842. return _Element.apply(this, arguments) || this;
  4843. }
  4844. var _proto = Group.prototype;
  4845. _proto._initProperties = function _initProperties() {
  4846. this._attrs = {
  4847. zIndex: 0,
  4848. visible: true,
  4849. destroyed: false,
  4850. isGroup: true,
  4851. children: []
  4852. };
  4853. };
  4854. _proto.drawInner = function drawInner(context) {
  4855. var children = this.get('children');
  4856. for (var i = 0, len = children.length; i < len; i++) {
  4857. var child = children[i];
  4858. child.draw(context);
  4859. }
  4860. return this;
  4861. };
  4862. _proto.getBBox = function getBBox() {
  4863. var self = this;
  4864. var minX = Infinity;
  4865. var maxX = -Infinity;
  4866. var minY = Infinity;
  4867. var maxY = -Infinity;
  4868. var children = self.get('children');
  4869. for (var i = 0, length = children.length; i < length; i++) {
  4870. var child = children[i];
  4871. if (child.get('visible')) {
  4872. var box = child.getBBox();
  4873. if (!box) {
  4874. continue;
  4875. }
  4876. var leftTop = [box.minX, box.minY];
  4877. var leftBottom = [box.minX, box.maxY];
  4878. var rightTop = [box.maxX, box.minY];
  4879. var rightBottom = [box.maxX, box.maxY];
  4880. var matrix = child.attr('matrix');
  4881. Vector2.transformMat2d(leftTop, leftTop, matrix);
  4882. Vector2.transformMat2d(leftBottom, leftBottom, matrix);
  4883. Vector2.transformMat2d(rightTop, rightTop, matrix);
  4884. Vector2.transformMat2d(rightBottom, rightBottom, matrix);
  4885. minX = Math.min(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0], minX);
  4886. maxX = Math.max(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0], maxX);
  4887. minY = Math.min(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1], minY);
  4888. maxY = Math.max(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1], maxY);
  4889. }
  4890. }
  4891. return {
  4892. minX: minX,
  4893. minY: minY,
  4894. maxX: maxX,
  4895. maxY: maxY,
  4896. x: minX,
  4897. y: minY,
  4898. width: maxX - minX,
  4899. height: maxY - minY
  4900. };
  4901. };
  4902. _proto.destroy = function destroy() {
  4903. if (this.get('destroyed')) {
  4904. return;
  4905. }
  4906. this.clear();
  4907. _Element.prototype.destroy.call(this);
  4908. };
  4909. return Group;
  4910. }(Element);
  4911. Util.mix(Group.prototype, Container, {
  4912. getGroupClass: function getGroupClass() {
  4913. return Group;
  4914. }
  4915. });
  4916. module.exports = Group;
  4917. /***/ }),
  4918. /* 68 */
  4919. /***/ (function(module, exports, __webpack_require__) {
  4920. "use strict";
  4921. var Util = __webpack_require__(0);
  4922. var Shape = __webpack_require__(19);
  4923. var ShapeUtil = __webpack_require__(38);
  4924. var Global = __webpack_require__(6); // register line geom
  4925. var Line = Shape.registerFactory('line', {
  4926. defaultShapeType: 'line'
  4927. });
  4928. function getStyle(cfg) {
  4929. var style = {
  4930. strokeStyle: cfg.color
  4931. };
  4932. if (cfg.size >= 0) {
  4933. style.lineWidth = cfg.size;
  4934. }
  4935. Util.mix(style, cfg.style);
  4936. return Util.mix({}, Global.shape.line, style);
  4937. }
  4938. function drawLines(cfg, container, style, smooth) {
  4939. var points = cfg.points;
  4940. if (points.length && Util.isArray(points[0].y)) {
  4941. var topPoints = [];
  4942. var bottomPoints = [];
  4943. for (var i = 0, len = points.length; i < len; i++) {
  4944. var point = points[i];
  4945. var tmp = ShapeUtil.splitPoints(point);
  4946. bottomPoints.push(tmp[0]);
  4947. topPoints.push(tmp[1]);
  4948. }
  4949. if (cfg.isInCircle) {
  4950. topPoints.push(topPoints[0]);
  4951. bottomPoints.push(bottomPoints[0]);
  4952. }
  4953. if (cfg.isStack) {
  4954. return container.addShape('Polyline', {
  4955. className: 'line',
  4956. attrs: Util.mix({
  4957. points: topPoints,
  4958. smooth: smooth
  4959. }, style)
  4960. });
  4961. }
  4962. var topShape = container.addShape('Polyline', {
  4963. className: 'line',
  4964. attrs: Util.mix({
  4965. points: topPoints,
  4966. smooth: smooth
  4967. }, style)
  4968. });
  4969. var bottomShape = container.addShape('Polyline', {
  4970. className: 'line',
  4971. attrs: Util.mix({
  4972. points: bottomPoints,
  4973. smooth: smooth
  4974. }, style)
  4975. });
  4976. return [topShape, bottomShape];
  4977. }
  4978. if (cfg.isInCircle) {
  4979. points.push(points[0]);
  4980. }
  4981. return container.addShape('Polyline', {
  4982. className: 'line',
  4983. attrs: Util.mix({
  4984. points: points,
  4985. smooth: smooth
  4986. }, style)
  4987. });
  4988. }
  4989. var SHAPES = ['line', 'smooth', 'dash'];
  4990. Util.each(SHAPES, function (shapeType) {
  4991. Shape.registerShape('line', shapeType, {
  4992. draw: function draw(cfg, container) {
  4993. var smooth = shapeType === 'smooth';
  4994. var style = getStyle(cfg);
  4995. if (shapeType === 'dash') {
  4996. style.lineDash = Global.lineDash;
  4997. }
  4998. return drawLines(cfg, container, style, smooth);
  4999. }
  5000. });
  5001. });
  5002. module.exports = Line;
  5003. /***/ }),
  5004. /* 69 */
  5005. /***/ (function(module, exports, __webpack_require__) {
  5006. function _inheritsLoose(subClass, superClass) {
  5007. subClass.prototype = Object.create(superClass.prototype);
  5008. subClass.prototype.constructor = subClass;
  5009. subClass.__proto__ = superClass;
  5010. }
  5011. var Base = __webpack_require__(26);
  5012. var catAuto = __webpack_require__(65);
  5013. var each = __webpack_require__(15);
  5014. var isNumber = __webpack_require__(36);
  5015. var isString = __webpack_require__(48);
  5016. var Category = /*#__PURE__*/function (_Base) {
  5017. _inheritsLoose(Category, _Base);
  5018. function Category() {
  5019. return _Base.apply(this, arguments) || this;
  5020. }
  5021. var _proto = Category.prototype;
  5022. _proto._initDefaultCfg = function _initDefaultCfg() {
  5023. _Base.prototype._initDefaultCfg.call(this);
  5024. this.type = 'cat';
  5025. /**
  5026. * 是否分类度量
  5027. * @type {Boolean}
  5028. */
  5029. this.isCategory = true;
  5030. this.isRounding = true; // 是否进行取整操作
  5031. }
  5032. /**
  5033. * @override
  5034. */
  5035. ;
  5036. _proto.init = function init() {
  5037. var self = this;
  5038. var values = self.values;
  5039. var tickCount = self.tickCount;
  5040. each(values, function (v, i) {
  5041. values[i] = v.toString();
  5042. });
  5043. if (!self.ticks) {
  5044. var ticks = values;
  5045. if (tickCount) {
  5046. var temp = catAuto({
  5047. maxCount: tickCount,
  5048. data: values,
  5049. isRounding: self.isRounding
  5050. });
  5051. ticks = temp.ticks;
  5052. }
  5053. this.ticks = ticks;
  5054. }
  5055. }
  5056. /**
  5057. * @override
  5058. */
  5059. ;
  5060. _proto.getText = function getText(value) {
  5061. if (this.values.indexOf(value) === -1 && isNumber(value)) {
  5062. value = this.values[Math.round(value)];
  5063. }
  5064. return _Base.prototype.getText.call(this, value);
  5065. }
  5066. /**
  5067. * @override
  5068. */
  5069. ;
  5070. _proto.translate = function translate(value) {
  5071. var index = this.values.indexOf(value);
  5072. if (index === -1 && isNumber(value)) {
  5073. index = value;
  5074. } else if (index === -1) {
  5075. index = NaN;
  5076. }
  5077. return index;
  5078. }
  5079. /**
  5080. * @override
  5081. */
  5082. ;
  5083. _proto.scale = function scale(value) {
  5084. var rangeMin = this.rangeMin();
  5085. var rangeMax = this.rangeMax();
  5086. var percent;
  5087. if (isString(value) || this.values.indexOf(value) !== -1) {
  5088. value = this.translate(value);
  5089. }
  5090. if (this.values.length > 1) {
  5091. percent = value / (this.values.length - 1);
  5092. } else {
  5093. percent = value;
  5094. }
  5095. return rangeMin + percent * (rangeMax - rangeMin);
  5096. }
  5097. /**
  5098. * @override
  5099. */
  5100. ;
  5101. _proto.invert = function invert(value) {
  5102. if (isString(value)) {
  5103. // 如果已经是字符串
  5104. return value;
  5105. }
  5106. var min = this.rangeMin();
  5107. var max = this.rangeMax(); // 归一到 范围内
  5108. if (value < min) {
  5109. value = min;
  5110. }
  5111. if (value > max) {
  5112. value = max;
  5113. }
  5114. var percent = (value - min) / (max - min);
  5115. var index = Math.round(percent * (this.values.length - 1)) % this.values.length;
  5116. index = index || 0;
  5117. return this.values[index];
  5118. };
  5119. return Category;
  5120. }(Base);
  5121. Base.Cat = Category;
  5122. module.exports = Category;
  5123. /***/ }),
  5124. /* 70 */
  5125. /***/ (function(module, exports, __webpack_require__) {
  5126. "use strict";
  5127. module.exports = {
  5128. requestAnimationFrame: typeof window === 'object' && window.requestAnimationFrame ? window.requestAnimationFrame : function (fn) {
  5129. return setTimeout(fn, 16);
  5130. }
  5131. };
  5132. /***/ }),
  5133. /* 71 */
  5134. /***/ (function(module, exports, __webpack_require__) {
  5135. "use strict";
  5136. /**
  5137. * @fileOverview convert the line to curve
  5138. * @author dxq613@gmail.com
  5139. */
  5140. var Vector2 = __webpack_require__(13);
  5141. function getPoint(v) {
  5142. return [v.x, v.y];
  5143. }
  5144. function smoothBezier(points, smooth, isLoop, constraint) {
  5145. var cps = [];
  5146. var prevPoint;
  5147. var nextPoint;
  5148. var hasConstraint = !!constraint;
  5149. var min;
  5150. var max;
  5151. var point;
  5152. var len;
  5153. var l;
  5154. var i;
  5155. if (hasConstraint) {
  5156. min = [Infinity, Infinity];
  5157. max = [-Infinity, -Infinity];
  5158. for (i = 0, l = points.length; i < l; i++) {
  5159. point = getPoint(points[i]);
  5160. Vector2.min(min, min, point);
  5161. Vector2.max(max, max, point);
  5162. }
  5163. Vector2.min(min, min, constraint[0]);
  5164. Vector2.max(max, max, constraint[1]);
  5165. }
  5166. for (i = 0, len = points.length; i < len; i++) {
  5167. point = getPoint(points[i]);
  5168. if (isLoop) {
  5169. prevPoint = getPoint(points[i ? i - 1 : len - 1]);
  5170. nextPoint = getPoint(points[(i + 1) % len]);
  5171. } else {
  5172. if (i === 0 || i === len - 1) {
  5173. cps.push([point[0], point[1]]);
  5174. continue;
  5175. } else {
  5176. prevPoint = getPoint(points[i - 1]);
  5177. nextPoint = getPoint(points[i + 1]);
  5178. }
  5179. }
  5180. var v = Vector2.sub([], nextPoint, prevPoint);
  5181. Vector2.scale(v, v, smooth);
  5182. var d0 = Vector2.distance(point, prevPoint);
  5183. var d1 = Vector2.distance(point, nextPoint);
  5184. var sum = d0 + d1;
  5185. if (sum !== 0) {
  5186. d0 /= sum;
  5187. d1 /= sum;
  5188. }
  5189. var v1 = Vector2.scale([], v, -d0);
  5190. var v2 = Vector2.scale([], v, d1);
  5191. var cp0 = Vector2.add([], point, v1);
  5192. var cp1 = Vector2.add([], point, v2);
  5193. if (hasConstraint) {
  5194. Vector2.max(cp0, cp0, min);
  5195. Vector2.min(cp0, cp0, max);
  5196. Vector2.max(cp1, cp1, min);
  5197. Vector2.min(cp1, cp1, max);
  5198. }
  5199. cps.push([cp0[0], cp0[1]]);
  5200. cps.push([cp1[0], cp1[1]]);
  5201. }
  5202. if (isLoop) {
  5203. cps.push(cps.shift());
  5204. }
  5205. return cps;
  5206. }
  5207. function catmullRom2bezier(pointList, z, constraint) {
  5208. var isLoop = !!z;
  5209. var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);
  5210. var len = pointList.length;
  5211. var d1 = [];
  5212. var cp1;
  5213. var cp2;
  5214. var p;
  5215. for (var i = 0; i < len - 1; i++) {
  5216. cp1 = controlPointList[i * 2];
  5217. cp2 = controlPointList[i * 2 + 1];
  5218. p = pointList[i + 1];
  5219. d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p.x, p.y]);
  5220. }
  5221. if (isLoop) {
  5222. cp1 = controlPointList[len];
  5223. cp2 = controlPointList[len + 1];
  5224. p = pointList[0];
  5225. d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p.x, p.y]);
  5226. }
  5227. return d1;
  5228. }
  5229. module.exports = {
  5230. smooth: catmullRom2bezier
  5231. };
  5232. /***/ }),
  5233. /* 72 */
  5234. /***/ (function(module, exports, __webpack_require__) {
  5235. "use strict";
  5236. var _interopRequireDefault = __webpack_require__(1);
  5237. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  5238. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  5239. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  5240. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  5241. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  5242. var Geom = __webpack_require__(17);
  5243. var ShapeUtil = __webpack_require__(38);
  5244. var Util = __webpack_require__(0);
  5245. __webpack_require__(68);
  5246. var Path = /*#__PURE__*/function (_Geom) {
  5247. (0, _inheritsLoose2["default"])(Path, _Geom);
  5248. var _super = _createSuper(Path);
  5249. function Path() {
  5250. return _Geom.apply(this, arguments) || this;
  5251. }
  5252. var _proto = Path.prototype;
  5253. _proto.getDefaultCfg = function getDefaultCfg() {
  5254. var cfg = _Geom.prototype.getDefaultCfg.call(this);
  5255. cfg.type = 'path';
  5256. cfg.shapeType = 'line';
  5257. return cfg;
  5258. };
  5259. _proto.getDrawCfg = function getDrawCfg(obj) {
  5260. var cfg = _Geom.prototype.getDrawCfg.call(this, obj);
  5261. cfg.isStack = this.hasAdjust('stack');
  5262. return cfg;
  5263. };
  5264. _proto.draw = function draw(data, shapeFactory) {
  5265. var self = this;
  5266. var container = self.get('container');
  5267. var yScale = self.getYScale();
  5268. var connectNulls = self.get('connectNulls');
  5269. var splitArray = ShapeUtil.splitArray(data, yScale.field, connectNulls);
  5270. var cfg = this.getDrawCfg(data[0]);
  5271. cfg.origin = data;
  5272. Util.each(splitArray, function (subData, splitedIndex) {
  5273. cfg.splitedIndex = splitedIndex;
  5274. cfg.points = subData;
  5275. self.drawShape(cfg.shape, data[0], cfg, container, shapeFactory);
  5276. });
  5277. };
  5278. return Path;
  5279. }(Geom);
  5280. Geom.Path = Path;
  5281. module.exports = Path;
  5282. /***/ }),
  5283. /* 73 */
  5284. /***/ (function(module, exports, __webpack_require__) {
  5285. "use strict";
  5286. var _const = __webpack_require__(47);
  5287. /**
  5288. * @fileOverview Utility for calculate the with ratui in x axis
  5289. * @author sima.zhang1990@gmail.com
  5290. * @author dxq613@gmail.com
  5291. */
  5292. var Global = __webpack_require__(6);
  5293. var Util = __webpack_require__(0);
  5294. var SizeMixin = {
  5295. initEvent: function initEvent() {
  5296. var _this = this;
  5297. var chart = this.get('chart');
  5298. if (!chart) {
  5299. return;
  5300. }
  5301. chart.on(_const.EVENT_AFTER_SIZE_CHANGE, function () {
  5302. _this.set('_width', null);
  5303. });
  5304. },
  5305. getDefalutSize: function getDefalutSize() {
  5306. var defaultSize = this.get('defaultSize');
  5307. if (!defaultSize) {
  5308. var coord = this.get('coord');
  5309. var xScale = this.getXScale();
  5310. var dataArray = this.get('dataArray');
  5311. var values = Util.uniq(xScale.values);
  5312. var count = values.length;
  5313. var range = xScale.range;
  5314. var normalizeSize = 1 / count;
  5315. var widthRatio = 1;
  5316. if (coord && coord.isPolar) {
  5317. if (coord.transposed && count > 1) {
  5318. widthRatio = Global.widthRatio.multiplePie;
  5319. } else {
  5320. widthRatio = Global.widthRatio.rose;
  5321. }
  5322. } else {
  5323. if (xScale.isLinear) {
  5324. normalizeSize *= range[1] - range[0];
  5325. }
  5326. widthRatio = Global.widthRatio.column;
  5327. }
  5328. normalizeSize *= widthRatio;
  5329. if (this.hasAdjust('dodge')) {
  5330. normalizeSize = normalizeSize / dataArray.length;
  5331. }
  5332. defaultSize = normalizeSize;
  5333. this.set('defaultSize', defaultSize);
  5334. }
  5335. return defaultSize;
  5336. },
  5337. getDimWidth: function getDimWidth(dimName) {
  5338. var coord = this.get('coord');
  5339. var start = coord.convertPoint({
  5340. x: 0,
  5341. y: 0
  5342. });
  5343. var end = coord.convertPoint({
  5344. x: dimName === 'x' ? 1 : 0,
  5345. y: dimName === 'x' ? 0 : 1
  5346. });
  5347. var width = 0;
  5348. if (start && end) {
  5349. width = Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));
  5350. }
  5351. return width;
  5352. },
  5353. _getWidth: function _getWidth() {
  5354. var width = this.get('_width');
  5355. if (!width) {
  5356. var coord = this.get('coord');
  5357. if (coord && coord.isPolar && !coord.transposed) {
  5358. width = (coord.endAngle - coord.startAngle) * coord.circleRadius;
  5359. } else {
  5360. width = this.getDimWidth('x');
  5361. }
  5362. this.set('_width', width);
  5363. }
  5364. return width;
  5365. },
  5366. _toNormalizedSize: function _toNormalizedSize(size) {
  5367. var width = this._getWidth();
  5368. return size / width;
  5369. },
  5370. _toCoordSize: function _toCoordSize(normalizeSize) {
  5371. var width = this._getWidth();
  5372. return width * normalizeSize;
  5373. },
  5374. getNormalizedSize: function getNormalizedSize(obj) {
  5375. var size = this.getAttrValue('size', obj);
  5376. if (Util.isNil(size)) {
  5377. size = this.getDefalutSize();
  5378. } else {
  5379. size = this._toNormalizedSize(size);
  5380. }
  5381. return size;
  5382. },
  5383. getSize: function getSize(obj) {
  5384. var size = this.getAttrValue('size', obj);
  5385. if (Util.isNil(size)) {
  5386. var normalizeSize = this.getDefalutSize();
  5387. size = this._toCoordSize(normalizeSize);
  5388. }
  5389. return size;
  5390. }
  5391. };
  5392. module.exports = SizeMixin;
  5393. /***/ }),
  5394. /* 74 */,
  5395. /* 75 */
  5396. /***/ (function(module, exports, __webpack_require__) {
  5397. "use strict";
  5398. exports.__esModule = true;
  5399. exports.merge = merge;
  5400. exports.values = values;
  5401. exports.firstValue = firstValue;
  5402. exports.group = group;
  5403. exports.groupToMap = groupToMap;
  5404. exports.remove = remove;
  5405. exports.getRange = getRange;
  5406. var _util = __webpack_require__(20);
  5407. function merge(dataArray) {
  5408. var rst = [];
  5409. for (var i = 0, len = dataArray.length; i < len; i++) {
  5410. rst = rst.concat(dataArray[i]);
  5411. }
  5412. return rst;
  5413. }
  5414. function values(data, name) {
  5415. var rst = [];
  5416. var tmpMap = {};
  5417. for (var i = 0, len = data.length; i < len; i++) {
  5418. var obj = data[i];
  5419. var value = obj[name];
  5420. if (!(0, _util.isNil)(value)) {
  5421. if (!(0, _util.isArray)(value)) {
  5422. if (!tmpMap[value]) {
  5423. rst.push(value);
  5424. tmpMap[value] = true;
  5425. }
  5426. } else {
  5427. (0, _util.each)(value, function (val) {
  5428. if (!tmpMap[val]) {
  5429. rst.push(val);
  5430. tmpMap[val] = true;
  5431. }
  5432. });
  5433. }
  5434. }
  5435. }
  5436. return rst;
  5437. }
  5438. function firstValue(data, name) {
  5439. var rst = null;
  5440. for (var i = 0, len = data.length; i < len; i++) {
  5441. var obj = data[i];
  5442. var value = obj[name];
  5443. if (!(0, _util.isNil)(value)) {
  5444. if ((0, _util.isArray)(value)) {
  5445. rst = value[0];
  5446. } else {
  5447. rst = value;
  5448. }
  5449. break;
  5450. }
  5451. }
  5452. return rst;
  5453. }
  5454. function groupToMap(data, fields) {
  5455. if (!fields) {
  5456. return {
  5457. 0: data
  5458. };
  5459. }
  5460. var callback = function callback(row) {
  5461. var unique = '_';
  5462. for (var i = 0, l = fields.length; i < l; i++) {
  5463. unique += row[fields[i]] && row[fields[i]].toString();
  5464. }
  5465. return unique;
  5466. };
  5467. var groups = {};
  5468. for (var i = 0, len = data.length; i < len; i++) {
  5469. var row = data[i];
  5470. var key = callback(row);
  5471. if (groups[key]) {
  5472. groups[key].push(row);
  5473. } else {
  5474. groups[key] = [row];
  5475. }
  5476. }
  5477. return groups;
  5478. }
  5479. function group(data, fields, appendConditions) {
  5480. if (appendConditions === void 0) {
  5481. appendConditions = {};
  5482. }
  5483. if (!fields) {
  5484. return [data];
  5485. }
  5486. var groups = groupToMap(data, fields);
  5487. var array = [];
  5488. if (fields.length === 1 && appendConditions[fields[0]]) {
  5489. var _values = appendConditions[fields[0]];
  5490. (0, _util.each)(_values, function (value) {
  5491. value = '_' + value;
  5492. array.push(groups[value]);
  5493. });
  5494. } else {
  5495. for (var i in groups) {
  5496. array.push(groups[i]);
  5497. }
  5498. }
  5499. return array;
  5500. }
  5501. function remove(arr, obj) {
  5502. if (!arr) {
  5503. return;
  5504. }
  5505. var index = arr.indexOf(obj);
  5506. if (index !== -1) {
  5507. arr.splice(index, 1);
  5508. }
  5509. }
  5510. function getRange(values) {
  5511. if (!values.length) {
  5512. return {
  5513. min: 0,
  5514. max: 0
  5515. };
  5516. }
  5517. var max = Math.max.apply(null, values);
  5518. var min = Math.min.apply(null, values);
  5519. return {
  5520. min: min,
  5521. max: max
  5522. };
  5523. }
  5524. /***/ }),
  5525. /* 76 */,
  5526. /* 77 */
  5527. /***/ (function(module, exports, __webpack_require__) {
  5528. "use strict";
  5529. var Core = {};
  5530. var Global = __webpack_require__(6);
  5531. Core.Global = Global;
  5532. Core.version = Global.version;
  5533. Core.Chart = __webpack_require__(30);
  5534. Core.Shape = __webpack_require__(19);
  5535. Core.G = __webpack_require__(16);
  5536. Core.Util = __webpack_require__(0);
  5537. Core.Helper = __webpack_require__(37); // Core.track = function(enable) {
  5538. // Global.trackable = enable;
  5539. // };
  5540. // require('./track');
  5541. // 2018-12-27 关闭打点
  5542. Core.track = function () {
  5543. return null;
  5544. };
  5545. module.exports = Core;
  5546. /***/ }),
  5547. /* 78 */
  5548. /***/ (function(module, exports, __webpack_require__) {
  5549. "use strict";
  5550. /**
  5551. * @fileOverview default theme
  5552. * @author dxq613@gail.com
  5553. */
  5554. var Util = __webpack_require__(0);
  5555. var color1 = '#E8E8E8'; // color of axis-line and axis-grid
  5556. var color2 = '#808080'; // color of axis label
  5557. var defaultAxis = {
  5558. label: {
  5559. fill: color2,
  5560. fontSize: 10
  5561. },
  5562. line: {
  5563. stroke: color1,
  5564. lineWidth: 1
  5565. },
  5566. grid: {
  5567. type: 'line',
  5568. stroke: color1,
  5569. lineWidth: 1,
  5570. lineDash: [2]
  5571. },
  5572. tickLine: null,
  5573. labelOffset: 7.5
  5574. };
  5575. var Theme = {
  5576. fontFamily: '"Helvetica Neue", "San Francisco", Helvetica, Tahoma, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", sans-serif',
  5577. defaultColor: '#1890FF',
  5578. pixelRatio: 1,
  5579. padding: 'auto',
  5580. appendPadding: 15,
  5581. colors: ['#1890FF', '#2FC25B', '#FACC14', '#223273', '#8543E0', '#13C2C2', '#3436C7', '#F04864'],
  5582. shapes: {
  5583. line: ['line', 'dash'],
  5584. point: ['circle', 'hollowCircle']
  5585. },
  5586. sizes: [4, 10],
  5587. axis: {
  5588. common: defaultAxis,
  5589. // common axis configuration
  5590. bottom: Util.mix({}, defaultAxis, {
  5591. grid: null
  5592. }),
  5593. left: Util.mix({}, defaultAxis, {
  5594. line: null
  5595. }),
  5596. right: Util.mix({}, defaultAxis, {
  5597. line: null
  5598. }),
  5599. circle: Util.mix({}, defaultAxis, {
  5600. line: null
  5601. }),
  5602. radius: Util.mix({}, defaultAxis, {
  5603. labelOffset: 4
  5604. })
  5605. },
  5606. shape: {
  5607. line: {
  5608. lineWidth: 2,
  5609. lineJoin: 'round',
  5610. lineCap: 'round'
  5611. },
  5612. point: {
  5613. lineWidth: 0,
  5614. size: 3
  5615. },
  5616. area: {
  5617. fillOpacity: 0.1
  5618. }
  5619. },
  5620. _defaultAxis: defaultAxis
  5621. };
  5622. module.exports = Theme;
  5623. /***/ }),
  5624. /* 79 */
  5625. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5626. "use strict";
  5627. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter__ = __webpack_require__(39);
  5628. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__contains__ = __webpack_require__(28);
  5629. /**
  5630. * Flattens `array` a single level deep.
  5631. *
  5632. * @param {Array} arr The array to inspect.
  5633. * @param {Array} values The values to exclude.
  5634. * @return {Array} Returns the new array of filtered values.
  5635. * @example
  5636. * difference([2, 1], [2, 3]); // => [1]
  5637. */
  5638. var difference = function (arr, values) {
  5639. if (values === void 0) {
  5640. values = [];
  5641. }
  5642. return Object(__WEBPACK_IMPORTED_MODULE_0__filter__["a" /* default */])(arr, function (value) {
  5643. return !Object(__WEBPACK_IMPORTED_MODULE_1__contains__["a" /* default */])(values, value);
  5644. });
  5645. };
  5646. /* harmony default export */ __webpack_exports__["a"] = (difference);
  5647. /***/ }),
  5648. /* 80 */
  5649. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5650. "use strict";
  5651. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(9);
  5652. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_match__ = __webpack_require__(51);
  5653. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_array__ = __webpack_require__(5);
  5654. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__is_plain_object__ = __webpack_require__(24);
  5655. function find(arr, predicate) {
  5656. if (!Object(__WEBPACK_IMPORTED_MODULE_2__is_array__["a" /* default */])(arr)) return null;
  5657. var _predicate;
  5658. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_function__["a" /* default */])(predicate)) {
  5659. _predicate = predicate;
  5660. }
  5661. if (Object(__WEBPACK_IMPORTED_MODULE_3__is_plain_object__["a" /* default */])(predicate)) {
  5662. _predicate = function (a) {
  5663. return Object(__WEBPACK_IMPORTED_MODULE_1__is_match__["a" /* default */])(a, predicate);
  5664. };
  5665. }
  5666. if (_predicate) {
  5667. for (var i = 0; i < arr.length; i += 1) {
  5668. if (_predicate(arr[i])) {
  5669. return arr[i];
  5670. }
  5671. }
  5672. }
  5673. return null;
  5674. }
  5675. /* harmony default export */ __webpack_exports__["a"] = (find);
  5676. /***/ }),
  5677. /* 81 */
  5678. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5679. "use strict";
  5680. function findIndex(arr, predicate, fromIndex) {
  5681. if (fromIndex === void 0) {
  5682. fromIndex = 0;
  5683. }
  5684. for (var i = fromIndex; i < arr.length; i++) {
  5685. if (predicate(arr[i], i)) {
  5686. // 找到终止循环
  5687. return i;
  5688. }
  5689. }
  5690. return -1;
  5691. }
  5692. /* harmony default export */ __webpack_exports__["a"] = (findIndex);
  5693. /***/ }),
  5694. /* 82 */
  5695. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5696. "use strict";
  5697. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14);
  5698. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5);
  5699. var firstValue = function (data, name) {
  5700. var rst = null;
  5701. for (var i = 0; i < data.length; i++) {
  5702. var obj = data[i];
  5703. var value = obj[name];
  5704. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(value)) {
  5705. if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(value)) {
  5706. rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云
  5707. } else {
  5708. rst = value;
  5709. }
  5710. break;
  5711. }
  5712. }
  5713. return rst;
  5714. };
  5715. /* harmony default export */ __webpack_exports__["a"] = (firstValue);
  5716. /***/ }),
  5717. /* 83 */
  5718. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5719. "use strict";
  5720. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  5721. /**
  5722. * Flattens `array` a single level deep.
  5723. *
  5724. * @param {Array} arr The array to flatten.
  5725. * @return {Array} Returns the new flattened array.
  5726. * @example
  5727. *
  5728. * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]
  5729. */
  5730. var flatten = function (arr) {
  5731. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(arr)) {
  5732. return [];
  5733. }
  5734. var rst = [];
  5735. for (var i = 0; i < arr.length; i++) {
  5736. rst = rst.concat(arr[i]);
  5737. }
  5738. return rst;
  5739. };
  5740. /* harmony default export */ __webpack_exports__["a"] = (flatten);
  5741. /***/ }),
  5742. /* 84 */
  5743. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5744. "use strict";
  5745. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  5746. /**
  5747. * Flattens `array` a single level deep.
  5748. *
  5749. * @param {Array} arr The array to flatten.
  5750. * @param {Array} result The array to return.
  5751. * @return {Array} Returns the new flattened array.
  5752. * @example
  5753. *
  5754. * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]
  5755. */
  5756. var flattenDeep = function (arr, result) {
  5757. if (result === void 0) {
  5758. result = [];
  5759. }
  5760. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(arr)) {
  5761. result.push(arr);
  5762. } else {
  5763. for (var i = 0; i < arr.length; i += 1) {
  5764. flattenDeep(arr[i], result);
  5765. }
  5766. }
  5767. return result;
  5768. };
  5769. /* harmony default export */ __webpack_exports__["a"] = (flattenDeep);
  5770. /***/ }),
  5771. /* 85 */
  5772. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5773. "use strict";
  5774. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  5775. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(39);
  5776. var getRange = function (values) {
  5777. // 存在 NaN 时,min,max 判定会出问题
  5778. values = Object(__WEBPACK_IMPORTED_MODULE_1__filter__["a" /* default */])(values, function (v) {
  5779. return !isNaN(v);
  5780. });
  5781. if (!values.length) {
  5782. // 如果没有数值则直接返回0
  5783. return {
  5784. min: 0,
  5785. max: 0
  5786. };
  5787. }
  5788. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(values[0])) {
  5789. var tmp = [];
  5790. for (var i = 0; i < values.length; i++) {
  5791. tmp = tmp.concat(values[i]);
  5792. }
  5793. values = tmp;
  5794. }
  5795. var max = Math.max.apply(null, values);
  5796. var min = Math.min.apply(null, values);
  5797. return {
  5798. min: min,
  5799. max: max
  5800. };
  5801. };
  5802. /* harmony default export */ __webpack_exports__["a"] = (getRange);
  5803. /***/ }),
  5804. /* 86 */
  5805. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5806. "use strict";
  5807. var arrPrototype = Array.prototype;
  5808. var splice = arrPrototype.splice;
  5809. var indexOf = arrPrototype.indexOf;
  5810. var pull = function (arr) {
  5811. var values = [];
  5812. for (var _i = 1; _i < arguments.length; _i++) {
  5813. values[_i - 1] = arguments[_i];
  5814. }
  5815. for (var i = 0; i < values.length; i++) {
  5816. var value = values[i];
  5817. var fromIndex = -1;
  5818. while ((fromIndex = indexOf.call(arr, value)) > -1) {
  5819. splice.call(arr, fromIndex, 1);
  5820. }
  5821. }
  5822. return arr;
  5823. };
  5824. /* harmony default export */ __webpack_exports__["a"] = (pull);
  5825. /***/ }),
  5826. /* 87 */
  5827. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5828. "use strict";
  5829. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  5830. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5);
  5831. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_plain_object__ = __webpack_require__(24);
  5832. var reduce = function (arr, fn, init) {
  5833. if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(arr) && !Object(__WEBPACK_IMPORTED_MODULE_2__is_plain_object__["a" /* default */])(arr)) {
  5834. return arr;
  5835. }
  5836. var result = init;
  5837. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (data, i) {
  5838. result = fn(result, data, i);
  5839. });
  5840. return result;
  5841. };
  5842. /* harmony default export */ __webpack_exports__["a"] = (reduce);
  5843. /***/ }),
  5844. /* 88 */
  5845. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5846. "use strict";
  5847. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7);
  5848. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pull_at__ = __webpack_require__(53);
  5849. var remove = function (arr, predicate) {
  5850. /**
  5851. * const arr = [1, 2, 3, 4]
  5852. * const evens = remove(arr, n => n % 2 == 0)
  5853. * console.log(arr) // => [1, 3]
  5854. * console.log(evens) // => [2, 4]
  5855. */
  5856. var result = [];
  5857. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(arr)) {
  5858. return result;
  5859. }
  5860. var i = -1;
  5861. var indexes = [];
  5862. var length = arr.length;
  5863. while (++i < length) {
  5864. var value = arr[i];
  5865. if (predicate(value, i, arr)) {
  5866. result.push(value);
  5867. indexes.push(i);
  5868. }
  5869. }
  5870. Object(__WEBPACK_IMPORTED_MODULE_1__pull_at__["a" /* default */])(arr, indexes);
  5871. return result;
  5872. };
  5873. /* harmony default export */ __webpack_exports__["a"] = (remove);
  5874. /***/ }),
  5875. /* 89 */
  5876. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5877. "use strict";
  5878. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  5879. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(18);
  5880. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(9);
  5881. function sortBy(arr, key) {
  5882. var comparer;
  5883. if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(key)) {
  5884. comparer = function (a, b) {
  5885. return key(a) - key(b);
  5886. };
  5887. } else {
  5888. var keys_1 = [];
  5889. if (Object(__WEBPACK_IMPORTED_MODULE_1__is_string__["a" /* default */])(key)) {
  5890. keys_1.push(key);
  5891. } else if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(key)) {
  5892. keys_1 = key;
  5893. }
  5894. comparer = function (a, b) {
  5895. for (var i = 0; i < keys_1.length; i += 1) {
  5896. var prop = keys_1[i];
  5897. if (a[prop] > b[prop]) {
  5898. return 1;
  5899. }
  5900. if (a[prop] < b[prop]) {
  5901. return -1;
  5902. }
  5903. }
  5904. return 0;
  5905. };
  5906. }
  5907. arr.sort(comparer);
  5908. return arr;
  5909. }
  5910. /* harmony default export */ __webpack_exports__["a"] = (sortBy);
  5911. /***/ }),
  5912. /* 90 */
  5913. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5914. "use strict";
  5915. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__uniq__ = __webpack_require__(54);
  5916. var union = function () {
  5917. var sources = [];
  5918. for (var _i = 0; _i < arguments.length; _i++) {
  5919. sources[_i] = arguments[_i];
  5920. }
  5921. return Object(__WEBPACK_IMPORTED_MODULE_0__uniq__["a" /* default */])([].concat.apply([], sources));
  5922. };
  5923. /* harmony default export */ __webpack_exports__["a"] = (union);
  5924. /***/ }),
  5925. /* 91 */
  5926. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5927. "use strict";
  5928. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  5929. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5);
  5930. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_nil__ = __webpack_require__(14);
  5931. /* harmony default export */ __webpack_exports__["a"] = (function (data, name) {
  5932. var rst = [];
  5933. var tmpMap = {};
  5934. data.forEach(function (obj) {
  5935. var value = obj[name];
  5936. if (!Object(__WEBPACK_IMPORTED_MODULE_2__is_nil__["a" /* default */])(value)) {
  5937. // flatten
  5938. if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(value)) {
  5939. value = [value];
  5940. }
  5941. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(value, function (val) {
  5942. // unique
  5943. if (!tmpMap[val]) {
  5944. rst.push(val);
  5945. tmpMap[val] = true;
  5946. }
  5947. });
  5948. }
  5949. });
  5950. return rst;
  5951. });
  5952. /***/ }),
  5953. /* 92 */
  5954. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5955. "use strict";
  5956. /* harmony export (immutable) */ __webpack_exports__["a"] = head;
  5957. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7);
  5958. function head(o) {
  5959. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(o)) {
  5960. return o[0];
  5961. }
  5962. return undefined;
  5963. }
  5964. /***/ }),
  5965. /* 93 */
  5966. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5967. "use strict";
  5968. /* harmony export (immutable) */ __webpack_exports__["a"] = last;
  5969. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7);
  5970. function last(o) {
  5971. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(o)) {
  5972. var arr = o;
  5973. return arr[arr.length - 1];
  5974. }
  5975. return undefined;
  5976. }
  5977. /***/ }),
  5978. /* 94 */
  5979. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5980. "use strict";
  5981. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  5982. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(18);
  5983. function startsWith(arr, e) {
  5984. return Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(arr) || Object(__WEBPACK_IMPORTED_MODULE_1__is_string__["a" /* default */])(arr) ? arr[0] === e : false;
  5985. }
  5986. /* harmony default export */ __webpack_exports__["a"] = (startsWith);
  5987. /***/ }),
  5988. /* 95 */
  5989. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5990. "use strict";
  5991. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  5992. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(18);
  5993. function endsWith(arr, e) {
  5994. return Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(arr) || Object(__WEBPACK_IMPORTED_MODULE_1__is_string__["a" /* default */])(arr) ? arr[arr.length - 1] === e : false;
  5995. }
  5996. /* harmony default export */ __webpack_exports__["a"] = (endsWith);
  5997. /***/ }),
  5998. /* 96 */
  5999. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6000. "use strict";
  6001. /**
  6002. * 只要有一个不满足条件就返回 false
  6003. * @param arr
  6004. * @param func
  6005. */
  6006. var every = function (arr, func) {
  6007. for (var i = 0; i < arr.length; i++) {
  6008. if (!func(arr[i], i)) return false;
  6009. }
  6010. return true;
  6011. };
  6012. /* harmony default export */ __webpack_exports__["a"] = (every);
  6013. /***/ }),
  6014. /* 97 */
  6015. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6016. "use strict";
  6017. /**
  6018. * 只要有一个满足条件就返回 true
  6019. * @param arr
  6020. * @param func
  6021. */
  6022. var some = function (arr, func) {
  6023. for (var i = 0; i < arr.length; i++) {
  6024. if (func(arr[i], i)) return true;
  6025. }
  6026. return false;
  6027. };
  6028. /* harmony default export */ __webpack_exports__["a"] = (some);
  6029. /***/ }),
  6030. /* 98 */
  6031. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6032. "use strict";
  6033. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_to_map__ = __webpack_require__(55);
  6034. /* harmony default export */ __webpack_exports__["a"] = (function (data, condition) {
  6035. if (!condition) {
  6036. // 没有条件,则自身改成数组
  6037. return [data];
  6038. }
  6039. var groups = Object(__WEBPACK_IMPORTED_MODULE_0__group_to_map__["a" /* default */])(data, condition);
  6040. var array = [];
  6041. for (var i in groups) {
  6042. array.push(groups[i]);
  6043. }
  6044. return array;
  6045. });
  6046. /***/ }),
  6047. /* 99 */
  6048. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6049. "use strict";
  6050. /**
  6051. * 获取封装的事件
  6052. * @protected
  6053. * @param {Object} obj 对象
  6054. * @param {String} action 事件名称
  6055. * @return {Function} 返回事件处理函数
  6056. */
  6057. function getWrapBehavior(obj, action) {
  6058. return obj['_wrap_' + action];
  6059. }
  6060. /* harmony default export */ __webpack_exports__["a"] = (getWrapBehavior);
  6061. /***/ }),
  6062. /* 100 */
  6063. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6064. "use strict";
  6065. /**
  6066. * 封装事件,便于使用上下文this,和便于解除事件时使用
  6067. * @protected
  6068. * @param {Object} obj 对象
  6069. * @param {String} action 事件名称
  6070. * @return {Function} 返回事件处理函数
  6071. */
  6072. function wrapBehavior(obj, action) {
  6073. if (obj['_wrap_' + action]) {
  6074. return obj['_wrap_' + action];
  6075. }
  6076. var method = function (e) {
  6077. obj[action](e);
  6078. };
  6079. obj['_wrap_' + action] = method;
  6080. return method;
  6081. }
  6082. /* harmony default export */ __webpack_exports__["a"] = (wrapBehavior);
  6083. /***/ }),
  6084. /* 101 */
  6085. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6086. "use strict";
  6087. var numColorCache = {};
  6088. function numberToColor(num) {
  6089. // 增加缓存
  6090. var color = numColorCache[num];
  6091. if (!color) {
  6092. var str = num.toString(16);
  6093. for (var i = str.length; i < 6; i++) {
  6094. str = '0' + str;
  6095. }
  6096. color = '#' + str;
  6097. numColorCache[num] = color;
  6098. }
  6099. return color;
  6100. }
  6101. /* harmony default export */ __webpack_exports__["a"] = (numberToColor);
  6102. /***/ }),
  6103. /* 102 */
  6104. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6105. "use strict";
  6106. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  6107. function parseRadius(radius) {
  6108. var r1 = 0,
  6109. r2 = 0,
  6110. r3 = 0,
  6111. r4 = 0;
  6112. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(radius)) {
  6113. if (radius.length === 1) {
  6114. r1 = r2 = r3 = r4 = radius[0];
  6115. } else if (radius.length === 2) {
  6116. r1 = r3 = radius[0];
  6117. r2 = r4 = radius[1];
  6118. } else if (radius.length === 3) {
  6119. r1 = radius[0];
  6120. r2 = r4 = radius[1];
  6121. r3 = radius[2];
  6122. } else {
  6123. r1 = radius[0];
  6124. r2 = radius[1];
  6125. r3 = radius[2];
  6126. r4 = radius[3];
  6127. }
  6128. } else {
  6129. r1 = r2 = r3 = r4 = radius;
  6130. }
  6131. return {
  6132. r1: r1,
  6133. r2: r2,
  6134. r3: r3,
  6135. r4: r4
  6136. };
  6137. }
  6138. /* harmony default export */ __webpack_exports__["a"] = (parseRadius);
  6139. /***/ }),
  6140. /* 103 */
  6141. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6142. "use strict";
  6143. var clamp = function (a, min, max) {
  6144. if (a < min) {
  6145. return min;
  6146. } else if (a > max) {
  6147. return max;
  6148. }
  6149. return a;
  6150. };
  6151. /* harmony default export */ __webpack_exports__["a"] = (clamp);
  6152. /***/ }),
  6153. /* 104 */
  6154. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6155. "use strict";
  6156. var fixedBase = function (v, base) {
  6157. var str = base.toString();
  6158. var index = str.indexOf('.');
  6159. if (index === -1) {
  6160. return Math.round(v);
  6161. }
  6162. var length = str.substr(index + 1).length;
  6163. if (length > 20) {
  6164. length = 20;
  6165. }
  6166. return parseFloat(v.toFixed(length));
  6167. };
  6168. /* harmony default export */ __webpack_exports__["a"] = (fixedBase);
  6169. /***/ }),
  6170. /* 105 */
  6171. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6172. "use strict";
  6173. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12);
  6174. var isDecimal = function (num) {
  6175. return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num % 1 !== 0;
  6176. };
  6177. /* harmony default export */ __webpack_exports__["a"] = (isDecimal);
  6178. /***/ }),
  6179. /* 106 */
  6180. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6181. "use strict";
  6182. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12);
  6183. var isEven = function (num) {
  6184. return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num % 2 === 0;
  6185. };
  6186. /* harmony default export */ __webpack_exports__["a"] = (isEven);
  6187. /***/ }),
  6188. /* 107 */
  6189. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6190. "use strict";
  6191. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12);
  6192. var isInteger = Number.isInteger ? Number.isInteger : function (num) {
  6193. return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num % 1 === 0;
  6194. };
  6195. /* harmony default export */ __webpack_exports__["a"] = (isInteger);
  6196. /***/ }),
  6197. /* 108 */
  6198. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6199. "use strict";
  6200. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12);
  6201. var isNegative = function (num) {
  6202. return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num < 0;
  6203. };
  6204. /* harmony default export */ __webpack_exports__["a"] = (isNegative);
  6205. /***/ }),
  6206. /* 109 */
  6207. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6208. "use strict";
  6209. /* harmony export (immutable) */ __webpack_exports__["a"] = isNumberEqual;
  6210. var PRECISION = 0.00001; // numbers less than this is considered as 0
  6211. function isNumberEqual(a, b, precision) {
  6212. if (precision === void 0) {
  6213. precision = PRECISION;
  6214. }
  6215. return Math.abs(a - b) < precision;
  6216. }
  6217. ;
  6218. /***/ }),
  6219. /* 110 */
  6220. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6221. "use strict";
  6222. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12);
  6223. var isOdd = function (num) {
  6224. return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num % 2 !== 0;
  6225. };
  6226. /* harmony default export */ __webpack_exports__["a"] = (isOdd);
  6227. /***/ }),
  6228. /* 111 */
  6229. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6230. "use strict";
  6231. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12);
  6232. var isPositive = function (num) {
  6233. return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(num) && num > 0;
  6234. };
  6235. /* harmony default export */ __webpack_exports__["a"] = (isPositive);
  6236. /***/ }),
  6237. /* 112 */
  6238. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6239. "use strict";
  6240. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  6241. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5);
  6242. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(9);
  6243. /**
  6244. * @param {Array} arr The array to iterate over.
  6245. * @param {Function} [fn] The iteratee invoked per element.
  6246. * @return {*} Returns the maximum value.
  6247. * @example
  6248. *
  6249. * var objects = [{ 'n': 1 }, { 'n': 2 }];
  6250. *
  6251. * maxBy(objects, function(o) { return o.n; });
  6252. * // => { 'n': 2 }
  6253. *
  6254. * maxBy(objects, 'n');
  6255. * // => { 'n': 2 }
  6256. */
  6257. /* harmony default export */ __webpack_exports__["a"] = (function (arr, fn) {
  6258. if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(arr)) {
  6259. return undefined;
  6260. }
  6261. var max = arr[0];
  6262. var maxData;
  6263. if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(fn)) {
  6264. maxData = fn(arr[0]);
  6265. } else {
  6266. maxData = arr[0][fn];
  6267. }
  6268. var data;
  6269. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (val) {
  6270. if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(fn)) {
  6271. data = fn(val);
  6272. } else {
  6273. data = val[fn];
  6274. }
  6275. if (data > maxData) {
  6276. max = val;
  6277. maxData = data;
  6278. }
  6279. });
  6280. return max;
  6281. });
  6282. /***/ }),
  6283. /* 113 */
  6284. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6285. "use strict";
  6286. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  6287. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(5);
  6288. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(9);
  6289. /**
  6290. * @param {Array} arr The array to iterate over.
  6291. * @param {Function} [fn] The iteratee invoked per element.
  6292. * @return {*} Returns the minimum value.
  6293. * @example
  6294. *
  6295. * var objects = [{ 'n': 1 }, { 'n': 2 }];
  6296. *
  6297. * minBy(objects, function(o) { return o.n; });
  6298. * // => { 'n': 1 }
  6299. *
  6300. * minBy(objects, 'n');
  6301. * // => { 'n': 1 }
  6302. */
  6303. /* harmony default export */ __webpack_exports__["a"] = (function (arr, fn) {
  6304. if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__["a" /* default */])(arr)) {
  6305. return undefined;
  6306. }
  6307. var min = arr[0];
  6308. var minData;
  6309. if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(fn)) {
  6310. minData = fn(arr[0]);
  6311. } else {
  6312. minData = arr[0][fn];
  6313. }
  6314. var data;
  6315. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (val) {
  6316. if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__["a" /* default */])(fn)) {
  6317. data = fn(val);
  6318. } else {
  6319. data = val[fn];
  6320. }
  6321. if (data < minData) {
  6322. min = val;
  6323. minData = data;
  6324. }
  6325. });
  6326. return min;
  6327. });
  6328. /***/ }),
  6329. /* 114 */
  6330. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6331. "use strict";
  6332. var mod = function (n, m) {
  6333. return (n % m + m) % m;
  6334. };
  6335. /* harmony default export */ __webpack_exports__["a"] = (mod);
  6336. /***/ }),
  6337. /* 115 */
  6338. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6339. "use strict";
  6340. var DEGREE = 180 / Math.PI;
  6341. var toDegree = function (radian) {
  6342. return DEGREE * radian;
  6343. };
  6344. /* harmony default export */ __webpack_exports__["a"] = (toDegree);
  6345. /***/ }),
  6346. /* 116 */
  6347. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6348. "use strict";
  6349. /* harmony default export */ __webpack_exports__["a"] = (parseInt);
  6350. /***/ }),
  6351. /* 117 */
  6352. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6353. "use strict";
  6354. var RADIAN = Math.PI / 180;
  6355. var toRadian = function (degree) {
  6356. return RADIAN * degree;
  6357. };
  6358. /* harmony default export */ __webpack_exports__["a"] = (toRadian);
  6359. /***/ }),
  6360. /* 118 */
  6361. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6362. "use strict";
  6363. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  6364. /* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */]);
  6365. /***/ }),
  6366. /* 119 */
  6367. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6368. "use strict";
  6369. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has__ = __webpack_require__(57);
  6370. /* harmony default export */ __webpack_exports__["a"] = (__WEBPACK_IMPORTED_MODULE_0__has__["a" /* default */]);
  6371. /***/ }),
  6372. /* 120 */
  6373. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6374. "use strict";
  6375. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(28);
  6376. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values__ = __webpack_require__(58);
  6377. /* harmony default export */ __webpack_exports__["a"] = (function (obj, value) {
  6378. return Object(__WEBPACK_IMPORTED_MODULE_0__contains__["a" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_1__values__["a" /* default */])(obj), value);
  6379. });
  6380. /***/ }),
  6381. /* 121 */
  6382. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6383. "use strict";
  6384. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(25);
  6385. var lowerCase = function (str) {
  6386. return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a" /* default */])(str).toLowerCase();
  6387. };
  6388. /* harmony default export */ __webpack_exports__["a"] = (lowerCase);
  6389. /***/ }),
  6390. /* 122 */
  6391. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6392. "use strict";
  6393. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(25);
  6394. var lowerFirst = function (value) {
  6395. var str = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a" /* default */])(value);
  6396. return str.charAt(0).toLowerCase() + str.substring(1);
  6397. };
  6398. /* harmony default export */ __webpack_exports__["a"] = (lowerFirst);
  6399. /***/ }),
  6400. /* 123 */
  6401. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6402. "use strict";
  6403. function substitute(str, o) {
  6404. if (!str || !o) {
  6405. return str;
  6406. }
  6407. return str.replace(/\\?\{([^{}]+)\}/g, function (match, name) {
  6408. if (match.charAt(0) === '\\') {
  6409. return match.slice(1);
  6410. }
  6411. return o[name] === undefined ? '' : o[name];
  6412. });
  6413. }
  6414. /* harmony default export */ __webpack_exports__["a"] = (substitute);
  6415. /***/ }),
  6416. /* 124 */
  6417. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6418. "use strict";
  6419. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(25);
  6420. var upperCase = function (str) {
  6421. return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a" /* default */])(str).toUpperCase();
  6422. };
  6423. /* harmony default export */ __webpack_exports__["a"] = (upperCase);
  6424. /***/ }),
  6425. /* 125 */
  6426. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6427. "use strict";
  6428. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(25);
  6429. var upperFirst = function (value) {
  6430. var str = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__["a" /* default */])(value);
  6431. return str.charAt(0).toUpperCase() + str.substring(1);
  6432. };
  6433. /* harmony default export */ __webpack_exports__["a"] = (upperFirst);
  6434. /***/ }),
  6435. /* 126 */
  6436. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6437. "use strict";
  6438. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11);
  6439. /**
  6440. * 是否是参数类型
  6441. *
  6442. * @param {Object} value 测试的值
  6443. * @return {Boolean}
  6444. */
  6445. var isArguments = function (value) {
  6446. return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Arguments');
  6447. };
  6448. /* harmony default export */ __webpack_exports__["a"] = (isArguments);
  6449. /***/ }),
  6450. /* 127 */
  6451. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6452. "use strict";
  6453. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11);
  6454. /**
  6455. * 是否是布尔类型
  6456. *
  6457. * @param {Object} value 测试的值
  6458. * @return {Boolean}
  6459. */
  6460. var isBoolean = function (value) {
  6461. return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Boolean');
  6462. };
  6463. /* harmony default export */ __webpack_exports__["a"] = (isBoolean);
  6464. /***/ }),
  6465. /* 128 */
  6466. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6467. "use strict";
  6468. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11);
  6469. var isDate = function (value) {
  6470. return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Date');
  6471. };
  6472. /* harmony default export */ __webpack_exports__["a"] = (isDate);
  6473. /***/ }),
  6474. /* 129 */
  6475. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6476. "use strict";
  6477. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11);
  6478. /**
  6479. * 是否是参数类型
  6480. *
  6481. * @param {Object} value 测试的值
  6482. * @return {Boolean}
  6483. */
  6484. var isError = function (value) {
  6485. return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(value, 'Error');
  6486. };
  6487. /* harmony default export */ __webpack_exports__["a"] = (isError);
  6488. /***/ }),
  6489. /* 130 */
  6490. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6491. "use strict";
  6492. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(12);
  6493. /**
  6494. * 判断是否为有限数
  6495. * @return {Boolean}
  6496. */
  6497. /* harmony default export */ __webpack_exports__["a"] = (function (value) {
  6498. return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__["a" /* default */])(value) && isFinite(value);
  6499. });
  6500. /***/ }),
  6501. /* 131 */
  6502. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6503. "use strict";
  6504. var isNull = function (value) {
  6505. return value === null;
  6506. };
  6507. /* harmony default export */ __webpack_exports__["a"] = (isNull);
  6508. /***/ }),
  6509. /* 132 */
  6510. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6511. "use strict";
  6512. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(11);
  6513. var isRegExp = function (str) {
  6514. return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__["a" /* default */])(str, 'RegExp');
  6515. };
  6516. /* harmony default export */ __webpack_exports__["a"] = (isRegExp);
  6517. /***/ }),
  6518. /* 133 */
  6519. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6520. "use strict";
  6521. var isUndefined = function (value) {
  6522. return value === undefined;
  6523. };
  6524. /* harmony default export */ __webpack_exports__["a"] = (isUndefined);
  6525. /***/ }),
  6526. /* 134 */
  6527. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6528. "use strict";
  6529. /**
  6530. * 判断是否HTML元素
  6531. * @return {Boolean} 是否HTML元素
  6532. */
  6533. var isElement = function (o) {
  6534. return o instanceof Element || o instanceof HTMLDocument;
  6535. };
  6536. /* harmony default export */ __webpack_exports__["a"] = (isElement);
  6537. /***/ }),
  6538. /* 135 */
  6539. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6540. "use strict";
  6541. /* harmony export (immutable) */ __webpack_exports__["a"] = requestAnimationFrame;
  6542. function requestAnimationFrame(fn) {
  6543. var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame || // @ts-ignore
  6544. window.mozRequestAnimationFrame || // @ts-ignore
  6545. window.msRequestAnimationFrame || function (f) {
  6546. return setTimeout(f, 16);
  6547. };
  6548. return method(fn);
  6549. }
  6550. ;
  6551. /***/ }),
  6552. /* 136 */
  6553. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6554. "use strict";
  6555. /* harmony export (immutable) */ __webpack_exports__["a"] = cancelAnimationFrame;
  6556. function cancelAnimationFrame(handler) {
  6557. var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || // @ts-ignore
  6558. window.mozCancelAnimationFrame || // @ts-ignore
  6559. window.msCancelAnimationFrame || clearTimeout;
  6560. method(handler);
  6561. }
  6562. ;
  6563. /***/ }),
  6564. /* 137 */
  6565. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6566. "use strict";
  6567. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mix__ = __webpack_require__(41);
  6568. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9);
  6569. var augment = function () {
  6570. var args = [];
  6571. for (var _i = 0; _i < arguments.length; _i++) {
  6572. args[_i] = arguments[_i];
  6573. }
  6574. var c = args[0];
  6575. for (var i = 1; i < args.length; i++) {
  6576. var obj = args[i];
  6577. if (Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(obj)) {
  6578. obj = obj.prototype;
  6579. }
  6580. Object(__WEBPACK_IMPORTED_MODULE_0__mix__["a" /* default */])(c.prototype, obj);
  6581. }
  6582. };
  6583. /* harmony default export */ __webpack_exports__["a"] = (augment);
  6584. /***/ }),
  6585. /* 138 */
  6586. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6587. "use strict";
  6588. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  6589. var clone = function (obj) {
  6590. if (typeof obj !== 'object' || obj === null) {
  6591. return obj;
  6592. }
  6593. var rst;
  6594. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(obj)) {
  6595. rst = [];
  6596. for (var i = 0, l = obj.length; i < l; i++) {
  6597. if (typeof obj[i] === 'object' && obj[i] != null) {
  6598. rst[i] = clone(obj[i]);
  6599. } else {
  6600. rst[i] = obj[i];
  6601. }
  6602. }
  6603. } else {
  6604. rst = {};
  6605. for (var k in obj) {
  6606. if (typeof obj[k] === 'object' && obj[k] != null) {
  6607. rst[k] = clone(obj[k]);
  6608. } else {
  6609. rst[k] = obj[k];
  6610. }
  6611. }
  6612. }
  6613. return rst;
  6614. };
  6615. /* harmony default export */ __webpack_exports__["a"] = (clone);
  6616. /***/ }),
  6617. /* 139 */
  6618. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6619. "use strict";
  6620. function debounce(func, wait, immediate) {
  6621. var timeout;
  6622. return function () {
  6623. var context = this,
  6624. args = arguments;
  6625. var later = function () {
  6626. timeout = null;
  6627. if (!immediate) {
  6628. func.apply(context, args);
  6629. }
  6630. };
  6631. var callNow = immediate && !timeout;
  6632. clearTimeout(timeout);
  6633. timeout = setTimeout(later, wait);
  6634. if (callNow) {
  6635. func.apply(context, args);
  6636. }
  6637. };
  6638. }
  6639. /* harmony default export */ __webpack_exports__["a"] = (debounce);
  6640. /***/ }),
  6641. /* 140 */
  6642. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6643. "use strict";
  6644. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(9);
  6645. /**
  6646. * _.memoize(calColor);
  6647. * _.memoize(calColor, (...args) => args[0]);
  6648. * @param f
  6649. * @param resolver
  6650. */
  6651. /* harmony default export */ __webpack_exports__["a"] = (function (f, resolver) {
  6652. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__["a" /* default */])(f)) {
  6653. throw new TypeError('Expected a function');
  6654. }
  6655. var memoized = function () {
  6656. var args = [];
  6657. for (var _i = 0; _i < arguments.length; _i++) {
  6658. args[_i] = arguments[_i];
  6659. } // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key
  6660. var key = resolver ? resolver.apply(this, args) : args[0];
  6661. var cache = memoized.cache;
  6662. if (cache.has(key)) {
  6663. return cache.get(key);
  6664. }
  6665. var result = f.apply(this, args); // 缓存起来
  6666. cache.set(key, result);
  6667. return result;
  6668. };
  6669. memoized.cache = new Map();
  6670. return memoized;
  6671. });
  6672. /***/ }),
  6673. /* 141 */
  6674. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6675. "use strict";
  6676. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(5);
  6677. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(24);
  6678. var MAX_MIX_LEVEL = 5;
  6679. function _deepMix(dist, src, level, maxLevel) {
  6680. level = level || 0;
  6681. maxLevel = maxLevel || MAX_MIX_LEVEL;
  6682. for (var key in src) {
  6683. if (src.hasOwnProperty(key)) {
  6684. var value = src[key];
  6685. if (value !== null && Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__["a" /* default */])(value)) {
  6686. if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__["a" /* default */])(dist[key])) {
  6687. dist[key] = {};
  6688. }
  6689. if (level < maxLevel) {
  6690. _deepMix(dist[key], value, level + 1, maxLevel);
  6691. } else {
  6692. dist[key] = src[key];
  6693. }
  6694. } else if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__["a" /* default */])(value)) {
  6695. dist[key] = [];
  6696. dist[key] = dist[key].concat(value);
  6697. } else if (value !== undefined) {
  6698. dist[key] = value;
  6699. }
  6700. }
  6701. }
  6702. } // todo 重写
  6703. var deepMix = function (rst) {
  6704. var args = [];
  6705. for (var _i = 1; _i < arguments.length; _i++) {
  6706. args[_i - 1] = arguments[_i];
  6707. }
  6708. for (var i = 0; i < args.length; i += 1) {
  6709. _deepMix(rst, args[i]);
  6710. }
  6711. return rst;
  6712. };
  6713. /* harmony default export */ __webpack_exports__["a"] = (deepMix);
  6714. /***/ }),
  6715. /* 142 */
  6716. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6717. "use strict";
  6718. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mix__ = __webpack_require__(41);
  6719. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(9);
  6720. var extend = function (subclass, superclass, overrides, staticOverrides) {
  6721. // 如果只提供父类构造函数,则自动生成子类构造函数
  6722. if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_function__["a" /* default */])(superclass)) {
  6723. overrides = superclass;
  6724. superclass = subclass;
  6725. subclass = function () {};
  6726. }
  6727. var create = Object.create ? function (proto, c) {
  6728. return Object.create(proto, {
  6729. constructor: {
  6730. value: c
  6731. }
  6732. });
  6733. } : function (proto, c) {
  6734. function Tmp() {}
  6735. Tmp.prototype = proto;
  6736. var o = new Tmp();
  6737. o.constructor = c;
  6738. return o;
  6739. };
  6740. var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype
  6741. subclass.prototype = Object(__WEBPACK_IMPORTED_MODULE_0__mix__["a" /* default */])(superObj, subclass.prototype); // 指定子类的prototype
  6742. subclass.superclass = create(superclass.prototype, superclass);
  6743. Object(__WEBPACK_IMPORTED_MODULE_0__mix__["a" /* default */])(superObj, overrides);
  6744. Object(__WEBPACK_IMPORTED_MODULE_0__mix__["a" /* default */])(subclass, staticOverrides);
  6745. return subclass;
  6746. };
  6747. /* harmony default export */ __webpack_exports__["a"] = (extend);
  6748. /***/ }),
  6749. /* 143 */
  6750. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6751. "use strict";
  6752. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7);
  6753. var indexOf = function (arr, obj) {
  6754. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(arr)) {
  6755. return -1;
  6756. }
  6757. var m = Array.prototype.indexOf;
  6758. if (m) {
  6759. return m.call(arr, obj);
  6760. }
  6761. var index = -1;
  6762. for (var i = 0; i < arr.length; i++) {
  6763. if (arr[i] === obj) {
  6764. index = i;
  6765. break;
  6766. }
  6767. }
  6768. return index;
  6769. };
  6770. /* harmony default export */ __webpack_exports__["a"] = (indexOf);
  6771. /***/ }),
  6772. /* 144 */
  6773. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6774. "use strict";
  6775. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14);
  6776. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7);
  6777. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__get_type__ = __webpack_require__(59);
  6778. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__is_prototype__ = __webpack_require__(60);
  6779. var hasOwnProperty = Object.prototype.hasOwnProperty;
  6780. function isEmpty(value) {
  6781. /**
  6782. * isEmpty(null) => true
  6783. * isEmpty() => true
  6784. * isEmpty(true) => true
  6785. * isEmpty(1) => true
  6786. * isEmpty([1, 2, 3]) => false
  6787. * isEmpty('abc') => false
  6788. * isEmpty({ a: 1 }) => false
  6789. */
  6790. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(value)) {
  6791. return true;
  6792. }
  6793. if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(value)) {
  6794. return !value.length;
  6795. }
  6796. var type = Object(__WEBPACK_IMPORTED_MODULE_2__get_type__["a" /* default */])(value);
  6797. if (type === 'Map' || type === 'Set') {
  6798. return !value.size;
  6799. }
  6800. if (Object(__WEBPACK_IMPORTED_MODULE_3__is_prototype__["a" /* default */])(value)) {
  6801. return !Object.keys(value).length;
  6802. }
  6803. for (var key in value) {
  6804. if (hasOwnProperty.call(value, key)) {
  6805. return false;
  6806. }
  6807. }
  6808. return true;
  6809. }
  6810. /* harmony default export */ __webpack_exports__["a"] = (isEmpty);
  6811. /***/ }),
  6812. /* 145 */
  6813. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6814. "use strict";
  6815. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(9);
  6816. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_equal__ = __webpack_require__(61);
  6817. /**
  6818. * @param {*} value The value to compare.
  6819. * @param {*} other The other value to compare.
  6820. * @param {Function} [fn] The function to customize comparisons.
  6821. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  6822. * @example
  6823. *
  6824. * function isGreeting(value) {
  6825. * return /^h(?:i|ello)$/.test(value);
  6826. * }
  6827. *
  6828. * function customizer(objValue, othValue) {
  6829. * if (isGreeting(objValue) && isGreeting(othValue)) {
  6830. * return true;
  6831. * }
  6832. * }
  6833. *
  6834. * var array = ['hello', 'goodbye'];
  6835. * var other = ['hi', 'goodbye'];
  6836. *
  6837. * isEqualWith(array, other, customizer); // => true
  6838. */
  6839. /* harmony default export */ __webpack_exports__["a"] = (function (value, other, fn) {
  6840. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__["a" /* default */])(fn)) {
  6841. return Object(__WEBPACK_IMPORTED_MODULE_1__is_equal__["a" /* default */])(value, other);
  6842. }
  6843. return !!fn(value, other);
  6844. });
  6845. /***/ }),
  6846. /* 146 */
  6847. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6848. "use strict";
  6849. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  6850. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7);
  6851. var map = function (arr, func) {
  6852. if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(arr)) {
  6853. // @ts-ignore
  6854. return arr;
  6855. }
  6856. var result = [];
  6857. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(arr, function (value, index) {
  6858. result.push(func(value, index));
  6859. });
  6860. return result;
  6861. };
  6862. /* harmony default export */ __webpack_exports__["a"] = (map);
  6863. /***/ }),
  6864. /* 147 */
  6865. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6866. "use strict";
  6867. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14);
  6868. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(29);
  6869. var identity = function (v) {
  6870. return v;
  6871. };
  6872. /* harmony default export */ __webpack_exports__["a"] = (function (object, func) {
  6873. if (func === void 0) {
  6874. func = identity;
  6875. }
  6876. var r = {};
  6877. if (Object(__WEBPACK_IMPORTED_MODULE_1__is_object__["a" /* default */])(object) && !Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(object)) {
  6878. Object.keys(object).forEach(function (key) {
  6879. // @ts-ignore
  6880. r[key] = func(object[key], key);
  6881. });
  6882. }
  6883. return r;
  6884. });
  6885. /***/ }),
  6886. /* 148 */
  6887. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6888. "use strict";
  6889. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_string__ = __webpack_require__(18);
  6890. /**
  6891. * https://github.com/developit/dlv/blob/master/index.js
  6892. * @param obj
  6893. * @param key
  6894. * @param defaultValue
  6895. */
  6896. /* harmony default export */ __webpack_exports__["a"] = (function (obj, key, defaultValue) {
  6897. var p = 0;
  6898. var keyArr = Object(__WEBPACK_IMPORTED_MODULE_0__is_string__["a" /* default */])(key) ? key.split('.') : key;
  6899. while (obj && p < keyArr.length) {
  6900. obj = obj[keyArr[p++]];
  6901. }
  6902. return obj === undefined || p < keyArr.length ? defaultValue : obj;
  6903. });
  6904. /***/ }),
  6905. /* 149 */
  6906. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6907. "use strict";
  6908. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object__ = __webpack_require__(29);
  6909. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(18);
  6910. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_number__ = __webpack_require__(12);
  6911. /**
  6912. * https://github.com/developit/dlv/blob/master/index.js
  6913. * @param obj
  6914. * @param path
  6915. * @param value
  6916. */
  6917. /* harmony default export */ __webpack_exports__["a"] = (function (obj, path, value) {
  6918. var o = obj;
  6919. var keyArr = Object(__WEBPACK_IMPORTED_MODULE_1__is_string__["a" /* default */])(path) ? path.split('.') : path;
  6920. keyArr.forEach(function (key, idx) {
  6921. // 不是最后一个
  6922. if (idx < keyArr.length - 1) {
  6923. if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_object__["a" /* default */])(o[key])) {
  6924. o[key] = Object(__WEBPACK_IMPORTED_MODULE_2__is_number__["a" /* default */])(keyArr[idx + 1]) ? [] : {};
  6925. }
  6926. o = o[key];
  6927. } else {
  6928. o[key] = value;
  6929. }
  6930. });
  6931. return obj;
  6932. });
  6933. /***/ }),
  6934. /* 150 */
  6935. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6936. "use strict";
  6937. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(8);
  6938. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(24);
  6939. var hasOwnProperty = Object.prototype.hasOwnProperty;
  6940. /* harmony default export */ __webpack_exports__["a"] = (function (object, keys) {
  6941. if (object === null || !Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__["a" /* default */])(object)) {
  6942. return {};
  6943. }
  6944. var result = {};
  6945. Object(__WEBPACK_IMPORTED_MODULE_0__each__["a" /* default */])(keys, function (key) {
  6946. if (hasOwnProperty.call(object, key)) {
  6947. result[key] = object[key];
  6948. }
  6949. });
  6950. return result;
  6951. });
  6952. /***/ }),
  6953. /* 151 */
  6954. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6955. "use strict";
  6956. /* harmony default export */ __webpack_exports__["a"] = (function (func, wait, options) {
  6957. var timeout, context, args, result;
  6958. var previous = 0;
  6959. if (!options) options = {};
  6960. var later = function () {
  6961. previous = options.leading === false ? 0 : Date.now();
  6962. timeout = null;
  6963. result = func.apply(context, args);
  6964. if (!timeout) context = args = null;
  6965. };
  6966. var throttled = function () {
  6967. var now = Date.now();
  6968. if (!previous && options.leading === false) previous = now;
  6969. var remaining = wait - (now - previous);
  6970. context = this;
  6971. args = arguments;
  6972. if (remaining <= 0 || remaining > wait) {
  6973. if (timeout) {
  6974. clearTimeout(timeout);
  6975. timeout = null;
  6976. }
  6977. previous = now;
  6978. result = func.apply(context, args);
  6979. if (!timeout) context = args = null;
  6980. } else if (!timeout && options.trailing !== false) {
  6981. timeout = setTimeout(later, remaining);
  6982. }
  6983. return result;
  6984. };
  6985. throttled.cancel = function () {
  6986. clearTimeout(timeout);
  6987. previous = 0;
  6988. timeout = context = args = null;
  6989. };
  6990. return throttled;
  6991. });
  6992. /***/ }),
  6993. /* 152 */
  6994. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6995. "use strict";
  6996. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(7);
  6997. /* harmony default export */ __webpack_exports__["a"] = (function (value) {
  6998. return Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__["a" /* default */])(value) ? Array.prototype.slice.call(value) : [];
  6999. });
  7000. /***/ }),
  7001. /* 153 */
  7002. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7003. "use strict";
  7004. var map = {};
  7005. /* harmony default export */ __webpack_exports__["a"] = (function (prefix) {
  7006. prefix = prefix || 'g';
  7007. if (!map[prefix]) {
  7008. map[prefix] = 1;
  7009. } else {
  7010. map[prefix] += 1;
  7011. }
  7012. return prefix + map[prefix];
  7013. });
  7014. /***/ }),
  7015. /* 154 */
  7016. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7017. "use strict";
  7018. /* harmony default export */ __webpack_exports__["a"] = (function () {});
  7019. /***/ }),
  7020. /* 155 */
  7021. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7022. "use strict";
  7023. /* harmony default export */ __webpack_exports__["a"] = (function (v) {
  7024. return v;
  7025. });
  7026. /***/ }),
  7027. /* 156 */
  7028. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7029. "use strict";
  7030. /* harmony export (immutable) */ __webpack_exports__["a"] = size;
  7031. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(14);
  7032. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(7);
  7033. function size(o) {
  7034. if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__["a" /* default */])(o)) {
  7035. return 0;
  7036. }
  7037. if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__["a" /* default */])(o)) {
  7038. return o.length;
  7039. }
  7040. return Object.keys(o).length;
  7041. }
  7042. /***/ }),
  7043. /* 157 */
  7044. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7045. "use strict";
  7046. /**
  7047. * k-v 存储
  7048. */
  7049. var default_1 =
  7050. /** @class */
  7051. function () {
  7052. function default_1() {
  7053. this.map = {};
  7054. }
  7055. default_1.prototype.has = function (key) {
  7056. return this.map[key] !== undefined;
  7057. };
  7058. default_1.prototype.get = function (key, def) {
  7059. var v = this.map[key];
  7060. return v === undefined ? def : v;
  7061. };
  7062. default_1.prototype.set = function (key, value) {
  7063. this.map[key] = value;
  7064. };
  7065. default_1.prototype.clear = function () {
  7066. this.map = {};
  7067. };
  7068. default_1.prototype.delete = function (key) {
  7069. delete this.map[key];
  7070. };
  7071. default_1.prototype.size = function () {
  7072. return Object.keys(this.map).length;
  7073. };
  7074. return default_1;
  7075. }();
  7076. /* harmony default export */ __webpack_exports__["a"] = (default_1);
  7077. /***/ }),
  7078. /* 158 */
  7079. /***/ (function(module, exports, __webpack_require__) {
  7080. "use strict";
  7081. var Util = __webpack_require__(0);
  7082. var Plot = /*#__PURE__*/function () {
  7083. function Plot(cfg) {
  7084. Util.mix(this, cfg);
  7085. this._init();
  7086. }
  7087. var _proto = Plot.prototype;
  7088. _proto._init = function _init() {
  7089. var self = this;
  7090. var start = self.start;
  7091. var end = self.end;
  7092. var xMin = Math.min(start.x, end.x);
  7093. var xMax = Math.max(start.x, end.x);
  7094. var yMin = Math.min(start.y, end.y);
  7095. var yMax = Math.max(start.y, end.y);
  7096. this.tl = {
  7097. x: xMin,
  7098. y: yMin
  7099. };
  7100. this.tr = {
  7101. x: xMax,
  7102. y: yMin
  7103. };
  7104. this.bl = {
  7105. x: xMin,
  7106. y: yMax
  7107. };
  7108. this.br = {
  7109. x: xMax,
  7110. y: yMax
  7111. };
  7112. this.width = xMax - xMin;
  7113. this.height = yMax - yMin;
  7114. }
  7115. /**
  7116. * reset
  7117. * @param {Object} start start point
  7118. * @param {Object} end end point
  7119. */
  7120. ;
  7121. _proto.reset = function reset(start, end) {
  7122. this.start = start;
  7123. this.end = end;
  7124. this._init();
  7125. }
  7126. /**
  7127. * check the point is in the range of plot
  7128. * @param {Nubmer} x x value
  7129. * @param {[type]} y y value
  7130. * @return {Boolean} return the result
  7131. */
  7132. ;
  7133. _proto.isInRange = function isInRange(x, y) {
  7134. if (Util.isObject(x)) {
  7135. y = x.y;
  7136. x = x.x;
  7137. }
  7138. var tl = this.tl;
  7139. var br = this.br;
  7140. return tl.x <= x && x <= br.x && tl.y <= y && y <= br.y;
  7141. };
  7142. return Plot;
  7143. }();
  7144. module.exports = Plot;
  7145. /***/ }),
  7146. /* 159 */
  7147. /***/ (function(module, exports, __webpack_require__) {
  7148. "use strict";
  7149. var Coord = __webpack_require__(43);
  7150. __webpack_require__(160);
  7151. module.exports = Coord;
  7152. /***/ }),
  7153. /* 160 */
  7154. /***/ (function(module, exports, __webpack_require__) {
  7155. "use strict";
  7156. var _interopRequireDefault = __webpack_require__(1);
  7157. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  7158. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  7159. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  7160. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  7161. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  7162. var Base = __webpack_require__(43);
  7163. var Cartesian = /*#__PURE__*/function (_Base) {
  7164. (0, _inheritsLoose2["default"])(Cartesian, _Base);
  7165. var _super = _createSuper(Cartesian);
  7166. function Cartesian() {
  7167. return _Base.apply(this, arguments) || this;
  7168. }
  7169. var _proto = Cartesian.prototype;
  7170. _proto._initDefaultCfg = function _initDefaultCfg() {
  7171. this.type = 'cartesian';
  7172. this.transposed = false;
  7173. this.isRect = true;
  7174. };
  7175. _proto.init = function init(start, end) {
  7176. _Base.prototype.init.call(this, start, end);
  7177. this.x = {
  7178. start: start.x,
  7179. end: end.x
  7180. };
  7181. this.y = {
  7182. start: start.y,
  7183. end: end.y
  7184. };
  7185. };
  7186. _proto._convertPoint = function _convertPoint(point) {
  7187. var self = this;
  7188. var transposed = self.transposed;
  7189. var xDim = transposed ? 'y' : 'x';
  7190. var yDim = transposed ? 'x' : 'y';
  7191. var x = self.x;
  7192. var y = self.y;
  7193. return {
  7194. x: x.start + (x.end - x.start) * point[xDim],
  7195. y: y.start + (y.end - y.start) * point[yDim]
  7196. };
  7197. };
  7198. _proto._invertPoint = function _invertPoint(point) {
  7199. var self = this;
  7200. var transposed = self.transposed;
  7201. var xDim = transposed ? 'y' : 'x';
  7202. var yDim = transposed ? 'x' : 'y';
  7203. var x = self.x;
  7204. var y = self.y;
  7205. var rst = {};
  7206. rst[xDim] = (point.x - x.start) / (x.end - x.start);
  7207. rst[yDim] = (point.y - y.start) / (y.end - y.start);
  7208. return rst;
  7209. };
  7210. return Cartesian;
  7211. }(Base);
  7212. Base.Cartesian = Cartesian;
  7213. Base.Rect = Cartesian;
  7214. module.exports = Cartesian;
  7215. /***/ }),
  7216. /* 161 */
  7217. /***/ (function(module, exports, __webpack_require__) {
  7218. "use strict";
  7219. var _interopRequireDefault = __webpack_require__(1);
  7220. exports.__esModule = true;
  7221. exports.Color = exports.Size = exports.Shape = exports.Position = void 0;
  7222. var _position = _interopRequireDefault(__webpack_require__(162));
  7223. exports.Position = _position["default"];
  7224. var _shape = _interopRequireDefault(__webpack_require__(163));
  7225. exports.Shape = _shape["default"];
  7226. var _size = _interopRequireDefault(__webpack_require__(164));
  7227. exports.Size = _size["default"];
  7228. var _color = _interopRequireDefault(__webpack_require__(165));
  7229. exports.Color = _color["default"];
  7230. /***/ }),
  7231. /* 162 */
  7232. /***/ (function(module, exports, __webpack_require__) {
  7233. "use strict";
  7234. var _interopRequireDefault = __webpack_require__(1);
  7235. exports.__esModule = true;
  7236. exports["default"] = void 0;
  7237. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  7238. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  7239. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  7240. var _util = __webpack_require__(20);
  7241. var _base = _interopRequireDefault(__webpack_require__(32));
  7242. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  7243. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  7244. var Position = /*#__PURE__*/function (_Base) {
  7245. (0, _inheritsLoose2["default"])(Position, _Base);
  7246. var _super = _createSuper(Position);
  7247. function Position(cfg) {
  7248. var _this;
  7249. _this = _Base.call(this, cfg) || this;
  7250. _this.names = ['x', 'y'];
  7251. _this.type = 'position';
  7252. return _this;
  7253. }
  7254. var _proto = Position.prototype;
  7255. _proto.mapping = function mapping(x, y) {
  7256. var scales = this.scales;
  7257. var coord = this.coord;
  7258. var scaleX = scales[0];
  7259. var scaleY = scales[1];
  7260. var rstX;
  7261. var rstY;
  7262. var obj;
  7263. if ((0, _util.isNil)(x) || (0, _util.isNil)(y)) {
  7264. return [];
  7265. }
  7266. if ((0, _util.isArray)(y) && (0, _util.isArray)(x)) {
  7267. rstX = [];
  7268. rstY = [];
  7269. for (var i = 0, j = 0, xLen = x.length, yLen = y.length; i < xLen && j < yLen; i++, j++) {
  7270. obj = coord.convertPoint({
  7271. x: scaleX.scale(x[i]),
  7272. y: scaleY.scale(y[j])
  7273. });
  7274. rstX.push(obj.x);
  7275. rstY.push(obj.y);
  7276. }
  7277. } else if ((0, _util.isArray)(y)) {
  7278. x = scaleX.scale(x);
  7279. rstY = [];
  7280. (0, _util.each)(y, function (yVal) {
  7281. yVal = scaleY.scale(yVal);
  7282. obj = coord.convertPoint({
  7283. x: x,
  7284. y: yVal
  7285. });
  7286. if (rstX && rstX !== obj.x) {
  7287. if (!(0, _util.isArray)(rstX)) {
  7288. rstX = [rstX];
  7289. }
  7290. rstX.push(obj.x);
  7291. } else {
  7292. rstX = obj.x;
  7293. }
  7294. rstY.push(obj.y);
  7295. });
  7296. } else if ((0, _util.isArray)(x)) {
  7297. y = scaleY.scale(y);
  7298. rstX = [];
  7299. (0, _util.each)(x, function (xVal) {
  7300. xVal = scaleX.scale(xVal);
  7301. obj = coord.convertPoint({
  7302. x: xVal,
  7303. y: y
  7304. });
  7305. if (rstY && rstY !== obj.y) {
  7306. if (!(0, _util.isArray)(rstY)) {
  7307. rstY = [rstY];
  7308. }
  7309. rstY.push(obj.y);
  7310. } else {
  7311. rstY = obj.y;
  7312. }
  7313. rstX.push(obj.x);
  7314. });
  7315. } else {
  7316. x = scaleX.scale(x);
  7317. y = scaleY.scale(y);
  7318. var point = coord.convertPoint({
  7319. x: x,
  7320. y: y
  7321. });
  7322. rstX = point.x;
  7323. rstY = point.y;
  7324. }
  7325. return [rstX, rstY];
  7326. };
  7327. return Position;
  7328. }(_base["default"]);
  7329. var _default = Position;
  7330. exports["default"] = _default;
  7331. /***/ }),
  7332. /* 163 */
  7333. /***/ (function(module, exports, __webpack_require__) {
  7334. "use strict";
  7335. var _interopRequireDefault = __webpack_require__(1);
  7336. exports.__esModule = true;
  7337. exports["default"] = void 0;
  7338. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  7339. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  7340. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  7341. var _base = _interopRequireDefault(__webpack_require__(32));
  7342. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  7343. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  7344. var Shape = /*#__PURE__*/function (_Base) {
  7345. (0, _inheritsLoose2["default"])(Shape, _Base);
  7346. var _super = _createSuper(Shape);
  7347. function Shape(cfg) {
  7348. var _this;
  7349. _this = _Base.call(this, cfg) || this;
  7350. _this.names = ['shape'];
  7351. _this.type = 'shape';
  7352. _this.gradient = null;
  7353. return _this;
  7354. }
  7355. /**
  7356. * @override
  7357. */
  7358. var _proto = Shape.prototype;
  7359. _proto.getLinearValue = function getLinearValue(percent) {
  7360. var values = this.values;
  7361. var index = Math.round((values.length - 1) * percent);
  7362. return values[index];
  7363. };
  7364. return Shape;
  7365. }(_base["default"]);
  7366. var _default = Shape;
  7367. exports["default"] = _default;
  7368. /***/ }),
  7369. /* 164 */
  7370. /***/ (function(module, exports, __webpack_require__) {
  7371. "use strict";
  7372. var _interopRequireDefault = __webpack_require__(1);
  7373. exports.__esModule = true;
  7374. exports["default"] = void 0;
  7375. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  7376. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  7377. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  7378. var _base = _interopRequireDefault(__webpack_require__(32));
  7379. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  7380. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  7381. var Size = /*#__PURE__*/function (_Base) {
  7382. (0, _inheritsLoose2["default"])(Size, _Base);
  7383. var _super = _createSuper(Size);
  7384. function Size(cfg) {
  7385. var _this;
  7386. _this = _Base.call(this, cfg) || this;
  7387. _this.names = ['size'];
  7388. _this.type = 'size';
  7389. _this.gradient = null;
  7390. return _this;
  7391. }
  7392. return Size;
  7393. }(_base["default"]);
  7394. var _default = Size;
  7395. exports["default"] = _default;
  7396. /***/ }),
  7397. /* 165 */
  7398. /***/ (function(module, exports, __webpack_require__) {
  7399. "use strict";
  7400. var _interopRequireDefault = __webpack_require__(1);
  7401. exports.__esModule = true;
  7402. exports["default"] = void 0;
  7403. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  7404. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  7405. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  7406. var _util = __webpack_require__(20);
  7407. var _base = _interopRequireDefault(__webpack_require__(32));
  7408. var _colorUtil = _interopRequireDefault(__webpack_require__(166));
  7409. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  7410. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  7411. var Color = /*#__PURE__*/function (_Base) {
  7412. (0, _inheritsLoose2["default"])(Color, _Base);
  7413. var _super = _createSuper(Color);
  7414. function Color(cfg) {
  7415. var _this;
  7416. _this = _Base.call(this, cfg) || this;
  7417. _this.names = ['color'];
  7418. _this.type = 'color';
  7419. _this.gradient = null;
  7420. if ((0, _util.isString)(_this.values)) {
  7421. _this.linear = true;
  7422. }
  7423. return _this;
  7424. }
  7425. /**
  7426. * @override
  7427. */
  7428. var _proto = Color.prototype;
  7429. _proto.getLinearValue = function getLinearValue(percent) {
  7430. var gradient = this.gradient;
  7431. if (!gradient) {
  7432. var values = this.values;
  7433. gradient = _colorUtil["default"].gradient(values);
  7434. this.gradient = gradient;
  7435. }
  7436. return gradient(percent);
  7437. };
  7438. return Color;
  7439. }(_base["default"]);
  7440. var _default = Color;
  7441. exports["default"] = _default;
  7442. /***/ }),
  7443. /* 166 */
  7444. /***/ (function(module, exports, __webpack_require__) {
  7445. "use strict";
  7446. exports.__esModule = true;
  7447. exports["default"] = void 0;
  7448. var _util = __webpack_require__(20);
  7449. // Get the interpolation between colors
  7450. function getValue(start, end, percent, index) {
  7451. var value = start[index] + (end[index] - start[index]) * percent;
  7452. return value;
  7453. } // convert to hex
  7454. function arr2hex(arr) {
  7455. return '#' + toRGBValue(arr[0]) + toRGBValue(arr[1]) + toRGBValue(arr[2]);
  7456. }
  7457. function toRGBValue(value) {
  7458. value = Math.round(value);
  7459. value = value.toString(16);
  7460. if (value.length === 1) {
  7461. value = '0' + value;
  7462. }
  7463. return value;
  7464. }
  7465. function calColor(colors, percent) {
  7466. var steps = colors.length - 1;
  7467. var step = Math.floor(steps * percent);
  7468. var left = steps * percent - step;
  7469. var start = colors[step];
  7470. var end = step === steps ? start : colors[step + 1];
  7471. var rgb = arr2hex([getValue(start, end, left, 0), getValue(start, end, left, 1), getValue(start, end, left, 2)]);
  7472. return rgb;
  7473. }
  7474. function hex2arr(str) {
  7475. var arr = [];
  7476. arr.push(parseInt(str.substr(1, 2), 16));
  7477. arr.push(parseInt(str.substr(3, 2), 16));
  7478. arr.push(parseInt(str.substr(5, 2), 16));
  7479. return arr;
  7480. }
  7481. var colorCache = {
  7482. black: '#000000',
  7483. blue: '#0000ff',
  7484. grey: '#808080',
  7485. green: '#008000',
  7486. orange: '#ffa500',
  7487. pink: '#ffc0cb',
  7488. purple: '#800080',
  7489. red: '#ff0000',
  7490. white: '#ffffff',
  7491. yellow: '#ffff00'
  7492. };
  7493. var ColorUtil = {
  7494. /**
  7495. * Returns a hexadecimal string representing this color in RGB space, such as #f7eaba.
  7496. * @param {String} color color value
  7497. * @return {String} Returns a hexadecimal string
  7498. */
  7499. toHex: function toHex(color) {
  7500. if (colorCache[color]) {
  7501. return colorCache[color];
  7502. }
  7503. if (color[0] === '#') {
  7504. if (color.length === 7) {
  7505. return color;
  7506. }
  7507. var hex = color.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (m, r, g, b) {
  7508. return '#' + r + r + g + g + b + b;
  7509. }); // hex3 to hex6
  7510. colorCache[color] = hex;
  7511. return hex;
  7512. } // rgb/rgba to hex
  7513. var rst = color.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
  7514. rst.shift();
  7515. rst = arr2hex(rst);
  7516. colorCache[color] = rst;
  7517. return rst;
  7518. },
  7519. hex2arr: hex2arr,
  7520. /**
  7521. * handle the gradient color
  7522. * @param {Array} colors the colors
  7523. * @return {String} return the color value
  7524. */
  7525. gradient: function gradient(colors) {
  7526. var points = [];
  7527. if ((0, _util.isString)(colors)) {
  7528. colors = colors.split('-');
  7529. }
  7530. (0, _util.each)(colors, function (color) {
  7531. if (color.indexOf('#') === -1) {
  7532. color = ColorUtil.toHex(color);
  7533. }
  7534. points.push(hex2arr(color));
  7535. });
  7536. return function (percent) {
  7537. return calColor(points, percent);
  7538. };
  7539. }
  7540. };
  7541. var _default = ColorUtil;
  7542. exports["default"] = _default;
  7543. /***/ }),
  7544. /* 167 */
  7545. /***/ (function(module, exports, __webpack_require__) {
  7546. "use strict";
  7547. var Util = __webpack_require__(0);
  7548. var Global = __webpack_require__(6);
  7549. var Scale = __webpack_require__(168);
  7550. var SCALE_TYPES_MAP = {
  7551. linear: 'Linear',
  7552. cat: 'Cat',
  7553. timeCat: 'TimeCat',
  7554. identity: 'Identity'
  7555. };
  7556. function isFullCircle(coord) {
  7557. if (!coord.isPolar) {
  7558. return false;
  7559. }
  7560. var startAngle = coord.startAngle;
  7561. var endAngle = coord.endAngle;
  7562. if (!Util.isNil(startAngle) && !Util.isNil(endAngle) && endAngle - startAngle < Math.PI * 2) {
  7563. return false;
  7564. }
  7565. return true;
  7566. }
  7567. function clearObj(obj) {
  7568. Object.keys(obj).forEach(function (key) {
  7569. delete obj[key];
  7570. });
  7571. }
  7572. var ScaleController = /*#__PURE__*/function () {
  7573. function ScaleController(cfg) {
  7574. // defs 列定义
  7575. this.defs = {}; // 已经实例化的scale
  7576. this.scales = {};
  7577. Util.mix(this, cfg);
  7578. }
  7579. var _proto = ScaleController.prototype;
  7580. _proto.setFieldDef = function setFieldDef(field, cfg) {
  7581. var defs = this.defs;
  7582. if (Util.isObject(field)) {
  7583. Util.mix(defs, field);
  7584. } else {
  7585. defs[field] = cfg;
  7586. } // 因为可能同时变更多个scale,所以要把所有已实例化的scale都更新下
  7587. this.updateScales();
  7588. };
  7589. _proto._getDef = function _getDef(field) {
  7590. var defs = this.defs;
  7591. var def = null;
  7592. if (Global.scales[field] || defs[field]) {
  7593. def = Util.mix({}, Global.scales[field]);
  7594. Util.each(defs[field], function (v, k) {
  7595. if (Util.isNil(v)) {
  7596. delete def[k];
  7597. } else {
  7598. def[k] = v;
  7599. }
  7600. });
  7601. }
  7602. return def;
  7603. };
  7604. _proto._getDefaultType = function _getDefaultType(field, data, def) {
  7605. if (def && def.type) {
  7606. return def.type;
  7607. }
  7608. var type = 'linear';
  7609. var value = Util.Array.firstValue(data, field);
  7610. if (Util.isArray(value)) {
  7611. value = value[0];
  7612. }
  7613. if (Util.isString(value)) {
  7614. type = 'cat';
  7615. }
  7616. return type;
  7617. };
  7618. _proto._getScaleDef = function _getScaleDef(type, field, data, def) {
  7619. var values;
  7620. if (def && def.values) {
  7621. values = def.values;
  7622. } else {
  7623. values = Util.Array.values(data, field);
  7624. }
  7625. var cfg = {
  7626. field: field,
  7627. values: values
  7628. };
  7629. if (type !== 'cat' && type !== 'timeCat') {
  7630. if (!def || !(def.min && def.max)) {
  7631. var _Util$Array$getRange = Util.Array.getRange(values),
  7632. min = _Util$Array$getRange.min,
  7633. max = _Util$Array$getRange.max;
  7634. cfg.min = min;
  7635. cfg.max = max;
  7636. cfg.nice = true;
  7637. }
  7638. } else {
  7639. cfg.isRounding = false; // used for tickCount calculation
  7640. }
  7641. return cfg;
  7642. } // 调整range,为了让图形居中
  7643. ;
  7644. _proto._adjustRange = function _adjustRange(type, cfg) {
  7645. var range = cfg.range,
  7646. values = cfg.values; // 如果是线性, 或者有自定义range都不处理
  7647. if (type === 'linear' || range || !values) {
  7648. return cfg;
  7649. }
  7650. var count = values.length; // 单只有一条数据时,在中间显示
  7651. if (count === 1) {
  7652. cfg.range = [0.5, 1];
  7653. } else {
  7654. var chart = this.chart;
  7655. var coord = chart.get('coord');
  7656. var widthRatio = Global.widthRatio.multiplePie;
  7657. var offset = 0;
  7658. if (isFullCircle(coord)) {
  7659. if (!coord.transposed) {
  7660. cfg.range = [0, 1 - 1 / count];
  7661. } else {
  7662. offset = 1 / count * widthRatio;
  7663. cfg.range = [offset / 2, 1 - offset / 2];
  7664. }
  7665. } else {
  7666. // 为了让图形居中,所以才设置range
  7667. offset = 1 / count * 1 / 2;
  7668. cfg.range = [offset, 1 - offset];
  7669. }
  7670. }
  7671. return cfg;
  7672. };
  7673. _proto._getScaleCfg = function _getScaleCfg(field, data) {
  7674. var self = this;
  7675. var def = self._getDef(field);
  7676. if (!data || !data.length) {
  7677. if (def && def.type) {
  7678. def.field = field;
  7679. return {
  7680. type: SCALE_TYPES_MAP[def.type],
  7681. cfg: def
  7682. };
  7683. }
  7684. return {
  7685. type: 'Identity',
  7686. cfg: {
  7687. value: field,
  7688. field: field.toString(),
  7689. values: [field]
  7690. }
  7691. };
  7692. }
  7693. var firstObj = data[0];
  7694. var firstValue = firstObj[field];
  7695. if (firstValue === null) {
  7696. firstValue = Util.Array.firstValue(data, field);
  7697. }
  7698. if (Util.isNumber(field) || Util.isNil(firstValue) && !def) {
  7699. return {
  7700. type: 'Identity',
  7701. cfg: {
  7702. value: field,
  7703. field: field.toString(),
  7704. values: [field]
  7705. }
  7706. };
  7707. }
  7708. var type = self._getDefaultType(field, data, def);
  7709. var cfg = self._getScaleDef(type, field, data, def);
  7710. def && Util.mix(cfg, def);
  7711. cfg = this._adjustRange(type, cfg);
  7712. return {
  7713. type: SCALE_TYPES_MAP[type],
  7714. cfg: cfg
  7715. };
  7716. };
  7717. _proto.createScale = function createScale(field, data) {
  7718. var scales = this.scales;
  7719. var _this$_getScaleCfg = this._getScaleCfg(field, data),
  7720. type = _this$_getScaleCfg.type,
  7721. cfg = _this$_getScaleCfg.cfg;
  7722. var scale = scales[field]; // 如果已经存在,且类型相等时直接返回
  7723. if (scale && SCALE_TYPES_MAP[scale.type] === type) {
  7724. scale.change(cfg);
  7725. return scale;
  7726. }
  7727. var newScale = new Scale[type](cfg);
  7728. scales[field] = newScale;
  7729. return newScale;
  7730. };
  7731. _proto._updateScale = function _updateScale(scale) {
  7732. var field = scale.field; // 因为每个field的数据都会不同
  7733. var data = this.chart._getScaleData(field);
  7734. var _this$_getScaleCfg2 = this._getScaleCfg(field, data),
  7735. cfg = _this$_getScaleCfg2.cfg;
  7736. scale.change(cfg);
  7737. };
  7738. _proto.updateScales = function updateScales() {
  7739. var _this = this;
  7740. var scales = this.scales; // 修改完列定义后,需要更新已经实例化的scale
  7741. // 如果是还没有实例化的,在geom初始化的时候会被实例化,所以这里可以不用更新
  7742. Util.each(scales, function (scale) {
  7743. _this._updateScale(scale);
  7744. });
  7745. } // 调整scale从0开始
  7746. ;
  7747. _proto.adjustStartZero = function adjustStartZero(scale) {
  7748. var defs = this.defs;
  7749. var field = scale.field,
  7750. min = scale.min,
  7751. max = scale.max; // 如果有定义,则不处理
  7752. if (defs[field] && defs[field].min) {
  7753. return;
  7754. }
  7755. if (min > 0) {
  7756. scale.change({
  7757. min: 0
  7758. });
  7759. } else if (max < 0) {
  7760. scale.change({
  7761. max: 0
  7762. });
  7763. }
  7764. };
  7765. _proto.clear = function clear() {
  7766. // this.defs = {};
  7767. // this.scales = {};
  7768. clearObj(this.defs);
  7769. clearObj(this.scales);
  7770. this.data = null;
  7771. };
  7772. return ScaleController;
  7773. }();
  7774. module.exports = ScaleController;
  7775. /***/ }),
  7776. /* 168 */
  7777. /***/ (function(module, exports, __webpack_require__) {
  7778. "use strict";
  7779. var Scale = __webpack_require__(26);
  7780. __webpack_require__(169);
  7781. __webpack_require__(172);
  7782. __webpack_require__(69);
  7783. module.exports = Scale;
  7784. /***/ }),
  7785. /* 169 */
  7786. /***/ (function(module, exports, __webpack_require__) {
  7787. function _inheritsLoose(subClass, superClass) {
  7788. subClass.prototype = Object.create(superClass.prototype);
  7789. subClass.prototype.constructor = subClass;
  7790. subClass.__proto__ = superClass;
  7791. }
  7792. /**
  7793. * @fileOverview The measurement of linear data scale function
  7794. * @author dxq613@gmail.com
  7795. */
  7796. var isNil = __webpack_require__(35);
  7797. var each = __webpack_require__(15);
  7798. var Base = __webpack_require__(26);
  7799. var numberAuto = __webpack_require__(170);
  7800. /**
  7801. * 线性度量
  7802. * @class Scale.Linear
  7803. */
  7804. var Linear = /*#__PURE__*/function (_Base) {
  7805. _inheritsLoose(Linear, _Base);
  7806. function Linear() {
  7807. return _Base.apply(this, arguments) || this;
  7808. }
  7809. var _proto = Linear.prototype;
  7810. _proto._initDefaultCfg = function _initDefaultCfg() {
  7811. _Base.prototype._initDefaultCfg.call(this);
  7812. var self = this;
  7813. self.type = 'linear';
  7814. self.isLinear = true;
  7815. /**
  7816. * 是否为了用户习惯,优化min,max和ticks,如果进行优化,则会根据生成的ticks调整min,max,否则舍弃(min,max)范围之外的ticks
  7817. * @type {Boolean}
  7818. * @default false
  7819. */
  7820. self.nice = false;
  7821. /**
  7822. * min value of the scale
  7823. * @type {Number}
  7824. * @default null
  7825. */
  7826. self.min = null;
  7827. /**
  7828. * min value limitted of the scale
  7829. * @type {Number}
  7830. * @default null
  7831. */
  7832. self.minLimit = null;
  7833. /**
  7834. * max value of the scale
  7835. * @type {Number}
  7836. * @default null
  7837. */
  7838. self.max = null;
  7839. /**
  7840. * max value limitted of the scale
  7841. * @type {Number}
  7842. * @default null
  7843. */
  7844. self.maxLimit = null;
  7845. /**
  7846. * 自动生成标记时的个数
  7847. * @type {Number}
  7848. * @default null
  7849. */
  7850. self.tickCount = null;
  7851. /**
  7852. * 坐标轴点之间的间距,指的是真实数据的差值
  7853. * @type {Number}
  7854. * @default null
  7855. */
  7856. self.tickInterval = null;
  7857. /**
  7858. * 坐标轴点之间的最小间距,指的是真实数据的差值
  7859. * @type {Number}
  7860. * @default null
  7861. */
  7862. self.minTickInterval = null;
  7863. /**
  7864. * 用于计算坐标点时逼近的数组
  7865. * @type {Array}
  7866. */
  7867. self.snapArray = null;
  7868. }
  7869. /**
  7870. * @protected
  7871. * @override
  7872. */
  7873. ;
  7874. _proto.init = function init() {
  7875. var self = this;
  7876. if (!self.ticks) {
  7877. self.min = self.translate(self.min);
  7878. self.max = self.translate(self.max);
  7879. self.initTicks();
  7880. } else {
  7881. var ticks = self.ticks;
  7882. var firstValue = self.translate(ticks[0]);
  7883. var lastValue = self.translate(ticks[ticks.length - 1]);
  7884. if (isNil(self.min) || self.min > firstValue) {
  7885. self.min = firstValue;
  7886. }
  7887. if (isNil(self.max) || self.max < lastValue) {
  7888. self.max = lastValue;
  7889. }
  7890. }
  7891. }
  7892. /**
  7893. * 计算坐标点
  7894. * @protected
  7895. * @return {Array} 计算完成的坐标点
  7896. */
  7897. ;
  7898. _proto.calculateTicks = function calculateTicks() {
  7899. var min = this.min,
  7900. max = this.max,
  7901. minLimit = this.minLimit,
  7902. maxLimit = this.maxLimit,
  7903. tickCount = this.tickCount,
  7904. tickInterval = this.tickInterval,
  7905. minTickInterval = this.minTickInterval,
  7906. snapArray = this.snapArray;
  7907. if (tickCount === 1) {
  7908. throw new Error('linear scale\'tickCount should not be 1');
  7909. }
  7910. if (max < min) {
  7911. throw new Error("max: " + max + " should not be less than min: " + min);
  7912. }
  7913. var tmp = numberAuto({
  7914. min: min,
  7915. max: max,
  7916. minLimit: minLimit,
  7917. maxLimit: maxLimit,
  7918. minCount: tickCount,
  7919. maxCount: tickCount,
  7920. interval: tickInterval,
  7921. minTickInterval: minTickInterval,
  7922. snapArray: snapArray
  7923. });
  7924. return tmp.ticks;
  7925. } // 初始化ticks
  7926. ;
  7927. _proto.initTicks = function initTicks() {
  7928. var self = this;
  7929. var calTicks = self.calculateTicks();
  7930. if (self.nice) {
  7931. // 如果需要优化显示的tick
  7932. self.ticks = calTicks;
  7933. self.min = calTicks[0];
  7934. self.max = calTicks[calTicks.length - 1];
  7935. } else {
  7936. var ticks = [];
  7937. each(calTicks, function (tick) {
  7938. if (tick >= self.min && tick <= self.max) {
  7939. ticks.push(tick);
  7940. }
  7941. }); // 如果 ticks 为空,直接输入最小值、最大值
  7942. if (!ticks.length) {
  7943. ticks.push(self.min);
  7944. ticks.push(self.max);
  7945. }
  7946. self.ticks = ticks;
  7947. }
  7948. }
  7949. /**
  7950. * @override
  7951. */
  7952. ;
  7953. _proto.scale = function scale(value) {
  7954. if (isNil(value)) {
  7955. return NaN;
  7956. }
  7957. var max = this.max;
  7958. var min = this.min;
  7959. if (max === min) {
  7960. return 0;
  7961. }
  7962. var percent = (value - min) / (max - min);
  7963. var rangeMin = this.rangeMin();
  7964. var rangeMax = this.rangeMax();
  7965. return rangeMin + percent * (rangeMax - rangeMin);
  7966. }
  7967. /**
  7968. * @override
  7969. */
  7970. ;
  7971. _proto.invert = function invert(value) {
  7972. var percent = (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin());
  7973. return this.min + percent * (this.max - this.min);
  7974. };
  7975. return Linear;
  7976. }(Base);
  7977. Base.Linear = Linear;
  7978. module.exports = Linear;
  7979. /***/ }),
  7980. /* 170 */
  7981. /***/ (function(module, exports, __webpack_require__) {
  7982. /**
  7983. * @fileOverview 自动计算数字坐标轴
  7984. * @author dxq613@gmail.com
  7985. */
  7986. var isNil = __webpack_require__(35);
  7987. var isNumber = __webpack_require__(36);
  7988. var AutoUtil = __webpack_require__(171);
  7989. var MIN_COUNT = 5;
  7990. var MAX_COUNT = 7;
  7991. var SNAP_COUNT_ARRAY = [0, 1, 1.2, 1.5, 1.6, 2, 2.2, 2.4, 2.5, 3, 4, 5, 6, 7.5, 8, 10];
  7992. var SNAP_ARRAY = [0, 1, 2, 4, 5, 10];
  7993. var EPS = 1e-12;
  7994. module.exports = function (info) {
  7995. var min = info.min;
  7996. var max = info.max;
  7997. var interval = info.interval;
  7998. var minTickInterval = info.minTickInterval;
  7999. var ticks = [];
  8000. var minCount = info.minCount || MIN_COUNT;
  8001. var maxCount = info.maxCount || MAX_COUNT;
  8002. var isFixedCount = minCount === maxCount; // 是否限定死了个数
  8003. var minLimit = isNil(info.minLimit) ? -Infinity : info.minLimit; // 限定的最小值
  8004. var maxLimit = isNil(info.maxLimit) ? Infinity : info.maxLimit; // 限定最大值
  8005. var avgCount = (minCount + maxCount) / 2;
  8006. var count = avgCount; // 用户传入的逼近数组
  8007. var snapArray = info.snapArray ? info.snapArray : isFixedCount ? SNAP_COUNT_ARRAY : SNAP_ARRAY; // 如果限定大小范围,同时大小范围等于用户传入的范围,同时限定了个数,interval 按照个数均分
  8008. if (min === minLimit && max === maxLimit && isFixedCount) {
  8009. interval = (max - min) / (count - 1);
  8010. }
  8011. if (isNil(min)) {
  8012. min = 0;
  8013. }
  8014. if (isNil(max)) {
  8015. max = 0;
  8016. }
  8017. if (Math.abs(max - min) < EPS) {
  8018. if (min === 0) {
  8019. max = 1;
  8020. } else {
  8021. if (min > 0) {
  8022. min = 0;
  8023. } else {
  8024. max = 0;
  8025. }
  8026. }
  8027. if (max - min < 5 && !interval && max - min >= 1) {
  8028. interval = 1;
  8029. }
  8030. }
  8031. if (isNil(interval)) {
  8032. // 计算间距
  8033. var temp = (max - min) / (avgCount - 1);
  8034. interval = AutoUtil.snapFactorTo(temp, snapArray, 'ceil');
  8035. if (maxCount !== minCount) {
  8036. count = parseInt((max - min) / interval, 10);
  8037. if (count > maxCount) {
  8038. count = maxCount;
  8039. }
  8040. if (count < minCount) {
  8041. count = minCount;
  8042. } // 不确定tick的个数时,使得tick偏小
  8043. interval = AutoUtil.snapFactorTo((max - min) / (count - 1), snapArray, 'floor');
  8044. }
  8045. } // interval should not be less than minTickInterval
  8046. if (isNumber(minTickInterval) && interval < minTickInterval) {
  8047. interval = minTickInterval;
  8048. }
  8049. if (info.interval || maxCount !== minCount) {
  8050. // 校正 max 和 min
  8051. max = Math.min(AutoUtil.snapMultiple(max, interval, 'ceil'), maxLimit); // 向上逼近
  8052. min = Math.max(AutoUtil.snapMultiple(min, interval, 'floor'), minLimit); // 向下逼近
  8053. count = Math.round((max - min) / interval);
  8054. min = AutoUtil.fixedBase(min, interval);
  8055. max = AutoUtil.fixedBase(max, interval);
  8056. } else {
  8057. avgCount = parseInt(avgCount, 10); // 取整
  8058. var avg = (max + min) / 2;
  8059. var avgTick = AutoUtil.snapMultiple(avg, interval, 'ceil');
  8060. var sideCount = Math.floor((avgCount - 2) / 2);
  8061. var maxTick = avgTick + sideCount * interval;
  8062. var minTick;
  8063. if (avgCount % 2 === 0) {
  8064. minTick = avgTick - sideCount * interval;
  8065. } else {
  8066. minTick = avgTick - (sideCount + 1) * interval;
  8067. }
  8068. var prevMaxTick = null; // 如果减去intervl, fixBase后,新的minTick没有大于之前的值,就退出,防止死循环
  8069. while (maxTick < max && (prevMaxTick === null || maxTick > prevMaxTick)) {
  8070. // 保证计算出来的刻度最大值 maxTick 不小于数据最大值 max
  8071. prevMaxTick = maxTick;
  8072. maxTick = AutoUtil.fixedBase(maxTick + interval, interval);
  8073. }
  8074. var prevMinTick = null; // 如果减去intervl, fixBase后,新的minTick没有小于之前的值,就退出,防止死循环
  8075. while (minTick > min && (prevMinTick === null || minTick < prevMinTick)) {
  8076. // 保证计算出来的刻度最小值 minTick 不小于数据最大值 min
  8077. prevMinTick = minTick;
  8078. minTick = AutoUtil.fixedBase(minTick - interval, interval); // 防止超常浮点数计算问题
  8079. }
  8080. max = maxTick;
  8081. min = minTick;
  8082. }
  8083. max = Math.min(max, maxLimit);
  8084. min = Math.max(min, minLimit);
  8085. ticks.push(min);
  8086. for (var i = 1; i < count; i++) {
  8087. var tickValue = AutoUtil.fixedBase(interval * i + min, interval);
  8088. if (tickValue < max) {
  8089. ticks.push(tickValue);
  8090. }
  8091. }
  8092. if (ticks[ticks.length - 1] < max) {
  8093. ticks.push(max);
  8094. }
  8095. return {
  8096. min: min,
  8097. max: max,
  8098. interval: interval,
  8099. count: count,
  8100. ticks: ticks
  8101. };
  8102. };
  8103. /***/ }),
  8104. /* 171 */
  8105. /***/ (function(module, exports) {
  8106. /**
  8107. * @fileOverview 计算方法
  8108. * @author dxq613@gmail.com
  8109. */
  8110. // 如果小数点后面超过 10 位浮点数时进行一下处理
  8111. var DECIMAL_LENGTH = 12; // 获取系数
  8112. function getFactor(v) {
  8113. var factor = 1;
  8114. if (v === Infinity || v === -Infinity) {
  8115. throw new Error('Not support Infinity!');
  8116. }
  8117. if (v < 1) {
  8118. var count = 0;
  8119. while (v < 1) {
  8120. factor = factor / 10;
  8121. v = v * 10;
  8122. count++;
  8123. } // 浮点数计算出现问题
  8124. if (factor.toString().length > DECIMAL_LENGTH) {
  8125. factor = parseFloat(factor.toFixed(count));
  8126. }
  8127. } else {
  8128. while (v > 10) {
  8129. factor = factor * 10;
  8130. v = v / 10;
  8131. }
  8132. }
  8133. return factor;
  8134. } // 取小于当前值的
  8135. function arrayFloor(values, value) {
  8136. var length = values.length;
  8137. if (length === 0) {
  8138. return NaN;
  8139. }
  8140. var pre = values[0];
  8141. if (value < values[0]) {
  8142. return NaN;
  8143. }
  8144. if (value >= values[length - 1]) {
  8145. return values[length - 1];
  8146. }
  8147. for (var i = 1; i < values.length; i++) {
  8148. if (value < values[i]) {
  8149. break;
  8150. }
  8151. pre = values[i];
  8152. }
  8153. return pre;
  8154. } // 大于当前值的第一个
  8155. function arrayCeiling(values, value) {
  8156. var length = values.length;
  8157. if (length === 0) {
  8158. return NaN;
  8159. } // var pre = values[0];
  8160. var rst;
  8161. if (value > values[length - 1]) {
  8162. return NaN;
  8163. }
  8164. if (value < values[0]) {
  8165. return values[0];
  8166. }
  8167. for (var i = 1; i < values.length; i++) {
  8168. if (value <= values[i]) {
  8169. rst = values[i];
  8170. break;
  8171. }
  8172. }
  8173. return rst;
  8174. }
  8175. var Util = {
  8176. // 获取逼近的数值
  8177. snapFactorTo: function snapFactorTo(v, arr, snapType) {
  8178. // 假设 v = -512,isFloor = true
  8179. if (isNaN(v)) {
  8180. return NaN;
  8181. }
  8182. var factor = 1; // 计算系数
  8183. if (v !== 0) {
  8184. if (v < 0) {
  8185. factor = -1;
  8186. }
  8187. v = v * factor; // v = 512
  8188. var tmpFactor = getFactor(v);
  8189. factor = factor * tmpFactor; // factor = -100
  8190. v = v / tmpFactor; // v = 5.12
  8191. }
  8192. if (snapType === 'floor') {
  8193. v = Util.snapFloor(arr, v); // v = 5
  8194. } else if (snapType === 'ceil') {
  8195. v = Util.snapCeiling(arr, v); // v = 6
  8196. } else {
  8197. v = Util.snapTo(arr, v); // 四舍五入 5
  8198. }
  8199. var rst = parseFloat((v * factor).toPrecision(DECIMAL_LENGTH)); // 如果出现浮点数计算问题,需要处理一下
  8200. // 如果出现浮点数计算问题,需要处理一下
  8201. if (Math.abs(factor) < 1 && rst.toString().length > DECIMAL_LENGTH) {
  8202. var decimalVal = parseInt(1 / factor);
  8203. var symbol = factor > 0 ? 1 : -1;
  8204. rst = v / decimalVal * symbol;
  8205. }
  8206. return rst;
  8207. },
  8208. // 获取逼近的倍数
  8209. snapMultiple: function snapMultiple(v, base, snapType) {
  8210. var div;
  8211. if (snapType === 'ceil') {
  8212. div = Math.ceil(v / base);
  8213. } else if (snapType === 'floor') {
  8214. div = Math.floor(v / base);
  8215. } else {
  8216. div = Math.round(v / base);
  8217. }
  8218. return div * base;
  8219. },
  8220. /**
  8221. * 获取逼近的值,用于对齐数据
  8222. * @param {Array} values 数据集合
  8223. * @param {Number} value 数值
  8224. * @return {Number} 逼近的值
  8225. */
  8226. snapTo: function snapTo(values, value) {
  8227. // 这里假定values是升序排列
  8228. var floorVal = arrayFloor(values, value);
  8229. var ceilingVal = arrayCeiling(values, value);
  8230. if (isNaN(floorVal) || isNaN(ceilingVal)) {
  8231. if (values[0] >= value) {
  8232. return values[0];
  8233. }
  8234. var last = values[values.length - 1];
  8235. if (last <= value) {
  8236. return last;
  8237. }
  8238. }
  8239. if (Math.abs(value - floorVal) < Math.abs(ceilingVal - value)) {
  8240. return floorVal;
  8241. }
  8242. return ceilingVal;
  8243. },
  8244. /**
  8245. * 获取逼近的最小值,用于对齐数据
  8246. * @param {Array} values 数据集合
  8247. * @param {Number} value 数值
  8248. * @return {Number} 逼近的最小值
  8249. */
  8250. snapFloor: function snapFloor(values, value) {
  8251. // 这里假定values是升序排列
  8252. return arrayFloor(values, value);
  8253. },
  8254. /**
  8255. * 获取逼近的最大值,用于对齐数据
  8256. * @param {Array} values 数据集合
  8257. * @param {Number} value 数值
  8258. * @return {Number} 逼近的最大值
  8259. */
  8260. snapCeiling: function snapCeiling(values, value) {
  8261. // 这里假定values是升序排列
  8262. return arrayCeiling(values, value);
  8263. },
  8264. fixedBase: function fixedBase(v, base) {
  8265. var str = base.toString();
  8266. var index = str.indexOf('.');
  8267. var indexOfExp = str.indexOf('e-'); // 判断是否带小数点,1.000001 1.23e-9
  8268. if (index < 0 && indexOfExp < 0) {
  8269. // base为整数
  8270. return Math.round(v);
  8271. }
  8272. var length = indexOfExp >= 0 ? parseInt(str.substr(indexOfExp + 2), 10) : str.substr(index + 1).length;
  8273. if (length > 20) {
  8274. length = 20;
  8275. }
  8276. return parseFloat(v.toFixed(length));
  8277. }
  8278. };
  8279. module.exports = Util;
  8280. /***/ }),
  8281. /* 172 */
  8282. /***/ (function(module, exports, __webpack_require__) {
  8283. function _inheritsLoose(subClass, superClass) {
  8284. subClass.prototype = Object.create(superClass.prototype);
  8285. subClass.prototype.constructor = subClass;
  8286. subClass.__proto__ = superClass;
  8287. }
  8288. var Base = __webpack_require__(26);
  8289. var isNumber = __webpack_require__(36);
  8290. var Identity = /*#__PURE__*/function (_Base) {
  8291. _inheritsLoose(Identity, _Base);
  8292. function Identity() {
  8293. return _Base.apply(this, arguments) || this;
  8294. }
  8295. var _proto = Identity.prototype;
  8296. _proto._initDefaultCfg = function _initDefaultCfg() {
  8297. _Base.prototype._initDefaultCfg.call(this);
  8298. this.isIdentity = true;
  8299. this.type = 'identity';
  8300. /**
  8301. * 常量值
  8302. * @type {*}
  8303. */
  8304. this.value = null;
  8305. }
  8306. /**
  8307. * @override
  8308. */
  8309. ;
  8310. _proto.getText = function getText() {
  8311. return this.value.toString();
  8312. }
  8313. /**
  8314. * @override
  8315. */
  8316. ;
  8317. _proto.scale = function scale(value) {
  8318. if (this.value !== value && isNumber(value)) {
  8319. return value;
  8320. }
  8321. return this.range[0];
  8322. }
  8323. /**
  8324. * @override
  8325. */
  8326. ;
  8327. _proto.invert = function invert() {
  8328. return this.value;
  8329. };
  8330. return Identity;
  8331. }(Base);
  8332. Base.Identity = Identity;
  8333. module.exports = Identity;
  8334. /***/ }),
  8335. /* 173 */
  8336. /***/ (function(module, exports, __webpack_require__) {
  8337. "use strict";
  8338. var Util = __webpack_require__(0);
  8339. var Axis = __webpack_require__(174);
  8340. var Global = __webpack_require__(6);
  8341. var _require = __webpack_require__(16),
  8342. Shape = _require.Shape;
  8343. function formatTicks(ticks) {
  8344. var tmp = ticks.slice(0);
  8345. if (tmp.length > 0) {
  8346. var first = tmp[0];
  8347. var last = tmp[tmp.length - 1];
  8348. if (first.value !== 0) {
  8349. tmp.unshift({
  8350. value: 0
  8351. });
  8352. }
  8353. if (last.value !== 1) {
  8354. tmp.push({
  8355. value: 1
  8356. });
  8357. }
  8358. }
  8359. return tmp;
  8360. }
  8361. var AxisController = /*#__PURE__*/function () {
  8362. function AxisController(cfg) {
  8363. this.axisCfg = {};
  8364. this.frontPlot = null;
  8365. this.backPlot = null;
  8366. this.axes = {}; // store the axes's options
  8367. Util.mix(this, cfg);
  8368. }
  8369. var _proto = AxisController.prototype;
  8370. _proto._isHide = function _isHide(field) {
  8371. var axisCfg = this.axisCfg;
  8372. return !axisCfg || axisCfg[field] === false;
  8373. };
  8374. _proto._getLinePosition = function _getLinePosition(scale, dimType, index, transposed) {
  8375. var position = '';
  8376. var field = scale.field;
  8377. var axisCfg = this.axisCfg;
  8378. if (axisCfg[field] && axisCfg[field].position) {
  8379. position = axisCfg[field].position;
  8380. } else if (dimType === 'x') {
  8381. position = transposed ? 'left' : 'bottom';
  8382. } else if (dimType === 'y') {
  8383. position = index ? 'right' : 'left';
  8384. if (transposed) {
  8385. position = 'bottom';
  8386. }
  8387. }
  8388. return position;
  8389. };
  8390. _proto._getLineCfg = function _getLineCfg(coord, dimType, position) {
  8391. var start;
  8392. var end;
  8393. var factor = 1; // Mark clockwise or counterclockwise
  8394. if (dimType === 'x') {
  8395. start = {
  8396. x: 0,
  8397. y: 0
  8398. };
  8399. end = {
  8400. x: 1,
  8401. y: 0
  8402. };
  8403. } else {
  8404. if (position === 'right') {
  8405. // there will be several y axes
  8406. start = {
  8407. x: 1,
  8408. y: 0
  8409. };
  8410. end = {
  8411. x: 1,
  8412. y: 1
  8413. };
  8414. } else {
  8415. start = {
  8416. x: 0,
  8417. y: 0
  8418. };
  8419. end = {
  8420. x: 0,
  8421. y: 1
  8422. };
  8423. factor = -1;
  8424. }
  8425. }
  8426. if (coord.transposed) {
  8427. factor *= -1;
  8428. }
  8429. return {
  8430. offsetFactor: factor,
  8431. start: coord.convertPoint(start),
  8432. end: coord.convertPoint(end)
  8433. };
  8434. };
  8435. _proto._getCircleCfg = function _getCircleCfg(coord) {
  8436. return {
  8437. startAngle: coord.startAngle,
  8438. endAngle: coord.endAngle,
  8439. center: coord.center,
  8440. radius: coord.circleRadius
  8441. };
  8442. };
  8443. _proto._getRadiusCfg = function _getRadiusCfg(coord) {
  8444. var transposed = coord.transposed;
  8445. var start;
  8446. var end;
  8447. if (transposed) {
  8448. start = {
  8449. x: 0,
  8450. y: 0
  8451. };
  8452. end = {
  8453. x: 1,
  8454. y: 0
  8455. };
  8456. } else {
  8457. start = {
  8458. x: 0,
  8459. y: 0
  8460. };
  8461. end = {
  8462. x: 0,
  8463. y: 1
  8464. };
  8465. }
  8466. return {
  8467. offsetFactor: -1,
  8468. start: coord.convertPoint(start),
  8469. end: coord.convertPoint(end)
  8470. };
  8471. };
  8472. _proto._getAxisCfg = function _getAxisCfg(coord, scale, verticalScale, dimType, defaultCfg) {
  8473. var self = this;
  8474. var axisCfg = this.axisCfg;
  8475. var ticks = scale.getTicks();
  8476. var cfg = Util.deepMix({
  8477. ticks: ticks,
  8478. frontContainer: this.frontPlot,
  8479. backContainer: this.backPlot
  8480. }, defaultCfg, axisCfg[scale.field]);
  8481. var labels = [];
  8482. var label = cfg.label;
  8483. var count = ticks.length;
  8484. var maxWidth = 0;
  8485. var maxHeight = 0;
  8486. var labelCfg = label;
  8487. Util.each(ticks, function (tick, index) {
  8488. if (Util.isFunction(label)) {
  8489. var executedLabel = label(tick.text, index, count);
  8490. labelCfg = executedLabel ? Util.mix({}, Global._defaultAxis.label, executedLabel) : null;
  8491. }
  8492. if (labelCfg) {
  8493. var textStyle = {};
  8494. if (labelCfg.textAlign) {
  8495. textStyle.textAlign = labelCfg.textAlign;
  8496. }
  8497. if (labelCfg.textBaseline) {
  8498. textStyle.textBaseline = labelCfg.textBaseline;
  8499. }
  8500. var axisLabel = new Shape.Text({
  8501. className: 'axis-label',
  8502. attrs: Util.mix({
  8503. x: 0,
  8504. y: 0,
  8505. text: tick.text,
  8506. fontFamily: self.chart.get('canvas').get('fontFamily')
  8507. }, labelCfg),
  8508. value: tick.value,
  8509. textStyle: textStyle,
  8510. top: labelCfg.top,
  8511. context: self.chart.get('canvas').get('context')
  8512. });
  8513. labels.push(axisLabel);
  8514. var _axisLabel$getBBox = axisLabel.getBBox(),
  8515. width = _axisLabel$getBBox.width,
  8516. height = _axisLabel$getBBox.height;
  8517. maxWidth = Math.max(maxWidth, width);
  8518. maxHeight = Math.max(maxHeight, height);
  8519. }
  8520. });
  8521. cfg.labels = labels;
  8522. cfg.maxWidth = maxWidth;
  8523. cfg.maxHeight = maxHeight;
  8524. return cfg;
  8525. };
  8526. _proto._createAxis = function _createAxis(coord, scale, verticalScale, dimType, index) {
  8527. if (index === void 0) {
  8528. index = '';
  8529. }
  8530. var self = this;
  8531. var coordType = coord.type;
  8532. var transposed = coord.transposed;
  8533. var type;
  8534. var key;
  8535. var defaultCfg;
  8536. if (coordType === 'cartesian' || coordType === 'rect') {
  8537. var position = self._getLinePosition(scale, dimType, index, transposed);
  8538. defaultCfg = Global.axis[position];
  8539. defaultCfg.position = position;
  8540. type = 'Line';
  8541. key = position;
  8542. } else {
  8543. if (dimType === 'x' && !transposed || dimType === 'y' && transposed) {
  8544. defaultCfg = Global.axis.circle;
  8545. type = 'Circle';
  8546. key = 'circle';
  8547. } else {
  8548. defaultCfg = Global.axis.radius;
  8549. type = 'Line';
  8550. key = 'radius';
  8551. }
  8552. }
  8553. var cfg = self._getAxisCfg(coord, scale, verticalScale, dimType, defaultCfg);
  8554. cfg.type = type;
  8555. cfg.dimType = dimType;
  8556. cfg.verticalScale = verticalScale;
  8557. cfg.index = index;
  8558. this.axes[key] = cfg;
  8559. };
  8560. _proto.createAxis = function createAxis(coord, xScale, yScales) {
  8561. var self = this;
  8562. if (xScale && !self._isHide(xScale.field)) {
  8563. self._createAxis(coord, xScale, yScales[0], 'x');
  8564. }
  8565. Util.each(yScales, function (yScale, index) {
  8566. if (!self._isHide(yScale.field)) {
  8567. self._createAxis(coord, yScale, xScale, 'y', index);
  8568. }
  8569. });
  8570. var axes = this.axes;
  8571. var chart = self.chart;
  8572. if (chart._isAutoPadding()) {
  8573. var userPadding = Util.parsePadding(chart.get('padding'));
  8574. var appendPadding = Util.parsePadding(chart.get('appendPadding'));
  8575. var legendRange = chart.get('legendRange') || {
  8576. top: 0,
  8577. right: 0,
  8578. bottom: 0,
  8579. left: 0
  8580. };
  8581. var padding = [userPadding[0] === 'auto' ? legendRange.top + appendPadding[0] * 2 : userPadding[0], userPadding[1] === 'auto' ? legendRange.right + appendPadding[1] : userPadding[1], userPadding[2] === 'auto' ? legendRange.bottom + appendPadding[2] : userPadding[2], userPadding[3] === 'auto' ? legendRange.left + appendPadding[3] : userPadding[3]];
  8582. if (coord.isPolar) {
  8583. var circleAxis = axes.circle;
  8584. if (circleAxis) {
  8585. var maxHeight = circleAxis.maxHeight,
  8586. maxWidth = circleAxis.maxWidth,
  8587. labelOffset = circleAxis.labelOffset;
  8588. padding[0] += maxHeight + labelOffset;
  8589. padding[1] += maxWidth + labelOffset;
  8590. padding[2] += maxHeight + labelOffset;
  8591. padding[3] += maxWidth + labelOffset;
  8592. }
  8593. } else {
  8594. if (axes.right && userPadding[1] === 'auto') {
  8595. var _axes$right = axes.right,
  8596. _maxWidth = _axes$right.maxWidth,
  8597. _labelOffset = _axes$right.labelOffset;
  8598. padding[1] += _maxWidth + _labelOffset;
  8599. }
  8600. if (axes.left && userPadding[3] === 'auto') {
  8601. var _axes$left = axes.left,
  8602. _maxWidth2 = _axes$left.maxWidth,
  8603. _labelOffset2 = _axes$left.labelOffset;
  8604. padding[3] += _maxWidth2 + _labelOffset2;
  8605. }
  8606. if (axes.bottom && userPadding[2] === 'auto') {
  8607. var _axes$bottom = axes.bottom,
  8608. _maxHeight = _axes$bottom.maxHeight,
  8609. _labelOffset3 = _axes$bottom.labelOffset;
  8610. padding[2] += _maxHeight + _labelOffset3;
  8611. }
  8612. }
  8613. chart.set('_padding', padding);
  8614. chart._updateLayout(padding);
  8615. }
  8616. Util.each(axes, function (axis) {
  8617. var type = axis.type,
  8618. grid = axis.grid,
  8619. verticalScale = axis.verticalScale,
  8620. ticks = axis.ticks,
  8621. dimType = axis.dimType,
  8622. position = axis.position,
  8623. index = axis.index;
  8624. var appendCfg;
  8625. if (coord.isPolar) {
  8626. if (type === 'Line') {
  8627. appendCfg = self._getRadiusCfg(coord);
  8628. } else if (type === 'Circle') {
  8629. appendCfg = self._getCircleCfg(coord);
  8630. }
  8631. } else {
  8632. appendCfg = self._getLineCfg(coord, dimType, position);
  8633. }
  8634. if (grid && verticalScale) {
  8635. var gridPoints = [];
  8636. var verticalTicks = formatTicks(verticalScale.getTicks());
  8637. Util.each(ticks, function (tick) {
  8638. var subPoints = [];
  8639. Util.each(verticalTicks, function (verticalTick) {
  8640. var x = dimType === 'x' ? tick.value : verticalTick.value;
  8641. var y = dimType === 'x' ? verticalTick.value : tick.value;
  8642. if (x >= 0 && x <= 1 && y >= 0 && y <= 1) {
  8643. var point = coord.convertPoint({
  8644. x: x,
  8645. y: y
  8646. });
  8647. subPoints.push(point);
  8648. }
  8649. });
  8650. gridPoints.push({
  8651. points: subPoints,
  8652. _id: 'axis-' + dimType + index + '-grid-' + tick.tickValue
  8653. });
  8654. });
  8655. axis.gridPoints = gridPoints;
  8656. if (coord.isPolar) {
  8657. axis.center = coord.center;
  8658. axis.startAngle = coord.startAngle;
  8659. axis.endAngle = coord.endAngle;
  8660. }
  8661. }
  8662. appendCfg._id = 'axis-' + dimType;
  8663. if (!Util.isNil(index)) {
  8664. appendCfg._id = 'axis-' + dimType + index;
  8665. }
  8666. new Axis[type](Util.mix(axis, appendCfg));
  8667. });
  8668. };
  8669. _proto.clear = function clear() {
  8670. this.axes = {};
  8671. this.frontPlot.clear();
  8672. this.backPlot.clear();
  8673. };
  8674. return AxisController;
  8675. }();
  8676. module.exports = AxisController;
  8677. /***/ }),
  8678. /* 174 */
  8679. /***/ (function(module, exports, __webpack_require__) {
  8680. "use strict";
  8681. var Abstract = __webpack_require__(45);
  8682. __webpack_require__(175);
  8683. module.exports = Abstract;
  8684. /***/ }),
  8685. /* 175 */
  8686. /***/ (function(module, exports, __webpack_require__) {
  8687. "use strict";
  8688. var _interopRequireDefault = __webpack_require__(1);
  8689. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  8690. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  8691. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  8692. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  8693. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  8694. var Util = __webpack_require__(0);
  8695. var Abstract = __webpack_require__(45);
  8696. var Line = /*#__PURE__*/function (_Abstract) {
  8697. (0, _inheritsLoose2["default"])(Line, _Abstract);
  8698. var _super = _createSuper(Line);
  8699. function Line() {
  8700. return _Abstract.apply(this, arguments) || this;
  8701. }
  8702. var _proto = Line.prototype;
  8703. _proto._initDefaultCfg = function _initDefaultCfg() {
  8704. _Abstract.prototype._initDefaultCfg.call(this);
  8705. this.start = null;
  8706. this.end = null;
  8707. };
  8708. _proto.getOffsetPoint = function getOffsetPoint(value) {
  8709. var start = this.start,
  8710. end = this.end;
  8711. return {
  8712. x: start.x + (end.x - start.x) * value,
  8713. y: start.y + (end.y - start.y) * value
  8714. };
  8715. };
  8716. _proto.getAxisVector = function getAxisVector() {
  8717. var start = this.start,
  8718. end = this.end;
  8719. return [end.x - start.x, end.y - start.y];
  8720. };
  8721. _proto.drawLine = function drawLine(lineCfg) {
  8722. var container = this.getContainer(lineCfg.top);
  8723. var start = this.start,
  8724. end = this.end;
  8725. container.addShape('line', {
  8726. className: 'axis-line',
  8727. attrs: Util.mix({
  8728. x1: start.x,
  8729. y1: start.y,
  8730. x2: end.x,
  8731. y2: end.y
  8732. }, lineCfg)
  8733. });
  8734. };
  8735. return Line;
  8736. }(Abstract);
  8737. Abstract.Line = Line;
  8738. module.exports = Line;
  8739. /***/ }),
  8740. /* 176 */
  8741. /***/ (function(module, exports, __webpack_require__) {
  8742. "use strict";
  8743. var _interopRequireDefault = __webpack_require__(1);
  8744. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  8745. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  8746. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  8747. var _emit = _interopRequireDefault(__webpack_require__(42));
  8748. var _controller = _interopRequireDefault(__webpack_require__(177));
  8749. var _canvasElement = _interopRequireDefault(__webpack_require__(178));
  8750. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  8751. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  8752. var Util = __webpack_require__(0);
  8753. var Container = __webpack_require__(66);
  8754. var Group = __webpack_require__(67);
  8755. var _require = __webpack_require__(70),
  8756. requestAnimationFrame = _require.requestAnimationFrame;
  8757. var Canvas = /*#__PURE__*/function (_EventEmit) {
  8758. (0, _inheritsLoose2["default"])(Canvas, _EventEmit);
  8759. var _super = _createSuper(Canvas);
  8760. var _proto = Canvas.prototype;
  8761. _proto.get = function get(name) {
  8762. return this._attrs[name];
  8763. };
  8764. _proto.set = function set(name, value) {
  8765. this._attrs[name] = value;
  8766. };
  8767. function Canvas(cfg) {
  8768. var _this;
  8769. _this = _EventEmit.call(this) || this;
  8770. _this._attrs = Util.mix({
  8771. type: 'canvas',
  8772. children: []
  8773. }, cfg);
  8774. _this._initPixelRatio();
  8775. _this._initCanvas();
  8776. return _this;
  8777. }
  8778. _proto._initPixelRatio = function _initPixelRatio() {
  8779. var pixelRatio = this.get('pixelRatio');
  8780. if (!pixelRatio) {
  8781. this.set('pixelRatio', Util.getPixelRatio());
  8782. }
  8783. };
  8784. _proto.beforeDraw = function beforeDraw() {
  8785. var context = this._attrs.context;
  8786. var el = this._attrs.el;
  8787. context && context.clearRect && context.clearRect(0, 0, el.width, el.height);
  8788. };
  8789. _proto._initCanvas = function _initCanvas() {
  8790. var self = this;
  8791. var el = self.get('el');
  8792. var context = self.get('context');
  8793. if (!el && !context) {
  8794. throw new Error('Please specify the id, el or context of the chart!');
  8795. }
  8796. var canvas;
  8797. if (el) {
  8798. // DOMElement or String
  8799. canvas = Util.isString(el) ? Util.getDomById(el) : el;
  8800. } else {
  8801. // 说明没有指定el
  8802. canvas = _canvasElement["default"].create(context);
  8803. }
  8804. if (context && canvas && !canvas.getContext) {
  8805. canvas.getContext = function () {
  8806. return context;
  8807. };
  8808. }
  8809. var width = self.get('width');
  8810. if (!width) {
  8811. width = Util.getWidth(canvas);
  8812. }
  8813. var height = self.get('height');
  8814. if (!height) {
  8815. height = Util.getHeight(canvas);
  8816. }
  8817. self.set('canvas', this);
  8818. self.set('el', canvas);
  8819. self.set('context', context || canvas.getContext('2d'));
  8820. self.changeSize(width, height); // 初始化事件控制器
  8821. var eventController = new _controller["default"]({
  8822. canvas: this,
  8823. el: canvas
  8824. });
  8825. self.set('eventController', eventController);
  8826. };
  8827. _proto.changeSize = function changeSize(width, height) {
  8828. var pixelRatio = this.get('pixelRatio');
  8829. var canvasDOM = this.get('el'); // HTMLCanvasElement or canvasElement
  8830. // 浏览器环境设置style样式
  8831. if (canvasDOM.style) {
  8832. canvasDOM.style.width = width + 'px';
  8833. canvasDOM.style.height = height + 'px';
  8834. }
  8835. if (Util.isCanvasElement(canvasDOM)) {
  8836. canvasDOM.width = width * pixelRatio;
  8837. canvasDOM.height = height * pixelRatio;
  8838. if (pixelRatio !== 1) {
  8839. var ctx = this.get('context');
  8840. ctx.scale(pixelRatio, pixelRatio);
  8841. }
  8842. }
  8843. this.set('width', width);
  8844. this.set('height', height);
  8845. };
  8846. _proto.getWidth = function getWidth() {
  8847. var pixelRatio = this.get('pixelRatio');
  8848. var width = this.get('width');
  8849. return width * pixelRatio;
  8850. };
  8851. _proto.getHeight = function getHeight() {
  8852. var pixelRatio = this.get('pixelRatio');
  8853. var height = this.get('height');
  8854. return height * pixelRatio;
  8855. };
  8856. _proto.getPointByClient = function getPointByClient(clientX, clientY) {
  8857. var el = this.get('el');
  8858. var bbox = el.getBoundingClientRect();
  8859. var width = bbox.right - bbox.left;
  8860. var height = bbox.bottom - bbox.top;
  8861. return {
  8862. x: (clientX - bbox.left) * (el.width / width),
  8863. y: (clientY - bbox.top) * (el.height / height)
  8864. };
  8865. };
  8866. _proto._beginDraw = function _beginDraw() {
  8867. this._attrs.toDraw = true;
  8868. };
  8869. _proto._endDraw = function _endDraw() {
  8870. this._attrs.toDraw = false;
  8871. };
  8872. _proto.draw = function draw() {
  8873. var self = this;
  8874. function drawInner() {
  8875. self.set('animateHandler', requestAnimationFrame(function () {
  8876. self.set('animateHandler', undefined);
  8877. if (self.get('toDraw')) {
  8878. drawInner();
  8879. }
  8880. }));
  8881. self.beforeDraw();
  8882. try {
  8883. var context = self._attrs.context;
  8884. var children = self._attrs.children;
  8885. for (var i = 0, len = children.length; i < len; i++) {
  8886. var child = children[i];
  8887. child.draw(context);
  8888. } // 支付宝,微信小程序,需要调context.draw才能完成绘制, 所以这里直接判断是否有.draw方法
  8889. if (context.draw) {
  8890. context.draw();
  8891. }
  8892. } catch (ev) {
  8893. console.warn('error in draw canvas, detail as:');
  8894. console.warn(ev);
  8895. self._endDraw();
  8896. }
  8897. self._endDraw();
  8898. }
  8899. if (self.get('destroyed')) {
  8900. return;
  8901. }
  8902. if (self.get('animateHandler')) {
  8903. this._beginDraw();
  8904. } else {
  8905. drawInner();
  8906. }
  8907. };
  8908. _proto.destroy = function destroy() {
  8909. if (this.get('destroyed')) {
  8910. return;
  8911. } // 需要清理 canvas 画布内容,否则会导致 spa 应用 ios 下 canvas 白屏
  8912. // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12
  8913. // https://github.com/antvis/F2/issues/630
  8914. var el = this.get('el');
  8915. el.width = 0;
  8916. el.height = 0;
  8917. this.clear();
  8918. this._attrs = {};
  8919. this.set('destroyed', true);
  8920. };
  8921. _proto.isDestroyed = function isDestroyed() {
  8922. return this.get('destroyed');
  8923. };
  8924. return Canvas;
  8925. }(_emit["default"]);
  8926. Util.mix(Canvas.prototype, Container, {
  8927. getGroupClass: function getGroupClass() {
  8928. return Group;
  8929. }
  8930. });
  8931. module.exports = Canvas;
  8932. /***/ }),
  8933. /* 177 */
  8934. /***/ (function(module, exports, __webpack_require__) {
  8935. "use strict";
  8936. exports.__esModule = true;
  8937. exports["default"] = void 0;
  8938. var _dom = __webpack_require__(62);
  8939. var _common = __webpack_require__(0);
  8940. // 计算滑动的方向
  8941. var calcDirection = function calcDirection(start, end) {
  8942. var xDistance = end.x - start.x;
  8943. var yDistance = end.y - start.y; // x 的距离大于y 说明是横向,否则就是纵向
  8944. if (Math.abs(xDistance) > Math.abs(yDistance)) {
  8945. return xDistance > 0 ? 'right' : 'left';
  8946. }
  8947. return yDistance > 0 ? 'down' : 'up';
  8948. }; // 计算2点之间的距离
  8949. var calcDistance = function calcDistance(point1, point2) {
  8950. var xDistance = Math.abs(point2.x - point1.x);
  8951. var yDistance = Math.abs(point2.y - point1.y);
  8952. return Math.sqrt(xDistance * xDistance + yDistance * yDistance);
  8953. };
  8954. var getCenter = function getCenter(point1, point2) {
  8955. var x = point1.x + (point2.x - point1.x) / 2;
  8956. var y = point1.y + (point2.y - point1.y) / 2;
  8957. return {
  8958. x: x,
  8959. y: y
  8960. };
  8961. };
  8962. var convertPoints = function convertPoints(touches, canvas) {
  8963. if (!touches) return;
  8964. var points = [];
  8965. var len = touches.length;
  8966. for (var i = 0; i < len; i++) {
  8967. var touch = touches[i]; // x, y: 相对canvas原点的位置,clientX, clientY 相对于可视窗口的位置
  8968. var x = touch.x,
  8969. y = touch.y,
  8970. clientX = touch.clientX,
  8971. clientY = touch.clientY;
  8972. var point = void 0; // 小程序环境会有x,y
  8973. if ((0, _common.isNumber)(x) || (0, _common.isNumber)(y)) {
  8974. point = {
  8975. x: x,
  8976. y: y
  8977. };
  8978. } else {
  8979. // 浏览器环境再计算下canvas的相对位置
  8980. point = (0, _dom.getRelativePosition)({
  8981. x: clientX,
  8982. y: clientY
  8983. }, canvas);
  8984. }
  8985. points.push(point);
  8986. }
  8987. return points;
  8988. };
  8989. var PRESS_DELAY = 250;
  8990. var EventController = /*#__PURE__*/function () {
  8991. function EventController(_ref) {
  8992. var _this = this;
  8993. var canvas = _ref.canvas,
  8994. el = _ref.el;
  8995. this._click = function (ev) {
  8996. _this.emitEvent('click', ev);
  8997. };
  8998. this._start = function (ev) {
  8999. var points = convertPoints(ev.touches, _this.canvas);
  9000. if (!points) {
  9001. return;
  9002. }
  9003. ev.points = points;
  9004. _this.emitEvent('touchstart', ev); // 防止上次的内容没有清理掉,重新reset下
  9005. _this.reset(); // 记录touch start 的时间
  9006. _this.startTime = Date.now(); // 记录touch start 的点
  9007. _this.startPoints = points;
  9008. if (points.length > 1) {
  9009. _this.startDistance = calcDistance(points[0], points[1]);
  9010. _this.center = getCenter(points[0], points[1]);
  9011. } else {
  9012. // 如果touchstart后停顿250ms, 则也触发press事件
  9013. _this.pressTimeout = setTimeout(function () {
  9014. // 这里固定触发press事件
  9015. var eventType = 'press';
  9016. ev.direction = 'none';
  9017. _this.emitStart(eventType, ev);
  9018. _this.emitEvent(eventType, ev);
  9019. _this.eventType = eventType;
  9020. }, PRESS_DELAY);
  9021. }
  9022. };
  9023. this._move = function (ev) {
  9024. var points = convertPoints(ev.touches, _this.canvas);
  9025. if (!points) return;
  9026. _this.clearPressTimeout();
  9027. ev.points = points;
  9028. _this.emitEvent('touchmove', ev);
  9029. var startPoints = _this.startPoints;
  9030. if (!startPoints) return; // 多指触控
  9031. if (points.length > 1) {
  9032. // touchstart的距离
  9033. var startDistance = _this.startDistance;
  9034. var currentDistance = calcDistance(points[0], points[1]);
  9035. ev.zoom = currentDistance / startDistance;
  9036. ev.center = _this.center; // 触发缩放事件
  9037. _this.emitStart('pinch', ev);
  9038. _this.emitEvent('pinch', ev);
  9039. } else {
  9040. var deltaX = points[0].x - startPoints[0].x;
  9041. var deltaY = points[0].y - startPoints[0].y;
  9042. var direction = _this.direction || calcDirection(startPoints[0], points[0]);
  9043. _this.direction = direction; // 获取press或者pan的事件类型
  9044. // press 按住滑动, pan表示平移
  9045. // 如果start后立刻move,则触发pan, 如果有停顿,则触发press
  9046. var eventType = _this.getEventType(points);
  9047. ev.direction = direction;
  9048. ev.deltaX = deltaX;
  9049. ev.deltaY = deltaY;
  9050. _this.emitStart(eventType, ev);
  9051. _this.emitEvent(eventType, ev); // 记录最后2次move的时间和坐标,为了给swipe事件用
  9052. var prevMoveTime = _this.lastMoveTime;
  9053. var now = Date.now(); // 最后2次的时间间隔一定要大于0,否则swipe没发计算
  9054. if (now - prevMoveTime > 0) {
  9055. _this.prevMoveTime = prevMoveTime;
  9056. _this.prevMovePoints = _this.lastMovePoints;
  9057. _this.lastMoveTime = now;
  9058. _this.lastMovePoints = points;
  9059. }
  9060. }
  9061. };
  9062. this._end = function (ev) {
  9063. _this.emitEnd(ev);
  9064. _this.emitEvent('touchend', ev); // swipe事件处理, 在touchend之后触发
  9065. var lastMoveTime = _this.lastMoveTime;
  9066. var now = Date.now(); // 做这个判断是为了最后一次touchmove后到end前,还有一个停顿的过程
  9067. // 100 是拍的一个值,理论这个值会很短,一般不卡顿的话在10ms以内
  9068. if (now - lastMoveTime < 100) {
  9069. var prevMoveTime = _this.prevMoveTime || _this.startTime;
  9070. var intervalTime = lastMoveTime - prevMoveTime; // 时间间隔一定要大于0, 否则计算没意义
  9071. if (intervalTime > 0) {
  9072. var prevMovePoints = _this.prevMovePoints || _this.startPoints;
  9073. var lastMovePoints = _this.lastMovePoints; // move速率
  9074. var velocity = calcDistance(prevMovePoints[0], lastMovePoints[0]) / intervalTime; // 0.3 是参考hammerjs的设置
  9075. if (velocity > 0.3) {
  9076. ev.velocity = velocity;
  9077. ev.direction = calcDirection(prevMovePoints[0], lastMovePoints[0]);
  9078. _this.emitEvent('swipe', ev);
  9079. }
  9080. }
  9081. }
  9082. _this.reset();
  9083. var touches = ev.touches; // 当多指只释放了1指时也会触发end, 这时重新触发一次start
  9084. if (touches && touches.length > 0) {
  9085. _this._start(ev);
  9086. }
  9087. };
  9088. this._cancel = function (ev) {
  9089. _this.emitEvent('touchcancel', ev);
  9090. _this.reset();
  9091. };
  9092. // canvasEl
  9093. this.canvas = canvas;
  9094. this.delegateEvent(el); // 用来记录当前触发的事件
  9095. this.processEvent = {};
  9096. }
  9097. var _proto = EventController.prototype;
  9098. _proto.delegateEvent = function delegateEvent(canvasEl) {
  9099. // 代理这几个事件
  9100. canvasEl.addEventListener('click', this._click);
  9101. canvasEl.addEventListener('touchstart', this._start);
  9102. canvasEl.addEventListener('touchmove', this._move);
  9103. canvasEl.addEventListener('touchend', this._end);
  9104. canvasEl.addEventListener('touchcancel', this._cancel);
  9105. };
  9106. _proto.emitEvent = function emitEvent(type, ev) {
  9107. var canvas = this.canvas;
  9108. canvas.emit(type, ev);
  9109. };
  9110. _proto.getEventType = function getEventType(points) {
  9111. var eventType = this.eventType,
  9112. canvas = this.canvas,
  9113. startTime = this.startTime,
  9114. startPoints = this.startPoints;
  9115. if (eventType) {
  9116. return eventType;
  9117. }
  9118. var type;
  9119. var panEventListeners = canvas.__events.pan; // 如果没有pan事件的监听,默认都是press
  9120. if (!panEventListeners || !panEventListeners.length) {
  9121. type = 'press';
  9122. } else {
  9123. // 如果有pan事件的处理,press则需要停顿250ms, 且移动距离小于10
  9124. var now = Date.now();
  9125. if (now - startTime > PRESS_DELAY && calcDistance(startPoints[0], points[0]) < 10) {
  9126. type = 'press';
  9127. } else {
  9128. type = 'pan';
  9129. }
  9130. }
  9131. this.eventType = type;
  9132. return type;
  9133. };
  9134. _proto.enable = function enable(eventType) {
  9135. this.processEvent[eventType] = true;
  9136. } // 是否进行中的事件
  9137. ;
  9138. _proto.isProcess = function isProcess(eventType) {
  9139. return this.processEvent[eventType];
  9140. } // 触发start事件
  9141. ;
  9142. _proto.emitStart = function emitStart(type, ev) {
  9143. if (this.isProcess(type)) {
  9144. return;
  9145. }
  9146. this.enable(type);
  9147. this.emitEvent(type + "start", ev);
  9148. } // 触发end事件
  9149. ;
  9150. _proto.emitEnd = function emitEnd(ev) {
  9151. var _this2 = this;
  9152. var processEvent = this.processEvent;
  9153. Object.keys(processEvent).forEach(function (type) {
  9154. _this2.emitEvent(type + "end", ev);
  9155. delete processEvent[type];
  9156. });
  9157. };
  9158. _proto.clearPressTimeout = function clearPressTimeout() {
  9159. if (this.pressTimeout) {
  9160. clearTimeout(this.pressTimeout);
  9161. this.pressTimeout = 0;
  9162. }
  9163. };
  9164. _proto.reset = function reset() {
  9165. this.clearPressTimeout();
  9166. this.startTime = 0;
  9167. this.startPoints = null;
  9168. this.startDistance = 0;
  9169. this.direction = null;
  9170. this.eventType = null;
  9171. this.pinch = false;
  9172. this.prevMoveTime = 0;
  9173. this.prevMovePoints = null;
  9174. this.lastMoveTime = 0;
  9175. this.lastMovePoints = null;
  9176. };
  9177. return EventController;
  9178. }();
  9179. var _default = EventController;
  9180. exports["default"] = _default;
  9181. /***/ }),
  9182. /* 178 */
  9183. /***/ (function(module, exports, __webpack_require__) {
  9184. "use strict";
  9185. var _interopRequireDefault = __webpack_require__(1);
  9186. exports.__esModule = true;
  9187. exports["default"] = void 0;
  9188. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  9189. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  9190. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  9191. var _emit = _interopRequireDefault(__webpack_require__(42));
  9192. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  9193. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  9194. var CanvasElement = /*#__PURE__*/function (_EventEmit) {
  9195. (0, _inheritsLoose2["default"])(CanvasElement, _EventEmit);
  9196. var _super = _createSuper(CanvasElement);
  9197. function CanvasElement(ctx) {
  9198. var _this;
  9199. _this = _EventEmit.call(this) || this;
  9200. _this.context = ctx; // canvas实际的宽高 (width/height) * pixelRatio
  9201. _this.width = 0;
  9202. _this.height = 0;
  9203. _this.style = {};
  9204. _this.currentStyle = {}; // 用来标识是CanvasElement实例
  9205. _this.isCanvasElement = true;
  9206. return _this;
  9207. }
  9208. var _proto = CanvasElement.prototype;
  9209. _proto.getContext = function getContext()
  9210. /* type */
  9211. {
  9212. return this.context;
  9213. };
  9214. _proto.getBoundingClientRect = function getBoundingClientRect() {
  9215. var width = this.width;
  9216. var height = this.height; // 默认都处理成可视窗口的顶部位置
  9217. return {
  9218. top: 0,
  9219. right: width,
  9220. bottom: height,
  9221. left: 0
  9222. };
  9223. };
  9224. _proto.addEventListener = function addEventListener(type, listener) {
  9225. this.on(type, listener);
  9226. };
  9227. _proto.removeEventListener = function removeEventListener(type, listener) {
  9228. this.off(type, listener);
  9229. };
  9230. _proto.dispatchEvent = function dispatchEvent(type, e) {
  9231. this.emit(type, e);
  9232. };
  9233. return CanvasElement;
  9234. }(_emit["default"]);
  9235. function supportEventListener(canvas) {
  9236. if (!canvas) {
  9237. return false;
  9238. } // 非 HTMLCanvasElement
  9239. if (canvas.nodeType !== 1 || !canvas.nodeName || canvas.nodeName.toLowerCase() !== 'canvas') {
  9240. return false;
  9241. } // 微信小程序canvas.getContext('2d')时也是CanvasRenderingContext2D
  9242. // 也会有ctx.canvas, 而且nodeType也是1,所以还要在看下是否支持addEventListener
  9243. var support = false;
  9244. try {
  9245. canvas.addEventListener('eventTest', function () {
  9246. support = true;
  9247. });
  9248. canvas.dispatchEvent(new Event('eventTest'));
  9249. } catch (error) {
  9250. support = false;
  9251. }
  9252. return support;
  9253. }
  9254. var _default = {
  9255. create: function create(ctx) {
  9256. if (!ctx) {
  9257. return null;
  9258. }
  9259. if (supportEventListener(ctx.canvas)) {
  9260. return ctx.canvas;
  9261. }
  9262. return new CanvasElement(ctx);
  9263. }
  9264. };
  9265. exports["default"] = _default;
  9266. /***/ }),
  9267. /* 179 */
  9268. /***/ (function(module, exports, __webpack_require__) {
  9269. "use strict";
  9270. var Util = __webpack_require__(0);
  9271. function _mod(n, m) {
  9272. return (n % m + m) % m;
  9273. }
  9274. function _addStop(steps, gradient) {
  9275. Util.each(steps, function (item) {
  9276. item = item.split(':');
  9277. gradient.addColorStop(Number(item[0]), item[1]);
  9278. });
  9279. } // the string format: 'l(0) 0:#ffffff 0.5:#7ec2f3 1:#1890ff'
  9280. function _parseLineGradient(color, shape, context) {
  9281. var arr = color.split(' ');
  9282. var angle = arr[0].slice(2, arr[0].length - 1);
  9283. angle = _mod(parseFloat(angle) * Math.PI / 180, Math.PI * 2);
  9284. var steps = arr.slice(1);
  9285. var _shape$getBBox = shape.getBBox(),
  9286. minX = _shape$getBBox.minX,
  9287. minY = _shape$getBBox.minY,
  9288. maxX = _shape$getBBox.maxX,
  9289. maxY = _shape$getBBox.maxY;
  9290. var start;
  9291. var end;
  9292. if (angle >= 0 && angle < 0.5 * Math.PI) {
  9293. start = {
  9294. x: minX,
  9295. y: minY
  9296. };
  9297. end = {
  9298. x: maxX,
  9299. y: maxY
  9300. };
  9301. } else if (0.5 * Math.PI <= angle && angle < Math.PI) {
  9302. start = {
  9303. x: maxX,
  9304. y: minY
  9305. };
  9306. end = {
  9307. x: minX,
  9308. y: maxY
  9309. };
  9310. } else if (Math.PI <= angle && angle < 1.5 * Math.PI) {
  9311. start = {
  9312. x: maxX,
  9313. y: maxY
  9314. };
  9315. end = {
  9316. x: minX,
  9317. y: minY
  9318. };
  9319. } else {
  9320. start = {
  9321. x: minX,
  9322. y: maxY
  9323. };
  9324. end = {
  9325. x: maxX,
  9326. y: minY
  9327. };
  9328. }
  9329. var tanTheta = Math.tan(angle);
  9330. var tanTheta2 = tanTheta * tanTheta;
  9331. var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;
  9332. var y = tanTheta * (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.y;
  9333. var gradient = context.createLinearGradient(start.x, start.y, x, y);
  9334. _addStop(steps, gradient);
  9335. return gradient;
  9336. } // the string format: 'r(0.5, 0.5, 0.1) 0:#ffffff 1:#1890ff'
  9337. function _parseRadialGradient(color, shape, context) {
  9338. var arr = color.split(' ');
  9339. var circleCfg = arr[0].slice(2, arr[0].length - 1);
  9340. circleCfg = circleCfg.split(',');
  9341. var fx = parseFloat(circleCfg[0]);
  9342. var fy = parseFloat(circleCfg[1]);
  9343. var fr = parseFloat(circleCfg[2]);
  9344. var steps = arr.slice(1); // if radius is 0, no gradient, stroke with the last color
  9345. if (fr === 0) {
  9346. var _color = steps[steps.length - 1];
  9347. return _color.split(':')[1];
  9348. }
  9349. var _shape$getBBox2 = shape.getBBox(),
  9350. width = _shape$getBBox2.width,
  9351. height = _shape$getBBox2.height,
  9352. minX = _shape$getBBox2.minX,
  9353. minY = _shape$getBBox2.minY;
  9354. var r = Math.sqrt(width * width + height * height) / 2;
  9355. var gradient = context.createRadialGradient(minX + width * fx, minY + height * fy, fr * r, minX + width / 2, minY + height / 2, r);
  9356. _addStop(steps, gradient);
  9357. return gradient;
  9358. }
  9359. module.exports = {
  9360. parseStyle: function parseStyle(color, shape, context) {
  9361. if (color[1] === '(') {
  9362. try {
  9363. var firstCode = color[0];
  9364. if (firstCode === 'l') {
  9365. return _parseLineGradient(color, shape, context);
  9366. } else if (firstCode === 'r') {
  9367. return _parseRadialGradient(color, shape, context);
  9368. }
  9369. } catch (ev) {
  9370. console.error('error in parsing gradient string, please check if there are any extra whitespaces.');
  9371. console.error(ev);
  9372. }
  9373. }
  9374. return color;
  9375. }
  9376. };
  9377. /***/ }),
  9378. /* 180 */
  9379. /***/ (function(module, exports, __webpack_require__) {
  9380. "use strict";
  9381. var _interopRequireDefault = __webpack_require__(1);
  9382. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  9383. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  9384. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  9385. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  9386. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  9387. var Util = __webpack_require__(0);
  9388. var Shape = __webpack_require__(10);
  9389. var Rect = /*#__PURE__*/function (_Shape) {
  9390. (0, _inheritsLoose2["default"])(Rect, _Shape);
  9391. var _super = _createSuper(Rect);
  9392. function Rect() {
  9393. return _Shape.apply(this, arguments) || this;
  9394. }
  9395. var _proto = Rect.prototype;
  9396. _proto._initProperties = function _initProperties() {
  9397. _Shape.prototype._initProperties.call(this);
  9398. this._attrs.canFill = true;
  9399. this._attrs.canStroke = true;
  9400. this._attrs.type = 'rect';
  9401. };
  9402. _proto.getDefaultAttrs = function getDefaultAttrs() {
  9403. return {
  9404. x: 0,
  9405. y: 0,
  9406. width: 0,
  9407. height: 0,
  9408. radius: 0,
  9409. lineWidth: 0
  9410. };
  9411. };
  9412. _proto.createPath = function createPath(context) {
  9413. var self = this;
  9414. var attrs = self.get('attrs');
  9415. var x = attrs.x,
  9416. y = attrs.y,
  9417. width = attrs.width,
  9418. height = attrs.height;
  9419. context.beginPath();
  9420. var radius = attrs.radius;
  9421. if (!radius || !(width * height)) {
  9422. context.rect(x, y, width, height);
  9423. } else {
  9424. radius = Util.parsePadding(radius);
  9425. context.moveTo(x + radius[0], y);
  9426. context.lineTo(x + width - radius[1], y);
  9427. context.arc(x + width - radius[1], y + radius[1], radius[1], -Math.PI / 2, 0, false);
  9428. context.lineTo(x + width, y + height - radius[2]);
  9429. context.arc(x + width - radius[2], y + height - radius[2], radius[2], 0, Math.PI / 2, false);
  9430. context.lineTo(x + radius[3], y + height);
  9431. context.arc(x + radius[3], y + height - radius[3], radius[3], Math.PI / 2, Math.PI, false);
  9432. context.lineTo(x, y + radius[0]);
  9433. context.arc(x + radius[0], y + radius[0], radius[0], Math.PI, Math.PI * 3 / 2, false);
  9434. context.closePath();
  9435. }
  9436. };
  9437. _proto.calculateBox = function calculateBox() {
  9438. var attrs = this.get('attrs');
  9439. var x = attrs.x,
  9440. y = attrs.y,
  9441. width = attrs.width,
  9442. height = attrs.height;
  9443. return {
  9444. minX: x,
  9445. minY: y,
  9446. maxX: x + width,
  9447. maxY: y + height
  9448. };
  9449. };
  9450. return Rect;
  9451. }(Shape);
  9452. Shape.Rect = Rect;
  9453. module.exports = Rect;
  9454. /***/ }),
  9455. /* 181 */
  9456. /***/ (function(module, exports, __webpack_require__) {
  9457. "use strict";
  9458. var _interopRequireDefault = __webpack_require__(1);
  9459. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  9460. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  9461. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  9462. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  9463. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  9464. var Shape = __webpack_require__(10);
  9465. var Circle = /*#__PURE__*/function (_Shape) {
  9466. (0, _inheritsLoose2["default"])(Circle, _Shape);
  9467. var _super = _createSuper(Circle);
  9468. function Circle() {
  9469. return _Shape.apply(this, arguments) || this;
  9470. }
  9471. var _proto = Circle.prototype;
  9472. _proto._initProperties = function _initProperties() {
  9473. _Shape.prototype._initProperties.call(this);
  9474. this._attrs.canFill = true;
  9475. this._attrs.canStroke = true;
  9476. this._attrs.type = 'circle';
  9477. };
  9478. _proto.getDefaultAttrs = function getDefaultAttrs() {
  9479. return {
  9480. x: 0,
  9481. y: 0,
  9482. r: 0,
  9483. lineWidth: 0
  9484. };
  9485. };
  9486. _proto.createPath = function createPath(context) {
  9487. var attrs = this.get('attrs');
  9488. var x = attrs.x,
  9489. y = attrs.y,
  9490. r = attrs.r;
  9491. context.beginPath();
  9492. context.arc(x, y, r, 0, Math.PI * 2, false);
  9493. context.closePath();
  9494. };
  9495. _proto.calculateBox = function calculateBox() {
  9496. var attrs = this.get('attrs');
  9497. var x = attrs.x,
  9498. y = attrs.y,
  9499. r = attrs.r;
  9500. return {
  9501. minX: x - r,
  9502. maxX: x + r,
  9503. minY: y - r,
  9504. maxY: y + r
  9505. };
  9506. };
  9507. return Circle;
  9508. }(Shape);
  9509. Shape.Circle = Circle;
  9510. module.exports = Circle;
  9511. /***/ }),
  9512. /* 182 */
  9513. /***/ (function(module, exports, __webpack_require__) {
  9514. "use strict";
  9515. var _interopRequireDefault = __webpack_require__(1);
  9516. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  9517. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  9518. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  9519. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  9520. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  9521. var Shape = __webpack_require__(10);
  9522. var bbox = __webpack_require__(21);
  9523. var Line = /*#__PURE__*/function (_Shape) {
  9524. (0, _inheritsLoose2["default"])(Line, _Shape);
  9525. var _super = _createSuper(Line);
  9526. function Line() {
  9527. return _Shape.apply(this, arguments) || this;
  9528. }
  9529. var _proto = Line.prototype;
  9530. _proto._initProperties = function _initProperties() {
  9531. _Shape.prototype._initProperties.call(this);
  9532. this._attrs.canStroke = true;
  9533. this._attrs.type = 'line';
  9534. };
  9535. _proto.getDefaultAttrs = function getDefaultAttrs() {
  9536. return {
  9537. x1: 0,
  9538. y1: 0,
  9539. x2: 0,
  9540. y2: 0,
  9541. lineWidth: 1
  9542. };
  9543. };
  9544. _proto.createPath = function createPath(context) {
  9545. var attrs = this.get('attrs');
  9546. var x1 = attrs.x1,
  9547. y1 = attrs.y1,
  9548. x2 = attrs.x2,
  9549. y2 = attrs.y2;
  9550. context.beginPath();
  9551. context.moveTo(x1, y1);
  9552. context.lineTo(x2, y2);
  9553. };
  9554. _proto.calculateBox = function calculateBox() {
  9555. var attrs = this.get('attrs');
  9556. var x1 = attrs.x1,
  9557. y1 = attrs.y1,
  9558. x2 = attrs.x2,
  9559. y2 = attrs.y2,
  9560. lineWidth = attrs.lineWidth;
  9561. return bbox.getBBoxFromLine(x1, y1, x2, y2, lineWidth);
  9562. };
  9563. return Line;
  9564. }(Shape);
  9565. Shape.Line = Line;
  9566. module.exports = Line;
  9567. /***/ }),
  9568. /* 183 */
  9569. /***/ (function(module, exports, __webpack_require__) {
  9570. "use strict";
  9571. var _interopRequireDefault = __webpack_require__(1);
  9572. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  9573. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  9574. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  9575. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  9576. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  9577. var Shape = __webpack_require__(10);
  9578. var bbox = __webpack_require__(21);
  9579. var Polygon = /*#__PURE__*/function (_Shape) {
  9580. (0, _inheritsLoose2["default"])(Polygon, _Shape);
  9581. var _super = _createSuper(Polygon);
  9582. function Polygon() {
  9583. return _Shape.apply(this, arguments) || this;
  9584. }
  9585. var _proto = Polygon.prototype;
  9586. _proto._initProperties = function _initProperties() {
  9587. _Shape.prototype._initProperties.call(this);
  9588. this._attrs.canFill = true;
  9589. this._attrs.canStroke = true;
  9590. this._attrs.type = 'polygon';
  9591. };
  9592. _proto.getDefaultAttrs = function getDefaultAttrs() {
  9593. return {
  9594. points: null,
  9595. lineWidth: 0
  9596. };
  9597. };
  9598. _proto.createPath = function createPath(context) {
  9599. var self = this;
  9600. var attrs = self.get('attrs');
  9601. var points = attrs.points;
  9602. context.beginPath();
  9603. for (var i = 0, len = points.length; i < len; i++) {
  9604. var point = points[i];
  9605. if (i === 0) {
  9606. context.moveTo(point.x, point.y);
  9607. } else {
  9608. context.lineTo(point.x, point.y);
  9609. }
  9610. }
  9611. context.closePath();
  9612. };
  9613. _proto.calculateBox = function calculateBox() {
  9614. var attrs = this.get('attrs');
  9615. var points = attrs.points;
  9616. return bbox.getBBoxFromPoints(points);
  9617. };
  9618. return Polygon;
  9619. }(Shape);
  9620. Shape.Polygon = Polygon;
  9621. module.exports = Polygon;
  9622. /***/ }),
  9623. /* 184 */
  9624. /***/ (function(module, exports, __webpack_require__) {
  9625. "use strict";
  9626. var _interopRequireDefault = __webpack_require__(1);
  9627. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  9628. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  9629. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  9630. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  9631. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  9632. var Shape = __webpack_require__(10);
  9633. var Smooth = __webpack_require__(71);
  9634. var bbox = __webpack_require__(21); // filter the point which x or y is NaN
  9635. function _filterPoints(points) {
  9636. var filteredPoints = [];
  9637. for (var i = 0, len = points.length; i < len; i++) {
  9638. var point = points[i];
  9639. if (!isNaN(point.x) && !isNaN(point.y)) {
  9640. filteredPoints.push(point);
  9641. }
  9642. }
  9643. return filteredPoints;
  9644. }
  9645. var Polyline = /*#__PURE__*/function (_Shape) {
  9646. (0, _inheritsLoose2["default"])(Polyline, _Shape);
  9647. var _super = _createSuper(Polyline);
  9648. function Polyline() {
  9649. return _Shape.apply(this, arguments) || this;
  9650. }
  9651. var _proto = Polyline.prototype;
  9652. _proto._initProperties = function _initProperties() {
  9653. _Shape.prototype._initProperties.call(this);
  9654. this._attrs.canFill = true;
  9655. this._attrs.canStroke = true;
  9656. this._attrs.type = 'polyline';
  9657. };
  9658. _proto.getDefaultAttrs = function getDefaultAttrs() {
  9659. return {
  9660. points: null,
  9661. lineWidth: 1,
  9662. smooth: false
  9663. };
  9664. };
  9665. _proto.createPath = function createPath(context) {
  9666. var self = this;
  9667. var attrs = self.get('attrs');
  9668. var points = attrs.points,
  9669. smooth = attrs.smooth;
  9670. var filteredPoints = _filterPoints(points);
  9671. context.beginPath();
  9672. if (filteredPoints.length) {
  9673. context.moveTo(filteredPoints[0].x, filteredPoints[0].y);
  9674. if (smooth) {
  9675. var constaint = [[0, 0], [1, 1]];
  9676. var sps = Smooth.smooth(filteredPoints, false, constaint);
  9677. for (var i = 0, n = sps.length; i < n; i++) {
  9678. var sp = sps[i];
  9679. context.bezierCurveTo(sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]);
  9680. }
  9681. } else {
  9682. var _i;
  9683. var l;
  9684. for (_i = 1, l = filteredPoints.length - 1; _i < l; _i++) {
  9685. context.lineTo(filteredPoints[_i].x, filteredPoints[_i].y);
  9686. }
  9687. context.lineTo(filteredPoints[l].x, filteredPoints[l].y);
  9688. }
  9689. }
  9690. };
  9691. _proto.calculateBox = function calculateBox() {
  9692. var attrs = this.get('attrs');
  9693. var points = attrs.points,
  9694. smooth = attrs.smooth,
  9695. lineWidth = attrs.lineWidth;
  9696. var filteredPoints = _filterPoints(points);
  9697. if (smooth) {
  9698. var newPoints = [];
  9699. var constaint = [[0, 0], [1, 1]];
  9700. var sps = Smooth.smooth(filteredPoints, false, constaint);
  9701. for (var i = 0, n = sps.length; i < n; i++) {
  9702. var sp = sps[i];
  9703. if (i === 0) {
  9704. newPoints.push([filteredPoints[0].x, filteredPoints[0].y, sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]]);
  9705. } else {
  9706. var lastPoint = sps[i - 1];
  9707. newPoints.push([lastPoint[5], lastPoint[6], sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]]);
  9708. }
  9709. }
  9710. return bbox.getBBoxFromBezierGroup(newPoints, lineWidth);
  9711. }
  9712. return bbox.getBBoxFromPoints(filteredPoints, lineWidth);
  9713. };
  9714. return Polyline;
  9715. }(Shape);
  9716. Shape.Polyline = Polyline;
  9717. module.exports = Polyline;
  9718. /***/ }),
  9719. /* 185 */
  9720. /***/ (function(module, exports, __webpack_require__) {
  9721. "use strict";
  9722. var _interopRequireDefault = __webpack_require__(1);
  9723. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  9724. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  9725. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  9726. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  9727. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  9728. var Shape = __webpack_require__(10);
  9729. var bbox = __webpack_require__(21);
  9730. var Arc = /*#__PURE__*/function (_Shape) {
  9731. (0, _inheritsLoose2["default"])(Arc, _Shape);
  9732. var _super = _createSuper(Arc);
  9733. function Arc() {
  9734. return _Shape.apply(this, arguments) || this;
  9735. }
  9736. var _proto = Arc.prototype;
  9737. _proto._initProperties = function _initProperties() {
  9738. _Shape.prototype._initProperties.call(this);
  9739. this._attrs.canStroke = true;
  9740. this._attrs.canFill = true;
  9741. this._attrs.type = 'arc';
  9742. };
  9743. _proto.getDefaultAttrs = function getDefaultAttrs() {
  9744. return {
  9745. x: 0,
  9746. y: 0,
  9747. r: 0,
  9748. startAngle: 0,
  9749. endAngle: Math.PI * 2,
  9750. anticlockwise: false,
  9751. lineWidth: 1
  9752. };
  9753. };
  9754. _proto.createPath = function createPath(context) {
  9755. var attrs = this.get('attrs');
  9756. var x = attrs.x,
  9757. y = attrs.y,
  9758. r = attrs.r,
  9759. startAngle = attrs.startAngle,
  9760. endAngle = attrs.endAngle,
  9761. anticlockwise = attrs.anticlockwise;
  9762. context.beginPath();
  9763. if (startAngle !== endAngle) {
  9764. context.arc(x, y, r, startAngle, endAngle, anticlockwise);
  9765. }
  9766. };
  9767. _proto.calculateBox = function calculateBox() {
  9768. var attrs = this.get('attrs');
  9769. var x = attrs.x,
  9770. y = attrs.y,
  9771. r = attrs.r,
  9772. startAngle = attrs.startAngle,
  9773. endAngle = attrs.endAngle,
  9774. anticlockwise = attrs.anticlockwise;
  9775. return bbox.getBBoxFromArc(x, y, r, startAngle, endAngle, anticlockwise);
  9776. };
  9777. return Arc;
  9778. }(Shape);
  9779. Shape.Arc = Arc;
  9780. module.exports = Arc;
  9781. /***/ }),
  9782. /* 186 */
  9783. /***/ (function(module, exports, __webpack_require__) {
  9784. "use strict";
  9785. var _interopRequireDefault = __webpack_require__(1);
  9786. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  9787. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  9788. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  9789. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  9790. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  9791. var Shape = __webpack_require__(10);
  9792. var bbox = __webpack_require__(21);
  9793. var Sector = /*#__PURE__*/function (_Shape) {
  9794. (0, _inheritsLoose2["default"])(Sector, _Shape);
  9795. var _super = _createSuper(Sector);
  9796. function Sector() {
  9797. return _Shape.apply(this, arguments) || this;
  9798. }
  9799. var _proto = Sector.prototype;
  9800. _proto._initProperties = function _initProperties() {
  9801. _Shape.prototype._initProperties.call(this);
  9802. this._attrs.canFill = true;
  9803. this._attrs.canStroke = true;
  9804. this._attrs.type = 'sector';
  9805. };
  9806. _proto.getDefaultAttrs = function getDefaultAttrs() {
  9807. return {
  9808. x: 0,
  9809. y: 0,
  9810. lineWidth: 0,
  9811. r: 0,
  9812. r0: 0,
  9813. startAngle: 0,
  9814. endAngle: Math.PI * 2,
  9815. anticlockwise: false
  9816. };
  9817. };
  9818. _proto.createPath = function createPath(context) {
  9819. var attrs = this.get('attrs');
  9820. var x = attrs.x,
  9821. y = attrs.y,
  9822. startAngle = attrs.startAngle,
  9823. endAngle = attrs.endAngle,
  9824. r = attrs.r,
  9825. r0 = attrs.r0,
  9826. anticlockwise = attrs.anticlockwise;
  9827. context.beginPath();
  9828. var unitX = Math.cos(startAngle);
  9829. var unitY = Math.sin(startAngle);
  9830. context.moveTo(unitX * r0 + x, unitY * r0 + y);
  9831. context.lineTo(unitX * r + x, unitY * r + y); // 当扇形的角度非常小的时候,就不进行弧线的绘制;或者整个只有1个扇形时,会出现end<0的情况不绘制
  9832. if (Math.abs(endAngle - startAngle) > 0.0001 || startAngle === 0 && endAngle < 0) {
  9833. context.arc(x, y, r, startAngle, endAngle, anticlockwise);
  9834. context.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y);
  9835. if (r0 !== 0) {
  9836. context.arc(x, y, r0, endAngle, startAngle, !anticlockwise);
  9837. }
  9838. }
  9839. context.closePath();
  9840. };
  9841. _proto.calculateBox = function calculateBox() {
  9842. var attrs = this.get('attrs');
  9843. var x = attrs.x,
  9844. y = attrs.y,
  9845. r = attrs.r,
  9846. r0 = attrs.r0,
  9847. startAngle = attrs.startAngle,
  9848. endAngle = attrs.endAngle,
  9849. anticlockwise = attrs.anticlockwise;
  9850. var outerBBox = bbox.getBBoxFromArc(x, y, r, startAngle, endAngle, anticlockwise);
  9851. var innerBBox = bbox.getBBoxFromArc(x, y, r0, startAngle, endAngle, anticlockwise);
  9852. return {
  9853. minX: Math.min(outerBBox.minX, innerBBox.minX),
  9854. minY: Math.min(outerBBox.minY, innerBBox.minY),
  9855. maxX: Math.max(outerBBox.maxX, innerBBox.maxX),
  9856. maxY: Math.max(outerBBox.maxY, innerBBox.maxY)
  9857. };
  9858. };
  9859. return Sector;
  9860. }(Shape);
  9861. Shape.Sector = Sector;
  9862. module.exports = Sector;
  9863. /***/ }),
  9864. /* 187 */
  9865. /***/ (function(module, exports, __webpack_require__) {
  9866. "use strict";
  9867. var _interopRequireDefault = __webpack_require__(1);
  9868. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  9869. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  9870. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  9871. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  9872. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  9873. var Util = __webpack_require__(0);
  9874. var Shape = __webpack_require__(10);
  9875. var RectUtil = __webpack_require__(188);
  9876. var textWidthCacheCounter = 0;
  9877. var textWidthCache = {};
  9878. var TEXT_CACHE_MAX = 5000;
  9879. var Text = /*#__PURE__*/function (_Shape) {
  9880. (0, _inheritsLoose2["default"])(Text, _Shape);
  9881. var _super = _createSuper(Text);
  9882. function Text() {
  9883. return _Shape.apply(this, arguments) || this;
  9884. }
  9885. var _proto = Text.prototype;
  9886. _proto._initProperties = function _initProperties() {
  9887. _Shape.prototype._initProperties.call(this);
  9888. this._attrs.canFill = true;
  9889. this._attrs.canStroke = true;
  9890. this._attrs.type = 'text';
  9891. };
  9892. _proto.getDefaultAttrs = function getDefaultAttrs() {
  9893. return {
  9894. lineWidth: 0,
  9895. lineCount: 1,
  9896. fontSize: 12,
  9897. fontFamily: 'sans-serif',
  9898. fontStyle: 'normal',
  9899. fontWeight: 'normal',
  9900. fontVariant: 'normal',
  9901. textAlign: 'start',
  9902. textBaseline: 'bottom',
  9903. lineHeight: null,
  9904. textArr: null
  9905. };
  9906. };
  9907. _proto._getFontStyle = function _getFontStyle() {
  9908. var attrs = this._attrs.attrs;
  9909. var fontSize = attrs.fontSize,
  9910. fontFamily = attrs.fontFamily,
  9911. fontWeight = attrs.fontWeight,
  9912. fontStyle = attrs.fontStyle,
  9913. fontVariant = attrs.fontVariant;
  9914. return fontStyle + " " + fontVariant + " " + fontWeight + " " + fontSize + "px " + fontFamily;
  9915. };
  9916. _proto._afterAttrsSet = function _afterAttrsSet() {
  9917. var attrs = this._attrs.attrs;
  9918. attrs.font = this._getFontStyle();
  9919. if (attrs.text) {
  9920. var text = attrs.text;
  9921. var textArr = null;
  9922. var lineCount = 1;
  9923. if (Util.isString(text) && text.indexOf('\n') !== -1) {
  9924. textArr = text.split('\n');
  9925. lineCount = textArr.length;
  9926. }
  9927. attrs.lineCount = lineCount;
  9928. attrs.textArr = textArr;
  9929. }
  9930. this.set('attrs', attrs);
  9931. };
  9932. _proto._getTextHeight = function _getTextHeight() {
  9933. var attrs = this._attrs.attrs;
  9934. if (attrs.height) {
  9935. return attrs.height;
  9936. }
  9937. var lineCount = attrs.lineCount;
  9938. var fontSize = attrs.fontSize * 1;
  9939. if (lineCount > 1) {
  9940. var spaceingY = this._getSpaceingY();
  9941. return fontSize * lineCount + spaceingY * (lineCount - 1);
  9942. }
  9943. return fontSize;
  9944. };
  9945. _proto._getSpaceingY = function _getSpaceingY() {
  9946. var attrs = this._attrs.attrs;
  9947. var lineHeight = attrs.lineHeight;
  9948. var fontSize = attrs.fontSize * 1;
  9949. return lineHeight ? lineHeight - fontSize : fontSize * 0.14;
  9950. };
  9951. _proto.drawInner = function drawInner(context) {
  9952. var self = this;
  9953. var attrs = self._attrs.attrs;
  9954. var text = attrs.text;
  9955. var x = attrs.x;
  9956. var y = attrs.y;
  9957. if (Util.isNil(text) || isNaN(x) || isNaN(y)) {
  9958. // text will be 0
  9959. return;
  9960. }
  9961. var textArr = attrs.textArr;
  9962. var fontSize = attrs.fontSize * 1;
  9963. var spaceingY = self._getSpaceingY();
  9964. if (attrs.rotate) {
  9965. // do rotation
  9966. context.translate(x, y);
  9967. context.rotate(attrs.rotate);
  9968. x = 0;
  9969. y = 0;
  9970. }
  9971. var textBaseline = attrs.textBaseline;
  9972. var height;
  9973. if (textArr) {
  9974. height = self._getTextHeight();
  9975. }
  9976. var subY; // context.beginPath();
  9977. if (self.hasFill()) {
  9978. var fillOpacity = attrs.fillOpacity;
  9979. if (!Util.isNil(fillOpacity) && fillOpacity !== 1) {
  9980. context.globalAlpha = fillOpacity;
  9981. }
  9982. if (textArr) {
  9983. for (var i = 0, len = textArr.length; i < len; i++) {
  9984. var subText = textArr[i];
  9985. subY = y + i * (spaceingY + fontSize) - height + fontSize; // bottom;
  9986. if (textBaseline === 'middle') {
  9987. subY += height - fontSize - (height - fontSize) / 2;
  9988. }
  9989. if (textBaseline === 'top') {
  9990. subY += height - fontSize;
  9991. }
  9992. context.fillText(subText, x, subY);
  9993. }
  9994. } else {
  9995. context.fillText(text, x, y);
  9996. }
  9997. }
  9998. if (self.hasStroke()) {
  9999. if (textArr) {
  10000. for (var _i = 0, _len = textArr.length; _i < _len; _i++) {
  10001. var _subText = textArr[_i];
  10002. subY = y + _i * (spaceingY + fontSize) - height + fontSize; // bottom;
  10003. if (textBaseline === 'middle') {
  10004. subY += height - fontSize - (height - fontSize) / 2;
  10005. }
  10006. if (textBaseline === 'top') {
  10007. subY += height - fontSize;
  10008. }
  10009. context.strokeText(_subText, x, subY);
  10010. }
  10011. } else {
  10012. context.strokeText(text, x, y);
  10013. }
  10014. }
  10015. };
  10016. _proto.calculateBox = function calculateBox() {
  10017. var self = this;
  10018. var attrs = self._attrs.attrs;
  10019. var x = attrs.x,
  10020. y = attrs.y,
  10021. textAlign = attrs.textAlign,
  10022. textBaseline = attrs.textBaseline;
  10023. var width = self._getTextWidth(); // attrs.width
  10024. if (!width) {
  10025. return {
  10026. minX: x,
  10027. minY: y,
  10028. maxX: x,
  10029. maxY: y
  10030. };
  10031. }
  10032. var height = self._getTextHeight(); // attrs.height
  10033. if (attrs.rotate) {
  10034. var rotatedBox = RectUtil.calcRotatedBox({
  10035. width: width,
  10036. height: height,
  10037. rotate: attrs.rotate
  10038. });
  10039. width = rotatedBox.width;
  10040. height = rotatedBox.height;
  10041. }
  10042. var point = {
  10043. x: x,
  10044. y: y - height
  10045. }; // default textAlign: start, textBaseline: bottom
  10046. if (textAlign) {
  10047. if (textAlign === 'end' || textAlign === 'right') {
  10048. point.x -= width;
  10049. } else if (textAlign === 'center') {
  10050. point.x -= width / 2;
  10051. }
  10052. }
  10053. if (textBaseline) {
  10054. if (textBaseline === 'top') {
  10055. point.y += height;
  10056. } else if (textBaseline === 'middle') {
  10057. point.y += height / 2;
  10058. }
  10059. }
  10060. return {
  10061. minX: point.x,
  10062. minY: point.y,
  10063. maxX: point.x + width,
  10064. maxY: point.y + height
  10065. };
  10066. };
  10067. _proto._getTextWidth = function _getTextWidth() {
  10068. var attrs = this._attrs.attrs;
  10069. if (attrs.width) {
  10070. return attrs.width;
  10071. }
  10072. var text = attrs.text;
  10073. var context = this.get('context');
  10074. if (Util.isNil(text)) return undefined;
  10075. var font = attrs.font;
  10076. var textArr = attrs.textArr;
  10077. var key = text + '' + font;
  10078. if (textWidthCache[key]) {
  10079. return textWidthCache[key];
  10080. }
  10081. var width = 0;
  10082. if (textArr) {
  10083. for (var i = 0, length = textArr.length; i < length; i++) {
  10084. var subText = textArr[i];
  10085. width = Math.max(width, Util.measureText(subText, font, context).width);
  10086. }
  10087. } else {
  10088. width = Util.measureText(text, font, context).width;
  10089. }
  10090. if (textWidthCacheCounter > TEXT_CACHE_MAX) {
  10091. textWidthCacheCounter = 0;
  10092. textWidthCache = {};
  10093. }
  10094. textWidthCacheCounter++;
  10095. textWidthCache[key] = width;
  10096. return width;
  10097. };
  10098. return Text;
  10099. }(Shape);
  10100. Shape.Text = Text;
  10101. module.exports = Text;
  10102. /***/ }),
  10103. /* 188 */
  10104. /***/ (function(module, exports, __webpack_require__) {
  10105. "use strict";
  10106. var Rect = {
  10107. calcRotatedBox: function calcRotatedBox(_ref) {
  10108. var width = _ref.width,
  10109. height = _ref.height,
  10110. rotate = _ref.rotate;
  10111. var absRotate = Math.abs(rotate);
  10112. return {
  10113. width: Math.abs(width * Math.cos(absRotate) + height * Math.sin(absRotate)),
  10114. height: Math.abs(height * Math.cos(absRotate) + width * Math.sin(absRotate))
  10115. };
  10116. }
  10117. };
  10118. module.exports = Rect;
  10119. /***/ }),
  10120. /* 189 */
  10121. /***/ (function(module, exports, __webpack_require__) {
  10122. "use strict";
  10123. var _interopRequireDefault = __webpack_require__(1);
  10124. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  10125. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  10126. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  10127. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  10128. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  10129. var Shape = __webpack_require__(10);
  10130. var Custom = /*#__PURE__*/function (_Shape) {
  10131. (0, _inheritsLoose2["default"])(Custom, _Shape);
  10132. var _super = _createSuper(Custom);
  10133. function Custom() {
  10134. return _Shape.apply(this, arguments) || this;
  10135. }
  10136. var _proto = Custom.prototype;
  10137. _proto._initProperties = function _initProperties() {
  10138. _Shape.prototype._initProperties.call(this);
  10139. this._attrs.canFill = true;
  10140. this._attrs.canStroke = true;
  10141. this._attrs.createPath = null;
  10142. this._attrs.type = 'custom';
  10143. };
  10144. _proto.createPath = function createPath(context) {
  10145. var createPath = this.get('createPath');
  10146. createPath && createPath.call(this, context);
  10147. };
  10148. _proto.calculateBox = function calculateBox() {
  10149. var calculateBox = this.get('calculateBox');
  10150. return calculateBox && calculateBox.call(this);
  10151. };
  10152. return Custom;
  10153. }(Shape);
  10154. Shape.Custom = Custom;
  10155. module.exports = Custom;
  10156. /***/ }),
  10157. /* 190 */
  10158. /***/ (function(module, exports, __webpack_require__) {
  10159. "use strict";
  10160. var _interopRequireDefault = __webpack_require__(1);
  10161. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  10162. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  10163. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  10164. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  10165. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  10166. var Path = __webpack_require__(72);
  10167. var Geom = __webpack_require__(17);
  10168. __webpack_require__(68);
  10169. var Line = /*#__PURE__*/function (_Path) {
  10170. (0, _inheritsLoose2["default"])(Line, _Path);
  10171. var _super = _createSuper(Line);
  10172. function Line() {
  10173. return _Path.apply(this, arguments) || this;
  10174. }
  10175. var _proto = Line.prototype;
  10176. _proto.getDefaultCfg = function getDefaultCfg() {
  10177. var cfg = _Path.prototype.getDefaultCfg.call(this);
  10178. cfg.type = 'line';
  10179. cfg.sortable = true;
  10180. return cfg;
  10181. };
  10182. return Line;
  10183. }(Path);
  10184. Geom.Line = Line;
  10185. module.exports = Line;
  10186. /***/ }),
  10187. /* 191 */
  10188. /***/ (function(module, exports, __webpack_require__) {
  10189. "use strict";
  10190. var _interopRequireDefault = __webpack_require__(1);
  10191. var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(22));
  10192. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  10193. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  10194. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  10195. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  10196. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  10197. var Geom = __webpack_require__(17);
  10198. var Util = __webpack_require__(0);
  10199. var SizeMixin = __webpack_require__(73);
  10200. __webpack_require__(192);
  10201. var Interval = /*#__PURE__*/function (_Geom) {
  10202. (0, _inheritsLoose2["default"])(Interval, _Geom);
  10203. var _super = _createSuper(Interval);
  10204. var _proto = Interval.prototype;
  10205. _proto.getDefaultCfg = function getDefaultCfg() {
  10206. var cfg = _Geom.prototype.getDefaultCfg.call(this);
  10207. cfg.type = 'interval';
  10208. cfg.shapeType = 'interval';
  10209. cfg.generatePoints = true;
  10210. return cfg;
  10211. };
  10212. function Interval(cfg) {
  10213. var _this;
  10214. _this = _Geom.call(this, cfg) || this;
  10215. Util.mix((0, _assertThisInitialized2["default"])(_this), SizeMixin);
  10216. return _this;
  10217. }
  10218. _proto.init = function init() {
  10219. _Geom.prototype.init.call(this); // 绑定事件
  10220. this.initEvent();
  10221. };
  10222. _proto.createShapePointsCfg = function createShapePointsCfg(obj) {
  10223. var cfg = _Geom.prototype.createShapePointsCfg.call(this, obj);
  10224. cfg.size = this.getNormalizedSize(obj);
  10225. return cfg;
  10226. };
  10227. _proto.clearInner = function clearInner() {
  10228. _Geom.prototype.clearInner.call(this);
  10229. this.set('defaultSize', null);
  10230. };
  10231. return Interval;
  10232. }(Geom);
  10233. Geom.Interval = Interval;
  10234. module.exports = Interval;
  10235. /***/ }),
  10236. /* 192 */
  10237. /***/ (function(module, exports, __webpack_require__) {
  10238. "use strict";
  10239. var Util = __webpack_require__(0);
  10240. var Shape = __webpack_require__(19);
  10241. var Vector2 = __webpack_require__(13);
  10242. var Global = __webpack_require__(6);
  10243. function getRectPoints(cfg) {
  10244. var x = cfg.x,
  10245. y = cfg.y,
  10246. y0 = cfg.y0,
  10247. size = cfg.size;
  10248. var ymin = y0;
  10249. var ymax = y;
  10250. if (Util.isArray(y)) {
  10251. ymax = y[1];
  10252. ymin = y[0];
  10253. }
  10254. var xmin;
  10255. var xmax;
  10256. if (Util.isArray(x)) {
  10257. xmin = x[0];
  10258. xmax = x[1];
  10259. } else {
  10260. xmin = x - size / 2;
  10261. xmax = x + size / 2;
  10262. }
  10263. return [{
  10264. x: xmin,
  10265. y: ymin
  10266. }, {
  10267. x: xmin,
  10268. y: ymax
  10269. }, {
  10270. x: xmax,
  10271. y: ymax
  10272. }, {
  10273. x: xmax,
  10274. y: ymin
  10275. }];
  10276. }
  10277. function getRectRange(points) {
  10278. var xValues = [];
  10279. var yValues = [];
  10280. for (var i = 0, len = points.length; i < len; i++) {
  10281. var point = points[i];
  10282. xValues.push(point.x);
  10283. yValues.push(point.y);
  10284. }
  10285. var xMin = Math.min.apply(null, xValues);
  10286. var yMin = Math.min.apply(null, yValues);
  10287. var xMax = Math.max.apply(null, xValues);
  10288. var yMax = Math.max.apply(null, yValues);
  10289. return {
  10290. x: xMin,
  10291. y: yMin,
  10292. width: xMax - xMin,
  10293. height: yMax - yMin
  10294. };
  10295. }
  10296. function getMiddlePoint(a, b) {
  10297. var x = (a.x - b.x) / 2 + b.x;
  10298. var y = (a.y - b.y) / 2 + b.y;
  10299. return {
  10300. x: x,
  10301. y: y
  10302. };
  10303. }
  10304. var Interval = Shape.registerFactory('interval', {
  10305. defaultShapeType: 'rect',
  10306. getDefaultPoints: function getDefaultPoints(cfg) {
  10307. return getRectPoints(cfg);
  10308. }
  10309. });
  10310. Shape.registerShape('interval', 'rect', {
  10311. draw: function draw(cfg, container) {
  10312. var points = this.parsePoints(cfg.points);
  10313. var style = Util.mix({
  10314. fill: cfg.color
  10315. }, Global.shape.interval, cfg.style);
  10316. if (cfg.isInCircle) {
  10317. var newPoints = points.slice(0);
  10318. if (this._coord.transposed) {
  10319. newPoints = [points[0], points[3], points[2], points[1]];
  10320. }
  10321. var _cfg$center = cfg.center,
  10322. x = _cfg$center.x,
  10323. y = _cfg$center.y;
  10324. var v = [1, 0];
  10325. var v0 = [newPoints[0].x - x, newPoints[0].y - y];
  10326. var v1 = [newPoints[1].x - x, newPoints[1].y - y];
  10327. var v2 = [newPoints[2].x - x, newPoints[2].y - y];
  10328. var startAngle = Vector2.angleTo(v, v1);
  10329. var endAngle = Vector2.angleTo(v, v2);
  10330. var r0 = Vector2.length(v0);
  10331. var r = Vector2.length(v1);
  10332. if (startAngle >= 1.5 * Math.PI) {
  10333. startAngle = startAngle - 2 * Math.PI;
  10334. }
  10335. if (endAngle >= 1.5 * Math.PI) {
  10336. endAngle = endAngle - 2 * Math.PI;
  10337. }
  10338. return container.addShape('Sector', {
  10339. className: 'interval',
  10340. attrs: Util.mix({
  10341. x: x,
  10342. y: y,
  10343. r: r,
  10344. r0: r0,
  10345. startAngle: startAngle,
  10346. endAngle: endAngle
  10347. }, style)
  10348. });
  10349. }
  10350. var rectCfg = getRectRange(points);
  10351. return container.addShape('rect', {
  10352. className: 'interval',
  10353. attrs: Util.mix(rectCfg, style)
  10354. });
  10355. }
  10356. }); // 金字塔 和 漏斗图
  10357. ['pyramid', 'funnel'].forEach(function (shapeType) {
  10358. Shape.registerShape('interval', shapeType, {
  10359. getPoints: function getPoints(cfg) {
  10360. cfg.size = cfg.size * 2; // 漏斗图的 size 是柱状图的两倍
  10361. return getRectPoints(cfg);
  10362. },
  10363. draw: function draw(cfg, container) {
  10364. var points = this.parsePoints(cfg.points);
  10365. var nextPoints = this.parsePoints(cfg.nextPoints);
  10366. var polygonPoints = null;
  10367. if (nextPoints) {
  10368. polygonPoints = [points[0], points[1], nextPoints[1], nextPoints[0]];
  10369. } else {
  10370. polygonPoints = [points[0], points[1]]; // pyramid 顶部是三角形,所以取中心点就好了,funnel顶部是长方形
  10371. if (shapeType === 'pyramid') {
  10372. polygonPoints.push(getMiddlePoint(points[2], points[3]));
  10373. } else {
  10374. polygonPoints.push(points[2], points[3]);
  10375. }
  10376. }
  10377. var attrs = Util.mix({
  10378. fill: cfg.color,
  10379. points: polygonPoints
  10380. }, Global.shape.interval, cfg.style);
  10381. return container.addShape('polygon', {
  10382. className: 'interval',
  10383. attrs: attrs
  10384. });
  10385. }
  10386. });
  10387. });
  10388. module.exports = Interval;
  10389. /***/ }),
  10390. /* 193 */
  10391. /***/ (function(module, exports, __webpack_require__) {
  10392. "use strict";
  10393. module.exports = {
  10394. Stack: __webpack_require__(194),
  10395. Dodge: __webpack_require__(196),
  10396. Symmetric: __webpack_require__(198)
  10397. };
  10398. /***/ }),
  10399. /* 194 */
  10400. /***/ (function(module, exports, __webpack_require__) {
  10401. "use strict";
  10402. var Stack = __webpack_require__(195);
  10403. module.exports = Stack;
  10404. /***/ }),
  10405. /* 195 */
  10406. /***/ (function(module, exports, __webpack_require__) {
  10407. function _inheritsLoose(subClass, superClass) {
  10408. subClass.prototype = Object.create(superClass.prototype);
  10409. subClass.prototype.constructor = subClass;
  10410. subClass.__proto__ = superClass;
  10411. }
  10412. var isArray = __webpack_require__(34);
  10413. var isNil = __webpack_require__(35);
  10414. var Adjust = __webpack_require__(33);
  10415. var Stack = /*#__PURE__*/function (_Adjust) {
  10416. _inheritsLoose(Stack, _Adjust);
  10417. function Stack() {
  10418. return _Adjust.apply(this, arguments) || this;
  10419. }
  10420. var _proto = Stack.prototype;
  10421. _proto._initDefaultCfg = function _initDefaultCfg() {
  10422. this.xField = null; // 调整对应的 x 方向对应的字段名称
  10423. this.yField = null; // 调整对应的 y 方向对应的字段名称
  10424. };
  10425. _proto.processAdjust = function processAdjust(dataArray) {
  10426. this.processStack(dataArray);
  10427. };
  10428. _proto.processStack = function processStack(dataArray) {
  10429. var self = this;
  10430. var xField = self.xField;
  10431. var yField = self.yField;
  10432. var count = dataArray.length;
  10433. var stackCache = {
  10434. positive: {},
  10435. negative: {}
  10436. }; // 层叠顺序翻转
  10437. if (self.reverseOrder) {
  10438. dataArray = dataArray.slice(0).reverse();
  10439. }
  10440. for (var i = 0; i < count; i++) {
  10441. var data = dataArray[i];
  10442. for (var j = 0, len = data.length; j < len; j++) {
  10443. var item = data[j];
  10444. var x = item[xField] || 0;
  10445. var y = item[yField];
  10446. var xkey = x.toString();
  10447. y = isArray(y) ? y[1] : y;
  10448. if (!isNil(y)) {
  10449. var direction = y >= 0 ? 'positive' : 'negative';
  10450. if (!stackCache[direction][xkey]) {
  10451. stackCache[direction][xkey] = 0;
  10452. }
  10453. item[yField] = [stackCache[direction][xkey], y + stackCache[direction][xkey]];
  10454. stackCache[direction][xkey] += y;
  10455. }
  10456. }
  10457. }
  10458. };
  10459. return Stack;
  10460. }(Adjust);
  10461. Adjust.Stack = Stack;
  10462. module.exports = Stack;
  10463. /***/ }),
  10464. /* 196 */
  10465. /***/ (function(module, exports, __webpack_require__) {
  10466. "use strict";
  10467. var Dodge = __webpack_require__(197);
  10468. module.exports = Dodge;
  10469. /***/ }),
  10470. /* 197 */
  10471. /***/ (function(module, exports, __webpack_require__) {
  10472. function _inheritsLoose(subClass, superClass) {
  10473. subClass.prototype = Object.create(superClass.prototype);
  10474. subClass.prototype.constructor = subClass;
  10475. subClass.__proto__ = superClass;
  10476. }
  10477. var Adjust = __webpack_require__(33);
  10478. var each = __webpack_require__(15);
  10479. var MARGIN_RATIO = 1 / 2;
  10480. var DODGE_RATIO = 1 / 2;
  10481. var Dodge = /*#__PURE__*/function (_Adjust) {
  10482. _inheritsLoose(Dodge, _Adjust);
  10483. function Dodge() {
  10484. return _Adjust.apply(this, arguments) || this;
  10485. }
  10486. var _proto = Dodge.prototype;
  10487. _proto._initDefaultCfg = function _initDefaultCfg() {
  10488. /**
  10489. * 调整过程中,2个数据的间距
  10490. * @type {Number}
  10491. */
  10492. this.marginRatio = MARGIN_RATIO;
  10493. /**
  10494. * 调整占单位宽度的比例,例如:占2个分类间距的 1/2
  10495. * @type {Number}
  10496. */
  10497. this.dodgeRatio = DODGE_RATIO;
  10498. this.adjustNames = ['x', 'y']; // 调整的维度,默认,x,y都做调整
  10499. };
  10500. _proto.getDodgeOffset = function getDodgeOffset(range, index, count) {
  10501. var self = this;
  10502. var pre = range.pre;
  10503. var next = range.next;
  10504. var tickLength = next - pre;
  10505. var width = tickLength * self.dodgeRatio / count;
  10506. var margin = self.marginRatio * width;
  10507. var offset = 1 / 2 * (tickLength - count * width - (count - 1) * margin) + ((index + 1) * width + index * margin) - 1 / 2 * width - 1 / 2 * tickLength;
  10508. return (pre + next) / 2 + offset;
  10509. };
  10510. _proto.processAdjust = function processAdjust(dataArray) {
  10511. var self = this;
  10512. var count = dataArray.length;
  10513. var xField = self.xField;
  10514. each(dataArray, function (data, index) {
  10515. for (var i = 0, len = data.length; i < len; i++) {
  10516. var obj = data[i];
  10517. var value = obj[xField];
  10518. var range = {
  10519. pre: len === 1 ? value - 1 : value - 0.5,
  10520. next: len === 1 ? value + 1 : value + 0.5
  10521. };
  10522. var dodgeValue = self.getDodgeOffset(range, index, count);
  10523. obj[xField] = dodgeValue;
  10524. }
  10525. });
  10526. };
  10527. return Dodge;
  10528. }(Adjust);
  10529. Adjust.Dodge = Dodge;
  10530. module.exports = Dodge;
  10531. /***/ }),
  10532. /* 198 */
  10533. /***/ (function(module, exports, __webpack_require__) {
  10534. "use strict";
  10535. var Symmetric = __webpack_require__(199);
  10536. module.exports = Symmetric;
  10537. /***/ }),
  10538. /* 199 */
  10539. /***/ (function(module, exports, __webpack_require__) {
  10540. function _inheritsLoose(subClass, superClass) {
  10541. subClass.prototype = Object.create(superClass.prototype);
  10542. subClass.prototype.constructor = subClass;
  10543. subClass.__proto__ = superClass;
  10544. }
  10545. var each = __webpack_require__(15);
  10546. var maxBy = __webpack_require__(200);
  10547. var isArray = __webpack_require__(34);
  10548. var ArrayUtil = {
  10549. merge: __webpack_require__(202)
  10550. };
  10551. var Adjust = __webpack_require__(33);
  10552. var Symmetric = /*#__PURE__*/function (_Adjust) {
  10553. _inheritsLoose(Symmetric, _Adjust);
  10554. function Symmetric() {
  10555. return _Adjust.apply(this, arguments) || this;
  10556. }
  10557. var _proto = Symmetric.prototype;
  10558. _proto._initDefaultCfg = function _initDefaultCfg() {
  10559. this.xField = null; // 调整对应的 x 方向对应的字段名称
  10560. this.yField = null; // 调整对应的 y 方向对应的字段名称
  10561. this.cacheMax = null; // 缓存的最大值
  10562. this.adjustNames = ['y']; // Only support stack y
  10563. this.groupFields = null; // 参与分组的数据维度
  10564. }; // 获取最大的y值
  10565. _proto._getMax = function _getMax(dim) {
  10566. var self = this;
  10567. var mergeData = self.mergeData;
  10568. var maxRecord = maxBy(mergeData, function (obj) {
  10569. var value = obj[dim];
  10570. if (isArray(value)) {
  10571. return Math.max.apply(null, value);
  10572. }
  10573. return value;
  10574. });
  10575. var maxValue = maxRecord[dim];
  10576. var max = isArray(maxValue) ? Math.max.apply(null, maxValue) : maxValue;
  10577. return max;
  10578. }; // 获取每个字段最大的值
  10579. _proto._getXValuesMax = function _getXValuesMax() {
  10580. var self = this;
  10581. var yField = self.yField;
  10582. var xField = self.xField;
  10583. var cache = {};
  10584. var mergeData = self.mergeData;
  10585. each(mergeData, function (obj) {
  10586. var xValue = obj[xField];
  10587. var yValue = obj[yField];
  10588. var max = isArray(yValue) ? Math.max.apply(null, yValue) : yValue;
  10589. cache[xValue] = cache[xValue] || 0;
  10590. if (cache[xValue] < max) {
  10591. cache[xValue] = max;
  10592. }
  10593. });
  10594. return cache;
  10595. }; // 入口函数
  10596. _proto.processAdjust = function processAdjust(dataArray) {
  10597. var self = this;
  10598. var mergeData = ArrayUtil.merge(dataArray);
  10599. self.mergeData = mergeData;
  10600. self._processSymmetric(dataArray);
  10601. self.mergeData = null;
  10602. }; // 处理对称
  10603. _proto._processSymmetric = function _processSymmetric(dataArray) {
  10604. var self = this;
  10605. var xField = self.xField;
  10606. var yField = self.yField;
  10607. var max = self._getMax(yField);
  10608. var first = dataArray[0][0];
  10609. var cache;
  10610. if (first && isArray(first[yField])) {
  10611. cache = self._getXValuesMax();
  10612. }
  10613. each(dataArray, function (data) {
  10614. each(data, function (obj) {
  10615. var value = obj[yField];
  10616. var offset;
  10617. if (isArray(value)) {
  10618. var xValue = obj[xField];
  10619. var valueMax = cache[xValue];
  10620. offset = (max - valueMax) / 2;
  10621. var tmp = [];
  10622. /* eslint-disable no-loop-func */
  10623. each(value, function (subVal) {
  10624. // 多个字段
  10625. tmp.push(offset + subVal);
  10626. });
  10627. /* eslint-enable no-loop-func */
  10628. obj[yField] = tmp;
  10629. } else {
  10630. offset = (max - value) / 2;
  10631. obj[yField] = [offset, value + offset];
  10632. }
  10633. });
  10634. });
  10635. };
  10636. return Symmetric;
  10637. }(Adjust);
  10638. Adjust.Symmetric = Symmetric;
  10639. module.exports = Symmetric;
  10640. /***/ }),
  10641. /* 200 */
  10642. /***/ (function(module, exports, __webpack_require__) {
  10643. var isArray = __webpack_require__(34);
  10644. var isFunction = __webpack_require__(201);
  10645. var each = __webpack_require__(15);
  10646. /**
  10647. * @param {Array} arr The array to iterate over.
  10648. * @param {Function} [fn] The iteratee invoked per element.
  10649. * @return {*} Returns the maximum value.
  10650. * @example
  10651. *
  10652. * var objects = [{ 'n': 1 }, { 'n': 2 }];
  10653. *
  10654. * maxBy(objects, function(o) { return o.n; });
  10655. * // => { 'n': 2 }
  10656. *
  10657. * maxBy(objects, 'n');
  10658. * // => { 'n': 2 }
  10659. */
  10660. var maxBy = function maxBy(arr, fn) {
  10661. if (!isArray(arr)) {
  10662. return undefined;
  10663. }
  10664. var max = arr[0];
  10665. var maxData = void 0;
  10666. if (isFunction(fn)) {
  10667. maxData = fn(arr[0]);
  10668. } else {
  10669. maxData = arr[0][fn];
  10670. }
  10671. var data = void 0;
  10672. each(arr, function (val) {
  10673. if (isFunction(fn)) {
  10674. data = fn(val);
  10675. } else {
  10676. data = val[fn];
  10677. }
  10678. if (data > maxData) {
  10679. max = val;
  10680. maxData = data;
  10681. }
  10682. });
  10683. return max;
  10684. };
  10685. module.exports = maxBy;
  10686. /***/ }),
  10687. /* 201 */
  10688. /***/ (function(module, exports, __webpack_require__) {
  10689. /**
  10690. * 是否为函数
  10691. * @param {*} fn 对象
  10692. * @return {Boolean} 是否函数
  10693. */
  10694. var isType = __webpack_require__(27);
  10695. var isFunction = function isFunction(value) {
  10696. return isType(value, 'Function');
  10697. };
  10698. module.exports = isFunction;
  10699. /***/ }),
  10700. /* 202 */
  10701. /***/ (function(module, exports) {
  10702. var merge = function merge(dataArray) {
  10703. var rst = [];
  10704. for (var i = 0; i < dataArray.length; i++) {
  10705. rst = rst.concat(dataArray[i]);
  10706. }
  10707. return rst;
  10708. };
  10709. module.exports = merge;
  10710. /***/ }),
  10711. /* 203 */
  10712. /***/ (function(module, exports, __webpack_require__) {
  10713. "use strict";
  10714. var _interopRequireDefault = __webpack_require__(1);
  10715. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(2));
  10716. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(3));
  10717. var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(4));
  10718. function _createSuper(Derived) { return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  10719. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
  10720. var Base = __webpack_require__(43);
  10721. var Vector2 = __webpack_require__(13);
  10722. var Matrix = __webpack_require__(31);
  10723. var Polar = /*#__PURE__*/function (_Base) {
  10724. (0, _inheritsLoose2["default"])(Polar, _Base);
  10725. var _super = _createSuper(Polar);
  10726. function Polar() {
  10727. return _Base.apply(this, arguments) || this;
  10728. }
  10729. var _proto = Polar.prototype;
  10730. _proto._initDefaultCfg = function _initDefaultCfg() {
  10731. this.type = 'polar';
  10732. this.startAngle = -Math.PI / 2;
  10733. this.endAngle = Math.PI * 3 / 2;
  10734. this.inner = 0;
  10735. this.innerRadius = 0; // alias
  10736. this.isPolar = true;
  10737. this.transposed = false;
  10738. this.center = null;
  10739. this.radius = null; // relative, 0 ~ 1
  10740. };
  10741. _proto.init = function init(start, end) {
  10742. _Base.prototype.init.call(this, start, end);
  10743. var self = this;
  10744. var inner = self.inner || self.innerRadius;
  10745. var width = Math.abs(end.x - start.x);
  10746. var height = Math.abs(end.y - start.y);
  10747. var maxRadius;
  10748. var center;
  10749. if (self.startAngle === -Math.PI && self.endAngle === 0) {
  10750. maxRadius = Math.min(width / 2, height);
  10751. center = {
  10752. x: (start.x + end.x) / 2,
  10753. y: start.y
  10754. };
  10755. } else {
  10756. maxRadius = Math.min(width, height) / 2;
  10757. center = {
  10758. x: (start.x + end.x) / 2,
  10759. y: (start.y + end.y) / 2
  10760. };
  10761. }
  10762. var radius = self.radius;
  10763. if (radius > 0 && radius <= 1) {
  10764. maxRadius = maxRadius * radius;
  10765. }
  10766. this.x = {
  10767. start: self.startAngle,
  10768. end: self.endAngle
  10769. };
  10770. this.y = {
  10771. start: maxRadius * inner,
  10772. end: maxRadius
  10773. };
  10774. this.center = center;
  10775. this.circleRadius = maxRadius; // the radius value in px
  10776. };
  10777. _proto._convertPoint = function _convertPoint(point) {
  10778. var self = this;
  10779. var center = self.center;
  10780. var transposed = self.transposed;
  10781. var xDim = transposed ? 'y' : 'x';
  10782. var yDim = transposed ? 'x' : 'y';
  10783. var x = self.x;
  10784. var y = self.y;
  10785. var angle = x.start + (x.end - x.start) * point[xDim];
  10786. var radius = y.start + (y.end - y.start) * point[yDim];
  10787. return {
  10788. x: center.x + Math.cos(angle) * radius,
  10789. y: center.y + Math.sin(angle) * radius
  10790. };
  10791. };
  10792. _proto._invertPoint = function _invertPoint(point) {
  10793. var self = this;
  10794. var center = self.center,
  10795. transposed = self.transposed,
  10796. x = self.x,
  10797. y = self.y;
  10798. var xDim = transposed ? 'y' : 'x';
  10799. var yDim = transposed ? 'x' : 'y';
  10800. var m = [1, 0, 0, 1, 0, 0];
  10801. Matrix.rotate(m, m, x.start);
  10802. var startV = [1, 0];
  10803. Vector2.transformMat2d(startV, startV, m);
  10804. startV = [startV[0], startV[1]];
  10805. var pointV = [point.x - center.x, point.y - center.y];
  10806. if (Vector2.zero(pointV)) {
  10807. return {
  10808. x: 0,
  10809. y: 0
  10810. };
  10811. }
  10812. var theta = Vector2.angleTo(startV, pointV, x.end < x.start);
  10813. if (Math.abs(theta - Math.PI * 2) < 0.001) {
  10814. theta = 0;
  10815. }
  10816. var l = Vector2.length(pointV);
  10817. var percentX = theta / (x.end - x.start);
  10818. percentX = x.end - x.start > 0 ? percentX : -percentX;
  10819. var percentY = (l - y.start) / (y.end - y.start);
  10820. var rst = {};
  10821. rst[xDim] = percentX;
  10822. rst[yDim] = percentY;
  10823. return rst;
  10824. };
  10825. return Polar;
  10826. }(Base);
  10827. Base.Polar = Polar;
  10828. module.exports = Polar;
  10829. /***/ }),
  10830. /* 204 */,
  10831. /* 205 */,
  10832. /* 206 */,
  10833. /* 207 */,
  10834. /* 208 */,
  10835. /* 209 */,
  10836. /* 210 */,
  10837. /* 211 */,
  10838. /* 212 */,
  10839. /* 213 */,
  10840. /* 214 */,
  10841. /* 215 */,
  10842. /* 216 */,
  10843. /* 217 */,
  10844. /* 218 */,
  10845. /* 219 */,
  10846. /* 220 */,
  10847. /* 221 */,
  10848. /* 222 */,
  10849. /* 223 */,
  10850. /* 224 */,
  10851. /* 225 */,
  10852. /* 226 */,
  10853. /* 227 */,
  10854. /* 228 */,
  10855. /* 229 */,
  10856. /* 230 */,
  10857. /* 231 */,
  10858. /* 232 */,
  10859. /* 233 */,
  10860. /* 234 */,
  10861. /* 235 */,
  10862. /* 236 */,
  10863. /* 237 */,
  10864. /* 238 */,
  10865. /* 239 */,
  10866. /* 240 */,
  10867. /* 241 */,
  10868. /* 242 */,
  10869. /* 243 */,
  10870. /* 244 */,
  10871. /* 245 */,
  10872. /* 246 */,
  10873. /* 247 */,
  10874. /* 248 */,
  10875. /* 249 */,
  10876. /* 250 */,
  10877. /* 251 */
  10878. /***/ (function(module, exports, __webpack_require__) {
  10879. "use strict";
  10880. /**
  10881. * Only support simple bar chart, line chart and pie chart
  10882. */
  10883. var F2 = __webpack_require__(77);
  10884. __webpack_require__(190);
  10885. __webpack_require__(191);
  10886. __webpack_require__(193);
  10887. __webpack_require__(203);
  10888. module.exports = F2;
  10889. /***/ })
  10890. /******/ ]);
  10891. });