4.js 1.0 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243
  1. webpackJsonp([4],{
  2. /***/ 287:
  3. /***/ (function(module, exports) {
  4. module.exports = function escape(url) {
  5. if (typeof url !== 'string') {
  6. return url
  7. }
  8. // If url is already wrapped in quotes, remove them
  9. if (/^['"].*['"]$/.test(url)) {
  10. url = url.slice(1, -1);
  11. }
  12. // Should url be wrapped?
  13. // See https://drafts.csswg.org/css-values-3/#urls
  14. if (/["'() \t\n]/.test(url)) {
  15. return '"' + url.replace(/"/g, '\\"').replace(/\n/g, '\\n') + '"'
  16. }
  17. return url
  18. }
  19. /***/ }),
  20. /***/ 294:
  21. /***/ (function(module, exports, __webpack_require__) {
  22. var disposed = false
  23. function injectStyle (ssrContext) {
  24. if (disposed) return
  25. __webpack_require__(970)
  26. __webpack_require__(972)
  27. }
  28. var normalizeComponent = __webpack_require__(2)
  29. /* script */
  30. var __vue_script__ = __webpack_require__(974)
  31. /* template */
  32. var __vue_template__ = __webpack_require__(980)
  33. /* template functional */
  34. var __vue_template_functional__ = false
  35. /* styles */
  36. var __vue_styles__ = injectStyle
  37. /* scopeId */
  38. var __vue_scopeId__ = "data-v-3665704a"
  39. /* moduleIdentifier (server only) */
  40. var __vue_module_identifier__ = null
  41. var Component = normalizeComponent(
  42. __vue_script__,
  43. __vue_template__,
  44. __vue_template_functional__,
  45. __vue_styles__,
  46. __vue_scopeId__,
  47. __vue_module_identifier__
  48. )
  49. Component.options.__file = "resources/assets/js/main/pages/docs/view.vue"
  50. /* hot reload */
  51. if (false) {(function () {
  52. var hotAPI = require("vue-hot-reload-api")
  53. hotAPI.install(require("vue"), false)
  54. if (!hotAPI.compatible) return
  55. module.hot.accept()
  56. if (!module.hot.data) {
  57. hotAPI.createRecord("data-v-3665704a", Component.options)
  58. } else {
  59. hotAPI.reload("data-v-3665704a", Component.options)
  60. }
  61. module.hot.dispose(function (data) {
  62. disposed = true
  63. })
  64. })()}
  65. module.exports = Component.exports
  66. /***/ }),
  67. /***/ 301:
  68. /***/ (function(module, exports) {
  69. module.exports = "/images/vendor/vue-kityminder-gg/examples/styles/icons.png?39ef978a";
  70. /***/ }),
  71. /***/ 313:
  72. /***/ (function(module, exports, __webpack_require__) {
  73. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  74. * @fileOverview
  75. *
  76. * 支持各种调试后门
  77. *
  78. * @author: techird
  79. * @copyright: Baidu FEX, 2014
  80. */
  81. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  82. var format = __webpack_require__(383);
  83. function noop() {}
  84. function stringHash(str) {
  85. var hash = 0;
  86. for (var i = 0; i < str.length; i++) {
  87. hash += str.charCodeAt(i);
  88. }
  89. return hash;
  90. }
  91. /* global console */
  92. function Debug(flag) {
  93. var debugMode = this.flaged = window.location.search.indexOf(flag) != -1;
  94. if (debugMode) {
  95. var h = stringHash(flag) % 360;
  96. var flagStyle = format(
  97. 'background: hsl({0}, 50%, 80%); ' +
  98. 'color: hsl({0}, 100%, 30%); ' +
  99. 'padding: 2px 3px; ' +
  100. 'margin: 1px 3px 0 0;' +
  101. 'border-radius: 2px;', h);
  102. var textStyle = 'background: none; color: black;';
  103. this.log = function() {
  104. var output = format.apply(null, arguments);
  105. };
  106. } else {
  107. this.log = noop;
  108. }
  109. }
  110. return module.exports = Debug;
  111. }).call(exports, __webpack_require__, exports, module),
  112. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  113. /***/ }),
  114. /***/ 314:
  115. /***/ (function(module, exports, __webpack_require__) {
  116. var __WEBPACK_AMD_DEFINE_RESULT__;
  117. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  118. window.HotBox = __webpack_require__(390)
  119. return module.exports = window.HotBox;
  120. }).call(exports, __webpack_require__, exports, module),
  121. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  122. /***/ }),
  123. /***/ 319:
  124. /***/ (function(module, exports, __webpack_require__) {
  125. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  126. var keymap = __webpack_require__(391);
  127. var CTRL_MASK = 0x1000;
  128. var ALT_MASK = 0x2000;
  129. var SHIFT_MASK = 0x4000;
  130. function hash(unknown) {
  131. if (typeof(unknown) == 'string') {
  132. return hashKeyExpression(unknown);
  133. }
  134. return hashKeyEvent(unknown);
  135. }
  136. function is(a, b) {
  137. return a && b && hash(a) == hash(b);
  138. }
  139. exports.hash = hash;
  140. exports.is = is;
  141. function hashKeyEvent(keyEvent) {
  142. var hashCode = 0;
  143. if (keyEvent.ctrlKey || keyEvent.metaKey) {
  144. hashCode |= CTRL_MASK;
  145. }
  146. if (keyEvent.altKey) {
  147. hashCode |= ALT_MASK;
  148. }
  149. if (keyEvent.shiftKey) {
  150. hashCode |= SHIFT_MASK;
  151. }
  152. // Shift, Control, Alt KeyCode ignored.
  153. if ([16, 17, 18, 91].indexOf(keyEvent.keyCode) == -1) {
  154. hashCode |= keyEvent.keyCode;
  155. }
  156. return hashCode;
  157. }
  158. function hashKeyExpression(keyExpression) {
  159. var hashCode = 0;
  160. keyExpression.toLowerCase().split(/\s*\+\s*/).forEach(function(name) {
  161. switch(name) {
  162. case 'ctrl':
  163. case 'cmd':
  164. hashCode |= CTRL_MASK;
  165. break;
  166. case 'alt':
  167. hashCode |= ALT_MASK;
  168. break;
  169. case 'shift':
  170. hashCode |= SHIFT_MASK;
  171. break;
  172. default:
  173. hashCode |= keymap[name];
  174. }
  175. });
  176. return hashCode;
  177. }
  178. }).call(exports, __webpack_require__, exports, module),
  179. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  180. /***/ }),
  181. /***/ 328:
  182. /***/ (function(module, exports, __webpack_require__) {
  183. /* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;var __WEBPACK_AMD_DEFINE_RESULT__;!function(t){ true?!(__WEBPACK_AMD_DEFINE_FACTORY__ = (t),
  184. __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
  185. (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
  186. __WEBPACK_AMD_DEFINE_FACTORY__),
  187. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):t()}(function(){"use strict";
  188. /** @license
  189. * jsPDF - PDF Document creation from JavaScript
  190. * Version 1.5.3 Built on 2018-12-27T14:11:42.696Z
  191. * CommitID d93d28db14
  192. *
  193. * Copyright (c) 2010-2016 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
  194. * 2010 Aaron Spike, https://github.com/acspike
  195. * 2012 Willow Systems Corporation, willow-systems.com
  196. * 2012 Pablo Hess, https://github.com/pablohess
  197. * 2012 Florian Jenett, https://github.com/fjenett
  198. * 2013 Warren Weckesser, https://github.com/warrenweckesser
  199. * 2013 Youssef Beddad, https://github.com/lifof
  200. * 2013 Lee Driscoll, https://github.com/lsdriscoll
  201. * 2013 Stefan Slonevskiy, https://github.com/stefslon
  202. * 2013 Jeremy Morel, https://github.com/jmorel
  203. * 2013 Christoph Hartmann, https://github.com/chris-rock
  204. * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
  205. * 2014 James Makes, https://github.com/dollaruw
  206. * 2014 Diego Casorran, https://github.com/diegocr
  207. * 2014 Steven Spungin, https://github.com/Flamenco
  208. * 2014 Kenneth Glassey, https://github.com/Gavvers
  209. *
  210. * Licensed under the MIT License
  211. *
  212. * Contributor(s):
  213. * siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
  214. * kim3er, mfo, alnorth, Flamenco
  215. */function se(t){return(se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t){if("object"!==se(t.console)){t.console={};for(var e,n,r=t.console,i=function(){},o=["memory"],a="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");e=o.pop();)r[e]||(r[e]={});for(;n=a.pop();)r[n]||(r[n]=i)}var s,l,h,u,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";void 0===t.btoa&&(t.btoa=function(t){var e,n,r,i,o,a=0,s=0,l="",h=[];if(!t)return t;for(;e=(o=t.charCodeAt(a++)<<16|t.charCodeAt(a++)<<8|t.charCodeAt(a++))>>18&63,n=o>>12&63,r=o>>6&63,i=63&o,h[s++]=c.charAt(e)+c.charAt(n)+c.charAt(r)+c.charAt(i),a<t.length;);l=h.join("");var u=t.length%3;return(u?l.slice(0,u-3):l)+"===".slice(u||3)}),void 0===t.atob&&(t.atob=function(t){var e,n,r,i,o,a,s=0,l=0,h=[];if(!t)return t;for(t+="";e=(a=c.indexOf(t.charAt(s++))<<18|c.indexOf(t.charAt(s++))<<12|(i=c.indexOf(t.charAt(s++)))<<6|(o=c.indexOf(t.charAt(s++))))>>16&255,n=a>>8&255,r=255&a,h[l++]=64==i?String.fromCharCode(e):64==o?String.fromCharCode(e,n):String.fromCharCode(e,n,r),s<t.length;);return h.join("")}),Array.prototype.map||(Array.prototype.map=function(t){if(null==this||"function"!=typeof t)throw new TypeError;for(var e=Object(this),n=e.length>>>0,r=new Array(n),i=1<arguments.length?arguments[1]:void 0,o=0;o<n;o++)o in e&&(r[o]=t.call(i,e[o],o,e));return r}),Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),Array.prototype.forEach||(Array.prototype.forEach=function(t,e){if(null==this||"function"!=typeof t)throw new TypeError;for(var n=Object(this),r=n.length>>>0,i=0;i<r;i++)i in n&&t.call(e,n[i],i,n)}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),n=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var r=arguments[1],i=0;i<n;){var o=e[i];if(t.call(r,o,i,e))return o;i++}},configurable:!0,writable:!0}),Object.keys||(Object.keys=(s=Object.prototype.hasOwnProperty,l=!{toString:null}.propertyIsEnumerable("toString"),u=(h=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"]).length,function(t){if("object"!==se(t)&&("function"!=typeof t||null===t))throw new TypeError;var e,n,r=[];for(e in t)s.call(t,e)&&r.push(e);if(l)for(n=0;n<u;n++)s.call(t,h[n])&&r.push(h[n]);return r})),"function"!=typeof Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");t=Object(t);for(var e=1;e<arguments.length;e++){var n=arguments[e];if(null!=n)for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),String.prototype.trimLeft||(String.prototype.trimLeft=function(){return this.replace(/^\s+/g,"")}),String.prototype.trimRight||(String.prototype.trimRight=function(){return this.replace(/\s+$/g,"")}),Number.isInteger=Number.isInteger||function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof global&&global||Function('return typeof this === "object" && this.content')()||Function("return this")());var t,e,n,_,l,F,P,p,d,k,a,o,s,h,u,c,r,i,f,g,m,y,v,w,b,x,I,C,B,N,L,A,S,j,E,M,O,q,T,R,D,U,z,H,W,V,G,Y,J,X,K,Z,Q,$,tt,et,nt,rt,it,ot,at,st,lt=function(ie){function oe(o){if("object"!==se(o))throw new Error("Invalid Context passed to initialize PubSub (jsPDF-module)");var a={};this.subscribe=function(t,e,n){if(n=n||!1,"string"!=typeof t||"function"!=typeof e||"boolean"!=typeof n)throw new Error("Invalid arguments passed to PubSub.subscribe (jsPDF-module)");a.hasOwnProperty(t)||(a[t]={});var r=Math.random().toString(35);return a[t][r]=[e,!!n],r},this.unsubscribe=function(t){for(var e in a)if(a[e][t])return delete a[e][t],0===Object.keys(a[e]).length&&delete a[e],!0;return!1},this.publish=function(t){if(a.hasOwnProperty(t)){var e=Array.prototype.slice.call(arguments,1),n=[];for(var r in a[t]){var i=a[t][r];try{i[0].apply(o,e)}catch(t){ie.console&&console.error("jsPDF PubSub Error",t.message,t)}i[1]&&n.push(r)}n.length&&n.forEach(this.unsubscribe)}},this.getTopics=function(){return a}}function ae(t,e,i,n){var r={},o=[],a=1;"object"===se(t)&&(t=(r=t).orientation,e=r.unit||e,i=r.format||i,n=r.compress||r.compressPdf||n,o=r.filters||(!0===n?["FlateEncode"]:o),a="number"==typeof r.userUnit?Math.abs(r.userUnit):1),e=e||"mm",t=(""+(t||"P")).toLowerCase();var s=r.putOnlyUsedFonts||!0,K={},l={internal:{},__private__:{}};l.__private__.PubSub=oe;var h="1.3",u=l.__private__.getPdfVersion=function(){return h},c=(l.__private__.setPdfVersion=function(t){h=t},{a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],"government-letter":[576,756],legal:[612,1008],"junior-legal":[576,360],ledger:[1224,792],tabloid:[792,1224],"credit-card":[153,243]}),f=(l.__private__.getPageFormats=function(){return c},l.__private__.getPageFormat=function(t){return c[t]});"string"==typeof i&&(i=f(i)),i=i||f("a4");var p,Z=l.f2=l.__private__.f2=function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.f2");return t.toFixed(2)},Q=l.__private__.f3=function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.f3");return t.toFixed(3)},d="00000000000000000000000000000000",g=l.__private__.getFileId=function(){return d},m=l.__private__.setFileId=function(t){return t=t||"12345678901234567890123456789012".split("").map(function(){return"ABCDEF0123456789".charAt(Math.floor(16*Math.random()))}).join(""),d=t};l.setFileId=function(t){return m(t),this},l.getFileId=function(){return g()};var y=l.__private__.convertDateToPDFDate=function(t){var e=t.getTimezoneOffset(),n=e<0?"+":"-",r=Math.floor(Math.abs(e/60)),i=Math.abs(e%60),o=[n,P(r),"'",P(i),"'"].join("");return["D:",t.getFullYear(),P(t.getMonth()+1),P(t.getDate()),P(t.getHours()),P(t.getMinutes()),P(t.getSeconds()),o].join("")},v=l.__private__.convertPDFDateToDate=function(t){var e=parseInt(t.substr(2,4),10),n=parseInt(t.substr(6,2),10)-1,r=parseInt(t.substr(8,2),10),i=parseInt(t.substr(10,2),10),o=parseInt(t.substr(12,2),10),a=parseInt(t.substr(14,2),10);parseInt(t.substr(16,2),10),parseInt(t.substr(20,2),10);return new Date(e,n,r,i,o,a,0)},w=l.__private__.setCreationDate=function(t){var e;if(void 0===t&&(t=new Date),"object"===se(t)&&"[object Date]"===Object.prototype.toString.call(t))e=y(t);else{if(!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|\-0[0-9]|\-1[0-1])\'(0[0-9]|[1-5][0-9])\'?$/.test(t))throw new Error("Invalid argument passed to jsPDF.setCreationDate");e=t}return p=e},b=l.__private__.getCreationDate=function(t){var e=p;return"jsDate"===t&&(e=v(p)),e};l.setCreationDate=function(t){return w(t),this},l.getCreationDate=function(t){return b(t)};var x,N,L,A,S,$,_,F,P=l.__private__.padd2=function(t){return("0"+parseInt(t)).slice(-2)},k=!1,I=[],C=[],B=0,tt=(l.__private__.setCustomOutputDestination=function(t){N=t},l.__private__.resetCustomOutputDestination=function(t){N=void 0},l.__private__.out=function(t){var e;return t="string"==typeof t?t:t.toString(),(e=void 0===N?k?I[x]:C:N).push(t),k||(B+=t.length+1),e}),j=l.__private__.write=function(t){return tt(1===arguments.length?t.toString():Array.prototype.join.call(arguments," "))},E=l.__private__.getArrayBuffer=function(t){for(var e=t.length,n=new ArrayBuffer(e),r=new Uint8Array(n);e--;)r[e]=t.charCodeAt(e);return n},M=[["Helvetica","helvetica","normal","WinAnsiEncoding"],["Helvetica-Bold","helvetica","bold","WinAnsiEncoding"],["Helvetica-Oblique","helvetica","italic","WinAnsiEncoding"],["Helvetica-BoldOblique","helvetica","bolditalic","WinAnsiEncoding"],["Courier","courier","normal","WinAnsiEncoding"],["Courier-Bold","courier","bold","WinAnsiEncoding"],["Courier-Oblique","courier","italic","WinAnsiEncoding"],["Courier-BoldOblique","courier","bolditalic","WinAnsiEncoding"],["Times-Roman","times","normal","WinAnsiEncoding"],["Times-Bold","times","bold","WinAnsiEncoding"],["Times-Italic","times","italic","WinAnsiEncoding"],["Times-BoldItalic","times","bolditalic","WinAnsiEncoding"],["ZapfDingbats","zapfdingbats","normal",null],["Symbol","symbol","normal",null]],et=(l.__private__.getStandardFonts=function(t){return M},r.fontSize||16),O=(l.__private__.setFontSize=l.setFontSize=function(t){return et=t,this},l.__private__.getFontSize=l.getFontSize=function(){return et}),nt=r.R2L||!1,q=(l.__private__.setR2L=l.setR2L=function(t){return nt=t,this},l.__private__.getR2L=l.getR2L=function(t){return nt},l.__private__.setZoomMode=function(t){var e=[void 0,null,"fullwidth","fullheight","fullpage","original"];if(/^\d*\.?\d*\%$/.test(t))L=t;else if(isNaN(t)){if(-1===e.indexOf(t))throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. "'+t+'" is not recognized.');L=t}else L=parseInt(t,10)}),T=(l.__private__.getZoomMode=function(){return L},l.__private__.setPageMode=function(t){if(-1==[void 0,null,"UseNone","UseOutlines","UseThumbs","FullScreen"].indexOf(t))throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "'+t+'" is not recognized.');A=t}),R=(l.__private__.getPageMode=function(){return A},l.__private__.setLayoutMode=function(t){if(-1==[void 0,null,"continuous","single","twoleft","tworight","two"].indexOf(t))throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. "'+t+'" is not recognized.');S=t}),D=(l.__private__.getLayoutMode=function(){return S},l.__private__.setDisplayMode=l.setDisplayMode=function(t,e,n){return q(t),R(e),T(n),this},{title:"",subject:"",author:"",keywords:"",creator:""}),U=(l.__private__.getDocumentProperty=function(t){if(-1===Object.keys(D).indexOf(t))throw new Error("Invalid argument passed to jsPDF.getDocumentProperty");return D[t]},l.__private__.getDocumentProperties=function(t){return D},l.__private__.setDocumentProperties=l.setProperties=l.setDocumentProperties=function(t){for(var e in D)D.hasOwnProperty(e)&&t[e]&&(D[e]=t[e]);return this},l.__private__.setDocumentProperty=function(t,e){if(-1===Object.keys(D).indexOf(t))throw new Error("Invalid arguments passed to jsPDF.setDocumentProperty");return D[t]=e},0),z=[],rt={},H={},W=0,V=[],G=[],it=new oe(l),Y=r.hotfixes||[],J=l.__private__.newObject=function(){var t=X();return ot(t,!0),t},X=l.__private__.newObjectDeferred=function(){return z[++U]=function(){return B},U},ot=function(t,e){return e="boolean"==typeof e&&e,z[t]=B,e&&tt(t+" 0 obj"),t},at=l.__private__.newAdditionalObject=function(){var t={objId:X(),content:""};return G.push(t),t},st=X(),lt=X(),ht=l.__private__.decodeColorString=function(t){var e=t.split(" ");if(2===e.length&&("g"===e[1]||"G"===e[1])){var n=parseFloat(e[0]);e=[n,n,n,"r"]}for(var r="#",i=0;i<3;i++)r+=("0"+Math.floor(255*parseFloat(e[i])).toString(16)).slice(-2);return r},ut=l.__private__.encodeColorString=function(t){var e;"string"==typeof t&&(t={ch1:t});var n=t.ch1,r=t.ch2,i=t.ch3,o=t.ch4,a=(t.precision,"draw"===t.pdfColorType?["G","RG","K"]:["g","rg","k"]);if("string"==typeof n&&"#"!==n.charAt(0)){var s=new RGBColor(n);if(s.ok)n=s.toHex();else if(!/^\d*\.?\d*$/.test(n))throw new Error('Invalid color "'+n+'" passed to jsPDF.encodeColorString.')}if("string"==typeof n&&/^#[0-9A-Fa-f]{3}$/.test(n)&&(n="#"+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]),"string"==typeof n&&/^#[0-9A-Fa-f]{6}$/.test(n)){var l=parseInt(n.substr(1),16);n=l>>16&255,r=l>>8&255,i=255&l}if(void 0===r||void 0===o&&n===r&&r===i)if("string"==typeof n)e=n+" "+a[0];else switch(t.precision){case 2:e=Z(n/255)+" "+a[0];break;case 3:default:e=Q(n/255)+" "+a[0]}else if(void 0===o||"object"===se(o)){if(o&&!isNaN(o.a)&&0===o.a)return e=["1.000","1.000","1.000",a[1]].join(" ");if("string"==typeof n)e=[n,r,i,a[1]].join(" ");else switch(t.precision){case 2:e=[Z(n/255),Z(r/255),Z(i/255),a[1]].join(" ");break;default:case 3:e=[Q(n/255),Q(r/255),Q(i/255),a[1]].join(" ")}}else if("string"==typeof n)e=[n,r,i,o,a[2]].join(" ");else switch(t.precision){case 2:e=[Z(n/255),Z(r/255),Z(i/255),Z(o/255),a[2]].join(" ");break;case 3:default:e=[Q(n/255),Q(r/255),Q(i/255),Q(o/255),a[2]].join(" ")}return e},ct=l.__private__.getFilters=function(){return o},ft=l.__private__.putStream=function(t){var e=(t=t||{}).data||"",n=t.filters||ct(),r=t.alreadyAppliedFilters||[],i=t.addLength1||!1,o=e.length,a={};!0===n&&(n=["FlateEncode"]);var s=t.additionalKeyValues||[],l=(a=void 0!==ae.API.processDataByFilters?ae.API.processDataByFilters(e,n):{data:e,reverseChain:[]}).reverseChain+(Array.isArray(r)?r.join(" "):r.toString());0!==a.data.length&&(s.push({key:"Length",value:a.data.length}),!0===i&&s.push({key:"Length1",value:o})),0!=l.length&&(l.split("/").length-1==1?s.push({key:"Filter",value:l}):s.push({key:"Filter",value:"["+l+"]"})),tt("<<");for(var h=0;h<s.length;h++)tt("/"+s[h].key+" "+s[h].value);tt(">>"),0!==a.data.length&&(tt("stream"),tt(a.data),tt("endstream"))},pt=l.__private__.putPage=function(t){t.mediaBox;var e=t.number,n=t.data,r=t.objId,i=t.contentsObjId;ot(r,!0);V[x].mediaBox.topRightX,V[x].mediaBox.bottomLeftX,V[x].mediaBox.topRightY,V[x].mediaBox.bottomLeftY;tt("<</Type /Page"),tt("/Parent "+t.rootDictionaryObjId+" 0 R"),tt("/Resources "+t.resourceDictionaryObjId+" 0 R"),tt("/MediaBox ["+parseFloat(Z(t.mediaBox.bottomLeftX))+" "+parseFloat(Z(t.mediaBox.bottomLeftY))+" "+Z(t.mediaBox.topRightX)+" "+Z(t.mediaBox.topRightY)+"]"),null!==t.cropBox&&tt("/CropBox ["+Z(t.cropBox.bottomLeftX)+" "+Z(t.cropBox.bottomLeftY)+" "+Z(t.cropBox.topRightX)+" "+Z(t.cropBox.topRightY)+"]"),null!==t.bleedBox&&tt("/BleedBox ["+Z(t.bleedBox.bottomLeftX)+" "+Z(t.bleedBox.bottomLeftY)+" "+Z(t.bleedBox.topRightX)+" "+Z(t.bleedBox.topRightY)+"]"),null!==t.trimBox&&tt("/TrimBox ["+Z(t.trimBox.bottomLeftX)+" "+Z(t.trimBox.bottomLeftY)+" "+Z(t.trimBox.topRightX)+" "+Z(t.trimBox.topRightY)+"]"),null!==t.artBox&&tt("/ArtBox ["+Z(t.artBox.bottomLeftX)+" "+Z(t.artBox.bottomLeftY)+" "+Z(t.artBox.topRightX)+" "+Z(t.artBox.topRightY)+"]"),"number"==typeof t.userUnit&&1!==t.userUnit&&tt("/UserUnit "+t.userUnit),it.publish("putPage",{objId:r,pageContext:V[e],pageNumber:e,page:n}),tt("/Contents "+i+" 0 R"),tt(">>"),tt("endobj");var o=n.join("\n");return ot(i,!0),ft({data:o,filters:ct()}),tt("endobj"),r},dt=l.__private__.putPages=function(){var t,e,n=[];for(t=1;t<=W;t++)V[t].objId=X(),V[t].contentsObjId=X();for(t=1;t<=W;t++)n.push(pt({number:t,data:I[t],objId:V[t].objId,contentsObjId:V[t].contentsObjId,mediaBox:V[t].mediaBox,cropBox:V[t].cropBox,bleedBox:V[t].bleedBox,trimBox:V[t].trimBox,artBox:V[t].artBox,userUnit:V[t].userUnit,rootDictionaryObjId:st,resourceDictionaryObjId:lt}));ot(st,!0),tt("<</Type /Pages");var r="/Kids [";for(e=0;e<W;e++)r+=n[e]+" 0 R ";tt(r+"]"),tt("/Count "+W),tt(">>"),tt("endobj"),it.publish("postPutPages")},gt=function(){!function(){for(var t in rt)rt.hasOwnProperty(t)&&(!1===s||!0===s&&K.hasOwnProperty(t))&&(e=rt[t],it.publish("putFont",{font:e,out:tt,newObject:J,putStream:ft}),!0!==e.isAlreadyPutted&&(e.objectNumber=J(),tt("<<"),tt("/Type /Font"),tt("/BaseFont /"+e.postScriptName),tt("/Subtype /Type1"),"string"==typeof e.encoding&&tt("/Encoding /"+e.encoding),tt("/FirstChar 32"),tt("/LastChar 255"),tt(">>"),tt("endobj")));var e}(),it.publish("putResources"),ot(lt,!0),tt("<<"),function(){for(var t in tt("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"),tt("/Font <<"),rt)rt.hasOwnProperty(t)&&(!1===s||!0===s&&K.hasOwnProperty(t))&&tt("/"+t+" "+rt[t].objectNumber+" 0 R");tt(">>"),tt("/XObject <<"),it.publish("putXobjectDict"),tt(">>")}(),tt(">>"),tt("endobj"),it.publish("postPutResources")},mt=function(t,e,n){H.hasOwnProperty(e)||(H[e]={}),H[e][n]=t},yt=function(t,e,n,r,i){i=i||!1;var o="F"+(Object.keys(rt).length+1).toString(10),a={id:o,postScriptName:t,fontName:e,fontStyle:n,encoding:r,isStandardFont:i,metadata:{}};return it.publish("addFont",{font:a,instance:this}),void 0!==o&&(rt[o]=a,mt(o,e,n)),o},vt=l.__private__.pdfEscape=l.pdfEscape=function(t,e){return function(t,e){var n,r,i,o,a,s,l,h,u;if(i=(e=e||{}).sourceEncoding||"Unicode",a=e.outputEncoding,(e.autoencode||a)&&rt[$].metadata&&rt[$].metadata[i]&&rt[$].metadata[i].encoding&&(o=rt[$].metadata[i].encoding,!a&&rt[$].encoding&&(a=rt[$].encoding),!a&&o.codePages&&(a=o.codePages[0]),"string"==typeof a&&(a=o[a]),a)){for(l=!1,s=[],n=0,r=t.length;n<r;n++)(h=a[t.charCodeAt(n)])?s.push(String.fromCharCode(h)):s.push(t[n]),s[n].charCodeAt(0)>>8&&(l=!0);t=s.join("")}for(n=t.length;void 0===l&&0!==n;)t.charCodeAt(n-1)>>8&&(l=!0),n--;if(!l)return t;for(s=e.noBOM?[]:[254,255],n=0,r=t.length;n<r;n++){if((u=(h=t.charCodeAt(n))>>8)>>8)throw new Error("Character at position "+n+" of string '"+t+"' exceeds 16bits. Cannot be encoded into UCS-2 BE");s.push(u),s.push(h-(u<<8))}return String.fromCharCode.apply(void 0,s)}(t,e).replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},wt=l.__private__.beginPage=function(t,e){var n,r="string"==typeof e&&e.toLowerCase();if("string"==typeof t&&(n=f(t.toLowerCase()))&&(t=n[0],e=n[1]),Array.isArray(t)&&(e=t[1],t=t[0]),(isNaN(t)||isNaN(e))&&(t=i[0],e=i[1]),r){switch(r.substr(0,1)){case"l":t<e&&(r="s");break;case"p":e<t&&(r="s")}"s"===r&&(n=t,t=e,e=n)}(14400<t||14400<e)&&(console.warn("A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400"),t=Math.min(14400,t),e=Math.min(14400,e)),i=[t,e],k=!0,I[++W]=[],V[W]={objId:0,contentsObjId:0,userUnit:Number(a),artBox:null,bleedBox:null,cropBox:null,trimBox:null,mediaBox:{bottomLeftX:0,bottomLeftY:0,topRightX:Number(t),topRightY:Number(e)}},xt(W)},bt=function(){wt.apply(this,arguments),Dt(Rt),tt(Jt),0!==te&&tt(te+" J"),0!==ne&&tt(ne+" j"),it.publish("addPage",{pageNumber:W})},xt=function(t){0<t&&t<=W&&(x=t)},Nt=l.__private__.getNumberOfPages=l.getNumberOfPages=function(){return I.length-1},Lt=function(t,e,n){var r,i=void 0;return n=n||{},t=void 0!==t?t:rt[$].fontName,e=void 0!==e?e:rt[$].fontStyle,r=t.toLowerCase(),void 0!==H[r]&&void 0!==H[r][e]?i=H[r][e]:void 0!==H[t]&&void 0!==H[t][e]?i=H[t][e]:!1===n.disableWarning&&console.warn("Unable to look up font label for font '"+t+"', '"+e+"'. Refer to getFontList() for available fonts."),i||n.noFallback||null==(i=H.times[e])&&(i=H.times.normal),i},At=l.__private__.putInfo=function(){for(var t in J(),tt("<<"),tt("/Producer (jsPDF "+ae.version+")"),D)D.hasOwnProperty(t)&&D[t]&&tt("/"+t.substr(0,1).toUpperCase()+t.substr(1)+" ("+vt(D[t])+")");tt("/CreationDate ("+p+")"),tt(">>"),tt("endobj")},St=l.__private__.putCatalog=function(t){var e=(t=t||{}).rootDictionaryObjId||st;switch(J(),tt("<<"),tt("/Type /Catalog"),tt("/Pages "+e+" 0 R"),L||(L="fullwidth"),L){case"fullwidth":tt("/OpenAction [3 0 R /FitH null]");break;case"fullheight":tt("/OpenAction [3 0 R /FitV null]");break;case"fullpage":tt("/OpenAction [3 0 R /Fit]");break;case"original":tt("/OpenAction [3 0 R /XYZ null null 1]");break;default:var n=""+L;"%"===n.substr(n.length-1)&&(L=parseInt(L)/100),"number"==typeof L&&tt("/OpenAction [3 0 R /XYZ null null "+Z(L)+"]")}switch(S||(S="continuous"),S){case"continuous":tt("/PageLayout /OneColumn");break;case"single":tt("/PageLayout /SinglePage");break;case"two":case"twoleft":tt("/PageLayout /TwoColumnLeft");break;case"tworight":tt("/PageLayout /TwoColumnRight")}A&&tt("/PageMode /"+A),it.publish("putCatalog"),tt(">>"),tt("endobj")},_t=l.__private__.putTrailer=function(){tt("trailer"),tt("<<"),tt("/Size "+(U+1)),tt("/Root "+U+" 0 R"),tt("/Info "+(U-1)+" 0 R"),tt("/ID [ <"+d+"> <"+d+"> ]"),tt(">>")},Ft=l.__private__.putHeader=function(){tt("%PDF-"+h),tt("%ºß¬à")},Pt=l.__private__.putXRef=function(){var t=1,e="0000000000";for(tt("xref"),tt("0 "+(U+1)),tt("0000000000 65535 f "),t=1;t<=U;t++){"function"==typeof z[t]?tt((e+z[t]()).slice(-10)+" 00000 n "):void 0!==z[t]?tt((e+z[t]).slice(-10)+" 00000 n "):tt("0000000000 00000 n ")}},kt=l.__private__.buildDocument=function(){k=!1,B=U=0,C=[],z=[],G=[],st=X(),lt=X(),it.publish("buildDocument"),Ft(),dt(),function(){it.publish("putAdditionalObjects");for(var t=0;t<G.length;t++){var e=G[t];ot(e.objId,!0),tt(e.content),tt("endobj")}it.publish("postPutAdditionalObjects")}(),gt(),At(),St();var t=B;return Pt(),_t(),tt("startxref"),tt(""+t),tt("%%EOF"),k=!0,C.join("\n")},It=l.__private__.getBlob=function(t){return new Blob([E(t)],{type:"application/pdf"})},Ct=l.output=l.__private__.output=((F=function(t,e){e=e||{};var n=kt();switch("string"==typeof e?e={filename:e}:e.filename=e.filename||"generated.pdf",t){case void 0:return n;case"save":l.save(e.filename);break;case"arraybuffer":return E(n);case"blob":return It(n);case"bloburi":case"bloburl":if(void 0!==ie.URL&&"function"==typeof ie.URL.createObjectURL)return ie.URL&&ie.URL.createObjectURL(It(n))||void 0;console.warn("bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.");break;case"datauristring":case"dataurlstring":return"data:application/pdf;filename="+e.filename+";base64,"+btoa(n);case"dataurlnewwindow":var r='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><iframe src="'+this.output("datauristring")+'"></iframe></body></html>',i=ie.open();if(null!==i&&i.document.write(r),i||"undefined"==typeof safari)return i;case"datauri":case"dataurl":return ie.document.location.href="data:application/pdf;filename="+e.filename+";base64,"+btoa(n);default:return null}}).foo=function(){try{return F.apply(this,arguments)}catch(t){var e=t.stack||"";~e.indexOf(" at ")&&(e=e.split(" at ")[1]);var n="Error in function "+e.split("\n")[0].split("<")[0]+": "+t.message;if(!ie.console)throw new Error(n);ie.console.error(n,t),ie.alert&&alert(n)}},(F.foo.bar=F).foo),Bt=function(t){return!0===Array.isArray(Y)&&-1<Y.indexOf(t)};switch(e){case"pt":_=1;break;case"mm":_=72/25.4;break;case"cm":_=72/2.54;break;case"in":_=72;break;case"px":_=1==Bt("px_scaling")?.75:96/72;break;case"pc":case"em":_=12;break;case"ex":_=6;break;default:throw new Error("Invalid unit: "+e)}w(),m();var jt=l.__private__.getPageInfo=function(t){if(isNaN(t)||t%1!=0)throw new Error("Invalid argument passed to jsPDF.getPageInfo");return{objId:V[t].objId,pageNumber:t,pageContext:V[t]}},Et=l.__private__.getPageInfoByObjId=function(t){for(var e in V)if(V[e].objId===t)break;if(isNaN(t)||t%1!=0)throw new Error("Invalid argument passed to jsPDF.getPageInfoByObjId");return jt(e)},Mt=l.__private__.getCurrentPageInfo=function(){return{objId:V[x].objId,pageNumber:x,pageContext:V[x]}};l.addPage=function(){return bt.apply(this,arguments),this},l.setPage=function(){return xt.apply(this,arguments),this},l.insertPage=function(t){return this.addPage(),this.movePage(x,t),this},l.movePage=function(t,e){if(e<t){for(var n=I[t],r=V[t],i=t;e<i;i--)I[i]=I[i-1],V[i]=V[i-1];I[e]=n,V[e]=r,this.setPage(e)}else if(t<e){for(n=I[t],r=V[t],i=t;i<e;i++)I[i]=I[i+1],V[i]=V[i+1];I[e]=n,V[e]=r,this.setPage(e)}return this},l.deletePage=function(){return function(t){0<t&&t<=W&&(I.splice(t,1),--W<x&&(x=W),this.setPage(x))}.apply(this,arguments),this};l.__private__.text=l.text=function(t,e,n,i){var r;"number"!=typeof t||"number"!=typeof e||"string"!=typeof n&&!Array.isArray(n)||(r=n,n=e,e=t,t=r);var o=arguments[3],a=arguments[4],s=arguments[5];if("object"===se(o)&&null!==o||("string"==typeof a&&(s=a,a=null),"string"==typeof o&&(s=o,o=null),"number"==typeof o&&(a=o,o=null),i={flags:o,angle:a,align:s}),(o=o||{}).noBOM=o.noBOM||!0,o.autoencode=o.autoencode||!0,isNaN(e)||isNaN(n)||null==t)throw new Error("Invalid arguments passed to jsPDF.text");if(0===t.length)return c;var l,h="",u="number"==typeof i.lineHeightFactor?i.lineHeightFactor:Tt,c=i.scope||this;function f(t){for(var e,n=t.concat(),r=[],i=n.length;i--;)"string"==typeof(e=n.shift())?r.push(e):Array.isArray(t)&&1===e.length?r.push(e[0]):r.push([e[0],e[1],e[2]]);return r}function p(t,e){var n;if("string"==typeof t)n=e(t)[0];else if(Array.isArray(t)){for(var r,i,o=t.concat(),a=[],s=o.length;s--;)"string"==typeof(r=o.shift())?a.push(e(r)[0]):Array.isArray(r)&&"string"===r[0]&&(i=e(r[0],r[1],r[2]),a.push([i[0],i[1],i[2]]));n=a}return n}var d=!1,g=!0;if("string"==typeof t)d=!0;else if(Array.isArray(t)){for(var m,y=t.concat(),v=[],w=y.length;w--;)("string"!=typeof(m=y.shift())||Array.isArray(m)&&"string"!=typeof m[0])&&(g=!1);d=g}if(!1===d)throw new Error('Type of text must be string or Array. "'+t+'" is not recognized.');var b=rt[$].encoding;"WinAnsiEncoding"!==b&&"StandardEncoding"!==b||(t=p(t,function(t,e,n){return[(r=t,r=r.split("\t").join(Array(i.TabLen||9).join(" ")),vt(r,o)),e,n];var r})),"string"==typeof t&&(t=t.match(/[\r?\n]/)?t.split(/\r\n|\r|\n/g):[t]);var x=et/c.internal.scaleFactor,N=x*(Tt-1);switch(i.baseline){case"bottom":n-=N;break;case"top":n+=x-N;break;case"hanging":n+=x-2*N;break;case"middle":n+=x/2-N}0<(O=i.maxWidth||0)&&("string"==typeof t?t=c.splitTextToSize(t,O):"[object Array]"===Object.prototype.toString.call(t)&&(t=c.splitTextToSize(t.join(" "),O)));var L={text:t,x:e,y:n,options:i,mutex:{pdfEscape:vt,activeFontKey:$,fonts:rt,activeFontSize:et}};it.publish("preProcessText",L),t=L.text;a=(i=L.options).angle;var A=c.internal.scaleFactor,S=[];if(a){a*=Math.PI/180;var _=Math.cos(a),F=Math.sin(a);S=[Z(_),Z(F),Z(-1*F),Z(_)]}void 0!==(M=i.charSpace)&&(h+=Q(M*A)+" Tc\n");i.lang;var P=-1,k=void 0!==i.renderingMode?i.renderingMode:i.stroke,I=c.internal.getCurrentPageInfo().pageContext;switch(k){case 0:case!1:case"fill":P=0;break;case 1:case!0:case"stroke":P=1;break;case 2:case"fillThenStroke":P=2;break;case 3:case"invisible":P=3;break;case 4:case"fillAndAddForClipping":P=4;break;case 5:case"strokeAndAddPathForClipping":P=5;break;case 6:case"fillThenStrokeAndAddToPathForClipping":P=6;break;case 7:case"addToPathForClipping":P=7}var C=void 0!==I.usedRenderingMode?I.usedRenderingMode:-1;-1!==P?h+=P+" Tr\n":-1!==C&&(h+="0 Tr\n"),-1!==P&&(I.usedRenderingMode=P);s=i.align||"left";var B=et*u,j=c.internal.pageSize.getWidth(),E=(A=c.internal.scaleFactor,rt[$]),M=i.charSpace||Qt,O=i.maxWidth||0,q=(o={},[]);if("[object Array]"===Object.prototype.toString.call(t)){var T,R;v=f(t);"left"!==s&&(R=v.map(function(t){return c.getStringUnitWidth(t,{font:E,charSpace:M,fontSize:et})*et/A}));var D,U=Math.max.apply(Math,R),z=0;if("right"===s){e-=R[0],t=[];var H=0;for(w=v.length;H<w;H++)U-R[H],T=0===H?(D=Wt(e),Vt(n)):(D=(z-R[H])*A,-B),t.push([v[H],D,T]),z=R[H]}else if("center"===s){e-=R[0]/2,t=[];for(H=0,w=v.length;H<w;H++)(U-R[H])/2,T=0===H?(D=Wt(e),Vt(n)):(D=(z-R[H])/2*A,-B),t.push([v[H],D,T]),z=R[H]}else if("left"===s){t=[];for(H=0,w=v.length;H<w;H++)T=0===H?Vt(n):-B,D=0===H?Wt(e):0,t.push(v[H])}else{if("justify"!==s)throw new Error('Unrecognized alignment option, use "left", "center", "right" or "justify".');t=[];for(O=0!==O?O:j,H=0,w=v.length;H<w;H++)T=0===H?Vt(n):-B,D=0===H?Wt(e):0,H<w-1&&q.push(((O-R[H])/(v[H].split(" ").length-1)*A).toFixed(2)),t.push([v[H],D,T])}}!0===("boolean"==typeof i.R2L?i.R2L:nt)&&(t=p(t,function(t,e,n){return[t.split("").reverse().join(""),e,n]}));L={text:t,x:e,y:n,options:i,mutex:{pdfEscape:vt,activeFontKey:$,fonts:rt,activeFontSize:et}};it.publish("postProcessText",L),t=L.text,l=L.mutex.isHex;v=f(t);t=[];var W,V,G,Y=0,J=(w=v.length,"");for(H=0;H<w;H++)J="",Array.isArray(v[H])?(W=parseFloat(v[H][1]),V=parseFloat(v[H][2]),G=(l?"<":"(")+v[H][0]+(l?">":")"),Y=1):(W=Wt(e),V=Vt(n),G=(l?"<":"(")+v[H]+(l?">":")")),void 0!==q&&void 0!==q[H]&&(J=q[H]+" Tw\n"),0!==S.length&&0===H?t.push(J+S.join(" ")+" "+W.toFixed(2)+" "+V.toFixed(2)+" Tm\n"+G):1===Y||0===Y&&0===H?t.push(J+W.toFixed(2)+" "+V.toFixed(2)+" Td\n"+G):t.push(J+G);t=0===Y?t.join(" Tj\nT* "):t.join(" Tj\n"),t+=" Tj\n";var X="BT\n/"+$+" "+et+" Tf\n"+(et*u).toFixed(2)+" TL\n"+Kt+"\n";return X+=h,X+=t,tt(X+="ET"),K[$]=!0,c},l.__private__.lstext=l.lstext=function(t,e,n,r){return console.warn("jsPDF.lstext is deprecated"),this.text(t,e,n,{charSpace:r})},l.__private__.clip=l.clip=function(t){tt("evenodd"===t?"W*":"W"),tt("n")},l.__private__.clip_fixed=l.clip_fixed=function(t){console.log("clip_fixed is deprecated"),l.clip(t)};var Ot=l.__private__.isValidStyle=function(t){var e=!1;return-1!==[void 0,null,"S","F","DF","FD","f","f*","B","B*"].indexOf(t)&&(e=!0),e},qt=l.__private__.getStyle=function(t){var e="S";return"F"===t?e="f":"FD"===t||"DF"===t?e="B":"f"!==t&&"f*"!==t&&"B"!==t&&"B*"!==t||(e=t),e};l.__private__.line=l.line=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw new Error("Invalid arguments passed to jsPDF.line");return this.lines([[n-t,r-e]],t,e)},l.__private__.lines=l.lines=function(t,e,n,r,i,o){var a,s,l,h,u,c,f,p,d,g,m,y;if("number"==typeof t&&(y=n,n=e,e=t,t=y),r=r||[1,1],o=o||!1,isNaN(e)||isNaN(n)||!Array.isArray(t)||!Array.isArray(r)||!Ot(i)||"boolean"!=typeof o)throw new Error("Invalid arguments passed to jsPDF.lines");for(tt(Q(Wt(e))+" "+Q(Vt(n))+" m "),a=r[0],s=r[1],h=t.length,g=e,m=n,l=0;l<h;l++)2===(u=t[l]).length?(g=u[0]*a+g,m=u[1]*s+m,tt(Q(Wt(g))+" "+Q(Vt(m))+" l")):(c=u[0]*a+g,f=u[1]*s+m,p=u[2]*a+g,d=u[3]*s+m,g=u[4]*a+g,m=u[5]*s+m,tt(Q(Wt(c))+" "+Q(Vt(f))+" "+Q(Wt(p))+" "+Q(Vt(d))+" "+Q(Wt(g))+" "+Q(Vt(m))+" c"));return o&&tt(" h"),null!==i&&tt(qt(i)),this},l.__private__.rect=l.rect=function(t,e,n,r,i){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r)||!Ot(i))throw new Error("Invalid arguments passed to jsPDF.rect");return tt([Z(Wt(t)),Z(Vt(e)),Z(n*_),Z(-r*_),"re"].join(" ")),null!==i&&tt(qt(i)),this},l.__private__.triangle=l.triangle=function(t,e,n,r,i,o,a){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r)||isNaN(i)||isNaN(o)||!Ot(a))throw new Error("Invalid arguments passed to jsPDF.triangle");return this.lines([[n-t,r-e],[i-n,o-r],[t-i,e-o]],t,e,[1,1],a,!0),this},l.__private__.roundedRect=l.roundedRect=function(t,e,n,r,i,o,a){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r)||isNaN(i)||isNaN(o)||!Ot(a))throw new Error("Invalid arguments passed to jsPDF.roundedRect");var s=4/3*(Math.SQRT2-1);return this.lines([[n-2*i,0],[i*s,0,i,o-o*s,i,o],[0,r-2*o],[0,o*s,-i*s,o,-i,o],[2*i-n,0],[-i*s,0,-i,-o*s,-i,-o],[0,2*o-r],[0,-o*s,i*s,-o,i,-o]],t+i,e,[1,1],a),this},l.__private__.ellipse=l.ellipse=function(t,e,n,r,i){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r)||!Ot(i))throw new Error("Invalid arguments passed to jsPDF.ellipse");var o=4/3*(Math.SQRT2-1)*n,a=4/3*(Math.SQRT2-1)*r;return tt([Z(Wt(t+n)),Z(Vt(e)),"m",Z(Wt(t+n)),Z(Vt(e-a)),Z(Wt(t+o)),Z(Vt(e-r)),Z(Wt(t)),Z(Vt(e-r)),"c"].join(" ")),tt([Z(Wt(t-o)),Z(Vt(e-r)),Z(Wt(t-n)),Z(Vt(e-a)),Z(Wt(t-n)),Z(Vt(e)),"c"].join(" ")),tt([Z(Wt(t-n)),Z(Vt(e+a)),Z(Wt(t-o)),Z(Vt(e+r)),Z(Wt(t)),Z(Vt(e+r)),"c"].join(" ")),tt([Z(Wt(t+o)),Z(Vt(e+r)),Z(Wt(t+n)),Z(Vt(e+a)),Z(Wt(t+n)),Z(Vt(e)),"c"].join(" ")),null!==i&&tt(qt(i)),this},l.__private__.circle=l.circle=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||!Ot(r))throw new Error("Invalid arguments passed to jsPDF.circle");return this.ellipse(t,e,n,n,r)};l.setFont=function(t,e){return $=Lt(t,e,{disableWarning:!1}),this},l.setFontStyle=l.setFontType=function(t){return $=Lt(void 0,t),this};l.__private__.getFontList=l.getFontList=function(){var t,e,n,r={};for(t in H)if(H.hasOwnProperty(t))for(e in r[t]=n=[],H[t])H[t].hasOwnProperty(e)&&n.push(e);return r};l.addFont=function(t,e,n,r){yt.call(this,t,e,n,r=r||"Identity-H")};var Tt,Rt=r.lineWidth||.200025,Dt=l.__private__.setLineWidth=l.setLineWidth=function(t){return tt((t*_).toFixed(2)+" w"),this},Ut=(l.__private__.setLineDash=ae.API.setLineDash=function(t,e){if(t=t||[],e=e||0,isNaN(e)||!Array.isArray(t))throw new Error("Invalid arguments passed to jsPDF.setLineDash");return t=t.map(function(t){return(t*_).toFixed(3)}).join(" "),e=parseFloat((e*_).toFixed(3)),tt("["+t+"] "+e+" d"),this},l.__private__.getLineHeight=l.getLineHeight=function(){return et*Tt}),zt=(Ut=l.__private__.getLineHeight=l.getLineHeight=function(){return et*Tt},l.__private__.setLineHeightFactor=l.setLineHeightFactor=function(t){return"number"==typeof(t=t||1.15)&&(Tt=t),this}),Ht=l.__private__.getLineHeightFactor=l.getLineHeightFactor=function(){return Tt};zt(r.lineHeight);var Wt=l.__private__.getHorizontalCoordinate=function(t){return t*_},Vt=l.__private__.getVerticalCoordinate=function(t){return V[x].mediaBox.topRightY-V[x].mediaBox.bottomLeftY-t*_},Gt=l.__private__.getHorizontalCoordinateString=function(t){return Z(t*_)},Yt=l.__private__.getVerticalCoordinateString=function(t){return Z(V[x].mediaBox.topRightY-V[x].mediaBox.bottomLeftY-t*_)},Jt=r.strokeColor||"0 G",Xt=(l.__private__.getStrokeColor=l.getDrawColor=function(){return ht(Jt)},l.__private__.setStrokeColor=l.setDrawColor=function(t,e,n,r){return Jt=ut({ch1:t,ch2:e,ch3:n,ch4:r,pdfColorType:"draw",precision:2}),tt(Jt),this},r.fillColor||"0 g"),Kt=(l.__private__.getFillColor=l.getFillColor=function(){return ht(Xt)},l.__private__.setFillColor=l.setFillColor=function(t,e,n,r){return Xt=ut({ch1:t,ch2:e,ch3:n,ch4:r,pdfColorType:"fill",precision:2}),tt(Xt),this},r.textColor||"0 g"),Zt=l.__private__.getTextColor=l.getTextColor=function(){return ht(Kt)},Qt=(l.__private__.setTextColor=l.setTextColor=function(t,e,n,r){return Kt=ut({ch1:t,ch2:e,ch3:n,ch4:r,pdfColorType:"text",precision:3}),this},r.charSpace||0),$t=l.__private__.getCharSpace=l.getCharSpace=function(){return Qt},te=(l.__private__.setCharSpace=l.setCharSpace=function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.setCharSpace");return Qt=t,this},0);l.CapJoinStyles={0:0,butt:0,but:0,miter:0,1:1,round:1,rounded:1,circle:1,2:2,projecting:2,project:2,square:2,bevel:2};l.__private__.setLineCap=l.setLineCap=function(t){var e=l.CapJoinStyles[t];if(void 0===e)throw new Error("Line cap style of '"+t+"' is not recognized. See or extend .CapJoinStyles property for valid styles");return tt((te=e)+" J"),this};var ee,ne=0;l.__private__.setLineJoin=l.setLineJoin=function(t){var e=l.CapJoinStyles[t];if(void 0===e)throw new Error("Line join style of '"+t+"' is not recognized. See or extend .CapJoinStyles property for valid styles");return tt((ne=e)+" j"),this},l.__private__.setMiterLimit=l.setMiterLimit=function(t){if(t=t||0,isNaN(t))throw new Error("Invalid argument passed to jsPDF.setMiterLimit");return ee=parseFloat(Z(t*_)),tt(ee+" M"),this};for(var re in l.save=function(r,t){if(r=r||"generated.pdf",(t=t||{}).returnPromise=t.returnPromise||!1,!1!==t.returnPromise)return new Promise(function(t,e){try{var n=le(It(kt()),r);"function"==typeof le.unload&&ie.setTimeout&&setTimeout(le.unload,911),t(n)}catch(t){e(t.message)}});le(It(kt()),r),"function"==typeof le.unload&&ie.setTimeout&&setTimeout(le.unload,911)},ae.API)ae.API.hasOwnProperty(re)&&("events"===re&&ae.API.events.length?function(t,e){var n,r,i;for(i=e.length-1;-1!==i;i--)n=e[i][0],r=e[i][1],t.subscribe.apply(t,[n].concat("function"==typeof r?[r]:r))}(it,ae.API.events):l[re]=ae.API[re]);return l.internal={pdfEscape:vt,getStyle:qt,getFont:function(){return rt[Lt.apply(l,arguments)]},getFontSize:O,getCharSpace:$t,getTextColor:Zt,getLineHeight:Ut,getLineHeightFactor:Ht,write:j,getHorizontalCoordinate:Wt,getVerticalCoordinate:Vt,getCoordinateString:Gt,getVerticalCoordinateString:Yt,collections:{},newObject:J,newAdditionalObject:at,newObjectDeferred:X,newObjectDeferredBegin:ot,getFilters:ct,putStream:ft,events:it,scaleFactor:_,pageSize:{getWidth:function(){return(V[x].mediaBox.topRightX-V[x].mediaBox.bottomLeftX)/_},setWidth:function(t){V[x].mediaBox.topRightX=t*_+V[x].mediaBox.bottomLeftX},getHeight:function(){return(V[x].mediaBox.topRightY-V[x].mediaBox.bottomLeftY)/_},setHeight:function(t){V[x].mediaBox.topRightY=t*_+V[x].mediaBox.bottomLeftY}},output:Ct,getNumberOfPages:Nt,pages:I,out:tt,f2:Z,f3:Q,getPageInfo:jt,getPageInfoByObjId:Et,getCurrentPageInfo:Mt,getPDFVersion:u,hasHotfix:Bt},Object.defineProperty(l.internal.pageSize,"width",{get:function(){return(V[x].mediaBox.topRightX-V[x].mediaBox.bottomLeftX)/_},set:function(t){V[x].mediaBox.topRightX=t*_+V[x].mediaBox.bottomLeftX},enumerable:!0,configurable:!0}),Object.defineProperty(l.internal.pageSize,"height",{get:function(){return(V[x].mediaBox.topRightY-V[x].mediaBox.bottomLeftY)/_},set:function(t){V[x].mediaBox.topRightY=t*_+V[x].mediaBox.bottomLeftY},enumerable:!0,configurable:!0}),function(t){for(var e=0,n=M.length;e<n;e++){var r=yt(t[e][0],t[e][1],t[e][2],M[e][3],!0);K[r]=!0;var i=t[e][0].split("-");mt(r,i[0],i[1]||"")}it.publish("addFonts",{fonts:rt,dictionary:H})}(M),$="F1",bt(i,t),it.publish("initialized"),l}return ae.API={events:[]},ae.version="1.5.3", true?!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(){return ae}).call(exports, __webpack_require__, exports, module),
  216. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):"undefined"!=typeof module&&module.exports?(module.exports=ae,module.exports.jsPDF=ae):ie.jsPDF=ae,ae}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof global&&global||Function('return typeof this === "object" && this.content')()||Function("return this")());
  217. /**
  218. * @license
  219. * Copyright (c) 2016 Alexander Weidt,
  220. * https://github.com/BiggA94
  221. *
  222. * Licensed under the MIT License. http://opensource.org/licenses/mit-license
  223. */
  224. (function(t,e){var A,n=1,S=function(t){return t.replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},y=function(t){return t.replace(/\\\\/g,"\\").replace(/\\\(/g,"(").replace(/\\\)/g,")")},_=function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.f2");return t.toFixed(2)},s=function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.f2");return t.toFixed(5)};t.__acroform__={};var r=function(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t},v=function(t){return t*n},w=function(t){return t/n},l=function(t){var e=new j,n=Y.internal.getHeight(t)||0,r=Y.internal.getWidth(t)||0;return e.BBox=[0,0,Number(_(r)),Number(_(n))],e},i=t.__acroform__.setBit=function(t,e){if(t=t||0,e=e||0,isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBit");return t|=1<<e},o=t.__acroform__.clearBit=function(t,e){if(t=t||0,e=e||0,isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBit");return t&=~(1<<e)},a=t.__acroform__.getBit=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBit");return 0==(t&1<<e)?0:1},b=t.__acroform__.getBitForPdf=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf");return a(t,e-1)},x=t.__acroform__.setBitForPdf=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf");return i(t,e-1)},N=t.__acroform__.clearBitForPdf=function(t,e,n){if(isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf");return o(t,e-1)},c=t.__acroform__.calculateCoordinates=function(t){var e=this.internal.getHorizontalCoordinate,n=this.internal.getVerticalCoordinate,r=t[0],i=t[1],o=t[2],a=t[3],s={};return s.lowerLeft_X=e(r)||0,s.lowerLeft_Y=n(i+a)||0,s.upperRight_X=e(r+o)||0,s.upperRight_Y=n(i)||0,[Number(_(s.lowerLeft_X)),Number(_(s.lowerLeft_Y)),Number(_(s.upperRight_X)),Number(_(s.upperRight_Y))]},f=function(t){if(t.appearanceStreamContent)return t.appearanceStreamContent;if(t.V||t.DV){var e=[],n=t.V||t.DV,r=h(t,n),i=A.internal.getFont(t.fontName,t.fontStyle).id;e.push("/Tx BMC"),e.push("q"),e.push("BT"),e.push(A.__private__.encodeColorString(t.color)),e.push("/"+i+" "+_(r.fontSize)+" Tf"),e.push("1 0 0 1 0 0 Tm"),e.push(r.text),e.push("ET"),e.push("Q"),e.push("EMC");var o=new l(t);return o.stream=e.join("\n"),o}},h=function(i,t){var e=i.maxFontSize||12,n=(i.fontName,{text:"",fontSize:""}),o=(t=")"==(t="("==t.substr(0,1)?t.substr(1):t).substr(t.length-1)?t.substr(0,t.length-1):t).split(" "),r=(A.__private__.encodeColorString(i.color),e),a=Y.internal.getHeight(i)||0;a=a<0?-a:a;var s=Y.internal.getWidth(i)||0;s=s<0?-s:s;var l=function(t,e,n){if(t+1<o.length){var r=e+" "+o[t+1];return F(r,i,n).width<=s-4}return!1};r++;t:for(;;){t="";var h=F("3",i,--r).height,u=i.multiline?a-r:(a-h)/2,c=-2,f=u+=2,p=0,d=0,g=0;if(r<=0){t="(...) Tj\n",t+="% Width of Text: "+F(t,i,r=12).width+", FieldWidth:"+s+"\n";break}g=F(o[0]+" ",i,r).width;var m="",y=0;for(var v in o)if(o.hasOwnProperty(v)){m=" "==(m+=o[v]+" ").substr(m.length-1)?m.substr(0,m.length-1):m;var w=parseInt(v);g=F(m+" ",i,r).width;var b=l(w,m,r),x=v>=o.length-1;if(b&&!x){m+=" ";continue}if(b||x){if(x)d=w;else if(i.multiline&&a<(h+2)*(y+2)+2)continue t}else{if(!i.multiline)continue t;if(a<(h+2)*(y+2)+2)continue t;d=w}for(var N="",L=p;L<=d;L++)N+=o[L]+" ";switch(N=" "==N.substr(N.length-1)?N.substr(0,N.length-1):N,g=F(N,i,r).width,i.textAlign){case"right":c=s-g-2;break;case"center":c=(s-g)/2;break;case"left":default:c=2}t+=_(c)+" "+_(f)+" Td\n",t+="("+S(N)+") Tj\n",t+=-_(c)+" 0 Td\n",f=-(r+2),g=0,p=d+1,y++,m=""}else;break}return n.text=t,n.fontSize=r,n},F=function(t,e,n){var r=A.internal.getFont(e.fontName,e.fontStyle),i=A.getStringUnitWidth(t,{font:r,fontSize:parseFloat(n),charSpace:0})*parseFloat(n);return{height:A.getStringUnitWidth("3",{font:r,fontSize:parseFloat(n),charSpace:0})*parseFloat(n)*1.5,width:i}},u={fields:[],xForms:[],acroFormDictionaryRoot:null,printedOut:!1,internal:null,isInitialized:!1},p=function(){A.internal.acroformPlugin.acroFormDictionaryRoot.objId=void 0;var t=A.internal.acroformPlugin.acroFormDictionaryRoot.Fields;for(var e in t)if(t.hasOwnProperty(e)){var n=t[e];n.objId=void 0,n.hasAnnotation&&d.call(A,n)}},d=function(t){var e={type:"reference",object:t};void 0===A.internal.getPageInfo(t.page).pageContext.annotations.find(function(t){return t.type===e.type&&t.object===e.object})&&A.internal.getPageInfo(t.page).pageContext.annotations.push(e)},g=function(){if(void 0===A.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error("putCatalogCallback: Root missing.");A.internal.write("/AcroForm "+A.internal.acroformPlugin.acroFormDictionaryRoot.objId+" 0 R")},m=function(){A.internal.events.unsubscribe(A.internal.acroformPlugin.acroFormDictionaryRoot._eventID),delete A.internal.acroformPlugin.acroFormDictionaryRoot._eventID,A.internal.acroformPlugin.printedOut=!0},L=function(t){var e=!t;t||(A.internal.newObjectDeferredBegin(A.internal.acroformPlugin.acroFormDictionaryRoot.objId,!0),A.internal.acroformPlugin.acroFormDictionaryRoot.putStream());t=t||A.internal.acroformPlugin.acroFormDictionaryRoot.Kids;for(var n in t)if(t.hasOwnProperty(n)){var r=t[n],i=[],o=r.Rect;if(r.Rect&&(r.Rect=c.call(this,r.Rect)),A.internal.newObjectDeferredBegin(r.objId,!0),r.DA=Y.createDefaultAppearanceStream(r),"object"===se(r)&&"function"==typeof r.getKeyValueListForStream&&(i=r.getKeyValueListForStream()),r.Rect=o,r.hasAppearanceStream&&!r.appearanceStreamContent){var a=f.call(this,r);i.push({key:"AP",value:"<</N "+a+">>"}),A.internal.acroformPlugin.xForms.push(a)}if(r.appearanceStreamContent){var s="";for(var l in r.appearanceStreamContent)if(r.appearanceStreamContent.hasOwnProperty(l)){var h=r.appearanceStreamContent[l];if(s+="/"+l+" ",s+="<<",1<=Object.keys(h).length||Array.isArray(h))for(var n in h){var u;if(h.hasOwnProperty(n))"function"==typeof(u=h[n])&&(u=u.call(this,r)),s+="/"+n+" "+u+" ",0<=A.internal.acroformPlugin.xForms.indexOf(u)||A.internal.acroformPlugin.xForms.push(u)}else"function"==typeof(u=h)&&(u=u.call(this,r)),s+="/"+n+" "+u,0<=A.internal.acroformPlugin.xForms.indexOf(u)||A.internal.acroformPlugin.xForms.push(u);s+=">>"}i.push({key:"AP",value:"<<\n"+s+">>"})}A.internal.putStream({additionalKeyValues:i}),A.internal.out("endobj")}e&&P.call(this,A.internal.acroformPlugin.xForms)},P=function(t){for(var e in t)if(t.hasOwnProperty(e)){var n=e,r=t[e];A.internal.newObjectDeferredBegin(r&&r.objId,!0),"object"===se(r)&&"function"==typeof r.putStream&&r.putStream(),delete t[n]}},k=function(){if(void 0!==this.internal&&(void 0===this.internal.acroformPlugin||!1===this.internal.acroformPlugin.isInitialized)){if(A=this,M.FieldNum=0,this.internal.acroformPlugin=JSON.parse(JSON.stringify(u)),this.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error("Exception while creating AcroformDictionary");n=A.internal.scaleFactor,A.internal.acroformPlugin.acroFormDictionaryRoot=new E,A.internal.acroformPlugin.acroFormDictionaryRoot._eventID=A.internal.events.subscribe("postPutResources",m),A.internal.events.subscribe("buildDocument",p),A.internal.events.subscribe("putCatalog",g),A.internal.events.subscribe("postPutPages",L),A.internal.acroformPlugin.isInitialized=!0}},I=t.__acroform__.arrayToPdfArray=function(t){if(Array.isArray(t)){for(var e="[",n=0;n<t.length;n++)switch(0!==n&&(e+=" "),se(t[n])){case"boolean":case"number":case"object":e+=t[n].toString();break;case"string":"/"!==t[n].substr(0,1)?e+="("+S(t[n].toString())+")":e+=t[n].toString()}return e+="]"}throw new Error("Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray")};var C=function(t){return(t=t||"").toString(),t="("+S(t)+")"},B=function(){var e;Object.defineProperty(this,"objId",{configurable:!0,get:function(){if(e||(e=A.internal.newObjectDeferred()),!e)throw new Error("AcroFormPDFObject: Couldn't create Object ID");return e},set:function(t){e=t}})};B.prototype.toString=function(){return this.objId+" 0 R"},B.prototype.putStream=function(){var t=this.getKeyValueListForStream();A.internal.putStream({data:this.stream,additionalKeyValues:t}),A.internal.out("endobj")},B.prototype.getKeyValueListForStream=function(){return function(t){var e=[],n=Object.getOwnPropertyNames(t).filter(function(t){return"content"!=t&&"appearanceStreamContent"!=t&&"_"!=t.substring(0,1)});for(var r in n)if(!1===Object.getOwnPropertyDescriptor(t,n[r]).configurable){var i=n[r],o=t[i];o&&(Array.isArray(o)?e.push({key:i,value:I(o)}):o instanceof B?e.push({key:i,value:o.objId+" 0 R"}):"function"!=typeof o&&e.push({key:i,value:o}))}return e}(this)};var j=function(){B.call(this),Object.defineProperty(this,"Type",{value:"/XObject",configurable:!1,writeable:!0}),Object.defineProperty(this,"Subtype",{value:"/Form",configurable:!1,writeable:!0}),Object.defineProperty(this,"FormType",{value:1,configurable:!1,writeable:!0});var e,n=[];Object.defineProperty(this,"BBox",{configurable:!1,writeable:!0,get:function(){return n},set:function(t){n=t}}),Object.defineProperty(this,"Resources",{value:"2 0 R",configurable:!1,writeable:!0}),Object.defineProperty(this,"stream",{enumerable:!1,configurable:!0,set:function(t){e=t.trim()},get:function(){return e||null}})};r(j,B);var E=function(){B.call(this);var e,t=[];Object.defineProperty(this,"Kids",{enumerable:!1,configurable:!0,get:function(){return 0<t.length?t:void 0}}),Object.defineProperty(this,"Fields",{enumerable:!1,configurable:!1,get:function(){return t}}),Object.defineProperty(this,"DA",{enumerable:!1,configurable:!1,get:function(){if(e)return"("+e+")"},set:function(t){e=t}})};r(E,B);var M=function t(){B.call(this);var e=4;Object.defineProperty(this,"F",{enumerable:!1,configurable:!1,get:function(){return e},set:function(t){if(isNaN(t))throw new Error('Invalid value "'+t+'" for attribute F supplied.');e=t}}),Object.defineProperty(this,"showWhenPrinted",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(e,3))},set:function(t){!0===Boolean(t)?this.F=x(e,3):this.F=N(e,3)}});var n=0;Object.defineProperty(this,"Ff",{enumerable:!1,configurable:!1,get:function(){return n},set:function(t){if(isNaN(t))throw new Error('Invalid value "'+t+'" for attribute Ff supplied.');n=t}});var r=[];Object.defineProperty(this,"Rect",{enumerable:!1,configurable:!1,get:function(){if(0!==r.length)return r},set:function(t){r=void 0!==t?t:[]}}),Object.defineProperty(this,"x",{enumerable:!0,configurable:!0,get:function(){return!r||isNaN(r[0])?0:w(r[0])},set:function(t){r[0]=v(t)}}),Object.defineProperty(this,"y",{enumerable:!0,configurable:!0,get:function(){return!r||isNaN(r[1])?0:w(r[1])},set:function(t){r[1]=v(t)}}),Object.defineProperty(this,"width",{enumerable:!0,configurable:!0,get:function(){return!r||isNaN(r[2])?0:w(r[2])},set:function(t){r[2]=v(t)}}),Object.defineProperty(this,"height",{enumerable:!0,configurable:!0,get:function(){return!r||isNaN(r[3])?0:w(r[3])},set:function(t){r[3]=v(t)}});var i="";Object.defineProperty(this,"FT",{enumerable:!0,configurable:!1,get:function(){return i},set:function(t){switch(t){case"/Btn":case"/Tx":case"/Ch":case"/Sig":i=t;break;default:throw new Error('Invalid value "'+t+'" for attribute FT supplied.')}}});var o=null;Object.defineProperty(this,"T",{enumerable:!0,configurable:!1,get:function(){if(!o||o.length<1){if(this instanceof H)return;o="FieldObject"+t.FieldNum++}return"("+S(o)+")"},set:function(t){o=t.toString()}}),Object.defineProperty(this,"fieldName",{configurable:!0,enumerable:!0,get:function(){return o},set:function(t){o=t}});var a="helvetica";Object.defineProperty(this,"fontName",{enumerable:!0,configurable:!0,get:function(){return a},set:function(t){a=t}});var s="normal";Object.defineProperty(this,"fontStyle",{enumerable:!0,configurable:!0,get:function(){return s},set:function(t){s=t}});var l=0;Object.defineProperty(this,"fontSize",{enumerable:!0,configurable:!0,get:function(){return w(l)},set:function(t){l=v(t)}});var h=50;Object.defineProperty(this,"maxFontSize",{enumerable:!0,configurable:!0,get:function(){return w(h)},set:function(t){h=v(t)}});var u="black";Object.defineProperty(this,"color",{enumerable:!0,configurable:!0,get:function(){return u},set:function(t){u=t}});var c="/F1 0 Tf 0 g";Object.defineProperty(this,"DA",{enumerable:!0,configurable:!1,get:function(){if(!(!c||this instanceof H||this instanceof V))return C(c)},set:function(t){t=t.toString(),c=t}});var f=null;Object.defineProperty(this,"DV",{enumerable:!1,configurable:!1,get:function(){if(f)return this instanceof D==!1?C(f):f},set:function(t){t=t.toString(),f=this instanceof D==!1?"("===t.substr(0,1)?y(t.substr(1,t.length-2)):y(t):t}}),Object.defineProperty(this,"defaultValue",{enumerable:!0,configurable:!0,get:function(){return this instanceof D==!0?y(f.substr(1,f.length-1)):f},set:function(t){t=t.toString(),f=this instanceof D==!0?"/"+t:t}});var p=null;Object.defineProperty(this,"V",{enumerable:!1,configurable:!1,get:function(){if(p)return this instanceof D==!1?C(p):p},set:function(t){t=t.toString(),p=this instanceof D==!1?"("===t.substr(0,1)?y(t.substr(1,t.length-2)):y(t):t}}),Object.defineProperty(this,"value",{enumerable:!0,configurable:!0,get:function(){return this instanceof D==!0?y(p.substr(1,p.length-1)):p},set:function(t){t=t.toString(),p=this instanceof D==!0?"/"+t:t}}),Object.defineProperty(this,"hasAnnotation",{enumerable:!0,configurable:!0,get:function(){return this.Rect}}),Object.defineProperty(this,"Type",{enumerable:!0,configurable:!1,get:function(){return this.hasAnnotation?"/Annot":null}}),Object.defineProperty(this,"Subtype",{enumerable:!0,configurable:!1,get:function(){return this.hasAnnotation?"/Widget":null}});var d,g=!1;Object.defineProperty(this,"hasAppearanceStream",{enumerable:!0,configurable:!0,writeable:!0,get:function(){return g},set:function(t){t=Boolean(t),g=t}}),Object.defineProperty(this,"page",{enumerable:!0,configurable:!0,writeable:!0,get:function(){if(d)return d},set:function(t){d=t}}),Object.defineProperty(this,"readOnly",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,1))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,1):this.Ff=N(this.Ff,1)}}),Object.defineProperty(this,"required",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,2))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,2):this.Ff=N(this.Ff,2)}}),Object.defineProperty(this,"noExport",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,3))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,3):this.Ff=N(this.Ff,3)}});var m=null;Object.defineProperty(this,"Q",{enumerable:!0,configurable:!1,get:function(){if(null!==m)return m},set:function(t){if(-1===[0,1,2].indexOf(t))throw new Error('Invalid value "'+t+'" for attribute Q supplied.');m=t}}),Object.defineProperty(this,"textAlign",{get:function(){var t="left";switch(m){case 0:default:t="left";break;case 1:t="center";break;case 2:t="right"}return t},configurable:!0,enumerable:!0,set:function(t){switch(t){case"right":case 2:m=2;break;case"center":case 1:m=1;break;case"left":case 0:default:m=0}}})};r(M,B);var O=function(){M.call(this),this.FT="/Ch",this.V="()",this.fontName="zapfdingbats";var e=0;Object.defineProperty(this,"TI",{enumerable:!0,configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,"topIndex",{enumerable:!0,configurable:!0,get:function(){return e},set:function(t){e=t}});var r=[];Object.defineProperty(this,"Opt",{enumerable:!0,configurable:!1,get:function(){return I(r)},set:function(t){var e,n;n=[],"string"==typeof(e=t)&&(n=function(t,e,n){n||(n=1);for(var r,i=[];r=e.exec(t);)i.push(r[n]);return i}(e,/\((.*?)\)/g)),r=n}}),this.getOptions=function(){return r},this.setOptions=function(t){r=t,this.sort&&r.sort()},this.addOption=function(t){t=(t=t||"").toString(),r.push(t),this.sort&&r.sort()},this.removeOption=function(t,e){for(e=e||!1,t=(t=t||"").toString();-1!==r.indexOf(t)&&(r.splice(r.indexOf(t),1),!1!==e););},Object.defineProperty(this,"combo",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,18))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,18):this.Ff=N(this.Ff,18)}}),Object.defineProperty(this,"edit",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,19))},set:function(t){!0===this.combo&&(!0===Boolean(t)?this.Ff=x(this.Ff,19):this.Ff=N(this.Ff,19))}}),Object.defineProperty(this,"sort",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,20))},set:function(t){!0===Boolean(t)?(this.Ff=x(this.Ff,20),r.sort()):this.Ff=N(this.Ff,20)}}),Object.defineProperty(this,"multiSelect",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,22))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,22):this.Ff=N(this.Ff,22)}}),Object.defineProperty(this,"doNotSpellCheck",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,23))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,23):this.Ff=N(this.Ff,23)}}),Object.defineProperty(this,"commitOnSelChange",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,27))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,27):this.Ff=N(this.Ff,27)}}),this.hasAppearanceStream=!1};r(O,M);var q=function(){O.call(this),this.fontName="helvetica",this.combo=!1};r(q,O);var T=function(){q.call(this),this.combo=!0};r(T,q);var R=function(){T.call(this),this.edit=!0};r(R,T);var D=function(){M.call(this),this.FT="/Btn",Object.defineProperty(this,"noToggleToOff",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,15))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,15):this.Ff=N(this.Ff,15)}}),Object.defineProperty(this,"radio",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,16))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,16):this.Ff=N(this.Ff,16)}}),Object.defineProperty(this,"pushButton",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,17))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,17):this.Ff=N(this.Ff,17)}}),Object.defineProperty(this,"radioIsUnison",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,26))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,26):this.Ff=N(this.Ff,26)}});var e,n={};Object.defineProperty(this,"MK",{enumerable:!1,configurable:!1,get:function(){if(0!==Object.keys(n).length){var t,e=[];for(t in e.push("<<"),n)e.push("/"+t+" ("+n[t]+")");return e.push(">>"),e.join("\n")}},set:function(t){"object"===se(t)&&(n=t)}}),Object.defineProperty(this,"caption",{enumerable:!0,configurable:!0,get:function(){return n.CA||""},set:function(t){"string"==typeof t&&(n.CA=t)}}),Object.defineProperty(this,"AS",{enumerable:!1,configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,"appearanceState",{enumerable:!0,configurable:!0,get:function(){return e.substr(1,e.length-1)},set:function(t){e="/"+t}})};r(D,M);var U=function(){D.call(this),this.pushButton=!0};r(U,D);var z=function(){D.call(this),this.radio=!0,this.pushButton=!1;var e=[];Object.defineProperty(this,"Kids",{enumerable:!0,configurable:!1,get:function(){return e},set:function(t){e=void 0!==t?t:[]}})};r(z,D);var H=function(){var e,n;M.call(this),Object.defineProperty(this,"Parent",{enumerable:!1,configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,"optionName",{enumerable:!1,configurable:!0,get:function(){return n},set:function(t){n=t}});var r,i={};Object.defineProperty(this,"MK",{enumerable:!1,configurable:!1,get:function(){var t,e=[];for(t in e.push("<<"),i)e.push("/"+t+" ("+i[t]+")");return e.push(">>"),e.join("\n")},set:function(t){"object"===se(t)&&(i=t)}}),Object.defineProperty(this,"caption",{enumerable:!0,configurable:!0,get:function(){return i.CA||""},set:function(t){"string"==typeof t&&(i.CA=t)}}),Object.defineProperty(this,"AS",{enumerable:!1,configurable:!1,get:function(){return r},set:function(t){r=t}}),Object.defineProperty(this,"appearanceState",{enumerable:!0,configurable:!0,get:function(){return r.substr(1,r.length-1)},set:function(t){r="/"+t}}),this.optionName=name,this.caption="l",this.appearanceState="Off",this._AppearanceType=Y.RadioButton.Circle,this.appearanceStreamContent=this._AppearanceType.createAppearanceStream(name)};r(H,M),z.prototype.setAppearance=function(t){if(!("createAppearanceStream"in t&&"getCA"in t))throw new Error("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");for(var e in this.Kids)if(this.Kids.hasOwnProperty(e)){var n=this.Kids[e];n.appearanceStreamContent=t.createAppearanceStream(n.optionName),n.caption=t.getCA()}},z.prototype.createOption=function(t){this.Kids.length;var e=new H;return e.Parent=this,e.optionName=t,this.Kids.push(e),J.call(this,e),e};var W=function(){D.call(this),this.fontName="zapfdingbats",this.caption="3",this.appearanceState="On",this.value="On",this.textAlign="center",this.appearanceStreamContent=Y.CheckBox.createAppearanceStream()};r(W,D);var V=function(){M.call(this),this.FT="/Tx",Object.defineProperty(this,"multiline",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,13))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,13):this.Ff=N(this.Ff,13)}}),Object.defineProperty(this,"fileSelect",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,21))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,21):this.Ff=N(this.Ff,21)}}),Object.defineProperty(this,"doNotSpellCheck",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,23))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,23):this.Ff=N(this.Ff,23)}}),Object.defineProperty(this,"doNotScroll",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,24))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,24):this.Ff=N(this.Ff,24)}}),Object.defineProperty(this,"comb",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,25))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,25):this.Ff=N(this.Ff,25)}}),Object.defineProperty(this,"richText",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,26))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,26):this.Ff=N(this.Ff,26)}});var e=null;Object.defineProperty(this,"MaxLen",{enumerable:!0,configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,"maxLength",{enumerable:!0,configurable:!0,get:function(){return e},set:function(t){Number.isInteger(t)&&(e=t)}}),Object.defineProperty(this,"hasAppearanceStream",{enumerable:!0,configurable:!0,get:function(){return this.V||this.DV}})};r(V,M);var G=function(){V.call(this),Object.defineProperty(this,"password",{enumerable:!0,configurable:!0,get:function(){return Boolean(b(this.Ff,14))},set:function(t){!0===Boolean(t)?this.Ff=x(this.Ff,14):this.Ff=N(this.Ff,14)}}),this.password=!0};r(G,V);var Y={CheckBox:{createAppearanceStream:function(){return{N:{On:Y.CheckBox.YesNormal},D:{On:Y.CheckBox.YesPushDown,Off:Y.CheckBox.OffPushDown}}},YesPushDown:function(t){var e=l(t),n=[],r=A.internal.getFont(t.fontName,t.fontStyle).id,i=A.__private__.encodeColorString(t.color),o=h(t,t.caption);return n.push("0.749023 g"),n.push("0 0 "+_(Y.internal.getWidth(t))+" "+_(Y.internal.getHeight(t))+" re"),n.push("f"),n.push("BMC"),n.push("q"),n.push("0 0 1 rg"),n.push("/"+r+" "+_(o.fontSize)+" Tf "+i),n.push("BT"),n.push(o.text),n.push("ET"),n.push("Q"),n.push("EMC"),e.stream=n.join("\n"),e},YesNormal:function(t){var e=l(t),n=A.internal.getFont(t.fontName,t.fontStyle).id,r=A.__private__.encodeColorString(t.color),i=[],o=Y.internal.getHeight(t),a=Y.internal.getWidth(t),s=h(t,t.caption);return i.push("1 g"),i.push("0 0 "+_(a)+" "+_(o)+" re"),i.push("f"),i.push("q"),i.push("0 0 1 rg"),i.push("0 0 "+_(a-1)+" "+_(o-1)+" re"),i.push("W"),i.push("n"),i.push("0 g"),i.push("BT"),i.push("/"+n+" "+_(s.fontSize)+" Tf "+r),i.push(s.text),i.push("ET"),i.push("Q"),e.stream=i.join("\n"),e},OffPushDown:function(t){var e=l(t),n=[];return n.push("0.749023 g"),n.push("0 0 "+_(Y.internal.getWidth(t))+" "+_(Y.internal.getHeight(t))+" re"),n.push("f"),e.stream=n.join("\n"),e}},RadioButton:{Circle:{createAppearanceStream:function(t){var e={D:{Off:Y.RadioButton.Circle.OffPushDown},N:{}};return e.N[t]=Y.RadioButton.Circle.YesNormal,e.D[t]=Y.RadioButton.Circle.YesPushDown,e},getCA:function(){return"l"},YesNormal:function(t){var e=l(t),n=[],r=Y.internal.getWidth(t)<=Y.internal.getHeight(t)?Y.internal.getWidth(t)/4:Y.internal.getHeight(t)/4;r=Number((.9*r).toFixed(5));var i=Y.internal.Bezier_C,o=Number((r*i).toFixed(5));return n.push("q"),n.push("1 0 0 1 "+s(Y.internal.getWidth(t)/2)+" "+s(Y.internal.getHeight(t)/2)+" cm"),n.push(r+" 0 m"),n.push(r+" "+o+" "+o+" "+r+" 0 "+r+" c"),n.push("-"+o+" "+r+" -"+r+" "+o+" -"+r+" 0 c"),n.push("-"+r+" -"+o+" -"+o+" -"+r+" 0 -"+r+" c"),n.push(o+" -"+r+" "+r+" -"+o+" "+r+" 0 c"),n.push("f"),n.push("Q"),e.stream=n.join("\n"),e},YesPushDown:function(t){var e=l(t),n=[],r=Y.internal.getWidth(t)<=Y.internal.getHeight(t)?Y.internal.getWidth(t)/4:Y.internal.getHeight(t)/4,i=(r=Number((.9*r).toFixed(5)),Number((2*r).toFixed(5))),o=Number((i*Y.internal.Bezier_C).toFixed(5)),a=Number((r*Y.internal.Bezier_C).toFixed(5));return n.push("0.749023 g"),n.push("q"),n.push("1 0 0 1 "+s(Y.internal.getWidth(t)/2)+" "+s(Y.internal.getHeight(t)/2)+" cm"),n.push(i+" 0 m"),n.push(i+" "+o+" "+o+" "+i+" 0 "+i+" c"),n.push("-"+o+" "+i+" -"+i+" "+o+" -"+i+" 0 c"),n.push("-"+i+" -"+o+" -"+o+" -"+i+" 0 -"+i+" c"),n.push(o+" -"+i+" "+i+" -"+o+" "+i+" 0 c"),n.push("f"),n.push("Q"),n.push("0 g"),n.push("q"),n.push("1 0 0 1 "+s(Y.internal.getWidth(t)/2)+" "+s(Y.internal.getHeight(t)/2)+" cm"),n.push(r+" 0 m"),n.push(r+" "+a+" "+a+" "+r+" 0 "+r+" c"),n.push("-"+a+" "+r+" -"+r+" "+a+" -"+r+" 0 c"),n.push("-"+r+" -"+a+" -"+a+" -"+r+" 0 -"+r+" c"),n.push(a+" -"+r+" "+r+" -"+a+" "+r+" 0 c"),n.push("f"),n.push("Q"),e.stream=n.join("\n"),e},OffPushDown:function(t){var e=l(t),n=[],r=Y.internal.getWidth(t)<=Y.internal.getHeight(t)?Y.internal.getWidth(t)/4:Y.internal.getHeight(t)/4,i=(r=Number((.9*r).toFixed(5)),Number((2*r).toFixed(5))),o=Number((i*Y.internal.Bezier_C).toFixed(5));return n.push("0.749023 g"),n.push("q"),n.push("1 0 0 1 "+s(Y.internal.getWidth(t)/2)+" "+s(Y.internal.getHeight(t)/2)+" cm"),n.push(i+" 0 m"),n.push(i+" "+o+" "+o+" "+i+" 0 "+i+" c"),n.push("-"+o+" "+i+" -"+i+" "+o+" -"+i+" 0 c"),n.push("-"+i+" -"+o+" -"+o+" -"+i+" 0 -"+i+" c"),n.push(o+" -"+i+" "+i+" -"+o+" "+i+" 0 c"),n.push("f"),n.push("Q"),e.stream=n.join("\n"),e}},Cross:{createAppearanceStream:function(t){var e={D:{Off:Y.RadioButton.Cross.OffPushDown},N:{}};return e.N[t]=Y.RadioButton.Cross.YesNormal,e.D[t]=Y.RadioButton.Cross.YesPushDown,e},getCA:function(){return"8"},YesNormal:function(t){var e=l(t),n=[],r=Y.internal.calculateCross(t);return n.push("q"),n.push("1 1 "+_(Y.internal.getWidth(t)-2)+" "+_(Y.internal.getHeight(t)-2)+" re"),n.push("W"),n.push("n"),n.push(_(r.x1.x)+" "+_(r.x1.y)+" m"),n.push(_(r.x2.x)+" "+_(r.x2.y)+" l"),n.push(_(r.x4.x)+" "+_(r.x4.y)+" m"),n.push(_(r.x3.x)+" "+_(r.x3.y)+" l"),n.push("s"),n.push("Q"),e.stream=n.join("\n"),e},YesPushDown:function(t){var e=l(t),n=Y.internal.calculateCross(t),r=[];return r.push("0.749023 g"),r.push("0 0 "+_(Y.internal.getWidth(t))+" "+_(Y.internal.getHeight(t))+" re"),r.push("f"),r.push("q"),r.push("1 1 "+_(Y.internal.getWidth(t)-2)+" "+_(Y.internal.getHeight(t)-2)+" re"),r.push("W"),r.push("n"),r.push(_(n.x1.x)+" "+_(n.x1.y)+" m"),r.push(_(n.x2.x)+" "+_(n.x2.y)+" l"),r.push(_(n.x4.x)+" "+_(n.x4.y)+" m"),r.push(_(n.x3.x)+" "+_(n.x3.y)+" l"),r.push("s"),r.push("Q"),e.stream=r.join("\n"),e},OffPushDown:function(t){var e=l(t),n=[];return n.push("0.749023 g"),n.push("0 0 "+_(Y.internal.getWidth(t))+" "+_(Y.internal.getHeight(t))+" re"),n.push("f"),e.stream=n.join("\n"),e}}},createDefaultAppearanceStream:function(t){var e=A.internal.getFont(t.fontName,t.fontStyle).id,n=A.__private__.encodeColorString(t.color);return"/"+e+" "+t.fontSize+" Tf "+n}};Y.internal={Bezier_C:.551915024494,calculateCross:function(t){var e=Y.internal.getWidth(t),n=Y.internal.getHeight(t),r=Math.min(e,n);return{x1:{x:(e-r)/2,y:(n-r)/2+r},x2:{x:(e-r)/2+r,y:(n-r)/2},x3:{x:(e-r)/2,y:(n-r)/2},x4:{x:(e-r)/2+r,y:(n-r)/2+r}}}},Y.internal.getWidth=function(t){var e=0;return"object"===se(t)&&(e=v(t.Rect[2])),e},Y.internal.getHeight=function(t){var e=0;return"object"===se(t)&&(e=v(t.Rect[3])),e};var J=t.addField=function(t){if(k.call(this),!(t instanceof M))throw new Error("Invalid argument passed to jsPDF.addField.");return function(t){A.internal.acroformPlugin.printedOut&&(A.internal.acroformPlugin.printedOut=!1,A.internal.acroformPlugin.acroFormDictionaryRoot=null),A.internal.acroformPlugin.acroFormDictionaryRoot||k.call(A),A.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(t)}.call(this,t),t.page=A.internal.getCurrentPageInfo().pageNumber,this};t.addButton=function(t){if(t instanceof D==!1)throw new Error("Invalid argument passed to jsPDF.addButton.");return J.call(this,t)},t.addTextField=function(t){if(t instanceof V==!1)throw new Error("Invalid argument passed to jsPDF.addTextField.");return J.call(this,t)},t.addChoiceField=function(t){if(t instanceof O==!1)throw new Error("Invalid argument passed to jsPDF.addChoiceField.");return J.call(this,t)};"object"==se(e)&&void 0===e.ChoiceField&&void 0===e.ListBox&&void 0===e.ComboBox&&void 0===e.EditBox&&void 0===e.Button&&void 0===e.PushButton&&void 0===e.RadioButton&&void 0===e.CheckBox&&void 0===e.TextField&&void 0===e.PasswordField?(e.ChoiceField=O,e.ListBox=q,e.ComboBox=T,e.EditBox=R,e.Button=D,e.PushButton=U,e.RadioButton=z,e.CheckBox=W,e.TextField=V,e.PasswordField=G,e.AcroForm={Appearance:Y}):console.warn("AcroForm-Classes are not populated into global-namespace, because the class-Names exist already."),t.AcroFormChoiceField=O,t.AcroFormListBox=q,t.AcroFormComboBox=T,t.AcroFormEditBox=R,t.AcroFormButton=D,t.AcroFormPushButton=U,t.AcroFormRadioButton=z,t.AcroFormCheckBox=W,t.AcroFormTextField=V,t.AcroFormPasswordField=G,t.AcroFormAppearance=Y,t.AcroForm={ChoiceField:O,ListBox:q,ComboBox:T,EditBox:R,Button:D,PushButton:U,RadioButton:z,CheckBox:W,TextField:V,PasswordField:G,Appearance:Y}})((window.tmp=lt).API,"undefined"!=typeof window&&window||"undefined"!=typeof global&&global),
  225. /** @license
  226. * jsPDF addImage plugin
  227. * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/
  228. * 2013 Chris Dowling, https://github.com/gingerchris
  229. * 2013 Trinh Ho, https://github.com/ineedfat
  230. * 2013 Edwin Alejandro Perez, https://github.com/eaparango
  231. * 2013 Norah Smith, https://github.com/burnburnrocket
  232. * 2014 Diego Casorran, https://github.com/diegocr
  233. * 2014 James Robb, https://github.com/jamesbrobb
  234. *
  235. *
  236. */
  237. function(x){var N="addImage_",l={PNG:[[137,80,78,71]],TIFF:[[77,77,0,42],[73,73,42,0]],JPEG:[[255,216,255,224,void 0,void 0,74,70,73,70,0],[255,216,255,225,void 0,void 0,69,120,105,102,0,0]],JPEG2000:[[0,0,0,12,106,80,32,32]],GIF87a:[[71,73,70,56,55,97]],GIF89a:[[71,73,70,56,57,97]],BMP:[[66,77],[66,65],[67,73],[67,80],[73,67],[80,84]]},h=x.getImageFileTypeByImageData=function(t,e){var n,r;e=e||"UNKNOWN";var i,o,a,s="UNKNOWN";for(a in x.isArrayBufferView(t)&&(t=x.arrayBufferToBinaryString(t)),l)for(i=l[a],n=0;n<i.length;n+=1){for(o=!0,r=0;r<i[n].length;r+=1)if(void 0!==i[n][r]&&i[n][r]!==t.charCodeAt(r)){o=!1;break}if(!0===o){s=a;break}}return"UNKNOWN"===s&&"UNKNOWN"!==e&&(console.warn('FileType of Image not recognized. Processing image as "'+e+'".'),s=e),s},n=function t(e){for(var n=this.internal.newObject(),r=this.internal.write,i=this.internal.putStream,o=(0,this.internal.getFilters)();-1!==o.indexOf("FlateEncode");)o.splice(o.indexOf("FlateEncode"),1);e.n=n;var a=[];if(a.push({key:"Type",value:"/XObject"}),a.push({key:"Subtype",value:"/Image"}),a.push({key:"Width",value:e.w}),a.push({key:"Height",value:e.h}),e.cs===this.color_spaces.INDEXED?a.push({key:"ColorSpace",value:"[/Indexed /DeviceRGB "+(e.pal.length/3-1)+" "+("smask"in e?n+2:n+1)+" 0 R]"}):(a.push({key:"ColorSpace",value:"/"+e.cs}),e.cs===this.color_spaces.DEVICE_CMYK&&a.push({key:"Decode",value:"[1 0 1 0 1 0 1 0]"})),a.push({key:"BitsPerComponent",value:e.bpc}),"dp"in e&&a.push({key:"DecodeParms",value:"<<"+e.dp+">>"}),"trns"in e&&e.trns.constructor==Array){for(var s="",l=0,h=e.trns.length;l<h;l++)s+=e.trns[l]+" "+e.trns[l]+" ";a.push({key:"Mask",value:"["+s+"]"})}"smask"in e&&a.push({key:"SMask",value:n+1+" 0 R"});var u=void 0!==e.f?["/"+e.f]:void 0;if(i({data:e.data,additionalKeyValues:a,alreadyAppliedFilters:u}),r("endobj"),"smask"in e){var c="/Predictor "+e.p+" /Colors 1 /BitsPerComponent "+e.bpc+" /Columns "+e.w,f={w:e.w,h:e.h,cs:"DeviceGray",bpc:e.bpc,dp:c,data:e.smask};"f"in e&&(f.f=e.f),t.call(this,f)}e.cs===this.color_spaces.INDEXED&&(this.internal.newObject(),i({data:this.arrayBufferToBinaryString(new Uint8Array(e.pal))}),r("endobj"))},L=function(){var t=this.internal.collections[N+"images"];for(var e in t)n.call(this,t[e])},A=function(){var t,e=this.internal.collections[N+"images"],n=this.internal.write;for(var r in e)n("/I"+(t=e[r]).i,t.n,"0","R")},S=function(t){return"function"==typeof x["process"+t.toUpperCase()]},_=function(t){return"object"===se(t)&&1===t.nodeType},F=function(t,e){if("IMG"===t.nodeName&&t.hasAttribute("src")){var n=""+t.getAttribute("src");if(0===n.indexOf("data:image/"))return unescape(n);var r=x.loadFile(n);if(void 0!==r)return btoa(r)}if("CANVAS"===t.nodeName){var i=t;return t.toDataURL("image/jpeg",1)}(i=document.createElement("canvas")).width=t.clientWidth||t.width,i.height=t.clientHeight||t.height;var o=i.getContext("2d");if(!o)throw"addImage requires canvas to be supported by browser.";return o.drawImage(t,0,0,i.width,i.height),i.toDataURL("png"==(""+e).toLowerCase()?"image/png":"image/jpeg")},P=function(t,e){var n;if(e)for(var r in e)if(t===e[r].alias){n=e[r];break}return n};x.color_spaces={DEVICE_RGB:"DeviceRGB",DEVICE_GRAY:"DeviceGray",DEVICE_CMYK:"DeviceCMYK",CAL_GREY:"CalGray",CAL_RGB:"CalRGB",LAB:"Lab",ICC_BASED:"ICCBased",INDEXED:"Indexed",PATTERN:"Pattern",SEPARATION:"Separation",DEVICE_N:"DeviceN"},x.decode={DCT_DECODE:"DCTDecode",FLATE_DECODE:"FlateDecode",LZW_DECODE:"LZWDecode",JPX_DECODE:"JPXDecode",JBIG2_DECODE:"JBIG2Decode",ASCII85_DECODE:"ASCII85Decode",ASCII_HEX_DECODE:"ASCIIHexDecode",RUN_LENGTH_DECODE:"RunLengthDecode",CCITT_FAX_DECODE:"CCITTFaxDecode"},x.image_compression={NONE:"NONE",FAST:"FAST",MEDIUM:"MEDIUM",SLOW:"SLOW"},x.sHashCode=function(t){var e,n=0;if(0===(t=t||"").length)return n;for(e=0;e<t.length;e++)n=(n<<5)-n+t.charCodeAt(e),n|=0;return n},x.isString=function(t){return"string"==typeof t},x.validateStringAsBase64=function(t){(t=t||"").toString().trim();var e=!0;return 0===t.length&&(e=!1),t.length%4!=0&&(e=!1),!1===/^[A-Za-z0-9+\/]+$/.test(t.substr(0,t.length-2))&&(e=!1),!1===/^[A-Za-z0-9\/][A-Za-z0-9+\/]|[A-Za-z0-9+\/]=|==$/.test(t.substr(-2))&&(e=!1),e},x.extractInfoFromBase64DataURI=function(t){return/^data:([\w]+?\/([\w]+?));\S*;*base64,(.+)$/g.exec(t)},x.extractImageFromDataUrl=function(t){var e=(t=t||"").split("base64,"),n=null;if(2===e.length){var r=/^data:(\w*\/\w*);*(charset=[\w=-]*)*;*$/.exec(e[0]);Array.isArray(r)&&(n={mimeType:r[1],charset:r[2],data:e[1]})}return n},x.supportsArrayBuffer=function(){return"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array},x.isArrayBuffer=function(t){return!!this.supportsArrayBuffer()&&t instanceof ArrayBuffer},x.isArrayBufferView=function(t){return!!this.supportsArrayBuffer()&&("undefined"!=typeof Uint32Array&&(t instanceof Int8Array||t instanceof Uint8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array))},x.binaryStringToUint8Array=function(t){for(var e=t.length,n=new Uint8Array(e),r=0;r<e;r++)n[r]=t.charCodeAt(r);return n},x.arrayBufferToBinaryString=function(t){if("function"==typeof atob)return atob(this.arrayBufferToBase64(t))},x.arrayBufferToBase64=function(t){for(var e,n="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(t),o=i.byteLength,a=o%3,s=o-a,l=0;l<s;l+=3)n+=r[(16515072&(e=i[l]<<16|i[l+1]<<8|i[l+2]))>>18]+r[(258048&e)>>12]+r[(4032&e)>>6]+r[63&e];return 1==a?n+=r[(252&(e=i[s]))>>2]+r[(3&e)<<4]+"==":2==a&&(n+=r[(64512&(e=i[s]<<8|i[s+1]))>>10]+r[(1008&e)>>4]+r[(15&e)<<2]+"="),n},x.createImageInfo=function(t,e,n,r,i,o,a,s,l,h,u,c,f){var p={alias:s,w:e,h:n,cs:r,bpc:i,i:a,data:t};return o&&(p.f=o),l&&(p.dp=l),h&&(p.trns=h),u&&(p.pal=u),c&&(p.smask=c),f&&(p.p=f),p},x.addImage=function(t,e,n,r,i,o,a,s,l){var h="";if("string"!=typeof e){var u=o;o=i,i=r,r=n,n=e,e=u}if("object"===se(t)&&!_(t)&&"imageData"in t){var c=t;t=c.imageData,e=c.format||e||"UNKNOWN",n=c.x||n||0,r=c.y||r||0,i=c.w||i,o=c.h||o,a=c.alias||a,s=c.compression||s,l=c.rotation||c.angle||l}var f=this.internal.getFilters();if(void 0===s&&-1!==f.indexOf("FlateEncode")&&(s="SLOW"),"string"==typeof t&&(t=unescape(t)),isNaN(n)||isNaN(r))throw console.error("jsPDF.addImage: Invalid coordinates",arguments),new Error("Invalid coordinates passed to jsPDF.addImage");var p,d,g,m,y,v,w,b=function(){var t=this.internal.collections[N+"images"];return t||(this.internal.collections[N+"images"]=t={},this.internal.events.subscribe("putResources",L),this.internal.events.subscribe("putXobjectDict",A)),t}.call(this);if(!((p=P(t,b))||(_(t)&&(t=F(t,e)),(null==(w=a)||0===w.length)&&(a="string"==typeof(v=t)?x.sHashCode(v):x.isArrayBufferView(v)?x.sHashCode(x.arrayBufferToBinaryString(v)):null),p=P(a,b)))){if(this.isString(t)&&(""!==(h=this.convertStringToImageData(t))?t=h:void 0!==(h=x.loadFile(t))&&(t=h)),e=this.getImageFileTypeByImageData(t,e),!S(e))throw new Error("addImage does not support files of type '"+e+"', please ensure that a plugin for '"+e+"' support is added.");if(this.supportsArrayBuffer()&&(t instanceof Uint8Array||(d=t,t=this.binaryStringToUint8Array(t))),!(p=this["process"+e.toUpperCase()](t,(y=0,(m=b)&&(y=Object.keys?Object.keys(m).length:function(t){var e=0;for(var n in t)t.hasOwnProperty(n)&&e++;return e}(m)),y),a,((g=s)&&"string"==typeof g&&(g=g.toUpperCase()),g in x.image_compression?g:x.image_compression.NONE),d)))throw new Error("An unknown error occurred whilst processing the image")}return function(t,e,n,r,i,o,a,s){var l=function(t,e,n){return t||e||(e=t=-96),t<0&&(t=-1*n.w*72/t/this.internal.scaleFactor),e<0&&(e=-1*n.h*72/e/this.internal.scaleFactor),0===t&&(t=e*n.w/n.h),0===e&&(e=t*n.h/n.w),[t,e]}.call(this,n,r,i),h=this.internal.getCoordinateString,u=this.internal.getVerticalCoordinateString;if(n=l[0],r=l[1],a[o]=i,s){s*=Math.PI/180;var c=Math.cos(s),f=Math.sin(s),p=function(t){return t.toFixed(4)},d=[p(c),p(f),p(-1*f),p(c),0,0,"cm"]}this.internal.write("q"),s?(this.internal.write([1,"0","0",1,h(t),u(e+r),"cm"].join(" ")),this.internal.write(d.join(" ")),this.internal.write([h(n),"0","0",h(r),"0","0","cm"].join(" "))):this.internal.write([h(n),"0","0",h(r),h(t),u(e+r),"cm"].join(" ")),this.internal.write("/I"+i.i+" Do"),this.internal.write("Q")}.call(this,n,r,i,o,p,p.i,b,l),this},x.convertStringToImageData=function(t){var e,n="";if(this.isString(t)){var r;e=null!==(r=this.extractImageFromDataUrl(t))?r.data:t;try{n=atob(e)}catch(t){throw x.validateStringAsBase64(e)?new Error("atob-Error in jsPDF.convertStringToImageData "+t.message):new Error("Supplied Data is not a valid base64-String jsPDF.convertStringToImageData ")}}return n};var u=function(t,e){return t.subarray(e,e+5)};x.processJPEG=function(t,e,n,r,i,o){var a,s=this.decode.DCT_DECODE;if(!this.isString(t)&&!this.isArrayBuffer(t)&&!this.isArrayBufferView(t))return null;if(this.isString(t)&&(a=function(t){var e;if("JPEG"!==h(t))throw new Error("getJpegSize requires a binary string jpeg file");for(var n=256*t.charCodeAt(4)+t.charCodeAt(5),r=4,i=t.length;r<i;){if(r+=n,255!==t.charCodeAt(r))throw new Error("getJpegSize could not find the size of the image");if(192===t.charCodeAt(r+1)||193===t.charCodeAt(r+1)||194===t.charCodeAt(r+1)||195===t.charCodeAt(r+1)||196===t.charCodeAt(r+1)||197===t.charCodeAt(r+1)||198===t.charCodeAt(r+1)||199===t.charCodeAt(r+1))return e=256*t.charCodeAt(r+5)+t.charCodeAt(r+6),[256*t.charCodeAt(r+7)+t.charCodeAt(r+8),e,t.charCodeAt(r+9)];r+=2,n=256*t.charCodeAt(r)+t.charCodeAt(r+1)}}(t)),this.isArrayBuffer(t)&&(t=new Uint8Array(t)),this.isArrayBufferView(t)&&(a=function(t){if(65496!=(t[0]<<8|t[1]))throw new Error("Supplied data is not a JPEG");for(var e,n=t.length,r=(t[4]<<8)+t[5],i=4;i<n;){if(r=((e=u(t,i+=r))[2]<<8)+e[3],(192===e[1]||194===e[1])&&255===e[0]&&7<r)return{width:((e=u(t,i+5))[2]<<8)+e[3],height:(e[0]<<8)+e[1],numcomponents:e[4]};i+=2}throw new Error("getJpegSizeFromBytes could not find the size of the image")}(t),t=i||this.arrayBufferToBinaryString(t)),void 0===o)switch(a.numcomponents){case 1:o=this.color_spaces.DEVICE_GRAY;break;case 4:o=this.color_spaces.DEVICE_CMYK;break;default:case 3:o=this.color_spaces.DEVICE_RGB}return this.createImageInfo(t,a.width,a.height,o,8,s,e,n)},x.processJPG=function(){return this.processJPEG.apply(this,arguments)},x.getImageProperties=function(t){var e,n,r="";if(_(t)&&(t=F(t)),this.isString(t)&&(""!==(r=this.convertStringToImageData(t))?t=r:void 0!==(r=x.loadFile(t))&&(t=r)),n=this.getImageFileTypeByImageData(t),!S(n))throw new Error("addImage does not support files of type '"+n+"', please ensure that a plugin for '"+n+"' support is added.");if(this.supportsArrayBuffer()&&(t instanceof Uint8Array||(t=this.binaryStringToUint8Array(t))),!(e=this["process"+n.toUpperCase()](t)))throw new Error("An unknown error occurred whilst processing the image");return{fileType:n,width:e.w,height:e.h,colorSpace:e.cs,compressionMode:e.f,bitsPerComponent:e.bpc}}}(lt.API),
  238. /**
  239. * @license
  240. * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
  241. *
  242. * Licensed under the MIT License.
  243. * http://opensource.org/licenses/mit-license
  244. */
  245. t=lt.API,lt.API.events.push(["addPage",function(t){this.internal.getPageInfo(t.pageNumber).pageContext.annotations=[]}]),t.events.push(["putPage",function(t){for(var e=this.internal.getPageInfoByObjId(t.objId),n=t.pageContext.annotations,r=function(t){if(void 0!==t&&""!=t)return!0},i=!1,o=0;o<n.length&&!i;o++)switch((l=n[o]).type){case"link":if(r(l.options.url)||r(l.options.pageNumber)){i=!0;break}case"reference":case"text":case"freetext":i=!0}if(0!=i){this.internal.write("/Annots ["),this.internal.pageSize.height;var a=this.internal.getCoordinateString,s=this.internal.getVerticalCoordinateString;for(o=0;o<n.length;o++){var l;switch((l=n[o]).type){case"reference":this.internal.write(" "+l.object.objId+" 0 R ");break;case"text":var h=this.internal.newAdditionalObject(),u=this.internal.newAdditionalObject(),c=l.title||"Note";m="<</Type /Annot /Subtype /Text "+(p="/Rect ["+a(l.bounds.x)+" "+s(l.bounds.y+l.bounds.h)+" "+a(l.bounds.x+l.bounds.w)+" "+s(l.bounds.y)+"] ")+"/Contents ("+l.contents+")",m+=" /Popup "+u.objId+" 0 R",m+=" /P "+e.objId+" 0 R",m+=" /T ("+c+") >>",h.content=m;var f=h.objId+" 0 R";m="<</Type /Annot /Subtype /Popup "+(p="/Rect ["+a(l.bounds.x+30)+" "+s(l.bounds.y+l.bounds.h)+" "+a(l.bounds.x+l.bounds.w+30)+" "+s(l.bounds.y)+"] ")+" /Parent "+f,l.open&&(m+=" /Open true"),m+=" >>",u.content=m,this.internal.write(h.objId,"0 R",u.objId,"0 R");break;case"freetext":var p="/Rect ["+a(l.bounds.x)+" "+s(l.bounds.y)+" "+a(l.bounds.x+l.bounds.w)+" "+s(l.bounds.y+l.bounds.h)+"] ",d=l.color||"#000000";m="<</Type /Annot /Subtype /FreeText "+p+"/Contents ("+l.contents+")",m+=" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#"+d+")",m+=" /Border [0 0 0]",m+=" >>",this.internal.write(m);break;case"link":if(l.options.name){var g=this.annotations._nameMap[l.options.name];l.options.pageNumber=g.page,l.options.top=g.y}else l.options.top||(l.options.top=0);p="/Rect ["+a(l.x)+" "+s(l.y)+" "+a(l.x+l.w)+" "+s(l.y+l.h)+"] ";var m="";if(l.options.url)m="<</Type /Annot /Subtype /Link "+p+"/Border [0 0 0] /A <</S /URI /URI ("+l.options.url+") >>";else if(l.options.pageNumber)switch(m="<</Type /Annot /Subtype /Link "+p+"/Border [0 0 0] /Dest ["+this.internal.getPageInfo(l.options.pageNumber).objId+" 0 R",l.options.magFactor=l.options.magFactor||"XYZ",l.options.magFactor){case"Fit":m+=" /Fit]";break;case"FitH":m+=" /FitH "+l.options.top+"]";break;case"FitV":l.options.left=l.options.left||0,m+=" /FitV "+l.options.left+"]";break;case"XYZ":default:var y=s(l.options.top);l.options.left=l.options.left||0,void 0===l.options.zoom&&(l.options.zoom=0),m+=" /XYZ "+l.options.left+" "+y+" "+l.options.zoom+"]"}""!=m&&(m+=" >>",this.internal.write(m))}}this.internal.write("]")}}]),t.createAnnotation=function(t){var e=this.internal.getCurrentPageInfo();switch(t.type){case"link":this.link(t.bounds.x,t.bounds.y,t.bounds.w,t.bounds.h,t);break;case"text":case"freetext":e.pageContext.annotations.push(t)}},t.link=function(t,e,n,r,i){this.internal.getCurrentPageInfo().pageContext.annotations.push({x:t,y:e,w:n,h:r,options:i,type:"link"})},t.textWithLink=function(t,e,n,r){var i=this.getTextWidth(t),o=this.internal.getLineHeight()/this.internal.scaleFactor;return this.text(t,e,n),n+=.2*o,this.link(e,n-o,i,o,r),i},t.getTextWidth=function(t){var e=this.internal.getFontSize();return this.getStringUnitWidth(t)*e/this.internal.scaleFactor},
  246. /**
  247. * @license
  248. * Copyright (c) 2017 Aras Abbasi
  249. *
  250. * Licensed under the MIT License.
  251. * http://opensource.org/licenses/mit-license
  252. */
  253. function(t){var h={1569:[65152],1570:[65153,65154],1571:[65155,65156],1572:[65157,65158],1573:[65159,65160],1574:[65161,65162,65163,65164],1575:[65165,65166],1576:[65167,65168,65169,65170],1577:[65171,65172],1578:[65173,65174,65175,65176],1579:[65177,65178,65179,65180],1580:[65181,65182,65183,65184],1581:[65185,65186,65187,65188],1582:[65189,65190,65191,65192],1583:[65193,65194],1584:[65195,65196],1585:[65197,65198],1586:[65199,65200],1587:[65201,65202,65203,65204],1588:[65205,65206,65207,65208],1589:[65209,65210,65211,65212],1590:[65213,65214,65215,65216],1591:[65217,65218,65219,65220],1592:[65221,65222,65223,65224],1593:[65225,65226,65227,65228],1594:[65229,65230,65231,65232],1601:[65233,65234,65235,65236],1602:[65237,65238,65239,65240],1603:[65241,65242,65243,65244],1604:[65245,65246,65247,65248],1605:[65249,65250,65251,65252],1606:[65253,65254,65255,65256],1607:[65257,65258,65259,65260],1608:[65261,65262],1609:[65263,65264,64488,64489],1610:[65265,65266,65267,65268],1649:[64336,64337],1655:[64477],1657:[64358,64359,64360,64361],1658:[64350,64351,64352,64353],1659:[64338,64339,64340,64341],1662:[64342,64343,64344,64345],1663:[64354,64355,64356,64357],1664:[64346,64347,64348,64349],1667:[64374,64375,64376,64377],1668:[64370,64371,64372,64373],1670:[64378,64379,64380,64381],1671:[64382,64383,64384,64385],1672:[64392,64393],1676:[64388,64389],1677:[64386,64387],1678:[64390,64391],1681:[64396,64397],1688:[64394,64395],1700:[64362,64363,64364,64365],1702:[64366,64367,64368,64369],1705:[64398,64399,64400,64401],1709:[64467,64468,64469,64470],1711:[64402,64403,64404,64405],1713:[64410,64411,64412,64413],1715:[64406,64407,64408,64409],1722:[64414,64415],1723:[64416,64417,64418,64419],1726:[64426,64427,64428,64429],1728:[64420,64421],1729:[64422,64423,64424,64425],1733:[64480,64481],1734:[64473,64474],1735:[64471,64472],1736:[64475,64476],1737:[64482,64483],1739:[64478,64479],1740:[64508,64509,64510,64511],1744:[64484,64485,64486,64487],1746:[64430,64431],1747:[64432,64433]},a={65247:{65154:65269,65156:65271,65160:65273,65166:65275},65248:{65154:65270,65156:65272,65160:65274,65166:65276},65165:{65247:{65248:{65258:65010}}},1617:{1612:64606,1613:64607,1614:64608,1615:64609,1616:64610}},e={1612:64606,1613:64607,1614:64608,1615:64609,1616:64610},n=[1570,1571,1573,1575];t.__arabicParser__={};var r=t.__arabicParser__.isInArabicSubstitutionA=function(t){return void 0!==h[t.charCodeAt(0)]},u=t.__arabicParser__.isArabicLetter=function(t){return"string"==typeof t&&/^[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]+$/.test(t)},i=t.__arabicParser__.isArabicEndLetter=function(t){return u(t)&&r(t)&&h[t.charCodeAt(0)].length<=2},o=t.__arabicParser__.isArabicAlfLetter=function(t){return u(t)&&0<=n.indexOf(t.charCodeAt(0))},s=(t.__arabicParser__.arabicLetterHasIsolatedForm=function(t){return u(t)&&r(t)&&1<=h[t.charCodeAt(0)].length},t.__arabicParser__.arabicLetterHasFinalForm=function(t){return u(t)&&r(t)&&2<=h[t.charCodeAt(0)].length}),l=(t.__arabicParser__.arabicLetterHasInitialForm=function(t){return u(t)&&r(t)&&3<=h[t.charCodeAt(0)].length},t.__arabicParser__.arabicLetterHasMedialForm=function(t){return u(t)&&r(t)&&4==h[t.charCodeAt(0)].length}),c=t.__arabicParser__.resolveLigatures=function(t){var e=0,n=a,r=0,i="",o=0;for(e=0;e<t.length;e+=1)void 0!==n[t.charCodeAt(e)]?(o++,"number"==typeof(n=n[t.charCodeAt(e)])&&(r=-1!==(r=f(t.charAt(e),t.charAt(e-o),t.charAt(e+1)))?r:0,i+=String.fromCharCode(n),n=a,o=0),e===t.length-1&&(n=a,i+=t.charAt(e-(o-1)),e-=o-1,o=0)):(n=a,i+=t.charAt(e-o),e-=o,o=0);return i},f=(t.__arabicParser__.isArabicDiacritic=function(t){return void 0!==t&&void 0!==e[t.charCodeAt(0)]},t.__arabicParser__.getCorrectForm=function(t,e,n){return u(t)?!1===r(t)?-1:!s(t)||!u(e)&&!u(n)||!u(n)&&i(e)||i(t)&&!u(e)||i(t)&&o(e)||i(t)&&i(e)?0:l(t)&&u(e)&&!i(e)&&u(n)&&s(n)?3:i(t)||!u(n)?1:2:-1}),p=t.__arabicParser__.processArabic=t.processArabic=function(t){var e=0,n=0,r=0,i="",o="",a="",s=(t=t||"").split("\\s+"),l=[];for(e=0;e<s.length;e+=1){for(l.push(""),n=0;n<s[e].length;n+=1)i=s[e][n],o=s[e][n-1],a=s[e][n+1],u(i)?(r=f(i,o,a),l[e]+=-1!==r?String.fromCharCode(h[i.charCodeAt(0)][r]):i):l[e]+=i;l[e]=c(l[e])}return l.join(" ")};t.events.push(["preProcessText",function(t){var e=t.text,n=(t.x,t.y,t.options||{}),r=(t.mutex,n.lang,[]);if("[object Array]"===Object.prototype.toString.call(e)){var i=0;for(r=[],i=0;i<e.length;i+=1)"[object Array]"===Object.prototype.toString.call(e[i])?r.push([p(e[i][0]),e[i][1],e[i][2]]):r.push([p(e[i])]);t.text=r}else t.text=p(e)}])}(lt.API),lt.API.autoPrint=function(t){var e;switch((t=t||{}).variant=t.variant||"non-conform",t.variant){case"javascript":this.addJS("print({});");break;case"non-conform":default:this.internal.events.subscribe("postPutResources",function(){e=this.internal.newObject(),this.internal.out("<<"),this.internal.out("/S /Named"),this.internal.out("/Type /Action"),this.internal.out("/N /Print"),this.internal.out(">>"),this.internal.out("endobj")}),this.internal.events.subscribe("putCatalog",function(){this.internal.out("/OpenAction "+e+" 0 R")})}return this},
  254. /**
  255. * @license
  256. * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
  257. *
  258. * Licensed under the MIT License.
  259. * http://opensource.org/licenses/mit-license
  260. */
  261. e=lt.API,(n=function(){var e=void 0;Object.defineProperty(this,"pdf",{get:function(){return e},set:function(t){e=t}});var n=150;Object.defineProperty(this,"width",{get:function(){return n},set:function(t){n=isNaN(t)||!1===Number.isInteger(t)||t<0?150:t,this.getContext("2d").pageWrapXEnabled&&(this.getContext("2d").pageWrapX=n+1)}});var r=300;Object.defineProperty(this,"height",{get:function(){return r},set:function(t){r=isNaN(t)||!1===Number.isInteger(t)||t<0?300:t,this.getContext("2d").pageWrapYEnabled&&(this.getContext("2d").pageWrapY=r+1)}});var i=[];Object.defineProperty(this,"childNodes",{get:function(){return i},set:function(t){i=t}});var o={};Object.defineProperty(this,"style",{get:function(){return o},set:function(t){o=t}}),Object.defineProperty(this,"parentNode",{get:function(){return!1}})}).prototype.getContext=function(t,e){var n;if("2d"!==(t=t||"2d"))return null;for(n in e)this.pdf.context2d.hasOwnProperty(n)&&(this.pdf.context2d[n]=e[n]);return(this.pdf.context2d._canvas=this).pdf.context2d},n.prototype.toDataURL=function(){throw new Error("toDataURL is not implemented.")},e.events.push(["initialized",function(){this.canvas=new n,this.canvas.pdf=this}]),
  262. /**
  263. * @license
  264. * ====================================================================
  265. * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com
  266. * 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br
  267. * 2013 Lee Driscoll, https://github.com/lsdriscoll
  268. * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
  269. * 2014 James Hall, james@parall.ax
  270. * 2014 Diego Casorran, https://github.com/diegocr
  271. *
  272. *
  273. * ====================================================================
  274. */
  275. _=lt.API,F={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0},P=1,p=function(t,e,n,r,i){F={x:t,y:e,w:n,h:r,ln:i}},d=function(){return F},k={left:0,top:0,bottom:0},_.setHeaderFunction=function(t){l=t},_.getTextDimensions=function(t,e){var n=this.table_font_size||this.internal.getFontSize(),r=(this.internal.getFont().fontStyle,(e=e||{}).scaleFactor||this.internal.scaleFactor),i=0,o=0,a=0;if("string"==typeof t)0!=(i=this.getStringUnitWidth(t)*n)&&(o=1);else{if("[object Array]"!==Object.prototype.toString.call(t))throw new Error("getTextDimensions expects text-parameter to be of type String or an Array of Strings.");for(var s=0;s<t.length;s++)i<(a=this.getStringUnitWidth(t[s])*n)&&(i=a);0!==i&&(o=t.length)}return{w:i/=r,h:Math.max((o*n*this.getLineHeightFactor()-n*(this.getLineHeightFactor()-1))/r,0)}},_.cellAddPage=function(){var t=this.margins||k;this.addPage(),p(t.left,t.top,void 0,void 0),P+=1},_.cellInitialize=function(){F={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0},P=1},_.cell=function(t,e,n,r,i,o,a){var s=d(),l=!1;if(void 0!==s.ln)if(s.ln===o)t=s.x+s.w,e=s.y;else{var h=this.margins||k;s.y+s.h+r+13>=this.internal.pageSize.getHeight()-h.bottom&&(this.cellAddPage(),l=!0,this.printHeaders&&this.tableHeaderRow&&this.printHeaderRow(o,!0)),e=d().y+d().h,l&&(e=23)}if(void 0!==i[0])if(this.printingHeaderRow?this.rect(t,e,n,r,"FD"):this.rect(t,e,n,r),"right"===a){i instanceof Array||(i=[i]);for(var u=0;u<i.length;u++){var c=i[u],f=this.getStringUnitWidth(c)*this.internal.getFontSize()/this.internal.scaleFactor;this.text(c,t+n-f-3,e+this.internal.getLineHeight()*(u+1))}}else this.text(i,t+3,e+this.internal.getLineHeight());return p(t,e,n,r,o),this},_.arrayMax=function(t,e){var n,r,i,o=t[0];for(n=0,r=t.length;n<r;n+=1)i=t[n],e?-1===e(o,i)&&(o=i):o<i&&(o=i);return o},_.table=function(t,e,n,r,i){if(!n)throw"No data for PDF table";var o,a,s,l,h,u,c,f,p,d,g=[],m=[],y={},v={},w=[],b=[],x=!1,N=!0,L=12,A=k;if(A.width=this.internal.pageSize.getWidth(),i&&(!0===i.autoSize&&(x=!0),!1===i.printHeaders&&(N=!1),i.fontSize&&(L=i.fontSize),i.css&&void 0!==i.css["font-size"]&&(L=16*i.css["font-size"]),i.margins&&(A=i.margins)),this.lnMod=0,F={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0},P=1,this.printHeaders=N,this.margins=A,this.setFontSize(L),this.table_font_size=L,null==r)g=Object.keys(n[0]);else if(r[0]&&"string"!=typeof r[0])for(a=0,s=r.length;a<s;a+=1)o=r[a],g.push(o.name),m.push(o.prompt),v[o.name]=o.width*(19.049976/25.4);else g=r;if(x)for(d=function(t){return t[o]},a=0,s=g.length;a<s;a+=1){for(y[o=g[a]]=n.map(d),w.push(this.getTextDimensions(m[a]||o,{scaleFactor:1}).w),c=0,l=(u=y[o]).length;c<l;c+=1)h=u[c],w.push(this.getTextDimensions(h,{scaleFactor:1}).w);v[o]=_.arrayMax(w),w=[]}if(N){var S=this.calculateLineHeight(g,v,m.length?m:g);for(a=0,s=g.length;a<s;a+=1)o=g[a],b.push([t,e,v[o],S,String(m.length?m[a]:o)]);this.setTableHeaderRow(b),this.printHeaderRow(1,!1)}for(a=0,s=n.length;a<s;a+=1)for(f=n[a],S=this.calculateLineHeight(g,v,f),c=0,p=g.length;c<p;c+=1)o=g[c],this.cell(t,e,v[o],S,f[o],a+2,o.align);return this.lastCellPos=F,this.table_x=t,this.table_y=e,this},_.calculateLineHeight=function(t,e,n){for(var r,i=0,o=0;o<t.length;o++){n[r=t[o]]=this.splitTextToSize(String(n[r]),e[r]-3);var a=this.internal.getLineHeight()*n[r].length+3;i<a&&(i=a)}return i},_.setTableHeaderRow=function(t){this.tableHeaderRow=t},_.printHeaderRow=function(t,e){if(!this.tableHeaderRow)throw"Property tableHeaderRow does not exist.";var n,r,i,o;if(this.printingHeaderRow=!0,void 0!==l){var a=l(this,P);p(a[0],a[1],a[2],a[3],-1)}this.setFontStyle("bold");var s=[];for(i=0,o=this.tableHeaderRow.length;i<o;i+=1)this.setFillColor(200,200,200),n=this.tableHeaderRow[i],e&&(this.margins.top=13,n[1]=this.margins&&this.margins.top||0,s.push(n)),r=[].concat(n),this.cell.apply(this,r.concat(t));0<s.length&&this.setTableHeaderRow(s),this.setFontStyle("normal"),this.printingHeaderRow=!1},
  276. /**
  277. * jsPDF Context2D PlugIn Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
  278. *
  279. * Licensed under the MIT License. http://opensource.org/licenses/mit-license
  280. */
  281. function(t,e){var l,i,o,h,u,c=function(t){return t=t||{},this.isStrokeTransparent=t.isStrokeTransparent||!1,this.strokeOpacity=t.strokeOpacity||1,this.strokeStyle=t.strokeStyle||"#000000",this.fillStyle=t.fillStyle||"#000000",this.isFillTransparent=t.isFillTransparent||!1,this.fillOpacity=t.fillOpacity||1,this.font=t.font||"10px sans-serif",this.textBaseline=t.textBaseline||"alphabetic",this.textAlign=t.textAlign||"left",this.lineWidth=t.lineWidth||1,this.lineJoin=t.lineJoin||"miter",this.lineCap=t.lineCap||"butt",this.path=t.path||[],this.transform=void 0!==t.transform?t.transform.clone():new M,this.globalCompositeOperation=t.globalCompositeOperation||"normal",this.globalAlpha=t.globalAlpha||1,this.clip_path=t.clip_path||[],this.currentPoint=t.currentPoint||new j,this.miterLimit=t.miterLimit||10,this.lastPoint=t.lastPoint||new j,this.ignoreClearRect="boolean"!=typeof t.ignoreClearRect||t.ignoreClearRect,this};t.events.push(["initialized",function(){this.context2d=new n(this),l=this.internal.f2,this.internal.f3,i=this.internal.getCoordinateString,o=this.internal.getVerticalCoordinateString,h=this.internal.getHorizontalCoordinate,u=this.internal.getVerticalCoordinate}]);var n=function(t){Object.defineProperty(this,"canvas",{get:function(){return{parentNode:!1,style:!1}}}),Object.defineProperty(this,"pdf",{get:function(){return t}});var e=!1;Object.defineProperty(this,"pageWrapXEnabled",{get:function(){return e},set:function(t){e=Boolean(t)}});var n=!1;Object.defineProperty(this,"pageWrapYEnabled",{get:function(){return n},set:function(t){n=Boolean(t)}});var r=0;Object.defineProperty(this,"posX",{get:function(){return r},set:function(t){isNaN(t)||(r=t)}});var i=0;Object.defineProperty(this,"posY",{get:function(){return i},set:function(t){isNaN(t)||(i=t)}});var o=!1;Object.defineProperty(this,"autoPaging",{get:function(){return o},set:function(t){o=Boolean(t)}});var a=0;Object.defineProperty(this,"lastBreak",{get:function(){return a},set:function(t){a=t}});var s=[];Object.defineProperty(this,"pageBreaks",{get:function(){return s},set:function(t){s=t}});var l=new c;Object.defineProperty(this,"ctx",{get:function(){return l},set:function(t){t instanceof c&&(l=t)}}),Object.defineProperty(this,"path",{get:function(){return l.path},set:function(t){l.path=t}});var h=[];Object.defineProperty(this,"ctxStack",{get:function(){return h},set:function(t){h=t}}),Object.defineProperty(this,"fillStyle",{get:function(){return this.ctx.fillStyle},set:function(t){var e;e=f(t),this.ctx.fillStyle=e.style,this.ctx.isFillTransparent=0===e.a,this.ctx.fillOpacity=e.a,this.pdf.setFillColor(e.r,e.g,e.b,{a:e.a}),this.pdf.setTextColor(e.r,e.g,e.b,{a:e.a})}}),Object.defineProperty(this,"strokeStyle",{get:function(){return this.ctx.strokeStyle},set:function(t){var e=f(t);this.ctx.strokeStyle=e.style,this.ctx.isStrokeTransparent=0===e.a,this.ctx.strokeOpacity=e.a,0===e.a?this.pdf.setDrawColor(255,255,255):(e.a,this.pdf.setDrawColor(e.r,e.g,e.b))}}),Object.defineProperty(this,"lineCap",{get:function(){return this.ctx.lineCap},set:function(t){-1!==["butt","round","square"].indexOf(t)&&(this.ctx.lineCap=t,this.pdf.setLineCap(t))}}),Object.defineProperty(this,"lineWidth",{get:function(){return this.ctx.lineWidth},set:function(t){isNaN(t)||(this.ctx.lineWidth=t,this.pdf.setLineWidth(t))}}),Object.defineProperty(this,"lineJoin",{get:function(){return this.ctx.lineJoin},set:function(t){-1!==["bevel","round","miter"].indexOf(t)&&(this.ctx.lineJoin=t,this.pdf.setLineJoin(t))}}),Object.defineProperty(this,"miterLimit",{get:function(){return this.ctx.miterLimit},set:function(t){isNaN(t)||(this.ctx.miterLimit=t,this.pdf.setMiterLimit(t))}}),Object.defineProperty(this,"textBaseline",{get:function(){return this.ctx.textBaseline},set:function(t){this.ctx.textBaseline=t}}),Object.defineProperty(this,"textAlign",{get:function(){return this.ctx.textAlign},set:function(t){-1!==["right","end","center","left","start"].indexOf(t)&&(this.ctx.textAlign=t)}}),Object.defineProperty(this,"font",{get:function(){return this.ctx.font},set:function(t){var e;if(this.ctx.font=t,null!==(e=/^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-_,\"\'\sa-z]+?)\s*$/i.exec(t))){var n=e[1],r=(e[2],e[3]),i=e[4],o=e[5],a=e[6];i="px"===o?Math.floor(parseFloat(i)):"em"===o?Math.floor(parseFloat(i)*this.pdf.getFontSize()):Math.floor(parseFloat(i)),this.pdf.setFontSize(i);var s="";("bold"===r||700<=parseInt(r,10)||"bold"===n)&&(s="bold"),"italic"===n&&(s+="italic"),0===s.length&&(s="normal");for(var l="",h=a.toLowerCase().replace(/"|'/g,"").split(/\s*,\s*/),u={arial:"Helvetica",verdana:"Helvetica",helvetica:"Helvetica","sans-serif":"Helvetica",fixed:"Courier",monospace:"Courier",terminal:"Courier",courier:"Courier",times:"Times",cursive:"Times",fantasy:"Times",serif:"Times"},c=0;c<h.length;c++){if(void 0!==this.pdf.internal.getFont(h[c],s,{noFallback:!0,disableWarning:!0})){l=h[c];break}if("bolditalic"===s&&void 0!==this.pdf.internal.getFont(h[c],"bold",{noFallback:!0,disableWarning:!0}))l=h[c],s="bold";else if(void 0!==this.pdf.internal.getFont(h[c],"normal",{noFallback:!0,disableWarning:!0})){l=h[c],s="normal";break}}if(""===l)for(c=0;c<h.length;c++)if(u[h[c]]){l=u[h[c]];break}l=""===l?"Times":l,this.pdf.setFont(l,s)}}}),Object.defineProperty(this,"globalCompositeOperation",{get:function(){return this.ctx.globalCompositeOperation},set:function(t){this.ctx.globalCompositeOperation=t}}),Object.defineProperty(this,"globalAlpha",{get:function(){return this.ctx.globalAlpha},set:function(t){this.ctx.globalAlpha=t}}),Object.defineProperty(this,"ignoreClearRect",{get:function(){return this.ctx.ignoreClearRect},set:function(t){this.ctx.ignoreClearRect=Boolean(t)}})};n.prototype.fill=function(){r.call(this,"fill",!1)},n.prototype.stroke=function(){r.call(this,"stroke",!1)},n.prototype.beginPath=function(){this.path=[{type:"begin"}]},n.prototype.moveTo=function(t,e){if(isNaN(t)||isNaN(e))throw console.error("jsPDF.context2d.moveTo: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.moveTo");var n=this.ctx.transform.applyToPoint(new j(t,e));this.path.push({type:"mt",x:n.x,y:n.y}),this.ctx.lastPoint=new j(t,e)},n.prototype.closePath=function(){var t=new j(0,0),e=0;for(e=this.path.length-1;-1!==e;e--)if("begin"===this.path[e].type&&"object"===se(this.path[e+1])&&"number"==typeof this.path[e+1].x){t=new j(this.path[e+1].x,this.path[e+1].y),this.path.push({type:"lt",x:t.x,y:t.y});break}"object"===se(this.path[e+2])&&"number"==typeof this.path[e+2].x&&this.path.push(JSON.parse(JSON.stringify(this.path[e+2]))),this.path.push({type:"close"}),this.ctx.lastPoint=new j(t.x,t.y)},n.prototype.lineTo=function(t,e){if(isNaN(t)||isNaN(e))throw console.error("jsPDF.context2d.lineTo: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.lineTo");var n=this.ctx.transform.applyToPoint(new j(t,e));this.path.push({type:"lt",x:n.x,y:n.y}),this.ctx.lastPoint=new j(n.x,n.y)},n.prototype.clip=function(){this.ctx.clip_path=JSON.parse(JSON.stringify(this.path)),r.call(this,null,!0)},n.prototype.quadraticCurveTo=function(t,e,n,r){if(isNaN(n)||isNaN(r)||isNaN(t)||isNaN(e))throw console.error("jsPDF.context2d.quadraticCurveTo: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.quadraticCurveTo");var i=this.ctx.transform.applyToPoint(new j(n,r)),o=this.ctx.transform.applyToPoint(new j(t,e));this.path.push({type:"qct",x1:o.x,y1:o.y,x:i.x,y:i.y}),this.ctx.lastPoint=new j(i.x,i.y)},n.prototype.bezierCurveTo=function(t,e,n,r,i,o){if(isNaN(i)||isNaN(o)||isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw console.error("jsPDF.context2d.bezierCurveTo: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.bezierCurveTo");var a=this.ctx.transform.applyToPoint(new j(i,o)),s=this.ctx.transform.applyToPoint(new j(t,e)),l=this.ctx.transform.applyToPoint(new j(n,r));this.path.push({type:"bct",x1:s.x,y1:s.y,x2:l.x,y2:l.y,x:a.x,y:a.y}),this.ctx.lastPoint=new j(a.x,a.y)},n.prototype.arc=function(t,e,n,r,i,o){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r)||isNaN(i))throw console.error("jsPDF.context2d.arc: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.arc");if(o=Boolean(o),!this.ctx.transform.isIdentity){var a=this.ctx.transform.applyToPoint(new j(t,e));t=a.x,e=a.y;var s=this.ctx.transform.applyToPoint(new j(0,n)),l=this.ctx.transform.applyToPoint(new j(0,0));n=Math.sqrt(Math.pow(s.x-l.x,2)+Math.pow(s.y-l.y,2))}Math.abs(i-r)>=2*Math.PI&&(r=0,i=2*Math.PI),this.path.push({type:"arc",x:t,y:e,radius:n,startAngle:r,endAngle:i,counterclockwise:o})},n.prototype.arcTo=function(t,e,n,r,i){throw new Error("arcTo not implemented.")},n.prototype.rect=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw console.error("jsPDF.context2d.rect: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.rect");this.moveTo(t,e),this.lineTo(t+n,e),this.lineTo(t+n,e+r),this.lineTo(t,e+r),this.lineTo(t,e),this.lineTo(t+n,e),this.lineTo(t,e)},n.prototype.fillRect=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw console.error("jsPDF.context2d.fillRect: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.fillRect");if(!N.call(this)){var i={};"butt"!==this.lineCap&&(i.lineCap=this.lineCap,this.lineCap="butt"),"miter"!==this.lineJoin&&(i.lineJoin=this.lineJoin,this.lineJoin="miter"),this.beginPath(),this.rect(t,e,n,r),this.fill(),i.hasOwnProperty("lineCap")&&(this.lineCap=i.lineCap),i.hasOwnProperty("lineJoin")&&(this.lineJoin=i.lineJoin)}},n.prototype.strokeRect=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw console.error("jsPDF.context2d.strokeRect: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.strokeRect");L.call(this)||(this.beginPath(),this.rect(t,e,n,r),this.stroke())},n.prototype.clearRect=function(t,e,n,r){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r))throw console.error("jsPDF.context2d.clearRect: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.clearRect");this.ignoreClearRect||(this.fillStyle="#ffffff",this.fillRect(t,e,n,r))},n.prototype.save=function(t){t="boolean"!=typeof t||t;for(var e=this.pdf.internal.getCurrentPageInfo().pageNumber,n=0;n<this.pdf.internal.getNumberOfPages();n++)this.pdf.setPage(n+1),this.pdf.internal.out("q");if(this.pdf.setPage(e),t){this.ctx.fontSize=this.pdf.internal.getFontSize();var r=new c(this.ctx);this.ctxStack.push(this.ctx),this.ctx=r}},n.prototype.restore=function(t){t="boolean"!=typeof t||t;for(var e=this.pdf.internal.getCurrentPageInfo().pageNumber,n=0;n<this.pdf.internal.getNumberOfPages();n++)this.pdf.setPage(n+1),this.pdf.internal.out("Q");this.pdf.setPage(e),t&&0!==this.ctxStack.length&&(this.ctx=this.ctxStack.pop(),this.fillStyle=this.ctx.fillStyle,this.strokeStyle=this.ctx.strokeStyle,this.font=this.ctx.font,this.lineCap=this.ctx.lineCap,this.lineWidth=this.ctx.lineWidth,this.lineJoin=this.ctx.lineJoin)},n.prototype.toDataURL=function(){throw new Error("toDataUrl not implemented.")};var f=function(t){var e,n,r,i;if(!0===t.isCanvasGradient&&(t=t.getColor()),!t)return{r:0,g:0,b:0,a:0,style:t};if(/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/.test(t))i=r=n=e=0;else{var o=/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(t);if(null!==o)e=parseInt(o[1]),n=parseInt(o[2]),r=parseInt(o[3]),i=1;else if(null!==(o=/rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/.exec(t)))e=parseInt(o[1]),n=parseInt(o[2]),r=parseInt(o[3]),i=parseFloat(o[4]);else{if(i=1,"string"==typeof t&&"#"!==t.charAt(0)){var a=new RGBColor(t);t=a.ok?a.toHex():"#000000"}4===t.length?(e=t.substring(1,2),e+=e,n=t.substring(2,3),n+=n,r=t.substring(3,4),r+=r):(e=t.substring(1,3),n=t.substring(3,5),r=t.substring(5,7)),e=parseInt(e,16),n=parseInt(n,16),r=parseInt(r,16)}}return{r:e,g:n,b:r,a:i,style:t}},N=function(){return this.ctx.isFillTransparent||0==this.globalAlpha},L=function(){return Boolean(this.ctx.isStrokeTransparent||0==this.globalAlpha)};n.prototype.fillText=function(t,e,n,r){if(isNaN(e)||isNaN(n)||"string"!=typeof t)throw console.error("jsPDF.context2d.fillText: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.fillText");if(r=isNaN(r)?void 0:r,!N.call(this)){n=a.call(this,n);var i=B(this.ctx.transform.rotation),o=this.ctx.transform.scaleX;s.call(this,{text:t,x:e,y:n,scale:o,angle:i,align:this.textAlign,maxWidth:r})}},n.prototype.strokeText=function(t,e,n,r){if(isNaN(e)||isNaN(n)||"string"!=typeof t)throw console.error("jsPDF.context2d.strokeText: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.strokeText");if(!L.call(this)){r=isNaN(r)?void 0:r,n=a.call(this,n);var i=B(this.ctx.transform.rotation),o=this.ctx.transform.scaleX;s.call(this,{text:t,x:e,y:n,scale:o,renderingMode:"stroke",angle:i,align:this.textAlign,maxWidth:r})}},n.prototype.measureText=function(t){if("string"!=typeof t)throw console.error("jsPDF.context2d.measureText: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.measureText");var e=this.pdf,n=this.pdf.internal.scaleFactor,r=e.internal.getFontSize(),i=e.getStringUnitWidth(t)*r/e.internal.scaleFactor;return new function(t){var e=(t=t||{}).width||0;return Object.defineProperty(this,"width",{get:function(){return e}}),this}({width:i*=Math.round(96*n/72*1e4)/1e4})},n.prototype.scale=function(t,e){if(isNaN(t)||isNaN(e))throw console.error("jsPDF.context2d.scale: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.scale");var n=new M(t,0,0,e,0,0);this.ctx.transform=this.ctx.transform.multiply(n)},n.prototype.rotate=function(t){if(isNaN(t))throw console.error("jsPDF.context2d.rotate: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.rotate");var e=new M(Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0);this.ctx.transform=this.ctx.transform.multiply(e)},n.prototype.translate=function(t,e){if(isNaN(t)||isNaN(e))throw console.error("jsPDF.context2d.translate: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.translate");var n=new M(1,0,0,1,t,e);this.ctx.transform=this.ctx.transform.multiply(n)},n.prototype.transform=function(t,e,n,r,i,o){if(isNaN(t)||isNaN(e)||isNaN(n)||isNaN(r)||isNaN(i)||isNaN(o))throw console.error("jsPDF.context2d.transform: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.transform");var a=new M(t,e,n,r,i,o);this.ctx.transform=this.ctx.transform.multiply(a)},n.prototype.setTransform=function(t,e,n,r,i,o){t=isNaN(t)?1:t,e=isNaN(e)?0:e,n=isNaN(n)?0:n,r=isNaN(r)?1:r,i=isNaN(i)?0:i,o=isNaN(o)?0:o,this.ctx.transform=new M(t,e,n,r,i,o)},n.prototype.drawImage=function(t,e,n,r,i,o,a,s,l){var h=this.pdf.getImageProperties(t),u=1,c=1,f=1,p=1;void 0!==r&&void 0!==s&&(f=s/r,p=l/i,u=h.width/r*s/r,c=h.height/i*l/i),void 0===o&&(o=e,a=n,n=e=0),void 0!==r&&void 0===s&&(s=r,l=i),void 0===r&&void 0===s&&(s=h.width,l=h.height);var d=this.ctx.transform.decompose(),g=B(d.rotate.shx);d.scale.sx,d.scale.sy;for(var m,y=new M,v=((y=(y=(y=y.multiply(d.translate)).multiply(d.skew)).multiply(d.scale)).applyToPoint(new j(s,l)),y.applyToRectangle(new E(o-e*f,a-n*p,r*u,i*c))),w=F.call(this,v),b=[],x=0;x<w.length;x+=1)-1===b.indexOf(w[x])&&b.push(w[x]);if(b.sort(),this.autoPaging)for(var N=b[0],L=b[b.length-1],A=N;A<L+1;A++){if(this.pdf.setPage(A),0!==this.ctx.clip_path.length){var S=this.path;m=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=P(m,this.posX,-1*this.pdf.internal.pageSize.height*(A-1)+this.posY),k.call(this,"fill",!0),this.path=S}var _=JSON.parse(JSON.stringify(v));_=P([_],this.posX,-1*this.pdf.internal.pageSize.height*(A-1)+this.posY)[0],this.pdf.addImage(t,"jpg",_.x,_.y,_.w,_.h,null,null,g)}else this.pdf.addImage(t,"jpg",v.x,v.y,v.w,v.h,null,null,g)};var F=function(t,e,n){var r=[];switch(e=e||this.pdf.internal.pageSize.width,n=n||this.pdf.internal.pageSize.height,t.type){default:case"mt":case"lt":r.push(Math.floor((t.y+this.posY)/n)+1);break;case"arc":r.push(Math.floor((t.y+this.posY-t.radius)/n)+1),r.push(Math.floor((t.y+this.posY+t.radius)/n)+1);break;case"qct":var i=w(this.ctx.lastPoint.x,this.ctx.lastPoint.y,t.x1,t.y1,t.x,t.y);r.push(Math.floor(i.y/n)+1),r.push(Math.floor((i.y+i.h)/n)+1);break;case"bct":var o=b(this.ctx.lastPoint.x,this.ctx.lastPoint.y,t.x1,t.y1,t.x2,t.y2,t.x,t.y);r.push(Math.floor(o.y/n)+1),r.push(Math.floor((o.y+o.h)/n)+1);break;case"rect":r.push(Math.floor((t.y+this.posY)/n)+1),r.push(Math.floor((t.y+t.h+this.posY)/n)+1)}for(var a=0;a<r.length;a+=1)for(;this.pdf.internal.getNumberOfPages()<r[a];)v.call(this);return r},v=function(){var t=this.fillStyle,e=this.strokeStyle,n=this.font,r=this.lineCap,i=this.lineWidth,o=this.lineJoin;this.pdf.addPage(),this.fillStyle=t,this.strokeStyle=e,this.font=n,this.lineCap=r,this.lineWidth=i,this.lineJoin=o},P=function(t,e,n){for(var r=0;r<t.length;r++)switch(t[r].type){case"bct":t[r].x2+=e,t[r].y2+=n;case"qct":t[r].x1+=e,t[r].y1+=n;case"mt":case"lt":case"arc":default:t[r].x+=e,t[r].y+=n}return t},r=function(t,e){for(var n,r,i=this.fillStyle,o=this.strokeStyle,a=(this.font,this.lineCap),s=this.lineWidth,l=this.lineJoin,h=JSON.parse(JSON.stringify(this.path)),u=JSON.parse(JSON.stringify(this.path)),c=[],f=0;f<u.length;f++)if(void 0!==u[f].x)for(var p=F.call(this,u[f]),d=0;d<p.length;d+=1)-1===c.indexOf(p[d])&&c.push(p[d]);for(f=0;f<c.length;f++)for(;this.pdf.internal.getNumberOfPages()<c[f];)v.call(this);if(c.sort(),this.autoPaging){var g=c[0],m=c[c.length-1];for(f=g;f<m+1;f++){if(this.pdf.setPage(f),this.fillStyle=i,this.strokeStyle=o,this.lineCap=a,this.lineWidth=s,this.lineJoin=l,0!==this.ctx.clip_path.length){var y=this.path;n=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=P(n,this.posX,-1*this.pdf.internal.pageSize.height*(f-1)+this.posY),k.call(this,t,!0),this.path=y}r=JSON.parse(JSON.stringify(h)),this.path=P(r,this.posX,-1*this.pdf.internal.pageSize.height*(f-1)+this.posY),!1!==e&&0!==f||k.call(this,t,e)}}else k.call(this,t,e);this.path=h},k=function(t,e){if(("stroke"!==t||e||!L.call(this))&&("stroke"===t||e||!N.call(this))){var n=[];this.ctx.globalAlpha;this.ctx.fillOpacity<1&&this.ctx.fillOpacity;for(var r,i=this.path,o=0;o<i.length;o++){var a=i[o];switch(a.type){case"begin":n.push({begin:!0});break;case"close":n.push({close:!0});break;case"mt":n.push({start:a,deltas:[],abs:[]});break;case"lt":var s=n.length;if(!isNaN(i[o-1].x)){var l=[a.x-i[o-1].x,a.y-i[o-1].y];if(0<s)for(;0<=s;s--)if(!0!==n[s-1].close&&!0!==n[s-1].begin){n[s-1].deltas.push(l),n[s-1].abs.push(a);break}}break;case"bct":l=[a.x1-i[o-1].x,a.y1-i[o-1].y,a.x2-i[o-1].x,a.y2-i[o-1].y,a.x-i[o-1].x,a.y-i[o-1].y];n[n.length-1].deltas.push(l);break;case"qct":var h=i[o-1].x+2/3*(a.x1-i[o-1].x),u=i[o-1].y+2/3*(a.y1-i[o-1].y),c=a.x+2/3*(a.x1-a.x),f=a.y+2/3*(a.y1-a.y),p=a.x,d=a.y;l=[h-i[o-1].x,u-i[o-1].y,c-i[o-1].x,f-i[o-1].y,p-i[o-1].x,d-i[o-1].y];n[n.length-1].deltas.push(l);break;case"arc":n.push({deltas:[],abs:[],arc:!0}),Array.isArray(n[n.length-1].abs)&&n[n.length-1].abs.push(a)}}r=e?null:"stroke"===t?"stroke":"fill";for(o=0;o<n.length;o++){if(n[o].arc)for(var g=n[o].abs,m=0;m<g.length;m++){var y=g[m];if(void 0!==y.startAngle){var v=B(y.startAngle),w=B(y.endAngle),b=y.x,x=y.y;A.call(this,b,x,y.radius,v,w,y.counterclockwise,r,e)}else I.call(this,y.x,y.y)}if(!n[o].arc&&!0!==n[o].close&&!0!==n[o].begin){b=n[o].start.x,x=n[o].start.y;C.call(this,n[o].deltas,b,x,null,null)}}r&&S.call(this,r),e&&_.call(this)}},a=function(t){var e=this.pdf.internal.getFontSize()/this.pdf.internal.scaleFactor,n=e*(this.pdf.internal.getLineHeightFactor()-1);switch(this.ctx.textBaseline){case"bottom":return t-n;case"top":return t+e-n;case"hanging":return t+e-2*n;case"middle":return t+e/2-n;case"ideographic":return t;case"alphabetic":default:return t}};n.prototype.createLinearGradient=function(){var t=function(){};return t.colorStops=[],t.addColorStop=function(t,e){this.colorStops.push([t,e])},t.getColor=function(){return 0===this.colorStops.length?"#000000":this.colorStops[0][1]},t.isCanvasGradient=!0,t},n.prototype.createPattern=function(){return this.createLinearGradient()},n.prototype.createRadialGradient=function(){return this.createLinearGradient()};var A=function(t,e,n,r,i,o,a,s){this.pdf.internal.scaleFactor;for(var l=y(r),h=y(i),u=g.call(this,n,l,h,o),c=0;c<u.length;c++){var f=u[c];0===c&&p.call(this,f.x1+t,f.y1+e),d.call(this,t,e,f.x2,f.y2,f.x3,f.y3,f.x4,f.y4)}s?_.call(this):S.call(this,a)},S=function(t){switch(t){case"stroke":this.pdf.internal.out("S");break;case"fill":this.pdf.internal.out("f")}},_=function(){this.pdf.clip()},p=function(t,e){this.pdf.internal.out(i(t)+" "+o(e)+" m")},s=function(t){var e;switch(t.align){case"right":case"end":e="right";break;case"center":e="center";break;case"left":case"start":default:e="left"}var n=this.ctx.transform.applyToPoint(new j(t.x,t.y)),r=this.ctx.transform.decompose(),i=new M;i=(i=(i=i.multiply(r.translate)).multiply(r.skew)).multiply(r.scale);for(var o,a=this.pdf.getTextDimensions(t.text),s=this.ctx.transform.applyToRectangle(new E(t.x,t.y,a.w,a.h)),l=i.applyToRectangle(new E(t.x,t.y-a.h,a.w,a.h)),h=F.call(this,l),u=[],c=0;c<h.length;c+=1)-1===u.indexOf(h[c])&&u.push(h[c]);if(u.sort(),!0===this.autoPaging)for(var f=u[0],p=u[u.length-1],d=f;d<p+1;d++){if(this.pdf.setPage(d),0!==this.ctx.clip_path.length){var g=this.path;o=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=P(o,this.posX,-1*this.pdf.internal.pageSize.height*(d-1)+this.posY),k.call(this,"fill",!0),this.path=g}var m=JSON.parse(JSON.stringify(s));if(m=P([m],this.posX,-1*this.pdf.internal.pageSize.height*(d-1)+this.posY)[0],.01<=t.scale){var y=this.pdf.internal.getFontSize();this.pdf.setFontSize(y*t.scale)}this.pdf.text(t.text,m.x,m.y,{angle:t.angle,align:e,renderingMode:t.renderingMode,maxWidth:t.maxWidth}),.01<=t.scale&&this.pdf.setFontSize(y)}else{if(.01<=t.scale){y=this.pdf.internal.getFontSize();this.pdf.setFontSize(y*t.scale)}this.pdf.text(t.text,n.x+this.posX,n.y+this.posY,{angle:t.angle,align:e,renderingMode:t.renderingMode,maxWidth:t.maxWidth}),.01<=t.scale&&this.pdf.setFontSize(y)}},I=function(t,e,n,r){n=n||0,r=r||0,this.pdf.internal.out(i(t+n)+" "+o(e+r)+" l")},C=function(t,e,n){return this.pdf.lines(t,e,n,null,null)},d=function(t,e,n,r,i,o,a,s){this.pdf.internal.out([l(h(n+t)),l(u(r+e)),l(h(i+t)),l(u(o+e)),l(h(a+t)),l(u(s+e)),"c"].join(" "))},g=function(t,e,n,r){var i=2*Math.PI,o=e;(o<i||i<o)&&(o%=i);var a=n;(a<i||i<a)&&(a%=i);for(var s=[],l=Math.PI/2,h=r?-1:1,u=e,c=Math.min(i,Math.abs(a-o));1e-5<c;){var f=u+h*Math.min(c,l);s.push(m.call(this,t,u,f)),c-=Math.abs(f-u),u=f}return s},m=function(t,e,n){var r=(n-e)/2,i=t*Math.cos(r),o=t*Math.sin(r),a=i,s=-o,l=a*a+s*s,h=l+a*i+s*o,u=4/3*(Math.sqrt(2*l*h)-h)/(a*o-s*i),c=a-u*s,f=s+u*a,p=c,d=-f,g=r+e,m=Math.cos(g),y=Math.sin(g);return{x1:t*Math.cos(e),y1:t*Math.sin(e),x2:c*m-f*y,y2:c*y+f*m,x3:p*m-d*y,y3:p*y+d*m,x4:t*Math.cos(n),y4:t*Math.sin(n)}},B=function(t){return 180*t/Math.PI},y=function(t){return t*Math.PI/180},w=function(t,e,n,r,i,o){var a=t+.5*(n-t),s=e+.5*(r-e),l=i+.5*(n-i),h=o+.5*(r-o),u=Math.min(t,i,a,l),c=Math.max(t,i,a,l),f=Math.min(e,o,s,h),p=Math.max(e,o,s,h);return new E(u,f,c-u,p-f)},b=function(t,e,n,r,i,o,a,s){for(var l,h,u,c,f,p,d,g,m,y,v,w,b,x=n-t,N=r-e,L=i-n,A=o-r,S=a-i,_=s-o,F=0;F<41;F++)g=(p=(h=t+(l=F/40)*x)+l*((c=n+l*L)-h))+l*(c+l*(i+l*S-c)-p),m=(d=(u=e+l*N)+l*((f=r+l*A)-u))+l*(f+l*(o+l*_-f)-d),b=0==F?(w=y=g,v=m):(y=Math.min(y,g),v=Math.min(v,m),w=Math.max(w,g),Math.max(b,m));return new E(Math.round(y),Math.round(v),Math.round(w-y),Math.round(b-v))},j=function(t,e){var n=t||0;Object.defineProperty(this,"x",{enumerable:!0,get:function(){return n},set:function(t){isNaN(t)||(n=parseFloat(t))}});var r=e||0;Object.defineProperty(this,"y",{enumerable:!0,get:function(){return r},set:function(t){isNaN(t)||(r=parseFloat(t))}});var i="pt";return Object.defineProperty(this,"type",{enumerable:!0,get:function(){return i},set:function(t){i=t.toString()}}),this},E=function(t,e,n,r){j.call(this,t,e),this.type="rect";var i=n||0;Object.defineProperty(this,"w",{enumerable:!0,get:function(){return i},set:function(t){isNaN(t)||(i=parseFloat(t))}});var o=r||0;return Object.defineProperty(this,"h",{enumerable:!0,get:function(){return o},set:function(t){isNaN(t)||(o=parseFloat(t))}}),this},M=function(t,e,n,r,i,o){var a=[];return Object.defineProperty(this,"sx",{get:function(){return a[0]},set:function(t){a[0]=Math.round(1e5*t)/1e5}}),Object.defineProperty(this,"shy",{get:function(){return a[1]},set:function(t){a[1]=Math.round(1e5*t)/1e5}}),Object.defineProperty(this,"shx",{get:function(){return a[2]},set:function(t){a[2]=Math.round(1e5*t)/1e5}}),Object.defineProperty(this,"sy",{get:function(){return a[3]},set:function(t){a[3]=Math.round(1e5*t)/1e5}}),Object.defineProperty(this,"tx",{get:function(){return a[4]},set:function(t){a[4]=Math.round(1e5*t)/1e5}}),Object.defineProperty(this,"ty",{get:function(){return a[5]},set:function(t){a[5]=Math.round(1e5*t)/1e5}}),Object.defineProperty(this,"rotation",{get:function(){return Math.atan2(this.shx,this.sx)}}),Object.defineProperty(this,"scaleX",{get:function(){return this.decompose().scale.sx}}),Object.defineProperty(this,"scaleY",{get:function(){return this.decompose().scale.sy}}),Object.defineProperty(this,"isIdentity",{get:function(){return 1===this.sx&&(0===this.shy&&(0===this.shx&&(1===this.sy&&(0===this.tx&&0===this.ty))))}}),this.sx=isNaN(t)?1:t,this.shy=isNaN(e)?0:e,this.shx=isNaN(n)?0:n,this.sy=isNaN(r)?1:r,this.tx=isNaN(i)?0:i,this.ty=isNaN(o)?0:o,this};M.prototype.multiply=function(t){var e=t.sx*this.sx+t.shy*this.shx,n=t.sx*this.shy+t.shy*this.sy,r=t.shx*this.sx+t.sy*this.shx,i=t.shx*this.shy+t.sy*this.sy,o=t.tx*this.sx+t.ty*this.shx+this.tx,a=t.tx*this.shy+t.ty*this.sy+this.ty;return new M(e,n,r,i,o,a)},M.prototype.decompose=function(){var t=this.sx,e=this.shy,n=this.shx,r=this.sy,i=this.tx,o=this.ty,a=Math.sqrt(t*t+e*e),s=(t/=a)*n+(e/=a)*r;n-=t*s,r-=e*s;var l=Math.sqrt(n*n+r*r);return s/=l,t*(r/=l)<e*(n/=l)&&(t=-t,e=-e,s=-s,a=-a),{scale:new M(a,0,0,l,0,0),translate:new M(1,0,0,1,i,o),rotate:new M(t,e,-e,t,0,0),skew:new M(1,0,s,1,0,0)}},M.prototype.applyToPoint=function(t){var e=t.x*this.sx+t.y*this.shx+this.tx,n=t.x*this.shy+t.y*this.sy+this.ty;return new j(e,n)},M.prototype.applyToRectangle=function(t){var e=this.applyToPoint(t),n=this.applyToPoint(new j(t.x+t.w,t.y+t.h));return new E(e.x,e.y,n.x-e.x,n.y-e.y)},M.prototype.clone=function(){var t=this.sx,e=this.shy,n=this.shx,r=this.sy,i=this.tx,o=this.ty;return new M(t,e,n,r,i,o)}}(lt.API,"undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof global&&global||Function('return typeof this === "object" && this.content')()||Function("return this")()),
  282. /**
  283. * jsPDF filters PlugIn
  284. * Copyright (c) 2014 Aras Abbasi
  285. *
  286. * Licensed under the MIT License.
  287. * http://opensource.org/licenses/mit-license
  288. */
  289. a=lt.API,o=function(t){var r,e,n,i,o,a,s,l,h,u;for(/[^\x00-\xFF]/.test(t),e=[],n=0,i=(t+=r="\0\0\0\0".slice(t.length%4||4)).length;n<i;n+=4)0!==(o=(t.charCodeAt(n)<<24)+(t.charCodeAt(n+1)<<16)+(t.charCodeAt(n+2)<<8)+t.charCodeAt(n+3))?(a=(o=((o=((o=((o=(o-(u=o%85))/85)-(h=o%85))/85)-(l=o%85))/85)-(s=o%85))/85)%85,e.push(a+33,s+33,l+33,h+33,u+33)):e.push(122);return function(t,e){for(var n=r.length;0<n;n--)t.pop()}(e),String.fromCharCode.apply(String,e)+"~>"},s=function(t){var r,e,n,i,o,a=String,s="length",l="charCodeAt",h="slice",u="replace";for(t[h](-2),t=t[h](0,-2)[u](/\s/g,"")[u]("z","!!!!!"),n=[],i=0,o=(t+=r="uuuuu"[h](t[s]%5||5))[s];i<o;i+=5)e=52200625*(t[l](i)-33)+614125*(t[l](i+1)-33)+7225*(t[l](i+2)-33)+85*(t[l](i+3)-33)+(t[l](i+4)-33),n.push(255&e>>24,255&e>>16,255&e>>8,255&e);return function(t,e){for(var n=r[s];0<n;n--)t.pop()}(n),a.fromCharCode.apply(a,n)},h=function(t){for(var e="",n=0;n<t.length;n+=1)e+=("0"+t.charCodeAt(n).toString(16)).slice(-2);return e+=">"},u=function(t){var e=new RegExp(/^([0-9A-Fa-f]{2})+$/);if(-1!==(t=t.replace(/\s/g,"")).indexOf(">")&&(t=t.substr(0,t.indexOf(">"))),t.length%2&&(t+="0"),!1===e.test(t))return"";for(var n="",r=0;r<t.length;r+=2)n+=String.fromCharCode("0x"+(t[r]+t[r+1]));return n},c=function(t,e){e=Object.assign({predictor:1,colors:1,bitsPerComponent:8,columns:1},e);for(var n,r,i=[],o=t.length;o--;)i[o]=t.charCodeAt(o);return n=a.adler32cs.from(t),(r=new Deflater(6)).append(new Uint8Array(i)),t=r.flush(),(i=new Uint8Array(t.length+6)).set(new Uint8Array([120,156])),i.set(t,2),i.set(new Uint8Array([255&n,n>>8&255,n>>16&255,n>>24&255]),t.length+2),t=String.fromCharCode.apply(null,i)},a.processDataByFilters=function(t,e){var n=0,r=t||"",i=[];for("string"==typeof(e=e||[])&&(e=[e]),n=0;n<e.length;n+=1)switch(e[n]){case"ASCII85Decode":case"/ASCII85Decode":r=s(r),i.push("/ASCII85Encode");break;case"ASCII85Encode":case"/ASCII85Encode":r=o(r),i.push("/ASCII85Decode");break;case"ASCIIHexDecode":case"/ASCIIHexDecode":r=u(r),i.push("/ASCIIHexEncode");break;case"ASCIIHexEncode":case"/ASCIIHexEncode":r=h(r),i.push("/ASCIIHexDecode");break;case"FlateEncode":case"/FlateEncode":r=c(r),i.push("/FlateDecode");break;default:throw'The filter: "'+e[n]+'" is not implemented'}return{data:r,reverseChain:i.reverse().join(" ")}},(
  290. /**
  291. * jsPDF fileloading PlugIn
  292. * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)
  293. *
  294. * Licensed under the MIT License.
  295. * http://opensource.org/licenses/mit-license
  296. */
  297. r=lt.API).loadFile=function(t,e,n){var r;e=e||!0,n=n||function(){};try{r=function(t,e,n){var r=new XMLHttpRequest,i=[],o=0,a=function(t){var e=t.length,n=String.fromCharCode;for(o=0;o<e;o+=1)i.push(n(255&t.charCodeAt(o)));return i.join("")};if(r.open("GET",t,!e),r.overrideMimeType("text/plain; charset=x-user-defined"),!1===e&&(r.onload=function(){return a(this.responseText)}),r.send(null),200===r.status)return e?a(r.responseText):void 0;console.warn('Unable to load file "'+t+'"')}(t,e)}catch(t){r=void 0}return r},r.loadImageFile=r.loadFile,
  298. /**
  299. * Copyright (c) 2018 Erik Koopmans
  300. * Released under the MIT License.
  301. *
  302. * Licensed under the MIT License.
  303. * http://opensource.org/licenses/mit-license
  304. */
  305. i=lt.API,f="undefined"!=typeof window&&window||"undefined"!=typeof global&&global,g=function(t){var e=se(t);return"undefined"===e?"undefined":"string"===e||t instanceof String?"string":"number"===e||t instanceof Number?"number":"function"===e||t instanceof Function?"function":t&&t.constructor===Array?"array":t&&1===t.nodeType?"element":"object"===e?"object":"unknown"},m=function(t,e){var n=document.createElement(t);if(e.className&&(n.className=e.className),e.innerHTML){n.innerHTML=e.innerHTML;for(var r=n.getElementsByTagName("script"),i=r.length;0<i--;null)r[i].parentNode.removeChild(r[i])}for(var o in e.style)n.style[o]=e.style[o];return n},(((y=function t(e){var n=Object.assign(t.convert(Promise.resolve()),JSON.parse(JSON.stringify(t.template))),r=t.convert(Promise.resolve(),n);return r=(r=r.setProgress(1,t,1,[t])).set(e)}).prototype=Object.create(Promise.prototype)).constructor=y).convert=function(t,e){return t.__proto__=e||y.prototype,t},y.template={prop:{src:null,container:null,overlay:null,canvas:null,img:null,pdf:null,pageSize:null,callback:function(){}},progress:{val:0,state:null,n:0,stack:[]},opt:{filename:"file.pdf",margin:[0,0,0,0],enableLinks:!0,x:0,y:0,html2canvas:{},jsPDF:{}}},y.prototype.from=function(t,e){return this.then(function(){switch(e=e||function(t){switch(g(t)){case"string":return"string";case"element":return"canvas"===t.nodeName.toLowerCase?"canvas":"element";default:return"unknown"}}(t)){case"string":return this.set({src:m("div",{innerHTML:t})});case"element":return this.set({src:t});case"canvas":return this.set({canvas:t});case"img":return this.set({img:t});default:return this.error("Unknown source type.")}})},y.prototype.to=function(t){switch(t){case"container":return this.toContainer();case"canvas":return this.toCanvas();case"img":return this.toImg();case"pdf":return this.toPdf();default:return this.error("Invalid target.")}},y.prototype.toContainer=function(){return this.thenList([function(){return this.prop.src||this.error("Cannot duplicate - no source HTML.")},function(){return this.prop.pageSize||this.setPageSize()}]).then(function(){var t={position:"relative",display:"inline-block",width:Math.max(this.prop.src.clientWidth,this.prop.src.scrollWidth,this.prop.src.offsetWidth)+"px",left:0,right:0,top:0,margin:"auto",backgroundColor:"white"},e=function t(e,n){for(var r=3===e.nodeType?document.createTextNode(e.nodeValue):e.cloneNode(!1),i=e.firstChild;i;i=i.nextSibling)!0!==n&&1===i.nodeType&&"SCRIPT"===i.nodeName||r.appendChild(t(i,n));return 1===e.nodeType&&("CANVAS"===e.nodeName?(r.width=e.width,r.height=e.height,r.getContext("2d").drawImage(e,0,0)):"TEXTAREA"!==e.nodeName&&"SELECT"!==e.nodeName||(r.value=e.value),r.addEventListener("load",function(){r.scrollTop=e.scrollTop,r.scrollLeft=e.scrollLeft},!0)),r}(this.prop.src,this.opt.html2canvas.javascriptEnabled);"BODY"===e.tagName&&(t.height=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight)+"px"),this.prop.overlay=m("div",{className:"html2pdf__overlay",style:{position:"fixed",overflow:"hidden",zIndex:1e3,left:"-100000px",right:0,bottom:0,top:0}}),this.prop.container=m("div",{className:"html2pdf__container",style:t}),this.prop.container.appendChild(e),this.prop.container.firstChild.appendChild(m("div",{style:{clear:"both",border:"0 none transparent",margin:0,padding:0,height:0}})),this.prop.container.style.float="none",this.prop.overlay.appendChild(this.prop.container),document.body.appendChild(this.prop.overlay),this.prop.container.firstChild.style.position="relative",this.prop.container.height=Math.max(this.prop.container.firstChild.clientHeight,this.prop.container.firstChild.scrollHeight,this.prop.container.firstChild.offsetHeight)+"px"})},y.prototype.toCanvas=function(){var t=[function(){return document.body.contains(this.prop.container)||this.toContainer()}];return this.thenList(t).then(function(){var t=Object.assign({},this.opt.html2canvas);if(delete t.onrendered,this.isHtml2CanvasLoaded())return html2canvas(this.prop.container,t)}).then(function(t){(this.opt.html2canvas.onrendered||function(){})(t),this.prop.canvas=t,document.body.removeChild(this.prop.overlay)})},y.prototype.toContext2d=function(){var t=[function(){return document.body.contains(this.prop.container)||this.toContainer()}];return this.thenList(t).then(function(){var t=this.opt.jsPDF,e=Object.assign({async:!0,allowTaint:!0,backgroundColor:"#ffffff",imageTimeout:15e3,logging:!0,proxy:null,removeContainer:!0,foreignObjectRendering:!1,useCORS:!1},this.opt.html2canvas);if(delete e.onrendered,t.context2d.autoPaging=!0,t.context2d.posX=this.opt.x,t.context2d.posY=this.opt.y,e.windowHeight=e.windowHeight||0,e.windowHeight=0==e.windowHeight?Math.max(this.prop.container.clientHeight,this.prop.container.scrollHeight,this.prop.container.offsetHeight):e.windowHeight,this.isHtml2CanvasLoaded())return html2canvas(this.prop.container,e)}).then(function(t){(this.opt.html2canvas.onrendered||function(){})(t),this.prop.canvas=t,document.body.removeChild(this.prop.overlay)})},y.prototype.toImg=function(){return this.thenList([function(){return this.prop.canvas||this.toCanvas()}]).then(function(){var t=this.prop.canvas.toDataURL("image/"+this.opt.image.type,this.opt.image.quality);this.prop.img=document.createElement("img"),this.prop.img.src=t})},y.prototype.toPdf=function(){return this.thenList([function(){return this.toContext2d()}]).then(function(){this.prop.pdf=this.prop.pdf||this.opt.jsPDF})},y.prototype.output=function(t,e,n){return"img"===(n=n||"pdf").toLowerCase()||"image"===n.toLowerCase()?this.outputImg(t,e):this.outputPdf(t,e)},y.prototype.outputPdf=function(t,e){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).then(function(){return this.prop.pdf.output(t,e)})},y.prototype.outputImg=function(t,e){return this.thenList([function(){return this.prop.img||this.toImg()}]).then(function(){switch(t){case void 0:case"img":return this.prop.img;case"datauristring":case"dataurlstring":return this.prop.img.src;case"datauri":case"dataurl":return document.location.href=this.prop.img.src;default:throw'Image output type "'+t+'" is not supported.'}})},y.prototype.isHtml2CanvasLoaded=function(){var t=void 0!==f.html2canvas;return t||console.error("html2canvas not loaded."),t},y.prototype.save=function(t){if(this.isHtml2CanvasLoaded())return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).set(t?{filename:t}:null).then(function(){this.prop.pdf.save(this.opt.filename)})},y.prototype.doCallback=function(t){if(this.isHtml2CanvasLoaded())return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).then(function(){this.prop.callback(this.prop.pdf)})},y.prototype.set=function(e){if("object"!==g(e))return this;var t=Object.keys(e||{}).map(function(t){if(t in y.template.prop)return function(){this.prop[t]=e[t]};switch(t){case"margin":return this.setMargin.bind(this,e.margin);case"jsPDF":return function(){return this.opt.jsPDF=e.jsPDF,this.setPageSize()};case"pageSize":return this.setPageSize.bind(this,e.pageSize);default:return function(){this.opt[t]=e[t]}}},this);return this.then(function(){return this.thenList(t)})},y.prototype.get=function(e,n){return this.then(function(){var t=e in y.template.prop?this.prop[e]:this.opt[e];return n?n(t):t})},y.prototype.setMargin=function(t){return this.then(function(){switch(g(t)){case"number":t=[t,t,t,t];case"array":if(2===t.length&&(t=[t[0],t[1],t[0],t[1]]),4===t.length)break;default:return this.error("Invalid margin array.")}this.opt.margin=t}).then(this.setPageSize)},y.prototype.setPageSize=function(t){function e(t,e){return Math.floor(t*e/72*96)}return this.then(function(){(t=t||lt.getPageSize(this.opt.jsPDF)).hasOwnProperty("inner")||(t.inner={width:t.width-this.opt.margin[1]-this.opt.margin[3],height:t.height-this.opt.margin[0]-this.opt.margin[2]},t.inner.px={width:e(t.inner.width,t.k),height:e(t.inner.height,t.k)},t.inner.ratio=t.inner.height/t.inner.width),this.prop.pageSize=t})},y.prototype.setProgress=function(t,e,n,r){return null!=t&&(this.progress.val=t),null!=e&&(this.progress.state=e),null!=n&&(this.progress.n=n),null!=r&&(this.progress.stack=r),this.progress.ratio=this.progress.val/this.progress.state,this},y.prototype.updateProgress=function(t,e,n,r){return this.setProgress(t?this.progress.val+t:null,e||null,n?this.progress.n+n:null,r?this.progress.stack.concat(r):null)},y.prototype.then=function(t,e){var n=this;return this.thenCore(t,e,function(e,t){return n.updateProgress(null,null,1,[e]),Promise.prototype.then.call(this,function(t){return n.updateProgress(null,e),t}).then(e,t).then(function(t){return n.updateProgress(1),t})})},y.prototype.thenCore=function(t,e,n){n=n||Promise.prototype.then;var r=this;t&&(t=t.bind(r)),e&&(e=e.bind(r));var i=-1!==Promise.toString().indexOf("[native code]")&&"Promise"===Promise.name?r:y.convert(Object.assign({},r),Promise.prototype),o=n.call(i,t,e);return y.convert(o,r.__proto__)},y.prototype.thenExternal=function(t,e){return Promise.prototype.then.call(this,t,e)},y.prototype.thenList=function(t){var e=this;return t.forEach(function(t){e=e.thenCore(t)}),e},y.prototype.catch=function(t){t&&(t=t.bind(this));var e=Promise.prototype.catch.call(this,t);return y.convert(e,this)},y.prototype.catchExternal=function(t){return Promise.prototype.catch.call(this,t)},y.prototype.error=function(t){return this.then(function(){throw new Error(t)})},y.prototype.using=y.prototype.set,y.prototype.saveAs=y.prototype.save,y.prototype.export=y.prototype.output,y.prototype.run=y.prototype.then,lt.getPageSize=function(t,e,n){if("object"===se(t)){var r=t;t=r.orientation,e=r.unit||e,n=r.format||n}e=e||"mm",n=n||"a4",t=(""+(t||"P")).toLowerCase();var i=(""+n).toLowerCase(),o={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],"government-letter":[576,756],legal:[612,1008],"junior-legal":[576,360],ledger:[1224,792],tabloid:[792,1224],"credit-card":[153,243]};switch(e){case"pt":var a=1;break;case"mm":a=72/25.4;break;case"cm":a=72/2.54;break;case"in":a=72;break;case"px":a=.75;break;case"pc":case"em":a=12;break;case"ex":a=6;break;default:throw"Invalid unit: "+e}if(o.hasOwnProperty(i))var s=o[i][1]/a,l=o[i][0]/a;else try{s=n[1],l=n[0]}catch(t){throw new Error("Invalid format: "+n)}if("p"===t||"portrait"===t){if(t="p",s<l){var h=l;l=s,s=h}}else{if("l"!==t&&"landscape"!==t)throw"Invalid orientation: "+t;t="l",l<s&&(h=l,l=s,s=h)}return{width:l,height:s,unit:e,k:a}},i.html=function(t,e){(e=e||{}).callback=e.callback||function(){},e.html2canvas=e.html2canvas||{},e.html2canvas.canvas=e.html2canvas.canvas||this.canvas,e.jsPDF=e.jsPDF||this,e.jsPDF;var n=new y(e);return e.worker?n:n.from(t).doCallback()},lt.API.addJS=function(t){return b=t,this.internal.events.subscribe("postPutResources",function(t){v=this.internal.newObject(),this.internal.out("<<"),this.internal.out("/Names [(EmbeddedJS) "+(v+1)+" 0 R]"),this.internal.out(">>"),this.internal.out("endobj"),w=this.internal.newObject(),this.internal.out("<<"),this.internal.out("/S /JavaScript"),this.internal.out("/JS ("+b+")"),this.internal.out(">>"),this.internal.out("endobj")}),this.internal.events.subscribe("putCatalog",function(){void 0!==v&&void 0!==w&&this.internal.out("/Names <</JavaScript "+v+" 0 R>>")}),this},(
  306. /**
  307. * @license
  308. * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
  309. *
  310. * Licensed under the MIT License.
  311. * http://opensource.org/licenses/mit-license
  312. */
  313. x=lt.API).events.push(["postPutResources",function(){var t=this,e=/^(\d+) 0 obj$/;if(0<this.outline.root.children.length)for(var n=t.outline.render().split(/\r\n/),r=0;r<n.length;r++){var i=n[r],o=e.exec(i);if(null!=o){var a=o[1];t.internal.newObjectDeferredBegin(a,!1)}t.internal.write(i)}if(this.outline.createNamedDestinations){var s=this.internal.pages.length,l=[];for(r=0;r<s;r++){var h=t.internal.newObject();l.push(h);var u=t.internal.getPageInfo(r+1);t.internal.write("<< /D["+u.objId+" 0 R /XYZ null null null]>> endobj")}var c=t.internal.newObject();for(t.internal.write("<< /Names [ "),r=0;r<l.length;r++)t.internal.write("(page_"+(r+1)+")"+l[r]+" 0 R");t.internal.write(" ] >>","endobj"),t.internal.newObject(),t.internal.write("<< /Dests "+c+" 0 R"),t.internal.write(">>","endobj")}}]),x.events.push(["putCatalog",function(){0<this.outline.root.children.length&&(this.internal.write("/Outlines",this.outline.makeRef(this.outline.root)),this.outline.createNamedDestinations&&this.internal.write("/Names "+namesOid+" 0 R"))}]),x.events.push(["initialized",function(){var a=this;a.outline={createNamedDestinations:!1,root:{children:[]}},a.outline.add=function(t,e,n){var r={title:e,options:n,children:[]};return null==t&&(t=this.root),t.children.push(r),r},a.outline.render=function(){return this.ctx={},this.ctx.val="",this.ctx.pdf=a,this.genIds_r(this.root),this.renderRoot(this.root),this.renderItems(this.root),this.ctx.val},a.outline.genIds_r=function(t){t.id=a.internal.newObjectDeferred();for(var e=0;e<t.children.length;e++)this.genIds_r(t.children[e])},a.outline.renderRoot=function(t){this.objStart(t),this.line("/Type /Outlines"),0<t.children.length&&(this.line("/First "+this.makeRef(t.children[0])),this.line("/Last "+this.makeRef(t.children[t.children.length-1]))),this.line("/Count "+this.count_r({count:0},t)),this.objEnd()},a.outline.renderItems=function(t){this.ctx.pdf.internal.getCoordinateString;for(var e=this.ctx.pdf.internal.getVerticalCoordinateString,n=0;n<t.children.length;n++){var r=t.children[n];this.objStart(r),this.line("/Title "+this.makeString(r.title)),this.line("/Parent "+this.makeRef(t)),0<n&&this.line("/Prev "+this.makeRef(t.children[n-1])),n<t.children.length-1&&this.line("/Next "+this.makeRef(t.children[n+1])),0<r.children.length&&(this.line("/First "+this.makeRef(r.children[0])),this.line("/Last "+this.makeRef(r.children[r.children.length-1])));var i=this.count=this.count_r({count:0},r);if(0<i&&this.line("/Count "+i),r.options&&r.options.pageNumber){var o=a.internal.getPageInfo(r.options.pageNumber);this.line("/Dest ["+o.objId+" 0 R /XYZ 0 "+e(0)+" 0]")}this.objEnd()}for(n=0;n<t.children.length;n++)r=t.children[n],this.renderItems(r)},a.outline.line=function(t){this.ctx.val+=t+"\r\n"},a.outline.makeRef=function(t){return t.id+" 0 R"},a.outline.makeString=function(t){return"("+a.internal.pdfEscape(t)+")"},a.outline.objStart=function(t){this.ctx.val+="\r\n"+t.id+" 0 obj\r\n<<\r\n"},a.outline.objEnd=function(t){this.ctx.val+=">> \r\nendobj\r\n"},a.outline.count_r=function(t,e){for(var n=0;n<e.children.length;n++)t.count++,this.count_r(t,e.children[n]);return t.count}}]),
  314. /**
  315. * @license
  316. *
  317. * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb
  318. *
  319. *
  320. * ====================================================================
  321. */
  322. I=lt.API,C=function(){var t="function"==typeof Deflater;if(!t)throw new Error("requires deflate.js for compression");return t},B=function(t,e,n,r){var i=5,o=E;switch(r){case I.image_compression.FAST:i=3,o=j;break;case I.image_compression.MEDIUM:i=6,o=M;break;case I.image_compression.SLOW:i=9,o=O}t=A(t,e,n,o);var a=new Uint8Array(N(i)),s=L(t),l=new Deflater(i),h=l.append(t),u=l.flush(),c=a.length+h.length+u.length,f=new Uint8Array(c+4);return f.set(a),f.set(h,a.length),f.set(u,a.length+h.length),f[c++]=s>>>24&255,f[c++]=s>>>16&255,f[c++]=s>>>8&255,f[c++]=255&s,I.arrayBufferToBinaryString(f)},N=function(t,e){var n=Math.LOG2E*Math.log(32768)-8<<4|8,r=n<<8;return r|=Math.min(3,(e-1&255)>>1)<<6,r|=0,[n,255&(r+=31-r%31)]},L=function(t,e){for(var n,r=1,i=0,o=t.length,a=0;0<o;){for(o-=n=e<o?e:o;i+=r+=t[a++],--n;);r%=65521,i%=65521}return(i<<16|r)>>>0},A=function(t,e,n,r){for(var i,o,a,s=t.length/e,l=new Uint8Array(t.length+s),h=T(),u=0;u<s;u++){if(a=u*e,i=t.subarray(a,a+e),r)l.set(r(i,n,o),a+u);else{for(var c=0,f=h.length,p=[];c<f;c++)p[c]=h[c](i,n,o);var d=R(p.concat());l.set(p[d],a+u)}o=i}return l},S=function(t,e,n){var r=Array.apply([],t);return r.unshift(0),r},j=function(t,e,n){var r,i=[],o=0,a=t.length;for(i[0]=1;o<a;o++)r=t[o-e]||0,i[o+1]=t[o]-r+256&255;return i},E=function(t,e,n){var r,i=[],o=0,a=t.length;for(i[0]=2;o<a;o++)r=n&&n[o]||0,i[o+1]=t[o]-r+256&255;return i},M=function(t,e,n){var r,i,o=[],a=0,s=t.length;for(o[0]=3;a<s;a++)r=t[a-e]||0,i=n&&n[a]||0,o[a+1]=t[a]+256-(r+i>>>1)&255;return o},O=function(t,e,n){var r,i,o,a,s=[],l=0,h=t.length;for(s[0]=4;l<h;l++)r=t[l-e]||0,i=n&&n[l]||0,o=n&&n[l-e]||0,a=q(r,i,o),s[l+1]=t[l]-a+256&255;return s},q=function(t,e,n){var r=t+e-n,i=Math.abs(r-t),o=Math.abs(r-e),a=Math.abs(r-n);return i<=o&&i<=a?t:o<=a?e:n},T=function(){return[S,j,E,M,O]},R=function(t){for(var e,n,r,i=0,o=t.length;i<o;)((e=D(t[i].slice(1)))<n||!n)&&(n=e,r=i),i++;return r},D=function(t){for(var e=0,n=t.length,r=0;e<n;)r+=Math.abs(t[e++]);return r},I.processPNG=function(t,e,n,r,i){var o,a,s,l,h,u,c=this.color_spaces.DEVICE_RGB,f=this.decode.FLATE_DECODE,p=8;if(this.isArrayBuffer(t)&&(t=new Uint8Array(t)),this.isArrayBufferView(t)){if("function"!=typeof PNG||"function"!=typeof kt)throw new Error("PNG support requires png.js and zlib.js");if(t=(o=new PNG(t)).imgData,p=o.bits,c=o.colorSpace,l=o.colors,-1!==[4,6].indexOf(o.colorType)){if(8===o.bits)for(var d,g=(_=32==o.pixelBitlength?new Uint32Array(o.decodePixels().buffer):16==o.pixelBitlength?new Uint16Array(o.decodePixels().buffer):new Uint8Array(o.decodePixels().buffer)).length,m=new Uint8Array(g*o.colors),y=new Uint8Array(g),v=o.pixelBitlength-o.bits,w=0,b=0;w<g;w++){for(x=_[w],d=0;d<v;)m[b++]=x>>>d&255,d+=o.bits;y[w]=x>>>d&255}if(16===o.bits){g=(_=new Uint32Array(o.decodePixels().buffer)).length,m=new Uint8Array(g*(32/o.pixelBitlength)*o.colors),y=new Uint8Array(g*(32/o.pixelBitlength));for(var x,N=1<o.colors,L=b=w=0;w<g;)x=_[w++],m[b++]=x>>>0&255,N&&(m[b++]=x>>>16&255,x=_[w++],m[b++]=x>>>0&255),y[L++]=x>>>16&255;p=8}r!==I.image_compression.NONE&&C()?(t=B(m,o.width*o.colors,o.colors,r),u=B(y,o.width,1,r)):(t=m,u=y,f=null)}if(3===o.colorType&&(c=this.color_spaces.INDEXED,h=o.palette,o.transparency.indexed)){var A=o.transparency.indexed,S=0;for(w=0,g=A.length;w<g;++w)S+=A[w];if((S/=255)==g-1&&-1!==A.indexOf(0))s=[A.indexOf(0)];else if(S!==g){var _=o.decodePixels();for(y=new Uint8Array(_.length),w=0,g=_.length;w<g;w++)y[w]=A[_[w]];u=B(y,o.width,1)}}var F=function(t){var e;switch(t){case I.image_compression.FAST:e=11;break;case I.image_compression.MEDIUM:e=13;break;case I.image_compression.SLOW:e=14;break;default:e=12}return e}(r);return a=f===this.decode.FLATE_DECODE?"/Predictor "+F+" /Colors "+l+" /BitsPerComponent "+p+" /Columns "+o.width:"/Colors "+l+" /BitsPerComponent "+p+" /Columns "+o.width,(this.isArrayBuffer(t)||this.isArrayBufferView(t))&&(t=this.arrayBufferToBinaryString(t)),(u&&this.isArrayBuffer(u)||this.isArrayBufferView(u))&&(u=this.arrayBufferToBinaryString(u)),this.createImageInfo(t,o.width,o.height,c,p,f,e,n,a,s,h,u,F)}throw new Error("Unsupported PNG image data, try using JPEG instead.")},(
  323. /**
  324. * @license
  325. * Copyright (c) 2017 Aras Abbasi
  326. *
  327. * Licensed under the MIT License.
  328. * http://opensource.org/licenses/mit-license
  329. */
  330. U=lt.API).processGIF89A=function(t,e,n,r,i){var o=new At(t),a=o.width,s=o.height,l=[];o.decodeAndBlitFrameRGBA(0,l);var h={data:l,width:a,height:s},u=new _t(100).encode(h,100);return U.processJPEG.call(this,u,e,n,r)},U.processGIF87A=U.processGIF89A,(
  331. /**
  332. * Copyright (c) 2018 Aras Abbasi
  333. *
  334. * Licensed under the MIT License.
  335. * http://opensource.org/licenses/mit-license
  336. */
  337. z=lt.API).processBMP=function(t,e,n,r,i){var o=new Ft(t,!1),a=o.width,s=o.height,l={data:o.getData(),width:a,height:s},h=new _t(100).encode(l,100);return z.processJPEG.call(this,h,e,n,r)},lt.API.setLanguage=function(t){return void 0===this.internal.languageSettings&&(this.internal.languageSettings={},this.internal.languageSettings.isSubscribed=!1),void 0!=={af:"Afrikaans",sq:"Albanian",ar:"Arabic (Standard)","ar-DZ":"Arabic (Algeria)","ar-BH":"Arabic (Bahrain)","ar-EG":"Arabic (Egypt)","ar-IQ":"Arabic (Iraq)","ar-JO":"Arabic (Jordan)","ar-KW":"Arabic (Kuwait)","ar-LB":"Arabic (Lebanon)","ar-LY":"Arabic (Libya)","ar-MA":"Arabic (Morocco)","ar-OM":"Arabic (Oman)","ar-QA":"Arabic (Qatar)","ar-SA":"Arabic (Saudi Arabia)","ar-SY":"Arabic (Syria)","ar-TN":"Arabic (Tunisia)","ar-AE":"Arabic (U.A.E.)","ar-YE":"Arabic (Yemen)",an:"Aragonese",hy:"Armenian",as:"Assamese",ast:"Asturian",az:"Azerbaijani",eu:"Basque",be:"Belarusian",bn:"Bengali",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",zh:"Chinese","zh-HK":"Chinese (Hong Kong)","zh-CN":"Chinese (PRC)","zh-SG":"Chinese (Singapore)","zh-TW":"Chinese (Taiwan)",cv:"Chuvash",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch (Standard)","nl-BE":"Dutch (Belgian)",en:"English","en-AU":"English (Australia)","en-BZ":"English (Belize)","en-CA":"English (Canada)","en-IE":"English (Ireland)","en-JM":"English (Jamaica)","en-NZ":"English (New Zealand)","en-PH":"English (Philippines)","en-ZA":"English (South Africa)","en-TT":"English (Trinidad & Tobago)","en-GB":"English (United Kingdom)","en-US":"English (United States)","en-ZW":"English (Zimbabwe)",eo:"Esperanto",et:"Estonian",fo:"Faeroese",fj:"Fijian",fi:"Finnish",fr:"French (Standard)","fr-BE":"French (Belgium)","fr-CA":"French (Canada)","fr-FR":"French (France)","fr-LU":"French (Luxembourg)","fr-MC":"French (Monaco)","fr-CH":"French (Switzerland)",fy:"Frisian",fur:"Friulian",gd:"Gaelic (Scots)","gd-IE":"Gaelic (Irish)",gl:"Galacian",ka:"Georgian",de:"German (Standard)","de-AT":"German (Austria)","de-DE":"German (Germany)","de-LI":"German (Liechtenstein)","de-LU":"German (Luxembourg)","de-CH":"German (Switzerland)",el:"Greek",gu:"Gujurati",ht:"Haitian",he:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",iu:"Inuktitut",ga:"Irish",it:"Italian (Standard)","it-CH":"Italian (Switzerland)",ja:"Japanese",kn:"Kannada",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ky:"Kirghiz",tlh:"Klingon",ko:"Korean","ko-KP":"Korean (North Korea)","ko-KR":"Korean (South Korea)",la:"Latin",lv:"Latvian",lt:"Lithuanian",lb:"Luxembourgish",mk:"FYRO Macedonian",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mo:"Moldavian",nv:"Navajo",ng:"Ndonga",ne:"Nepali",no:"Norwegian",nb:"Norwegian (Bokmal)",nn:"Norwegian (Nynorsk)",oc:"Occitan",or:"Oriya",om:"Oromo",fa:"Persian","fa-IR":"Persian/Iran",pl:"Polish",pt:"Portuguese","pt-BR":"Portuguese (Brazil)",pa:"Punjabi","pa-IN":"Punjabi (India)","pa-PK":"Punjabi (Pakistan)",qu:"Quechua",rm:"Rhaeto-Romanic",ro:"Romanian","ro-MO":"Romanian (Moldavia)",ru:"Russian","ru-MO":"Russian (Moldavia)",sz:"Sami (Lappish)",sg:"Sango",sa:"Sanskrit",sc:"Sardinian",sd:"Sindhi",si:"Singhalese",sr:"Serbian",sk:"Slovak",sl:"Slovenian",so:"Somani",sb:"Sorbian",es:"Spanish","es-AR":"Spanish (Argentina)","es-BO":"Spanish (Bolivia)","es-CL":"Spanish (Chile)","es-CO":"Spanish (Colombia)","es-CR":"Spanish (Costa Rica)","es-DO":"Spanish (Dominican Republic)","es-EC":"Spanish (Ecuador)","es-SV":"Spanish (El Salvador)","es-GT":"Spanish (Guatemala)","es-HN":"Spanish (Honduras)","es-MX":"Spanish (Mexico)","es-NI":"Spanish (Nicaragua)","es-PA":"Spanish (Panama)","es-PY":"Spanish (Paraguay)","es-PE":"Spanish (Peru)","es-PR":"Spanish (Puerto Rico)","es-ES":"Spanish (Spain)","es-UY":"Spanish (Uruguay)","es-VE":"Spanish (Venezuela)",sx:"Sutu",sw:"Swahili",sv:"Swedish","sv-FI":"Swedish (Finland)","sv-SV":"Swedish (Sweden)",ta:"Tamil",tt:"Tatar",te:"Teluga",th:"Thai",tig:"Tigre",ts:"Tsonga",tn:"Tswana",tr:"Turkish",tk:"Turkmen",uk:"Ukrainian",hsb:"Upper Sorbian",ur:"Urdu",ve:"Venda",vi:"Vietnamese",vo:"Volapuk",wa:"Walloon",cy:"Welsh",xh:"Xhosa",ji:"Yiddish",zu:"Zulu"}[t]&&(this.internal.languageSettings.languageCode=t,!1===this.internal.languageSettings.isSubscribed&&(this.internal.events.subscribe("putCatalog",function(){this.internal.write("/Lang ("+this.internal.languageSettings.languageCode+")")}),this.internal.languageSettings.isSubscribed=!0)),this},
  338. /** @license
  339. * MIT license.
  340. * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
  341. * 2014 Diego Casorran, https://github.com/diegocr
  342. *
  343. *
  344. * ====================================================================
  345. */
  346. H=lt.API,W=H.getCharWidthsArray=function(t,e){var n,r,i,o=(e=e||{}).font||this.internal.getFont(),a=e.fontSize||this.internal.getFontSize(),s=e.charSpace||this.internal.getCharSpace(),l=e.widths?e.widths:o.metadata.Unicode.widths,h=l.fof?l.fof:1,u=e.kerning?e.kerning:o.metadata.Unicode.kerning,c=u.fof?u.fof:1,f=0,p=l[0]||h,d=[];for(n=0,r=t.length;n<r;n++)i=t.charCodeAt(n),"function"==typeof o.metadata.widthOfString?d.push((o.metadata.widthOfGlyph(o.metadata.characterToGlyph(i))+s*(1e3/a)||0)/1e3):d.push((l[i]||p)/h+(u[i]&&u[i][f]||0)/c),f=i;return d},V=H.getArraySum=function(t){for(var e=t.length,n=0;e;)n+=t[--e];return n},G=H.getStringUnitWidth=function(t,e){var n=(e=e||{}).fontSize||this.internal.getFontSize(),r=e.font||this.internal.getFont(),i=e.charSpace||this.internal.getCharSpace();return"function"==typeof r.metadata.widthOfString?r.metadata.widthOfString(t,n,i)/n:V(W.apply(this,arguments))},Y=function(t,e,n,r){for(var i=[],o=0,a=t.length,s=0;o!==a&&s+e[o]<n;)s+=e[o],o++;i.push(t.slice(0,o));var l=o;for(s=0;o!==a;)s+e[o]>r&&(i.push(t.slice(l,o)),s=0,l=o),s+=e[o],o++;return l!==o&&i.push(t.slice(l,o)),i},J=function(t,e,n){n||(n={});var r,i,o,a,s,l,h=[],u=[h],c=n.textIndent||0,f=0,p=0,d=t.split(" "),g=W.apply(this,[" ",n])[0];if(l=-1===n.lineIndent?d[0].length+2:n.lineIndent||0){var m=Array(l).join(" "),y=[];d.map(function(t){1<(t=t.split(/\s*\n/)).length?y=y.concat(t.map(function(t,e){return(e&&t.length?"\n":"")+t})):y.push(t[0])}),d=y,l=G.apply(this,[m,n])}for(o=0,a=d.length;o<a;o++){var v=0;if(r=d[o],l&&"\n"==r[0]&&(r=r.substr(1),v=1),i=W.apply(this,[r,n]),e<c+f+(p=V(i))||v){if(e<p){for(s=Y.apply(this,[r,i,e-(c+f),e]),h.push(s.shift()),h=[s.pop()];s.length;)u.push([s.shift()]);p=V(i.slice(r.length-(h[0]?h[0].length:0)))}else h=[r];u.push(h),c=p+l,f=g}else h.push(r),c+=f+p,f=g}if(l)var w=function(t,e){return(e?m:"")+t.join(" ")};else w=function(t){return t.join(" ")};return u.map(w)},H.splitTextToSize=function(t,e,n){var r,i=(n=n||{}).fontSize||this.internal.getFontSize(),o=function(t){var e={0:1},n={};if(t.widths&&t.kerning)return{widths:t.widths,kerning:t.kerning};var r=this.internal.getFont(t.fontName,t.fontStyle),i="Unicode";return r.metadata[i]?{widths:r.metadata[i].widths||e,kerning:r.metadata[i].kerning||n}:{font:r.metadata,fontSize:this.internal.getFontSize(),charSpace:this.internal.getCharSpace()}}.call(this,n);r=Array.isArray(t)?t:t.split(/\r?\n/);var a=1*this.internal.scaleFactor*e/i;o.textIndent=n.textIndent?1*n.textIndent*this.internal.scaleFactor/i:0,o.lineIndent=n.lineIndent;var s,l,h=[];for(s=0,l=r.length;s<l;s++)h=h.concat(J.apply(this,[r[s],a,o]));return h},
  347. /** @license
  348. jsPDF standard_fonts_metrics plugin
  349. * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
  350. * MIT license.
  351. *
  352. * ====================================================================
  353. */
  354. X=lt.API,Z={codePages:["WinAnsiEncoding"],WinAnsiEncoding:(K=function(t){for(var e="klmnopqrstuvwxyz",n={},r=0;r<e.length;r++)n[e[r]]="0123456789abcdef"[r];var i,o,a,s,l,h={},u=1,c=h,f=[],p="",d="",g=t.length-1;for(r=1;r!=g;)l=t[r],r+=1,"'"==l?o=o?(s=o.join(""),i):[]:o?o.push(l):"{"==l?(f.push([c,s]),c={},s=i):"}"==l?((a=f.pop())[0][a[1]]=c,s=i,c=a[0]):"-"==l?u=-1:s===i?n.hasOwnProperty(l)?(p+=n[l],s=parseInt(p,16)*u,u=1,p=""):p+=l:n.hasOwnProperty(l)?(d+=n[l],c[s]=parseInt(d,16)*u,u=1,s=i,d=""):d+=l;return h})("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")},Q={Unicode:{Courier:Z,"Courier-Bold":Z,"Courier-BoldOblique":Z,"Courier-Oblique":Z,Helvetica:Z,"Helvetica-Bold":Z,"Helvetica-BoldOblique":Z,"Helvetica-Oblique":Z,"Times-Roman":Z,"Times-Bold":Z,"Times-BoldItalic":Z,"Times-Italic":Z}},$={Unicode:{"Courier-Oblique":K("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-BoldItalic":K("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),"Helvetica-Bold":K("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),Courier:K("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-BoldOblique":K("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Bold":K("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),Symbol:K("{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"),Helvetica:K("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),"Helvetica-BoldOblique":K("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),ZapfDingbats:K("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-Bold":K("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Italic":K("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"),"Times-Roman":K("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),"Helvetica-Oblique":K("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")}},X.events.push(["addFont",function(t){var e,n,r,i=t.font,o="Unicode";(e=$[o][i.postScriptName])&&((n=i.metadata[o]?i.metadata[o]:i.metadata[o]={}).widths=e.widths,n.kerning=e.kerning),(r=Q[o][i.postScriptName])&&((n=i.metadata[o]?i.metadata[o]:i.metadata[o]={}).encoding=r).codePages&&r.codePages.length&&(i.encoding=r.codePages[0])}]),
  355. /**
  356. * @license
  357. * Licensed under the MIT License.
  358. * http://opensource.org/licenses/mit-license
  359. */
  360. tt=lt,"undefined"!=typeof self&&self||"undefined"!=typeof global&&global||"undefined"!=typeof window&&window||Function("return this")(),tt.API.events.push(["addFont",function(t){var e=t.font,n=t.instance;if(void 0!==n&&n.existsFileInVFS(e.postScriptName)){var r=n.getFileFromVFS(e.postScriptName);if("string"!=typeof r)throw new Error("Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('"+e.postScriptName+"').");e.metadata=tt.API.TTFFont.open(e.postScriptName,e.fontName,r,e.encoding),e.metadata.Unicode=e.metadata.Unicode||{encoding:{},kerning:{},widths:[]},e.metadata.glyIdsUsed=[0]}else if(!1===e.isStandardFont)throw new Error("Font does not exist in vFS, import fonts or remove declaration doc.addFont('"+e.postScriptName+"').")}]),(
  361. /** @license
  362. * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
  363. *
  364. *
  365. * ====================================================================
  366. */
  367. et=lt.API).addSvg=function(t,e,n,r,i){if(void 0===e||void 0===n)throw new Error("addSVG needs values for 'x' and 'y'");function o(t){for(var e=parseFloat(t[1]),n=parseFloat(t[2]),r=[],i=3,o=t.length;i<o;)"c"===t[i]?(r.push([parseFloat(t[i+1]),parseFloat(t[i+2]),parseFloat(t[i+3]),parseFloat(t[i+4]),parseFloat(t[i+5]),parseFloat(t[i+6])]),i+=7):"l"===t[i]?(r.push([parseFloat(t[i+1]),parseFloat(t[i+2])]),i+=3):i+=1;return[e,n,r]}var a,s,l,h,u,c,f,p,d=(h=document,p=h.createElement("iframe"),u=".jsPDF_sillysvg_iframe {display:none;position:absolute;}",(f=(c=h).createElement("style")).type="text/css",f.styleSheet?f.styleSheet.cssText=u:f.appendChild(c.createTextNode(u)),c.getElementsByTagName("head")[0].appendChild(f),p.name="childframe",p.setAttribute("width",0),p.setAttribute("height",0),p.setAttribute("frameborder","0"),p.setAttribute("scrolling","no"),p.setAttribute("seamless","seamless"),p.setAttribute("class","jsPDF_sillysvg_iframe"),h.body.appendChild(p),p),g=(a=t,(l=((s=d).contentWindow||s.contentDocument).document).write(a),l.close(),l.getElementsByTagName("svg")[0]),m=[1,1],y=parseFloat(g.getAttribute("width")),v=parseFloat(g.getAttribute("height"));y&&v&&(r&&i?m=[r/y,i/v]:r?m=[r/y,r/y]:i&&(m=[i/v,i/v]));var w,b,x,N,L=g.childNodes;for(w=0,b=L.length;w<b;w++)(x=L[w]).tagName&&"PATH"===x.tagName.toUpperCase()&&((N=o(x.getAttribute("d").split(" ")))[0]=N[0]*m[0]+e,N[1]=N[1]*m[1]+n,this.lines.call(this,N[2],N[0],N[1],m));return this},et.addSVG=et.addSvg,et.addSvgAsImage=function(t,e,n,r,i,o,a,s){if(isNaN(e)||isNaN(n))throw console.error("jsPDF.addSvgAsImage: Invalid coordinates",arguments),new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");if(isNaN(r)||isNaN(i))throw console.error("jsPDF.addSvgAsImage: Invalid measurements",arguments),new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");var l=document.createElement("canvas");l.width=r,l.height=i;var h=l.getContext("2d");return h.fillStyle="#fff",h.fillRect(0,0,l.width,l.height),canvg(l,t,{ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0}),this.addImage(l.toDataURL("image/jpeg",1),e,n,r,i,a,s),this},lt.API.putTotalPages=function(t){var e,n=0;n=parseInt(this.internal.getFont().id.substr(1),10)<15?(e=new RegExp(t,"g"),this.internal.getNumberOfPages()):(e=new RegExp(this.pdfEscape16(t,this.internal.getFont()),"g"),this.pdfEscape16(this.internal.getNumberOfPages()+"",this.internal.getFont()));for(var r=1;r<=this.internal.getNumberOfPages();r++)for(var i=0;i<this.internal.pages[r].length;i++)this.internal.pages[r][i]=this.internal.pages[r][i].replace(e,n);return this},lt.API.viewerPreferences=function(t,e){var n;t=t||{},e=e||!1;var r,i,o={HideToolbar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideMenubar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideWindowUI:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},FitWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},CenterWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},DisplayDocTitle:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.4},NonFullScreenPageMode:{defaultValue:"UseNone",value:"UseNone",type:"name",explicitSet:!1,valueSet:["UseNone","UseOutlines","UseThumbs","UseOC"],pdfVersion:1.3},Direction:{defaultValue:"L2R",value:"L2R",type:"name",explicitSet:!1,valueSet:["L2R","R2L"],pdfVersion:1.3},ViewArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},ViewClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintScaling:{defaultValue:"AppDefault",value:"AppDefault",type:"name",explicitSet:!1,valueSet:["AppDefault","None"],pdfVersion:1.6},Duplex:{defaultValue:"",value:"none",type:"name",explicitSet:!1,valueSet:["Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","none"],pdfVersion:1.7},PickTrayByPDFSize:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.7},PrintPageRange:{defaultValue:"",value:"",type:"array",explicitSet:!1,valueSet:null,pdfVersion:1.7},NumCopies:{defaultValue:1,value:1,type:"integer",explicitSet:!1,valueSet:null,pdfVersion:1.7}},a=Object.keys(o),s=[],l=0,h=0,u=0,c=!0;function f(t,e){var n,r=!1;for(n=0;n<t.length;n+=1)t[n]===e&&(r=!0);return r}if(void 0===this.internal.viewerpreferences&&(this.internal.viewerpreferences={},this.internal.viewerpreferences.configuration=JSON.parse(JSON.stringify(o)),this.internal.viewerpreferences.isSubscribed=!1),n=this.internal.viewerpreferences.configuration,"reset"===t||!0===e){var p=a.length;for(u=0;u<p;u+=1)n[a[u]].value=n[a[u]].defaultValue,n[a[u]].explicitSet=!1}if("object"===se(t))for(r in t)if(i=t[r],f(a,r)&&void 0!==i){if("boolean"===n[r].type&&"boolean"==typeof i)n[r].value=i;else if("name"===n[r].type&&f(n[r].valueSet,i))n[r].value=i;else if("integer"===n[r].type&&Number.isInteger(i))n[r].value=i;else if("array"===n[r].type){for(l=0;l<i.length;l+=1)if(c=!0,1===i[l].length&&"number"==typeof i[l][0])s.push(String(i[l]-1));else if(1<i[l].length){for(h=0;h<i[l].length;h+=1)"number"!=typeof i[l][h]&&(c=!1);!0===c&&s.push([i[l][0]-1,i[l][1]-1].join(" "))}n[r].value="["+s.join(" ")+"]"}else n[r].value=n[r].defaultValue;n[r].explicitSet=!0}return!1===this.internal.viewerpreferences.isSubscribed&&(this.internal.events.subscribe("putCatalog",function(){var t,e=[];for(t in n)!0===n[t].explicitSet&&("name"===n[t].type?e.push("/"+t+" /"+n[t].value):e.push("/"+t+" "+n[t].value));0!==e.length&&this.internal.write("/ViewerPreferences\n<<\n"+e.join("\n")+"\n>>")}),this.internal.viewerpreferences.isSubscribed=!0),this.internal.viewerpreferences.configuration=n,this},
  368. /** ====================================================================
  369. * jsPDF XMP metadata plugin
  370. * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi
  371. *
  372. *
  373. * ====================================================================
  374. */
  375. nt=lt.API,ot=it=rt="",nt.addMetadata=function(t,e){return it=e||"http://jspdf.default.namespaceuri/",rt=t,this.internal.events.subscribe("postPutResources",function(){if(rt){var t='<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:jspdf="'+it+'"><jspdf:metadata>',e=unescape(encodeURIComponent('<x:xmpmeta xmlns:x="adobe:ns:meta/">')),n=unescape(encodeURIComponent(t)),r=unescape(encodeURIComponent(rt)),i=unescape(encodeURIComponent("</jspdf:metadata></rdf:Description></rdf:RDF>")),o=unescape(encodeURIComponent("</x:xmpmeta>")),a=n.length+r.length+i.length+e.length+o.length;ot=this.internal.newObject(),this.internal.write("<< /Type /Metadata /Subtype /XML /Length "+a+" >>"),this.internal.write("stream"),this.internal.write(e+n+r+i+o),this.internal.write("endstream"),this.internal.write("endobj")}else ot=""}),this.internal.events.subscribe("putCatalog",function(){ot&&this.internal.write("/Metadata "+ot+" 0 R")}),this},function(f,t){var e=f.API;var m=e.pdfEscape16=function(t,e){for(var n,r=e.metadata.Unicode.widths,i=["","0","00","000","0000"],o=[""],a=0,s=t.length;a<s;++a){if(n=e.metadata.characterToGlyph(t.charCodeAt(a)),e.metadata.glyIdsUsed.push(n),e.metadata.toUnicode[n]=t.charCodeAt(a),-1==r.indexOf(n)&&(r.push(n),r.push([parseInt(e.metadata.widthOfGlyph(n),10)])),"0"==n)return o.join("");n=n.toString(16),o.push(i[4-n.length],n)}return o.join("")},p=function(t){var e,n,r,i,o,a,s;for(o="/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange",r=[],a=0,s=(n=Object.keys(t).sort(function(t,e){return t-e})).length;a<s;a++)e=n[a],100<=r.length&&(o+="\n"+r.length+" beginbfchar\n"+r.join("\n")+"\nendbfchar",r=[]),i=("0000"+t[e].toString(16)).slice(-4),e=("0000"+(+e).toString(16)).slice(-4),r.push("<"+e+"><"+i+">");return r.length&&(o+="\n"+r.length+" beginbfchar\n"+r.join("\n")+"\nendbfchar\n"),o+="endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"};e.events.push(["putFont",function(t){!function(t,e,n,r){if(t.metadata instanceof f.API.TTFFont&&"Identity-H"===t.encoding){for(var i=t.metadata.Unicode.widths,o=t.metadata.subset.encode(t.metadata.glyIdsUsed,1),a="",s=0;s<o.length;s++)a+=String.fromCharCode(o[s]);var l=n();r({data:a,addLength1:!0}),e("endobj");var h=n();r({data:p(t.metadata.toUnicode),addLength1:!0}),e("endobj");var u=n();e("<<"),e("/Type /FontDescriptor"),e("/FontName /"+t.fontName),e("/FontFile2 "+l+" 0 R"),e("/FontBBox "+f.API.PDFObject.convert(t.metadata.bbox)),e("/Flags "+t.metadata.flags),e("/StemV "+t.metadata.stemV),e("/ItalicAngle "+t.metadata.italicAngle),e("/Ascent "+t.metadata.ascender),e("/Descent "+t.metadata.decender),e("/CapHeight "+t.metadata.capHeight),e(">>"),e("endobj");var c=n();e("<<"),e("/Type /Font"),e("/BaseFont /"+t.fontName),e("/FontDescriptor "+u+" 0 R"),e("/W "+f.API.PDFObject.convert(i)),e("/CIDToGIDMap /Identity"),e("/DW 1000"),e("/Subtype /CIDFontType2"),e("/CIDSystemInfo"),e("<<"),e("/Supplement 0"),e("/Registry (Adobe)"),e("/Ordering ("+t.encoding+")"),e(">>"),e(">>"),e("endobj"),t.objectNumber=n(),e("<<"),e("/Type /Font"),e("/Subtype /Type0"),e("/ToUnicode "+h+" 0 R"),e("/BaseFont /"+t.fontName),e("/Encoding /"+t.encoding),e("/DescendantFonts ["+c+" 0 R]"),e(">>"),e("endobj"),t.isAlreadyPutted=!0}}(t.font,t.out,t.newObject,t.putStream)}]);e.events.push(["putFont",function(t){!function(t,e,n,r){if(t.metadata instanceof f.API.TTFFont&&"WinAnsiEncoding"===t.encoding){t.metadata.Unicode.widths;for(var i=t.metadata.rawData,o="",a=0;a<i.length;a++)o+=String.fromCharCode(i[a]);var s=n();r({data:o,addLength1:!0}),e("endobj");var l=n();r({data:p(t.metadata.toUnicode),addLength1:!0}),e("endobj");var h=n();for(e("<<"),e("/Descent "+t.metadata.decender),e("/CapHeight "+t.metadata.capHeight),e("/StemV "+t.metadata.stemV),e("/Type /FontDescriptor"),e("/FontFile2 "+s+" 0 R"),e("/Flags 96"),e("/FontBBox "+f.API.PDFObject.convert(t.metadata.bbox)),e("/FontName /"+t.fontName),e("/ItalicAngle "+t.metadata.italicAngle),e("/Ascent "+t.metadata.ascender),e(">>"),e("endobj"),t.objectNumber=n(),a=0;a<t.metadata.hmtx.widths.length;a++)t.metadata.hmtx.widths[a]=parseInt(t.metadata.hmtx.widths[a]*(1e3/t.metadata.head.unitsPerEm));e("<</Subtype/TrueType/Type/Font/ToUnicode "+l+" 0 R/BaseFont/"+t.fontName+"/FontDescriptor "+h+" 0 R/Encoding/"+t.encoding+" /FirstChar 29 /LastChar 255 /Widths "+f.API.PDFObject.convert(t.metadata.hmtx.widths)+">>"),e("endobj"),t.isAlreadyPutted=!0}}(t.font,t.out,t.newObject,t.putStream)}]);var h=function(t){var e,n,r=t.text||"",i=t.x,o=t.y,a=t.options||{},s=t.mutex||{},l=s.pdfEscape,h=s.activeFontKey,u=s.fonts,c=(s.activeFontSize,""),f=0,p="",d=u[n=h].encoding;if("Identity-H"!==u[n].encoding)return{text:r,x:i,y:o,options:a,mutex:s};for(p=r,n=h,"[object Array]"===Object.prototype.toString.call(r)&&(p=r[0]),f=0;f<p.length;f+=1)u[n].metadata.hasOwnProperty("cmap")&&(e=u[n].metadata.cmap.unicode.codeMap[p[f].charCodeAt(0)]),e?c+=p[f]:p[f].charCodeAt(0)<256&&u[n].metadata.hasOwnProperty("Unicode")?c+=p[f]:c+="";var g="";return parseInt(n.slice(1))<14||"WinAnsiEncoding"===d?g=function(t){for(var e="",n=0;n<t.length;n++)e+=""+t.charCodeAt(n).toString(16);return e}(l(c,n)):"Identity-H"===d&&(g=m(c,u[n])),s.isHex=!0,{text:g,x:i,y:o,options:a,mutex:s}};e.events.push(["postProcessText",function(t){var e=t.text||"",n=t.x,r=t.y,i=t.options,o=t.mutex,a=(i.lang,[]),s={text:e,x:n,y:r,options:i,mutex:o};if("[object Array]"===Object.prototype.toString.call(e)){var l=0;for(l=0;l<e.length;l+=1)"[object Array]"===Object.prototype.toString.call(e[l])&&3===e[l].length?a.push([h(Object.assign({},s,{text:e[l][0]})).text,e[l][1],e[l][2]]):a.push(h(Object.assign({},s,{text:e[l]})).text);t.text=a}else t.text=h(Object.assign({},s,{text:e})).text}])}(lt,"undefined"!=typeof self&&self||"undefined"!=typeof global&&global||"undefined"!=typeof window&&window||Function("return this")()),at=lt.API,st=function(t){return void 0!==t&&(void 0===t.vFS&&(t.vFS={}),!0)},at.existsFileInVFS=function(t){return!!st(this.internal)&&void 0!==this.internal.vFS[t]},at.addFileToVFS=function(t,e){return st(this.internal),this.internal.vFS[t]=e,this},at.getFileFromVFS=function(t){return st(this.internal),void 0!==this.internal.vFS[t]?this.internal.vFS[t]:null},lt.API.addHTML=function(t,d,g,s,m){if("undefined"==typeof html2canvas&&"undefined"==typeof rasterizeHTML)throw new Error("You need either https://github.com/niklasvh/html2canvas or https://github.com/cburgmer/rasterizeHTML.js");"number"!=typeof d&&(s=d,m=g),"function"==typeof s&&(m=s,s=null),"function"!=typeof m&&(m=function(){});var e=this.internal,y=e.scaleFactor,v=e.pageSize.getWidth(),w=e.pageSize.getHeight();if((s=s||{}).onrendered=function(l){d=parseInt(d)||0,g=parseInt(g)||0;var t=s.dim||{},h=Object.assign({top:0,right:0,bottom:0,left:0,useFor:"content"},s.margin),e=t.h||Math.min(w,l.height/y),u=t.w||Math.min(v,l.width/y)-d,c=s.format||"JPEG",f=s.imageCompression||"SLOW";if(l.height>w-h.top-h.bottom&&s.pagesplit){var p=function(t,e,n,r,i){var o=document.createElement("canvas");o.height=i,o.width=r;var a=o.getContext("2d");return a.mozImageSmoothingEnabled=!1,a.webkitImageSmoothingEnabled=!1,a.msImageSmoothingEnabled=!1,a.imageSmoothingEnabled=!1,a.fillStyle=s.backgroundColor||"#ffffff",a.fillRect(0,0,r,i),a.drawImage(t,e,n,r,i,0,0,r,i),o},n=function(){for(var t,e,n=0,r=0,i={},o=!1;;){var a;if(r=0,i.top=0!==n?h.top:g,i.left=0!==n?h.left:d,o=(v-h.left-h.right)*y<l.width,"content"===h.useFor?0===n?(t=Math.min((v-h.left)*y,l.width),e=Math.min((w-h.top)*y,l.height-n)):(t=Math.min(v*y,l.width),e=Math.min(w*y,l.height-n),i.top=0):(t=Math.min((v-h.left-h.right)*y,l.width),e=Math.min((w-h.bottom-h.top)*y,l.height-n)),o)for(;;){"content"===h.useFor&&(0===r?t=Math.min((v-h.left)*y,l.width):(t=Math.min(v*y,l.width-r),i.left=0));var s=[a=p(l,r,n,t,e),i.left,i.top,a.width/y,a.height/y,c,null,f];if(this.addImage.apply(this,s),(r+=t)>=l.width)break;this.addPage()}else s=[a=p(l,0,n,t,e),i.left,i.top,a.width/y,a.height/y,c,null,f],this.addImage.apply(this,s);if((n+=e)>=l.height)break;this.addPage()}m(u,n,null,s)}.bind(this);if("CANVAS"===l.nodeName){var r=new Image;r.onload=n,r.src=l.toDataURL("image/png"),l=r}else n()}else{var i=Math.random().toString(35),o=[l,d,g,u,e,c,i,f];this.addImage.apply(this,o),m(u,e,i,o)}}.bind(this),"undefined"!=typeof html2canvas&&!s.rstz)return html2canvas(t,s);if("undefined"==typeof rasterizeHTML)return null;var n="drawDocument";return"string"==typeof t&&(n=/^http/.test(t)?"drawURL":"drawHTML"),s.width=s.width||v*y,rasterizeHTML[n](t,void 0,s).then(function(t){s.onrendered(t.image)},function(t){m(null,t)})},
  376. /**
  377. * jsPDF fromHTML plugin. BETA stage. API subject to change. Needs browser
  378. * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
  379. * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
  380. * 2014 Diego Casorran, https://github.com/diegocr
  381. * 2014 Daniel Husar, https://github.com/danielhusar
  382. * 2014 Wolfgang Gassler, https://github.com/woolfg
  383. * 2014 Steven Spungin, https://github.com/flamenco
  384. *
  385. * @license
  386. *
  387. * ====================================================================
  388. */
  389. function(t){var P,k,i,a,s,l,h,u,I,w,f,c,p,n,C,B,d,g,m,j;P=function(){return function(t){return e.prototype=t,new e};function e(){}}(),w=function(t){var e,n,r,i,o,a,s;for(n=0,r=t.length,e=void 0,a=i=!1;!i&&n!==r;)(e=t[n]=t[n].trimLeft())&&(i=!0),n++;for(n=r-1;r&&!a&&-1!==n;)(e=t[n]=t[n].trimRight())&&(a=!0),n--;for(o=/\s+$/g,s=!0,n=0;n!==r;)"\u2028"!=t[n]&&(e=t[n].replace(/\s+/g," "),s&&(e=e.trimLeft()),e&&(s=o.test(e)),t[n]=e),n++;return t},c=function(t){var e,n,r;for(e=void 0,n=(r=t.split(",")).shift();!e&&n;)e=i[n.trim().toLowerCase()],n=r.shift();return e},p=function(t){var e;return-1<(t="auto"===t?"0px":t).indexOf("em")&&!isNaN(Number(t.replace("em","")))&&(t=18.719*Number(t.replace("em",""))+"px"),-1<t.indexOf("pt")&&!isNaN(Number(t.replace("pt","")))&&(t=1.333*Number(t.replace("pt",""))+"px"),void 0,16,(e=n[t])?e:void 0!==(e={"xx-small":9,"x-small":11,small:13,medium:16,large:19,"x-large":23,"xx-large":28,auto:0}[t])?n[t]=e/16:(e=parseFloat(t))?n[t]=e/16:(e=t.match(/([\d\.]+)(px)/),Array.isArray(e)&&3===e.length?n[t]=parseFloat(e[1])/16:n[t]=1)},I=function(t){var e,n,r,i,o;return o=t,i=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(o,null):o.currentStyle?o.currentStyle:o.style,n=void 0,(e={})["font-family"]=c((r=function(t){return t=t.replace(/-\D/g,function(t){return t.charAt(1).toUpperCase()}),i[t]})("font-family"))||"times",e["font-style"]=a[r("font-style")]||"normal",e["text-align"]=s[r("text-align")]||"left","bold"===(n=l[r("font-weight")]||"normal")&&("normal"===e["font-style"]?e["font-style"]=n:e["font-style"]=n+e["font-style"]),e["font-size"]=p(r("font-size"))||1,e["line-height"]=p(r("line-height"))||1,e.display="inline"===r("display")?"inline":"block",n="block"===e.display,e["margin-top"]=n&&p(r("margin-top"))||0,e["margin-bottom"]=n&&p(r("margin-bottom"))||0,e["padding-top"]=n&&p(r("padding-top"))||0,e["padding-bottom"]=n&&p(r("padding-bottom"))||0,e["margin-left"]=n&&p(r("margin-left"))||0,e["margin-right"]=n&&p(r("margin-right"))||0,e["padding-left"]=n&&p(r("padding-left"))||0,e["padding-right"]=n&&p(r("padding-right"))||0,e["page-break-before"]=r("page-break-before")||"auto",e.float=h[r("cssFloat")]||"none",e.clear=u[r("clear")]||"none",e.color=r("color"),e},C=function(t,e,n){var r,i,o,a,s;if(o=!1,a=i=void 0,r=n["#"+t.id])if("function"==typeof r)o=r(t,e);else for(i=0,a=r.length;!o&&i!==a;)o=r[i](t,e),i++;if(r=n[t.nodeName],!o&&r)if("function"==typeof r)o=r(t,e);else for(i=0,a=r.length;!o&&i!==a;)o=r[i](t,e),i++;for(s="string"==typeof t.className?t.className.split(" "):[],i=0;i<s.length;i++)if(r=n["."+s[i]],!o&&r)if("function"==typeof r)o=r(t,e);else for(i=0,a=r.length;!o&&i!==a;)o=r[i](t,e),i++;return o},j=function(t,e){var n,r,i,o,a,s,l,h,u;for(n=[],r=[],i=0,u=t.rows[0].cells.length,l=t.clientWidth;i<u;)h=t.rows[0].cells[i],r[i]={name:h.textContent.toLowerCase().replace(/\s+/g,""),prompt:h.textContent.replace(/\r?\n/g,""),width:h.clientWidth/l*e.pdf.internal.pageSize.getWidth()},i++;for(i=1;i<t.rows.length;){for(s=t.rows[i],a={},o=0;o<s.cells.length;)a[r[o].name]=s.cells[o].textContent.replace(/\r?\n/g,""),o++;n.push(a),i++}return{rows:n,headers:r}};var E={SCRIPT:1,STYLE:1,NOSCRIPT:1,OBJECT:1,EMBED:1,SELECT:1},M=1;k=function(t,i,e){var n,r,o,a,s,l,h,u;for(r=t.childNodes,n=void 0,(s="block"===(o=I(t)).display)&&(i.setBlockBoundary(),i.setBlockStyle(o)),a=0,l=r.length;a<l;){if("object"===se(n=r[a])){if(i.executeWatchFunctions(n),1===n.nodeType&&"HEADER"===n.nodeName){var c=n,f=i.pdf.margins_doc.top;i.pdf.internal.events.subscribe("addPage",function(t){i.y=f,k(c,i,e),i.pdf.margins_doc.top=i.y+10,i.y+=10},!1)}if(8===n.nodeType&&"#comment"===n.nodeName)~n.textContent.indexOf("ADD_PAGE")&&(i.pdf.addPage(),i.y=i.pdf.margins_doc.top);else if(1!==n.nodeType||E[n.nodeName])if(3===n.nodeType){var p=n.nodeValue;if(n.nodeValue&&"LI"===n.parentNode.nodeName)if("OL"===n.parentNode.parentNode.nodeName)p=M+++". "+p;else{var d=o["font-size"],g=(3-.75*d)*i.pdf.internal.scaleFactor,m=.75*d*i.pdf.internal.scaleFactor,y=1.74*d/i.pdf.internal.scaleFactor;u=function(t,e){this.pdf.circle(t+g,e+m,y,"FD")}}16&n.ownerDocument.body.compareDocumentPosition(n)&&i.addText(p,o)}else"string"==typeof n&&i.addText(n,o);else{var v;if("IMG"===n.nodeName){var w=n.getAttribute("src");v=B[i.pdf.sHashCode(w)||w]}if(v){i.pdf.internal.pageSize.getHeight()-i.pdf.margins_doc.bottom<i.y+n.height&&i.y>i.pdf.margins_doc.top&&(i.pdf.addPage(),i.y=i.pdf.margins_doc.top,i.executeWatchFunctions(n));var b=I(n),x=i.x,N=12/i.pdf.internal.scaleFactor,L=(b["margin-left"]+b["padding-left"])*N,A=(b["margin-right"]+b["padding-right"])*N,S=(b["margin-top"]+b["padding-top"])*N,_=(b["margin-bottom"]+b["padding-bottom"])*N;void 0!==b.float&&"right"===b.float?x+=i.settings.width-n.width-A:x+=L,i.pdf.addImage(v,x,i.y+S,n.width,n.height),v=void 0,"right"===b.float||"left"===b.float?(i.watchFunctions.push(function(t,e,n,r){return i.y>=e?(i.x+=t,i.settings.width+=n,!0):!!(r&&1===r.nodeType&&!E[r.nodeName]&&i.x+r.width>i.pdf.margins_doc.left+i.pdf.margins_doc.width)&&(i.x+=t,i.y=e,i.settings.width+=n,!0)}.bind(this,"left"===b.float?-n.width-L-A:0,i.y+n.height+S+_,n.width)),i.watchFunctions.push(function(t,e,n){return!(i.y<t&&e===i.pdf.internal.getNumberOfPages())||1===n.nodeType&&"both"===I(n).clear&&(i.y=t,!0)}.bind(this,i.y+n.height,i.pdf.internal.getNumberOfPages())),i.settings.width-=n.width+L+A,"left"===b.float&&(i.x+=n.width+L+A)):i.y+=n.height+S+_}else if("TABLE"===n.nodeName)h=j(n,i),i.y+=10,i.pdf.table(i.x,i.y,h.rows,h.headers,{autoSize:!1,printHeaders:e.printHeaders,margins:i.pdf.margins_doc,css:I(n)}),i.y=i.pdf.lastCellPos.y+i.pdf.lastCellPos.h+20;else if("OL"===n.nodeName||"UL"===n.nodeName)M=1,C(n,i,e)||k(n,i,e),i.y+=10;else if("LI"===n.nodeName){var F=i.x;i.x+=20/i.pdf.internal.scaleFactor,i.y+=3,C(n,i,e)||k(n,i,e),i.x=F}else"BR"===n.nodeName?(i.y+=o["font-size"]*i.pdf.internal.scaleFactor,i.addText("\u2028",P(o))):C(n,i,e)||k(n,i,e)}}a++}if(e.outY=i.y,s)return i.setBlockBoundary(u)},B={},d=function(t,o,e,n){var a,r=t.getElementsByTagName("img"),i=r.length,s=0;function l(){o.pdf.internal.events.publish("imagesLoaded"),n(a)}function h(e,n,r){if(e){var i=new Image;a=++s,i.crossOrigin="",i.onerror=i.onload=function(){if(i.complete&&(0===i.src.indexOf("data:image/")&&(i.width=n||i.width||0,i.height=r||i.height||0),i.width+i.height)){var t=o.pdf.sHashCode(e)||e;B[t]=B[t]||i}--s||l()},i.src=e}}for(;i--;)h(r[i].getAttribute("src"),r[i].width,r[i].height);return s||l()},g=function(t,o,a){var s=t.getElementsByTagName("footer");if(0<s.length){s=s[0];var e=o.pdf.internal.write,n=o.y;o.pdf.internal.write=function(){},k(s,o,a);var l=Math.ceil(o.y-n)+5;o.y=n,o.pdf.internal.write=e,o.pdf.margins_doc.bottom+=l;for(var r=function(t){var e=void 0!==t?t.pageNumber:1,n=o.y;o.y=o.pdf.internal.pageSize.getHeight()-o.pdf.margins_doc.bottom,o.pdf.margins_doc.bottom-=l;for(var r=s.getElementsByTagName("span"),i=0;i<r.length;++i)-1<(" "+r[i].className+" ").replace(/[\n\t]/g," ").indexOf(" pageCounter ")&&(r[i].innerHTML=e),-1<(" "+r[i].className+" ").replace(/[\n\t]/g," ").indexOf(" totalPages ")&&(r[i].innerHTML="###jsPDFVarTotalPages###");k(s,o,a),o.pdf.margins_doc.bottom+=l,o.y=n},i=s.getElementsByTagName("span"),h=0;h<i.length;++h)-1<(" "+i[h].className+" ").replace(/[\n\t]/g," ").indexOf(" totalPages ")&&o.pdf.internal.events.subscribe("htmlRenderingFinished",o.pdf.putTotalPages.bind(o.pdf,"###jsPDFVarTotalPages###"),!0);o.pdf.internal.events.subscribe("addPage",r,!1),r(),E.FOOTER=1}},m=function(t,e,n,r,i,o){if(!e)return!1;var a,s,l,h;"string"==typeof e||e.parentNode||(e=""+e.innerHTML),"string"==typeof e&&(a=e.replace(/<\/?script[^>]*?>/gi,""),h="jsPDFhtmlText"+Date.now().toString()+(1e3*Math.random()).toFixed(0),(l=document.createElement("div")).style.cssText="position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;",l.innerHTML='<iframe style="height:1px;width:1px" name="'+h+'" />',document.body.appendChild(l),(s=window.frames[h]).document.open(),s.document.writeln(a),s.document.close(),e=s.document.body);var u,c=new f(t,n,r,i);return d.call(this,e,c,i.elementHandlers,function(t){g(e,c,i.elementHandlers),k(e,c,i.elementHandlers),c.pdf.internal.events.publish("htmlRenderingFinished"),u=c.dispose(),"function"==typeof o?o(u):t&&console.error("jsPDF Warning: rendering issues? provide a callback to fromHTML!")}),u||{x:c.x,y:c.y}},(f=function(t,e,n,r){return this.pdf=t,this.x=e,this.y=n,this.settings=r,this.watchFunctions=[],this.init(),this}).prototype.init=function(){return this.paragraph={text:[],style:[]},this.pdf.internal.write("q")},f.prototype.dispose=function(){return this.pdf.internal.write("Q"),{x:this.x,y:this.y,ready:!0}},f.prototype.executeWatchFunctions=function(t){var e=!1,n=[];if(0<this.watchFunctions.length){for(var r=0;r<this.watchFunctions.length;++r)!0===this.watchFunctions[r](t)?e=!0:n.push(this.watchFunctions[r]);this.watchFunctions=n}return e},f.prototype.splitFragmentsIntoLines=function(t,e){var n,r,i,o,a,s,l,h,u,c,f,p,d,g;for(12,c=this.pdf.internal.scaleFactor,o={},s=l=h=g=a=i=u=r=void 0,p=[f=[]],n=0,d=this.settings.width;t.length;)if(a=t.shift(),g=e.shift(),a)if((i=o[(r=g["font-family"])+(u=g["font-style"])])||(i=this.pdf.internal.getFont(r,u).metadata.Unicode,o[r+u]=i),h={widths:i.widths,kerning:i.kerning,fontSize:12*g["font-size"],textIndent:n},l=this.pdf.getStringUnitWidth(a,h)*h.fontSize/c,"\u2028"==a)f=[],p.push(f);else if(d<n+l){for(s=this.pdf.splitTextToSize(a,d,h),f.push([s.shift(),g]);s.length;)f=[[s.shift(),g]],p.push(f);n=this.pdf.getStringUnitWidth(f[0][0],h)*h.fontSize/c}else f.push([a,g]),n+=l;if(void 0!==g["text-align"]&&("center"===g["text-align"]||"right"===g["text-align"]||"justify"===g["text-align"]))for(var m=0;m<p.length;++m){var y=this.pdf.getStringUnitWidth(p[m][0][0],h)*h.fontSize/c;0<m&&(p[m][0][1]=P(p[m][0][1]));var v=d-y;if("right"===g["text-align"])p[m][0][1]["margin-left"]=v;else if("center"===g["text-align"])p[m][0][1]["margin-left"]=v/2;else if("justify"===g["text-align"]){var w=p[m][0][0].split(" ").length-1;p[m][0][1]["word-spacing"]=v/w,m===p.length-1&&(p[m][0][1]["word-spacing"]=0)}}return p},f.prototype.RenderTextFragment=function(t,e){var n,r;r=0,this.pdf.internal.pageSize.getHeight()-this.pdf.margins_doc.bottom<this.y+this.pdf.internal.getFontSize()&&(this.pdf.internal.write("ET","Q"),this.pdf.addPage(),this.y=this.pdf.margins_doc.top,this.pdf.internal.write("q","BT",this.getPdfColor(e.color),this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td"),r=Math.max(r,e["line-height"],e["font-size"]),this.pdf.internal.write(0,(-12*r).toFixed(2),"Td")),n=this.pdf.internal.getFont(e["font-family"],e["font-style"]);var i=this.getPdfColor(e.color);i!==this.lastTextColor&&(this.pdf.internal.write(i),this.lastTextColor=i),void 0!==e["word-spacing"]&&0<e["word-spacing"]&&this.pdf.internal.write(e["word-spacing"].toFixed(2),"Tw"),this.pdf.internal.write("/"+n.id,(12*e["font-size"]).toFixed(2),"Tf","("+this.pdf.internal.pdfEscape(t)+") Tj"),void 0!==e["word-spacing"]&&this.pdf.internal.write(0,"Tw")},f.prototype.getPdfColor=function(t){var e,n,r,i=/rgb\s*\(\s*(\d+),\s*(\d+),\s*(\d+\s*)\)/.exec(t);if(null!=i)e=parseInt(i[1]),n=parseInt(i[2]),r=parseInt(i[3]);else{if("string"==typeof t&&"#"!=t.charAt(0)){var o=new RGBColor(t);t=o.ok?o.toHex():"#000000"}e=t.substring(1,3),e=parseInt(e,16),n=t.substring(3,5),n=parseInt(n,16),r=t.substring(5,7),r=parseInt(r,16)}if("string"==typeof e&&/^#[0-9A-Fa-f]{6}$/.test(e)){var a=parseInt(e.substr(1),16);e=a>>16&255,n=a>>8&255,r=255&a}var s=this.f3;return 0===e&&0===n&&0===r||void 0===n?s(e/255)+" g":[s(e/255),s(n/255),s(r/255),"rg"].join(" ")},f.prototype.f3=function(t){return t.toFixed(3)},f.prototype.renderParagraph=function(t){var e,n,r,i,o,a,s,l,h,u,c,f,p;if(r=w(this.paragraph.text),f=this.paragraph.style,e=this.paragraph.blockstyle,this.paragraph.priorblockstyle||{},this.paragraph={text:[],style:[],blockstyle:{},priorblockstyle:e},r.join("").trim()){s=this.splitFragmentsIntoLines(r,f),l=a=void 0,n=12/this.pdf.internal.scaleFactor,this.priorMarginBottom=this.priorMarginBottom||0,c=(Math.max((e["margin-top"]||0)-this.priorMarginBottom,0)+(e["padding-top"]||0))*n,u=((e["margin-bottom"]||0)+(e["padding-bottom"]||0))*n,this.priorMarginBottom=e["margin-bottom"]||0,"always"===e["page-break-before"]&&(this.pdf.addPage(),this.y=0,c=((e["margin-top"]||0)+(e["padding-top"]||0))*n),h=this.pdf.internal.write,o=i=void 0,this.y+=c,h("q","BT 0 g",this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td");for(var d=0;s.length;){for(i=l=0,o=(a=s.shift()).length;i!==o;)a[i][0].trim()&&(l=Math.max(l,a[i][1]["line-height"],a[i][1]["font-size"]),p=7*a[i][1]["font-size"]),i++;var g=0,m=0;for(void 0!==a[0][1]["margin-left"]&&0<a[0][1]["margin-left"]&&(g=(m=this.pdf.internal.getCoordinateString(a[0][1]["margin-left"]))-d,d=m),h(g+Math.max(e["margin-left"]||0,0)*n,(-12*l).toFixed(2),"Td"),i=0,o=a.length;i!==o;)a[i][0]&&this.RenderTextFragment(a[i][0],a[i][1]),i++;if(this.y+=l*n,this.executeWatchFunctions(a[0][1])&&0<s.length){var y=[],v=[];s.forEach(function(t){for(var e=0,n=t.length;e!==n;)t[e][0]&&(y.push(t[e][0]+" "),v.push(t[e][1])),++e}),s=this.splitFragmentsIntoLines(w(y),v),h("ET","Q"),h("q","BT 0 g",this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td")}}return t&&"function"==typeof t&&t.call(this,this.x-9,this.y-p/2),h("ET","Q"),this.y+=u}},f.prototype.setBlockBoundary=function(t){return this.renderParagraph(t)},f.prototype.setBlockStyle=function(t){return this.paragraph.blockstyle=t},f.prototype.addText=function(t,e){return this.paragraph.text.push(t),this.paragraph.style.push(e)},i={helvetica:"helvetica","sans-serif":"helvetica","times new roman":"times",serif:"times",times:"times",monospace:"courier",courier:"courier"},l={100:"normal",200:"normal",300:"normal",400:"normal",500:"bold",600:"bold",700:"bold",800:"bold",900:"bold",normal:"normal",bold:"bold",bolder:"bold",lighter:"normal"},a={normal:"normal",italic:"italic",oblique:"italic"},s={left:"left",right:"right",center:"center",justify:"justify"},h={none:"none",right:"right",left:"left"},u={none:"none",both:"both"},n={normal:1},t.fromHTML=function(t,e,n,r,i,o){return this.margins_doc=o||{top:0,bottom:0},r||(r={}),r.elementHandlers||(r.elementHandlers={}),m(this,t,isNaN(e)?4:e,isNaN(n)?4:n,r,i)}}(lt.API),lt.API,("undefined"!=typeof window&&window||"undefined"!=typeof global&&global).html2pdf=function(t,a,e){var n=a.canvas;if(n){var r,i;if((n.pdf=a).annotations={_nameMap:[],createAnnotation:function(t,e){var n,r=a.context2d._wrapX(e.left),i=a.context2d._wrapY(e.top),o=(a.context2d._page(e.top),t.indexOf("#"));n=0<=o?{name:t.substring(o+1)}:{url:t},a.link(r,i,e.right-e.left,e.bottom-e.top,n)},setName:function(t,e){var n=a.context2d._wrapX(e.left),r=a.context2d._wrapY(e.top),i=a.context2d._page(e.top);this._nameMap[t]={page:i,x:n,y:r}}},n.annotations=a.annotations,a.context2d._pageBreakAt=function(t){this.pageBreaks.push(t)},a.context2d._gotoPage=function(t){for(;a.internal.getNumberOfPages()<t;)a.addPage();a.setPage(t)},"string"==typeof t){t=t.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"");var o,s,l=document.createElement("iframe");document.body.appendChild(l),null!=(o=l.contentDocument)&&null!=o||(o=l.contentWindow.document),o.open(),o.write(t),o.close(),r=o.body,s=o.body||{},t=o.documentElement||{},i=Math.max(s.scrollHeight,s.offsetHeight,t.clientHeight,t.scrollHeight,t.offsetHeight)}else s=(r=t).body||{},i=Math.max(s.scrollHeight,s.offsetHeight,t.clientHeight,t.scrollHeight,t.offsetHeight);var h={async:!0,allowTaint:!0,backgroundColor:"#ffffff",canvas:n,imageTimeout:15e3,logging:!0,proxy:null,removeContainer:!0,foreignObjectRendering:!1,useCORS:!1,windowHeight:i=a.internal.pageSize.getHeight(),scrollY:i};a.context2d.pageWrapYEnabled=!0,a.context2d.pageWrapY=a.internal.pageSize.getHeight(),html2canvas(r,h).then(function(t){e&&(l&&l.parentElement.removeChild(l),e(a))})}else alert("jsPDF canvas plugin not installed")},window.tmp=html2pdf,function(f){var r=f.BlobBuilder||f.WebKitBlobBuilder||f.MSBlobBuilder||f.MozBlobBuilder;f.URL=f.URL||f.webkitURL||function(t,e){return(e=document.createElement("a")).href=t,e};var n=f.Blob,p=URL.createObjectURL,d=URL.revokeObjectURL,o=f.Symbol&&f.Symbol.toStringTag,t=!1,e=!1,g=!!f.ArrayBuffer,i=r&&r.prototype.append&&r.prototype.getBlob;try{t=2===new Blob(["ä"]).size,e=2===new Blob([new Uint8Array([1,2])]).size}catch(t){}function a(t){return t.map(function(t){if(t.buffer instanceof ArrayBuffer){var e=t.buffer;if(t.byteLength!==e.byteLength){var n=new Uint8Array(t.byteLength);n.set(new Uint8Array(e,t.byteOffset,t.byteLength)),e=n.buffer}return e}return t})}function s(t,e){e=e||{};var n=new r;return a(t).forEach(function(t){n.append(t)}),e.type?n.getBlob(e.type):n.getBlob()}function l(t,e){return new n(a(t),e||{})}if(f.Blob&&(s.prototype=Blob.prototype,l.prototype=Blob.prototype),o)try{File.prototype[o]="File",Blob.prototype[o]="Blob",FileReader.prototype[o]="FileReader"}catch(t){}function h(){var t=!!f.ActiveXObject||"-ms-scroll-limit"in document.documentElement.style&&"-ms-ime-align"in document.documentElement.style,e=f.XMLHttpRequest&&f.XMLHttpRequest.prototype.send;t&&e&&(XMLHttpRequest.prototype.send=function(t){t instanceof Blob&&this.setRequestHeader("Content-Type",t.type),e.call(this,t)});try{new File([],"")}catch(t){try{var n=new Function('class File extends Blob {constructor(chunks, name, opts) {opts = opts || {};super(chunks, opts || {});this.name = name;this.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : new Date;this.lastModified = +this.lastModifiedDate;}};return new File([], ""), File')();f.File=n}catch(t){n=function(t,e,n){var r=new Blob(t,n),i=n&&void 0!==n.lastModified?new Date(n.lastModified):new Date;return r.name=e,r.lastModifiedDate=i,r.lastModified=+i,r.toString=function(){return"[object File]"},o&&(r[o]="File"),r};f.File=n}}}t?(h(),f.Blob=e?f.Blob:l):i?(h(),f.Blob=s):function(){function a(t){for(var e=[],n=0;n<t.length;n++){var r=t.charCodeAt(n);r<128?e.push(r):r<2048?e.push(192|r>>6,128|63&r):r<55296||57344<=r?e.push(224|r>>12,128|r>>6&63,128|63&r):(n++,r=65536+((1023&r)<<10|1023&t.charCodeAt(n)),e.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|63&r))}return e}function e(t){var e,n,r,i,o,a;for(e="",r=t.length,n=0;n<r;)switch((i=t[n++])>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=String.fromCharCode(i);break;case 12:case 13:o=t[n++],e+=String.fromCharCode((31&i)<<6|63&o);break;case 14:o=t[n++],a=t[n++],e+=String.fromCharCode((15&i)<<12|(63&o)<<6|(63&a)<<0)}return e}function s(t){for(var e=new Array(t.byteLength),n=new Uint8Array(t),r=e.length;r--;)e[r]=n[r];return e}function n(t){for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=[],r=0;r<t.length;r+=3){var i=t[r],o=r+1<t.length,a=o?t[r+1]:0,s=r+2<t.length,l=s?t[r+2]:0,h=i>>2,u=(3&i)<<4|a>>4,c=(15&a)<<2|l>>6,f=63&l;s||(f=64,o||(c=64)),n.push(e[h],e[u],e[c],e[f])}return n.join("")}var t=Object.create||function(t){function e(){}return e.prototype=t,new e};if(g)var r=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],l=ArrayBuffer.isView||function(t){return t&&-1<r.indexOf(Object.prototype.toString.call(t))};function h(t,e){for(var n=0,r=(t=t||[]).length;n<r;n++){var i=t[n];i instanceof h?t[n]=i._buffer:"string"==typeof i?t[n]=a(i):g&&(ArrayBuffer.prototype.isPrototypeOf(i)||l(i))?t[n]=s(i):g&&(o=i)&&DataView.prototype.isPrototypeOf(o)?t[n]=s(i.buffer):t[n]=a(String(i))}var o;this._buffer=[].concat.apply([],t),this.size=this._buffer.length,this.type=e&&e.type||""}function i(t,e,n){var r=h.call(this,t,n=n||{})||this;return r.name=e,r.lastModifiedDate=n.lastModified?new Date(n.lastModified):new Date,r.lastModified=+r.lastModifiedDate,r}if(h.prototype.slice=function(t,e,n){return new h([this._buffer.slice(t||0,e||this._buffer.length)],{type:n})},h.prototype.toString=function(){return"[object Blob]"},(i.prototype=t(h.prototype)).constructor=i,Object.setPrototypeOf)Object.setPrototypeOf(i,h);else try{i.__proto__=h}catch(t){}function o(){if(!(this instanceof o))throw new TypeError("Failed to construct 'FileReader': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");var n=document.createDocumentFragment();this.addEventListener=n.addEventListener,this.dispatchEvent=function(t){var e=this["on"+t.type];"function"==typeof e&&e(t),n.dispatchEvent(t)},this.removeEventListener=n.removeEventListener}function u(t,e,n){if(!(e instanceof h))throw new TypeError("Failed to execute '"+n+"' on 'FileReader': parameter 1 is not of type 'Blob'.");t.result="",setTimeout(function(){this.readyState=o.LOADING,t.dispatchEvent(new Event("load")),t.dispatchEvent(new Event("loadend"))})}i.prototype.toString=function(){return"[object File]"},o.EMPTY=0,o.LOADING=1,o.DONE=2,o.prototype.error=null,o.prototype.onabort=null,o.prototype.onerror=null,o.prototype.onload=null,o.prototype.onloadend=null,o.prototype.onloadstart=null,o.prototype.onprogress=null,o.prototype.readAsDataURL=function(t){u(this,t,"readAsDataURL"),this.result="data:"+t.type+";base64,"+n(t._buffer)},o.prototype.readAsText=function(t){u(this,t,"readAsText"),this.result=e(t._buffer)},o.prototype.readAsArrayBuffer=function(t){u(this,t,"readAsText"),this.result=t._buffer.slice()},o.prototype.abort=function(){},URL.createObjectURL=function(t){return t instanceof h?"data:"+t.type+";base64,"+n(t._buffer):p.call(URL,t)},URL.revokeObjectURL=function(t){d&&d.call(URL,t)};var c=f.XMLHttpRequest&&f.XMLHttpRequest.prototype.send;c&&(XMLHttpRequest.prototype.send=function(t){t instanceof h?(this.setRequestHeader("Content-Type",t.type),c.call(this,e(t._buffer))):c.call(this,t)}),f.FileReader=o,f.File=i,f.Blob=h}()}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof global&&global||Function('return typeof this === "object" && this.content')()||Function("return this")());var ht,ut,ct,ft,pt,dt,gt,mt,yt,vt,wt,bt,xt,Nt,Lt,le=le||function(s){if(!(void 0===s||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var t=s.document,l=function(){return s.URL||s.webkitURL||s},h=t.createElementNS("http://www.w3.org/1999/xhtml","a"),u="download"in h,c=/constructor/i.test(s.HTMLElement)||s.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent),p=s.setImmediate||s.setTimeout,d=function(t){p(function(){throw t},0)},g=function(t){setTimeout(function(){"string"==typeof t?l().revokeObjectURL(t):t.remove()},4e4)},m=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},r=function(t,n,e){e||(t=m(t));var r,i=this,o="application/octet-stream"===t.type,a=function(){!function(t,e,n){for(var r=(e=[].concat(e)).length;r--;){var i=t["on"+e[r]];if("function"==typeof i)try{i.call(t,n||t)}catch(t){d(t)}}}(i,"writestart progress write writeend".split(" "))};if(i.readyState=i.INIT,u)return r=l().createObjectURL(t),void p(function(){var t,e;h.href=r,h.download=n,t=h,e=new MouseEvent("click"),t.dispatchEvent(e),a(),g(r),i.readyState=i.DONE},0);!function(){if((f||o&&c)&&s.FileReader){var e=new FileReader;return e.onloadend=function(){var t=f?e.result:e.result.replace(/^data:[^;]*;/,"data:attachment/file;");s.open(t,"_blank")||(s.location.href=t),t=void 0,i.readyState=i.DONE,a()},e.readAsDataURL(t),i.readyState=i.INIT}r||(r=l().createObjectURL(t)),o?s.location.href=r:s.open(r,"_blank")||(s.location.href=r);i.readyState=i.DONE,a(),g(r)}()},e=r.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,n){return e=e||t.name||"download",n||(t=m(t)),navigator.msSaveOrOpenBlob(t,e)}:(e.abort=function(){},e.readyState=e.INIT=0,e.WRITING=1,e.DONE=2,e.error=e.onwritestart=e.onprogress=e.onwrite=e.onabort=e.onerror=e.onwriteend=null,function(t,e,n){return new r(t,e||t.name||"download",n)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||void 0);function At(x){var t=0;if(71!==x[t++]||73!==x[t++]||70!==x[t++]||56!==x[t++]||56!=(x[t++]+1&253)||97!==x[t++])throw"Invalid GIF 87a/89a header.";var N=x[t++]|x[t++]<<8,e=x[t++]|x[t++]<<8,n=x[t++],r=n>>7,i=1<<(7&n)+1;x[t++];x[t++];var o=null;r&&(o=t,t+=3*i);var a=!0,s=[],l=0,h=null,u=0,c=null;for(this.width=N,this.height=e;a&&t<x.length;)switch(x[t++]){case 33:switch(x[t++]){case 255:if(11!==x[t]||78==x[t+1]&&69==x[t+2]&&84==x[t+3]&&83==x[t+4]&&67==x[t+5]&&65==x[t+6]&&80==x[t+7]&&69==x[t+8]&&50==x[t+9]&&46==x[t+10]&&48==x[t+11]&&3==x[t+12]&&1==x[t+13]&&0==x[t+16])t+=14,c=x[t++]|x[t++]<<8,t++;else for(t+=12;;){if(0===(A=x[t++]))break;t+=A}break;case 249:if(4!==x[t++]||0!==x[t+4])throw"Invalid graphics extension block.";var f=x[t++];l=x[t++]|x[t++]<<8,h=x[t++],0==(1&f)&&(h=null),u=f>>2&7,t++;break;case 254:for(;;){if(0===(A=x[t++]))break;t+=A}break;default:throw"Unknown graphic control label: 0x"+x[t-1].toString(16)}break;case 44:var p=x[t++]|x[t++]<<8,d=x[t++]|x[t++]<<8,g=x[t++]|x[t++]<<8,m=x[t++]|x[t++]<<8,y=x[t++],v=y>>6&1,w=o,b=!1;if(y>>7){b=!0;w=t,t+=3*(1<<(7&y)+1)}var L=t;for(t++;;){var A;if(0===(A=x[t++]))break;t+=A}s.push({x:p,y:d,width:g,height:m,has_local_palette:b,palette_offset:w,data_offset:L,data_length:t-L,transparent_index:h,interlaced:!!v,delay:l,disposal:u});break;case 59:a=!1;break;default:throw"Unknown gif block: 0x"+x[t-1].toString(16)}this.numFrames=function(){return s.length},this.loopCount=function(){return c},this.frameInfo=function(t){if(t<0||t>=s.length)throw"Frame index out of range.";return s[t]},this.decodeAndBlitFrameBGRA=function(t,e){var n=this.frameInfo(t),r=n.width*n.height,i=new Uint8Array(r);St(x,n.data_offset,i,r);var o=n.palette_offset,a=n.transparent_index;null===a&&(a=256);var s=n.width,l=N-s,h=s,u=4*(n.y*N+n.x),c=4*((n.y+n.height)*N+n.x),f=u,p=4*l;!0===n.interlaced&&(p+=4*(s+l)*7);for(var d=8,g=0,m=i.length;g<m;++g){var y=i[g];if(0===h&&(h=s,c<=(f+=p)&&(p=l+4*(s+l)*(d-1),f=u+(s+l)*(d<<1),d>>=1)),y===a)f+=4;else{var v=x[o+3*y],w=x[o+3*y+1],b=x[o+3*y+2];e[f++]=b,e[f++]=w,e[f++]=v,e[f++]=255}--h}},this.decodeAndBlitFrameRGBA=function(t,e){var n=this.frameInfo(t),r=n.width*n.height,i=new Uint8Array(r);St(x,n.data_offset,i,r);var o=n.palette_offset,a=n.transparent_index;null===a&&(a=256);var s=n.width,l=N-s,h=s,u=4*(n.y*N+n.x),c=4*((n.y+n.height)*N+n.x),f=u,p=4*l;!0===n.interlaced&&(p+=4*(s+l)*7);for(var d=8,g=0,m=i.length;g<m;++g){var y=i[g];if(0===h&&(h=s,c<=(f+=p)&&(p=l+4*(s+l)*(d-1),f=u+(s+l)*(d<<1),d>>=1)),y===a)f+=4;else{var v=x[o+3*y],w=x[o+3*y+1],b=x[o+3*y+2];e[f++]=v,e[f++]=w,e[f++]=b,e[f++]=255}--h}}}function St(t,e,n,r){for(var i=t[e++],o=1<<i,a=o+1,s=a+1,l=i+1,h=(1<<l)-1,u=0,c=0,f=0,p=t[e++],d=new Int32Array(4096),g=null;;){for(;u<16&&0!==p;)c|=t[e++]<<u,u+=8,1===p?p=t[e++]:--p;if(u<l)break;var m=c&h;if(c>>=l,u-=l,m!==o){if(m===a)break;for(var y=m<s?m:g,v=0,w=y;o<w;)w=d[w]>>8,++v;var b=w;if(r<f+v+(y!==m?1:0))return void console.log("Warning, gif stream longer than expected.");n[f++]=b;var x=f+=v;for(y!==m&&(n[f++]=b),w=y;v--;)w=d[w],n[--x]=255&w,w>>=8;null!==g&&s<4096&&(d[s++]=g<<8|b,h+1<=s&&l<12&&(++l,h=h<<1|1)),g=m}else s=a+1,h=(1<<(l=i+1))-1,g=null}return f!==r&&console.log("Warning, gif stream shorter than expected."),n}try{exports.GifWriter=function(y,t,e,n){var v=0,r=void 0===(n=void 0===n?{}:n).loop?null:n.loop,w=void 0===n.palette?null:n.palette;if(t<=0||e<=0||65535<t||65535<e)throw"Width/Height invalid.";function b(t){var e=t.length;if(e<2||256<e||e&e-1)throw"Invalid code/color length, must be power of 2 and 2 .. 256.";return e}y[v++]=71,y[v++]=73,y[v++]=70,y[v++]=56,y[v++]=57,y[v++]=97;var i=0,o=0;if(null!==w){for(var a=b(w);a>>=1;)++i;if(a=1<<i,--i,void 0!==n.background){if(a<=(o=n.background))throw"Background index out of range.";if(0===o)throw"Background index explicitly passed as 0."}}if(y[v++]=255&t,y[v++]=t>>8&255,y[v++]=255&e,y[v++]=e>>8&255,y[v++]=(null!==w?128:0)|i,y[v++]=o,y[v++]=0,null!==w)for(var s=0,l=w.length;s<l;++s){var h=w[s];y[v++]=h>>16&255,y[v++]=h>>8&255,y[v++]=255&h}if(null!==r){if(r<0||65535<r)throw"Loop count invalid.";y[v++]=33,y[v++]=255,y[v++]=11,y[v++]=78,y[v++]=69,y[v++]=84,y[v++]=83,y[v++]=67,y[v++]=65,y[v++]=80,y[v++]=69,y[v++]=50,y[v++]=46,y[v++]=48,y[v++]=3,y[v++]=1,y[v++]=255&r,y[v++]=r>>8&255,y[v++]=0}var x=!1;this.addFrame=function(t,e,n,r,i,o){if(!0===x&&(--v,x=!1),o=void 0===o?{}:o,t<0||e<0||65535<t||65535<e)throw"x/y invalid.";if(n<=0||r<=0||65535<n||65535<r)throw"Width/Height invalid.";if(i.length<n*r)throw"Not enough pixels for the frame size.";var a=!0,s=o.palette;if(null==s&&(a=!1,s=w),null==s)throw"Must supply either a local or global palette.";for(var l=b(s),h=0;l>>=1;)++h;l=1<<h;var u=void 0===o.delay?0:o.delay,c=void 0===o.disposal?0:o.disposal;if(c<0||3<c)throw"Disposal out of range.";var f=!1,p=0;if(void 0!==o.transparent&&null!==o.transparent&&(f=!0,(p=o.transparent)<0||l<=p))throw"Transparent color index.";if((0!==c||f||0!==u)&&(y[v++]=33,y[v++]=249,y[v++]=4,y[v++]=c<<2|(!0===f?1:0),y[v++]=255&u,y[v++]=u>>8&255,y[v++]=p,y[v++]=0),y[v++]=44,y[v++]=255&t,y[v++]=t>>8&255,y[v++]=255&e,y[v++]=e>>8&255,y[v++]=255&n,y[v++]=n>>8&255,y[v++]=255&r,y[v++]=r>>8&255,y[v++]=!0===a?128|h-1:0,!0===a)for(var d=0,g=s.length;d<g;++d){var m=s[d];y[v++]=m>>16&255,y[v++]=m>>8&255,y[v++]=255&m}v=function(e,n,t,r){e[n++]=t;var i=n++,o=1<<t,a=o-1,s=o+1,l=s+1,h=t+1,u=0,c=0;function f(t){for(;t<=u;)e[n++]=255&c,c>>=8,u-=8,n===i+256&&(e[i]=255,i=n++)}function p(t){c|=t<<u,u+=h,f(8)}var d=r[0]&a,g={};p(o);for(var m=1,y=r.length;m<y;++m){var v=r[m]&a,w=d<<8|v,b=g[w];if(void 0===b){for(c|=d<<u,u+=h;8<=u;)e[n++]=255&c,c>>=8,u-=8,n===i+256&&(e[i]=255,i=n++);4096===l?(p(o),l=s+1,h=t+1,g={}):(1<<h<=l&&++h,g[w]=l++),d=v}else d=b}return p(d),p(s),f(1),i+1===n?e[i]=0:(e[i]=n-i-1,e[n++]=0),n}(y,v,h<2?2:h,i)},this.end=function(){return!1===x&&(y[v++]=59,x=!0),v}},exports.GifReader=At}catch(t){}
  390. /*
  391. Copyright (c) 2008, Adobe Systems Incorporated
  392. All rights reserved.
  393. Redistribution and use in source and binary forms, with or without
  394. modification, are permitted provided that the following conditions are
  395. met:
  396. * Redistributions of source code must retain the above copyright notice,
  397. this list of conditions and the following disclaimer.
  398. * Redistributions in binary form must reproduce the above copyright
  399. notice, this list of conditions and the following disclaimer in the
  400. documentation and/or other materials provided with the distribution.
  401. * Neither the name of Adobe Systems Incorporated nor the names of its
  402. contributors may be used to endorse or promote products derived from
  403. this software without specific prior written permission.
  404. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
  405. IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  406. THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  407. PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  408. CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  409. EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  410. PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  411. PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  412. LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  413. NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  414. SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  415. */
  416. function _t(t){var N,L,A,S,e,c=Math.floor,_=new Array(64),F=new Array(64),P=new Array(64),k=new Array(64),y=new Array(65535),v=new Array(65535),Z=new Array(64),w=new Array(64),I=[],C=0,B=7,j=new Array(64),E=new Array(64),M=new Array(64),n=new Array(256),O=new Array(2048),b=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],q=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],T=[0,1,2,3,4,5,6,7,8,9,10,11],R=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],D=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],U=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],z=[0,1,2,3,4,5,6,7,8,9,10,11],H=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],W=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function r(t,e){for(var n=0,r=0,i=new Array,o=1;o<=16;o++){for(var a=1;a<=t[o];a++)i[e[r]]=[],i[e[r]][0]=n,i[e[r]][1]=o,r++,n++;n*=2}return i}function V(t){for(var e=t[0],n=t[1]-1;0<=n;)e&1<<n&&(C|=1<<B),n--,--B<0&&(255==C?(G(255),G(0)):G(C),B=7,C=0)}function G(t){I.push(t)}function Y(t){G(t>>8&255),G(255&t)}function J(t,e,n,r,i){for(var o,a=i[0],s=i[240],l=function(t,e){var n,r,i,o,a,s,l,h,u,c,f=0;for(u=0;u<8;++u){n=t[f],r=t[f+1],i=t[f+2],o=t[f+3],a=t[f+4],s=t[f+5],l=t[f+6];var p=n+(h=t[f+7]),d=n-h,g=r+l,m=r-l,y=i+s,v=i-s,w=o+a,b=o-a,x=p+w,N=p-w,L=g+y,A=g-y;t[f]=x+L,t[f+4]=x-L;var S=.707106781*(A+N);t[f+2]=N+S,t[f+6]=N-S;var _=.382683433*((x=b+v)-(A=m+d)),F=.5411961*x+_,P=1.306562965*A+_,k=.707106781*(L=v+m),I=d+k,C=d-k;t[f+5]=C+F,t[f+3]=C-F,t[f+1]=I+P,t[f+7]=I-P,f+=8}for(u=f=0;u<8;++u){n=t[f],r=t[f+8],i=t[f+16],o=t[f+24],a=t[f+32],s=t[f+40],l=t[f+48];var B=n+(h=t[f+56]),j=n-h,E=r+l,M=r-l,O=i+s,q=i-s,T=o+a,R=o-a,D=B+T,U=B-T,z=E+O,H=E-O;t[f]=D+z,t[f+32]=D-z;var W=.707106781*(H+U);t[f+16]=U+W,t[f+48]=U-W;var V=.382683433*((D=R+q)-(H=M+j)),G=.5411961*D+V,Y=1.306562965*H+V,J=.707106781*(z=q+M),X=j+J,K=j-J;t[f+40]=K+G,t[f+24]=K-G,t[f+8]=X+Y,t[f+56]=X-Y,f++}for(u=0;u<64;++u)c=t[u]*e[u],Z[u]=0<c?c+.5|0:c-.5|0;return Z}(t,e),h=0;h<64;++h)w[b[h]]=l[h];var u=w[0]-n;n=w[0],0==u?V(r[0]):(V(r[v[o=32767+u]]),V(y[o]));for(var c=63;0<c&&0==w[c];c--);if(0==c)return V(a),n;for(var f,p=1;p<=c;){for(var d=p;0==w[p]&&p<=c;++p);var g=p-d;if(16<=g){f=g>>4;for(var m=1;m<=f;++m)V(s);g&=15}o=32767+w[p],V(i[(g<<4)+v[o]]),V(y[o]),p++}return 63!=c&&V(a),n}function X(t){if(t<=0&&(t=1),100<t&&(t=100),e!=t){(function(t){for(var e=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],n=0;n<64;n++){var r=c((e[n]*t+50)/100);r<1?r=1:255<r&&(r=255),_[b[n]]=r}for(var i=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],o=0;o<64;o++){var a=c((i[o]*t+50)/100);a<1?a=1:255<a&&(a=255),F[b[o]]=a}for(var s=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],l=0,h=0;h<8;h++)for(var u=0;u<8;u++)P[l]=1/(_[b[l]]*s[h]*s[u]*8),k[l]=1/(F[b[l]]*s[h]*s[u]*8),l++})(t<50?Math.floor(5e3/t):Math.floor(200-2*t)),e=t}}this.encode=function(t,e){var n,r;(new Date).getTime();e&&X(e),I=new Array,C=0,B=7,Y(65496),Y(65504),Y(16),G(74),G(70),G(73),G(70),G(0),G(1),G(1),G(0),Y(1),Y(1),G(0),G(0),function(){Y(65499),Y(132),G(0);for(var t=0;t<64;t++)G(_[t]);G(1);for(var e=0;e<64;e++)G(F[e])}(),n=t.width,r=t.height,Y(65472),Y(17),G(8),Y(r),Y(n),G(3),G(1),G(17),G(0),G(2),G(17),G(1),G(3),G(17),G(1),function(){Y(65476),Y(418),G(0);for(var t=0;t<16;t++)G(q[t+1]);for(var e=0;e<=11;e++)G(T[e]);G(16);for(var n=0;n<16;n++)G(R[n+1]);for(var r=0;r<=161;r++)G(D[r]);G(1);for(var i=0;i<16;i++)G(U[i+1]);for(var o=0;o<=11;o++)G(z[o]);G(17);for(var a=0;a<16;a++)G(H[a+1]);for(var s=0;s<=161;s++)G(W[s])}(),Y(65498),Y(12),G(3),G(1),G(0),G(2),G(17),G(3),G(17),G(0),G(63),G(0);var i=0,o=0,a=0;C=0,B=7,this.encode.displayName="_encode_";for(var s,l,h,u,c,f,p,d,g,m=t.data,y=t.width,v=t.height,w=4*y,b=0;b<v;){for(s=0;s<w;){for(f=c=w*b+s,p=-1,g=d=0;g<64;g++)f=c+(d=g>>3)*w+(p=4*(7&g)),v<=b+d&&(f-=w*(b+1+d-v)),w<=s+p&&(f-=s+p-w+4),l=m[f++],h=m[f++],u=m[f++],j[g]=(O[l]+O[h+256>>0]+O[u+512>>0]>>16)-128,E[g]=(O[l+768>>0]+O[h+1024>>0]+O[u+1280>>0]>>16)-128,M[g]=(O[l+1280>>0]+O[h+1536>>0]+O[u+1792>>0]>>16)-128;i=J(j,P,i,N,A),o=J(E,k,o,L,S),a=J(M,k,a,L,S),s+=32}b+=8}if(0<=B){var x=[];x[1]=B+1,x[0]=(1<<B+1)-1,V(x)}return Y(65497),new Uint8Array(I)},function(){(new Date).getTime();t||(t=50),function(){for(var t=String.fromCharCode,e=0;e<256;e++)n[e]=t(e)}(),N=r(q,T),L=r(U,z),A=r(R,D),S=r(H,W),function(){for(var t=1,e=2,n=1;n<=15;n++){for(var r=t;r<e;r++)v[32767+r]=n,y[32767+r]=[],y[32767+r][1]=n,y[32767+r][0]=r;for(var i=-(e-1);i<=-t;i++)v[32767+i]=n,y[32767+i]=[],y[32767+i][1]=n,y[32767+i][0]=e-1+i;t<<=1,e<<=1}}(),function(){for(var t=0;t<256;t++)O[t]=19595*t,O[t+256>>0]=38470*t,O[t+512>>0]=7471*t+32768,O[t+768>>0]=-11059*t,O[t+1024>>0]=-21709*t,O[t+1280>>0]=32768*t+8421375,O[t+1536>>0]=-27439*t,O[t+1792>>0]=-5329*t}(),X(t),(new Date).getTime()}()}function Ft(t,e){if(this.pos=0,this.buffer=t,this.datav=new DataView(t.buffer),this.is_with_alpha=!!e,this.bottom_up=!0,this.flag=String.fromCharCode(this.buffer[0])+String.fromCharCode(this.buffer[1]),this.pos+=2,-1===["BM","BA","CI","CP","IC","PT"].indexOf(this.flag))throw new Error("Invalid BMP File");this.parseHeader(),this.parseBGR()}window.tmp=At,lt.API.adler32cs=(dt="function"==typeof ArrayBuffer&&"function"==typeof Uint8Array,gt=null,mt=function(){if(!dt)return function(){return!1};try{var t={};"function"==typeof t.Buffer&&(gt=t.Buffer)}catch(t){}return function(t){return t instanceof ArrayBuffer||null!==gt&&t instanceof gt}}(),yt=null!==gt?function(t){return new gt(t,"utf8").toString("binary")}:function(t){return unescape(encodeURIComponent(t))},vt=function(t,e){for(var n=65535&t,r=t>>>16,i=0,o=e.length;i<o;i++)n=(n+(255&e.charCodeAt(i)))%65521,r=(r+n)%65521;return(r<<16|n)>>>0},wt=function(t,e){for(var n=65535&t,r=t>>>16,i=0,o=e.length;i<o;i++)n=(n+e[i])%65521,r=(r+n)%65521;return(r<<16|n)>>>0},xt=(bt={}).Adler32=(((pt=(ft=function(t){if(!(this instanceof ft))throw new TypeError("Constructor cannot called be as a function.");if(!isFinite(t=null==t?1:+t))throw new Error("First arguments needs to be a finite number.");this.checksum=t>>>0}).prototype={}).constructor=ft).from=((ht=function(t){if(!(this instanceof ft))throw new TypeError("Constructor cannot called be as a function.");if(null==t)throw new Error("First argument needs to be a string.");this.checksum=vt(1,t.toString())}).prototype=pt,ht),ft.fromUtf8=((ut=function(t){if(!(this instanceof ft))throw new TypeError("Constructor cannot called be as a function.");if(null==t)throw new Error("First argument needs to be a string.");var e=yt(t.toString());this.checksum=vt(1,e)}).prototype=pt,ut),dt&&(ft.fromBuffer=((ct=function(t){if(!(this instanceof ft))throw new TypeError("Constructor cannot called be as a function.");if(!mt(t))throw new Error("First argument needs to be ArrayBuffer.");var e=new Uint8Array(t);return this.checksum=wt(1,e)}).prototype=pt,ct)),pt.update=function(t){if(null==t)throw new Error("First argument needs to be a string.");return t=t.toString(),this.checksum=vt(this.checksum,t)},pt.updateUtf8=function(t){if(null==t)throw new Error("First argument needs to be a string.");var e=yt(t.toString());return this.checksum=vt(this.checksum,e)},dt&&(pt.updateBuffer=function(t){if(!mt(t))throw new Error("First argument needs to be ArrayBuffer.");var e=new Uint8Array(t);return this.checksum=wt(this.checksum,e)}),pt.clone=function(){return new xt(this.checksum)},ft),bt.from=function(t){if(null==t)throw new Error("First argument needs to be a string.");return vt(1,t.toString())},bt.fromUtf8=function(t){if(null==t)throw new Error("First argument needs to be a string.");var e=yt(t.toString());return vt(1,e)},dt&&(bt.fromBuffer=function(t){if(!mt(t))throw new Error("First argument need to be ArrayBuffer.");var e=new Uint8Array(t);return wt(1,e)}),bt),function(t){t.__bidiEngine__=t.prototype.__bidiEngine__=function(t){var d,g,c,f,i,o,a,s=e,m=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],y=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],v={L:0,R:1,EN:2,AN:3,N:4,B:5,S:6},l={0:0,5:1,6:2,7:3,32:4,251:5,254:6,255:7},h=["(",")","(","<",">","<","[","]","[","{","}","{","«","»","«","‹","›","‹","⁅","⁆","⁅","⁽","⁾","⁽","₍","₎","₍","≤","≥","≤","〈","〉","〈","﹙","﹚","﹙","﹛","﹜","﹛","﹝","﹞","﹝","﹤","﹥","﹤"],u=new RegExp(/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/),w=!1,b=0;this.__bidiEngine__={};var x=function(t){var e=t.charCodeAt(),n=e>>8,r=l[n];return void 0!==r?s[256*r+(255&e)]:252===n||253===n?"AL":u.test(n)?"L":8===n?"R":"N"},p=function(t){for(var e,n=0;n<t.length;n++){if("L"===(e=x(t.charAt(n))))return!1;if("R"===e)return!0}return!1},N=function(t,e,n,r){var i,o,a,s,l=e[r];switch(l){case"L":case"R":w=!1;break;case"N":case"AN":break;case"EN":w&&(l="AN");break;case"AL":w=!0,l="R";break;case"WS":l="N";break;case"CS":r<1||r+1>=e.length||"EN"!==(i=n[r-1])&&"AN"!==i||"EN"!==(o=e[r+1])&&"AN"!==o?l="N":w&&(o="AN"),l=o===i?o:"N";break;case"ES":l="EN"===(i=0<r?n[r-1]:"B")&&r+1<e.length&&"EN"===e[r+1]?"EN":"N";break;case"ET":if(0<r&&"EN"===n[r-1]){l="EN";break}if(w){l="N";break}for(a=r+1,s=e.length;a<s&&"ET"===e[a];)a++;l=a<s&&"EN"===e[a]?"EN":"N";break;case"NSM":if(c&&!f){for(s=e.length,a=r+1;a<s&&"NSM"===e[a];)a++;if(a<s){var h=t[r],u=1425<=h&&h<=2303||64286===h;if(i=e[a],u&&("R"===i||"AL"===i)){l="R";break}}}l=r<1||"B"===(i=e[r-1])?"N":n[r-1];break;case"B":d=!(w=!1),l=b;break;case"S":g=!0,l="N";break;case"LRE":case"RLE":case"LRO":case"RLO":case"PDF":w=!1;break;case"BN":l="N"}return l},L=function(t,e,n){var r=t.split("");return n&&A(r,n,{hiLevel:b}),r.reverse(),e&&e.reverse(),r.join("")},A=function(t,e,n){var r,i,o,a,s,l=-1,h=t.length,u=0,c=[],f=b?y:m,p=[];for(g=d=w=!1,i=0;i<h;i++)p[i]=x(t[i]);for(o=0;o<h;o++){if(s=u,c[o]=N(t,p,c,o),r=240&(u=f[s][v[c[o]]]),u&=15,e[o]=a=f[u][5],0<r)if(16===r){for(i=l;i<o;i++)e[i]=1;l=-1}else l=-1;if(f[u][6])-1===l&&(l=o);else if(-1<l){for(i=l;i<o;i++)e[i]=a;l=-1}"B"===p[o]&&(e[o]=0),n.hiLevel|=a}g&&function(t,e,n){for(var r=0;r<n;r++)if("S"===t[r]){e[r]=b;for(var i=r-1;0<=i&&"WS"===t[i];i--)e[i]=b}}(p,e,h)},S=function(t,e,n,r,i){if(!(i.hiLevel<t)){if(1===t&&1===b&&!d)return e.reverse(),void(n&&n.reverse());for(var o,a,s,l,h=e.length,u=0;u<h;){if(r[u]>=t){for(s=u+1;s<h&&r[s]>=t;)s++;for(l=u,a=s-1;l<a;l++,a--)o=e[l],e[l]=e[a],e[a]=o,n&&(o=n[l],n[l]=n[a],n[a]=o);u=s}u++}}},_=function(t,e,n){var r=t.split(""),i={hiLevel:b};return n||(n=[]),A(r,n,i),function(t,e,n){if(0!==n.hiLevel&&a)for(var r,i=0;i<t.length;i++)1===e[i]&&0<=(r=h.indexOf(t[i]))&&(t[i]=h[r+1])}(r,n,i),S(2,r,e,n,i),S(1,r,e,n,i),r.join("")};return this.__bidiEngine__.doBidiReorder=function(t,e,n){if(function(t,e){if(e)for(var n=0;n<t.length;n++)e[n]=n;void 0===f&&(f=p(t)),void 0===o&&(o=p(t))}(t,e),c||!i||o)if(c&&i&&f^o)b=f?1:0,t=L(t,e,n);else if(!c&&i&&o)b=f?1:0,t=_(t,e,n),t=L(t,e);else if(!c||f||i||o){if(c&&!i&&f^o)t=L(t,e),t=f?(b=0,_(t,e,n)):(b=1,t=_(t,e,n),L(t,e));else if(c&&f&&!i&&o)b=1,t=_(t,e,n),t=L(t,e);else if(!c&&!i&&f^o){var r=a;f?(b=1,t=_(t,e,n),b=0,a=!1,t=_(t,e,n),a=r):(b=0,t=_(t,e,n),t=L(t,e),a=!(b=1),t=_(t,e,n),a=r,t=L(t,e))}}else b=0,t=_(t,e,n);else b=f?1:0,t=_(t,e,n);return t},this.__bidiEngine__.setOptions=function(t){t&&(c=t.isInputVisual,i=t.isOutputVisual,f=t.isInputRtl,o=t.isOutputRtl,a=t.isSymmetricSwapping)},this.__bidiEngine__.setOptions(t),this.__bidiEngine__};var e=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","N","N","ET","ET","ET","N","N","N","N","N","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","N","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","N","ET","ET","ET","ET","N","N","N","N","L","N","N","BN","N","N","ET","ET","EN","EN","N","L","N","N","N","EN","L","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","L","L","L","L","L","L","L","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","L","N","N","N","N","N","ET","N","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","R","NSM","R","NSM","NSM","R","NSM","NSM","R","NSM","N","N","N","N","N","N","N","N","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","N","N","N","N","N","R","R","R","R","R","N","N","N","N","N","N","N","N","N","N","N","AN","AN","AN","AN","AN","AN","N","N","AL","ET","ET","AL","CS","AL","N","N","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","N","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","N","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","N","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","N","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","N","N","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","N","N","N","N","N","N","N","N","N","N","N","N","N","N","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","R","R","N","N","N","N","R","N","N","N","N","N","WS","WS","WS","WS","WS","WS","WS","WS","WS","WS","WS","BN","BN","BN","L","R","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","WS","B","LRE","RLE","PDF","LRO","RLO","CS","ET","ET","ET","ET","ET","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","CS","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","WS","BN","BN","BN","BN","BN","N","LRI","RLI","FSI","PDI","BN","BN","BN","BN","BN","BN","EN","L","N","N","EN","EN","EN","EN","EN","EN","ES","ES","N","N","N","L","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","ES","ES","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","L","L","L","L","L","L","L","N","N","N","N","N","N","N","N","N","N","N","N","L","L","L","L","L","N","N","N","N","N","R","NSM","R","R","R","R","R","R","R","R","R","R","ES","R","R","R","R","R","R","R","R","R","R","R","R","R","N","R","R","R","R","R","N","R","N","R","R","N","R","R","N","R","R","R","R","R","R","R","R","R","R","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","CS","N","CS","N","N","CS","N","N","N","N","N","N","N","N","N","ET","N","N","ES","ES","N","N","N","N","N","ET","ET","N","N","N","N","N","AL","AL","AL","AL","AL","N","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","N","N","BN","N","N","N","ET","ET","ET","N","N","N","N","N","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","N","N","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","L","L","L","L","L","L","N","N","L","L","L","L","L","L","N","N","L","L","L","L","L","L","N","N","L","L","L","N","N","N","ET","ET","N","N","N","ET","ET","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N"],o=new t.__bidiEngine__({isInputVisual:!0});t.API.events.push(["postProcessText",function(t){var e=t.text,n=(t.x,t.y,t.options||{}),r=(t.mutex,n.lang,[]);if("[object Array]"===Object.prototype.toString.call(e)){var i=0;for(r=[],i=0;i<e.length;i+=1)"[object Array]"===Object.prototype.toString.call(e[i])?r.push([o.doBidiReorder(e[i][0]),e[i][1],e[i][2]]):r.push([o.doBidiReorder(e[i])]);t.text=r}else t.text=o.doBidiReorder(e)}])}(lt),window.tmp=_t,Ft.prototype.parseHeader=function(){if(this.fileSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.reserved=this.datav.getUint32(this.pos,!0),this.pos+=4,this.offset=this.datav.getUint32(this.pos,!0),this.pos+=4,this.headerSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.width=this.datav.getUint32(this.pos,!0),this.pos+=4,this.height=this.datav.getInt32(this.pos,!0),this.pos+=4,this.planes=this.datav.getUint16(this.pos,!0),this.pos+=2,this.bitPP=this.datav.getUint16(this.pos,!0),this.pos+=2,this.compress=this.datav.getUint32(this.pos,!0),this.pos+=4,this.rawSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.hr=this.datav.getUint32(this.pos,!0),this.pos+=4,this.vr=this.datav.getUint32(this.pos,!0),this.pos+=4,this.colors=this.datav.getUint32(this.pos,!0),this.pos+=4,this.importantColors=this.datav.getUint32(this.pos,!0),this.pos+=4,16===this.bitPP&&this.is_with_alpha&&(this.bitPP=15),this.bitPP<15){var t=0===this.colors?1<<this.bitPP:this.colors;this.palette=new Array(t);for(var e=0;e<t;e++){var n=this.datav.getUint8(this.pos++,!0),r=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0);this.palette[e]={red:i,green:r,blue:n,quad:o}}}this.height<0&&(this.height*=-1,this.bottom_up=!1)},Ft.prototype.parseBGR=function(){this.pos=this.offset;try{var t="bit"+this.bitPP,e=this.width*this.height*4;this.data=new Uint8Array(e),this[t]()}catch(t){console.log("bit decode error:"+t)}},Ft.prototype.bit1=function(){var t=Math.ceil(this.width/8),e=t%4,n=0<=this.height?this.height-1:-this.height;for(n=this.height-1;0<=n;n--){for(var r=this.bottom_up?n:this.height-1-n,i=0;i<t;i++)for(var o=this.datav.getUint8(this.pos++,!0),a=r*this.width*4+8*i*4,s=0;s<8&&8*i+s<this.width;s++){var l=this.palette[o>>7-s&1];this.data[a+4*s]=l.blue,this.data[a+4*s+1]=l.green,this.data[a+4*s+2]=l.red,this.data[a+4*s+3]=255}0!=e&&(this.pos+=4-e)}},Ft.prototype.bit4=function(){for(var t=Math.ceil(this.width/2),e=t%4,n=this.height-1;0<=n;n--){for(var r=this.bottom_up?n:this.height-1-n,i=0;i<t;i++){var o=this.datav.getUint8(this.pos++,!0),a=r*this.width*4+2*i*4,s=o>>4,l=15&o,h=this.palette[s];if(this.data[a]=h.blue,this.data[a+1]=h.green,this.data[a+2]=h.red,this.data[a+3]=255,2*i+1>=this.width)break;h=this.palette[l],this.data[a+4]=h.blue,this.data[a+4+1]=h.green,this.data[a+4+2]=h.red,this.data[a+4+3]=255}0!=e&&(this.pos+=4-e)}},Ft.prototype.bit8=function(){for(var t=this.width%4,e=this.height-1;0<=e;e--){for(var n=this.bottom_up?e:this.height-1-e,r=0;r<this.width;r++){var i=this.datav.getUint8(this.pos++,!0),o=n*this.width*4+4*r;if(i<this.palette.length){var a=this.palette[i];this.data[o]=a.red,this.data[o+1]=a.green,this.data[o+2]=a.blue,this.data[o+3]=255}else this.data[o]=255,this.data[o+1]=255,this.data[o+2]=255,this.data[o+3]=255}0!=t&&(this.pos+=4-t)}},Ft.prototype.bit15=function(){for(var t=this.width%3,e=parseInt("11111",2),n=this.height-1;0<=n;n--){for(var r=this.bottom_up?n:this.height-1-n,i=0;i<this.width;i++){var o=this.datav.getUint16(this.pos,!0);this.pos+=2;var a=(o&e)/e*255|0,s=(o>>5&e)/e*255|0,l=(o>>10&e)/e*255|0,h=o>>15?255:0,u=r*this.width*4+4*i;this.data[u]=l,this.data[u+1]=s,this.data[u+2]=a,this.data[u+3]=h}this.pos+=t}},Ft.prototype.bit16=function(){for(var t=this.width%3,e=parseInt("11111",2),n=parseInt("111111",2),r=this.height-1;0<=r;r--){for(var i=this.bottom_up?r:this.height-1-r,o=0;o<this.width;o++){var a=this.datav.getUint16(this.pos,!0);this.pos+=2;var s=(a&e)/e*255|0,l=(a>>5&n)/n*255|0,h=(a>>11)/e*255|0,u=i*this.width*4+4*o;this.data[u]=h,this.data[u+1]=l,this.data[u+2]=s,this.data[u+3]=255}this.pos+=t}},Ft.prototype.bit24=function(){for(var t=this.height-1;0<=t;t--){for(var e=this.bottom_up?t:this.height-1-t,n=0;n<this.width;n++){var r=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0),a=e*this.width*4+4*n;this.data[a]=o,this.data[a+1]=i,this.data[a+2]=r,this.data[a+3]=255}this.pos+=this.width%4}},Ft.prototype.bit32=function(){for(var t=this.height-1;0<=t;t--)for(var e=this.bottom_up?t:this.height-1-t,n=0;n<this.width;n++){var r=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0),a=this.datav.getUint8(this.pos++,!0),s=e*this.width*4+4*n;this.data[s]=o,this.data[s+1]=i,this.data[s+2]=r,this.data[s+3]=a}},Ft.prototype.getData=function(){return this.data},window.tmp=Ft,
  417. /*
  418. Copyright (c) 2013 Gildas Lormeau. All rights reserved.
  419. Redistribution and use in source and binary forms, with or without
  420. modification, are permitted provided that the following conditions are met:
  421. 1. Redistributions of source code must retain the above copyright notice,
  422. this list of conditions and the following disclaimer.
  423. 2. Redistributions in binary form must reproduce the above copyright
  424. notice, this list of conditions and the following disclaimer in
  425. the documentation and/or other materials provided with the distribution.
  426. 3. The names of the authors may not be used to endorse or promote products
  427. derived from this software without specific prior written permission.
  428. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  429. INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  430. FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
  431. INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
  432. INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  433. LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
  434. OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  435. LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  436. NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  437. EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  438. */
  439. function(t){var d=15,g=573,e=[0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29];function ct(){var p=this;function l(t,e){for(var n=0;n|=1&t,t>>>=1,n<<=1,0<--e;);return n>>>1}p.build_tree=function(t){var e,n,r,i=p.dyn_tree,o=p.stat_desc.static_tree,a=p.stat_desc.elems,s=-1;for(t.heap_len=0,t.heap_max=g,e=0;e<a;e++)0!==i[2*e]?(t.heap[++t.heap_len]=s=e,t.depth[e]=0):i[2*e+1]=0;for(;t.heap_len<2;)i[2*(r=t.heap[++t.heap_len]=s<2?++s:0)]=1,t.depth[r]=0,t.opt_len--,o&&(t.static_len-=o[2*r+1]);for(p.max_code=s,e=Math.floor(t.heap_len/2);1<=e;e--)t.pqdownheap(i,e);for(r=a;e=t.heap[1],t.heap[1]=t.heap[t.heap_len--],t.pqdownheap(i,1),n=t.heap[1],t.heap[--t.heap_max]=e,t.heap[--t.heap_max]=n,i[2*r]=i[2*e]+i[2*n],t.depth[r]=Math.max(t.depth[e],t.depth[n])+1,i[2*e+1]=i[2*n+1]=r,t.heap[1]=r++,t.pqdownheap(i,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t){var e,n,r,i,o,a,s=p.dyn_tree,l=p.stat_desc.static_tree,h=p.stat_desc.extra_bits,u=p.stat_desc.extra_base,c=p.stat_desc.max_length,f=0;for(i=0;i<=d;i++)t.bl_count[i]=0;for(s[2*t.heap[t.heap_max]+1]=0,e=t.heap_max+1;e<g;e++)c<(i=s[2*s[2*(n=t.heap[e])+1]+1]+1)&&(i=c,f++),s[2*n+1]=i,n>p.max_code||(t.bl_count[i]++,o=0,u<=n&&(o=h[n-u]),a=s[2*n],t.opt_len+=a*(i+o),l&&(t.static_len+=a*(l[2*n+1]+o)));if(0!==f){do{for(i=c-1;0===t.bl_count[i];)i--;t.bl_count[i]--,t.bl_count[i+1]+=2,t.bl_count[c]--,f-=2}while(0<f);for(i=c;0!==i;i--)for(n=t.bl_count[i];0!==n;)(r=t.heap[--e])>p.max_code||(s[2*r+1]!=i&&(t.opt_len+=(i-s[2*r+1])*s[2*r],s[2*r+1]=i),n--)}}(t),function(t,e,n){var r,i,o,a=[],s=0;for(r=1;r<=d;r++)a[r]=s=s+n[r-1]<<1;for(i=0;i<=e;i++)0!==(o=t[2*i+1])&&(t[2*i]=l(a[o]++,o))}(i,p.max_code,t.bl_count)}}function ft(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i}ct._length_code=[0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28],ct.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],ct.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],ct.d_code=function(t){return t<256?e[t]:e[256+(t>>>7)]},ct.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ct.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],ct.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ct.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ft.static_ltree=[12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8],ft.static_dtree=[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5],ft.static_l_desc=new ft(ft.static_ltree,ct.extra_lbits,257,286,d),ft.static_d_desc=new ft(ft.static_dtree,ct.extra_dbits,0,30,d),ft.static_bl_desc=new ft(null,ct.extra_blbits,0,19,7);function n(t,e,n,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=r,this.func=i}var pt=[new n(0,0,0,0,0),new n(4,4,8,4,1),new n(4,5,16,8,1),new n(4,6,32,32,1),new n(4,4,16,16,2),new n(8,16,32,32,2),new n(8,16,128,128,2),new n(8,32,128,256,2),new n(32,128,258,1024,2),new n(32,258,258,4096,2)],dt=["need dictionary","stream end","","","stream error","data error","","buffer error","",""];function gt(t,e,n,r){var i=t[2*e],o=t[2*n];return i<o||i==o&&r[e]<=r[n]}function r(){var l,h,u,c,f,p,d,g,i,m,y,v,w,a,b,x,N,L,A,S,_,F,P,k,I,C,B,j,E,M,s,O,q,T,R,D,U,o,z,H,W,V=this,G=new ct,Y=new ct,J=new ct;function X(){var t;for(t=0;t<286;t++)s[2*t]=0;for(t=0;t<30;t++)O[2*t]=0;for(t=0;t<19;t++)q[2*t]=0;s[512]=1,V.opt_len=V.static_len=0,D=o=0}function K(t,e){var n,r,i=-1,o=t[1],a=0,s=7,l=4;for(0===o&&(s=138,l=3),t[2*(e+1)+1]=65535,n=0;n<=e;n++)r=o,o=t[2*(n+1)+1],++a<s&&r==o||(a<l?q[2*r]+=a:0!==r?(r!=i&&q[2*r]++,q[32]++):a<=10?q[34]++:q[36]++,i=r,l=(a=0)===o?(s=138,3):r==o?(s=6,3):(s=7,4))}function Z(t){V.pending_buf[V.pending++]=t}function Q(t){Z(255&t),Z(t>>>8&255)}function $(t,e){var n,r=e;16-r<W?(Q(H|=(n=t)<<W&65535),H=n>>>16-W,W+=r-16):(H|=t<<W&65535,W+=r)}function tt(t,e){var n=2*t;$(65535&e[n],65535&e[n+1])}function et(t,e){var n,r,i=-1,o=t[1],a=0,s=7,l=4;for(0===o&&(s=138,l=3),n=0;n<=e;n++)if(r=o,o=t[2*(n+1)+1],!(++a<s&&r==o)){if(a<l)for(;tt(r,q),0!=--a;);else 0!==r?(r!=i&&(tt(r,q),a--),tt(16,q),$(a-3,2)):a<=10?(tt(17,q),$(a-3,3)):(tt(18,q),$(a-11,7));i=r,l=(a=0)===o?(s=138,3):r==o?(s=6,3):(s=7,4)}}function nt(){16==W?(Q(H),W=H=0):8<=W&&(Z(255&H),H>>>=8,W-=8)}function rt(t,e){var n,r,i;if(V.pending_buf[U+2*D]=t>>>8&255,V.pending_buf[U+2*D+1]=255&t,V.pending_buf[T+D]=255&e,D++,0===t?s[2*e]++:(o++,t--,s[2*(ct._length_code[e]+256+1)]++,O[2*ct.d_code(t)]++),0==(8191&D)&&2<B){for(n=8*D,r=_-N,i=0;i<30;i++)n+=O[2*i]*(5+ct.extra_dbits[i]);if(n>>>=3,o<Math.floor(D/2)&&n<Math.floor(r/2))return!0}return D==R-1}function it(t,e){var n,r,i,o,a=0;if(0!==D)for(;n=V.pending_buf[U+2*a]<<8&65280|255&V.pending_buf[U+2*a+1],r=255&V.pending_buf[T+a],a++,0===n?tt(r,t):(tt((i=ct._length_code[r])+256+1,t),0!==(o=ct.extra_lbits[i])&&$(r-=ct.base_length[i],o),tt(i=ct.d_code(--n),e),0!==(o=ct.extra_dbits[i])&&$(n-=ct.base_dist[i],o)),a<D;);tt(256,t),z=t[513]}function ot(){8<W?Q(H):0<W&&Z(255&H),W=H=0}function at(t,e,n){var r,i,o;$(0+(n?1:0),3),r=t,i=e,o=!0,ot(),z=8,o&&(Q(i),Q(~i)),V.pending_buf.set(g.subarray(r,r+i),V.pending),V.pending+=i}function e(t,e,n){var r,i,o=0;0<B?(G.build_tree(V),Y.build_tree(V),o=function(){var t;for(K(s,G.max_code),K(O,Y.max_code),J.build_tree(V),t=18;3<=t&&0===q[2*ct.bl_order[t]+1];t--);return V.opt_len+=3*(t+1)+5+5+4,t}(),r=V.opt_len+3+7>>>3,(i=V.static_len+3+7>>>3)<=r&&(r=i)):r=i=e+5,e+4<=r&&-1!=t?at(t,e,n):i==r?($(2+(n?1:0),3),it(ft.static_ltree,ft.static_dtree)):($(4+(n?1:0),3),function(t,e,n){var r;for($(t-257,5),$(e-1,5),$(n-4,4),r=0;r<n;r++)$(q[2*ct.bl_order[r]+1],3);et(s,t-1),et(O,e-1)}(G.max_code+1,Y.max_code+1,o+1),it(s,O)),X(),n&&ot()}function st(t){e(0<=N?N:-1,_-N,t),N=_,l.flush_pending()}function lt(){var t,e,n,r;do{if(0===(r=i-P-_)&&0===_&&0===P)r=f;else if(-1==r)r--;else if(f+f-262<=_){for(g.set(g.subarray(f,f+f),0),F-=f,_-=f,N-=f,n=t=w;e=65535&y[--n],y[n]=f<=e?e-f:0,0!=--t;);for(n=t=f;e=65535&m[--n],m[n]=f<=e?e-f:0,0!=--t;);r+=f}if(0===l.avail_in)return;t=l.read_buf(g,_+P,r),3<=(P+=t)&&(v=((v=255&g[_])<<x^255&g[_+1])&b)}while(P<262&&0!==l.avail_in)}function ht(t){var e,n,r=I,i=_,o=k,a=f-262<_?_-(f-262):0,s=M,l=d,h=_+258,u=g[i+o-1],c=g[i+o];E<=k&&(r>>=2),P<s&&(s=P);do{if(g[(e=t)+o]==c&&g[e+o-1]==u&&g[e]==g[i]&&g[++e]==g[i+1]){i+=2,e++;do{}while(g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&i<h);if(n=258-(h-i),i=h-258,o<n){if(F=t,s<=(o=n))break;u=g[i+o-1],c=g[i+o]}}}while((t=65535&m[t&l])>a&&0!=--r);return o<=P?o:P}function ut(t){return t.total_in=t.total_out=0,t.msg=null,V.pending=0,V.pending_out=0,h=113,c=0,G.dyn_tree=s,G.stat_desc=ft.static_l_desc,Y.dyn_tree=O,Y.stat_desc=ft.static_d_desc,J.dyn_tree=q,J.stat_desc=ft.static_bl_desc,W=H=0,z=8,X(),function(){var t;for(i=2*f,t=y[w-1]=0;t<w-1;t++)y[t]=0;C=pt[B].max_lazy,E=pt[B].good_length,M=pt[B].nice_length,I=pt[B].max_chain,L=k=2,v=S=P=N=_=0}(),0}V.depth=[],V.bl_count=[],V.heap=[],s=[],O=[],q=[],V.pqdownheap=function(t,e){for(var n=V.heap,r=n[e],i=e<<1;i<=V.heap_len&&(i<V.heap_len&&gt(t,n[i+1],n[i],V.depth)&&i++,!gt(t,r,n[i],V.depth));)n[e]=n[i],e=i,i<<=1;n[e]=r},V.deflateInit=function(t,e,n,r,i,o){return r||(r=8),i||(i=8),o||(o=0),t.msg=null,-1==e&&(e=6),i<1||9<i||8!=r||n<9||15<n||e<0||9<e||o<0||2<o?-2:(t.dstate=V,d=(f=1<<(p=n))-1,b=(w=1<<(a=i+7))-1,x=Math.floor((a+3-1)/3),g=new Uint8Array(2*f),m=[],y=[],R=1<<i+6,V.pending_buf=new Uint8Array(4*R),u=4*R,U=Math.floor(R/2),T=3*R,B=e,j=o,ut(t))},V.deflateEnd=function(){return 42!=h&&113!=h&&666!=h?-2:(V.pending_buf=null,g=m=y=null,V.dstate=null,113==h?-3:0)},V.deflateParams=function(t,e,n){var r=0;return-1==e&&(e=6),e<0||9<e||n<0||2<n?-2:(pt[B].func!=pt[e].func&&0!==t.total_in&&(r=t.deflate(1)),B!=e&&(C=pt[B=e].max_lazy,E=pt[B].good_length,M=pt[B].nice_length,I=pt[B].max_chain),j=n,r)},V.deflateSetDictionary=function(t,e,n){var r,i=n,o=0;if(!e||42!=h)return-2;if(i<3)return 0;for(f-262<i&&(o=n-(i=f-262)),g.set(e.subarray(o,o+i),0),N=_=i,v=((v=255&g[0])<<x^255&g[1])&b,r=0;r<=i-3;r++)v=(v<<x^255&g[r+2])&b,m[r&d]=y[v],y[v]=r;return 0},V.deflate=function(t,e){var n,r,i,o,a,s;if(4<e||e<0)return-2;if(!t.next_out||!t.next_in&&0!==t.avail_in||666==h&&4!=e)return t.msg=dt[4],-2;if(0===t.avail_out)return t.msg=dt[7],-5;if(l=t,o=c,c=e,42==h&&(r=8+(p-8<<4)<<8,3<(i=(B-1&255)>>1)&&(i=3),r|=i<<6,0!==_&&(r|=32),h=113,Z((s=r+=31-r%31)>>8&255),Z(255&s)),0!==V.pending){if(l.flush_pending(),0===l.avail_out)return c=-1,0}else if(0===l.avail_in&&e<=o&&4!=e)return l.msg=dt[7],-5;if(666==h&&0!==l.avail_in)return t.msg=dt[7],-5;if(0!==l.avail_in||0!==P||0!=e&&666!=h){switch(a=-1,pt[B].func){case 0:a=function(t){var e,n=65535;for(u-5<n&&(n=u-5);;){if(P<=1){if(lt(),0===P&&0==t)return 0;if(0===P)break}if(_+=P,e=N+n,((P=0)===_||e<=_)&&(P=_-e,_=e,st(!1),0===l.avail_out))return 0;if(f-262<=_-N&&(st(!1),0===l.avail_out))return 0}return st(4==t),0===l.avail_out?4==t?2:0:4==t?3:1}(e);break;case 1:a=function(t){for(var e,n=0;;){if(P<262){if(lt(),P<262&&0==t)return 0;if(0===P)break}if(3<=P&&(v=(v<<x^255&g[_+2])&b,n=65535&y[v],m[_&d]=y[v],y[v]=_),0!==n&&(_-n&65535)<=f-262&&2!=j&&(L=ht(n)),3<=L)if(e=rt(_-F,L-3),P-=L,L<=C&&3<=P){for(L--;v=(v<<x^255&g[++_+2])&b,n=65535&y[v],m[_&d]=y[v],y[v]=_,0!=--L;);_++}else _+=L,L=0,v=((v=255&g[_])<<x^255&g[_+1])&b;else e=rt(0,255&g[_]),P--,_++;if(e&&(st(!1),0===l.avail_out))return 0}return st(4==t),0===l.avail_out?4==t?2:0:4==t?3:1}(e);break;case 2:a=function(t){for(var e,n,r=0;;){if(P<262){if(lt(),P<262&&0==t)return 0;if(0===P)break}if(3<=P&&(v=(v<<x^255&g[_+2])&b,r=65535&y[v],m[_&d]=y[v],y[v]=_),k=L,A=F,L=2,0!==r&&k<C&&(_-r&65535)<=f-262&&(2!=j&&(L=ht(r)),L<=5&&(1==j||3==L&&4096<_-F)&&(L=2)),3<=k&&L<=k){for(n=_+P-3,e=rt(_-1-A,k-3),P-=k-1,k-=2;++_<=n&&(v=(v<<x^255&g[_+2])&b,r=65535&y[v],m[_&d]=y[v],y[v]=_),0!=--k;);if(S=0,L=2,_++,e&&(st(!1),0===l.avail_out))return 0}else if(0!==S){if((e=rt(0,255&g[_-1]))&&st(!1),_++,P--,0===l.avail_out)return 0}else S=1,_++,P--}return 0!==S&&(e=rt(0,255&g[_-1]),S=0),st(4==t),0===l.avail_out?4==t?2:0:4==t?3:1}(e)}if(2!=a&&3!=a||(h=666),0==a||2==a)return 0===l.avail_out&&(c=-1),0;if(1==a){if(1==e)$(2,3),tt(256,ft.static_ltree),nt(),1+z+10-W<9&&($(2,3),tt(256,ft.static_ltree),nt()),z=7;else if(at(0,0,!1),3==e)for(n=0;n<w;n++)y[n]=0;if(l.flush_pending(),0===l.avail_out)return c=-1,0}}return 4!=e?0:1}}function i(){this.next_in_index=0,this.next_out_index=0,this.avail_in=0,this.total_in=0,this.avail_out=0,this.total_out=0}i.prototype={deflateInit:function(t,e){return this.dstate=new r,e||(e=d),this.dstate.deflateInit(this,t,e)},deflate:function(t){return this.dstate?this.dstate.deflate(this,t):-2},deflateEnd:function(){if(!this.dstate)return-2;var t=this.dstate.deflateEnd();return this.dstate=null,t},deflateParams:function(t,e){return this.dstate?this.dstate.deflateParams(this,t,e):-2},deflateSetDictionary:function(t,e){return this.dstate?this.dstate.deflateSetDictionary(this,t,e):-2},read_buf:function(t,e,n){var r=this.avail_in;return n<r&&(r=n),0===r?0:(this.avail_in-=r,t.set(this.next_in.subarray(this.next_in_index,this.next_in_index+r),e),this.next_in_index+=r,this.total_in+=r,r)},flush_pending:function(){var t=this,e=t.dstate.pending;e>t.avail_out&&(e=t.avail_out),0!==e&&(t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out,t.dstate.pending_out+e),t.next_out_index),t.next_out_index+=e,t.dstate.pending_out+=e,t.total_out+=e,t.avail_out-=e,t.dstate.pending-=e,0===t.dstate.pending&&(t.dstate.pending_out=0))}};var o=t.zip||t;o.Deflater=o._jzlib_Deflater=function(t){var s=new i,l=new Uint8Array(512),e=t?t.level:-1;void 0===e&&(e=-1),s.deflateInit(e),s.next_out=l,this.append=function(t,e){var n,r=[],i=0,o=0,a=0;if(t.length){s.next_in_index=0,s.next_in=t,s.avail_in=t.length;do{if(s.next_out_index=0,s.avail_out=512,0!=s.deflate(0))throw new Error("deflating: "+s.msg);s.next_out_index&&(512==s.next_out_index?r.push(new Uint8Array(l)):r.push(new Uint8Array(l.subarray(0,s.next_out_index)))),a+=s.next_out_index,e&&0<s.next_in_index&&s.next_in_index!=i&&(e(s.next_in_index),i=s.next_in_index)}while(0<s.avail_in||0===s.avail_out);return n=new Uint8Array(a),r.forEach(function(t){n.set(t,o),o+=t.length}),n}},this.flush=function(){var t,e,n=[],r=0,i=0;do{if(s.next_out_index=0,s.avail_out=512,1!=(t=s.deflate(4))&&0!=t)throw new Error("deflating: "+s.msg);0<512-s.avail_out&&n.push(new Uint8Array(l.subarray(0,s.next_out_index))),i+=s.next_out_index}while(0<s.avail_in||0===s.avail_out);return s.deflateEnd(),e=new Uint8Array(i),n.forEach(function(t){e.set(t,r),r+=t.length}),e}}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof global&&global||Function('return typeof this === "object" && this.content')()||Function("return this")()),("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof global&&global||Function('return typeof this === "object" && this.content')()||Function("return this")()).RGBColor=function(t){var e;t=t||"",this.ok=!1,"#"==t.charAt(0)&&(t=t.substr(1,6)),t=(t=t.replace(/ /g,"")).toLowerCase();var n={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",feldspar:"d19275",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslateblue:"8470ff",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};for(var r in n)t==r&&(t=n[r]);for(var i=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(t){return[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/,example:["#00ff00","336699"],process:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:["#fb0","f0f"],process:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}}],o=0;o<i.length;o++){var a=i[o].re,s=i[o].process,l=a.exec(t);l&&(e=s(l),this.r=e[0],this.g=e[1],this.b=e[2],this.ok=!0)}this.r=this.r<0||isNaN(this.r)?0:255<this.r?255:this.r,this.g=this.g<0||isNaN(this.g)?0:255<this.g?255:this.g,this.b=this.b<0||isNaN(this.b)?0:255<this.b?255:this.b,this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"},this.toHex=function(){var t=this.r.toString(16),e=this.g.toString(16),n=this.b.toString(16);return 1==t.length&&(t="0"+t),1==e.length&&(e="0"+e),1==n.length&&(n="0"+n),"#"+t+e+n}},function(t){var n="+".charCodeAt(0),r="/".charCodeAt(0),i="0".charCodeAt(0),o="a".charCodeAt(0),a="A".charCodeAt(0),s="-".charCodeAt(0),l="_".charCodeAt(0),u=function(t){var e=t.charCodeAt(0);return e===n||e===s?62:e===r||e===l?63:e<i?-1:e<i+10?e-i+26+26:e<a+26?e-a:e<o+26?e-o+26:void 0};t.API.TTFFont=function(){function i(t,e,n){var r;if(this.rawData=t,r=this.contents=new J(t),this.contents.pos=4,"ttcf"===r.readString(4)){if(!e)throw new Error("Must specify a font name for TTC files.");throw new Error("Font "+e+" not found in TTC file.")}r.pos=0,this.parse(),this.subset=new P(this),this.registerTTF()}return i.open=function(t,e,n,r){if("string"!=typeof n)throw new Error("Invalid argument supplied in TTFFont.open");return new i(function(t){var e,n,r,i,o,a;if(0<t.length%4)throw new Error("Invalid string. Length must be a multiple of 4");var s=t.length;o="="===t.charAt(s-2)?2:"="===t.charAt(s-1)?1:0,a=new Uint8Array(3*t.length/4-o),r=0<o?t.length-4:t.length;var l=0;function h(t){a[l++]=t}for(n=e=0;e<r;e+=4,n+=3)h((16711680&(i=u(t.charAt(e))<<18|u(t.charAt(e+1))<<12|u(t.charAt(e+2))<<6|u(t.charAt(e+3))))>>16),h((65280&i)>>8),h(255&i);return 2===o?h(255&(i=u(t.charAt(e))<<2|u(t.charAt(e+1))>>4)):1===o&&(h((i=u(t.charAt(e))<<10|u(t.charAt(e+1))<<4|u(t.charAt(e+2))>>2)>>8&255),h(255&i)),a}(n),e,r)},i.prototype.parse=function(){return this.directory=new e(this.contents),this.head=new p(this),this.name=new b(this),this.cmap=new y(this),this.toUnicode=new Map,this.hhea=new g(this),this.maxp=new x(this),this.hmtx=new N(this),this.post=new v(this),this.os2=new m(this),this.loca=new F(this),this.glyf=new A(this),this.ascender=this.os2.exists&&this.os2.ascender||this.hhea.ascender,this.decender=this.os2.exists&&this.os2.decender||this.hhea.decender,this.lineGap=this.os2.exists&&this.os2.lineGap||this.hhea.lineGap,this.bbox=[this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax]},i.prototype.registerTTF=function(){var i,t,e,n,r;if(this.scaleFactor=1e3/this.head.unitsPerEm,this.bbox=function(){var t,e,n,r;for(r=[],t=0,e=(n=this.bbox).length;t<e;t++)i=n[t],r.push(Math.round(i*this.scaleFactor));return r}.call(this),this.stemV=0,this.post.exists?(e=255&(n=this.post.italic_angle),!0&(t=n>>16)&&(t=-(1+(65535^t))),this.italicAngle=+(t+"."+e)):this.italicAngle=0,this.ascender=Math.round(this.ascender*this.scaleFactor),this.decender=Math.round(this.decender*this.scaleFactor),this.lineGap=Math.round(this.lineGap*this.scaleFactor),this.capHeight=this.os2.exists&&this.os2.capHeight||this.ascender,this.xHeight=this.os2.exists&&this.os2.xHeight||0,this.familyClass=(this.os2.exists&&this.os2.familyClass||0)>>8,this.isSerif=1===(r=this.familyClass)||2===r||3===r||4===r||5===r||7===r,this.isScript=10===this.familyClass,this.flags=0,this.post.isFixedPitch&&(this.flags|=1),this.isSerif&&(this.flags|=2),this.isScript&&(this.flags|=8),0!==this.italicAngle&&(this.flags|=64),this.flags|=32,!this.cmap.unicode)throw new Error("No unicode cmap for font")},i.prototype.characterToGlyph=function(t){var e;return(null!=(e=this.cmap.unicode)?e.codeMap[t]:void 0)||0},i.prototype.widthOfGlyph=function(t){var e;return e=1e3/this.head.unitsPerEm,this.hmtx.forGlyph(t).advance*e},i.prototype.widthOfString=function(t,e,n){var r,i,o,a,s;for(i=a=o=0,s=(t=""+t).length;0<=s?a<s:s<a;i=0<=s?++a:--a)r=t.charCodeAt(i),o+=this.widthOfGlyph(this.characterToGlyph(r))+n*(1e3/e)||0;return o*(e/1e3)},i.prototype.lineHeight=function(t,e){var n;return null==e&&(e=!1),n=e?this.lineGap:0,(this.ascender+n-this.decender)/1e3*t},i}();var h,J=function(){function t(t){this.data=null!=t?t:[],this.pos=0,this.length=this.data.length}return t.prototype.readByte=function(){return this.data[this.pos++]},t.prototype.writeByte=function(t){return this.data[this.pos++]=t},t.prototype.readUInt32=function(){return 16777216*this.readByte()+(this.readByte()<<16)+(this.readByte()<<8)+this.readByte()},t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255),this.writeByte(t>>16&255),this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt32=function(){var t;return 2147483648<=(t=this.readUInt32())?t-4294967296:t},t.prototype.writeInt32=function(t){return t<0&&(t+=4294967296),this.writeUInt32(t)},t.prototype.readUInt16=function(){return this.readByte()<<8|this.readByte()},t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt16=function(){var t;return 32768<=(t=this.readUInt16())?t-65536:t},t.prototype.writeInt16=function(t){return t<0&&(t+=65536),this.writeUInt16(t)},t.prototype.readString=function(t){var e,n,r;for(n=[],e=r=0;0<=t?r<t:t<r;e=0<=t?++r:--r)n[e]=String.fromCharCode(this.readByte());return n.join("")},t.prototype.writeString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t.length;0<=r?n<r:r<n;e=0<=r?++n:--n)i.push(this.writeByte(t.charCodeAt(e)));return i},t.prototype.readShort=function(){return this.readInt16()},t.prototype.writeShort=function(t){return this.writeInt16(t)},t.prototype.readLongLong=function(){var t,e,n,r,i,o,a,s;return t=this.readByte(),e=this.readByte(),n=this.readByte(),r=this.readByte(),i=this.readByte(),o=this.readByte(),a=this.readByte(),s=this.readByte(),128&t?-1*(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^n)+4294967296*(255^r)+16777216*(255^i)+65536*(255^o)+256*(255^a)+(255^s)+1):72057594037927940*t+281474976710656*e+1099511627776*n+4294967296*r+16777216*i+65536*o+256*a+s},t.prototype.writeLongLong=function(t){var e,n;return e=Math.floor(t/4294967296),n=4294967295&t,this.writeByte(e>>24&255),this.writeByte(e>>16&255),this.writeByte(e>>8&255),this.writeByte(255&e),this.writeByte(n>>24&255),this.writeByte(n>>16&255),this.writeByte(n>>8&255),this.writeByte(255&n)},t.prototype.readInt=function(){return this.readInt32()},t.prototype.writeInt=function(t){return this.writeInt32(t)},t.prototype.read=function(t){var e,n;for(e=[],n=0;0<=t?n<t:t<n;0<=t?++n:--n)e.push(this.readByte());return e},t.prototype.write=function(t){var e,n,r,i;for(i=[],n=0,r=t.length;n<r;n++)e=t[n],i.push(this.writeByte(e));return i},t}(),e=function(){var d;function t(t){var e,n,r;for(this.scalarType=t.readInt(),this.tableCount=t.readShort(),this.searchRange=t.readShort(),this.entrySelector=t.readShort(),this.rangeShift=t.readShort(),this.tables={},n=0,r=this.tableCount;0<=r?n<r:r<n;0<=r?++n:--n)e={tag:t.readString(4),checksum:t.readInt(),offset:t.readInt(),length:t.readInt()},this.tables[e.tag]=e}return t.prototype.encode=function(t){var e,n,r,i,o,a,s,l,h,u,c,f,p;for(p in c=Object.keys(t).length,a=Math.log(2),h=16*Math.floor(Math.log(c)/a),i=Math.floor(h/a),l=16*c-h,(n=new J).writeInt(this.scalarType),n.writeShort(c),n.writeShort(h),n.writeShort(i),n.writeShort(l),r=16*c,s=n.pos+r,o=null,f=[],t)for(u=t[p],n.writeString(p),n.writeInt(d(u)),n.writeInt(s),n.writeInt(u.length),f=f.concat(u),"head"===p&&(o=s),s+=u.length;s%4;)f.push(0),s++;return n.write(f),e=2981146554-d(n.data),n.pos=o+8,n.writeUInt32(e),n.data},d=function(t){var e,n,r,i;for(t=L.call(t);t.length%4;)t.push(0);for(n=new J(t),r=e=0,i=t.length;r<i;r+=4)e+=n.readUInt32();return 4294967295&e},t}(),c={}.hasOwnProperty,f=function(t,e){for(var n in e)c.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t}return r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype,t};h=function(){function t(t){var e;this.file=t,e=this.file.directory.tables[this.tag],this.exists=!!e,e&&(this.offset=e.offset,this.length=e.length,this.parse(this.file.contents))}return t.prototype.parse=function(){},t.prototype.encode=function(){},t.prototype.raw=function(){return this.exists?(this.file.contents.pos=this.offset,this.file.contents.read(this.length)):null},t}();var p=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="head",e.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.revision=t.readInt(),this.checkSumAdjustment=t.readInt(),this.magicNumber=t.readInt(),this.flags=t.readShort(),this.unitsPerEm=t.readShort(),this.created=t.readLongLong(),this.modified=t.readLongLong(),this.xMin=t.readShort(),this.yMin=t.readShort(),this.xMax=t.readShort(),this.yMax=t.readShort(),this.macStyle=t.readShort(),this.lowestRecPPEM=t.readShort(),this.fontDirectionHint=t.readShort(),this.indexToLocFormat=t.readShort(),this.glyphDataFormat=t.readShort()},e.prototype.encode=function(t){var e;return(e=new J).writeInt(this.version),e.writeInt(this.revision),e.writeInt(this.checkSumAdjustment),e.writeInt(this.magicNumber),e.writeShort(this.flags),e.writeShort(this.unitsPerEm),e.writeLongLong(this.created),e.writeLongLong(this.modified),e.writeShort(this.xMin),e.writeShort(this.yMin),e.writeShort(this.xMax),e.writeShort(this.yMax),e.writeShort(this.macStyle),e.writeShort(this.lowestRecPPEM),e.writeShort(this.fontDirectionHint),e.writeShort(t),e.writeShort(this.glyphDataFormat),e.data},e}(),d=function(){function t(n,t){var e,r,i,o,a,s,l,h,u,c,f,p,d,g,m,y,v,w;switch(this.platformID=n.readUInt16(),this.encodingID=n.readShort(),this.offset=t+n.readInt(),u=n.pos,n.pos=this.offset,this.format=n.readUInt16(),this.length=n.readUInt16(),this.language=n.readUInt16(),this.isUnicode=3===this.platformID&&1===this.encodingID&&4===this.format||0===this.platformID&&4===this.format,this.codeMap={},this.format){case 0:for(s=m=0;m<256;s=++m)this.codeMap[s]=n.readByte();break;case 4:for(f=n.readUInt16(),c=f/2,n.pos+=6,i=function(){var t,e;for(e=[],s=t=0;0<=c?t<c:c<t;s=0<=c?++t:--t)e.push(n.readUInt16());return e}(),n.pos+=2,d=function(){var t,e;for(e=[],s=t=0;0<=c?t<c:c<t;s=0<=c?++t:--t)e.push(n.readUInt16());return e}(),l=function(){var t,e;for(e=[],s=t=0;0<=c?t<c:c<t;s=0<=c?++t:--t)e.push(n.readUInt16());return e}(),h=function(){var t,e;for(e=[],s=t=0;0<=c?t<c:c<t;s=0<=c?++t:--t)e.push(n.readUInt16());return e}(),r=(this.length-n.pos+this.offset)/2,a=function(){var t,e;for(e=[],s=t=0;0<=r?t<r:r<t;s=0<=r?++t:--t)e.push(n.readUInt16());return e}(),s=y=0,w=i.length;y<w;s=++y)for(g=i[s],e=v=p=d[s];p<=g?v<=g:g<=v;e=p<=g?++v:--v)0===h[s]?o=e+l[s]:0!==(o=a[h[s]/2+(e-p)-(c-s)]||0)&&(o+=l[s]),this.codeMap[e]=65535&o}n.pos=u}return t.encode=function(t,e){var n,r,i,o,a,s,l,h,u,c,f,p,d,g,m,y,v,w,b,x,N,L,A,S,_,F,P,k,I,C,B,j,E,M,O,q,T,R,D,U,z,H,W,V,G,Y;switch(k=new J,o=Object.keys(t).sort(function(t,e){return t-e}),e){case"macroman":for(d=0,g=function(){var t,e;for(e=[],p=t=0;t<256;p=++t)e.push(0);return e}(),y={0:0},i={},I=0,E=o.length;I<E;I++)null==y[W=t[r=o[I]]]&&(y[W]=++d),i[r]={old:t[r],new:y[t[r]]},g[r]=y[t[r]];return k.writeUInt16(1),k.writeUInt16(0),k.writeUInt32(12),k.writeUInt16(0),k.writeUInt16(262),k.writeUInt16(0),k.write(g),{charMap:i,subtable:k.data,maxGlyphID:d+1};case"unicode":for(F=[],u=[],y={},n={},m=l=null,C=v=0,M=o.length;C<M;C++)null==y[b=t[r=o[C]]]&&(y[b]=++v),n[r]={old:b,new:y[b]},a=y[b]-r,null!=m&&a===l||(m&&u.push(m),F.push(r),l=a),m=r;for(m&&u.push(m),u.push(65535),F.push(65535),S=2*(A=F.length),L=2*Math.pow(Math.log(A)/Math.LN2,2),c=Math.log(L/2)/Math.LN2,N=2*A-L,s=[],x=[],f=[],p=B=0,O=F.length;B<O;p=++B){if(_=F[p],h=u[p],65535===_){s.push(0),x.push(0);break}if(32768<=_-(P=n[_].new))for(s.push(0),x.push(2*(f.length+A-p)),r=j=_;_<=h?j<=h:h<=j;r=_<=h?++j:--j)f.push(n[r].new);else s.push(P-_),x.push(0)}for(k.writeUInt16(3),k.writeUInt16(1),k.writeUInt32(12),k.writeUInt16(4),k.writeUInt16(16+8*A+2*f.length),k.writeUInt16(0),k.writeUInt16(S),k.writeUInt16(L),k.writeUInt16(c),k.writeUInt16(N),z=0,q=u.length;z<q;z++)r=u[z],k.writeUInt16(r);for(k.writeUInt16(0),H=0,T=F.length;H<T;H++)r=F[H],k.writeUInt16(r);for(V=0,R=s.length;V<R;V++)a=s[V],k.writeUInt16(a);for(G=0,D=x.length;G<D;G++)w=x[G],k.writeUInt16(w);for(Y=0,U=f.length;Y<U;Y++)d=f[Y],k.writeUInt16(d);return{charMap:n,subtable:k.data,maxGlyphID:v+1}}},t}(),y=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="cmap",e.prototype.parse=function(t){var e,n,r;for(t.pos=this.offset,this.version=t.readUInt16(),n=t.readUInt16(),this.tables=[],this.unicode=null,r=0;0<=n?r<n:n<r;0<=n?++r:--r)e=new d(t,this.offset),this.tables.push(e),e.isUnicode&&null==this.unicode&&(this.unicode=e);return!0},e.encode=function(t,e){var n,r;return null==e&&(e="macroman"),n=d.encode(t,e),(r=new J).writeUInt16(0),r.writeUInt16(1),n.table=r.data.concat(n.subtable),n},e}(),g=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="hhea",e.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.ascender=t.readShort(),this.decender=t.readShort(),this.lineGap=t.readShort(),this.advanceWidthMax=t.readShort(),this.minLeftSideBearing=t.readShort(),this.minRightSideBearing=t.readShort(),this.xMaxExtent=t.readShort(),this.caretSlopeRise=t.readShort(),this.caretSlopeRun=t.readShort(),this.caretOffset=t.readShort(),t.pos+=8,this.metricDataFormat=t.readShort(),this.numberOfMetrics=t.readUInt16()},e}(),m=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="OS/2",e.prototype.parse=function(n){if(n.pos=this.offset,this.version=n.readUInt16(),this.averageCharWidth=n.readShort(),this.weightClass=n.readUInt16(),this.widthClass=n.readUInt16(),this.type=n.readShort(),this.ySubscriptXSize=n.readShort(),this.ySubscriptYSize=n.readShort(),this.ySubscriptXOffset=n.readShort(),this.ySubscriptYOffset=n.readShort(),this.ySuperscriptXSize=n.readShort(),this.ySuperscriptYSize=n.readShort(),this.ySuperscriptXOffset=n.readShort(),this.ySuperscriptYOffset=n.readShort(),this.yStrikeoutSize=n.readShort(),this.yStrikeoutPosition=n.readShort(),this.familyClass=n.readShort(),this.panose=function(){var t,e;for(e=[],t=0;t<10;++t)e.push(n.readByte());return e}(),this.charRange=function(){var t,e;for(e=[],t=0;t<4;++t)e.push(n.readInt());return e}(),this.vendorID=n.readString(4),this.selection=n.readShort(),this.firstCharIndex=n.readShort(),this.lastCharIndex=n.readShort(),0<this.version&&(this.ascent=n.readShort(),this.descent=n.readShort(),this.lineGap=n.readShort(),this.winAscent=n.readShort(),this.winDescent=n.readShort(),this.codePageRange=function(){var t,e;for(e=[],t=0;t<2;++t)e.push(n.readInt());return e}(),1<this.version))return this.xHeight=n.readShort(),this.capHeight=n.readShort(),this.defaultChar=n.readShort(),this.breakChar=n.readShort(),this.maxContext=n.readShort()},e}(),v=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="post",e.prototype.parse=function(r){var t,e,n,i;switch(r.pos=this.offset,this.format=r.readInt(),this.italicAngle=r.readInt(),this.underlinePosition=r.readShort(),this.underlineThickness=r.readShort(),this.isFixedPitch=r.readInt(),this.minMemType42=r.readInt(),this.maxMemType42=r.readInt(),this.minMemType1=r.readInt(),this.maxMemType1=r.readInt(),this.format){case 65536:break;case 131072:for(e=r.readUInt16(),this.glyphNameIndex=[],n=0;0<=e?n<e:e<n;0<=e?++n:--n)this.glyphNameIndex.push(r.readUInt16());for(this.names=[],i=[];r.pos<this.offset+this.length;)t=r.readByte(),i.push(this.names.push(r.readString(t)));return i;case 151552:return e=r.readUInt16(),this.offsets=r.read(e);case 196608:break;case 262144:return this.map=function(){var t,e,n;for(n=[],t=0,e=this.file.maxp.numGlyphs;0<=e?t<e:e<t;0<=e?++t:--t)n.push(r.readUInt32());return n}.call(this)}},e}(),w=function(t,e){this.raw=t,this.length=t.length,this.platformID=e.platformID,this.encodingID=e.encodingID,this.languageID=e.languageID},b=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="name",e.prototype.parse=function(t){var e,n,r,i,o,a,s,l,h,u,c,f;for(t.pos=this.offset,t.readShort(),e=t.readShort(),a=t.readShort(),n=[],i=h=0;0<=e?h<e:e<h;i=0<=e?++h:--h)n.push({platformID:t.readShort(),encodingID:t.readShort(),languageID:t.readShort(),nameID:t.readShort(),length:t.readShort(),offset:this.offset+a+t.readShort()});for(s={},i=u=0,c=n.length;u<c;i=++u)r=n[i],t.pos=r.offset,l=t.readString(r.length),o=new w(l,r),null==s[f=r.nameID]&&(s[f]=[]),s[r.nameID].push(o);this.strings=s,this.copyright=s[0],this.fontFamily=s[1],this.fontSubfamily=s[2],this.uniqueSubfamily=s[3],this.fontName=s[4],this.version=s[5];try{this.postscriptName=s[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g,"")}catch(t){this.postscriptName=s[4][0].raw.replace(/[\x00-\x19\x80-\xff]/g,"")}return this.trademark=s[7],this.manufacturer=s[8],this.designer=s[9],this.description=s[10],this.vendorUrl=s[11],this.designerUrl=s[12],this.license=s[13],this.licenseUrl=s[14],this.preferredFamily=s[15],this.preferredSubfamily=s[17],this.compatibleFull=s[18],this.sampleText=s[19]},e}(),x=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="maxp",e.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.numGlyphs=t.readUInt16(),this.maxPoints=t.readUInt16(),this.maxContours=t.readUInt16(),this.maxCompositePoints=t.readUInt16(),this.maxComponentContours=t.readUInt16(),this.maxZones=t.readUInt16(),this.maxTwilightPoints=t.readUInt16(),this.maxStorage=t.readUInt16(),this.maxFunctionDefs=t.readUInt16(),this.maxInstructionDefs=t.readUInt16(),this.maxStackElements=t.readUInt16(),this.maxSizeOfInstructions=t.readUInt16(),this.maxComponentElements=t.readUInt16(),this.maxComponentDepth=t.readUInt16()},e}(),N=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="hmtx",e.prototype.parse=function(n){var t,r,i,e,o,a,s;for(n.pos=this.offset,this.metrics=[],e=0,a=this.file.hhea.numberOfMetrics;0<=a?e<a:a<e;0<=a?++e:--e)this.metrics.push({advance:n.readUInt16(),lsb:n.readInt16()});for(r=this.file.maxp.numGlyphs-this.file.hhea.numberOfMetrics,this.leftSideBearings=function(){var t,e;for(e=[],t=0;0<=r?t<r:r<t;0<=r?++t:--t)e.push(n.readInt16());return e}(),this.widths=function(){var t,e,n,r;for(r=[],t=0,e=(n=this.metrics).length;t<e;t++)i=n[t],r.push(i.advance);return r}.call(this),t=this.widths[this.widths.length-1],s=[],o=0;0<=r?o<r:r<o;0<=r?++o:--o)s.push(this.widths.push(t));return s},e.prototype.forGlyph=function(t){return t in this.metrics?this.metrics[t]:{advance:this.metrics[this.metrics.length-1].advance,lsb:this.leftSideBearings[t-this.metrics.length]}},e}(),L=[].slice,A=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="glyf",e.prototype.parse=function(t){return this.cache={}},e.prototype.glyphFor=function(t){var e,n,r,i,o,a,s,l,h,u;return(t=t)in this.cache?this.cache[t]:(i=this.file.loca,e=this.file.contents,n=i.indexOf(t),0===(r=i.lengthOf(t))?this.cache[t]=null:(e.pos=this.offset+n,o=(a=new J(e.read(r))).readShort(),l=a.readShort(),u=a.readShort(),s=a.readShort(),h=a.readShort(),this.cache[t]=-1===o?new _(a,l,u,s,h):new S(a,o,l,u,s,h),this.cache[t]))},e.prototype.encode=function(t,e,n){var r,i,o,a,s;for(o=[],i=[],a=0,s=e.length;a<s;a++)r=t[e[a]],i.push(o.length),r&&(o=o.concat(r.encode(n)));return i.push(o.length),{table:o,offsets:i}},e}(),S=function(){function t(t,e,n,r,i,o){this.raw=t,this.numberOfContours=e,this.xMin=n,this.yMin=r,this.xMax=i,this.yMax=o,this.compound=!1}return t.prototype.encode=function(){return this.raw.data},t}(),_=function(){function t(t,e,n,r,i){var o,a;for(this.raw=t,this.xMin=e,this.yMin=n,this.xMax=r,this.yMax=i,this.compound=!0,this.glyphIDs=[],this.glyphOffsets=[],o=this.raw;a=o.readShort(),this.glyphOffsets.push(o.pos),this.glyphIDs.push(o.readShort()),32&a;)o.pos+=1&a?4:2,128&a?o.pos+=8:64&a?o.pos+=4:8&a&&(o.pos+=2)}return 1,8,32,64,128,t.prototype.encode=function(t){var e,n,r,i,o;for(n=new J(L.call(this.raw.data)),e=r=0,i=(o=this.glyphIDs).length;r<i;e=++r)o[e],n.pos=this.glyphOffsets[e];return n.data},t}(),F=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,h),e.prototype.tag="loca",e.prototype.parse=function(r){var t;return r.pos=this.offset,t=this.file.head.indexToLocFormat,this.offsets=0===t?function(){var t,e,n;for(n=[],t=0,e=this.length;t<e;t+=2)n.push(2*r.readUInt16());return n}.call(this):function(){var t,e,n;for(n=[],t=0,e=this.length;t<e;t+=4)n.push(r.readUInt32());return n}.call(this)},e.prototype.indexOf=function(t){return this.offsets[t]},e.prototype.lengthOf=function(t){return this.offsets[t+1]-this.offsets[t]},e.prototype.encode=function(t,e){for(var n=new Uint32Array(this.offsets.length),r=0,i=0,o=0;o<n.length;++o)if(n[o]=r,i<e.length&&e[i]==o){++i,n[o]=r;var a=this.offsets[o],s=this.offsets[o+1]-a;0<s&&(r+=s)}for(var l=new Array(4*n.length),h=0;h<n.length;++h)l[4*h+3]=255&n[h],l[4*h+2]=(65280&n[h])>>8,l[4*h+1]=(16711680&n[h])>>16,l[4*h]=(4278190080&n[h])>>24;return l},e}(),P=function(){function t(t){this.font=t,this.subset={},this.unicodes={},this.next=33}return t.prototype.generateCmap=function(){var t,e,n,r,i;for(e in r=this.font.cmap.tables[0].codeMap,t={},i=this.subset)n=i[e],t[e]=r[n];return t},t.prototype.glyphsFor=function(t){var e,n,r,i,o,a,s;for(r={},o=0,a=t.length;o<a;o++)r[i=t[o]]=this.font.glyf.glyphFor(i);for(i in e=[],r)(null!=(n=r[i])?n.compound:void 0)&&e.push.apply(e,n.glyphIDs);if(0<e.length)for(i in s=this.glyphsFor(e))n=s[i],r[i]=n;return r},t.prototype.encode=function(t,e){var n,r,i,o,a,s,l,h,u,c,f,p,d,g,m;for(r in n=y.encode(this.generateCmap(),"unicode"),o=this.glyphsFor(t),f={0:0},m=n.charMap)f[(s=m[r]).old]=s.new;for(p in c=n.maxGlyphID,o)p in f||(f[p]=c++);return h=function(t){var e,n;for(e in n={},t)n[t[e]]=e;return n}(f),u=Object.keys(h).sort(function(t,e){return t-e}),d=function(){var t,e,n;for(n=[],t=0,e=u.length;t<e;t++)a=u[t],n.push(h[a]);return n}(),i=this.font.glyf.encode(o,d,f),l=this.font.loca.encode(i.offsets,d),g={cmap:this.font.cmap.raw(),glyf:i.table,loca:l,hmtx:this.font.hmtx.raw(),hhea:this.font.hhea.raw(),maxp:this.font.maxp.raw(),post:this.font.post.raw(),name:this.font.name.raw(),head:this.font.head.encode(e)},this.font.os2.exists&&(g["OS/2"]=this.font.os2.raw()),this.font.directory.encode(g)},t}();t.API.PDFObject=function(){var o;function a(){}return o=function(t,e){return(Array(e+1).join("0")+t).slice(-e)},a.convert=function(r){var i,t,e,n;if(Array.isArray(r))return"["+function(){var t,e,n;for(n=[],t=0,e=r.length;t<e;t++)i=r[t],n.push(a.convert(i));return n}().join(" ")+"]";if("string"==typeof r)return"/"+r;if(null!=r?r.isString:void 0)return"("+r+")";if(r instanceof Date)return"(D:"+o(r.getUTCFullYear(),4)+o(r.getUTCMonth(),2)+o(r.getUTCDate(),2)+o(r.getUTCHours(),2)+o(r.getUTCMinutes(),2)+o(r.getUTCSeconds(),2)+"Z)";if("[object Object]"!=={}.toString.call(r))return""+r;for(t in e=["<<"],r)n=r[t],e.push("/"+t+" "+a.convert(n));return e.push(">>"),e.join("\n")},a}()}(lt),
  440. /*
  441. # PNG.js
  442. # Copyright (c) 2011 Devon Govett
  443. # MIT LICENSE
  444. #
  445. #
  446. */
  447. Nt="undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof global&&global||Function('return typeof this === "object" && this.content')()||Function("return this")(),Lt=function(){var h,n,r;function i(t){var e,n,r,i,o,a,s,l,h,u,c,f,p,d;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.animation=null,this.text={},a=null;;){switch(e=this.readUInt32(),h=function(){var t,e;for(e=[],t=0;t<4;++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join("")){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"acTL":this.animation={numFrames:this.readUInt32(),numPlays:this.readUInt32()||1/0,frames:[]};break;case"PLTE":this.palette=this.read(e);break;case"fcTL":a&&this.animation.frames.push(a),this.pos+=4,a={width:this.readUInt32(),height:this.readUInt32(),xOffset:this.readUInt32(),yOffset:this.readUInt32()},o=this.readUInt16(),i=this.readUInt16()||100,a.delay=1e3*o/i,a.disposeOp=this.data[this.pos++],a.blendOp=this.data[this.pos++],a.data=[];break;case"IDAT":case"fdAT":for("fdAT"===h&&(this.pos+=4,e-=4),t=(null!=a?a.data:void 0)||this.imgData,f=0;0<=e?f<e:e<f;0<=e?++f:--f)t.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:if(r=this.palette.length/3,this.transparency.indexed=this.read(e),this.transparency.indexed.length>r)throw new Error("More transparent colors than palette size");if(0<(u=r-this.transparency.indexed.length))for(p=0;0<=u?p<u:u<p;0<=u?++p:--p)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(e)[0];break;case 2:this.transparency.rgb=this.read(e)}break;case"tEXt":s=(c=this.read(e)).indexOf(0),l=String.fromCharCode.apply(String,c.slice(0,s)),this.text[l]=String.fromCharCode.apply(String,c.slice(s+1));break;case"IEND":return a&&this.animation.frames.push(a),this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(d=this.colorType)||6===d,n=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*n,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new Uint8Array(this.imgData));default:this.pos+=e}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}i.load=function(t,e,n){var r;return"function"==typeof e&&(n=e),(r=new XMLHttpRequest).open("GET",t,!0),r.responseType="arraybuffer",r.onload=function(){var t;return t=new i(new Uint8Array(r.response||r.mozResponseArrayBuffer)),"function"==typeof(null!=e?e.getContext:void 0)&&t.render(e),"function"==typeof n?n(t):void 0},r.send(null)},i.prototype.read=function(t){var e,n;for(n=[],e=0;0<=t?e<t:t<e;0<=t?++e:--e)n.push(this.data[this.pos++]);return n},i.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},i.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]},i.prototype.decodePixels=function(C){var B=this.pixelBitlength/8,j=new Uint8Array(this.width*this.height*B),E=0,M=this;if(null==C&&(C=this.imgData),0===C.length)return new Uint8Array(0);function t(t,e,n,r){var i,o,a,s,l,h,u,c,f,p,d,g,m,y,v,w,b,x,N,L,A,S=Math.ceil((M.width-t)/n),_=Math.ceil((M.height-e)/r),F=M.width==S&&M.height==_;for(y=B*S,g=F?j:new Uint8Array(y*_),h=C.length,o=m=0;m<_&&E<h;){switch(C[E++]){case 0:for(s=b=0;b<y;s=b+=1)g[o++]=C[E++];break;case 1:for(s=x=0;x<y;s=x+=1)i=C[E++],l=s<B?0:g[o-B],g[o++]=(i+l)%256;break;case 2:for(s=N=0;N<y;s=N+=1)i=C[E++],a=(s-s%B)/B,v=m&&g[(m-1)*y+a*B+s%B],g[o++]=(v+i)%256;break;case 3:for(s=L=0;L<y;s=L+=1)i=C[E++],a=(s-s%B)/B,l=s<B?0:g[o-B],v=m&&g[(m-1)*y+a*B+s%B],g[o++]=(i+Math.floor((l+v)/2))%256;break;case 4:for(s=A=0;A<y;s=A+=1)i=C[E++],a=(s-s%B)/B,l=s<B?0:g[o-B],0===m?v=w=0:(v=g[(m-1)*y+a*B+s%B],w=a&&g[(m-1)*y+(a-1)*B+s%B]),u=l+v-w,c=Math.abs(u-l),p=Math.abs(u-v),d=Math.abs(u-w),f=c<=p&&c<=d?l:p<=d?v:w,g[o++]=(i+f)%256;break;default:throw new Error("Invalid filter algorithm: "+C[E-1])}if(!F){var P=((e+m*r)*M.width+t)*B,k=m*y;for(s=0;s<S;s+=1){for(var I=0;I<B;I+=1)j[P++]=g[k++];P+=(n-1)*B}}m++}}return C=(C=new kt(C)).getBytes(),1==M.interlaceMethod?(t(0,0,8,8),t(4,0,8,8),t(0,4,4,8),t(2,0,4,4),t(0,2,2,4),t(1,0,2,2),t(0,1,1,2)):t(0,0,1,1),j},i.prototype.decodePalette=function(){var t,e,n,r,i,o,a,s,l;for(n=this.palette,o=this.transparency.indexed||[],i=new Uint8Array((o.length||0)+n.length),r=0,n.length,e=a=t=0,s=n.length;a<s;e=a+=3)i[r++]=n[e],i[r++]=n[e+1],i[r++]=n[e+2],i[r++]=null!=(l=o[t++])?l:255;return i},i.prototype.copyToImageData=function(t,e){var n,r,i,o,a,s,l,h,u,c,f;if(r=this.colors,u=null,n=this.hasAlphaChannel,this.palette.length&&(u=null!=(f=this._decodedPalette)?f:this._decodedPalette=this.decodePalette(),r=4,n=!0),h=(i=t.data||t).length,a=u||e,o=s=0,1===r)for(;o<h;)l=u?4*e[o/4]:s,c=a[l++],i[o++]=c,i[o++]=c,i[o++]=c,i[o++]=n?a[l++]:255,s=l;else for(;o<h;)l=u?4*e[o/4]:s,i[o++]=a[l++],i[o++]=a[l++],i[o++]=a[l++],i[o++]=n?a[l++]:255,s=l},i.prototype.decode=function(){var t;return t=new Uint8Array(this.width*this.height*4),this.copyToImageData(t,this.decodePixels()),t};try{n=Nt.document.createElement("canvas"),r=n.getContext("2d")}catch(t){return-1}return h=function(t){var e;return r.width=t.width,r.height=t.height,r.clearRect(0,0,t.width,t.height),r.putImageData(t,0,0),(e=new Image).src=n.toDataURL(),e},i.prototype.decodeFrames=function(t){var e,n,r,i,o,a,s,l;if(this.animation){for(l=[],n=o=0,a=(s=this.animation.frames).length;o<a;n=++o)e=s[n],r=t.createImageData(e.width,e.height),i=this.decodePixels(new Uint8Array(e.data)),this.copyToImageData(r,i),e.imageData=r,l.push(e.image=h(r));return l}},i.prototype.renderFrame=function(t,e){var n,r,i;return n=(r=this.animation.frames)[e],i=r[e-1],0===e&&t.clearRect(0,0,this.width,this.height),1===(null!=i?i.disposeOp:void 0)?t.clearRect(i.xOffset,i.yOffset,i.width,i.height):2===(null!=i?i.disposeOp:void 0)&&t.putImageData(i.imageData,i.xOffset,i.yOffset),0===n.blendOp&&t.clearRect(n.xOffset,n.yOffset,n.width,n.height),t.drawImage(n.image,n.xOffset,n.yOffset)},i.prototype.animate=function(n){var r,i,o,a,s,t,l=this;return i=0,t=this.animation,a=t.numFrames,o=t.frames,s=t.numPlays,(r=function(){var t,e;if(t=i++%a,e=o[t],l.renderFrame(n,t),1<a&&i/a<s)return l.animation._timeout=setTimeout(r,e.delay)})()},i.prototype.stopAnimation=function(){var t;return clearTimeout(null!=(t=this.animation)?t._timeout:void 0)},i.prototype.render=function(t){var e,n;return t._png&&t._png.stopAnimation(),t._png=this,t.width=this.width,t.height=this.height,e=t.getContext("2d"),this.animation?(this.decodeFrames(e),this.animate(e)):(n=e.createImageData(this.width,this.height),this.copyToImageData(n,this.decodePixels()),e.putImageData(n,0,0))},i}(),Nt.PNG=Lt;
  448. /*
  449. * Extracted from pdf.js
  450. * https://github.com/andreasgal/pdf.js
  451. *
  452. * Copyright (c) 2011 Mozilla Foundation
  453. *
  454. * Contributors: Andreas Gal <gal@mozilla.com>
  455. * Chris G Jones <cjones@mozilla.com>
  456. * Shaon Barman <shaon.barman@gmail.com>
  457. * Vivien Nicolas <21@vingtetun.org>
  458. * Justin D'Arcangelo <justindarc@gmail.com>
  459. * Yury Delendik
  460. *
  461. *
  462. */
  463. var Pt=function(){function t(){this.pos=0,this.bufferLength=0,this.eof=!1,this.buffer=null}return t.prototype={ensureBuffer:function(t){var e=this.buffer,n=e?e.byteLength:0;if(t<n)return e;for(var r=512;r<t;)r<<=1;for(var i=new Uint8Array(r),o=0;o<n;++o)i[o]=e[o];return this.buffer=i},getByte:function(){for(var t=this.pos;this.bufferLength<=t;){if(this.eof)return null;this.readBlock()}return this.buffer[this.pos++]},getBytes:function(t){var e=this.pos;if(t){this.ensureBuffer(e+t);for(var n=e+t;!this.eof&&this.bufferLength<n;)this.readBlock();var r=this.bufferLength;r<n&&(n=r)}else{for(;!this.eof;)this.readBlock();n=this.bufferLength}return this.pos=n,this.buffer.subarray(e,n)},lookChar:function(){for(var t=this.pos;this.bufferLength<=t;){if(this.eof)return null;this.readBlock()}return String.fromCharCode(this.buffer[this.pos])},getChar:function(){for(var t=this.pos;this.bufferLength<=t;){if(this.eof)return null;this.readBlock()}return String.fromCharCode(this.buffer[this.pos++])},makeSubStream:function(t,e,n){for(var r=t+e;this.bufferLength<=r&&!this.eof;)this.readBlock();return new Stream(this.buffer,t,e,n)},skip:function(t){t||(t=1),this.pos+=t},reset:function(){this.pos=0}},t}(),kt=function(){if("undefined"!=typeof Uint32Array){var k=new Uint32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),I=new Uint32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),C=new Uint32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),B=[new Uint32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],j=[new Uint32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];return(t.prototype=Object.create(Pt.prototype)).getBits=function(t){for(var e,n=this.codeSize,r=this.codeBuf,i=this.bytes,o=this.bytesPos;n<t;)void 0===(e=i[o++])&&E("Bad encoding in flate stream"),r|=e<<n,n+=8;return e=r&(1<<t)-1,this.codeBuf=r>>t,this.codeSize=n-=t,this.bytesPos=o,e},t.prototype.getCode=function(t){for(var e=t[0],n=t[1],r=this.codeSize,i=this.codeBuf,o=this.bytes,a=this.bytesPos;r<n;){var s;void 0===(s=o[a++])&&E("Bad encoding in flate stream"),i|=s<<r,r+=8}var l=e[i&(1<<n)-1],h=l>>16,u=65535&l;return(0==r||r<h||0==h)&&E("Bad encoding in flate stream"),this.codeBuf=i>>h,this.codeSize=r-h,this.bytesPos=a,u},t.prototype.generateHuffmanTable=function(t){for(var e=t.length,n=0,r=0;r<e;++r)t[r]>n&&(n=t[r]);for(var i=1<<n,o=new Uint32Array(i),a=1,s=0,l=2;a<=n;++a,s<<=1,l<<=1)for(var h=0;h<e;++h)if(t[h]==a){var u=0,c=s;for(r=0;r<a;++r)u=u<<1|1&c,c>>=1;for(r=u;r<i;r+=l)o[r]=a<<16|h;++s}return[o,n]},t.prototype.readBlock=function(){function t(t,e,n,r,i){for(var o=t.getBits(n)+r;0<o--;)e[l++]=i}var e=this.getBits(3);if(1&e&&(this.eof=!0),0!=(e>>=1)){var n,r;if(1==e)n=B,r=j;else if(2==e){for(var i=this.getBits(5)+257,o=this.getBits(5)+1,a=this.getBits(4)+4,s=Array(k.length),l=0;l<a;)s[k[l++]]=this.getBits(3);for(var h=this.generateHuffmanTable(s),u=0,c=(l=0,i+o),f=new Array(c);l<c;){var p=this.getCode(h);16==p?t(this,f,2,3,u):17==p?t(this,f,3,3,u=0):18==p?t(this,f,7,11,u=0):f[l++]=u=p}n=this.generateHuffmanTable(f.slice(0,i)),r=this.generateHuffmanTable(f.slice(i,c))}else E("Unknown block type in flate stream");for(var d=(_=this.buffer)?_.length:0,g=this.bufferLength;;){var m=this.getCode(n);if(m<256)d<=g+1&&(d=(_=this.ensureBuffer(g+1)).length),_[g++]=m;else{if(256==m)return void(this.bufferLength=g);var y=(m=I[m-=257])>>16;0<y&&(y=this.getBits(y));u=(65535&m)+y;m=this.getCode(r),0<(y=(m=C[m])>>16)&&(y=this.getBits(y));var v=(65535&m)+y;d<=g+u&&(d=(_=this.ensureBuffer(g+u)).length);for(var w=0;w<u;++w,++g)_[g]=_[g-v]}}}else{var b,x=this.bytes,N=this.bytesPos;void 0===(b=x[N++])&&E("Bad block header in flate stream");var L=b;void 0===(b=x[N++])&&E("Bad block header in flate stream"),L|=b<<8,void 0===(b=x[N++])&&E("Bad block header in flate stream");var A=b;void 0===(b=x[N++])&&E("Bad block header in flate stream"),(A|=b<<8)!=(65535&~L)&&E("Bad uncompressed block length in flate stream"),this.codeBuf=0,this.codeSize=0;var S=this.bufferLength,_=this.ensureBuffer(S+L),F=S+L;this.bufferLength=F;for(var P=S;P<F;++P){if(void 0===(b=x[N++])){this.eof=!0;break}_[P]=b}this.bytesPos=N}},t}function E(t){throw new Error(t)}function t(t){var e=0,n=t[e++],r=t[e++];-1!=n&&-1!=r||E("Invalid header in flate stream"),8!=(15&n)&&E("Unknown compression method in flate stream"),((n<<8)+r)%31!=0&&E("Bad FCHECK in flate stream"),32&r&&E("FDICT bit set in flate stream"),this.bytes=t,this.bytesPos=2,this.codeSize=0,this.codeBuf=0,Pt.call(this)}}();window.tmp=kt});try{module.exports=jsPDF}catch(t){}
  464. /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)))
  465. /***/ }),
  466. /***/ 365:
  467. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  468. "use strict";
  469. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__static_kity__ = __webpack_require__(366);
  470. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__static_kity___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__static_kity__);
  471. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__static_kityminder_core_min__ = __webpack_require__(367);
  472. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__static_kityminder_core_min___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__static_kityminder_core_min__);
  473. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_hotboxkit_less_hotbox_less__ = __webpack_require__(368);
  474. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_hotboxkit_less_hotbox_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_hotboxkit_less_hotbox_less__);
  475. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__minder__ = __webpack_require__(370);
  476. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__minder___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__minder__);
  477. var MindEditor = {
  478. Minder: __WEBPACK_IMPORTED_MODULE_3__minder___default.a
  479. };
  480. var install = function install(Vue) {
  481. var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  482. Object.keys(MindEditor).forEach(function (key) {
  483. Vue.component(key, MindEditor[key]);
  484. });
  485. };
  486. // auto install
  487. if (typeof window !== 'undefined' && window.Vue) {
  488. install(window.Vue);
  489. }
  490. /* harmony default export */ __webpack_exports__["a"] = (Object.assign(MindEditor, { install: install })); // eslint-disable-line no-undef
  491. /***/ }),
  492. /***/ 366:
  493. /***/ (function(module, exports) {
  494. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  495. /*!
  496. * ====================================================
  497. * kity - v2.0.4 - 2016-08-22
  498. * https://github.com/fex-team/kity
  499. * GitHub: https://github.com/fex-team/kity.git
  500. * Copyright (c) 2016 Baidu FEX; Licensed BSD
  501. * ====================================================
  502. */
  503. (function () {
  504. var _p = {
  505. r: function r(index) {
  506. if (_p[index].inited) {
  507. return _p[index].value;
  508. }
  509. if (typeof _p[index].value === "function") {
  510. var module = {
  511. exports: {}
  512. },
  513. returnValue = _p[index].value(null, module.exports, module);
  514. _p[index].inited = true;
  515. _p[index].value = returnValue;
  516. if (returnValue !== undefined) {
  517. return returnValue;
  518. } else {
  519. for (var key in module.exports) {
  520. if (module.exports.hasOwnProperty(key)) {
  521. _p[index].inited = true;
  522. _p[index].value = module.exports;
  523. return module.exports;
  524. }
  525. }
  526. }
  527. } else {
  528. _p[index].inited = true;
  529. return _p[index].value;
  530. }
  531. }
  532. };
  533. //src/animate/animator.js
  534. /**
  535. * @fileOverview
  536. *
  537. * 提供基本的动画支持
  538. */
  539. _p[0] = {
  540. value: function value(require) {
  541. function parseTime(str) {
  542. var value = parseFloat(str, 10);
  543. if (/ms/.test(str)) {
  544. return value;
  545. }
  546. if (/s/.test(str)) {
  547. return value * 1e3;
  548. }
  549. if (/min/.test(str)) {
  550. return value * 60 * 1e3;
  551. }
  552. return value;
  553. }
  554. var Timeline = _p.r(8);
  555. var easingTable = _p.r(1);
  556. /**
  557. * @class kity.Animator
  558. * @catalog animate
  559. * @description 表示一个动画启动器,可以作用于不同的对象进行动画
  560. */
  561. var Animator = _p.r(11).createClass("Animator", {
  562. /**
  563. * @constructor
  564. * @for kity.Animator
  565. * @catalog animate
  566. *
  567. * @grammar new kity.Animator(beginValue, finishValue, setter)
  568. * @grammar new kity.Animator(option)
  569. *
  570. * @param {any} beginValue|opt.beginValue
  571. * 动画的起始值,允许的类型有数字、数组、字面量、kity.Point、kity.Vector、kity.Box、kity.Matrix
  572. *
  573. * @param {any} finishValue|opt.beginValue
  574. * 动画的结束值,类型应于起始值相同
  575. *
  576. * @param {Function} setter|opt.setter
  577. * 值的使用函数,接受三个参数: function(target, value, timeline)
  578. * target {object} 动画的目标
  579. * value {any} 动画的当前值
  580. * timeline {kity.Timeline} 动画当前的时间线对象
  581. */
  582. constructor: function constructor(beginValue, finishValue, setter) {
  583. if (arguments.length == 1) {
  584. var opt = arguments[0];
  585. this.beginValue = opt.beginValue;
  586. this.finishValue = opt.finishValue;
  587. this.setter = opt.setter;
  588. } else {
  589. this.beginValue = beginValue;
  590. this.finishValue = finishValue;
  591. this.setter = setter;
  592. }
  593. },
  594. /**
  595. * @method start()
  596. * @for kity.Animator
  597. * @description 使用当前的动画器启动在指定目标上启动动画
  598. *
  599. * @grammar start(target, duration, easing, delay, callback) => {kity.Timeline}
  600. * @grammar start(target, option) => {kity.Timeline}
  601. *
  602. * @param {object} target
  603. * 启动动画的目标
  604. *
  605. * @param {Number|String} duration|option.duration
  606. * [Optional] 动画的持续时间,如 300、"300ms"、"1.5min"
  607. *
  608. * @param {String|Function} easing|option.easing
  609. * [Optional] 动画使用的缓动函数,如 "ease"、"linear"、"swing"
  610. *
  611. * @param {Number|String} delay|option.delay
  612. * [Optional] 动画的播放延迟时间
  613. *
  614. * @param {Function} callback|option.callback
  615. * [Optional] 动画结束后的回调函数
  616. *
  617. * @example
  618. *
  619. * ```js
  620. * var turnRed = new kity.Animator(
  621. * new kity.Color('yellow'),
  622. * new kity.Color('red'),
  623. * function(target, value) {
  624. * target.fill(value);
  625. * });
  626. *
  627. * turnRed.start(rect, 300, 'ease', function() {
  628. * console.log('I am red!');
  629. * });
  630. * ```
  631. */
  632. start: function start(target, duration, easing, delay, callback) {
  633. if (arguments.length === 2 && (typeof duration === "undefined" ? "undefined" : _typeof(duration)) == "object") {
  634. easing = duration.easing;
  635. delay = duration.delay;
  636. callback = duration.callback;
  637. duration = duration.duration;
  638. }
  639. if (arguments.length === 4 && typeof delay == "function") {
  640. callback = delay;
  641. delay = 0;
  642. }
  643. var timeline = this.create(target, duration, easing, callback);
  644. delay = parseTime(delay);
  645. if (delay > 0) {
  646. setTimeout(function () {
  647. timeline.play();
  648. }, delay);
  649. } else {
  650. timeline.play();
  651. }
  652. return timeline;
  653. },
  654. /**
  655. * @method create()
  656. * @for kity.Animator
  657. * @description 使用当前的动画器为指定目标创建时间线
  658. *
  659. * @grammar create(target, duration, easing, callback) => {kity.Timeline}
  660. *
  661. * @param {object} target 要创建的时间线的目标
  662. * @param {Number|String} duration 要创建的时间线的长度,如 300、"5s"、"0.5min"
  663. * @param {String|Function} easing 要创建的时间线的缓动函数,如 'ease'、'linear'、'swing'
  664. * @param {Function} callback 时间线播放结束之后的回调函数
  665. *
  666. * @example
  667. *
  668. * ```js
  669. * var expand = new kity.Animator({
  670. * beginValue: function(target) {
  671. * return target.getBox();
  672. * },
  673. * finishValue: function(target) {
  674. * return target.getBox().expand(100, 100, 100, 100);
  675. * },
  676. * setter: function(target, value) {
  677. * target.setBox(value)
  678. * }
  679. * });
  680. *
  681. * var timeline = expand.create(rect, 300);
  682. * timeline.repeat(3).play();
  683. * ```
  684. */
  685. create: function create(target, duration, easing, callback) {
  686. var timeline;
  687. duration = duration && parseTime(duration) || Animator.DEFAULT_DURATION;
  688. easing = easing || Animator.DEFAULT_EASING;
  689. if (typeof easing == "string") {
  690. easing = easingTable[easing];
  691. }
  692. timeline = new Timeline(this, target, duration, easing);
  693. if (typeof callback == "function") {
  694. timeline.on("finish", callback);
  695. }
  696. return timeline;
  697. },
  698. /**
  699. * @method reverse()
  700. * @for kity.Animator
  701. * @grammar reverse() => {kity.Animator}
  702. * @description 创建一个与当前动画器相反的动画器
  703. *
  704. * @example
  705. *
  706. * ```js
  707. * var turnYellow = turnRed.reverse();
  708. * ```
  709. */
  710. reverse: function reverse() {
  711. return new Animator(this.finishValue, this.beginValue, this.setter);
  712. }
  713. });
  714. Animator.DEFAULT_DURATION = 300;
  715. Animator.DEFAULT_EASING = "linear";
  716. var Shape = _p.r(61);
  717. _p.r(11).extendClass(Shape, {
  718. /**
  719. * @method animate()
  720. * @for kity.Shape
  721. * @description 在图形上播放使用指定的动画器播放动画,如果图形当前有动画正在播放,则会加入播放队列
  722. *
  723. * @grammar animate(animator, duration, easing, delay, callback)
  724. *
  725. * @param {object} animator 播放动画使用的动画器
  726. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  727. * @param {Number|String} delay 动画播放前的延时
  728. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  729. * @param {Function} callback 播放结束之后的回调函数
  730. *
  731. * @example
  732. *
  733. * ```js
  734. * rect.animate(turnRed, 300); // turnRect 是一个动画器
  735. * rect.animate(expand, 500); // turnRect 播放结束后播放 expand
  736. * ```
  737. */
  738. animate: function animate(animator, duration, easing, delay, callback) {
  739. var queue = this._KityAnimateQueue = this._KityAnimateQueue || [];
  740. var timeline = animator.create(this, duration, easing, callback);
  741. function dequeue() {
  742. queue.shift();
  743. if (queue.length) {
  744. setTimeout(queue[0].t.play.bind(queue[0].t), queue[0].d);
  745. }
  746. }
  747. timeline.on("finish", dequeue);
  748. queue.push({
  749. t: timeline,
  750. d: delay
  751. });
  752. if (queue.length == 1) {
  753. setTimeout(timeline.play.bind(timeline), delay);
  754. }
  755. return this;
  756. },
  757. /**
  758. * @method timeline()
  759. * @for kity.Shape
  760. * @description 获得当前正在播放的动画的时间线
  761. *
  762. * @grammar timeline() => {kity.Timeline}
  763. *
  764. * @example
  765. *
  766. * ```js
  767. * rect.timeline().repeat(2);
  768. * ```
  769. */
  770. timeline: function timeline() {
  771. return this._KityAnimateQueue[0].t;
  772. },
  773. /**
  774. * @method stop()
  775. * @for kity.Shape
  776. * @description 停止当前正在播放的动画
  777. *
  778. * @grammar stop() => {this}
  779. *
  780. * @example
  781. *
  782. * ```js
  783. * rect.stop(); // 停止 rect 上的动画
  784. * ```
  785. */
  786. stop: function stop() {
  787. var queue = this._KityAnimateQueue;
  788. if (queue) {
  789. while (queue.length) {
  790. queue.shift().t.stop();
  791. }
  792. }
  793. return this;
  794. }
  795. });
  796. return Animator;
  797. }
  798. };
  799. //src/animate/easing.js
  800. /**
  801. * Kity Animate Easing modified from jQuery Easing
  802. * Author: techird
  803. * Changes:
  804. * 1. make easing functions standalone
  805. * 2. remove the 'x' parameter
  806. */
  807. /* ============================================================
  808. * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
  809. *
  810. * Open source under the BSD License.
  811. *
  812. * Copyright © 2008 George McGinley Smith
  813. * All rights reserved.
  814. * https://raw.github.com/danro/jquery-easing/master/LICENSE
  815. * ======================================================== */
  816. _p[1] = {
  817. value: function value(require, exports, module) {
  818. var easings = {
  819. // t: current_time, b: begin_value, c: change_value, d: duration
  820. linear: function linear(t, b, c, d) {
  821. return c * (t / d) + b;
  822. },
  823. swing: function swing(t, b, c, d) {
  824. return easings.easeOutQuad(t, b, c, d);
  825. },
  826. ease: function ease(t, b, c, d) {
  827. return easings.easeInOutCubic(t, b, c, d);
  828. },
  829. easeInQuad: function easeInQuad(t, b, c, d) {
  830. return c * (t /= d) * t + b;
  831. },
  832. easeOutQuad: function easeOutQuad(t, b, c, d) {
  833. return -c * (t /= d) * (t - 2) + b;
  834. },
  835. easeInOutQuad: function easeInOutQuad(t, b, c, d) {
  836. if ((t /= d / 2) < 1) return c / 2 * t * t + b;
  837. return -c / 2 * (--t * (t - 2) - 1) + b;
  838. },
  839. easeInCubic: function easeInCubic(t, b, c, d) {
  840. return c * (t /= d) * t * t + b;
  841. },
  842. easeOutCubic: function easeOutCubic(t, b, c, d) {
  843. return c * ((t = t / d - 1) * t * t + 1) + b;
  844. },
  845. easeInOutCubic: function easeInOutCubic(t, b, c, d) {
  846. if ((t /= d / 2) < 1) return c / 2 * t * t * t + b;
  847. return c / 2 * ((t -= 2) * t * t + 2) + b;
  848. },
  849. easeInQuart: function easeInQuart(t, b, c, d) {
  850. return c * (t /= d) * t * t * t + b;
  851. },
  852. easeOutQuart: function easeOutQuart(t, b, c, d) {
  853. return -c * ((t = t / d - 1) * t * t * t - 1) + b;
  854. },
  855. easeInOutQuart: function easeInOutQuart(t, b, c, d) {
  856. if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b;
  857. return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
  858. },
  859. easeInQuint: function easeInQuint(t, b, c, d) {
  860. return c * (t /= d) * t * t * t * t + b;
  861. },
  862. easeOutQuint: function easeOutQuint(t, b, c, d) {
  863. return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
  864. },
  865. easeInOutQuint: function easeInOutQuint(t, b, c, d) {
  866. if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b;
  867. return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
  868. },
  869. easeInSine: function easeInSine(t, b, c, d) {
  870. return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
  871. },
  872. easeOutSine: function easeOutSine(t, b, c, d) {
  873. return c * Math.sin(t / d * (Math.PI / 2)) + b;
  874. },
  875. easeInOutSine: function easeInOutSine(t, b, c, d) {
  876. return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
  877. },
  878. easeInExpo: function easeInExpo(t, b, c, d) {
  879. return t === 0 ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
  880. },
  881. easeOutExpo: function easeOutExpo(t, b, c, d) {
  882. return t == d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
  883. },
  884. easeInOutExpo: function easeInOutExpo(t, b, c, d) {
  885. if (t === 0) return b;
  886. if (t == d) return b + c;
  887. if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
  888. return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
  889. },
  890. easeInCirc: function easeInCirc(t, b, c, d) {
  891. return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
  892. },
  893. easeOutCirc: function easeOutCirc(t, b, c, d) {
  894. return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
  895. },
  896. easeInOutCirc: function easeInOutCirc(t, b, c, d) {
  897. if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
  898. return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
  899. },
  900. easeInElastic: function easeInElastic(t, b, c, d) {
  901. var s = 1.70158;
  902. var p = 0;
  903. var a = c;
  904. if (t === 0) return b;
  905. if ((t /= d) == 1) return b + c;
  906. if (!p) p = d * .3;
  907. if (a < Math.abs(c)) {
  908. a = c;
  909. s = p / 4;
  910. } else s = p / (2 * Math.PI) * Math.asin(c / a);
  911. return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  912. },
  913. easeOutElastic: function easeOutElastic(t, b, c, d) {
  914. var s = 1.70158;
  915. var p = 0;
  916. var a = c;
  917. if (t === 0) return b;
  918. if ((t /= d) == 1) return b + c;
  919. if (!p) p = d * .3;
  920. if (a < Math.abs(c)) {
  921. a = c;
  922. s = p / 4;
  923. } else s = p / (2 * Math.PI) * Math.asin(c / a);
  924. return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
  925. },
  926. easeInOutElastic: function easeInOutElastic(t, b, c, d) {
  927. var s = 1.70158;
  928. var p = 0;
  929. var a = c;
  930. if (t === 0) return b;
  931. if ((t /= d / 2) == 2) return b + c;
  932. if (!p) p = d * (.3 * 1.5);
  933. if (a < Math.abs(c)) {
  934. a = c;
  935. var s = p / 4;
  936. } else var s = p / (2 * Math.PI) * Math.asin(c / a);
  937. if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  938. return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
  939. },
  940. easeInBack: function easeInBack(t, b, c, d, s) {
  941. if (s == undefined) s = 1.70158;
  942. return c * (t /= d) * t * ((s + 1) * t - s) + b;
  943. },
  944. easeOutBack: function easeOutBack(t, b, c, d, s) {
  945. if (s == undefined) s = 1.70158;
  946. return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
  947. },
  948. easeInOutBack: function easeInOutBack(t, b, c, d, s) {
  949. if (s == undefined) s = 1.70158;
  950. if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b;
  951. return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;
  952. },
  953. easeInBounce: function easeInBounce(t, b, c, d) {
  954. return c - easings.easeOutBounce(d - t, 0, c, d) + b;
  955. },
  956. easeOutBounce: function easeOutBounce(t, b, c, d) {
  957. if ((t /= d) < 1 / 2.75) {
  958. return c * (7.5625 * t * t) + b;
  959. } else if (t < 2 / 2.75) {
  960. return c * (7.5625 * (t -= 1.5 / 2.75) * t + .75) + b;
  961. } else if (t < 2.5 / 2.75) {
  962. return c * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) + b;
  963. } else {
  964. return c * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) + b;
  965. }
  966. },
  967. easeInOutBounce: function easeInOutBounce(t, b, c, d) {
  968. if (t < d / 2) return easings.easeInBounce(t * 2, 0, c, d) * .5 + b;
  969. return easings.easeOutBounce(t * 2 - d, 0, c, d) * .5 + c * .5 + b;
  970. }
  971. };
  972. return easings;
  973. }
  974. };
  975. /*
  976. *
  977. * TERMS OF USE - EASING EQUATIONS
  978. *
  979. * Open source under the BSD License.
  980. *
  981. * Copyright © 2001 Robert Penner
  982. * All rights reserved.
  983. *
  984. * Redistribution and use in source and binary forms, with or without modification,
  985. * are permitted provided that the following conditions are met:
  986. *
  987. * Redistributions of source code must retain the above copyright notice, this list of
  988. * conditions and the following disclaimer.
  989. * Redistributions in binary form must reproduce the above copyright notice, this list
  990. * of conditions and the following disclaimer in the documentation and/or other materials
  991. * provided with the distribution.
  992. *
  993. * Neither the name of the author nor the names of contributors may be used to endorse
  994. * or promote products derived from this software without specific prior written permission.
  995. *
  996. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
  997. * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  998. * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  999. * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  1000. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
  1001. * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  1002. * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  1003. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  1004. * OF THE POSSIBILITY OF SUCH DAMAGE.
  1005. *
  1006. */
  1007. //src/animate/frame.js
  1008. /**
  1009. * @fileOverview
  1010. *
  1011. * 提供动画帧的基本支持
  1012. */
  1013. _p[2] = {
  1014. value: function value(require, exports) {
  1015. // 原生动画帧方法 polyfill
  1016. var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) {
  1017. return setTimeout(fn, 1e3 / 60);
  1018. };
  1019. var cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.msCancelAnimationFrame || window.clearTimeout;
  1020. // 上一个请求的原生动画帧 id
  1021. var frameRequestId;
  1022. // 等待执行的帧动作的集合,这些帧的方法将在下个原生动画帧同步执行
  1023. var pendingFrames = [];
  1024. /**
  1025. * 添加一个帧到等待集合中
  1026. *
  1027. * 如果添加的帧是序列的第一个,至少有一个帧需要被执行,则会请求一个原生动画帧来执行
  1028. */
  1029. function pushFrame(frame) {
  1030. if (pendingFrames.push(frame) === 1) {
  1031. frameRequestId = requestAnimationFrame(executePendingFrames);
  1032. }
  1033. }
  1034. /**
  1035. * 执行所有等待帧
  1036. */
  1037. function executePendingFrames() {
  1038. var frames = pendingFrames;
  1039. pendingFrames = [];
  1040. while (frames.length) {
  1041. executeFrame(frames.pop());
  1042. }
  1043. frameRequestId = 0;
  1044. }
  1045. /**
  1046. * @method kity.requestFrame
  1047. * @catalog animate
  1048. * @grammar kity.requestFrame(action) => {frame}
  1049. * @description 请求一个帧,执行指定的动作。动作回调提供一些有用的信息
  1050. *
  1051. * @param {Function} action
  1052. *
  1053. * 要执行的动作,该动作回调有一个参数 frame,其中:
  1054. *
  1055. * frame.time {Number}
  1056. * 动作执行时的时间戳(ms)
  1057. *
  1058. * frame.index {Number}
  1059. * 当前执行的帧的编号(首帧为 0)
  1060. *
  1061. * frame.dur {Number}
  1062. * 上一帧至当前帧经过的时间,单位 ms
  1063. *
  1064. * frame.elapsed {Number}
  1065. * 从首帧开始到当前帧经过的时间,单位 ms
  1066. *
  1067. * frame.action {Number}
  1068. * 指向当前的帧处理函数
  1069. *
  1070. * frame.next()
  1071. * 表示下一帧继续执行。如果不调用该方法,将不会执行下一帧。
  1072. *
  1073. * @example
  1074. *
  1075. * ```js
  1076. * kity.requestFrame(function(frame) {
  1077. * console.log('平均帧率:' + frame.elapsed / (frame.index + 1));
  1078. *
  1079. * // 更新或渲染动作
  1080. *
  1081. * frame.next(); //继续执行下一帧
  1082. * });
  1083. * ```
  1084. */
  1085. function requestFrame(action) {
  1086. var frame = initFrame(action);
  1087. pushFrame(frame);
  1088. return frame;
  1089. }
  1090. /**
  1091. * @method kity.releaseFrame
  1092. * @catalog animate
  1093. * @grammar kity.releaseFrame(frame)
  1094. * @description 释放一个已经请求过的帧,如果该帧在等待集合里,将移除,下个动画帧不会执行释放的帧
  1095. *
  1096. * @param {frame} frame 使用 kity.requestFrame() 返回的帧
  1097. *
  1098. * @example
  1099. *
  1100. * ```js
  1101. * var frame = kity.requestFrame(function() {....});
  1102. * kity.releaseFrame(frame);
  1103. * ```
  1104. */
  1105. function releaseFrame(frame) {
  1106. var index = pendingFrames.indexOf(frame);
  1107. if (~index) {
  1108. pendingFrames.splice(index, 1);
  1109. }
  1110. if (pendingFrames.length === 0) {
  1111. cancelAnimationFrame(frameRequestId);
  1112. }
  1113. }
  1114. /**
  1115. * 初始化一个帧,主要用于后续计算
  1116. */
  1117. function initFrame(action) {
  1118. var frame = {
  1119. index: 0,
  1120. time: +new Date(),
  1121. elapsed: 0,
  1122. action: action,
  1123. next: function next() {
  1124. pushFrame(frame);
  1125. }
  1126. };
  1127. return frame;
  1128. }
  1129. /**
  1130. * 执行一个帧动作
  1131. */
  1132. function executeFrame(frame) {
  1133. // 当前帧时间错
  1134. var time = +new Date();
  1135. // 当上一帧到当前帧经过的时间
  1136. var dur = time - frame.time;
  1137. //
  1138. // http://stackoverflow.com/questions/13133434/requestanimationframe-detect-stop
  1139. // 浏览器最小化或切换标签,requestAnimationFrame 不会执行。
  1140. // 检测时间超过 200 ms(频率小于 5Hz ) 判定为计时器暂停,重置为一帧长度
  1141. //
  1142. if (dur > 200) {
  1143. dur = 1e3 / 60;
  1144. }
  1145. frame.dur = dur;
  1146. frame.elapsed += dur;
  1147. frame.time = time;
  1148. frame.action.call(null, frame);
  1149. frame.index++;
  1150. }
  1151. // 暴露
  1152. exports.requestFrame = requestFrame;
  1153. exports.releaseFrame = releaseFrame;
  1154. }
  1155. };
  1156. //src/animate/motionanimator.js
  1157. /**
  1158. * @fileOverview
  1159. *
  1160. * 路径动画器,可以让一个物体沿着某个轨迹运动
  1161. */
  1162. _p[3] = {
  1163. value: function value(require) {
  1164. var Animator = _p.r(0);
  1165. var g = _p.r(35);
  1166. var Path = _p.r(47);
  1167. var Shape = _p.r(61);
  1168. /**
  1169. * @class kity.MotionAnimator
  1170. * @catalog animate
  1171. * @base kity.Animator
  1172. * @description 路径动画器,可以让一个物体沿着某个轨迹运动
  1173. *
  1174. * @example
  1175. *
  1176. * ```js
  1177. * var motionAnimator = new MotionAnimator('M0,0C100,0,100,0,100,100L200,200');
  1178. * motionAnimator.start(rect, 3000);
  1179. * ```
  1180. */
  1181. var MotionAnimator = _p.r(11).createClass("MotionAnimator", {
  1182. base: Animator,
  1183. /**
  1184. * @constructor
  1185. * @for kity.MotionAnimator
  1186. * @grammar new kity.MotionAnimator(path, doRotate)
  1187. * @param {kity.Path|String|PathSegment} path 运动的轨迹,或者是 kity.Path 对象
  1188. * @param {boolean} doRotate 是否让运动的目标沿着路径的切线方向旋转
  1189. */
  1190. constructor: function constructor(path, doRotate) {
  1191. var me = this;
  1192. this.callBase({
  1193. beginValue: 0,
  1194. finishValue: 1,
  1195. setter: function setter(target, value) {
  1196. var path = me.motionPath instanceof Path ? me.motionPath.getPathData() : me.motionPath;
  1197. var point = g.pointAtPath(path, value);
  1198. target.setTranslate(point.x, point.y);
  1199. if (this.doRotate) target.setRotate(point.tan.getAngle());
  1200. }
  1201. });
  1202. /**
  1203. * @property doRotate
  1204. * @for kity.MotionAnimator
  1205. * @type {boolean}
  1206. * @description 是否让运动的目标沿着路径的切线方向旋转
  1207. *
  1208. * @example
  1209. *
  1210. * ```js
  1211. * motionAnimator.doRotate = true; // 目标沿着切线方向旋转
  1212. * ```
  1213. */
  1214. this.doRotate = doRotate;
  1215. /**
  1216. * @property motionPath
  1217. * @for kity.MotionAnimator
  1218. * @type {kity.Path|String|PathSegment}
  1219. * @description 运动沿着的路径,可以在动画过程中更新
  1220. */
  1221. this.motionPath = path;
  1222. }
  1223. });
  1224. _p.r(11).extendClass(Shape, {
  1225. /**
  1226. * @method motion()
  1227. * @catalog animate
  1228. * @for kity.Shape
  1229. * @description 让图形沿着指定的路径运动
  1230. *
  1231. * @grammar motion(path, duration, easing, delay, callback) => this
  1232. *
  1233. * @param {kity.Path|String|PathSegment} path 运动的轨迹,或者是 kity.Path 对象
  1234. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  1235. * @param {Number|String} delay 动画播放前的延时
  1236. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  1237. * @param {Function} callback 播放结束之后的回调函数
  1238. */
  1239. motion: function motion(path, duration, easing, delay, callback) {
  1240. return this.animate(new MotionAnimator(path), duration, easing, delay, callback);
  1241. }
  1242. });
  1243. return MotionAnimator;
  1244. }
  1245. };
  1246. //src/animate/opacityanimator.js
  1247. /**
  1248. * @fileOverview
  1249. *
  1250. * 透明度动画器,让图形动画过度到指定的透明度。
  1251. */
  1252. _p[4] = {
  1253. value: function value(require) {
  1254. var Animator = _p.r(0);
  1255. /**
  1256. * @class kity.OpacityAnimator
  1257. * @catalog animate
  1258. * @base kity.Animator
  1259. * @description 透明度动画器,让图形动画过度到指定的透明度
  1260. */
  1261. var OpacityAnimator = _p.r(11).createClass("OpacityAnimator", {
  1262. base: Animator,
  1263. /**
  1264. * @constructor
  1265. * @for kity.OpacityAnimator
  1266. * @grammar new kity.OpacityAnimator(opacity)
  1267. *
  1268. * @param {Number} opacity 目标透明度,取值范围 0 - 1
  1269. */
  1270. constructor: function constructor(opacity) {
  1271. this.callBase({
  1272. beginValue: function beginValue(target) {
  1273. return target.getOpacity();
  1274. },
  1275. finishValue: opacity,
  1276. setter: function setter(target, value) {
  1277. target.setOpacity(value);
  1278. }
  1279. });
  1280. }
  1281. });
  1282. var Shape = _p.r(61);
  1283. _p.r(11).extendClass(Shape, {
  1284. /**
  1285. * @method fxOpacity()
  1286. * @catalog animate
  1287. * @for kity.Shape
  1288. * @description 让图形的透明度以动画的形式过渡到指定的值
  1289. *
  1290. * @grammar fxOpacity(opacity, duration, easing, delay, callback) => {this}
  1291. *
  1292. * @param {Number} opacity 动画的目标透明度
  1293. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  1294. * @param {Number|String} delay 动画播放前的延时
  1295. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  1296. * @param {Function} callback 播放结束之后的回调函数
  1297. */
  1298. fxOpacity: function fxOpacity(opacity, duration, easing, delay, callback) {
  1299. return this.animate(new OpacityAnimator(opacity), duration, easing, delay, callback);
  1300. },
  1301. /**
  1302. * @method fadeTo()
  1303. * @catalog animate
  1304. * @for kity.Shape
  1305. * @description 让图形的透明度以动画的形式过渡到指定的值
  1306. *
  1307. * @grammar fadeTo(opacity, duration, easing, delay, callback) => {this}
  1308. *
  1309. * @param {Number} opacity 动画的目标透明度
  1310. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  1311. * @param {Number|String} delay 动画播放前的延时
  1312. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  1313. * @param {Function} callback 播放结束之后的回调函数
  1314. */
  1315. fadeTo: function fadeTo() {
  1316. return this.fxOpacity.apply(this, arguments);
  1317. },
  1318. /**
  1319. * @method fadeIn()
  1320. * @catalog animate
  1321. * @for kity.Shape
  1322. * @description 让图形淡入
  1323. *
  1324. * @grammar fadeIn(duration, easing, delay, callback) => {this}
  1325. *
  1326. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  1327. * @param {Number|String} delay 动画播放前的延时
  1328. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  1329. * @param {Function} callback 播放结束之后的回调函数
  1330. */
  1331. fadeIn: function fadeIn() {
  1332. return this.fxOpacity.apply(this, [1].concat([].slice.call(arguments)));
  1333. },
  1334. /**
  1335. * @method fadeOut()
  1336. * @catalog animate
  1337. * @for kity.Shape
  1338. * @description 让图形淡出
  1339. *
  1340. * @grammar fadeIn(duration, easing, delay, callback) => {this}
  1341. *
  1342. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  1343. * @param {Number|String} delay 动画播放前的延时
  1344. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  1345. * @param {Function} callback 播放结束之后的回调函数
  1346. */
  1347. fadeOut: function fadeOut() {
  1348. return this.fxOpacity.apply(this, [0].concat([].slice.call(arguments)));
  1349. }
  1350. });
  1351. return OpacityAnimator;
  1352. }
  1353. };
  1354. //src/animate/pathanimator.js
  1355. /**
  1356. * @fileOverview
  1357. *
  1358. * 路径补间动画器,让图形从一个形状变为另一个形状
  1359. */
  1360. _p[5] = {
  1361. value: function value(require) {
  1362. var Animator = _p.r(0);
  1363. var g = _p.r(35);
  1364. /**
  1365. * @catalog animate
  1366. *
  1367. * @class kity.PathAnimator
  1368. * @base kity.Animator
  1369. * @description 路径补间动画器,让图形从一个形状变为另一个形状
  1370. *
  1371. * @example
  1372. *
  1373. * ```js
  1374. * var path = new kity.Path('M0,0L0,100');
  1375. * var pa = new kity.PathAnimator('M0,0C100,0,100,0,100,100');
  1376. * pa.start(path, 300);
  1377. * ```
  1378. */
  1379. var PathAnimator = _p.r(11).createClass("OpacityAnimator", {
  1380. base: Animator,
  1381. /**
  1382. * @constructor
  1383. * @for kity.PathAnimator
  1384. *
  1385. * @grammar new kity.Path.Animator(path)
  1386. *
  1387. * @param {String|PathSegment} path 目标形状的路径数据
  1388. *
  1389. */
  1390. constructor: function constructor(path) {
  1391. this.callBase({
  1392. beginValue: function beginValue(target) {
  1393. this.beginPath = target.getPathData();
  1394. return 0;
  1395. },
  1396. finishValue: 1,
  1397. setter: function setter(target, value) {
  1398. target.setPathData(g.pathTween(this.beginPath, path, value));
  1399. }
  1400. });
  1401. }
  1402. });
  1403. var Path = _p.r(47);
  1404. _p.r(11).extendClass(Path, {
  1405. /**
  1406. * @catalog animate
  1407. *
  1408. * @method fxPath()
  1409. * @for kity.Shape
  1410. * @description 以动画的形式把路径变换为新路径
  1411. *
  1412. * @grammar fxPath(path, duration, easing, delay, callback) => {this}
  1413. *
  1414. * @param {String|PathSegment} path 要变换新路径
  1415. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  1416. * @param {Number|String} delay 动画播放前的延时
  1417. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  1418. * @param {Function} callback 播放结束之后的回调函数
  1419. */
  1420. fxPath: function fxPath(path, duration, easing, delay, callback) {
  1421. return this.animate(new PathAnimator(path), duration, easing, delay, callback);
  1422. }
  1423. });
  1424. return PathAnimator;
  1425. }
  1426. };
  1427. //src/animate/rotateanimator.js
  1428. /**
  1429. * @fileOverview
  1430. *
  1431. * 提供支持目标旋转的动画器
  1432. */
  1433. _p[6] = {
  1434. value: function value(require) {
  1435. var Animator = _p.r(0);
  1436. /**
  1437. * @class kity.RotateAnimator
  1438. * @base Animator
  1439. * @description 提供支持目标旋转的动画器
  1440. */
  1441. var RotateAnimator = _p.r(11).createClass("RotateAnimator", {
  1442. base: Animator,
  1443. /**
  1444. * @constructor
  1445. * @for kity.RotateAnimator
  1446. *
  1447. * @grammar new kity.RotateAnimator(deg, ax, ay)
  1448. *
  1449. * @param {Number} deg 要旋转的角度
  1450. */
  1451. constructor: function constructor(deg) {
  1452. this.callBase({
  1453. beginValue: 0,
  1454. finishValue: deg,
  1455. setter: function setter(target, value, timeline) {
  1456. var delta = timeline.getDelta();
  1457. target.rotate(delta);
  1458. }
  1459. });
  1460. }
  1461. });
  1462. var Shape = _p.r(61);
  1463. _p.r(11).extendClass(Shape, {
  1464. /**
  1465. * @method fxRotate()
  1466. * @for kity.Shape
  1467. * @description 让目标以动画旋转指定的角度
  1468. *
  1469. * @grammar fxRotate(deg, duration, easing, delay) => {this}
  1470. *
  1471. * @param {Number} deg 要旋转的角度
  1472. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  1473. * @param {Number|String} delay 动画播放前的延时
  1474. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  1475. * @param {Function} callback 播放结束之后的回调函数
  1476. */
  1477. fxRotate: function fxRotate(deg, duration, easing, delay, callback) {
  1478. return this.animate(new RotateAnimator(deg), duration, easing, delay, callback);
  1479. }
  1480. });
  1481. return RotateAnimator;
  1482. }
  1483. };
  1484. //src/animate/scaleanimator.js
  1485. /**
  1486. * @fileOverview
  1487. *
  1488. * 提供支持目标缩放的动画器
  1489. */
  1490. _p[7] = {
  1491. value: function value(require) {
  1492. var Animator = _p.r(0);
  1493. /**
  1494. * @class kity.ScaleAnimator
  1495. * @base kity.Animator
  1496. * @description 提供支持目标缩放的动画器
  1497. */
  1498. var ScaleAnimator = _p.r(11).createClass("ScaleAnimator", {
  1499. base: Animator,
  1500. /**
  1501. * @constructor
  1502. * @for kity.ScaleAnimator
  1503. *
  1504. * @grammar new kity.ScaleAnimator(sx, sy)
  1505. * @param {Number} sx x 轴的缩放比例
  1506. * @param {Number} sy y 轴的缩放比例
  1507. */
  1508. constructor: function constructor(sx, sy) {
  1509. this.callBase({
  1510. beginValue: 0,
  1511. finishValue: 1,
  1512. setter: function setter(target, value, timeline) {
  1513. var delta = timeline.getDelta();
  1514. var kx = Math.pow(sx, delta);
  1515. var ky = Math.pow(sy, delta);
  1516. target.scale(ky, kx);
  1517. }
  1518. });
  1519. }
  1520. });
  1521. var Shape = _p.r(61);
  1522. _p.r(11).extendClass(Shape, {
  1523. /**
  1524. * @method fxScale
  1525. * @for kity.Shape
  1526. * @description 动画缩放当前的图形
  1527. *
  1528. * @grammar fxScale(sx, sy, duration, easing, delay, callback) => {this}
  1529. *
  1530. * @param {Number} sx x 轴的缩放比例
  1531. * @param {Number} sy y 轴的缩放比例
  1532. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  1533. * @param {Number|String} delay 动画播放前的延时
  1534. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  1535. * @param {Function} callback 播放结束之后的回调函数
  1536. */
  1537. fxScale: function fxScale(sx, sy, duration, easing, delay, callback) {
  1538. return this.animate(new ScaleAnimator(sx, sy), duration, easing, delay, callback);
  1539. }
  1540. });
  1541. return ScaleAnimator;
  1542. }
  1543. };
  1544. //src/animate/timeline.js
  1545. /**
  1546. * @fileOverview
  1547. *
  1548. * 动画时间线的实现
  1549. */
  1550. _p[8] = {
  1551. value: function value(require) {
  1552. var EventHandler = _p.r(34);
  1553. var utils = _p.r(12);
  1554. var frame = _p.r(2);
  1555. function getPercentValue(b, f, p) {
  1556. return utils.paralle(b, f, function (b, f) {
  1557. return b + (f - b) * p;
  1558. });
  1559. }
  1560. function _getDelta(v1, v2) {
  1561. return utils.paralle(v1, v2, function (v1, v2) {
  1562. return v2 - v1;
  1563. });
  1564. }
  1565. function TimelineEvent(timeline, type, param) {
  1566. this.timeline = timeline;
  1567. this.target = timeline.target;
  1568. this.type = type;
  1569. for (var name in param) {
  1570. if (param.hasOwnProperty(name)) {
  1571. this[name] = param[name];
  1572. }
  1573. }
  1574. }
  1575. /**
  1576. * @class kity.Timeline
  1577. * @catalog animate
  1578. * @mixins EventHandler
  1579. * @description 动画时间线
  1580. */
  1581. var Timeline = _p.r(11).createClass("Timeline", {
  1582. mixins: [EventHandler],
  1583. /**
  1584. * @constructor
  1585. * @for kity.Timeline
  1586. * @private
  1587. * @description 时间线应该由动画器进行构造,不应手动创建
  1588. *
  1589. */
  1590. constructor: function constructor(animator, target, duration, easing) {
  1591. this.callMixin();
  1592. this.target = target;
  1593. this.time = 0;
  1594. this.duration = duration;
  1595. this.easing = easing;
  1596. this.animator = animator;
  1597. this.beginValue = animator.beginValue;
  1598. this.finishValue = animator.finishValue;
  1599. this.setter = animator.setter;
  1600. this.status = "ready";
  1601. },
  1602. /**
  1603. * @private
  1604. *
  1605. * 让时间线进入下一帧
  1606. */
  1607. nextFrame: function nextFrame(frame) {
  1608. if (this.status != "playing") {
  1609. return;
  1610. }
  1611. this.time += frame.dur;
  1612. this.setValue(this.getValue());
  1613. if (this.time >= this.duration) {
  1614. this.timeUp();
  1615. }
  1616. frame.next();
  1617. },
  1618. /**
  1619. * @method getPlayTime()
  1620. * @for kity.Timeline
  1621. * @grammar getPlayTime() => {Number}
  1622. * @description 获得当前播放的时间,取值区间为 [0, duration]
  1623. */
  1624. getPlayTime: function getPlayTime() {
  1625. return this.rollbacking ? this.duration - this.time : this.time;
  1626. },
  1627. /**
  1628. * @method getTimeProportion()
  1629. * @for kity.Timeline
  1630. * @grammar getTimeProportion() => {Number}
  1631. * @description 获得当前播放时间的比例,取值区间为 [0, 1]
  1632. */
  1633. getTimeProportion: function getTimeProportion() {
  1634. return this.getPlayTime() / this.duration;
  1635. },
  1636. /**
  1637. * @method getValueProportion()
  1638. * @for kity.Timeline
  1639. * @grammar getValueProportion() => {Number}
  1640. * @description 获得当前播放时间对应值的比例,取值区间为 [0, 1];该值实际上是时间比例值经过缓动函数计算之后的值。
  1641. */
  1642. getValueProportion: function getValueProportion() {
  1643. return this.easing(this.getPlayTime(), 0, 1, this.duration);
  1644. },
  1645. /**
  1646. * @method getValue()
  1647. * @for kity.Timeline
  1648. * @grammar getValue() => {any}
  1649. * @description 返回当前播放时间对应的值。
  1650. */
  1651. getValue: function getValue() {
  1652. var b = this.beginValue;
  1653. var f = this.finishValue;
  1654. var p = this.getValueProportion();
  1655. return getPercentValue(b, f, p);
  1656. },
  1657. /**
  1658. * @private
  1659. *
  1660. * 把值通过动画器的 setter 设置到目标上
  1661. */
  1662. setValue: function setValue(value) {
  1663. this.lastValue = this.currentValue;
  1664. this.currentValue = value;
  1665. this.setter.call(this.target, this.target, value, this);
  1666. },
  1667. /**
  1668. * @method getDelta()
  1669. * @for kity.Timeline
  1670. * @grammar getDelta() => {any}
  1671. * @description 返回当前值和上一帧的值的差值
  1672. */
  1673. getDelta: function getDelta() {
  1674. this.lastValue = this.lastValue === undefined ? this.beginValue : this.lastValue;
  1675. return _getDelta(this.lastValue, this.currentValue);
  1676. },
  1677. /**
  1678. * @method play()
  1679. * @for kity.Timeline
  1680. * @grammar play() => {this}
  1681. * @description 让时间线播放,如果时间线还没开始,或者已停止、已结束,则重头播放;如果是已暂停,从暂停的位置继续播放
  1682. */
  1683. play: function play() {
  1684. var lastStatus = this.status;
  1685. this.status = "playing";
  1686. switch (lastStatus) {
  1687. case "ready":
  1688. if (utils.isFunction(this.beginValue)) {
  1689. this.beginValue = this.beginValue.call(this.target, this.target);
  1690. }
  1691. if (utils.isFunction(this.finishValue)) {
  1692. this.finishValue = this.finishValue.call(this.target, this.target);
  1693. }
  1694. this.time = 0;
  1695. this.setValue(this.beginValue);
  1696. this.frame = frame.requestFrame(this.nextFrame.bind(this));
  1697. break;
  1698. case "finished":
  1699. case "stoped":
  1700. this.time = 0;
  1701. this.frame = frame.requestFrame(this.nextFrame.bind(this));
  1702. break;
  1703. case "paused":
  1704. this.frame.next();
  1705. }
  1706. /**
  1707. * @event play
  1708. * @for kity.Timeline
  1709. * @description 在时间线播放后触发
  1710. *
  1711. * @param {String} event.lastStatus
  1712. * 表示播放前的上一个状态,可能取值为 'ready'、'finished'、'stoped'、'paused'
  1713. */
  1714. this.fire("play", new TimelineEvent(this, "play", {
  1715. lastStatus: lastStatus
  1716. }));
  1717. return this;
  1718. },
  1719. /**
  1720. * @method pause()
  1721. * @for kity.Timeline
  1722. * @description 暂停当前的时间线
  1723. *
  1724. * @grammar pause() => {this}
  1725. */
  1726. pause: function pause() {
  1727. this.status = "paused";
  1728. /**
  1729. * @event pause
  1730. * @for kity.Timeline
  1731. * @description 暂停事件,在时间线暂停时触发
  1732. */
  1733. this.fire("pause", new TimelineEvent(this, "pause"));
  1734. frame.releaseFrame(this.frame);
  1735. return this;
  1736. },
  1737. /**
  1738. * @method stop()
  1739. * @for kity.Timeline
  1740. * @description 停止当前时间线
  1741. *
  1742. * @grammar stop() => {this}
  1743. */
  1744. stop: function stop() {
  1745. this.status = "stoped";
  1746. this.setValue(this.finishValue);
  1747. this.rollbacking = false;
  1748. /**
  1749. * @event stop
  1750. * @for kity.Timeline
  1751. * @description 停止时间,在时间线停止时触发
  1752. */
  1753. this.fire("stop", new TimelineEvent(this, "stop"));
  1754. frame.releaseFrame(this.frame);
  1755. return this;
  1756. },
  1757. /**
  1758. * @private
  1759. *
  1760. * 播放结束之后的处理
  1761. */
  1762. timeUp: function timeUp() {
  1763. if (this.repeatOption) {
  1764. this.time = 0;
  1765. if (this.rollback) {
  1766. if (this.rollbacking) {
  1767. this.decreaseRepeat();
  1768. this.rollbacking = false;
  1769. } else {
  1770. this.rollbacking = true;
  1771. /**
  1772. * @event rollback
  1773. * @for kity.Timeline
  1774. * @description 回滚事件,在时间线回滚播放开始的时候触发
  1775. */
  1776. this.fire("rollback", new TimelineEvent(this, "rollback"));
  1777. }
  1778. } else {
  1779. this.decreaseRepeat();
  1780. }
  1781. if (!this.repeatOption) {
  1782. this.finish();
  1783. } else {
  1784. /**
  1785. * @event repeat
  1786. * @for kity.Timeline
  1787. * @description 循环事件,在时间线循环播放开始的时候触发
  1788. */
  1789. this.fire("repeat", new TimelineEvent(this, "repeat"));
  1790. }
  1791. } else {
  1792. this.finish();
  1793. }
  1794. },
  1795. /**
  1796. * @private
  1797. *
  1798. * 决定播放结束的处理
  1799. */
  1800. finish: function finish() {
  1801. this.setValue(this.finishValue);
  1802. this.status = "finished";
  1803. /**
  1804. * @event finish
  1805. * @for kity.Timeline
  1806. * @description 结束事件,在时间线播放结束后触发(包括重复和回滚都结束)
  1807. */
  1808. this.fire("finish", new TimelineEvent(this, "finish"));
  1809. frame.releaseFrame(this.frame);
  1810. },
  1811. /**
  1812. * @private
  1813. *
  1814. * 循环次数递减
  1815. */
  1816. decreaseRepeat: function decreaseRepeat() {
  1817. if (this.repeatOption !== true) {
  1818. this.repeatOption--;
  1819. }
  1820. },
  1821. /**
  1822. * @method repeat()
  1823. * @for kity.Timeline
  1824. * @description 设置时间线的重复选项
  1825. *
  1826. * @grammar repeat(repeat, rollback) => {this}
  1827. *
  1828. * @param {Number|Boolean} repeat
  1829. * 是否重复播放,设置为 true 无限循环播放,设置数值则循环指定的次数
  1830. * @param {Boolean} rollback
  1831. * 指示是否要回滚播放。
  1832. * 如果设置为真,一次事件到 duration 则一个来回算一次循环次数,否则播放完成一次算一次循环次数
  1833. *
  1834. */
  1835. repeat: function repeat(_repeat, rollback) {
  1836. this.repeatOption = _repeat;
  1837. this.rollback = rollback;
  1838. return this;
  1839. }
  1840. });
  1841. Timeline.requestFrame = frame.requestFrame;
  1842. Timeline.releaseFrame = frame.releaseFrame;
  1843. return Timeline;
  1844. }
  1845. };
  1846. //src/animate/translateanimator.js
  1847. /**
  1848. * @fileOverview
  1849. *
  1850. * 提供让图形移动的动画器
  1851. */
  1852. _p[9] = {
  1853. value: function value(require) {
  1854. var Animator = _p.r(0);
  1855. /**
  1856. * @class kity.TranslateAnimator
  1857. * @base kity.Animator
  1858. * @description 提供让图形移动的动画器
  1859. */
  1860. var TranslateAnimator = _p.r(11).createClass("TranslateAnimator", {
  1861. base: Animator,
  1862. /**
  1863. * @constructor
  1864. * @for kity.TranslateAnimator
  1865. * @grammar new kity.TranslateAnimator(x, y)
  1866. * @param {Number} x x 方向上需要移动的距离
  1867. * @param {Number} y y 方向上需要移动的距离
  1868. */
  1869. constructor: function constructor(x, y) {
  1870. this.callBase({
  1871. x: 0,
  1872. y: 0
  1873. }, {
  1874. x: x,
  1875. y: y
  1876. }, function (target, value, timeline) {
  1877. var delta = timeline.getDelta();
  1878. target.translate(delta.x, delta.y);
  1879. });
  1880. }
  1881. });
  1882. var Shape = _p.r(61);
  1883. _p.r(11).extendClass(Shape, {
  1884. /**
  1885. * @method fxTranslate()
  1886. * @for kity.Shape
  1887. * @description 让目标以动画平移指定的距离
  1888. *
  1889. * @grammar fxTranslate(x, y, duration, easing, delay, callback) => {this}
  1890. *
  1891. * @param {Number} x x 方向上需要移动的距离
  1892. * @param {Number} y y 方向上需要移动的距离
  1893. * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min"
  1894. * @param {Number|String} delay 动画播放前的延时
  1895. * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing'
  1896. * @param {Function} callback 播放结束之后的回调函数
  1897. */
  1898. fxTranslate: function fxTranslate(x, y, duration, easing, delay, callback) {
  1899. return this.animate(new TranslateAnimator(x, y), duration, easing, delay, callback);
  1900. }
  1901. });
  1902. return TranslateAnimator;
  1903. }
  1904. };
  1905. //src/core/browser.js
  1906. /**
  1907. * @fileOverview
  1908. *
  1909. * 提供浏览器判断的一些字段
  1910. */
  1911. _p[10] = {
  1912. value: function value() {
  1913. /**
  1914. * @class kity.Browser
  1915. * @catalog core
  1916. * @static
  1917. * @description 提供浏览器信息
  1918. */
  1919. var browser = function () {
  1920. var agent = navigator.userAgent.toLowerCase(),
  1921. opera = window.opera,
  1922. browser;
  1923. // 浏览器对象
  1924. browser = {
  1925. /**
  1926. * @property platform
  1927. * @description 获取浏览器所在系统,"Win"->Windows;"Mac"->Mac;"Lux"->Linux
  1928. * @type {String}
  1929. */
  1930. platform: function (navigator) {
  1931. var _p = {
  1932. win32: "Win",
  1933. macintel: "Mac"
  1934. };
  1935. return _p[navigator.platform.toLowerCase()] || "Lux";
  1936. }(navigator),
  1937. /**
  1938. * 猎豹,区分两种不同内核
  1939. */
  1940. lb: function (agent) {
  1941. if (~agent.indexOf("lbbrowser")) {
  1942. return ~agent.indexOf("msie") ? "ie" : "chrome";
  1943. }
  1944. return false;
  1945. }(agent),
  1946. /**
  1947. * 搜狗
  1948. */
  1949. sg: /se[\s\S]+metasr/.test(agent),
  1950. /**
  1951. * 百度
  1952. */
  1953. bd: !!~agent.indexOf("bidubrowser"),
  1954. /**
  1955. * edge浏览器
  1956. */
  1957. edge: !!~agent.indexOf("edge"),
  1958. /**
  1959. * chrome初始化为false
  1960. * @type {Boolean}
  1961. */
  1962. chrome: false,
  1963. /**
  1964. * @property opera
  1965. * @for kity.Browser
  1966. * @description 判断是否为 Opera 浏览器
  1967. * @type {boolean}
  1968. */
  1969. opera: !!opera && opera.version,
  1970. /**
  1971. * @property webkit
  1972. * @for kity.Browser
  1973. * @description 判断是否为 Webkit 内核的浏览器
  1974. * @type {boolean}
  1975. */
  1976. webkit: agent.indexOf(" applewebkit/") > -1,
  1977. /**
  1978. * @property mac
  1979. * @for kity.Browser
  1980. * @description 判断是否为 Mac 下的浏览器
  1981. * @type {boolean}
  1982. */
  1983. mac: agent.indexOf("macintosh") > -1
  1984. };
  1985. /**
  1986. * @property ie
  1987. * @for kity.Browser
  1988. * @description 判断是否为 IE 浏览器
  1989. * @type {boolean}
  1990. */
  1991. browser.ie = !browser.lb && /(msie\s|trident.*rv:)([\w.]+)/.test(agent);
  1992. browser.gecko = navigator.product == "Gecko" && !browser.webkit && !browser.opera && !browser.ie;
  1993. var version = 0;
  1994. // Internet Explorer 6.0+
  1995. if (browser.ie) {
  1996. version = (agent.match(/(msie\s|trident.*rv:)([\w.]+)/)[2] || 0) * 1;
  1997. browser.ie11Compat = document.documentMode == 11;
  1998. browser.ie9Compat = document.documentMode == 9;
  1999. }
  2000. // Gecko.
  2001. if (browser.gecko) {
  2002. var geckoRelease = agent.match(/rv:([\d\.]+)/);
  2003. if (geckoRelease) {
  2004. geckoRelease = geckoRelease[1].split(".");
  2005. version = geckoRelease[0] * 1e4 + (geckoRelease[1] || 0) * 100 + (geckoRelease[2] || 0) * 1;
  2006. }
  2007. }
  2008. // 排除其他chrome内核的浏览器的干扰
  2009. if (/chrome\/(\d+\.\d)/i.test(agent) && !browser.bd && !browser.opera && !browser.lb && !browser.sg && !browser.edge) {
  2010. /**
  2011. * @property chrome
  2012. * @for kity.Browser
  2013. * @description 判断是否为 Chrome 浏览器
  2014. * @type {boolean}
  2015. */
  2016. browser.chrome = +RegExp["$1"];
  2017. }
  2018. if (/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(agent) && !/chrome/i.test(agent)) {
  2019. browser.safari = +(RegExp["$1"] || RegExp["$2"]);
  2020. }
  2021. // Opera 9.50+
  2022. if (browser.opera) version = parseFloat(opera.version());
  2023. // WebKit 522+ (Safari 3+)
  2024. if (browser.webkit) version = parseFloat(agent.match(/ applewebkit\/(\d+)/)[1]);
  2025. // 搜狗版本号无从得知
  2026. // 猎豹版本号无从得知
  2027. // 百度
  2028. if (browser.bd) version = parseFloat(agent.match(/bidubrowser\/(\d+)/)[1]);
  2029. // Opera 9.50+
  2030. if (browser.opera) version = parseFloat(agent.match(/opr\/(\d+)/)[1]);
  2031. // edge
  2032. if (browser.edge) version = parseFloat(agent.match(/edge\/(\d+)/)[1]);
  2033. /**
  2034. * @property version
  2035. * @for kity.Browser
  2036. * @description 获取当前浏览器的版本
  2037. * @type {Number}
  2038. */
  2039. browser.version = version;
  2040. browser.isCompatible = !browser.mobile && (browser.ie && version >= 6 || browser.gecko && version >= 10801 || browser.opera && version >= 9.5 || browser.air && version >= 1 || browser.webkit && version >= 522 || false);
  2041. return browser;
  2042. }();
  2043. return browser;
  2044. }
  2045. };
  2046. //src/core/class.js
  2047. /**
  2048. * @fileOverview
  2049. *
  2050. * 提供 Kity 的 OOP 支持
  2051. */
  2052. _p[11] = {
  2053. value: function value(require, exports) {
  2054. /**
  2055. * @class kity.Class
  2056. * @catalog core
  2057. * @description 所有 kity 类的基类
  2058. * @abstract
  2059. */
  2060. function Class() {}
  2061. exports.Class = Class;
  2062. Class.__KityClassName = "Class";
  2063. /**
  2064. * @method base()
  2065. * @for kity.Class
  2066. * @protected
  2067. * @grammar base(name, args...) => {any}
  2068. * @description 调用父类指定名称的函数
  2069. * @param {string} name 函数的名称
  2070. * @param {parameter} args... 传递给父类函数的参数
  2071. *
  2072. * @example
  2073. *
  2074. * ```js
  2075. * var Person = kity.createClass('Person', {
  2076. * toString: function() {
  2077. * return 'I am a person';
  2078. * }
  2079. * });
  2080. *
  2081. * var Male = kity.createClass('Male', {
  2082. * base: Person,
  2083. *
  2084. * toString: function() {
  2085. * return 'I am a man';
  2086. * },
  2087. *
  2088. * speak: function() {
  2089. * return this.base('toString') + ',' + this.toString();
  2090. * }
  2091. * })
  2092. * ```
  2093. */
  2094. Class.prototype.base = function (name) {
  2095. var caller = arguments.callee.caller;
  2096. var method = caller.__KityMethodClass.__KityBaseClass.prototype[name];
  2097. return method.apply(this, Array.prototype.slice.call(arguments, 1));
  2098. };
  2099. /**
  2100. * @method callBase()
  2101. * @for kity.Class
  2102. * @protected
  2103. * @grammar callBase(args...) => {any}
  2104. * @description 调用父类同名函数
  2105. * @param {parameter} args... 传递到父类同名函数的参数
  2106. *
  2107. * @example
  2108. *
  2109. * ```js
  2110. * var Animal = kity.createClass('Animal', {
  2111. * constructor: function(name) {
  2112. * this.name = name;
  2113. * },
  2114. * toString: function() {
  2115. * return 'I am an animal name ' + this.name;
  2116. * }
  2117. * });
  2118. *
  2119. * var Dog = kity.createClass('Dog', {
  2120. * constructor: function(name) {
  2121. * this.callBase(name);
  2122. * },
  2123. * toString: function() {
  2124. * return this.callBase() + ', a dog';
  2125. * }
  2126. * });
  2127. *
  2128. * var dog = new Dog('Dummy');
  2129. * console.log(dog.toString()); // "I am an animal name Dummy, a dog";
  2130. * ```
  2131. */
  2132. Class.prototype.callBase = function () {
  2133. var caller = arguments.callee.caller;
  2134. var method = caller.__KityMethodClass.__KityBaseClass.prototype[caller.__KityMethodName];
  2135. return method.apply(this, arguments);
  2136. };
  2137. Class.prototype.mixin = function (name) {
  2138. var caller = arguments.callee.caller;
  2139. var mixins = caller.__KityMethodClass.__KityMixins;
  2140. if (!mixins) {
  2141. return this;
  2142. }
  2143. var method = mixins[name];
  2144. return method.apply(this, Array.prototype.slice.call(arguments, 1));
  2145. };
  2146. Class.prototype.callMixin = function () {
  2147. var caller = arguments.callee.caller;
  2148. var methodName = caller.__KityMethodName;
  2149. var mixins = caller.__KityMethodClass.__KityMixins;
  2150. if (!mixins) {
  2151. return this;
  2152. }
  2153. var method = mixins[methodName];
  2154. if (methodName == "constructor") {
  2155. for (var i = 0, l = method.length; i < l; i++) {
  2156. method[i].call(this);
  2157. }
  2158. return this;
  2159. } else {
  2160. return method.apply(this, arguments);
  2161. }
  2162. };
  2163. /**
  2164. * @method pipe()
  2165. * @for kity.Class
  2166. * @grammar pipe() => {this}
  2167. * @description 以当前对象为上线文以及管道函数的第一个参数,执行一个管道函数
  2168. * @param {Function} fn 进行管道操作的函数
  2169. *
  2170. * @example
  2171. *
  2172. * ```js
  2173. * var rect = new kity.Rect().pipe(function() {
  2174. * this.setWidth(500);
  2175. * this.setHeight(300);
  2176. * });
  2177. * ```
  2178. */
  2179. Class.prototype.pipe = function (fn) {
  2180. if (typeof fn == "function") {
  2181. fn.call(this, this);
  2182. }
  2183. return this;
  2184. };
  2185. /**
  2186. * @method getType()
  2187. * @for kity.Class
  2188. * @grammar getType() => {string}
  2189. * @description 获得对象的类型
  2190. *
  2191. * @example
  2192. *
  2193. * ```js
  2194. * var rect = new kity.Rect();
  2195. * var circle = new kity.Circle();
  2196. *
  2197. * console.log(rect.getType()); // "Rect"
  2198. * console.log(rect.getType()); // "Circle"
  2199. * ```
  2200. */
  2201. Class.prototype.getType = function () {
  2202. return this.__KityClassName;
  2203. };
  2204. /**
  2205. * @method getClass()
  2206. * @for kity.Class
  2207. * @grammar getClass() => {Class}
  2208. * @description 获得对象的类
  2209. *
  2210. * @example
  2211. *
  2212. * ```js
  2213. * var rect = new kity.Rect();
  2214. *
  2215. * console.log(rect.getClass() === kity.Rect); // true
  2216. * console.log(rect instanceof kity.Rect); // true
  2217. * ```
  2218. */
  2219. Class.prototype.getClass = function () {
  2220. return this.constructor;
  2221. };
  2222. // 检查基类是否调用了父类的构造函数
  2223. // 该检查是弱检查,假如调用的代码被注释了,同样能检查成功(这个特性可用于知道建议调用,但是出于某些原因不想调用的情况)
  2224. function checkBaseConstructorCall(targetClass, classname) {
  2225. var code = targetClass.toString();
  2226. if (!/this\.callBase/.test(code)) {
  2227. throw new Error(classname + " : 类构造函数没有调用父类的构造函数!为了安全,请调用父类的构造函数");
  2228. }
  2229. }
  2230. var KITY_INHERIT_FLAG = "__KITY_INHERIT_FLAG_" + +new Date();
  2231. function inherit(constructor, BaseClass, classname) {
  2232. var KityClass = eval("(function " + classname + "( __inherit__flag ) {" + "if( __inherit__flag != KITY_INHERIT_FLAG ) {" + "KityClass.__KityConstructor.apply(this, arguments);" + "}" + "this.__KityClassName = KityClass.__KityClassName;" + "})");
  2233. KityClass.__KityConstructor = constructor;
  2234. KityClass.prototype = new BaseClass(KITY_INHERIT_FLAG);
  2235. for (var methodName in BaseClass.prototype) {
  2236. if (BaseClass.prototype.hasOwnProperty(methodName) && methodName.indexOf("__Kity") !== 0) {
  2237. KityClass.prototype[methodName] = BaseClass.prototype[methodName];
  2238. }
  2239. }
  2240. KityClass.prototype.constructor = KityClass;
  2241. return KityClass;
  2242. }
  2243. function mixin(NewClass, mixins) {
  2244. if (false === mixins instanceof Array) {
  2245. return NewClass;
  2246. }
  2247. var i,
  2248. length = mixins.length,
  2249. proto,
  2250. method;
  2251. NewClass.__KityMixins = {
  2252. constructor: []
  2253. };
  2254. for (i = 0; i < length; i++) {
  2255. proto = mixins[i].prototype;
  2256. for (method in proto) {
  2257. if (false === proto.hasOwnProperty(method) || method.indexOf("__Kity") === 0) {
  2258. continue;
  2259. }
  2260. if (method === "constructor") {
  2261. // constructor 特殊处理
  2262. NewClass.__KityMixins.constructor.push(proto[method]);
  2263. } else {
  2264. NewClass.prototype[method] = NewClass.__KityMixins[method] = proto[method];
  2265. }
  2266. }
  2267. }
  2268. return NewClass;
  2269. }
  2270. function extend(BaseClass, extension) {
  2271. if (extension.__KityClassName) {
  2272. extension = extension.prototype;
  2273. }
  2274. for (var methodName in extension) {
  2275. if (extension.hasOwnProperty(methodName) && methodName.indexOf("__Kity") && methodName != "constructor") {
  2276. var method = BaseClass.prototype[methodName] = extension[methodName];
  2277. method.__KityMethodClass = BaseClass;
  2278. method.__KityMethodName = methodName;
  2279. }
  2280. }
  2281. return BaseClass;
  2282. }
  2283. /**
  2284. * @method kity.createClass()
  2285. * @grammar kity.createClass(classname, defines) => {Class}
  2286. * @description 创建一个类
  2287. * @param {string} classname 类名,用于调试的时候查看,可选
  2288. * @param {object} defines 类定义
  2289. * defines.base {Class}
  2290. * 定义的类的基类,如果不配置,则表示基类为 kity.Class
  2291. * defines.mixins {Class[]}
  2292. * 定义的类要融合的类列表
  2293. * defines.constructor {Function}
  2294. * 定义类的构造函数,如果父类显式定义了构造函数,需要在构造函数中使用 callBase() 方法调用父类的构造函数
  2295. * defines.* {Function}
  2296. * 定义类的其它函数
  2297. *
  2298. * @example 创建一个类
  2299. *
  2300. * ```js
  2301. * var Animal = kity.createClass('Animal', {
  2302. * constructor: function(name) {
  2303. * this.name = name;
  2304. * },
  2305. * toString: function() {
  2306. * return this.name;
  2307. * }
  2308. * });
  2309. *
  2310. * var a = new Animal('kity');
  2311. * console.log(a.toString()); // "kity"
  2312. * ```
  2313. *
  2314. * @example 继承一个类
  2315. *
  2316. * ```js
  2317. * var Cat = kity.createClass('Cat', {
  2318. * base: Animal,
  2319. * constructor: function(name, color) {
  2320. * // 调用父类构造函数
  2321. * this.callBase(name);
  2322. * },
  2323. * toString: function() {
  2324. * return 'A ' + this.color + ' cat, ' + this.callBase();
  2325. * }
  2326. * });
  2327. *
  2328. * var cat = new Cat('kity', 'black');
  2329. * console.log(cat.toString()); // "A black cat, kity"
  2330. * ```
  2331. *
  2332. * @example 混合类的能力
  2333. * ```js
  2334. * var Walkable = kity.createClass('Walkable', {
  2335. * constructor: function() {
  2336. * this.speed = 'fast';
  2337. * },
  2338. * walk: function() {
  2339. * console.log('I am walking ' + this.speed);
  2340. * }
  2341. * });
  2342. *
  2343. * var Dog = kity.createClass('Dog', {
  2344. * base: Animal,
  2345. * mixins: [Walkable],
  2346. * constructor: function(name) {
  2347. * this.callBase(name);
  2348. * this.callMixins();
  2349. * }
  2350. * });
  2351. *
  2352. * var dog = new Dog('doggy');
  2353. * console.log(dog.toString() + ' say:');
  2354. * dog.walk();
  2355. * ```
  2356. */
  2357. exports.createClass = function (classname, defines) {
  2358. var constructor, NewClass, BaseClass;
  2359. if (arguments.length === 1) {
  2360. defines = arguments[0];
  2361. classname = "AnonymousClass";
  2362. }
  2363. BaseClass = defines.base || Class;
  2364. if (defines.hasOwnProperty("constructor")) {
  2365. constructor = defines.constructor;
  2366. if (BaseClass != Class) {
  2367. checkBaseConstructorCall(constructor, classname);
  2368. }
  2369. } else {
  2370. constructor = function constructor() {
  2371. this.callBase.apply(this, arguments);
  2372. this.callMixin.apply(this, arguments);
  2373. };
  2374. }
  2375. NewClass = inherit(constructor, BaseClass, classname);
  2376. NewClass = mixin(NewClass, defines.mixins);
  2377. NewClass.__KityClassName = constructor.__KityClassName = classname;
  2378. NewClass.__KityBaseClass = constructor.__KityBaseClass = BaseClass;
  2379. NewClass.__KityMethodName = constructor.__KityMethodName = "constructor";
  2380. NewClass.__KityMethodClass = constructor.__KityMethodClass = NewClass;
  2381. // 下面这些不需要拷贝到原型链上
  2382. delete defines.mixins;
  2383. delete defines.constructor;
  2384. delete defines.base;
  2385. NewClass = extend(NewClass, defines);
  2386. return NewClass;
  2387. };
  2388. /**
  2389. * @method kity.extendClass()
  2390. * @grammar kity.extendClass(clazz, extension) => {Class}
  2391. * @description 拓展一个已有的类
  2392. *
  2393. * @example
  2394. *
  2395. * ```js
  2396. * kity.extendClass(Dog, {
  2397. * spark: function() {
  2398. * console.log('wao wao wao!');
  2399. * }
  2400. * });
  2401. *
  2402. * new Dog().spark(); // "wao wao wao!";
  2403. * ```
  2404. */
  2405. exports.extendClass = extend;
  2406. }
  2407. };
  2408. //src/core/utils.js
  2409. /**
  2410. * @fileOverview
  2411. *
  2412. * 一些常用的工具方法
  2413. */
  2414. _p[12] = {
  2415. value: function value() {
  2416. /**
  2417. * @class kity.Utils
  2418. * @catalog core
  2419. * @static
  2420. * @description 提供常用的工具方法
  2421. */
  2422. var utils = {
  2423. /**
  2424. * @method each()
  2425. * @for kity.Utils
  2426. * @grammar each(obj, interator, context)
  2427. * @param {Object|Array} obj 要迭代的对象或数组
  2428. * @param {Function} iterator 迭代函数
  2429. * @param {Any} context 迭代函数的上下文
  2430. *
  2431. * @example 迭代数组
  2432. *
  2433. * ```js
  2434. * kity.Utils.each([1, 2, 3, 4, 5], function(value, index, array) {
  2435. * console.log(value, index);
  2436. * });
  2437. * // 1, 0
  2438. * // 2, 1
  2439. * // 3, 2
  2440. * // 4, 3
  2441. * // 5, 4
  2442. * ```
  2443. *
  2444. * @example 迭代对象
  2445. *
  2446. * ```js
  2447. * var obj = {
  2448. * name: 'kity',
  2449. * version: '1.2.1'
  2450. * };
  2451. * var param = [];
  2452. * kity.Utils.each(obj, function(value, key, obj) {
  2453. * param.push(key + '=' + value);
  2454. * });
  2455. * console.log(param.join('&')); // "name=kity&version=1.2.1"
  2456. * ```
  2457. */
  2458. each: function each(obj, iterator, context) {
  2459. if (obj === null) {
  2460. return;
  2461. }
  2462. if (obj.length === +obj.length) {
  2463. for (var i = 0, l = obj.length; i < l; i++) {
  2464. if (iterator.call(context, obj[i], i, obj) === false) {
  2465. return false;
  2466. }
  2467. }
  2468. } else {
  2469. for (var key in obj) {
  2470. if (obj.hasOwnProperty(key)) {
  2471. if (iterator.call(context, obj[key], key, obj) === false) {
  2472. return false;
  2473. }
  2474. }
  2475. }
  2476. }
  2477. },
  2478. /**
  2479. * @method extend()
  2480. * @for kity.Utils
  2481. * @grammar extend(target, sources..., notCover) => {object}
  2482. * @description 把源对象的属性合并到目标对象上
  2483. * @param {object} target 目标对象
  2484. * @param {parameter} sources 源对象
  2485. * @param {boolean} notCover 是否不要覆盖源对象已有的属性
  2486. *
  2487. * @example
  2488. *
  2489. * ```js
  2490. * var a = {
  2491. * key1: 'a1',
  2492. * key2: 'a2'
  2493. * };
  2494. *
  2495. * var b = {
  2496. * key2: 'b2',
  2497. * key3: 'b3'
  2498. * };
  2499. *
  2500. * var c = {
  2501. * key4: 'c4'
  2502. * };
  2503. *
  2504. * var d = kity.extend(a, b, c);
  2505. *
  2506. * console.log(d === a); // true
  2507. * console.log(a); // {key1: 'a1', key2: 'b2', key3: 'b3', key4: 'c4'}
  2508. * ```
  2509. */
  2510. extend: function extend(t) {
  2511. var a = arguments,
  2512. notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false,
  2513. len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length;
  2514. for (var i = 1; i < len; i++) {
  2515. var x = a[i];
  2516. for (var k in x) {
  2517. if (!notCover || !t.hasOwnProperty(k)) {
  2518. t[k] = x[k];
  2519. }
  2520. }
  2521. }
  2522. return t;
  2523. },
  2524. /**
  2525. * @method deepExtend()
  2526. * @for kity.Utils
  2527. * @grammar deepExtend(target, sources..., notCover)
  2528. * @description 把源对象的属性合并到目标对象上,如果属性是对象,会递归合并
  2529. * @param {object} target 目标对象
  2530. * @param {parameter} sources 源对象
  2531. * @param {boolean} notCover 是否不要覆盖源对象已有的属性
  2532. */
  2533. deepExtend: function deepExtend(t, s) {
  2534. var a = arguments,
  2535. notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false,
  2536. len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length;
  2537. for (var i = 1; i < len; i++) {
  2538. var x = a[i];
  2539. for (var k in x) {
  2540. if (!notCover || !t.hasOwnProperty(k)) {
  2541. if (this.isObject(t[k]) && this.isObject(x[k])) {
  2542. this.deepExtend(t[k], x[k], notCover);
  2543. } else {
  2544. t[k] = x[k];
  2545. }
  2546. }
  2547. }
  2548. }
  2549. return t;
  2550. },
  2551. /**
  2552. * @method clone()
  2553. * @for kity.Utils
  2554. * @grammar clone(obj) => {object}
  2555. * @description 返回一个对象的克隆副本(非深度复制)
  2556. * @param {object} obj 要克隆的对象
  2557. *
  2558. * @example
  2559. *
  2560. * ```js
  2561. * var source = {
  2562. * key1: {
  2563. * key2: 'value2'
  2564. * },
  2565. * key3: 'value3'
  2566. * };
  2567. *
  2568. * var target = kity.Utils.clone(source);
  2569. *
  2570. * console.log(target === source); // false
  2571. * console.log(target.key1 === source.key1); // true
  2572. * console.log(target.key3 === source.key3); // true
  2573. * ```
  2574. */
  2575. clone: function clone(obj) {
  2576. var cloned = {};
  2577. for (var m in obj) {
  2578. if (obj.hasOwnProperty(m)) {
  2579. cloned[m] = obj[m];
  2580. }
  2581. }
  2582. return cloned;
  2583. },
  2584. /**
  2585. * @method copy()
  2586. * @for kity.Utils
  2587. * @grammar copy(obj) => {object}
  2588. * @description 返回一个对象的拷贝副本(深度复制)
  2589. * @param {object} obj 要拷贝的对象
  2590. *
  2591. * @example
  2592. *
  2593. * ```js
  2594. * var source = {
  2595. * key1: {
  2596. * key2: 'value2'
  2597. * },
  2598. * key3: 'value3'
  2599. * };
  2600. *
  2601. * var target = kity.Utils.copy(source);
  2602. *
  2603. * console.log(target === source); // false
  2604. * console.log(target.key1 === source.key1); // false
  2605. * console.log(target.key3 === source.key3); // true,因为是值类型
  2606. * ```
  2607. */
  2608. copy: function copy(obj) {
  2609. if ((typeof obj === "undefined" ? "undefined" : _typeof(obj)) !== "object") return obj;
  2610. if (typeof obj === "function") return null;
  2611. return JSON.parse(JSON.stringify(obj));
  2612. },
  2613. queryPath: function queryPath(path, obj) {
  2614. var arr = path.split(".");
  2615. var i = 0,
  2616. tmp = obj,
  2617. l = arr.length;
  2618. while (i < l) {
  2619. if (arr[i] in tmp) {
  2620. tmp = tmp[arr[i]];
  2621. i++;
  2622. if (i >= l || tmp === undefined) {
  2623. return tmp;
  2624. }
  2625. } else {
  2626. return undefined;
  2627. }
  2628. }
  2629. },
  2630. getValue: function getValue(value, defaultValue) {
  2631. return value !== undefined ? value : defaultValue;
  2632. },
  2633. /**
  2634. * @method flatten()
  2635. * @for kity.Utils
  2636. * @grammar flatten(arr) => {Array}
  2637. * @description 返回给定数组的扁平化版本
  2638. * @param {Array} arr 要扁平化的数组
  2639. *
  2640. * @example
  2641. *
  2642. * ```js
  2643. * var flattened = kity.Utils.flatten([[1, 2], [2, 3], [[4, 5], [6, 7]]]);
  2644. * console.log(flattened); // [1, 2, 3, 4, 5, 6, 7];
  2645. * ```
  2646. */
  2647. flatten: function flatten(arr) {
  2648. var result = [],
  2649. length = arr.length,
  2650. i;
  2651. for (i = 0; i < length; i++) {
  2652. if (arr[i] instanceof Array) {
  2653. result = result.concat(utils.flatten(arr[i]));
  2654. } else {
  2655. result.push(arr[i]);
  2656. }
  2657. }
  2658. return result;
  2659. },
  2660. /**
  2661. * @method paralle()
  2662. * @for kity.Utils
  2663. * @grammar paralle() => {Any}
  2664. *
  2665. * @description 平行地对 v1 和 v2 进行指定的操作
  2666. *
  2667. * 如果 v1 是数字,那么直接进行 op 操作
  2668. * 如果 v1 是对象,那么返回一个对象,其元素是 v1 和 v2 同键值的每个元素平行地进行 op 操作的结果
  2669. * 如果 v1 是数组,那么返回一个数组,其元素是 v1 和 v2 同索引的每个元素平行地进行 op 操作的结果
  2670. *
  2671. * @param {Number|Object|Array} v1 第一个操作数
  2672. * @param {Number|Object|Array} v2 第二个操作数
  2673. * @param {Function} op 操作函数
  2674. *
  2675. *
  2676. *
  2677. * @example
  2678. *
  2679. * ```js
  2680. * var a = {
  2681. * value1: 1,
  2682. * value2: 2,
  2683. * value3: [3, 4, 5]
  2684. * };
  2685. *
  2686. * var b = {
  2687. * value1: 2,
  2688. * value2: 3,
  2689. * value3: [4, 5, 6]
  2690. * };
  2691. *
  2692. * var c = kity.Utils.paralle(a, b, function(v1, v2) {
  2693. * return v1 + v2;
  2694. * });
  2695. *
  2696. * console.log(c.value1); // 3
  2697. * console.log(c.value2); // 5
  2698. * console.log(c.value3); // [7, 9, 11]
  2699. *
  2700. * ```
  2701. */
  2702. paralle: function paralle(v1, v2, op) {
  2703. var Class, field, index, name, value;
  2704. // 数组
  2705. if (v1 instanceof Array) {
  2706. value = [];
  2707. for (index = 0; index < v1.length; index++) {
  2708. value.push(utils.paralle(v1[index], v2[index], op));
  2709. }
  2710. return value;
  2711. }
  2712. // 对象
  2713. if (v1 instanceof Object) {
  2714. // 如果值是一个支持原始表示的实例,获取其原始表示
  2715. Class = v1.getClass && v1.getClass();
  2716. if (Class && Class.parse) {
  2717. v1 = v1.valueOf();
  2718. v2 = v2.valueOf();
  2719. value = utils.paralle(v1, v2, op);
  2720. value = Class.parse(value);
  2721. } else {
  2722. value = {};
  2723. for (name in v1) {
  2724. if (v1.hasOwnProperty(name) && v2.hasOwnProperty(name)) {
  2725. value[name] = utils.paralle(v1[name], v2[name], op);
  2726. }
  2727. }
  2728. }
  2729. return value;
  2730. }
  2731. // 是否数字
  2732. if (false === isNaN(parseFloat(v1))) {
  2733. return op(v1, v2);
  2734. }
  2735. return value;
  2736. },
  2737. /**
  2738. * 创建 op 操作的一个平行化版本
  2739. */
  2740. parallelize: function parallelize(op) {
  2741. return function (v1, v2) {
  2742. return utils.paralle(v1, v2, op);
  2743. };
  2744. }
  2745. };
  2746. /**
  2747. * @method isString()
  2748. * @for kity.Utils
  2749. * @grammar isString(unknown) => {boolean}
  2750. * @description 判断一个值是否为字符串类型
  2751. * @param {any} unknown 要判断的值
  2752. */
  2753. /**
  2754. * @method isFunction()
  2755. * @for kity.Utils
  2756. * @grammar isFunction(unknown) => {boolean}
  2757. * @description 判断一个值是否为函数类型
  2758. * @param {any} unknown 要判断的值
  2759. */
  2760. /**
  2761. * @method isArray()
  2762. * @for kity.Utils
  2763. * @grammar isArray(unknown) => {boolean}
  2764. * @description 判断一个值是否为数组类型
  2765. * @param {any} unknown 要判断的值
  2766. */
  2767. /**
  2768. * @method isNumber()
  2769. * @for kity.Utils
  2770. * @grammar isNumber(unknown) => {boolean}
  2771. * @description 判断一个值是否为数字类型
  2772. * @param {any} unknown 要判断的值
  2773. */
  2774. /**
  2775. * @method isRegExp()
  2776. * @for kity.Utils
  2777. * @grammar isRegExp(unknown) => {boolean}
  2778. * @description 判断一个值是否为正则表达式类型
  2779. * @param {any} unknown 要判断的值
  2780. */
  2781. /**
  2782. * @method isObject()
  2783. * @for kity.Utils
  2784. * @grammar isObject(unknown) => {boolean}
  2785. * @description 判断一个值是否为对象类型
  2786. * @param {any} unknown 要判断的值
  2787. */
  2788. /**
  2789. * @method isBoolean()
  2790. * @for kity.Utils
  2791. * @grammar isBoolean(unknown) => {boolean}
  2792. * @description 判断一个值是否为布尔类型
  2793. * @param {any} unknown 要判断的值
  2794. */
  2795. utils.each(["String", "Function", "Array", "Number", "RegExp", "Object", "Boolean"], function (v) {
  2796. utils["is" + v] = function typeCheck(obj) {
  2797. return Object.prototype.toString.apply(obj) == "[object " + v + "]";
  2798. };
  2799. });
  2800. return utils;
  2801. }
  2802. };
  2803. //src/expose-kity.js
  2804. _p[13] = {
  2805. value: function value(require, exports, module) {
  2806. module.exports = window.kity = _p.r(77);
  2807. }
  2808. };
  2809. //src/filter/effect/colormatrixeffect.js
  2810. /**
  2811. * 颜色矩阵运算效果封装
  2812. */
  2813. _p[14] = {
  2814. value: function value(require, exports, module) {
  2815. var Effect = _p.r(17),
  2816. Utils = _p.r(12);
  2817. var ColorMatrixEffect = _p.r(11).createClass("ColorMatrixEffect", {
  2818. base: Effect,
  2819. constructor: function constructor(type, input) {
  2820. this.callBase(Effect.NAME_COLOR_MATRIX);
  2821. this.set("type", Utils.getValue(type, ColorMatrixEffect.TYPE_MATRIX));
  2822. this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC));
  2823. }
  2824. });
  2825. Utils.extend(ColorMatrixEffect, {
  2826. // 类型常量
  2827. TYPE_MATRIX: "matrix",
  2828. TYPE_SATURATE: "saturate",
  2829. TYPE_HUE_ROTATE: "hueRotate",
  2830. TYPE_LUMINANCE_TO_ALPHA: "luminanceToAlpha",
  2831. // 矩阵常量
  2832. MATRIX_ORIGINAL: "10000010000010000010".split("").join(" "),
  2833. MATRIX_EMPTY: "00000000000000000000".split("").join(" ")
  2834. });
  2835. return ColorMatrixEffect;
  2836. }
  2837. };
  2838. //src/filter/effect/compositeeffect.js
  2839. /**
  2840. * 高斯模糊效果封装
  2841. */
  2842. _p[15] = {
  2843. value: function value(require, exports, module) {
  2844. var Effect = _p.r(17),
  2845. Utils = _p.r(12);
  2846. var CompositeEffect = _p.r(11).createClass("CompositeEffect", {
  2847. base: Effect,
  2848. constructor: function constructor(operator, input, input2) {
  2849. this.callBase(Effect.NAME_COMPOSITE);
  2850. this.set("operator", Utils.getValue(operator, CompositeEffect.OPERATOR_OVER));
  2851. if (input) {
  2852. this.set("in", input);
  2853. }
  2854. if (input2) {
  2855. this.set("in2", input2);
  2856. }
  2857. }
  2858. });
  2859. Utils.extend(CompositeEffect, {
  2860. // operator 常量
  2861. OPERATOR_OVER: "over",
  2862. OPERATOR_IN: "in",
  2863. OPERATOR_OUT: "out",
  2864. OPERATOR_ATOP: "atop",
  2865. OPERATOR_XOR: "xor",
  2866. OPERATOR_ARITHMETIC: "arithmetic"
  2867. });
  2868. return CompositeEffect;
  2869. }
  2870. };
  2871. //src/filter/effect/convolvematrixeffect.js
  2872. /**
  2873. * 像素级别的矩阵卷积运算效果封装
  2874. */
  2875. _p[16] = {
  2876. value: function value(require, exports, module) {
  2877. var Effect = _p.r(17),
  2878. Utils = _p.r(12);
  2879. var ConvolveMatrixEffect = _p.r(11).createClass("ConvolveMatrixEffect", {
  2880. base: Effect,
  2881. constructor: function constructor(edgeMode, input) {
  2882. this.callBase(Effect.NAME_CONVOLVE_MATRIX);
  2883. this.set("edgeMode", Utils.getValue(edgeMode, ConvolveMatrixEffect.MODE_DUPLICATE));
  2884. this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC));
  2885. }
  2886. });
  2887. Utils.extend(ConvolveMatrixEffect, {
  2888. MODE_DUPLICATE: "duplicate",
  2889. MODE_WRAP: "wrap",
  2890. MODE_NONE: "none"
  2891. });
  2892. return ConvolveMatrixEffect;
  2893. }
  2894. };
  2895. //src/filter/effect/effect.js
  2896. /*
  2897. * 效果类
  2898. * 该类型的对象不存储任何内部属性, 所有操作都是针对该类对象所维护的节点进行的
  2899. */
  2900. _p[17] = {
  2901. value: function value(require, exports, module) {
  2902. var svg = _p.r(68),
  2903. Effect = _p.r(11).createClass("Effect", {
  2904. constructor: function constructor(type) {
  2905. this.node = svg.createNode(type);
  2906. },
  2907. getId: function getId() {
  2908. return this.node.id;
  2909. },
  2910. setId: function setId(id) {
  2911. this.node.id = id;
  2912. return this;
  2913. },
  2914. set: function set(key, value) {
  2915. this.node.setAttribute(key, value);
  2916. return this;
  2917. },
  2918. get: function get(key) {
  2919. return this.node.getAttribute(key);
  2920. },
  2921. getNode: function getNode() {
  2922. return this.node;
  2923. },
  2924. // 返回该效果的result
  2925. toString: function toString() {
  2926. return this.node.getAttribute("result") || "";
  2927. }
  2928. });
  2929. _p.r(12).extend(Effect, {
  2930. // 特效名称常量
  2931. NAME_GAUSSIAN_BLUR: "feGaussianBlur",
  2932. NAME_OFFSET: "feOffset",
  2933. NAME_COMPOSITE: "feComposite",
  2934. NAME_COLOR_MATRIX: "feColorMatrix",
  2935. NAME_CONVOLVE_MATRIX: "feConvolveMatrix",
  2936. // 输入常量
  2937. INPUT_SOURCE_GRAPHIC: "SourceGraphic",
  2938. INPUT_SOURCE_ALPHA: "SourceAlpha",
  2939. INPUT_BACKGROUND_IMAGE: "BackgroundImage",
  2940. INPUT_BACKGROUND_ALPHA: "BackgroundAlpha",
  2941. INPUT_FILL_PAINT: "FillPaint",
  2942. INPUT_STROKE_PAINT: "StrokePaint"
  2943. });
  2944. return Effect;
  2945. }
  2946. };
  2947. //src/filter/effect/gaussianblureffect.js
  2948. /**
  2949. * 高斯模糊效果封装
  2950. */
  2951. _p[18] = {
  2952. value: function value(require, exports, module) {
  2953. var Effect = _p.r(17),
  2954. Utils = _p.r(12);
  2955. return _p.r(11).createClass("GaussianblurEffect", {
  2956. base: Effect,
  2957. constructor: function constructor(stdDeviation, input) {
  2958. this.callBase(Effect.NAME_GAUSSIAN_BLUR);
  2959. this.set("stdDeviation", Utils.getValue(stdDeviation, 1));
  2960. this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC));
  2961. }
  2962. });
  2963. }
  2964. };
  2965. //src/filter/effect/offseteffect.js
  2966. /**
  2967. * 偏移效果封装
  2968. */
  2969. _p[19] = {
  2970. value: function value(require, exports, module) {
  2971. var Effect = _p.r(17),
  2972. Utils = _p.r(12);
  2973. return _p.r(11).createClass("OffsetEffect", {
  2974. base: Effect,
  2975. constructor: function constructor(dx, dy, input) {
  2976. this.callBase(Effect.NAME_OFFSET);
  2977. this.set("dx", Utils.getValue(dx, 0));
  2978. this.set("dy", Utils.getValue(dy, 0));
  2979. this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC));
  2980. }
  2981. });
  2982. }
  2983. };
  2984. //src/filter/effectcontainer.js
  2985. /*
  2986. * Effect所用的container
  2987. */
  2988. _p[20] = {
  2989. value: function value(require) {
  2990. return _p.r(11).createClass("EffectContainer", {
  2991. base: _p.r(30),
  2992. addEffect: function addEffect(point, pos) {
  2993. return this.addItem.apply(this, arguments);
  2994. },
  2995. prependEffect: function prependEffect() {
  2996. return this.prependItem.apply(this, arguments);
  2997. },
  2998. appendEffect: function appendEffect() {
  2999. return this.appendItem.apply(this, arguments);
  3000. },
  3001. removeEffect: function removeEffect(pos) {
  3002. return this.removeItem.apply(this, arguments);
  3003. },
  3004. addEffects: function addEffects() {
  3005. return this.addItems.apply(this, arguments);
  3006. },
  3007. setEffects: function setEffects() {
  3008. return this.setItems.apply(this, arguments);
  3009. },
  3010. getEffect: function getEffect() {
  3011. return this.getItem.apply(this, arguments);
  3012. },
  3013. getEffects: function getEffects() {
  3014. return this.getItems.apply(this, arguments);
  3015. },
  3016. getFirstEffect: function getFirstEffect() {
  3017. return this.getFirstItem.apply(this, arguments);
  3018. },
  3019. getLastEffect: function getLastEffect() {
  3020. return this.getLastItem.apply(this, arguments);
  3021. },
  3022. handleAdd: function handleAdd(effectItem, pos) {
  3023. var count = this.getEffects().length,
  3024. nextEffectItem = this.getItem(pos + 1);
  3025. // 最后一个节点, 直接追加
  3026. if (count === pos + 1) {
  3027. this.node.appendChild(effectItem.getNode());
  3028. return;
  3029. }
  3030. this.node.insertBefore(effectItem.getNode(), nextEffectItem.getNode());
  3031. }
  3032. });
  3033. }
  3034. };
  3035. //src/filter/filter.js
  3036. /**
  3037. * Filter 基类
  3038. */
  3039. _p[21] = {
  3040. value: function value(require, exports, module) {
  3041. var svg = _p.r(68);
  3042. var Class = _p.r(11);
  3043. var Filter = Class.createClass("Filter", {
  3044. mixins: [_p.r(20)],
  3045. constructor: function constructor(x, y, width, height) {
  3046. this.node = svg.createNode("filter");
  3047. if (x !== undefined) {
  3048. this.set("x", x);
  3049. }
  3050. if (y !== undefined) {
  3051. this.set("y", y);
  3052. }
  3053. if (width !== undefined) {
  3054. this.set("width", width);
  3055. }
  3056. if (height !== undefined) {
  3057. this.set("height", height);
  3058. }
  3059. },
  3060. getId: function getId() {
  3061. return this.id;
  3062. },
  3063. setId: function setId(id) {
  3064. this.node.id = id;
  3065. return this;
  3066. },
  3067. set: function set(key, value) {
  3068. this.node.setAttribute(key, value);
  3069. return this;
  3070. },
  3071. get: function get(key) {
  3072. return this.node.getAttribute(key);
  3073. },
  3074. getNode: function getNode() {
  3075. return this.node;
  3076. }
  3077. });
  3078. var Shape = _p.r(61);
  3079. Class.extendClass(Shape, {
  3080. applyFilter: function applyFilter(filter) {
  3081. var filterId = filter.get("id");
  3082. if (filterId) {
  3083. this.node.setAttribute("filter", "url(#" + filterId + ")");
  3084. }
  3085. return this;
  3086. }
  3087. });
  3088. return Filter;
  3089. }
  3090. };
  3091. //src/filter/gaussianblurfilter.js
  3092. /*
  3093. * 高斯模糊滤镜
  3094. */
  3095. _p[22] = {
  3096. value: function value(require, exports, module) {
  3097. var GaussianblurEffect = _p.r(18);
  3098. return _p.r(11).createClass("GaussianblurFilter", {
  3099. base: _p.r(21),
  3100. constructor: function constructor(stdDeviation) {
  3101. this.callBase();
  3102. this.addEffect(new GaussianblurEffect(stdDeviation));
  3103. }
  3104. });
  3105. }
  3106. };
  3107. //src/filter/projectionfilter.js
  3108. /*
  3109. * 投影滤镜
  3110. */
  3111. _p[23] = {
  3112. value: function value(require, exports, module) {
  3113. var GaussianblurEffect = _p.r(18),
  3114. Effect = _p.r(17),
  3115. ColorMatrixEffect = _p.r(14),
  3116. Color = _p.r(29),
  3117. Utils = _p.r(12),
  3118. CompositeEffect = _p.r(15),
  3119. OffsetEffect = _p.r(19);
  3120. return _p.r(11).createClass("ProjectionFilter", {
  3121. base: _p.r(21),
  3122. constructor: function constructor(stdDeviation, dx, dy) {
  3123. this.callBase();
  3124. this.gaussianblurEffect = new GaussianblurEffect(stdDeviation, Effect.INPUT_SOURCE_ALPHA);
  3125. this.gaussianblurEffect.set("result", "gaussianblur");
  3126. this.addEffect(this.gaussianblurEffect);
  3127. this.offsetEffect = new OffsetEffect(dx, dy, this.gaussianblurEffect);
  3128. this.offsetEffect.set("result", "offsetBlur");
  3129. this.addEffect(this.offsetEffect);
  3130. this.colorMatrixEffect = new ColorMatrixEffect(ColorMatrixEffect.TYPE_MATRIX, this.offsetEffect);
  3131. this.colorMatrixEffect.set("values", ColorMatrixEffect.MATRIX_ORIGINAL);
  3132. this.colorMatrixEffect.set("result", "colorOffsetBlur");
  3133. this.addEffect(this.colorMatrixEffect);
  3134. this.compositeEffect = new CompositeEffect(CompositeEffect.OPERATOR_OVER, Effect.INPUT_SOURCE_GRAPHIC, this.colorMatrixEffect);
  3135. this.addEffect(this.compositeEffect);
  3136. },
  3137. // 设置投影颜色
  3138. setColor: function setColor(color) {
  3139. var matrix = null,
  3140. originMatrix = null,
  3141. colorValue = [];
  3142. if (Utils.isString(color)) {
  3143. color = Color.parse(color);
  3144. }
  3145. if (!color) {
  3146. return this;
  3147. }
  3148. matrix = ColorMatrixEffect.MATRIX_EMPTY.split(" ");
  3149. colorValue.push(color.get("r"));
  3150. colorValue.push(color.get("g"));
  3151. colorValue.push(color.get("b"));
  3152. // rgb 分量更改
  3153. for (var i = 0, len = colorValue.length; i < len; i++) {
  3154. matrix[i * 5 + 3] = colorValue[i] / 255;
  3155. }
  3156. // alpha 分量更改
  3157. matrix[18] = color.get("a");
  3158. this.colorMatrixEffect.set("values", matrix.join(" "));
  3159. return this;
  3160. },
  3161. // 设置投影透明度
  3162. setOpacity: function setOpacity(opacity) {
  3163. var matrix = this.colorMatrixEffect.get("values").split(" ");
  3164. matrix[18] = opacity;
  3165. this.colorMatrixEffect.set("values", matrix.join(" "));
  3166. return this;
  3167. },
  3168. // 设置阴影偏移量
  3169. setOffset: function setOffset(dx, dy) {
  3170. this.setOffsetX(dx);
  3171. this.setOffsetY(dy);
  3172. },
  3173. setOffsetX: function setOffsetX(dx) {
  3174. this.offsetEffect.set("dx", dx);
  3175. },
  3176. setOffsetY: function setOffsetY(dy) {
  3177. this.offsetEffect.set("dy", dy);
  3178. },
  3179. setDeviation: function setDeviation(deviation) {
  3180. this.gaussianblurEffect.set("stdDeviation", deviation);
  3181. }
  3182. });
  3183. }
  3184. };
  3185. //src/graphic/bezier.js
  3186. /**
  3187. * @fileOverview
  3188. *
  3189. * 贝塞尔曲线
  3190. */
  3191. _p[24] = {
  3192. value: function value(require, exports, module) {
  3193. /**
  3194. * @class kity.Bezier
  3195. * @mixins kity.PointContainer
  3196. * @base kity.Path
  3197. * @description 绘制和使用贝塞尔曲线。贝塞尔曲线作为一个贝塞尔点的容器,任何贝塞尔点的改变都会更改贝塞尔曲线的外观
  3198. */
  3199. return _p.r(11).createClass("Bezier", {
  3200. mixins: [_p.r(52)],
  3201. base: _p.r(47),
  3202. /**
  3203. * @constructor
  3204. * @for kity.Bezier
  3205. *
  3206. * @grammar new kity.Bezier(bezierPoints)
  3207. *
  3208. * @param {kity.BezierPoints[]} bezierPoints 贝塞尔点集合,每个元素应该是 {kity.BezierPoint} 类型
  3209. *
  3210. * @example
  3211. *
  3212. * ```js
  3213. * var bezier = new kity.Bezier([
  3214. * new kity.BezierPoint(0, 0).setForward(100, 0),
  3215. * new kity.BezierPoint(100, 100).setBackward(100, 0)
  3216. * ]);
  3217. * ```
  3218. */
  3219. constructor: function constructor(bezierPoints) {
  3220. this.callBase();
  3221. bezierPoints = bezierPoints || [];
  3222. this.changeable = true;
  3223. this.setBezierPoints(bezierPoints);
  3224. },
  3225. /**
  3226. * @method getBezierPoints()
  3227. * @for kity.Bezier
  3228. * @description 返回当前贝塞尔曲线的贝塞尔点集合
  3229. *
  3230. * @grammar getBezierPoints() => {kity.BezierPoints[]}
  3231. *
  3232. */
  3233. getBezierPoints: function getBezierPoints() {
  3234. return this.getPoints();
  3235. },
  3236. /**
  3237. * @method setBezierPoints()
  3238. * @for kity.Bezier
  3239. * @description 设置当前贝塞尔曲线的贝塞尔点集合
  3240. *
  3241. * @grammar setBeizerPoints(bezierPoints) => {this}
  3242. *
  3243. * @param {kity.BezierPoint[]} bezierPoints 贝塞尔点集合
  3244. */
  3245. setBezierPoints: function setBezierPoints(bezierPoints) {
  3246. return this.setPoints(bezierPoints);
  3247. },
  3248. //当点集合发生变化时采取的动作
  3249. onContainerChanged: function onContainerChanged() {
  3250. if (this.changeable) {
  3251. this.update();
  3252. }
  3253. },
  3254. update: function update() {
  3255. var drawer = null,
  3256. bezierPoints = this.getBezierPoints();
  3257. //单独的一个点不画任何图形
  3258. if (bezierPoints.length < 2) {
  3259. return;
  3260. }
  3261. drawer = this.getDrawer();
  3262. drawer.clear();
  3263. var vertex = bezierPoints[0].getVertex(),
  3264. forward = null,
  3265. backward = null;
  3266. drawer.moveTo(vertex.x, vertex.y);
  3267. for (var i = 1, len = bezierPoints.length; i < len; i++) {
  3268. vertex = bezierPoints[i].getVertex();
  3269. backward = bezierPoints[i].getBackward();
  3270. forward = bezierPoints[i - 1].getForward();
  3271. drawer.bezierTo(forward.x, forward.y, backward.x, backward.y, vertex.x, vertex.y);
  3272. }
  3273. return this;
  3274. }
  3275. });
  3276. }
  3277. };
  3278. //src/graphic/bezierpoint.js
  3279. /**
  3280. * @fileOverview
  3281. *
  3282. * 表示一个贝塞尔点
  3283. */
  3284. _p[25] = {
  3285. value: function value(require, exports, module) {
  3286. var ShapePoint = _p.r(64);
  3287. var Vector = _p.r(74);
  3288. /**
  3289. * @class kity.BezierPoint
  3290. *
  3291. * @description 表示一个贝塞尔点
  3292. * 一个贝塞尔点由顶点坐标(曲线经过的点)、前方控制点、后方控制点表示
  3293. */
  3294. var BezierPoint = _p.r(11).createClass("BezierPoint", {
  3295. /**
  3296. * @constructor
  3297. * @for kity.BezierPoint
  3298. *
  3299. * @description 创建一个具有默认顶点坐标的贝塞尔点,两个控制点的坐标和顶点一致
  3300. *
  3301. * @param {Number} x 顶点的 x 坐标
  3302. * @param {Number} y 顶点的 y 坐标
  3303. * @param {Boolean} isSmooth 指示当前贝塞尔点是否光滑,光滑会约束顶点和两个控制点共线
  3304. */
  3305. constructor: function constructor(x, y, isSmooth) {
  3306. //顶点
  3307. this.vertex = new ShapePoint(x, y);
  3308. //控制点
  3309. this.forward = new ShapePoint(x, y);
  3310. this.backward = new ShapePoint(x, y);
  3311. //是否平滑
  3312. this.setSmooth(isSmooth === undefined || isSmooth);
  3313. this.setSymReflaction(true);
  3314. },
  3315. /**
  3316. * @method clone()
  3317. * @for kity.BezierPoint
  3318. * @description 返回贝塞尔点的一份拷贝
  3319. *
  3320. * @grammar clone() => {kity.BezierPoint}
  3321. */
  3322. clone: function clone() {
  3323. var newPoint = new BezierPoint(),
  3324. tmp = null;
  3325. tmp = this.getVertex();
  3326. newPoint.setVertex(tmp.x, tmp.y);
  3327. tmp = this.getForward();
  3328. newPoint.setForward(tmp.x, tmp.y);
  3329. tmp = this.getBackward();
  3330. newPoint.setBackward(tmp.x, tmp.y);
  3331. newPoint.setSymReflaction(this.isSymReflaction);
  3332. newPoint.setSmooth(this.isSmooth());
  3333. return newPoint;
  3334. },
  3335. /**
  3336. * @method setVertex()
  3337. * @for kity.BezierPoint
  3338. * @description 设置贝塞尔点的顶点坐标,注意,控制点的坐标不会跟着变化。希望控制点的坐标跟着变化,请用 moveTo() 方法
  3339. *
  3340. * @grammar setVertex(x, y) => {this}
  3341. *
  3342. * @param {Number} x 顶点的 x 坐标
  3343. * @param {Number} y 顶点的 y 坐标
  3344. */
  3345. setVertex: function setVertex(x, y) {
  3346. this.vertex.setPoint(x, y);
  3347. this.update();
  3348. return this;
  3349. },
  3350. /**
  3351. * @method moveTo()
  3352. * @for kity.BezierPoint
  3353. * @description 同步移动整个贝塞尔点,使顶点的移动到指定的坐标中。控制点的位置相对顶点坐标固定。
  3354. *
  3355. * @grammar moveTo() => {this}
  3356. *
  3357. * @param {Number} x 顶点的目标 x 坐标
  3358. * @param {Number} y 顶点的目标 y 坐标
  3359. *
  3360. */
  3361. moveTo: function moveTo(x, y) {
  3362. var oldForward = this.forward.getPoint(),
  3363. oldBackward = this.backward.getPoint(),
  3364. oldVertex = this.vertex.getPoint(),
  3365. //移动距离
  3366. distance = {
  3367. left: x - oldVertex.x,
  3368. top: y - oldVertex.y
  3369. };
  3370. // 更新
  3371. this.forward.setPoint(oldForward.x + distance.left, oldForward.y + distance.top);
  3372. this.backward.setPoint(oldBackward.x + distance.left, oldBackward.y + distance.top);
  3373. this.vertex.setPoint(x, y);
  3374. this.update();
  3375. },
  3376. /**
  3377. * @method setForward()
  3378. * @for kity.BezierPoint
  3379. * @description 设置前方控制点的位置,如果贝塞尔点光滑,后方控制点会跟着联动
  3380. *
  3381. * @grammar setForward(x, y) => {this}
  3382. *
  3383. * @param {Number} x 前方控制点的 x 坐标
  3384. * @param {Number} y 前方控制点的 y 坐标
  3385. */
  3386. setForward: function setForward(x, y) {
  3387. this.forward.setPoint(x, y);
  3388. //更新后置点
  3389. if (this.smooth) {
  3390. this.updateAnother(this.forward, this.backward);
  3391. }
  3392. this.update();
  3393. this.lastControlPointSet = this.forward;
  3394. return this;
  3395. },
  3396. /**
  3397. * @method setBackward()
  3398. * @for kity.BezierPoint
  3399. * @description 设置后方控制点的位置,如果贝塞尔点光滑,前方控制点会跟着联动
  3400. *
  3401. * @grammar setBackward(x, y) => {this}
  3402. *
  3403. * @param {Number} x 后方控制点的 x 坐标
  3404. * @param {Number} y 后方控制点的 y 坐标
  3405. */
  3406. setBackward: function setBackward(x, y) {
  3407. this.backward.setPoint(x, y);
  3408. //更新前置点
  3409. if (this.smooth) {
  3410. this.updateAnother(this.backward, this.forward);
  3411. }
  3412. this.update();
  3413. this.lastControlPointSet = this.backward;
  3414. return this;
  3415. },
  3416. /**
  3417. * @method setSymReflaction()
  3418. * @for kity.BezierPoint
  3419. * @description 设定是否镜像两个控制点的位置
  3420. *
  3421. * @grammar setSymReflaction(value) => {this}
  3422. *
  3423. * @param {boolean} value 如果设置为 true,且贝塞尔点光滑,两个控制点离顶点的距离相等
  3424. */
  3425. setSymReflaction: function setSymReflaction(value) {
  3426. this.symReflaction = value;
  3427. if (this.smooth) this.setSmooth(true);
  3428. return this;
  3429. },
  3430. /**
  3431. * @method isSymReflaction()
  3432. * @for kity.BezierPoint
  3433. * @description 当前贝塞尔点的两个控制点是否被镜像约束
  3434. *
  3435. * @grammar isSymReflaction() => {boolean}
  3436. */
  3437. isSymReflaction: function isSymReflaction() {
  3438. return this.symReflaction;
  3439. },
  3440. /**
  3441. * @private
  3442. *
  3443. * 根据前方控制点或后方控制点更新另一方
  3444. */
  3445. updateAnother: function updateAnother(p, q) {
  3446. var v = this.getVertex(),
  3447. pv = Vector.fromPoints(p.getPoint(), v),
  3448. vq = Vector.fromPoints(v, q.getPoint());
  3449. vq = pv.normalize(this.isSymReflaction() ? pv.length() : vq.length());
  3450. q.setPoint(v.x + vq.x, v.y + vq.y);
  3451. return this;
  3452. },
  3453. /**
  3454. * @method setSmooth()
  3455. * @for kity.BezierPoint
  3456. * @description 设置贝塞尔点是否光滑,光滑会约束顶点和两个控制点共线
  3457. *
  3458. * @param {Boolean} isSmooth 设置为 true 让贝塞尔点光滑
  3459. */
  3460. setSmooth: function setSmooth(isSmooth) {
  3461. var lc;
  3462. this.smooth = !!isSmooth;
  3463. if (this.smooth && (lc = this.lastControlPointSet)) {
  3464. this.updateAnother(lc, lc == this.forward ? this.backward : this.forward);
  3465. }
  3466. return this;
  3467. },
  3468. /**
  3469. * @method isSmooth()
  3470. * @for kity.BezierPoint
  3471. * @description 判断贝塞尔点是否光滑
  3472. *
  3473. * @grammar isSmooth() => {boolean}
  3474. */
  3475. isSmooth: function isSmooth() {
  3476. return this.smooth;
  3477. },
  3478. /**
  3479. * @method getVertex()
  3480. * @for kity.BezierPoint
  3481. * @description 获得当前贝塞尔点的顶点
  3482. *
  3483. * @grammar getVertex() => {kity.ShapePoint}
  3484. */
  3485. getVertex: function getVertex() {
  3486. return this.vertex.getPoint();
  3487. },
  3488. /**
  3489. * @method getForward()
  3490. * @for kity.BezierPoint
  3491. * @description 获得当前贝塞尔点的前方控制点
  3492. *
  3493. * @grammar getForward() => {kity.ShapePoint}
  3494. */
  3495. getForward: function getForward() {
  3496. return this.forward.getPoint();
  3497. },
  3498. /**
  3499. * @method getBackward()
  3500. * @for kity.BezierPoint
  3501. * @description 获得当前贝塞尔点的后方控制点
  3502. *
  3503. * @grammar getBackward() => {kity.ShapePoint}
  3504. */
  3505. getBackward: function getBackward() {
  3506. return this.backward.getPoint();
  3507. },
  3508. /**
  3509. * @private
  3510. *
  3511. * 联动更新相关的贝塞尔曲线
  3512. */
  3513. update: function update() {
  3514. if (!this.container) {
  3515. return this;
  3516. }
  3517. //新增参数 this, 把当前引起变化的点传递过去, 以便有需要的地方可以获取到引起变化的源
  3518. if (this.container.update) this.container.update(this);
  3519. }
  3520. });
  3521. return BezierPoint;
  3522. }
  3523. };
  3524. //src/graphic/box.js
  3525. /**
  3526. * @fileOverview
  3527. *
  3528. * 表示一个矩形区域
  3529. */
  3530. _p[26] = {
  3531. value: function value(require, exports, module) {
  3532. /**
  3533. * @class kity.Box
  3534. * @description 表示一个矩形区域
  3535. */
  3536. var Box = _p.r(11).createClass("Box", {
  3537. /**
  3538. * @constructor
  3539. * @for kity.Box
  3540. *
  3541. * @grammar new kity.Box(x, y, width, height)
  3542. * @grammar new kity.Box(box)
  3543. *
  3544. * @param {Number} x|box.x 矩形区域的 x 坐标
  3545. * @param {Number} y|box.y 矩形区域的 y 坐标
  3546. * @param {Number} width|box.width 矩形区域的宽度
  3547. * @param {Number} height|box.height 矩形区域的高度
  3548. *
  3549. * @example
  3550. *
  3551. * ```js
  3552. * var box = new kity.Box(10, 20, 50, 50);
  3553. * var box2 = new kity.Box({x: 10, y: 20, width: 50, height: 50});
  3554. * ```
  3555. */
  3556. constructor: function constructor(x, y, width, height) {
  3557. var box = arguments[0];
  3558. if (box && (typeof box === "undefined" ? "undefined" : _typeof(box)) === "object") {
  3559. x = box.x;
  3560. y = box.y;
  3561. width = box.width;
  3562. height = box.height;
  3563. }
  3564. if (width < 0) {
  3565. x -= width = -width;
  3566. }
  3567. if (height < 0) {
  3568. y -= height = -height;
  3569. }
  3570. /**
  3571. * @property x
  3572. * @for kity.Box
  3573. * @type {Number}
  3574. * @readOnly
  3575. * @description 矩形区域的 x 坐标
  3576. */
  3577. this.x = x || 0;
  3578. /**
  3579. * @property y
  3580. * @for kity.Box
  3581. * @type {Number}
  3582. * @readOnly
  3583. * @description 矩形区域的 y 坐标
  3584. */
  3585. this.y = y || 0;
  3586. /**
  3587. * @property width
  3588. * @for kity.Box
  3589. * @type {Number}
  3590. * @readOnly
  3591. * @description 矩形区域的宽度
  3592. */
  3593. this.width = width || 0;
  3594. /**
  3595. * @property height
  3596. * @for kity.Box
  3597. * @type {Number}
  3598. * @readOnly
  3599. * @description 矩形区域的高度
  3600. */
  3601. this.height = height || 0;
  3602. /**
  3603. * @property left
  3604. * @for kity.Box
  3605. * @type {Number}
  3606. * @readOnly
  3607. * @description 矩形区域的最左侧坐标,等价于 x 的值
  3608. */
  3609. this.left = this.x;
  3610. /**
  3611. * @property right
  3612. * @for kity.Box
  3613. * @type {Number}
  3614. * @readOnly
  3615. * @description 矩形区域的最右侧坐标,等价于 x + width 的值
  3616. */
  3617. this.right = this.x + this.width;
  3618. /**
  3619. * @property top
  3620. * @for kity.Box
  3621. * @type {Number}
  3622. * @readOnly
  3623. * @description 矩形区域的最上侧坐标,等价于 y 的值
  3624. */
  3625. this.top = this.y;
  3626. /**
  3627. * @property bottom
  3628. * @for kity.Box
  3629. * @type {Number}
  3630. * @readOnly
  3631. * @description 矩形区域的最下侧坐标,等价于 y + height 的值
  3632. */
  3633. this.bottom = this.y + this.height;
  3634. /**
  3635. * @property cx
  3636. * @for kity.Box
  3637. * @type {Number}
  3638. * @readOnly
  3639. * @description 矩形区域的中心 x 坐标
  3640. */
  3641. this.cx = this.x + this.width / 2;
  3642. /**
  3643. * @property cy
  3644. * @for kity.Box
  3645. * @type {Number}
  3646. * @readOnly
  3647. * @description 矩形区域的中心 y 坐标
  3648. */
  3649. this.cy = this.y + this.height / 2;
  3650. },
  3651. /**
  3652. * @method getRangeX()
  3653. * @for kity.Box
  3654. * @description 获得矩形区域的 x 值域
  3655. *
  3656. * @grammar getRangeX() => {Number[]}
  3657. *
  3658. * @example
  3659. *
  3660. * var box = new kity.Box(10, 10, 30, 50);
  3661. * console.log(box.getRangeX()); // [10, 40]
  3662. */
  3663. getRangeX: function getRangeX() {
  3664. return [this.left, this.right];
  3665. },
  3666. /**
  3667. * @method getRangeY()
  3668. * @for kity.Box
  3669. * @description 获得矩形区域的 y 值域
  3670. *
  3671. * @grammar getRangeY() => {Number[]}
  3672. *
  3673. * @example
  3674. *
  3675. * var box = new kity.Box(10, 10, 30, 50);
  3676. * console.log(box.getRangeY()); // [10, 60]
  3677. */
  3678. getRangeY: function getRangeY() {
  3679. return [this.top, this.bottom];
  3680. },
  3681. /**
  3682. * @method merge()
  3683. * @for kity.Box
  3684. * @description 把当前矩形区域和指定的矩形区域合并,返回一个新的矩形区域(即包含两个源矩形区域的最小矩形区域)
  3685. *
  3686. * @grammar merge(another) => {kity.Box}
  3687. * @param {kity.Box} another 要合并的矩形区域
  3688. *
  3689. * @example
  3690. *
  3691. * ```js
  3692. * var box1 = new kity.Box(10, 10, 50, 50);
  3693. * var box2 = new kity.Box(30, 30, 50, 50);
  3694. * var box3 = box1.merge(box2);
  3695. * console.log(box3.valueOf()); // [10, 10, 70, 70]
  3696. * ```
  3697. */
  3698. merge: function merge(another) {
  3699. if (this.isEmpty()) {
  3700. return new Box(another.x, another.y, another.width, another.height);
  3701. }
  3702. var left = Math.min(this.left, another.left),
  3703. right = Math.max(this.right, another.right),
  3704. top = Math.min(this.top, another.top),
  3705. bottom = Math.max(this.bottom, another.bottom);
  3706. return new Box(left, top, right - left, bottom - top);
  3707. },
  3708. /**
  3709. * @method intersect()
  3710. * @for kity.Box
  3711. * @description 求当前矩形区域和指定的矩形区域重叠的矩形区域
  3712. *
  3713. * @grammar intersect(another) => {kity.Box}
  3714. * @param {kity.Box} another 要求重叠的矩形区域
  3715. *
  3716. * @example
  3717. *
  3718. * ```js
  3719. * var box1 = new kity.Box(10, 10, 50, 50);
  3720. * var box2 = new kity.Box(30, 30, 50, 50);
  3721. * var box3 = box1.intersect(box2);
  3722. * console.log(box3.valueOf()); // [30, 30, 20, 20]
  3723. * ```
  3724. */
  3725. intersect: function intersect(another) {
  3726. if (!another instanceof Box) {
  3727. another = new Box(another);
  3728. }
  3729. var left = Math.max(this.left, another.left),
  3730. right = Math.min(this.right, another.right),
  3731. top = Math.max(this.top, another.top),
  3732. bottom = Math.min(this.bottom, another.bottom);
  3733. if (left > right || top > bottom) return new Box();
  3734. return new Box(left, top, right - left, bottom - top);
  3735. },
  3736. /**
  3737. * @method expand()
  3738. * @for kity.Box
  3739. * @description 扩展(或收缩)当前的盒子,返回新的盒子
  3740. *
  3741. * @param {Number} top
  3742. * 矩形区域的上边界往上扩展的值;如果是负数,则上边界往下收缩
  3743. *
  3744. * @param {Number} right
  3745. * [Optional] 矩形区域的右边界往右拓展的值;
  3746. * 如果是负数,则右边界往左收缩;
  3747. * 如果不设置该值,使用和 top 同样的值。
  3748. *
  3749. * @param {Number} bottom
  3750. * [Optional] 矩形区域的下边界往下拓展的值;
  3751. * 如果是负数,则下边界往上收缩;
  3752. * 如果不设置该值,使用和 top 同样的值。
  3753. *
  3754. * @param {Number} left
  3755. * [Optional] 矩形区域的左边界往左拓展的值;
  3756. * 如果是负数,则左边界往右收缩;
  3757. * 如果不设置该值,使用和 right 同样的值。
  3758. *
  3759. * @example
  3760. *
  3761. * ```js
  3762. * var box = new kity.Box(10, 10, 20, 20);
  3763. * var box1 = box.expand(10); // [0, 0, 40, 40]
  3764. * var box2 = box.expand(10, 20); // [0, -10, 40, 60]
  3765. * var box3 = box.expand(1, 2, 3, 4); // [9, 8, 24, 26]
  3766. * ```
  3767. */
  3768. expand: function expand(top, right, bottom, left) {
  3769. if (arguments.length < 1) {
  3770. return new Box(this);
  3771. }
  3772. if (arguments.length < 2) {
  3773. right = top;
  3774. }
  3775. if (arguments.length < 3) {
  3776. bottom = top;
  3777. }
  3778. if (arguments.length < 4) {
  3779. left = right;
  3780. }
  3781. var x = this.left - left,
  3782. y = this.top - top,
  3783. width = this.width + right + left,
  3784. height = this.height + top + bottom;
  3785. return new Box(x, y, width, height);
  3786. },
  3787. /**
  3788. * @method valueOf()
  3789. * @for kity.Box
  3790. * @description 返回当前盒子的数组表示
  3791. *
  3792. * @grammar valueOf() => {Number[]}
  3793. *
  3794. * @example
  3795. *
  3796. * ```js
  3797. * var box = new kity.Box(0, 0, 200, 50);
  3798. * console.log(box.valueOf()); // [0, 0, 200, 50]
  3799. * ```
  3800. */
  3801. valueOf: function valueOf() {
  3802. return [this.x, this.y, this.width, this.height];
  3803. },
  3804. /**
  3805. * @method toString()
  3806. * @for kity.Box
  3807. * @description 返回当前盒子的字符串表示
  3808. *
  3809. * @grammar toString() => {String}
  3810. *
  3811. * @example
  3812. *
  3813. * ```js
  3814. * var box = new kity.Box(0, 0, 200, 50);
  3815. * console.log(box.toString()); // "0 0 200 50"
  3816. */
  3817. toString: function toString() {
  3818. return this.valueOf().join(" ");
  3819. },
  3820. /**
  3821. * @method isEmpty()
  3822. * @for kity.Box
  3823. * @description 判断当前盒子是否具有尺寸(面积大
  3824. *
  3825. * @grammar isEmpty() => {boolean}
  3826. *
  3827. * @example
  3828. * ```js
  3829. * var box = new kity.Box(0, 0, 0, 100000);
  3830. * console.log(box.isEmpty()); // true
  3831. * ```
  3832. */
  3833. isEmpty: function isEmpty() {
  3834. return !this.width || !this.height;
  3835. }
  3836. });
  3837. /**
  3838. * @method parse()
  3839. * @static
  3840. * @for kity.Box
  3841. * @description 解析一个字符串或数组为 kity.Box 对象
  3842. *
  3843. * @grammar kity.Box.parse(any) => {kity.Box}
  3844. *
  3845. * @param {Number[]|String} any 要解析的字符串或数组
  3846. *
  3847. * @example
  3848. *
  3849. * ```js
  3850. * console.log(kity.Box.parse('0 0 100 200'));
  3851. * console.log(kity.Box.parse([0, 0, 100, 200]));
  3852. * ```
  3853. */
  3854. Box.parse = function (any) {
  3855. if (typeof any == "string") {
  3856. return Box.parse(any.split(/[\s,]+/).map(parseFloat));
  3857. }
  3858. if (any instanceof Array) {
  3859. return new Box(any[0], any[1], any[2], any[3]);
  3860. }
  3861. if ("x" in any) return new Box(any);
  3862. return null;
  3863. };
  3864. return Box;
  3865. }
  3866. };
  3867. //src/graphic/circle.js
  3868. /**
  3869. * @fileOverview
  3870. *
  3871. * 绘制和使用圆形
  3872. */
  3873. _p[27] = {
  3874. value: function value(require, exports, module) {
  3875. /**
  3876. * @class kity.Circle
  3877. * @base kity.Ellipse
  3878. * @description 表示一个圆形
  3879. */
  3880. return _p.r(11).createClass("Circle", {
  3881. base: _p.r(33),
  3882. /**
  3883. * @constructor
  3884. * @for kity.Circle
  3885. *
  3886. * @grammar new kity.Circle(radius, cx, cy)
  3887. *
  3888. * @param {Number} radius 半径
  3889. * @param {Number} cx 圆心 x 坐标
  3890. * @param {Number} cy 圆心 y 坐标
  3891. */
  3892. constructor: function constructor(radius, cx, cy) {
  3893. this.callBase(radius, radius, cx, cy);
  3894. },
  3895. /**
  3896. * @method
  3897. * @for kity.Circle
  3898. * @description 获取圆形的半径
  3899. *
  3900. * @grammar getRadius() => {Number}
  3901. */
  3902. getRadius: function getRadius() {
  3903. return this.getRadiusX();
  3904. },
  3905. /**
  3906. * @method
  3907. * @for kity.Circle
  3908. * @description 设置圆形的半径
  3909. *
  3910. * @grammar setRadius() => {this}
  3911. *
  3912. * @param {Number} radius 半径大小
  3913. */
  3914. setRadius: function setRadius(radius) {
  3915. return this.callBase(radius, radius);
  3916. }
  3917. });
  3918. }
  3919. };
  3920. //src/graphic/clip.js
  3921. /**
  3922. * @fileOverview
  3923. *
  3924. * 支持图形裁切
  3925. */
  3926. _p[28] = {
  3927. value: function value(require, exports, module) {
  3928. var Class = _p.r(11);
  3929. var Shape = _p.r(61);
  3930. /**
  3931. * @class kity.Clip
  3932. * @base kity.Resource
  3933. * @mixins kity.ShapeContainer
  3934. *
  3935. * @description 创建图形裁切,用于裁切目标图形
  3936. */
  3937. var Clip = Class.createClass("Clip", {
  3938. base: Shape,
  3939. mixins: [_p.r(62)],
  3940. /**
  3941. * @constructor
  3942. * @for kity.Clip
  3943. *
  3944. * @grammar new kity.Clip(paper)
  3945. *
  3946. * @param {kity.Paper} paper 资源所属的文档
  3947. *
  3948. * @example
  3949. *
  3950. * ```js
  3951. * var circle = paper.put(new kity.Circle(100).fill('yellow'));
  3952. * var clip = new kity.Clip(paper);
  3953. * clip.addShape(new kity.Circle(100, 50, 0));
  3954. * clip.clip(circle);
  3955. * ```
  3956. */
  3957. constructor: function constructor(paper) {
  3958. this.callBase("clipPath", paper);
  3959. },
  3960. /**
  3961. * @method clip()
  3962. * @for kity.Clip
  3963. * @description 将裁切应用到指定的图形上,应用之后,目标图形将显示与裁切形状重合的部分
  3964. *
  3965. * @grammar clip(shape) => {this}
  3966. *
  3967. * @param {kity.Shape} shape 要应用裁切的图形
  3968. */
  3969. clip: function clip(shape) {
  3970. shape.getNode().setAttribute("clip-path", this);
  3971. return this;
  3972. }
  3973. });
  3974. Class.extendClass(Shape, {
  3975. /**
  3976. * @method clipWidth()
  3977. * @for kity.Shape
  3978. *
  3979. * @grammar clipWidth(clip) => {this}
  3980. *
  3981. * @param {kity.Clip|kity.Shape} clip 要用于裁切当前图形的图形;
  3982. * 如果 clip 本身是一个裁切对象(kity.Clip 类型),则直接裁切;
  3983. * 否则将创建新的裁切包含给定的图形,然后对当前图形进行裁切
  3984. *
  3985. * @example
  3986. *
  3987. * ```js
  3988. * var circle = paper.put(new kity.Circle(100));
  3989. * var rect = paper.put(new kity.Rect(100, 100, -100, 0));
  3990. *
  3991. * circle.clipWidth(rect);
  3992. * ```
  3993. */
  3994. clipWith: function clipWith(clip) {
  3995. if (clip instanceof Shape) {
  3996. clip = new Clip(clip.getPaper()).addShape(clip);
  3997. }
  3998. clip.clip(this);
  3999. return this;
  4000. }
  4001. });
  4002. return Clip;
  4003. }
  4004. };
  4005. //src/graphic/color.js
  4006. /**
  4007. * @fileOverview
  4008. *
  4009. * 提供颜色支持
  4010. */
  4011. _p[29] = {
  4012. value: function value(require, exports, module) {
  4013. var Utils = _p.r(12),
  4014. StandardColor = _p.r(65),
  4015. ColorUtils = {},
  4016. /**
  4017. * @class kity.Color
  4018. * @description 表示一个颜色
  4019. */
  4020. Color = _p.r(11).createClass("Color", {
  4021. /**
  4022. * @constructor
  4023. * @for kity.Color
  4024. *
  4025. * @grammar new kity.Color(r, g, b)
  4026. * @grammar new kity.Color(r, g, b, a)
  4027. * @grammar new kity.Color(colorString)
  4028. *
  4029. * @param {Number} r 红色分量,取值 0 - 255
  4030. * @param {Number} g 绿色分量,取值 0 - 255
  4031. * @param {Number} b 蓝色分量,取值 0 - 255
  4032. * @param {Number} a 透明度(可选),取值 0 - 100
  4033. * @param {String} colorString 一个代表颜色的字符串,可以是:
  4034. * 熟知颜色表:如 'red', 'yellow'
  4035. * HEX 表示:如 '#368', '#123456'
  4036. * RGB 表示:如 'RGB(200, 200, 0)', 'RGBA(200, 200, 200, .5)'
  4037. * HSL 表示:如 'HSL(100, 60%, 80%)', 'HSLA(100, 60%, 80%, .5)'
  4038. */
  4039. constructor: function constructor() {
  4040. var colorValue = null;
  4041. //parse构造
  4042. if (typeof arguments[0] === "string") {
  4043. colorValue = ColorUtils.parseToValue(arguments[0]);
  4044. //解析失败
  4045. if (colorValue === null) {
  4046. colorValue = {
  4047. r: 0,
  4048. g: 0,
  4049. b: 0,
  4050. h: 0,
  4051. s: 0,
  4052. l: 0,
  4053. a: 1
  4054. };
  4055. }
  4056. } else {
  4057. colorValue = {
  4058. r: arguments[0] | 0,
  4059. g: arguments[1] | 0,
  4060. b: arguments[2] | 0,
  4061. //alpha 默认为1
  4062. a: arguments[3] === undefined ? 1 : parseFloat(arguments[3])
  4063. };
  4064. colorValue = ColorUtils.overflowFormat(colorValue);
  4065. //获取hsl分量
  4066. colorValue = Utils.extend(colorValue, ColorUtils.rgbValueToHslValue(colorValue));
  4067. }
  4068. this._color = colorValue;
  4069. },
  4070. /**
  4071. * @method set()
  4072. * @for kity.Color
  4073. *
  4074. * @description 设置当前颜色某个分量的值
  4075. *
  4076. * @grammar set(name, value) => {this}
  4077. *
  4078. * @param {string} name 要设置的颜色通道的名称
  4079. * r: 红色(Red),取值范围 [0, 255]
  4080. * g: 绿色(Green),取值范围 [0, 255]
  4081. * b: 蓝色(Blue),取值范围 [0, 255]
  4082. * a: 透明度(Alpha),取值范围 [0, 1]
  4083. * h: 色环角度(Hue),取值范围 [0, 359]
  4084. * s: 饱和度(Saturation),取值范围 [0, 100]
  4085. * l: 亮度(Lightness),取值范围 [0, 100]
  4086. * r、g、b 值和 h、s、l 值会联动修改
  4087. * @param {number} value 要设置的值
  4088. */
  4089. set: function set(name, value) {
  4090. var values = null;
  4091. //设置的值非法
  4092. if (!Color._MAX_VALUE[name]) {
  4093. throw new Error("Color set(): Illegal parameter");
  4094. }
  4095. if (name !== "a") {
  4096. value = Math.floor(value);
  4097. }
  4098. if (name == "h") {
  4099. value = (value + 360) % 360;
  4100. }
  4101. this._color[name] = Math.max(Color._MIN_VALUE[name], Math.min(Color._MAX_VALUE[name], value));
  4102. if ("rgb".indexOf(name) !== -1) {
  4103. this._color = Utils.extend(this._color, ColorUtils.rgbValueToHslValue(this._color));
  4104. } else if ("hsl".indexOf(name) !== -1) {
  4105. this._color = Utils.extend(this._color, ColorUtils.hslValueToRGBValue(this._color));
  4106. }
  4107. return this;
  4108. },
  4109. /**
  4110. * @method inc()
  4111. *
  4112. * @description 返回新的颜色,表示当前颜色增加指定通道的值之后的颜色
  4113. *
  4114. * @grammar inc(name, value) => {this}
  4115. *
  4116. * @param {string} name 要增加的通道的名称,具体含义请查看 set 方法
  4117. * @param {number} value 增量值
  4118. */
  4119. inc: function inc(name, value) {
  4120. value = this.get(name) + value;
  4121. if (name == "h") {
  4122. value = (value + 360) % 360;
  4123. } else {
  4124. value = Math.min(Color._MAX_VALUE[name], value);
  4125. value = Math.max(Color._MIN_VALUE[name], value);
  4126. }
  4127. return this.clone().set(name, value);
  4128. },
  4129. /**
  4130. * @method dec()
  4131. * @for kity.Color
  4132. *
  4133. * @description 返回新的颜色,表示当前颜色减少指定通道的值之后的颜色
  4134. *
  4135. * @grammar dec(name, value) => {this}
  4136. *
  4137. * @param {string} name 要减少值的通道的名称,具体含义请查看 set 方法
  4138. * @param {number} value 减量值
  4139. */
  4140. dec: function dec(name, value) {
  4141. return this.inc(name, -value);
  4142. },
  4143. /**
  4144. * @method clone()
  4145. * @for kity.Color
  4146. *
  4147. * @description 返回当前颜色的一个拷贝
  4148. *
  4149. * @grammar clone() => {kity.Color}
  4150. */
  4151. clone: function clone() {
  4152. return new Color(this.toRGBA());
  4153. },
  4154. /**
  4155. * @method get()
  4156. * @for kity.Color
  4157. *
  4158. * @description 返回当前颜色指定的分量
  4159. *
  4160. * @grammar get() => {number}
  4161. */
  4162. get: function get(name) {
  4163. if (!Color._MAX_VALUE[name]) {
  4164. return null;
  4165. }
  4166. return this._color[name];
  4167. },
  4168. getValues: function getValues() {
  4169. return Utils.clone(this._color);
  4170. },
  4171. /**
  4172. * @method valueOf()
  4173. * @for kity.Color
  4174. *
  4175. * @description 返回当前颜色的一个字面量表示
  4176. *
  4177. * @return {plain} 颜色字面量,其结构为:
  4178. * {
  4179. * r: 0,
  4180. * g: 0,
  4181. * b: 0,
  4182. * a: 0,
  4183. * h: 0,
  4184. * s: 0,
  4185. * l: 0
  4186. * }
  4187. */
  4188. valueOf: function valueOf() {
  4189. return this.getValues();
  4190. },
  4191. /**
  4192. * @method toRGB()
  4193. * @for kity.Color
  4194. *
  4195. * @description 返回当前颜色的 RGB 表示,如果颜色有透明度,将抛弃透明度属性(想要保留请使用 toRGBA())方法。
  4196. *
  4197. * @grammar toRGB() => {string}
  4198. */
  4199. toRGB: function toRGB() {
  4200. return ColorUtils.toString(this._color, "rgb");
  4201. },
  4202. /**
  4203. * @method toRGBA()
  4204. * @for kity.Color
  4205. *
  4206. * @description 返回当前颜色的 RGBA 表示
  4207. *
  4208. * @grammar toRGBA() => {string}
  4209. */
  4210. toRGBA: function toRGBA() {
  4211. return ColorUtils.toString(this._color, "rgba");
  4212. },
  4213. /**
  4214. * @method toHEX()
  4215. * @for kity.Color
  4216. *
  4217. * @description 返回当前颜色的 HEX 表示,如果颜色有透明度,将抛弃透明度属性(想要保留请使用 toRGBA())方法。
  4218. *
  4219. * @grammar toHEX() => {string}
  4220. */
  4221. toHEX: function toHEX() {
  4222. return ColorUtils.toString(this._color, "hex");
  4223. },
  4224. /**
  4225. * @method toHSL()
  4226. * @for kity.Color
  4227. *
  4228. * @description 返回当前颜色的 HSL 表示,如果颜色有透明度,将抛弃透明度属性(想要保留请使用 toHSLA())方法。
  4229. *
  4230. * @grammar toHSL() => {string}
  4231. */
  4232. toHSL: function toHSL() {
  4233. return ColorUtils.toString(this._color, "hsl");
  4234. },
  4235. /**
  4236. * @method toHSLA()
  4237. * @for kity.Color
  4238. *
  4239. * @description 返回当前颜色的 HSLA 表示
  4240. *
  4241. * @grammar toHSLA() => {string}
  4242. */
  4243. toHSLA: function toHSLA() {
  4244. return ColorUtils.toString(this._color, "hsla");
  4245. },
  4246. /**
  4247. * @method toString()
  4248. * @for kity.Color
  4249. *
  4250. * @description 返回当前颜色的 RGB 或 RGBA 表示,如果颜色有透明度,将使用 RGBA 形式,否则是 RGB 形式
  4251. * @grammar toString() => {string}
  4252. */
  4253. toString: function toString() {
  4254. if (this._color.a === 1) {
  4255. return this.toRGB();
  4256. }
  4257. return this.toRGBA();
  4258. }
  4259. });
  4260. //Color 静态方法
  4261. Utils.extend(Color, {
  4262. //各分量可表示的最大值
  4263. _MAX_VALUE: {
  4264. r: 255,
  4265. g: 255,
  4266. b: 255,
  4267. h: 360,
  4268. s: 100,
  4269. l: 100,
  4270. a: 1
  4271. },
  4272. //各分量最小值
  4273. _MIN_VALUE: {
  4274. r: 0,
  4275. g: 0,
  4276. b: 0,
  4277. h: 0,
  4278. s: 0,
  4279. l: 0,
  4280. a: 0
  4281. },
  4282. //分量常量
  4283. R: "r",
  4284. G: "g",
  4285. B: "b",
  4286. H: "h",
  4287. S: "s",
  4288. L: "l",
  4289. A: "a",
  4290. /**
  4291. * @method parse()
  4292. * @static
  4293. * @for kity.Color
  4294. *
  4295. * @description 解析一个颜色字符串为 kity.Color 对象
  4296. *
  4297. * @grammar kity.Color.parse(valStr)
  4298. *
  4299. * @param {string} valStr 一个代表颜色的字符串,可以是:
  4300. * 熟知颜色表:如 'red', 'yellow'
  4301. * HEX 表示:如 '#368', '#123456'
  4302. * RGB 表示:如 'RGB(200, 200, 0)', 'RGBA(200, 200, 200, .5)'
  4303. * HSL 表示:如 'HSL(100, 60%, 80%)', 'HSLA(100, 60%, 80%, .5)'
  4304. */
  4305. parse: function parse(valStr) {
  4306. var rgbValue;
  4307. if (Utils.isString(valStr)) {
  4308. rgbValue = ColorUtils.parseToValue(valStr);
  4309. }
  4310. if (Utils.isObject(valStr) && "r" in valStr) {
  4311. rgbValue = valStr;
  4312. }
  4313. //解析失败, 返回一个默认color实例
  4314. if (rgbValue === null) {
  4315. return new Color();
  4316. }
  4317. return new Color(rgbValue.r, rgbValue.g, rgbValue.b, rgbValue.a);
  4318. },
  4319. /**
  4320. * @method createHSL()
  4321. * @for kity.Color
  4322. * @static
  4323. *
  4324. * @description 创建一个 HSL 颜色
  4325. *
  4326. * @grammar kity.Color.createHSL(h, s, l) => {kity.Color}
  4327. *
  4328. * @param {number} h 色环(Hue)分量值,取值范围 [0, 359]
  4329. * @param {number} s 饱和度(Saturation)分量值,取值范围 [0, 100]
  4330. * @param {number} l 亮度(Lighteness)分量值,取值范围 [0, 100]
  4331. */
  4332. createHSL: function createHSL(h, s, l) {
  4333. return Color.createHSLA(h, s, l, 1);
  4334. },
  4335. /**
  4336. * @method createHSLA()
  4337. * @for kity.Color
  4338. * @static
  4339. *
  4340. * @description 创建一个 HSLA 颜色
  4341. *
  4342. * @grammar kity.Color.createHSLA(h, s, l, a) => {kity.Color}
  4343. *
  4344. * @param {number} h 色环(Hue)分量值,取值范围 [0, 359]
  4345. * @param {number} s 饱和度(Saturation)分量值,取值范围 [0, 100]
  4346. * @param {number} l 亮度(Lighteness)分量值,取值范围 [0, 100]
  4347. * @param {number} a 透明度(Alpha)分量值,取值范围 [0, 1]
  4348. */
  4349. createHSLA: function createHSLA(h, s, l, a) {
  4350. var colorValue = null;
  4351. s += "%";
  4352. l += "%";
  4353. colorValue = ["hsla(" + h, s, l, a + ")"];
  4354. return Color.parse(colorValue.join(", "));
  4355. },
  4356. /**
  4357. * @method createRGB()
  4358. * @for kity.Color
  4359. * @static
  4360. *
  4361. * @description 创建一个 RGB 颜色
  4362. *
  4363. * @grammar kity.Color.createRGB(r, g, b) => {kity.Color}
  4364. *
  4365. * @param {number} r 红色(Red)分量值,取值范围 [0, 255]
  4366. * @param {number} g 绿色(Green)分量值,取值范围 [0, 255]
  4367. * @param {number} b 蓝色(Blue)分量值,取值范围 [0, 255]
  4368. */
  4369. createRGB: function createRGB(r, g, b) {
  4370. return Color.createRGBA(r, g, b, 1);
  4371. },
  4372. /**
  4373. * @method createRGBA()
  4374. * @for kity.Color
  4375. * @static
  4376. *
  4377. * @description 创建一个 RGBA 颜色
  4378. *
  4379. * @grammar kity.Color.createRGBA(r, g, b, a) => {kity.Color}
  4380. *
  4381. * @param {number} r 红色(Red)分量值,取值范围 [0, 255]
  4382. * @param {number} g 绿色(Green)分量值,取值范围 [0, 255]
  4383. * @param {number} b 蓝色(Blue)分量值,取值范围 [0, 255]
  4384. * @param {number} a 透明度(Alpha)分量值,取值范围 [0, 1]
  4385. */
  4386. createRGBA: function createRGBA(r, g, b, a) {
  4387. return new Color(r, g, b, a);
  4388. }
  4389. });
  4390. //内部工具对象
  4391. Utils.extend(ColorUtils, {
  4392. parseToValue: function parseToValue(valStr) {
  4393. var rgbaValue = {};
  4394. /* 优先检测在调色板中是否有对应的颜色 */
  4395. valStr = StandardColor.EXTEND_STANDARD[valStr] || StandardColor.COLOR_STANDARD[valStr] || valStr;
  4396. /* 颜色转换 */
  4397. //hex格式
  4398. if (/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(valStr)) {
  4399. rgbaValue = ColorUtils.hexToValue(valStr);
  4400. } else if (/^(rgba?)/i.test(valStr)) {
  4401. rgbaValue = ColorUtils.rgbaToValue(valStr);
  4402. } else if (/^(hsla?)/i.test(valStr)) {
  4403. rgbaValue = ColorUtils.hslaToValue(valStr);
  4404. } else {
  4405. return null;
  4406. }
  4407. return ColorUtils.overflowFormat(rgbaValue);
  4408. },
  4409. hexToValue: function hexToValue(hexStr) {
  4410. var result = {},
  4411. keys = ["r", "g", "b"];
  4412. if (/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(hexStr)) {
  4413. hexStr = RegExp.$1.split("");
  4414. Utils.each(keys, function (key, index) {
  4415. if (hexStr.length === 3) {
  4416. result[key] = ColorUtils.toNumber(hexStr[index] + hexStr[index]);
  4417. } else {
  4418. result[key] = ColorUtils.toNumber(hexStr[index * 2] + hexStr[index * 2 + 1]);
  4419. }
  4420. });
  4421. //转换出hsl值
  4422. result = Utils.extend(result, ColorUtils.rgbValueToHslValue(result));
  4423. result.a = 1;
  4424. return result;
  4425. }
  4426. return null;
  4427. },
  4428. rgbaToValue: function rgbaToValue(rgbaStr) {
  4429. var result = {},
  4430. hasAlpha = false,
  4431. keys = ["r", "g", "b"];
  4432. if (/^(rgba?)/i.test(rgbaStr)) {
  4433. hasAlpha = RegExp.$1.length === 4;
  4434. rgbaStr = rgbaStr.replace(/^rgba?/i, "").replace(/\s+/g, "").replace(/[^0-9,.]/g, "").split(",");
  4435. Utils.each(keys, function (key, index) {
  4436. result[key] = rgbaStr[index] | 0;
  4437. });
  4438. //转换出hsl值
  4439. result = Utils.extend(result, ColorUtils.rgbValueToHslValue(result));
  4440. result.a = hasAlpha ? parseFloat(rgbaStr[3]) : 1;
  4441. return result;
  4442. }
  4443. return null;
  4444. },
  4445. hslaToValue: function hslaToValue(hslaStr) {
  4446. var result = {},
  4447. hasAlpha = false;
  4448. if (/^(hsla?)/i.test(hslaStr)) {
  4449. hasAlpha = RegExp.$1.length === 4;
  4450. hslaStr = hslaStr.replace(/^hsla?/i, "").replace(/\s+/g, "").replace(/[^0-9,.]/g, "").split(",");
  4451. //记录hsl值
  4452. result.h = hslaStr[0] | 0;
  4453. result.s = hslaStr[1] | 0;
  4454. result.l = hslaStr[2] | 0;
  4455. //转换出rgb值
  4456. result = Utils.extend(result, ColorUtils.hslValueToRGBValue(result));
  4457. //hsl值转换为rgb值
  4458. result = ColorUtils.hslValueToRGBValue(result);
  4459. result.a = hasAlpha ? parseFloat(hslaStr[3]) : 1;
  4460. return result;
  4461. }
  4462. return null;
  4463. },
  4464. //hsl值对象转换为rgb值对象
  4465. hslValueToRGBValue: function hslValueToRGBValue(hslValue) {
  4466. function trans(v1, v2, vH) {
  4467. if (vH < 0) {
  4468. vH += 1;
  4469. } else if (vH > 1) {
  4470. vH -= 1;
  4471. }
  4472. if (6 * vH < 1) {
  4473. return v1 + (v2 - v1) * 6 * vH;
  4474. } else if (2 * vH < 1) {
  4475. return v2;
  4476. } else if (3 * vH < 2) {
  4477. return v1 + (v2 - v1) * ((2 / 3 - vH) * 6);
  4478. }
  4479. return v1;
  4480. }
  4481. var q = null,
  4482. p = null,
  4483. result = {};
  4484. hslValue = Utils.extend({}, hslValue);
  4485. hslValue.h = hslValue.h / 360;
  4486. hslValue.s = hslValue.s / 100;
  4487. hslValue.l = hslValue.l / 100;
  4488. //分量计算
  4489. if (hslValue.s === 0) {
  4490. result.r = result.g = result.b = hslValue.l;
  4491. } else {
  4492. if (hslValue.l < .5) {
  4493. q = hslValue.l * (1 + hslValue.s);
  4494. } else {
  4495. q = hslValue.l + hslValue.s - hslValue.l * hslValue.s;
  4496. }
  4497. p = 2 * hslValue.l - q;
  4498. result.r = trans(p, q, hslValue.h + 1 / 3);
  4499. result.g = trans(p, q, hslValue.h);
  4500. result.b = trans(p, q, hslValue.h - 1 / 3);
  4501. }
  4502. result.r = Math.min(Math.round(result.r * 255), 255);
  4503. result.g = Math.min(Math.round(result.g * 255), 255);
  4504. result.b = Math.min(Math.round(result.b * 255), 255);
  4505. return result;
  4506. },
  4507. //rgb值对象转换为hsl值对象
  4508. rgbValueToHslValue: function rgbValueToHslValue(rgbValue) {
  4509. var max = null,
  4510. min = null,
  4511. result = {};
  4512. rgbValue = Utils.extend({}, rgbValue);
  4513. rgbValue.r = rgbValue.r / 255;
  4514. rgbValue.g = rgbValue.g / 255;
  4515. rgbValue.b = rgbValue.b / 255;
  4516. max = Math.max(rgbValue.r, rgbValue.g, rgbValue.b);
  4517. min = Math.min(rgbValue.r, rgbValue.g, rgbValue.b);
  4518. //h分量计算
  4519. if (max === min) {
  4520. result.h = 0;
  4521. } else if (max === rgbValue.r) {
  4522. if (rgbValue.g >= rgbValue.b) {
  4523. result.h = 60 * (rgbValue.g - rgbValue.b) / (max - min);
  4524. } else {
  4525. result.h = 60 * (rgbValue.g - rgbValue.b) / (max - min) + 360;
  4526. }
  4527. } else if (max === rgbValue.g) {
  4528. result.h = 60 * (rgbValue.b - rgbValue.r) / (max - min) + 120;
  4529. } else if (max === rgbValue.b) {
  4530. result.h = 60 * (rgbValue.r - rgbValue.g) / (max - min) + 240;
  4531. }
  4532. //l分量计算
  4533. result.l = (max + min) / 2;
  4534. //s分量计算
  4535. if (result.l === 0 || max === min) {
  4536. result.s = 0;
  4537. } else if (result.l > 0 && result.l <= .5) {
  4538. result.s = (max - min) / (max + min);
  4539. } else {
  4540. result.s = (max - min) / (2 - max - min);
  4541. }
  4542. //格式化hsl结果
  4543. result.h = Math.round(result.h);
  4544. result.s = Math.round(result.s * 100);
  4545. result.l = Math.round(result.l * 100);
  4546. return result;
  4547. },
  4548. toString: function toString(colorValue, type) {
  4549. var vals = [];
  4550. colorValue = Utils.extend({}, colorValue);
  4551. if (type.indexOf("hsl") !== -1) {
  4552. colorValue.s += "%";
  4553. colorValue.l += "%";
  4554. }
  4555. if (type !== "hex") {
  4556. Utils.each(type.split(""), function (key) {
  4557. vals.push(colorValue[key]);
  4558. });
  4559. return (type + "(" + vals.join(", ") + ")").toLowerCase();
  4560. } else {
  4561. vals.push(ColorUtils.toHexValue(+colorValue.r));
  4562. vals.push(ColorUtils.toHexValue(+colorValue.g));
  4563. vals.push(ColorUtils.toHexValue(+colorValue.b));
  4564. return ("#" + vals.join("")).toLowerCase();
  4565. }
  4566. },
  4567. //16进制的2个数字转化为10进制, 如果转化失败, 返回0
  4568. toNumber: function toNumber(value) {
  4569. return Number("0x" + value) | 0;
  4570. },
  4571. toHexValue: function toHexValue(value) {
  4572. var result = value.toString(16);
  4573. return result.length === 1 ? "0" + result : result;
  4574. },
  4575. //溢出控制
  4576. overflowFormat: function overflowFormat(value) {
  4577. var tmpValue = Utils.extend({}, value),
  4578. keys = "rgba";
  4579. Utils.each(keys.split(""), function (key) {
  4580. if (!tmpValue.hasOwnProperty(key)) {
  4581. return;
  4582. }
  4583. //上溢出
  4584. tmpValue[key] = Math.min(Color._MAX_VALUE[key], tmpValue[key]);
  4585. //下溢出
  4586. tmpValue[key] = Math.max(Color._MIN_VALUE[key], tmpValue[key]);
  4587. });
  4588. return tmpValue;
  4589. }
  4590. });
  4591. return Color;
  4592. }
  4593. };
  4594. //src/graphic/container.js
  4595. _p[30] = {
  4596. value: function value(require, exports, module) {
  4597. function itemRemove() {
  4598. this.container.removeItem(this);
  4599. return this;
  4600. }
  4601. return _p.r(11).createClass("Container", {
  4602. getItems: function getItems() {
  4603. return this.items || (this.items = []);
  4604. },
  4605. getItem: function getItem(index) {
  4606. return this.getItems()[index];
  4607. },
  4608. getFirstItem: function getFirstItem() {
  4609. return this.getItem(0);
  4610. },
  4611. getLastItem: function getLastItem() {
  4612. return this.getItem(this.getItems().length - 1);
  4613. },
  4614. indexOf: function indexOf(item) {
  4615. return this.getItems().indexOf(item);
  4616. },
  4617. eachItem: function eachItem(fn) {
  4618. var items = this.getItems(),
  4619. length = items.length,
  4620. i;
  4621. for (i = 0; i < length; i++) {
  4622. fn.call(this, i, items[i]);
  4623. }
  4624. return this;
  4625. },
  4626. addItem: function addItem(item, pos, noEvent) {
  4627. var items = this.getItems(),
  4628. length = items.length;
  4629. if (~items.indexOf(item)) {
  4630. return this;
  4631. }
  4632. if (!(pos >= 0 && pos < length)) {
  4633. pos = length;
  4634. }
  4635. items.splice(pos, 0, item);
  4636. if ((typeof item === "undefined" ? "undefined" : _typeof(item)) === "object") {
  4637. item.container = this;
  4638. item.remove = itemRemove;
  4639. }
  4640. this.handleAdd(item, pos);
  4641. if (!noEvent) {
  4642. this.onContainerChanged("add", [item]);
  4643. }
  4644. return this;
  4645. },
  4646. addItems: function addItems(items) {
  4647. for (var i = 0, l = items.length; i < l; i++) {
  4648. this.addItem(items[i], -1, true);
  4649. }
  4650. this.onContainerChanged("add", items);
  4651. return this;
  4652. },
  4653. setItems: function setItems(items) {
  4654. return this.clear().addItems(items);
  4655. },
  4656. appendItem: function appendItem(item) {
  4657. return this.addItem(item);
  4658. },
  4659. prependItem: function prependItem(item) {
  4660. return this.addItem(item, 0);
  4661. },
  4662. removeItem: function removeItem(pos, noEvent) {
  4663. if (typeof pos !== "number") {
  4664. return this.removeItem(this.indexOf(pos));
  4665. }
  4666. var items = this.getItems(),
  4667. length = items.length,
  4668. item = items[pos];
  4669. if (item === undefined) {
  4670. return this;
  4671. }
  4672. items.splice(pos, 1);
  4673. if (item.container) {
  4674. delete item.container;
  4675. }
  4676. if (item.remove) {
  4677. delete item.remove;
  4678. }
  4679. this.handleRemove(item, pos);
  4680. if (!noEvent) {
  4681. this.onContainerChanged("remove", [item]);
  4682. }
  4683. return this;
  4684. },
  4685. clear: function clear() {
  4686. var removed = [];
  4687. var item;
  4688. while (item = this.getFirstItem()) {
  4689. removed.push(item);
  4690. this.removeItem(0, true);
  4691. }
  4692. this.onContainerChanged("remove", removed);
  4693. return this;
  4694. },
  4695. onContainerChanged: function onContainerChanged(type, items) {},
  4696. handleAdd: function handleAdd(item, index) {},
  4697. handleRemove: function handleRemove(item, index) {}
  4698. });
  4699. }
  4700. };
  4701. //src/graphic/curve.js
  4702. /*
  4703. * 曲线
  4704. * */
  4705. _p[31] = {
  4706. value: function value(require, exports, module) {
  4707. var Utils = _p.r(12),
  4708. CurveUtil = {
  4709. /*
  4710. * 获取由两个以上的点组成的曲线的平移线
  4711. * @param points 曲线上的点的集合, 集合中的点的数量必须大于2
  4712. * @return 平移线数组
  4713. */
  4714. getCurvePanLines: function getCurvePanLines(points, smoothFactor) {
  4715. //计算原始点的中点坐标
  4716. var centerPoints = CurveUtil.getCenterPoints(points),
  4717. //注意:计算中点连线的中点坐标, 得出平移线
  4718. panLines = CurveUtil.getPanLine(points.length, centerPoints);
  4719. //平移线移动到顶点
  4720. return CurveUtil.getMovedPanLines(points, panLines, smoothFactor);
  4721. },
  4722. /*
  4723. * 计算给定点集合的连线的中点
  4724. * @param points
  4725. */
  4726. getCenterPoints: function getCenterPoints(points) {
  4727. var centerPoints = {},
  4728. key = null;
  4729. for (var i = 0, j = 0, len = points.length; i < len; i++) {
  4730. //j是下一个点的索引
  4731. j = i === len - 1 ? 0 : i + 1;
  4732. key = i + "," + j;
  4733. //计算中点坐标
  4734. centerPoints[key] = {
  4735. x: (points[i].x + points[j].y) / 2,
  4736. y: (points[i].x + points[j].y) / 2
  4737. };
  4738. }
  4739. return centerPoints;
  4740. },
  4741. /*
  4742. * 对getCenterPoints()接口获取到的数据做处理, 计算出各个顶点对应的平移线数据
  4743. * @param length 集合中点的个数
  4744. * @param points 点集合, 该集合应该是getCenterPoints()接口返回的数据
  4745. */
  4746. getPanLine: function getPanLine(length, points) {
  4747. var result = {},
  4748. //顶点索引
  4749. pointIndex = null;
  4750. for (var i = 0, j; i < length; i++) {
  4751. var point1 = null,
  4752. point2 = null;
  4753. //计算当前点
  4754. j = (i + 1) % length;
  4755. //保存当前处理的顶点索引
  4756. pointIndex = j;
  4757. point1 = points[i + "," + j];
  4758. //计算下一个点
  4759. i = j;
  4760. j = (i + 1) % length;
  4761. point2 = points[i + "," + j];
  4762. result[pointIndex] = {
  4763. points: [{
  4764. x: point1.x,
  4765. y: point1.y
  4766. }, {
  4767. x: point2.x,
  4768. y: point2.y
  4769. }],
  4770. center: {
  4771. x: (point1.x + point2.x) / 2,
  4772. y: (point1.y + point2.y) / 2
  4773. }
  4774. };
  4775. //还原i值
  4776. i = (pointIndex + length - 1) % length;
  4777. }
  4778. return result;
  4779. },
  4780. /*
  4781. * 计算平移线移动到顶点后的位置
  4782. * @param points 顶点集合
  4783. * @param panLines 平移线集合
  4784. */
  4785. getMovedPanLines: function getMovedPanLines(points, panLines, smoothFactor) {
  4786. var result = {};
  4787. Utils.each(points, function (point, index) {
  4788. //当前平移线
  4789. var currentPanLine = panLines[index],
  4790. //平移线中点
  4791. center = currentPanLine.center,
  4792. //移动距离
  4793. distance = {
  4794. x: center.x - point.x,
  4795. y: center.y - point.y
  4796. };
  4797. var currentResult = result[index] = {
  4798. points: [],
  4799. center: {
  4800. x: point.x,
  4801. y: point.y
  4802. }
  4803. };
  4804. //计算控制点到顶点的距离, 并且应用平滑系数到距离上
  4805. Utils.each(currentPanLine.points, function (controlPoint, index) {
  4806. var moved = {
  4807. x: controlPoint.x - distance.x,
  4808. y: controlPoint.y - distance.y
  4809. };
  4810. var vertex = currentResult.center;
  4811. var dx = moved.x - vertex.x;
  4812. var dy = moved.y - vertex.y;
  4813. moved.x = vertex.x + smoothFactor * dx;
  4814. moved.y = vertex.y + smoothFactor * dy;
  4815. currentResult.points.push(moved);
  4816. });
  4817. });
  4818. return result;
  4819. }
  4820. };
  4821. return _p.r(11).createClass("Curve", {
  4822. base: _p.r(47),
  4823. mixins: [_p.r(52)],
  4824. constructor: function constructor(points, isColse) {
  4825. this.callBase();
  4826. this.setPoints(points || []);
  4827. this.closeState = !!isColse;
  4828. this.changeable = true;
  4829. this.smoothFactor = 1;
  4830. this.update();
  4831. },
  4832. //当点集合发生变化时采取的动作
  4833. onContainerChanged: function onContainerChanged() {
  4834. if (this.changeable) {
  4835. this.update();
  4836. }
  4837. },
  4838. setSmoothFactor: function setSmoothFactor(factor) {
  4839. this.smoothFactor = factor < 0 ? 0 : factor;
  4840. this.update();
  4841. return this;
  4842. },
  4843. getSmoothFactor: function getSmoothFactor() {
  4844. return this.smoothFactor;
  4845. },
  4846. update: function update() {
  4847. var points = this.getPoints(),
  4848. withControlPoints = null,
  4849. drawer = this.getDrawer(),
  4850. curPoint = null,
  4851. curControlPoint = null,
  4852. prevControlPoint = null;
  4853. drawer.clear();
  4854. if (points.length === 0) {
  4855. return this;
  4856. } else {
  4857. drawer.moveTo(points[0]);
  4858. }
  4859. if (points.length === 1) {
  4860. return this;
  4861. }
  4862. if (points.length === 2) {
  4863. drawer.lineTo(points[1]);
  4864. return this;
  4865. }
  4866. //获取已转换过后的带控制点的所有点
  4867. withControlPoints = CurveUtil.getCurvePanLines(points, this.getSmoothFactor());
  4868. for (var i = 1, len = points.length; i < len; i++) {
  4869. //当前顶点
  4870. curPoint = withControlPoints[i].center;
  4871. //当前控制点
  4872. if (this.closeState || i != len - 1) {
  4873. curControlPoint = withControlPoints[i].points[0];
  4874. } else {
  4875. //非闭合状态下最后一个点的处理
  4876. curControlPoint = withControlPoints[i].center;
  4877. }
  4878. if (this.closeState || i != 1) {
  4879. prevControlPoint = withControlPoints[i - 1].points[1];
  4880. } else {
  4881. //非闭合状态下第一个点的处理
  4882. prevControlPoint = withControlPoints[i - 1].center;
  4883. }
  4884. drawer.bezierTo(prevControlPoint.x, prevControlPoint.y, curControlPoint.x, curControlPoint.y, curPoint.x, curPoint.y);
  4885. }
  4886. //处理闭合
  4887. if (this.closeState) {
  4888. curPoint = withControlPoints[0].center;
  4889. curControlPoint = withControlPoints[0].points[0];
  4890. prevControlPoint = withControlPoints[points.length - 1].points[1];
  4891. drawer.bezierTo(prevControlPoint.x, prevControlPoint.y, curControlPoint.x, curControlPoint.y, curPoint.x, curPoint.y);
  4892. }
  4893. return this;
  4894. },
  4895. close: function close() {
  4896. this.closeState = true;
  4897. return this.update();
  4898. },
  4899. open: function open() {
  4900. this.closeState = false;
  4901. return this.update();
  4902. },
  4903. isClose: function isClose() {
  4904. return !!this.closeState;
  4905. }
  4906. });
  4907. }
  4908. };
  4909. //src/graphic/data.js
  4910. _p[32] = {
  4911. value: function value(require, exports, module) {
  4912. return _p.r(11).createClass("Data", {
  4913. constructor: function constructor() {
  4914. this._data = {};
  4915. },
  4916. setData: function setData(name, value) {
  4917. this._data[name] = value;
  4918. return this;
  4919. },
  4920. getData: function getData(name) {
  4921. return this._data[name];
  4922. },
  4923. removeData: function removeData(name) {
  4924. delete this._data[name];
  4925. return this;
  4926. }
  4927. });
  4928. }
  4929. };
  4930. //src/graphic/ellipse.js
  4931. _p[33] = {
  4932. value: function value(require, exports, module) {
  4933. var Utils = _p.r(12),
  4934. Point = _p.r(51);
  4935. return _p.r(11).createClass("Ellipse", {
  4936. base: _p.r(47),
  4937. constructor: function constructor(rx, ry, cx, cy) {
  4938. this.callBase();
  4939. this.rx = rx || 0;
  4940. this.ry = ry || 0;
  4941. this.cx = cx || 0;
  4942. this.cy = cy || 0;
  4943. this.update();
  4944. },
  4945. update: function update() {
  4946. var rx = this.rx,
  4947. ry = this.ry,
  4948. x1 = this.cx + rx,
  4949. x2 = this.cx - rx,
  4950. y = this.cy;
  4951. var drawer = this.getDrawer();
  4952. drawer.clear();
  4953. drawer.moveTo(x1, y);
  4954. drawer.arcTo(rx, ry, 0, 1, 1, x2, y);
  4955. drawer.arcTo(rx, ry, 0, 1, 1, x1, y);
  4956. return this;
  4957. },
  4958. getRadius: function getRadius() {
  4959. return {
  4960. x: this.rx,
  4961. y: this.ry
  4962. };
  4963. },
  4964. getRadiusX: function getRadiusX() {
  4965. return this.rx;
  4966. },
  4967. getRadiusY: function getRadiusY() {
  4968. return this.ry;
  4969. },
  4970. getCenter: function getCenter() {
  4971. return new Point(this.cx, this.cy);
  4972. },
  4973. getCenterX: function getCenterX() {
  4974. return this.cx;
  4975. },
  4976. getCenterY: function getCenterY() {
  4977. return this.cy;
  4978. },
  4979. setRadius: function setRadius(rx, ry) {
  4980. this.rx = rx;
  4981. this.ry = ry;
  4982. return this.update();
  4983. },
  4984. setRadiusX: function setRadiusX(rx) {
  4985. this.rx = rx;
  4986. return this.update();
  4987. },
  4988. setRadiusY: function setRadiusY(ry) {
  4989. this.ry = ry;
  4990. return this.update();
  4991. },
  4992. setCenter: function setCenter(cx, cy) {
  4993. if (arguments.length == 1) {
  4994. var p = Point.parse(arguments[0]);
  4995. cx = p.x;
  4996. cy = p.y;
  4997. }
  4998. this.cx = cx;
  4999. this.cy = cy;
  5000. return this.update();
  5001. },
  5002. setCenterX: function setCenterX(cx) {
  5003. this.cx = cx;
  5004. return this.update();
  5005. },
  5006. setCenterY: function setCenterY(cy) {
  5007. this.cy = cy;
  5008. return this.update();
  5009. }
  5010. });
  5011. }
  5012. };
  5013. //src/graphic/eventhandler.js
  5014. /*
  5015. * kity event 实现
  5016. */
  5017. _p[34] = {
  5018. value: function value(require, exports, module) {
  5019. // polyfill
  5020. (function () {
  5021. function CustomEvent(event, params) {
  5022. params = params || {
  5023. bubbles: false,
  5024. cancelable: false,
  5025. detail: undefined
  5026. };
  5027. var evt = document.createEvent("CustomEvent");
  5028. evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
  5029. return evt;
  5030. }
  5031. CustomEvent.prototype = window.Event.prototype;
  5032. window.CustomEvent = CustomEvent;
  5033. })();
  5034. var Utils = _p.r(12),
  5035. ShapeEvent = _p.r(63);
  5036. // 内部处理器缓存
  5037. var INNER_HANDLER_CACHE = {},
  5038. // 用户处理器缓存
  5039. USER_HANDLER_CACHE = {},
  5040. guid = 0;
  5041. // 添加事件统一入口
  5042. function _addEvent(type, handler, isOnce) {
  5043. isOnce = !!isOnce;
  5044. if (Utils.isString(type)) {
  5045. type = type.match(/\S+/g);
  5046. }
  5047. Utils.each(type, function (currentType) {
  5048. listen.call(this, this.node, currentType, handler, isOnce);
  5049. }, this);
  5050. return this;
  5051. }
  5052. // 移除事件统一入口
  5053. function _removeEvent(type, handler) {
  5054. var userHandlerList = null,
  5055. eventId = this._EVNET_UID,
  5056. isRemoveAll = handler === undefined;
  5057. userHandlerList = USER_HANDLER_CACHE[eventId][type];
  5058. //移除指定的监听器
  5059. if (!isRemoveAll) {
  5060. isRemoveAll = true;
  5061. Utils.each(userHandlerList, function removeKityEvent(fn, index) {
  5062. if (fn === handler) {
  5063. // 不能结束, 需要查找完整个list, 避免丢失移除多次绑定同一个处理器的情况
  5064. delete userHandlerList[index];
  5065. } else {
  5066. isRemoveAll = false;
  5067. }
  5068. });
  5069. }
  5070. //删除所有监听器
  5071. if (isRemoveAll) {
  5072. deleteDomEvent(this.node, type, INNER_HANDLER_CACHE[eventId][type]);
  5073. delete USER_HANDLER_CACHE[eventId][type];
  5074. delete INNER_HANDLER_CACHE[eventId][type];
  5075. }
  5076. return this;
  5077. }
  5078. // 执行绑定, 该方法context为shape或者mixin了eventhandler的对象
  5079. function listen(node, type, handler, isOnce) {
  5080. var eid = this._EVNET_UID,
  5081. targetObject = this;
  5082. // 初始化内部监听器
  5083. if (!INNER_HANDLER_CACHE[eid]) {
  5084. INNER_HANDLER_CACHE[eid] = {};
  5085. }
  5086. if (!INNER_HANDLER_CACHE[eid][type]) {
  5087. // 内部监听器
  5088. INNER_HANDLER_CACHE[eid][type] = function kityEventHandler(e) {
  5089. e = new ShapeEvent(e || window.event);
  5090. Utils.each(USER_HANDLER_CACHE[eid][type], function executeKityEvent(fn) {
  5091. var result;
  5092. if (fn) {
  5093. result = fn.call(targetObject, e);
  5094. //once 绑定, 执行完后删除
  5095. if (isOnce) {
  5096. targetObject.off(type, fn);
  5097. }
  5098. }
  5099. // 如果用户handler里return了false, 则该节点上的此后的同类型事件将不再执行
  5100. return result;
  5101. }, targetObject);
  5102. };
  5103. }
  5104. // 初始化用户监听器列表
  5105. if (!USER_HANDLER_CACHE[eid]) {
  5106. USER_HANDLER_CACHE[eid] = {};
  5107. }
  5108. if (!USER_HANDLER_CACHE[eid][type]) {
  5109. USER_HANDLER_CACHE[eid][type] = [handler];
  5110. // 绑定对应类型的事件
  5111. // dom对象利用dom event进行处理, 非dom对象, 由消息分发机制处理
  5112. if (!!node && "on" + type in node) {
  5113. bindDomEvent(node, type, INNER_HANDLER_CACHE[eid][type]);
  5114. }
  5115. } else {
  5116. USER_HANDLER_CACHE[eid][type].push(handler);
  5117. }
  5118. }
  5119. // 绑定dom事件
  5120. function bindDomEvent(node, type, handler) {
  5121. if (node.addEventListener) {
  5122. node.addEventListener(type, handler, false);
  5123. } else {
  5124. node.attachEvent("on" + type, handler);
  5125. }
  5126. }
  5127. // 删除dom事件
  5128. function deleteDomEvent(node, type, handler) {
  5129. if (node.removeEventListener) {
  5130. node.removeEventListener(type, handler, false);
  5131. } else {
  5132. node.detachEvent(type, handler);
  5133. }
  5134. }
  5135. // 触发dom事件
  5136. function triggerDomEvent(node, type, params) {
  5137. var event = new CustomEvent(type, {
  5138. bubbles: true,
  5139. cancelable: true
  5140. });
  5141. event._kityParam = params;
  5142. node.dispatchEvent(event);
  5143. }
  5144. // 发送消息
  5145. function sendMessage(messageObj, type, msg) {
  5146. var event = null,
  5147. handler = null;
  5148. var handlers = INNER_HANDLER_CACHE[messageObj._EVNET_UID];
  5149. if (!handlers) return;
  5150. handler = handlers[type];
  5151. if (!handler) {
  5152. return;
  5153. }
  5154. event = Utils.extend({
  5155. type: type,
  5156. target: messageObj
  5157. }, msg || {});
  5158. handler.call(messageObj, event);
  5159. }
  5160. // 对外接口
  5161. return _p.r(11).createClass("EventHandler", {
  5162. constructor: function constructor() {
  5163. this._EVNET_UID = ++guid;
  5164. },
  5165. addEventListener: function addEventListener(type, handler) {
  5166. return _addEvent.call(this, type, handler, false);
  5167. },
  5168. addOnceEventListener: function addOnceEventListener(type, handler) {
  5169. return _addEvent.call(this, type, handler, true);
  5170. },
  5171. removeEventListener: function removeEventListener(type, handler) {
  5172. return _removeEvent.call(this, type, handler);
  5173. },
  5174. on: function on(type, handler) {
  5175. return this.addEventListener.apply(this, arguments);
  5176. },
  5177. once: function once(type, handler) {
  5178. return this.addOnceEventListener.apply(this, arguments);
  5179. },
  5180. off: function off() {
  5181. return this.removeEventListener.apply(this, arguments);
  5182. },
  5183. fire: function fire(type, params) {
  5184. return this.trigger.apply(this, arguments);
  5185. },
  5186. trigger: function trigger(type, params) {
  5187. sendMessage(this, type, params);
  5188. return this;
  5189. }
  5190. });
  5191. }
  5192. };
  5193. //src/graphic/geometry.js
  5194. _p[35] = {
  5195. value: function value(require) {
  5196. var utils = _p.r(12);
  5197. var Point = _p.r(51);
  5198. var Vector = _p.r(74);
  5199. var Matrix = _p.r(44);
  5200. var g = {};
  5201. var pathCommand = /([achlmrqstvz])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?\s*)+)/gi,
  5202. pathValues = /(-?\d*\.?\d*(?:e[\-+]?\d+)?)\s*,?\s*/gi,
  5203. paramCounts = {
  5204. a: 7,
  5205. c: 6,
  5206. h: 1,
  5207. l: 2,
  5208. m: 2,
  5209. q: 4,
  5210. s: 4,
  5211. t: 2,
  5212. v: 1,
  5213. z: 0
  5214. };
  5215. function pathClone(path) {
  5216. var result, i, j, segment, segmentCopy;
  5217. result = [];
  5218. for (i = 0; i < path.length; i++) {
  5219. segment = path[i];
  5220. result.push(segmentCopy = []);
  5221. for (j = 0; j < segment.length; j++) {
  5222. segmentCopy.push(segment[j]);
  5223. }
  5224. }
  5225. if (path.isUniform) result.isUniform = true;
  5226. if (path.isAbsolute) result.isAbsolute = true;
  5227. if (path.isCurve) result.isCurve = true;
  5228. return result;
  5229. }
  5230. // 缓存函数
  5231. // from raphael.js
  5232. function cacher(f, scope, postprocessor) {
  5233. function repush(array, item) {
  5234. for (var i = 0, ii = array.length; i < ii; i++) {
  5235. if (array[i] === item) {
  5236. return array.push(array.splice(i, 1)[0]);
  5237. }
  5238. }
  5239. }
  5240. function newf() {
  5241. var arg = Array.prototype.slice.call(arguments, 0),
  5242. args = arg.join("␀"),
  5243. cache = newf.cache = newf.cache || {},
  5244. count = newf.count = newf.count || [];
  5245. if (cache.hasOwnProperty(args)) {
  5246. repush(count, args);
  5247. return postprocessor ? postprocessor(cache[args]) : cache[args];
  5248. }
  5249. if (count.length >= 1e3) {
  5250. delete cache[count.shift()];
  5251. }
  5252. count.push(args);
  5253. cache[args] = f.apply(scope, arg);
  5254. return postprocessor ? postprocessor(cache[args]) : cache[args];
  5255. }
  5256. return newf;
  5257. }
  5258. /**
  5259. *
  5260. * kity.g.pathToString(pathSegment)
  5261. *
  5262. * 返回表示 PathSegment 的字符串
  5263. *
  5264. * @param {Array} pathSegment
  5265. * 要表示的 Path Segment
  5266. *
  5267. * @return {String} 表示该 Path 的字符串
  5268. *
  5269. * @example
  5270. *
  5271. * var pathSegment = [['M', 0, 0], ['L', 10, 10]]
  5272. * var pathString = kity.g.pathToString(pathSegment);
  5273. * // 返回 'M0,0L10,10'
  5274. */
  5275. g.pathToString = function (pathSegment) {
  5276. pathSegment = pathSegment || this;
  5277. if (typeof pathSegment == "string") return pathSegment;
  5278. if (pathSegment instanceof Array) {
  5279. pathSegment = utils.flatten(pathSegment);
  5280. return pathSegment.join(",").replace(/,?([achlmqrstvxz]),?/gi, "$1");
  5281. }
  5282. };
  5283. /**
  5284. * kity.g.parsePathString(pathString)
  5285. *
  5286. * 解析 Path 字符串成 PathSegment
  5287. *
  5288. * @copyright rapheal.js
  5289. *
  5290. * @example
  5291. *
  5292. * var seg = kity.g.parsePathString('M10,12l21-23-21.5,11z');
  5293. * // 返回: [['M', 10, 12], ['l', 21, -23], ['l', -21.5, 11], ['z']]
  5294. *
  5295. * @param {String} pathString Path 字符串
  5296. * @return {Array}
  5297. */
  5298. g.parsePathString = cacher(function (pathString) {
  5299. var data = [];
  5300. pathString.replace(pathCommand, function (a, b, c) {
  5301. var params = [],
  5302. name = b.toLowerCase();
  5303. c.replace(pathValues, function (a, b) {
  5304. if (b) params.push(+b);
  5305. });
  5306. if (name == "m" && params.length > 2) {
  5307. data.push([b].concat(params.splice(0, 2)));
  5308. name = "l";
  5309. b = b == "m" ? "l" : "L";
  5310. }
  5311. if (name == "r") {
  5312. data.push([b].concat(params));
  5313. } else {
  5314. while (params.length >= paramCounts[name]) {
  5315. data.push([b].concat(params.splice(0, paramCounts[name])));
  5316. if (!paramCounts[name]) {
  5317. break;
  5318. }
  5319. }
  5320. }
  5321. });
  5322. data.isUniform = true;
  5323. data.toString = g.pathToString;
  5324. return data;
  5325. });
  5326. /**
  5327. * kity.g.pathToAbsolute(path)
  5328. *
  5329. * 把路径转换为绝对路径的形式
  5330. *
  5331. * @param {Array|String} path
  5332. * 要转换的 path 路径或者数组
  5333. *
  5334. * @return {Array}
  5335. * 转换后的 Path Segment
  5336. *
  5337. * @example
  5338. *
  5339. * var path = 'M10,10l50,50';
  5340. * var absPath = kity.g.pathToAbsolute(path);
  5341. * // 返回 [['M', 10, 10], ['L', 60, 60]]
  5342. */
  5343. g.pathToAbsolute = cacher(function (path) {
  5344. var pathArray = path.isUniform ? path : g.parsePathString(g.pathToString(path));
  5345. var res = [],
  5346. x = 0,
  5347. y = 0,
  5348. mx = 0,
  5349. my = 0,
  5350. start = 0;
  5351. var r, pa, i, j, k, ii, jj, kk;
  5352. if (pathArray[0][0] == "M") {
  5353. x = +pathArray[0][1];
  5354. y = +pathArray[0][2];
  5355. mx = x;
  5356. my = y;
  5357. start++;
  5358. res[0] = ["M", x, y];
  5359. }
  5360. for (r, pa, i = start, ii = pathArray.length; i < ii; i++) {
  5361. res.push(r = []);
  5362. pa = pathArray[i];
  5363. if (pa[0] != pa[0].toUpperCase()) {
  5364. r[0] = pa[0].toUpperCase();
  5365. switch (r[0]) {
  5366. case "A":
  5367. r[1] = pa[1];
  5368. r[2] = pa[2];
  5369. r[3] = pa[3];
  5370. r[4] = pa[4];
  5371. r[5] = pa[5];
  5372. r[6] = +(pa[6] + x);
  5373. r[7] = +(pa[7] + y);
  5374. break;
  5375. case "V":
  5376. r[1] = +pa[1] + y;
  5377. break;
  5378. case "H":
  5379. r[1] = +pa[1] + x;
  5380. break;
  5381. case "M":
  5382. mx = +pa[1] + x;
  5383. my = +pa[2] + y;
  5384. break;
  5385. default:
  5386. for (j = 1, jj = pa.length; j < jj; j++) {
  5387. r[j] = +pa[j] + (j % 2 ? x : y);
  5388. }
  5389. }
  5390. } else {
  5391. for (k = 0, kk = pa.length; k < kk; k++) {
  5392. r[k] = pa[k];
  5393. }
  5394. }
  5395. switch (r[0]) {
  5396. case "Z":
  5397. x = mx;
  5398. y = my;
  5399. break;
  5400. case "H":
  5401. x = r[1];
  5402. break;
  5403. case "V":
  5404. y = r[1];
  5405. break;
  5406. case "M":
  5407. mx = r[r.length - 2];
  5408. my = r[r.length - 1];
  5409. break;
  5410. default:
  5411. x = r[r.length - 2];
  5412. y = r[r.length - 1];
  5413. }
  5414. }
  5415. res.isUniform = true;
  5416. res.isAbsolute = true;
  5417. res.toString = g.pathToString;
  5418. return res;
  5419. });
  5420. // 把圆弧绘制的曲线转化为对应的三次贝塞尔形式
  5421. function a2c(x1, y1, rx, ry, angle, laf, sf, x2, y2, recursive) {
  5422. // copy from raphael.js
  5423. // for more information of where this math came from visit:
  5424. // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
  5425. var math = Math,
  5426. PI = math.PI,
  5427. abs = Math.abs,
  5428. _120 = PI * 120 / 180,
  5429. rad = PI / 180 * (+angle || 0),
  5430. res = [],
  5431. xy,
  5432. rotate = function rotate(x, y, rad) {
  5433. var X = x * math.cos(rad) - y * math.sin(rad),
  5434. Y = x * math.sin(rad) + y * math.cos(rad);
  5435. return {
  5436. x: X,
  5437. y: Y
  5438. };
  5439. };
  5440. var cos, sin, h, x, y, rx2, ry2, k, cx, cy, f1, f2, df, f2old, x2old, y2old, c1, s1, c2, s2, t, hx, hy, m1, m2, m3, m4, newres, i, ii;
  5441. if (!recursive) {
  5442. xy = rotate(x1, y1, -rad);
  5443. x1 = xy.x;
  5444. y1 = xy.y;
  5445. xy = rotate(x2, y2, -rad);
  5446. x2 = xy.x;
  5447. y2 = xy.y;
  5448. cos = math.cos(PI / 180 * angle);
  5449. sin = math.sin(PI / 180 * angle);
  5450. x = (x1 - x2) / 2;
  5451. y = (y1 - y2) / 2;
  5452. h = x * x / (rx * rx) + y * y / (ry * ry);
  5453. if (h > 1) {
  5454. h = math.sqrt(h);
  5455. rx = h * rx;
  5456. ry = h * ry;
  5457. }
  5458. rx2 = rx * rx;
  5459. ry2 = ry * ry;
  5460. k = (laf == sf ? -1 : 1) * math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));
  5461. cx = k * rx * y / ry + (x1 + x2) / 2;
  5462. cy = k * -ry * x / rx + (y1 + y2) / 2;
  5463. f1 = math.asin(((y1 - cy) / ry).toFixed(9));
  5464. f2 = math.asin(((y2 - cy) / ry).toFixed(9));
  5465. f1 = x1 < cx ? PI - f1 : f1;
  5466. f2 = x2 < cx ? PI - f2 : f2;
  5467. if (f1 < 0) f1 = PI * 2 + f1;
  5468. if (f2 < 0) f2 = PI * 2 + f2;
  5469. if (sf && f1 > f2) {
  5470. f1 = f1 - PI * 2;
  5471. }
  5472. if (!sf && f2 > f1) {
  5473. f2 = f2 - PI * 2;
  5474. }
  5475. } else {
  5476. f1 = recursive[0];
  5477. f2 = recursive[1];
  5478. cx = recursive[2];
  5479. cy = recursive[3];
  5480. }
  5481. df = f2 - f1;
  5482. if (abs(df) > _120) {
  5483. f2old = f2;
  5484. x2old = x2;
  5485. y2old = y2;
  5486. f2 = f1 + _120 * (sf && f2 > f1 ? 1 : -1);
  5487. x2 = cx + rx * math.cos(f2);
  5488. y2 = cy + ry * math.sin(f2);
  5489. res = a2c(x2, y2, rx, ry, angle, 0, sf, x2old, y2old, [f2, f2old, cx, cy]);
  5490. }
  5491. df = f2 - f1;
  5492. c1 = math.cos(f1);
  5493. s1 = math.sin(f1);
  5494. c2 = math.cos(f2);
  5495. s2 = math.sin(f2);
  5496. t = math.tan(df / 4);
  5497. hx = 4 / 3 * rx * t;
  5498. hy = 4 / 3 * ry * t;
  5499. m1 = [x1, y1];
  5500. m2 = [x1 + hx * s1, y1 - hy * c1];
  5501. m3 = [x2 + hx * s2, y2 - hy * c2];
  5502. m4 = [x2, y2];
  5503. m2[0] = 2 * m1[0] - m2[0];
  5504. m2[1] = 2 * m1[1] - m2[1];
  5505. if (recursive) {
  5506. return [m2, m3, m4].concat(res);
  5507. } else {
  5508. res = [m2, m3, m4].concat(res).join().split(",");
  5509. newres = [];
  5510. for (i = 0, ii = res.length; i < ii; i++) {
  5511. newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;
  5512. }
  5513. return newres;
  5514. }
  5515. }
  5516. // 把二次贝塞尔曲线参数转化为三次贝塞尔曲线参数
  5517. function q2c(x1, y1, ax, ay, x2, y2) {
  5518. // copy from raphael.js
  5519. var _13 = 1 / 3,
  5520. _23 = 2 / 3;
  5521. return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];
  5522. }
  5523. /**
  5524. * kity.g.pathToCurve(path)
  5525. *
  5526. * 把路径转换为贝塞尔路径
  5527. *
  5528. * @param {Array|String} path
  5529. * 要转换的 path 路径或数组
  5530. *
  5531. * @return {Array}
  5532. * 转换后的 PathSegment,每一段都是 'C'
  5533. */
  5534. g.pathToCurve = cacher(function (path) {
  5535. var i, j, command, param;
  5536. var initPoint, currentPoint, endPoint, shouldClose, lastControlPoint, aussumedControlPoint;
  5537. var controlPoint1, controlPoint2;
  5538. var res = [];
  5539. // 处理的路径要求是一个绝对路径
  5540. if (!path.isAbsolute) path = g.pathToAbsolute(path);
  5541. for (i = 0; i < path.length; i++) {
  5542. command = path[i][0];
  5543. param = path[i].slice(1);
  5544. // 画笔移动
  5545. if (command == "M") {
  5546. initPoint = lastControlPoint = currentPoint = param;
  5547. res.push(path[i]);
  5548. continue;
  5549. }
  5550. // 路径闭合
  5551. if (command == "Z") {
  5552. shouldClose = true;
  5553. command = "L";
  5554. param = initPoint;
  5555. }
  5556. // 绘制命令的目的位置
  5557. endPoint = param.slice(param.length - 2);
  5558. // 对 'H' 命令的修正
  5559. if (command == "H") {
  5560. endPoint = [param[0], currentPoint[1]];
  5561. command = "L";
  5562. }
  5563. // 对 'V' 命令的修正
  5564. if (command == "V") {
  5565. endPoint = [currentPoint[0], param[0]];
  5566. command = "L";
  5567. }
  5568. // 对 'S' 命令求出隐含的控制点位置
  5569. if (command == "S" || command == "T") {
  5570. // 隐含控制点是上一个控制点关于当前位置的镜像
  5571. aussumedControlPoint = [currentPoint[0] + (currentPoint[0] - lastControlPoint[0]), currentPoint[1] + (currentPoint[1] - lastControlPoint[1])];
  5572. }
  5573. // 针对不同的命令求控制点
  5574. switch (command) {
  5575. case "L":
  5576. controlPoint1 = currentPoint;
  5577. controlPoint2 = endPoint;
  5578. break;
  5579. case "C":
  5580. controlPoint1 = param.slice(0, 2);
  5581. controlPoint2 = param.slice(2, 4);
  5582. break;
  5583. case "S":
  5584. controlPoint1 = aussumedControlPoint.slice();
  5585. controlPoint2 = param.slice(0, 2);
  5586. break;
  5587. case "Q":
  5588. lastControlPoint = param.slice(0, 2);
  5589. param = q2c.apply(null, currentPoint.concat(param));
  5590. controlPoint1 = param.slice(0, 2);
  5591. controlPoint2 = param.slice(2, 4);
  5592. break;
  5593. case "T":
  5594. param = q2c.apply(null, currentPoint.concat(aussumedControlPoint).concat(param));
  5595. controlPoint1 = param.slice(0, 2);
  5596. controlPoint2 = param.slice(2, 4);
  5597. break;
  5598. case "A":
  5599. param = a2c.apply(null, currentPoint.concat(param));
  5600. j = 0;
  5601. while (j in param) {
  5602. controlPoint1 = param.slice(j, j + 2);
  5603. controlPoint2 = param.slice(j + 2, j + 4);
  5604. endPoint = param.slice(j + 4, j + 6);
  5605. // 写入当前一段曲线
  5606. res.push(["C"].concat(controlPoint1).concat(controlPoint2).concat(endPoint));
  5607. j += 6;
  5608. }
  5609. break;
  5610. }
  5611. if (command != "A") {
  5612. // 写入当前一段曲线
  5613. res.push(["C"].concat(controlPoint1).concat(controlPoint2).concat(endPoint));
  5614. }
  5615. // 为下次循环准备当前位置
  5616. currentPoint = endPoint;
  5617. // 二次贝塞尔曲线自己已经记录了上个控制点的位置,其它的记录控制点 2 的位置
  5618. if (command != "Q") {
  5619. lastControlPoint = controlPoint2;
  5620. }
  5621. if (shouldClose) {
  5622. res.push(["Z"]);
  5623. shouldClose = false;
  5624. }
  5625. }
  5626. res.isUniform = true;
  5627. res.isAbsolute = true;
  5628. res.isCurve = true;
  5629. res.toString = g.pathToString;
  5630. return res;
  5631. });
  5632. /**
  5633. * 将贝塞尔曲线切成两部分
  5634. *
  5635. * @see http://stackoverflow.com/questions/18655135/divide-bezier-curve-into-two-equal-halves
  5636. */
  5637. function cutBezier(bezierArray, t) {
  5638. function __(t) {
  5639. return function (p, q) {
  5640. return p + t * (q - p);
  5641. };
  5642. }
  5643. var _ = __(t || .5),
  5644. ba = bezierArray,
  5645. ax = ba[0],
  5646. ay = ba[1],
  5647. bx = ba[2],
  5648. by = ba[3],
  5649. cx = ba[4],
  5650. cy = ba[5],
  5651. dx = ba[6],
  5652. dy = ba[7],
  5653. ex = _(ax, bx),
  5654. ey = _(ay, by),
  5655. fx = _(bx, cx),
  5656. fy = _(by, cy),
  5657. gx = _(cx, dx),
  5658. gy = _(cy, dy),
  5659. hx = _(ex, fx),
  5660. hy = _(ey, fy),
  5661. jx = _(fx, gx),
  5662. jy = _(fy, gy),
  5663. kx = _(hx, jx),
  5664. ky = _(hy, jy);
  5665. return [[ax, ay, ex, ey, hx, hy, kx, ky], [kx, ky, jx, jy, gx, gy, dx, dy]];
  5666. }
  5667. /**
  5668. * kity.g.cutBezier(bezierArray, t)
  5669. *
  5670. * 在指定位置把贝塞尔曲线切割为两部分
  5671. *
  5672. * @param {Array} bezierArray
  5673. * 表示贝塞尔曲线的一个数组 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y]
  5674. * p1 和 p2 是贝塞尔曲线的起点和终点,c1 和 c2 是两个控制点
  5675. *
  5676. * @param {Number} t
  5677. * 切割的位置(0 到 1)
  5678. *
  5679. * @return {Array}
  5680. * 切割的两个贝塞尔曲线:[
  5681. * [p1x1, p1y1, c1x1, c1y1, c2x1, c2y1, p2x1, p2y1],
  5682. * [p1x2, p1y2, c1x2, c1y2, c2x2, c2y2, p2x2, p2y2]
  5683. * ]
  5684. *
  5685. */
  5686. g.cutBezier = cacher(cutBezier);
  5687. /**
  5688. * 求一段贝塞尔曲线的子段
  5689. *
  5690. * @param {Array} bezierArray
  5691. * 长度为 8 的数组,表示 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y]
  5692. *
  5693. * @param {Number} t
  5694. * 子段的结束位置(0 到 1)
  5695. *
  5696. * @param {Number} t0
  5697. * 字段的开始位置(0 到 t),可不传,默认为 0
  5698. *
  5699. * @return {Array}
  5700. * 长度为 8 的数组,表示给定贝塞尔曲线的子段
  5701. */
  5702. g.subBezier = function (bezierArray, t, t0) {
  5703. var b2t = cutBezier(bezierArray, t)[0];
  5704. return t0 ? cutBezier(b2t, t0 / t)[1] : b2t;
  5705. };
  5706. /**
  5707. * 求贝塞尔曲线上的一个点
  5708. *
  5709. * @param {Array} bezierArray
  5710. * 长度为 8 的数组,表示 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y]
  5711. *
  5712. * @param {Number} t
  5713. * 所求点的开始位置(0 到 1)
  5714. *
  5715. * @return {Point} p
  5716. * p.x: x 坐标
  5717. * p.y: y 坐标
  5718. * p.tan: 在 t 处的切线方向(类型为 kity.Vector,模为 1)
  5719. */
  5720. g.pointAtBezier = function (bezierArray, t) {
  5721. var b2t = cutBezier(bezierArray, t)[0];
  5722. var p = Point.parse(b2t.slice(6)),
  5723. c = Point.parse(b2t.slice(4, 2)),
  5724. v = Vector.fromPoints(c, p);
  5725. if (t === 0) {
  5726. p.tan = g.pointAtBezier(bezierArray, .01).tan;
  5727. } else {
  5728. p.tan = v.normalize();
  5729. }
  5730. return p;
  5731. };
  5732. /**
  5733. * 求贝塞尔曲线的长度
  5734. *
  5735. * @param {Array} bezierArray
  5736. * 长度为 8 的数组,表示 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y]
  5737. *
  5738. * @param {Number} tolerate
  5739. * 允许的误差,默认是 0.1
  5740. *
  5741. * @return {Number} 贝塞尔曲线的长度
  5742. */
  5743. g.bezierLength = cacher(function bezierLength(bezierArray) {
  5744. // 表示(c[0]*t^4 + c[1]*t^3 + c[2]*t^2 + c[3]*t^1 + c[4])^(1/2)的函数
  5745. function f(x) {
  5746. var m = c0 * Math.pow(x, 4) + c1 * Math.pow(x, 3) + c2 * Math.pow(x, 2) + c3 * x + c4;
  5747. if (m < 0) {
  5748. m = 0;
  5749. }
  5750. return Math.pow(m, .5);
  5751. }
  5752. // 用Newton-Cotes型求积公式
  5753. var arr = bezierArray;
  5754. // 三次贝塞尔曲线函数求导后,求出对应的方程系数,用cx[],cy[]表示x`(t)和y`(t)的系数
  5755. var cx0, cx1, cx2;
  5756. var cy0, cy1, cy2;
  5757. // 用c[]表示x`(t)^2 + y`(t)^2的结果的系数
  5758. var c0, c1, c2, c3, c4;
  5759. // 求x`(t) 和 y`(t)的系数
  5760. cx0 = -3 * arr[0] + 9 * arr[2] - 9 * arr[4] + 3 * arr[6];
  5761. cx1 = 6 * arr[0] - 12 * arr[2] + 6 * arr[4];
  5762. cx2 = -3 * arr[0] + 3 * arr[2];
  5763. cy0 = -3 * arr[1] + 9 * arr[3] - 9 * arr[5] + 3 * arr[7];
  5764. cy1 = 6 * arr[1] - 12 * arr[3] + 6 * arr[5];
  5765. cy2 = -3 * arr[1] + 3 * arr[3];
  5766. // 求x`(t)^2 + y`(t)^2的结果的系数 c[]
  5767. c0 = Math.pow(cx0, 2) + Math.pow(cy0, 2);
  5768. c1 = 2 * (cx0 * cx1 + cy0 * cy1);
  5769. c2 = 2 * (cx0 * cx2 + cy0 * cy2) + Math.pow(cx1, 2) + Math.pow(cy1, 2);
  5770. c3 = 2 * (cx1 * cx2 + cy1 * cy2);
  5771. c4 = Math.pow(cx2, 2) + Math.pow(cy2, 2);
  5772. // 用cotes积分公式求值
  5773. return (f(0) + f(1) + 4 * (f(.125) + f(.375) + f(.625) + f(.875)) + 2 * (f(.25) + f(.5) + f(.75))) / 24;
  5774. });
  5775. // 计算一个 pathSegment 中每一段的在整体中所占的长度范围,以及总长度
  5776. // 方法要求每一段都是贝塞尔曲线
  5777. var getBezierPathSegmentRanges = cacher(function (pathSegment) {
  5778. var i, ii, segment, position, bezierLength, segmentRanges, totalLength;
  5779. segmentRanges = [];
  5780. // 总长度
  5781. totalLength = 0;
  5782. for (i = 0, ii = pathSegment.length; i < ii; i++) {
  5783. segment = pathSegment[i];
  5784. if (segment[0] == "M") {
  5785. position = segment.slice(1);
  5786. segmentRanges.push(null);
  5787. continue;
  5788. }
  5789. if (segment[0] == "Z") {
  5790. segmentRanges.push(null);
  5791. continue;
  5792. }
  5793. bezierLength = g.bezierLength(position.concat(segment.slice(1)));
  5794. segmentRanges.push([totalLength, totalLength + bezierLength]);
  5795. totalLength += bezierLength;
  5796. // 迭代当前位置
  5797. position = segment.slice(4);
  5798. }
  5799. segmentRanges.totalLength = totalLength;
  5800. return segmentRanges;
  5801. });
  5802. /**
  5803. * 求一段路径的子路径
  5804. *
  5805. * @param {Array|String} path
  5806. * 原路径
  5807. *
  5808. * @param {Number} t1
  5809. * 要求的子路径的结束位置(0 到 1)
  5810. *
  5811. * @param {Number} t0
  5812. * 要求的子路径的开始位置(0 到 t1),可不传,默认为 0
  5813. *
  5814. * @return {Array}
  5815. * 子路径的 PathSegment
  5816. */
  5817. g.subPath = function (path, t1, t0) {
  5818. var dt;
  5819. t0 = t0 || 0;
  5820. dt = t1 - t0;
  5821. dt = dt - (dt | 0);
  5822. t0 = t0 - (t0 | 0);
  5823. t1 = t0 + dt;
  5824. if (t1 > 1) {
  5825. return g.subPath(path, 1, t0).concat(g.subPath(path, t1 - 1));
  5826. }
  5827. if (!path.isCurve) {
  5828. path = g.pathToCurve(path);
  5829. }
  5830. // path 每一段在整体中的长度区间
  5831. var segmentRanges = getBezierPathSegmentRanges(path);
  5832. // path 总长度
  5833. var totalLength = segmentRanges.totalLength;
  5834. // t1 和 t0 位置命中的长度位置
  5835. var t1Length = totalLength * t1,
  5836. t0Length = totalLength * (t0 || 0);
  5837. // 产生的子路径
  5838. var subPath = [];
  5839. // 迭代变量,a 是一段的长度区间左值,b 是右值,d 是区间长度
  5840. var i, ii, a, b, d;
  5841. var position;
  5842. var bezier, subBezier, stared;
  5843. for (i = 0, ii = path.length; i < ii; i++) {
  5844. if (path[i][0] == "M") {
  5845. position = path[i].slice(1);
  5846. if (stared) {
  5847. subPath.push(path[i].slice());
  5848. }
  5849. continue;
  5850. }
  5851. if (path[i][0] == "Z") {
  5852. // subpath 路径不闭合
  5853. continue;
  5854. }
  5855. a = segmentRanges[i][0];
  5856. b = segmentRanges[i][1];
  5857. d = b - a;
  5858. bezier = position.concat(path[i].slice(1));
  5859. if (t0Length > b) {
  5860. // t0 和 t1 都右溢出
  5861. // -----------------------------------
  5862. // t0 t1
  5863. // |________|
  5864. //
  5865. // 需要跳过当前块
  5866. position = bezier.slice(bezier.length - 2);
  5867. continue;
  5868. } else if (t0Length >= a) {
  5869. // 命中 t0;t1 可能命中或右溢出
  5870. // -----------------------------------
  5871. // t0 t1
  5872. // |______|__|
  5873. //
  5874. // or: |_|____|__|
  5875. //
  5876. // 取当前块 t0 到 t1 的部分
  5877. subBezier = g.subBezier(bezier, Math.min((t1Length - a) / d, 1), (t0Length - a) / d);
  5878. stared = true;
  5879. position = subBezier.slice(0, 2);
  5880. subPath.push(["M"].concat(subBezier.slice(0, 2)));
  5881. subPath.push(["C"].concat(subBezier.slice(2)));
  5882. } else if (t1Length >= b) {
  5883. // t0 左溢出;t1 右溢出,整个块是需要的
  5884. // -----------------------------------
  5885. // t0 t1
  5886. // |_________|
  5887. //
  5888. // 此时取整个块
  5889. subPath.push(path[i].slice());
  5890. } else if (t1Length >= a) {
  5891. // t0 左溢出;t1 命中,取当前块 t1 之前的部分
  5892. // -----------------------------------
  5893. // t0 t1
  5894. // |__|______|
  5895. // 取当前块 t1 之前的部分
  5896. subBezier = g.subBezier(bezier, (t1Length - a) / d);
  5897. subPath.push(["C"].concat(subBezier.slice(2)));
  5898. stared = false;
  5899. } else {
  5900. // 没有可以再要的了
  5901. break;
  5902. }
  5903. position = bezier.slice(bezier.length - 2);
  5904. }
  5905. subPath.isAbsolute = true;
  5906. subPath.isCurve = true;
  5907. subPath.isUniform = true;
  5908. subPath.toString = g.pathToString;
  5909. return subPath;
  5910. };
  5911. /**
  5912. * 求路径上的一个点
  5913. *
  5914. * @param {Array|String} path
  5915. * 要求点的路径
  5916. *
  5917. * @param {Number} t
  5918. * 要求的点的位置(0 到 1)
  5919. *
  5920. * @return {Point} p
  5921. * p.x: x 坐标
  5922. * p.y: y 坐标
  5923. * p.tan: 在 t 处的切线方向(类型为 kity.Vector,模为 1)
  5924. */
  5925. g.pointAtPath = function (path, t) {
  5926. if (!path.isCurve) {
  5927. path = g.pathToCurve(path);
  5928. }
  5929. var subPath = g.subPath(path, t);
  5930. var lastCurve = subPath[subPath.length - 1][0] == "Z" ? subPath[subPath.length - 2] : subPath[subPath.length - 1];
  5931. // 跳过 'C' 命令,只留参数
  5932. lastCurve = lastCurve.slice(1);
  5933. var p = Point.parse(lastCurve.slice(4)),
  5934. c = Point.parse(lastCurve.slice(2, 4));
  5935. p.tan = Vector.fromPoints(c, p).normalize();
  5936. return p;
  5937. };
  5938. /**
  5939. * 求一段路径的长度
  5940. *
  5941. * @param {string|Array} path
  5942. * 要求的路径
  5943. *
  5944. * @return {Number}
  5945. * 路径的长度
  5946. */
  5947. g.pathLength = cacher(function (path) {
  5948. if (!path.isCurve) {
  5949. path = g.pathToCurve(path);
  5950. }
  5951. // path 每一段在整体中的长度区间
  5952. var segmentRanges = getBezierPathSegmentRanges(path);
  5953. return segmentRanges.totalLength;
  5954. });
  5955. /**
  5956. * 求一段路径的关键点
  5957. *
  5958. * @param {string|Array} path
  5959. * 要求的路径
  5960. *
  5961. * @return {Array}
  5962. * 关键点的集合
  5963. */
  5964. g.pathKeyPoints = cacher(function (path) {
  5965. var i, ii, command, keyPoints;
  5966. if (!path.isCurve) {
  5967. path = g.pathToCurve(path);
  5968. }
  5969. keyPoints = [];
  5970. for (i = 0, ii = path.length; i < ii; i++) {
  5971. if (path[i][0] == "z") continue;
  5972. keyPoints.push(path[i].slice(path[i].length - 2));
  5973. }
  5974. return keyPoints;
  5975. });
  5976. // 对比两个路径的关键位置,在合适的位置切割合适的路径,使得两个路径的段数一致
  5977. // TODO: 使用插值算法,使对应点更合理
  5978. var alignCurve = cacher(function (path1, path2) {
  5979. if (!path1.isCurve) path1 = g.pathToCurve(path1);
  5980. if (!path2.isCurve) path2 = g.pathToCurve(path2);
  5981. var p1 = pathClone(path1);
  5982. var p2 = pathClone(path2);
  5983. p1.i = 0;
  5984. p2.i = 0;
  5985. p1.o = p2;
  5986. p2.o = p1;
  5987. function command(p, i) {
  5988. return p[i || p.i] && p[i || p.i][0];
  5989. }
  5990. function param(p, i) {
  5991. return p[i || p.i] && p[i || p.i].slice(1);
  5992. }
  5993. function point(p, i) {
  5994. var _param = param(p, i);
  5995. return _param && _param.slice(-2);
  5996. }
  5997. function fixZ(p) {
  5998. if (command(p) == "Z") {
  5999. p.splice(p.i, 1);
  6000. return true;
  6001. }
  6002. return false;
  6003. }
  6004. function fixM(p) {
  6005. if (command(p) == "M") {
  6006. p.o.splice(p.o.i, 0, ["M"].concat(point(p.o, p.o.i - 1)));
  6007. p.i++;
  6008. p.o.i++;
  6009. return true;
  6010. }
  6011. return false;
  6012. }
  6013. function fill(p) {
  6014. var lastPoint;
  6015. var i = 1;
  6016. while (!lastPoint) {
  6017. lastPoint = point(p, p.length - i++);
  6018. }
  6019. p.o.i = p.i;
  6020. while (p.length < p.o.length) {
  6021. if (fixZ(p.o)) continue;
  6022. if (fixM(p.o)) continue;
  6023. p.push(["C"].concat(lastPoint).concat(lastPoint).concat(lastPoint));
  6024. p.i++;
  6025. p.o.i++;
  6026. }
  6027. }
  6028. while (p1.i < p1.length && p2.i < p2.length) {
  6029. if (fixZ(p1) || fixZ(p2)) continue;
  6030. if (command(p1) == command(p2)) {
  6031. p1.i++;
  6032. p2.i++;
  6033. continue;
  6034. }
  6035. if (fixM(p1) || fixM(p2)) continue;
  6036. p1.i++;
  6037. p2.i++;
  6038. }
  6039. if (p1.i == p1.length) fill(p1);
  6040. if (p2.i == p2.length) fill(p2);
  6041. delete p1.i;
  6042. delete p1.o;
  6043. delete p2.i;
  6044. delete p2.o;
  6045. return [p1, p2];
  6046. });
  6047. g.alignCurve = alignCurve;
  6048. /**
  6049. * 获得两个路径的补间结果
  6050. *
  6051. * @param {string|Array} path1
  6052. * 补间起始路径
  6053. *
  6054. * @param {string|Array} path2
  6055. * 补间结束路径
  6056. *
  6057. * @param {Number} t
  6058. * 补间比例,0 返回跟 path1 等效的结果;1 返回跟 path2 等效的结果
  6059. *
  6060. * @return {PathSegment}
  6061. * 补间的结果
  6062. */
  6063. g.pathTween = function (path1, path2, t) {
  6064. if (t === 0) return path1;
  6065. if (t === 1) return path2;
  6066. var aligned = alignCurve(path1, path2);
  6067. var result = [],
  6068. seg,
  6069. i,
  6070. j;
  6071. path1 = aligned[0];
  6072. path2 = aligned[1];
  6073. for (i = 0; i < path1.length; i++) {
  6074. result.push(seg = []);
  6075. seg.push(path1[i][0]);
  6076. for (j = 1; j < path1[i].length; j++) {
  6077. seg.push(path1[i][j] + t * (path2[i][j] - path1[i][j]));
  6078. }
  6079. }
  6080. result.isUniform = result.isCurve = result.isAbsolute = true;
  6081. return result;
  6082. };
  6083. /**
  6084. * 变换指定的路径
  6085. *
  6086. * @param {String|Array} path
  6087. * 需要变换的路径
  6088. *
  6089. * @param {kity.Matrix} matrix
  6090. * 使用的变换矩阵
  6091. *
  6092. * @return {Array}
  6093. * 变换后的路径
  6094. */
  6095. g.transformPath = cacher(function (path, matrix) {
  6096. var i, ii, j, result, seg, pair;
  6097. if (!path.isCurve) {
  6098. path = g.pathToCurve(path);
  6099. }
  6100. result = [];
  6101. for (i = 0, ii = path.length; i < ii; i++) {
  6102. result.push(seg = [path[i][0]]);
  6103. for (j = 1; j < path[i].length; j += 2) {
  6104. pair = path[i].slice(j, j + 2);
  6105. pair = matrix.transformPoint(Point.parse(pair));
  6106. result.push(pair);
  6107. }
  6108. }
  6109. return result;
  6110. });
  6111. // entend
  6112. _p.r(11).extendClass(Matrix, {
  6113. transformPath: function transformPath(path) {
  6114. return g.transformPath(path, this);
  6115. }
  6116. });
  6117. return g;
  6118. }
  6119. };
  6120. //src/graphic/gradient.js
  6121. _p[36] = {
  6122. value: function value(require, exports, module) {
  6123. var svg = _p.r(68);
  6124. var Resource = _p.r(59);
  6125. var Color = _p.r(29);
  6126. return _p.r(11).createClass("GradientBrush", {
  6127. base: Resource,
  6128. constructor: function constructor(gradientNodeType, paper) {
  6129. this.callBase(gradientNodeType, paper);
  6130. this.stops = [];
  6131. },
  6132. addStop: function addStop(offset, color, opacity) {
  6133. var gstop = svg.createNode("stop");
  6134. if (!(color instanceof Color)) {
  6135. color = Color.parse(color);
  6136. }
  6137. if (opacity === undefined) {
  6138. opacity = color.get("a");
  6139. }
  6140. gstop.setAttribute("offset", offset);
  6141. gstop.setAttribute("stop-color", color.toRGB());
  6142. if (opacity < 1) {
  6143. gstop.setAttribute("stop-opacity", opacity);
  6144. }
  6145. this.node.appendChild(gstop);
  6146. return this;
  6147. }
  6148. });
  6149. }
  6150. };
  6151. //src/graphic/group.js
  6152. _p[37] = {
  6153. value: function value(require, exports, module) {
  6154. var ShapeContainer = _p.r(62);
  6155. return _p.r(11).createClass("Group", {
  6156. mixins: [ShapeContainer],
  6157. base: _p.r(61),
  6158. constructor: function Group() {
  6159. this.callBase("g");
  6160. }
  6161. });
  6162. }
  6163. };
  6164. //src/graphic/hyperlink.js
  6165. _p[38] = {
  6166. value: function value(require, exports, module) {
  6167. var ShapeContainer = _p.r(62);
  6168. return _p.r(11).createClass("HyperLink", {
  6169. mixins: [ShapeContainer],
  6170. base: _p.r(61),
  6171. constructor: function constructor(url) {
  6172. this.callBase("a");
  6173. this.setHref(url);
  6174. },
  6175. setHref: function setHref(href) {
  6176. this.node.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", href);
  6177. return this;
  6178. },
  6179. getHref: function getHref() {
  6180. return this.node.getAttributeNS("xlink:href");
  6181. },
  6182. setTarget: function setTarget(target) {
  6183. this.node.setAttribute("target", target);
  6184. return this;
  6185. },
  6186. getTarget: function getTarget() {
  6187. return this.node.getAttribute("target");
  6188. }
  6189. });
  6190. }
  6191. };
  6192. //src/graphic/image.js
  6193. _p[39] = {
  6194. value: function value(require, exports, module) {
  6195. return _p.r(11).createClass("Image", {
  6196. base: _p.r(61),
  6197. constructor: function constructor(url, width, height, x, y) {
  6198. this.callBase("image");
  6199. this.url = url;
  6200. this.width = width || 0;
  6201. this.height = height || 0;
  6202. this.x = x || 0;
  6203. this.y = y || 0;
  6204. this.update();
  6205. },
  6206. update: function update() {
  6207. this.node.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", this.url);
  6208. this.node.setAttribute("x", this.x);
  6209. this.node.setAttribute("y", this.y);
  6210. this.node.setAttribute("width", this.width);
  6211. this.node.setAttribute("height", this.height);
  6212. return this;
  6213. },
  6214. setUrl: function setUrl(url) {
  6215. this.url = url === "" ? null : url;
  6216. return this.update();
  6217. },
  6218. getUrl: function getUrl() {
  6219. return this.url;
  6220. },
  6221. setWidth: function setWidth(width) {
  6222. this.width = width;
  6223. return this.update();
  6224. },
  6225. getWidth: function getWidth() {
  6226. return this.width;
  6227. },
  6228. setHeight: function setHeight(height) {
  6229. this.height = height;
  6230. return this.update();
  6231. },
  6232. getHeight: function getHeight() {
  6233. return this.height;
  6234. },
  6235. setX: function setX(x) {
  6236. this.x = x;
  6237. return this.update();
  6238. },
  6239. getX: function getX() {
  6240. return this.x;
  6241. },
  6242. setY: function setY(y) {
  6243. this.y = y;
  6244. return this.update();
  6245. },
  6246. getY: function getY() {
  6247. return this.y;
  6248. }
  6249. });
  6250. }
  6251. };
  6252. //src/graphic/line.js
  6253. _p[40] = {
  6254. value: function value(require, exports, module) {
  6255. return _p.r(11).createClass("Line", {
  6256. base: _p.r(47),
  6257. constructor: function constructor(x1, y1, x2, y2) {
  6258. this.callBase();
  6259. this.point1 = {
  6260. x: x1 || 0,
  6261. y: y1 || 0
  6262. };
  6263. this.point2 = {
  6264. x: x2 || 0,
  6265. y: y2 || 0
  6266. };
  6267. this.update();
  6268. },
  6269. setPoint1: function setPoint1(x, y) {
  6270. this.point1.x = x;
  6271. this.point1.y = y;
  6272. return this.update();
  6273. },
  6274. setPoint2: function setPoint2(x, y) {
  6275. this.point2.x = x;
  6276. this.point2.y = y;
  6277. return this.update();
  6278. },
  6279. getPoint1: function getPoint1() {
  6280. return {
  6281. x: this.point1.x,
  6282. y: this.point1.y
  6283. };
  6284. },
  6285. getPoint2: function getPoint2() {
  6286. return {
  6287. x: this.point2.x,
  6288. y: this.point2.y
  6289. };
  6290. },
  6291. update: function update() {
  6292. var drawer = this.getDrawer();
  6293. drawer.clear();
  6294. drawer.moveTo(this.point1.x, this.point1.y);
  6295. drawer.lineTo(this.point2.x, this.point2.y);
  6296. return this;
  6297. }
  6298. });
  6299. }
  6300. };
  6301. //src/graphic/lineargradient.js
  6302. _p[41] = {
  6303. value: function value(require, exports, module) {
  6304. var svg = _p.r(68);
  6305. var Gradient = _p.r(36);
  6306. return _p.r(11).createClass("LinearGradientBrush", {
  6307. base: Gradient,
  6308. constructor: function constructor(paper) {
  6309. this.callBase("linearGradient", paper);
  6310. this.setStartPosition(0, 0);
  6311. this.setEndPosition(1, 0);
  6312. },
  6313. setStartPosition: function setStartPosition(px, py) {
  6314. this.node.setAttribute("x1", px);
  6315. this.node.setAttribute("y1", py);
  6316. return this;
  6317. },
  6318. setEndPosition: function setEndPosition(px, py) {
  6319. this.node.setAttribute("x2", px);
  6320. this.node.setAttribute("y2", py);
  6321. return this;
  6322. },
  6323. getStartPosition: function getStartPosition() {
  6324. return {
  6325. x: +this.node.getAttribute("x1"),
  6326. y: +this.node.getAttribute("y1")
  6327. };
  6328. },
  6329. getEndPosition: function getEndPosition() {
  6330. return {
  6331. x: +this.node.getAttribute("x2"),
  6332. y: +this.node.getAttribute("y2")
  6333. };
  6334. }
  6335. });
  6336. }
  6337. };
  6338. //src/graphic/marker.js
  6339. _p[42] = {
  6340. value: function value(require, exports, module) {
  6341. var Point = _p.r(51);
  6342. var Marker = _p.r(11).createClass("Marker", {
  6343. base: _p.r(59),
  6344. mixins: [_p.r(62), _p.r(76)],
  6345. constructor: function constructor() {
  6346. this.callBase("marker");
  6347. this.setOrient("auto");
  6348. },
  6349. setRef: function setRef(x, y) {
  6350. if (arguments.length === 1) {
  6351. y = x.y;
  6352. x = x.x;
  6353. }
  6354. this.node.setAttribute("refX", x);
  6355. this.node.setAttribute("refY", y);
  6356. return this;
  6357. },
  6358. getRef: function getRef() {
  6359. return new Point(+this.node.getAttribute("refX"), +this.node.getAttribute("refY"));
  6360. },
  6361. setWidth: function setWidth(width) {
  6362. this.node.setAttribute("markerWidth", this.width = width);
  6363. return this;
  6364. },
  6365. setOrient: function setOrient(orient) {
  6366. this.node.setAttribute("orient", this.orient = orient);
  6367. return this;
  6368. },
  6369. getOrient: function getOrient() {
  6370. return this.orient;
  6371. },
  6372. getWidth: function getWidth() {
  6373. return +this.width;
  6374. },
  6375. setHeight: function setHeight(height) {
  6376. this.node.setAttribute("markerHeight", this.height = height);
  6377. return this;
  6378. },
  6379. getHeight: function getHeight() {
  6380. return +this.height;
  6381. }
  6382. });
  6383. var Path = _p.r(47);
  6384. _p.r(11).extendClass(Path, {
  6385. setMarker: function setMarker(marker, pos) {
  6386. pos = pos || "end";
  6387. if (!marker) {
  6388. this.node.removeAttribute("marker-" + pos);
  6389. } else {
  6390. this.node.setAttribute("marker-" + pos, marker.toString());
  6391. }
  6392. return this;
  6393. }
  6394. });
  6395. return Marker;
  6396. }
  6397. };
  6398. //src/graphic/mask.js
  6399. /**
  6400. * 蒙板
  6401. */
  6402. _p[43] = {
  6403. value: function value(require, exports, module) {
  6404. var Class = _p.r(11);
  6405. var Shape = _p.r(61);
  6406. var Mask = Class.createClass("Mask", {
  6407. base: Shape,
  6408. mixins: [_p.r(62)],
  6409. constructor: function constructor() {
  6410. this.callBase("mask");
  6411. },
  6412. mask: function mask(shape) {
  6413. shape.getNode().setAttribute("mask", "url(#" + this.getId() + ")");
  6414. return this;
  6415. }
  6416. });
  6417. Class.extendClass(Shape, {
  6418. maskWith: function maskWith(mask) {
  6419. mask.mask(this);
  6420. return this;
  6421. }
  6422. });
  6423. return Mask;
  6424. }
  6425. };
  6426. //src/graphic/matrix.js
  6427. _p[44] = {
  6428. value: function value(require, exports, module) {
  6429. var utils = _p.r(12);
  6430. var Box = _p.r(26);
  6431. var mPattern = /matrix\s*\((.+)\)/i;
  6432. var Point = _p.r(51);
  6433. // 注意,合并的结果是先执行m2,再执行m1的结果
  6434. function mergeMatrixData(m2, m1) {
  6435. return {
  6436. a: m1.a * m2.a + m1.c * m2.b,
  6437. b: m1.b * m2.a + m1.d * m2.b,
  6438. c: m1.a * m2.c + m1.c * m2.d,
  6439. d: m1.b * m2.c + m1.d * m2.d,
  6440. e: m1.a * m2.e + m1.c * m2.f + m1.e,
  6441. f: m1.b * m2.e + m1.d * m2.f + m1.f
  6442. };
  6443. }
  6444. function d2r(deg) {
  6445. return deg * Math.PI / 180;
  6446. }
  6447. var Matrix = _p.r(11).createClass("Matrix", {
  6448. constructor: function constructor() {
  6449. if (arguments.length) {
  6450. this.setMatrix.apply(this, arguments);
  6451. } else {
  6452. this.setMatrix(1, 0, 0, 1, 0, 0);
  6453. }
  6454. },
  6455. translate: function translate(x, y) {
  6456. this.m = mergeMatrixData(this.m, {
  6457. a: 1,
  6458. c: 0,
  6459. e: x,
  6460. b: 0,
  6461. d: 1,
  6462. f: y
  6463. });
  6464. return this;
  6465. },
  6466. rotate: function rotate(deg) {
  6467. var rad = d2r(deg);
  6468. var sin = Math.sin(rad),
  6469. cos = Math.cos(rad);
  6470. this.m = mergeMatrixData(this.m, {
  6471. a: cos,
  6472. c: -sin,
  6473. e: 0,
  6474. b: sin,
  6475. d: cos,
  6476. f: 0
  6477. });
  6478. return this;
  6479. },
  6480. scale: function scale(sx, sy) {
  6481. if (sy === undefined) {
  6482. sy = sx;
  6483. }
  6484. this.m = mergeMatrixData(this.m, {
  6485. a: sx,
  6486. c: 0,
  6487. e: 0,
  6488. b: 0,
  6489. d: sy,
  6490. f: 0
  6491. });
  6492. return this;
  6493. },
  6494. skew: function skew(degX, degY) {
  6495. if (degY === undefined) {
  6496. degY = degX;
  6497. }
  6498. var tx = Math.tan(d2r(degX)),
  6499. ty = Math.tan(d2r(degY));
  6500. this.m = mergeMatrixData(this.m, {
  6501. a: 1,
  6502. c: tx,
  6503. e: 0,
  6504. b: ty,
  6505. d: 1,
  6506. f: 0
  6507. });
  6508. return this;
  6509. },
  6510. /**
  6511. * 获得反转矩阵
  6512. *
  6513. * 这是我解方程算出来的
  6514. */
  6515. inverse: function inverse() {
  6516. var m = this.m,
  6517. a = m.a,
  6518. b = m.b,
  6519. c = m.c,
  6520. d = m.d,
  6521. e = m.e,
  6522. f = m.f,
  6523. k,
  6524. aa,
  6525. bb,
  6526. cc,
  6527. dd,
  6528. ee,
  6529. ff;
  6530. k = a * d - b * c;
  6531. aa = d / k;
  6532. bb = -b / k;
  6533. cc = -c / k;
  6534. dd = a / k;
  6535. ee = (c * f - e * d) / k;
  6536. ff = (b * e - a * f) / k;
  6537. return new Matrix(aa, bb, cc, dd, ee, ff);
  6538. },
  6539. setMatrix: function setMatrix(a, b, c, d, e, f) {
  6540. if (arguments.length === 1) {
  6541. this.m = utils.clone(arguments[0]);
  6542. } else {
  6543. this.m = {
  6544. a: a,
  6545. b: b,
  6546. c: c,
  6547. d: d,
  6548. e: e,
  6549. f: f
  6550. };
  6551. }
  6552. return this;
  6553. },
  6554. getMatrix: function getMatrix() {
  6555. return utils.clone(this.m);
  6556. },
  6557. getTranslate: function getTranslate() {
  6558. var m = this.m;
  6559. return {
  6560. x: m.e / m.a,
  6561. y: m.f / m.d
  6562. };
  6563. },
  6564. mergeMatrix: function mergeMatrix(matrix) {
  6565. return new Matrix(mergeMatrixData(this.m, matrix.m));
  6566. },
  6567. merge: function merge(matrix) {
  6568. return this.mergeMatrix(matrix);
  6569. },
  6570. toString: function toString() {
  6571. return this.valueOf().join(" ");
  6572. },
  6573. valueOf: function valueOf() {
  6574. var m = this.m;
  6575. return [m.a, m.b, m.c, m.d, m.e, m.f];
  6576. },
  6577. equals: function equals(matrix) {
  6578. var m1 = this.m,
  6579. m2 = matrix.m;
  6580. return m1.a == m2.a && m1.b == m2.b && m1.c == m2.c && m1.d == m2.d && m1.e == m2.e && m1.f == m2.f;
  6581. },
  6582. transformPoint: function transformPoint() {
  6583. return Matrix.transformPoint.apply(null, [].slice.call(arguments).concat([this.m]));
  6584. },
  6585. transformBox: function transformBox(box) {
  6586. return Matrix.transformBox(box, this.m);
  6587. },
  6588. clone: function clone() {
  6589. return new Matrix(this.m);
  6590. }
  6591. });
  6592. Matrix.parse = function (str) {
  6593. var match;
  6594. var f = parseFloat;
  6595. if (str instanceof Array) {
  6596. return new Matrix({
  6597. a: str[0],
  6598. b: str[1],
  6599. c: str[2],
  6600. d: str[3],
  6601. e: str[4],
  6602. f: str[5]
  6603. });
  6604. }
  6605. if (match = mPattern.exec(str)) {
  6606. var values = match[1].split(",");
  6607. if (values.length != 6) {
  6608. values = match[1].split(" ");
  6609. }
  6610. return new Matrix({
  6611. a: f(values[0]),
  6612. b: f(values[1]),
  6613. c: f(values[2]),
  6614. d: f(values[3]),
  6615. e: f(values[4]),
  6616. f: f(values[5])
  6617. });
  6618. }
  6619. return new Matrix();
  6620. };
  6621. Matrix.transformPoint = function (x, y, m) {
  6622. if (arguments.length === 2) {
  6623. m = y;
  6624. y = x.y;
  6625. x = x.x;
  6626. }
  6627. return new Point(m.a * x + m.c * y + m.e, m.b * x + m.d * y + m.f);
  6628. };
  6629. Matrix.transformBox = function (box, matrix) {
  6630. var xMin = Number.MAX_VALUE,
  6631. xMax = -Number.MAX_VALUE,
  6632. yMin = Number.MAX_VALUE,
  6633. yMax = -Number.MAX_VALUE;
  6634. var bps = [[box.x, box.y], [box.x + box.width, box.y], [box.x, box.y + box.height], [box.x + box.width, box.y + box.height]];
  6635. var bp,
  6636. rp,
  6637. rps = [];
  6638. while (bp = bps.pop()) {
  6639. rp = Matrix.transformPoint(bp[0], bp[1], matrix);
  6640. rps.push(rp);
  6641. xMin = Math.min(xMin, rp.x);
  6642. xMax = Math.max(xMax, rp.x);
  6643. yMin = Math.min(yMin, rp.y);
  6644. yMax = Math.max(yMax, rp.y);
  6645. }
  6646. box = new Box({
  6647. x: xMin,
  6648. y: yMin,
  6649. width: xMax - xMin,
  6650. height: yMax - yMin
  6651. });
  6652. utils.extend(box, {
  6653. closurePoints: rps
  6654. });
  6655. return box;
  6656. };
  6657. // 获得从 node 到 refer 的变换矩阵
  6658. Matrix.getCTM = function (target, refer) {
  6659. var ctm = {
  6660. a: 1,
  6661. b: 0,
  6662. c: 0,
  6663. d: 1,
  6664. e: 0,
  6665. f: 0
  6666. };
  6667. var node = target.shapeNode || target.node;
  6668. refer = refer || "parent";
  6669. /**
  6670. * 由于新版chrome(dev 48.0)移除了getTransformToElement这个方法可能导致报错,这里做兼容处理
  6671. * @Date 2015-11-12
  6672. * @Editor Naixor
  6673. */
  6674. function getTransformToElement(target, source) {
  6675. var matrix;
  6676. try {
  6677. matrix = source.getScreenCTM().inverse();
  6678. } catch (e) {
  6679. throw new Error("Can not inverse source element' ctm.");
  6680. }
  6681. return matrix.multiply(target.getScreenCTM());
  6682. }
  6683. // 根据参照坐标系选区的不一样,返回不同的结果
  6684. switch (refer) {
  6685. case "screen":
  6686. // 以浏览器屏幕为参照坐标系
  6687. ctm = node.getScreenCTM();
  6688. break;
  6689. case "doc":
  6690. case "paper":
  6691. // 以文档(Paper)为参照坐标系
  6692. ctm = node.getCTM();
  6693. break;
  6694. case "view":
  6695. case "top":
  6696. // 以顶层绘图容器(视野)为参照坐标系
  6697. if (target.getPaper()) {
  6698. ctm = node.getTransformToElement !== undefined ? node.getTransformToElement(target.getPaper().shapeNode) : getTransformToElement(node, target.getPaper().shapeNode);
  6699. }
  6700. break;
  6701. case "parent":
  6702. // 以父容器为参照坐标系
  6703. if (target.node.parentNode) {
  6704. ctm = node.getTransformToElement !== undefined ? node.getTransformToElement(target.node.parentNode) : getTransformToElement(node, target.node.parentNode);
  6705. }
  6706. break;
  6707. default:
  6708. // 其他情况,指定参照物
  6709. if (refer.node) {
  6710. ctm = node.getTransformToElement !== undefined ? node.getTransformToElement(refer.shapeNode || refer.node) : getTransformToElement(node, refer.shapeNode || refer.node);
  6711. }
  6712. }
  6713. return ctm ? new Matrix(ctm.a, ctm.b, ctm.c, ctm.d, ctm.e, ctm.f) : new Matrix();
  6714. };
  6715. return Matrix;
  6716. }
  6717. };
  6718. //src/graphic/palette.js
  6719. /**
  6720. * 调色板
  6721. */
  6722. _p[45] = {
  6723. value: function value(require, exports, module) {
  6724. //标准color
  6725. var StandardColor = _p.r(65),
  6726. Color = _p.r(29),
  6727. Utils = _p.r(12);
  6728. var Palette = _p.r(11).createClass("Palette", {
  6729. constructor: function constructor() {
  6730. this.color = {};
  6731. },
  6732. /*
  6733. * 获取颜色名称所对应的颜色值的Color对象
  6734. * @param name 需要获取的颜色名称
  6735. * @return 对应颜色名称的color对象, 如果未找到对应的名称, 则返回null
  6736. */
  6737. get: function get(name) {
  6738. var colorValue = this.color[name] || StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name] || "";
  6739. if (colorValue) {
  6740. return new Color(colorValue);
  6741. }
  6742. return null;
  6743. },
  6744. /*
  6745. * 获取给定名称的颜色的hex值表示
  6746. * @param name 需要获取的颜色名称
  6747. * @return 如果找到对应的名称, 则返回该名称所对应的hex格式的值, 否则, 返回一个空字符串
  6748. */
  6749. getColorValue: function getColorValue(name) {
  6750. return this.color[name] || StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name] || "";
  6751. },
  6752. /*
  6753. * 向调色板实例添加自己独有的颜色名称,对已存在的颜色名称, 将会覆盖掉
  6754. * @param name 新添加的颜色名称
  6755. * @param value 新添加的颜色名称所对应的值, 可以是一个合法的颜色字符串或者是一个color对象
  6756. * @return 新添加的颜色的值
  6757. */
  6758. add: function add(name, value) {
  6759. if (typeof value === "string") {
  6760. this.color[name] = new Color(value).toRGBA();
  6761. } else {
  6762. this.color[name] = value.toRGBA();
  6763. }
  6764. return value;
  6765. },
  6766. /*
  6767. * 删除调色板实例上用户自己添加的颜色, 该方法不能删除内置的颜色
  6768. * @param name 需要删除的颜色名称
  6769. * @return 删除是否成功的bool值
  6770. */
  6771. remove: function remove(name) {
  6772. if (this.color.hasOwnProperty(name)) {
  6773. delete this.color[name];
  6774. return true;
  6775. }
  6776. return false;
  6777. }
  6778. });
  6779. Utils.extend(Palette, {
  6780. getColor: function getColor(name) {
  6781. var colorValue = StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name];
  6782. if (colorValue) {
  6783. return new Color(colorValue);
  6784. }
  6785. return null;
  6786. },
  6787. /*
  6788. * 通过给定的名字获取标准的颜色值表示, 返回的值以hex的方式提供
  6789. * @param name 需要获取的标准颜色名称
  6790. * @return 名字所对应的颜色值的hex表示, 如果未找到对应名称的值, 则返回一个空字符串
  6791. */
  6792. getColorValue: function getColorValue(name) {
  6793. return StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name] || "";
  6794. },
  6795. /*
  6796. * 向调色板添加颜色名称,新添加的颜色对所有的调色板对象都可见
  6797. * 对已存在的颜色名称, 将会覆盖掉
  6798. * @param name 新添加的颜色名称
  6799. * @param value 新添加的颜色名称所对于的值, 应该是一个hex格式的颜色字符串, 如: ”#ff0000“
  6800. * @return 新添加的颜色的值
  6801. */
  6802. addColor: function addColor(name, value) {
  6803. if (typeof value === "string") {
  6804. StandardColor.EXTEND_STANDARD[name] = new Color(value).toRGBA();
  6805. } else {
  6806. StandardColor.EXTEND_STANDARD[name] = value.toRGBA();
  6807. }
  6808. return value;
  6809. },
  6810. /*
  6811. * 删除用户自己添加的颜色, 该方法不能删除内置的颜色, 该方法不会影响调色板实例自由的颜色
  6812. * @param name 需要删除的颜色名称
  6813. * @return 删除是否成功的bool值
  6814. */
  6815. removeColor: function removeColor(name) {
  6816. if (StandardColor.EXTEND_STANDARD.hasOwnProperty(name)) {
  6817. delete StandardColor.EXTEND_STANDARD[name];
  6818. return true;
  6819. }
  6820. return false;
  6821. }
  6822. });
  6823. return Palette;
  6824. }
  6825. };
  6826. //src/graphic/paper.js
  6827. _p[46] = {
  6828. value: function value(require, exports, module) {
  6829. var Class = _p.r(11);
  6830. var utils = _p.r(12);
  6831. var svg = _p.r(68);
  6832. var Container = _p.r(30);
  6833. var ShapeContainer = _p.r(62);
  6834. var ViewBox = _p.r(76);
  6835. var EventHandler = _p.r(34);
  6836. var Styled = _p.r(67);
  6837. var Matrix = _p.r(44);
  6838. var Paper = Class.createClass("Paper", {
  6839. mixins: [ShapeContainer, EventHandler, Styled, ViewBox],
  6840. constructor: function constructor(container) {
  6841. this.callBase();
  6842. this.node = this.createSVGNode();
  6843. this.node.paper = this;
  6844. this.node.appendChild(this.resourceNode = svg.createNode("defs"));
  6845. this.node.appendChild(this.shapeNode = svg.createNode("g"));
  6846. this.resources = new Container();
  6847. this.setWidth("100%").setHeight("100%");
  6848. if (container) {
  6849. this.renderTo(container);
  6850. }
  6851. this.callMixin();
  6852. },
  6853. renderTo: function renderTo(container) {
  6854. if (utils.isString(container)) {
  6855. container = document.getElementById(container);
  6856. }
  6857. this.container = container;
  6858. container.appendChild(this.node);
  6859. },
  6860. createSVGNode: function createSVGNode() {
  6861. var node = svg.createNode("svg");
  6862. node.setAttribute("xmlns", "http://www.w3.org/2000/svg");
  6863. node.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");
  6864. node.setAttribute("version", "1.1");
  6865. return node;
  6866. },
  6867. getNode: function getNode() {
  6868. return this.node;
  6869. },
  6870. getContainer: function getContainer() {
  6871. return this.container;
  6872. },
  6873. getWidth: function getWidth() {
  6874. return this.node.clientWidth;
  6875. },
  6876. setWidth: function setWidth(width) {
  6877. this.node.setAttribute("width", width);
  6878. return this;
  6879. },
  6880. getHeight: function getHeight() {
  6881. return this.node.clientHeight;
  6882. },
  6883. setHeight: function setHeight(height) {
  6884. this.node.setAttribute("height", height);
  6885. return this;
  6886. },
  6887. setViewPort: function setViewPort(cx, cy, zoom) {
  6888. var viewport, box;
  6889. if (arguments.length == 1) {
  6890. viewport = arguments[0];
  6891. cx = viewport.center.x;
  6892. cy = viewport.center.y;
  6893. zoom = viewport.zoom;
  6894. }
  6895. zoom = zoom || 1;
  6896. box = this.getViewBox();
  6897. var matrix = new Matrix();
  6898. var dx = box.x + box.width / 2 - cx,
  6899. dy = box.y + box.height / 2 - cy;
  6900. matrix.translate(-cx, -cy);
  6901. matrix.scale(zoom);
  6902. matrix.translate(cx, cy);
  6903. matrix.translate(dx, dy);
  6904. this.shapeNode.setAttribute("transform", "matrix(" + matrix + ")");
  6905. this.viewport = {
  6906. center: {
  6907. x: cx,
  6908. y: cy
  6909. },
  6910. offset: {
  6911. x: dx,
  6912. y: dy
  6913. },
  6914. zoom: zoom
  6915. };
  6916. return this;
  6917. },
  6918. getViewPort: function getViewPort() {
  6919. if (!this.viewport) {
  6920. var box = this.getViewBox();
  6921. return {
  6922. zoom: 1,
  6923. center: {
  6924. x: box.x + box.width / 2,
  6925. y: box.y + box.height / 2
  6926. },
  6927. offset: {
  6928. x: 0,
  6929. y: 0
  6930. }
  6931. };
  6932. }
  6933. return this.viewport;
  6934. },
  6935. getViewPortMatrix: function getViewPortMatrix() {
  6936. return Matrix.parse(this.shapeNode.getAttribute("transform"));
  6937. },
  6938. getViewPortTransform: function getViewPortTransform() {
  6939. var m = this.shapeNode.getCTM();
  6940. return new Matrix(m.a, m.b, m.c, m.d, m.e, m.f);
  6941. },
  6942. getTransform: function getTransform() {
  6943. return this.getViewPortTransform().reverse();
  6944. },
  6945. addResource: function addResource(resource) {
  6946. this.resources.appendItem(resource);
  6947. if (resource.node) {
  6948. this.resourceNode.appendChild(resource.node);
  6949. }
  6950. return this;
  6951. },
  6952. removeResource: function removeResource(resource) {
  6953. if (resource.remove) {
  6954. resource.remove();
  6955. }
  6956. if (resource.node) {
  6957. this.resourceNode.removeChild(resource.node);
  6958. }
  6959. return this;
  6960. },
  6961. getPaper: function getPaper() {
  6962. return this;
  6963. }
  6964. });
  6965. var Shape = _p.r(61);
  6966. Class.extendClass(Shape, {
  6967. getPaper: function getPaper() {
  6968. var parent = this.container;
  6969. while (parent && parent instanceof Paper === false) {
  6970. parent = parent.container;
  6971. }
  6972. return parent;
  6973. },
  6974. isAttached: function isAttached() {
  6975. return !!this.getPaper();
  6976. },
  6977. whenPaperReady: function whenPaperReady(fn) {
  6978. var me = this;
  6979. function check() {
  6980. var paper = me.getPaper();
  6981. if (paper && fn) {
  6982. fn.call(me, paper);
  6983. }
  6984. return paper;
  6985. }
  6986. if (!check()) {
  6987. this.on("add treeadd", function listen() {
  6988. if (check()) {
  6989. me.off("add", listen);
  6990. me.off("treeadd", listen);
  6991. }
  6992. });
  6993. }
  6994. return this;
  6995. }
  6996. });
  6997. return Paper;
  6998. }
  6999. };
  7000. //src/graphic/path.js
  7001. _p[47] = {
  7002. value: function value(require, exports, module) {
  7003. var Utils = _p.r(12);
  7004. var createClass = _p.r(11).createClass;
  7005. var Shape = _p.r(61);
  7006. var svg = _p.r(68);
  7007. var g = _p.r(35);
  7008. var slice = Array.prototype.slice,
  7009. flatten = Utils.flatten;
  7010. var PathDrawer = createClass("PathDrawer", {
  7011. constructor: function constructor(path) {
  7012. this.segment = [];
  7013. this.path = path;
  7014. this.__clear = false;
  7015. },
  7016. getPath: function getPath() {
  7017. return this.path;
  7018. },
  7019. redraw: function redraw() {
  7020. this._transation = this._transation || [];
  7021. return this.clear();
  7022. },
  7023. done: function done() {
  7024. var transation = this._transation;
  7025. this._transation = null;
  7026. this.push(transation);
  7027. return this;
  7028. },
  7029. clear: function clear() {
  7030. if (this._transation) {
  7031. this._transation = [];
  7032. } else {
  7033. this.path.setPathData("M 0 0");
  7034. }
  7035. this._clear = true;
  7036. return this;
  7037. },
  7038. push: function push() {
  7039. var segment = slice.call(arguments);
  7040. var originData;
  7041. if (this._transation) {
  7042. this._transation.push(segment);
  7043. return this;
  7044. }
  7045. if (this._clear) {
  7046. originData = "";
  7047. this._clear = false;
  7048. } else {
  7049. originData = this.path.getPathData();
  7050. }
  7051. originData = originData || "";
  7052. this.path.setPathData(originData + g.pathToString(segment));
  7053. return this;
  7054. },
  7055. moveTo: function moveTo(x, y) {
  7056. return this.push("M", slice.call(arguments));
  7057. },
  7058. moveBy: function moveBy(dx, dy) {
  7059. return this.push("m", slice.call(arguments));
  7060. },
  7061. lineTo: function lineTo(x, y) {
  7062. return this.push("L", slice.call(arguments));
  7063. },
  7064. lineBy: function lineBy(dx, dy) {
  7065. return this.push("l", slice.call(arguments));
  7066. },
  7067. arcTo: function arcTo(rx, ry, xr, laf, sf, x, y) {
  7068. return this.push("A", slice.call(arguments));
  7069. },
  7070. arcBy: function arcBy(rx, ry, xr, laf, sf, dx, dy) {
  7071. return this.push("a", arguments);
  7072. },
  7073. carcTo: function carcTo(r, laf, sf, x, y) {
  7074. return this.push("A", [r, r, 0].concat(slice.call(arguments, 1)));
  7075. },
  7076. carcBy: function carcBy(r, laf, sf, dx, dy) {
  7077. return this.push("a", [r, r, 0].concat(slice.call(arguments, 1)));
  7078. },
  7079. bezierTo: function bezierTo(x1, y1, x2, y2, x, y) {
  7080. return this.push("C", slice.call(arguments));
  7081. },
  7082. bezierBy: function bezierBy(dx1, dy1, dx2, dy2, dx, dy) {
  7083. return this.push("c", slice.call(arguments));
  7084. },
  7085. close: function close() {
  7086. return this.push("z");
  7087. }
  7088. });
  7089. return createClass("Path", {
  7090. base: Shape,
  7091. constructor: function constructor(data) {
  7092. this.callBase("path");
  7093. if (data) {
  7094. this.setPathData(data);
  7095. }
  7096. this.node.setAttribute("fill", svg.defaults.fill);
  7097. this.node.setAttribute("stroke", svg.defaults.stroke);
  7098. },
  7099. setPathData: function setPathData(data) {
  7100. data = data || "M0,0";
  7101. this.pathdata = g.pathToString(data);
  7102. this.node.setAttribute("d", this.pathdata);
  7103. this.trigger("shapeupdate", {
  7104. type: "pathdata"
  7105. });
  7106. return this;
  7107. },
  7108. getPathData: function getPathData() {
  7109. return this.pathdata || "";
  7110. },
  7111. getDrawer: function getDrawer() {
  7112. return new PathDrawer(this);
  7113. },
  7114. isClosed: function isClosed() {
  7115. var data = this.getPathData();
  7116. return !!~data.indexOf("z") || !!~data.indexOf("Z");
  7117. }
  7118. });
  7119. }
  7120. };
  7121. //src/graphic/pattern.js
  7122. _p[48] = {
  7123. value: function value(require, exports, module) {
  7124. var Resource = _p.r(59);
  7125. var ShapeContainer = _p.r(62);
  7126. var svg = _p.r(68);
  7127. return _p.r(11).createClass("PatternBrush", {
  7128. base: Resource,
  7129. mixins: [ShapeContainer],
  7130. constructor: function constructor(paper) {
  7131. this.callBase("pattern", paper);
  7132. this.node.setAttribute("patternUnits", "userSpaceOnUse");
  7133. },
  7134. setX: function setX(x) {
  7135. this.x = x;
  7136. this.node.setAttribute("x", x);
  7137. return this;
  7138. },
  7139. setY: function setY(y) {
  7140. this.y = y;
  7141. this.node.setAttribute("y", y);
  7142. return this;
  7143. },
  7144. setWidth: function setWidth(width) {
  7145. this.width = width;
  7146. this.node.setAttribute("width", width);
  7147. return this;
  7148. },
  7149. setHeight: function setHeight(height) {
  7150. this.height = height;
  7151. this.node.setAttribute("height", height);
  7152. return this;
  7153. },
  7154. getWidth: function getWidth() {
  7155. return this.width;
  7156. },
  7157. getHeight: function getHeight() {
  7158. return this.height;
  7159. }
  7160. });
  7161. }
  7162. };
  7163. //src/graphic/pen.js
  7164. _p[49] = {
  7165. value: function value(require, exports, module) {
  7166. var Color = _p.r(29);
  7167. return _p.r(11).createClass("Pen", {
  7168. constructor: function constructor(brush, width) {
  7169. this.brush = brush;
  7170. this.width = width || 1;
  7171. this.linecap = null;
  7172. this.linejoin = null;
  7173. this.dashArray = null;
  7174. this.opacity = 1;
  7175. },
  7176. getBrush: function getBrush() {
  7177. return this.brush;
  7178. },
  7179. setBrush: function setBrush(brush) {
  7180. this.brush = brush;
  7181. return this;
  7182. },
  7183. setColor: function setColor(color) {
  7184. return this.setBrush(color);
  7185. },
  7186. getColor: function getColor() {
  7187. return this.brush instanceof Color ? this.brush : null;
  7188. },
  7189. getWidth: function getWidth() {
  7190. return this.width;
  7191. },
  7192. setWidth: function setWidth(width) {
  7193. this.width = width;
  7194. return this;
  7195. },
  7196. getOpacity: function getOpacity() {
  7197. return this.opacity;
  7198. },
  7199. setOpacity: function setOpacity(opacity) {
  7200. this.opacity = opacity;
  7201. },
  7202. getLineCap: function getLineCap() {
  7203. return this.linecap;
  7204. },
  7205. setLineCap: function setLineCap(linecap) {
  7206. this.linecap = linecap;
  7207. return this;
  7208. },
  7209. getLineJoin: function getLineJoin() {
  7210. return this.linejoin;
  7211. },
  7212. setLineJoin: function setLineJoin(linejoin) {
  7213. this.linejoin = linejoin;
  7214. return this;
  7215. },
  7216. getDashArray: function getDashArray() {
  7217. return this.dashArray;
  7218. },
  7219. setDashArray: function setDashArray(dashArray) {
  7220. this.dashArray = dashArray;
  7221. return this;
  7222. },
  7223. stroke: function stroke(shape) {
  7224. var node = shape.node;
  7225. node.setAttribute("stroke", this.brush.toString());
  7226. node.setAttribute("stroke-width", this.getWidth());
  7227. if (this.getOpacity() < 1) {
  7228. node.setAttribute("stroke-opacity", this.getOpacity());
  7229. }
  7230. if (this.getLineCap()) {
  7231. node.setAttribute("stroke-linecap", this.getLineCap());
  7232. }
  7233. if (this.getLineJoin()) {
  7234. node.setAttribute("stroke-linejoin", this.getLineJoin());
  7235. }
  7236. if (this.getDashArray()) {
  7237. node.setAttribute("stroke-dasharray", this.getDashArray());
  7238. }
  7239. }
  7240. });
  7241. }
  7242. };
  7243. //src/graphic/pie.js
  7244. _p[50] = {
  7245. value: function value(require, exports, module) {
  7246. return _p.r(11).createClass({
  7247. base: _p.r(69),
  7248. constructor: function constructor(radius, angle, angleOffset) {
  7249. this.callBase([0, radius], angle, angleOffset);
  7250. },
  7251. getRadius: function getRadius() {
  7252. return this.getSectionArray()[1];
  7253. },
  7254. setRadius: function setRadius(radius) {
  7255. this.setSectionArray([0, radius]);
  7256. }
  7257. });
  7258. }
  7259. };
  7260. //src/graphic/point.js
  7261. /*
  7262. * 点对象抽象
  7263. */
  7264. _p[51] = {
  7265. value: function value(require, exports, module) {
  7266. /**
  7267. * @class kity.Point
  7268. * @description 表示一个点
  7269. */
  7270. var Point = _p.r(11).createClass("Point", {
  7271. /**
  7272. * @constructor
  7273. * @for kity.Point
  7274. * @description 指定默认的 x 和 y 创建一个点
  7275. *
  7276. * @param {Number} x 点的 x 坐标
  7277. * @param {Number} y 点的 y 坐标
  7278. */
  7279. constructor: function constructor(x, y) {
  7280. /**
  7281. * @property
  7282. * @for kity.Point
  7283. * @description 表示点的 x 坐标
  7284. * @type {Number}
  7285. */
  7286. this.x = x || 0;
  7287. /**
  7288. * @property
  7289. * @for kity.Point
  7290. * @description 表示点的 y 坐标
  7291. * @type {Number}
  7292. */
  7293. this.y = y || 0;
  7294. },
  7295. offset: function offset(dx, dy) {
  7296. if (arguments.length == 1) {
  7297. dy = dx.y;
  7298. dx = dx.x;
  7299. }
  7300. return new Point(this.x + dx, this.y + dy);
  7301. },
  7302. valueOf: function valueOf() {
  7303. return [this.x, this.y];
  7304. },
  7305. toString: function toString() {
  7306. return this.valueOf().join(" ");
  7307. },
  7308. spof: function spof() {
  7309. return new Point((this.x | 0) + .5, (this.y | 0) + .5);
  7310. },
  7311. round: function round() {
  7312. return new Point(this.x | 0, this.y | 0);
  7313. },
  7314. isOrigin: function isOrigin() {
  7315. return this.x === 0 && this.y === 0;
  7316. }
  7317. });
  7318. /**
  7319. * @static
  7320. * @method fromPolar()
  7321. * @for kity.Point
  7322. * @grammar kity.Point.fromPolar(radius, angle, unit) => kity.Point
  7323. * @param {Number} radius 极坐标中的半径
  7324. * @param {Number} angle 极坐标中的角度
  7325. * @param {String} unit 角度使用的单位,默认为 'deg' (角度),可以取值为 'rad',表示传入的是弧度值
  7326. */
  7327. Point.fromPolar = function (radius, angle, unit) {
  7328. if (unit != "rad") {
  7329. // deg to rad
  7330. angle = angle / 180 * Math.PI;
  7331. }
  7332. return new Point(radius * Math.cos(angle), radius * Math.sin(angle));
  7333. };
  7334. Point.parse = function (unknown) {
  7335. if (!unknown) return new Point();
  7336. if (unknown instanceof Point) {
  7337. return unknown;
  7338. }
  7339. if (typeof unknown == "string") {
  7340. return Point.parse(unknown.split(/\s*[\s,]\s*/));
  7341. }
  7342. if ("0" in unknown && "1" in unknown) {
  7343. return new Point(unknown[0], unknown[1]);
  7344. }
  7345. };
  7346. return Point;
  7347. }
  7348. };
  7349. //src/graphic/pointcontainer.js
  7350. /**
  7351. * 点集合容器
  7352. */
  7353. _p[52] = {
  7354. value: function value(require, exports, module) {
  7355. return _p.r(11).createClass("PointContainer", {
  7356. base: _p.r(30),
  7357. constructor: function constructor() {
  7358. this.callBase();
  7359. },
  7360. addPoint: function addPoint(point, pos) {
  7361. return this.addItem.apply(this, arguments);
  7362. },
  7363. prependPoint: function prependPoint() {
  7364. return this.prependItem.apply(this, arguments);
  7365. },
  7366. appendPoint: function appendPoint() {
  7367. return this.appendItem.apply(this, arguments);
  7368. },
  7369. removePoint: function removePoint(pos) {
  7370. return this.removeItem.apply(this, arguments);
  7371. },
  7372. addPoints: function addPoints() {
  7373. return this.addItems.apply(this, arguments);
  7374. },
  7375. setPoints: function setPoints() {
  7376. return this.setItems.apply(this, arguments);
  7377. },
  7378. getPoint: function getPoint() {
  7379. return this.getItem.apply(this, arguments);
  7380. },
  7381. getPoints: function getPoints() {
  7382. return this.getItems.apply(this, arguments);
  7383. },
  7384. getFirstPoint: function getFirstPoint() {
  7385. return this.getFirstItem.apply(this, arguments);
  7386. },
  7387. getLastPoint: function getLastPoint() {
  7388. return this.getLastItem.apply(this, arguments);
  7389. }
  7390. });
  7391. }
  7392. };
  7393. //src/graphic/poly.js
  7394. /*
  7395. * 通过点来决定图形的公共父类
  7396. */
  7397. _p[53] = {
  7398. value: function value(require, exports, module) {
  7399. var Utils = _p.r(12);
  7400. return _p.r(11).createClass("Poly", {
  7401. base: _p.r(47),
  7402. mixins: [_p.r(52)],
  7403. constructor: function constructor(points, closeable) {
  7404. this.callBase();
  7405. //是否可闭合
  7406. this.closeable = !!closeable;
  7407. this.setPoints(points || []);
  7408. this.changeable = true;
  7409. this.update();
  7410. },
  7411. //当点集合发生变化时采取的动作
  7412. onContainerChanged: function onContainerChanged() {
  7413. if (this.changeable) {
  7414. this.update();
  7415. }
  7416. },
  7417. update: function update() {
  7418. var drawer = this.getDrawer(),
  7419. points = this.getPoints();
  7420. drawer.clear();
  7421. if (!points.length) {
  7422. return this;
  7423. }
  7424. drawer.moveTo(points[0]);
  7425. for (var i = 1, point, len = points.length; i < len; i++) {
  7426. point = points[i];
  7427. drawer.lineTo(point);
  7428. }
  7429. if (this.closeable && points.length > 2) {
  7430. drawer.close();
  7431. }
  7432. return this;
  7433. }
  7434. });
  7435. }
  7436. };
  7437. //src/graphic/polygon.js
  7438. _p[54] = {
  7439. value: function value(require, exports, module) {
  7440. return _p.r(11).createClass("Polygon", {
  7441. base: _p.r(53),
  7442. constructor: function constructor(points) {
  7443. this.callBase(points, true);
  7444. }
  7445. });
  7446. }
  7447. };
  7448. //src/graphic/polyline.js
  7449. _p[55] = {
  7450. value: function value(require, exports, module) {
  7451. return _p.r(11).createClass("Polyline", {
  7452. base: _p.r(53),
  7453. constructor: function constructor(points) {
  7454. this.callBase(points);
  7455. }
  7456. });
  7457. }
  7458. };
  7459. //src/graphic/radialgradient.js
  7460. _p[56] = {
  7461. value: function value(require, exports, module) {
  7462. var Gradient = _p.r(36);
  7463. return _p.r(11).createClass("RadialGradientBrush", {
  7464. base: Gradient,
  7465. constructor: function constructor(paper) {
  7466. this.callBase("radialGradient", paper);
  7467. this.setCenter(.5, .5);
  7468. this.setFocal(.5, .5);
  7469. this.setRadius(.5);
  7470. },
  7471. setCenter: function setCenter(cx, cy) {
  7472. this.node.setAttribute("cx", cx);
  7473. this.node.setAttribute("cy", cy);
  7474. return this;
  7475. },
  7476. getCenter: function getCenter() {
  7477. return {
  7478. x: +this.node.getAttribute("cx"),
  7479. y: +this.node.getAttribute("cy")
  7480. };
  7481. },
  7482. setFocal: function setFocal(fx, fy) {
  7483. this.node.setAttribute("fx", fx);
  7484. this.node.setAttribute("fy", fy);
  7485. return this;
  7486. },
  7487. getFocal: function getFocal() {
  7488. return {
  7489. x: +this.node.getAttribute("fx"),
  7490. y: +this.node.getAttribute("fy")
  7491. };
  7492. },
  7493. setRadius: function setRadius(r) {
  7494. this.node.setAttribute("r", r);
  7495. return this;
  7496. },
  7497. getRadius: function getRadius() {
  7498. return +this.node.getAttribute("r");
  7499. }
  7500. });
  7501. }
  7502. };
  7503. //src/graphic/rect.js
  7504. _p[57] = {
  7505. value: function value(require, exports, module) {
  7506. var RectUtils = {},
  7507. Utils = _p.r(12),
  7508. Point = _p.r(51),
  7509. Box = _p.r(26);
  7510. Utils.extend(RectUtils, {
  7511. //根据传递进来的width、height和radius属性,
  7512. //获取最适合的radius值
  7513. formatRadius: function formatRadius(width, height, radius) {
  7514. var minValue = Math.floor(Math.min(width / 2, height / 2));
  7515. return Math.min(minValue, radius);
  7516. }
  7517. });
  7518. /**
  7519. * @class kity.Rect
  7520. * @description 表示一个矩形
  7521. * @base kity.Path
  7522. */
  7523. var Rect = _p.r(11).createClass("Rect", {
  7524. base: _p.r(47),
  7525. /**
  7526. * @constructor
  7527. * @for kity.Rect
  7528. * @grammar new kity.Rect(width, height, x, y, radius)
  7529. * @param {Number} width 矩形的初始化宽度
  7530. * @param {Number} height 矩形的初始化高度
  7531. * @param {Number} x 矩形的初始化 x 坐标
  7532. * @param {Number} y 矩形的初始化 y 坐标
  7533. * @param {Number} radius 矩形的初始化圆角大小
  7534. */
  7535. constructor: function constructor(width, height, x, y, radius) {
  7536. this.callBase();
  7537. this.x = x || 0;
  7538. this.y = y || 0;
  7539. this.width = width || 0;
  7540. this.height = height || 0;
  7541. this.radius = RectUtils.formatRadius(this.width, this.height, radius || 0);
  7542. this.update();
  7543. },
  7544. update: function update() {
  7545. var x = this.x,
  7546. y = this.y,
  7547. w = this.width,
  7548. h = this.height,
  7549. r = this.radius;
  7550. var drawer = this.getDrawer().redraw();
  7551. if (!r) {
  7552. // 直角
  7553. drawer.push("M", x, y);
  7554. drawer.push("h", w);
  7555. drawer.push("v", h);
  7556. drawer.push("h", -w);
  7557. drawer.push("z");
  7558. } else {
  7559. //圆角
  7560. w -= 2 * r;
  7561. h -= 2 * r;
  7562. drawer.push("M", x + r, y);
  7563. drawer.push("h", w);
  7564. drawer.push("a", r, r, 0, 0, 1, r, r);
  7565. drawer.push("v", h);
  7566. drawer.push("a", r, r, 0, 0, 1, -r, r);
  7567. drawer.push("h", -w);
  7568. drawer.push("a", r, r, 0, 0, 1, -r, -r);
  7569. drawer.push("v", -h);
  7570. drawer.push("a", r, r, 0, 0, 1, r, -r);
  7571. drawer.push("z");
  7572. }
  7573. drawer.done();
  7574. return this;
  7575. },
  7576. /**
  7577. * @method setWidth
  7578. * @for kity.Rect
  7579. * @grammar setWidth(width) => kity.Rect
  7580. * @description 设置矩形的宽度,设置后返回矩形实例本身
  7581. * @param {Number} width 宽度值
  7582. *
  7583. * @example
  7584. * ```js
  7585. * rect.setWidth(300);
  7586. * ```
  7587. */
  7588. setWidth: function setWidth(width) {
  7589. this.width = width;
  7590. return this.update();
  7591. },
  7592. /**
  7593. * @method setHeight
  7594. * @for kity.Rect
  7595. * @grammar setHeight(height) => kity.Rect
  7596. * @description 设置矩形的高度,设置后返回矩形实例本身
  7597. * @param {Number} height 高度值
  7598. *
  7599. * @example
  7600. * ```js
  7601. * rect.setHeight(200);
  7602. * ```
  7603. */
  7604. setHeight: function setHeight(height) {
  7605. this.height = height;
  7606. return this.update();
  7607. },
  7608. /**
  7609. * @method setSize
  7610. * @for kity.Rect
  7611. * @grammar setSize(width, height) => kity.Rect
  7612. * @description 设置矩形的尺寸,设置后返回矩形本身
  7613. * @param {Number} width 矩形的宽度值
  7614. * @param {Number} height 矩形的高度值
  7615. *
  7616. * @example
  7617. * ```js
  7618. * rect.setSize(300, 200);
  7619. * ```
  7620. */
  7621. setSize: function setSize(width, height) {
  7622. this.width = width;
  7623. this.height = height;
  7624. return this.update();
  7625. },
  7626. /**
  7627. * @method setBox
  7628. * @for kity.Rect
  7629. * @grammar setBox(box) => kity.Rect
  7630. * @description 使用一个 kity 的盒子数据,
  7631. * @param {kity.Box} box 盒子数据
  7632. */
  7633. setBox: function setBox(box) {
  7634. this.x = box.x;
  7635. this.y = box.y;
  7636. this.width = box.width;
  7637. this.height = box.height;
  7638. return this.update();
  7639. },
  7640. getBox: function getBox() {
  7641. return new Box(this.x, this.y, this.width, this.height);
  7642. },
  7643. getRadius: function getRadius() {
  7644. return this.radius;
  7645. },
  7646. setRadius: function setRadius(radius) {
  7647. this.radius = RectUtils.formatRadius(this.width, this.height, radius || 0);
  7648. return this.update();
  7649. },
  7650. getPosition: function getPosition() {
  7651. return new Point(this.x, this.y);
  7652. },
  7653. setPosition: function setPosition(x, y) {
  7654. if (arguments.length == 1) {
  7655. var p = Point.parse(arguments[0]);
  7656. y = p.y;
  7657. x = p.x;
  7658. }
  7659. this.x = x;
  7660. this.y = y;
  7661. return this.update();
  7662. },
  7663. getWidth: function getWidth() {
  7664. return this.width;
  7665. },
  7666. getHeight: function getHeight() {
  7667. return this.height;
  7668. },
  7669. getPositionX: function getPositionX() {
  7670. return this.x;
  7671. },
  7672. getPositionY: function getPositionY() {
  7673. return this.y;
  7674. },
  7675. setPositionX: function setPositionX(x) {
  7676. this.x = x;
  7677. return this.update();
  7678. },
  7679. setPositionY: function setPositionY(y) {
  7680. this.y = y;
  7681. return this.update();
  7682. }
  7683. });
  7684. return Rect;
  7685. }
  7686. };
  7687. //src/graphic/regularpolygon.js
  7688. _p[58] = {
  7689. value: function value(require, exports, module) {
  7690. var Point = _p.r(51);
  7691. return _p.r(11).createClass("RegularPolygon", {
  7692. base: _p.r(47),
  7693. constructor: function constructor(side, radius, x, y) {
  7694. this.callBase();
  7695. this.radius = radius || 0;
  7696. this.side = Math.max(side || 3, 3);
  7697. if (arguments.length > 2) {
  7698. if (arguments.length == 3) {
  7699. y = x.y;
  7700. x = x.x;
  7701. }
  7702. }
  7703. this.center = new Point(x, y);
  7704. this.draw();
  7705. },
  7706. getSide: function getSide() {
  7707. return this.side;
  7708. },
  7709. setSide: function setSide(side) {
  7710. this.side = side;
  7711. return this.draw();
  7712. },
  7713. getRadius: function getRadius() {
  7714. return this.radius;
  7715. },
  7716. setRadius: function setRadius(radius) {
  7717. this.radius = radius;
  7718. return this.draw();
  7719. },
  7720. draw: function draw() {
  7721. var radius = this.radius,
  7722. side = this.side,
  7723. step = Math.PI * 2 / side,
  7724. drawer = this.getDrawer(),
  7725. i;
  7726. drawer.clear();
  7727. drawer.moveTo(Point.fromPolar(radius, Math.PI / 2, "rad").offset(this.center));
  7728. for (i = 0; i <= side; i++) {
  7729. drawer.lineTo(Point.fromPolar(radius, step * i + Math.PI / 2, "rad").offset(this.center));
  7730. }
  7731. drawer.close();
  7732. return this;
  7733. }
  7734. });
  7735. }
  7736. };
  7737. //src/graphic/resource.js
  7738. /**
  7739. * @fileOverview
  7740. *
  7741. * 资源节点基类
  7742. *
  7743. * @author: techird
  7744. * @copyright: Baidu FEX, 2014
  7745. */
  7746. _p[59] = {
  7747. value: function value(require, exports, module) {
  7748. var svg = _p.r(68);
  7749. return _p.r(11).createClass("Resource", {
  7750. constructor: function constructor(nodeType, paper) {
  7751. this.callBase();
  7752. this.node = svg.createNode(nodeType);
  7753. if (paper) {
  7754. paper.addResource(this);
  7755. }
  7756. },
  7757. toString: function toString() {
  7758. return "url(#" + this.node.id + ")";
  7759. }
  7760. });
  7761. }
  7762. };
  7763. //src/graphic/ring.js
  7764. _p[60] = {
  7765. value: function value(require, exports, module) {
  7766. return _p.r(11).createClass({
  7767. base: _p.r(69),
  7768. constructor: function constructor(innerRadius, outerRadius) {
  7769. this.callBase([innerRadius, outerRadius], 360, 0);
  7770. },
  7771. getInnerRadius: function getInnerRadius() {
  7772. return this.getSectionArray()[0];
  7773. },
  7774. getOuterRadius: function getOuterRadius() {
  7775. return this.getSectionArray()[1];
  7776. },
  7777. setInnerRadius: function setInnerRadius(value) {
  7778. this.setSectionArray([value, this.getOuterRadius()]);
  7779. },
  7780. setOuterRadius: function setOuterRadius(value) {
  7781. this.setSectionArray([this.getInnerRadius(), value]);
  7782. }
  7783. });
  7784. }
  7785. };
  7786. //src/graphic/shape.js
  7787. _p[61] = {
  7788. value: function value(require, exports, module) {
  7789. var svg = _p.r(68);
  7790. var utils = _p.r(12);
  7791. var EventHandler = _p.r(34);
  7792. var Styled = _p.r(67);
  7793. var Data = _p.r(32);
  7794. var Matrix = _p.r(44);
  7795. var Pen = _p.r(49);
  7796. var slice = Array.prototype.slice;
  7797. var Box = _p.r(26);
  7798. var Shape = _p.r(11).createClass("Shape", {
  7799. mixins: [EventHandler, Styled, Data],
  7800. constructor: function Shape(tagName) {
  7801. this.node = svg.createNode(tagName);
  7802. this.node.shape = this;
  7803. this.transform = {
  7804. translate: null,
  7805. rotate: null,
  7806. scale: null,
  7807. matrix: null
  7808. };
  7809. this.callMixin();
  7810. },
  7811. getId: function getId() {
  7812. return this.node.id;
  7813. },
  7814. setId: function setId(id) {
  7815. this.node.id = id;
  7816. return this;
  7817. },
  7818. getNode: function getNode() {
  7819. return this.node;
  7820. },
  7821. getBoundaryBox: function getBoundaryBox() {
  7822. var box;
  7823. try {
  7824. box = this.node.getBBox();
  7825. } catch (e) {
  7826. box = {
  7827. x: this.node.clientLeft,
  7828. y: this.node.clientTop,
  7829. width: this.node.clientWidth,
  7830. height: this.node.clientHeight
  7831. };
  7832. }
  7833. return new Box(box);
  7834. },
  7835. getRenderBox: function getRenderBox(refer) {
  7836. var box = this.getBoundaryBox();
  7837. var matrix = this.getTransform(refer);
  7838. return matrix.transformBox(box);
  7839. },
  7840. getWidth: function getWidth() {
  7841. return this.getRenderBox().width;
  7842. },
  7843. getHeight: function getHeight() {
  7844. return this.getRenderBox().height;
  7845. },
  7846. getSize: function getSize() {
  7847. var box = this.getRenderBox();
  7848. delete box.x;
  7849. delete box.y;
  7850. return box;
  7851. },
  7852. setOpacity: function setOpacity(value) {
  7853. this.node.setAttribute("opacity", value);
  7854. return this;
  7855. },
  7856. getOpacity: function getOpacity() {
  7857. var opacity = this.node.getAttribute("opacity");
  7858. return opacity ? +opacity : 1;
  7859. },
  7860. setVisible: function setVisible(value) {
  7861. if (value) {
  7862. this.node.removeAttribute("display");
  7863. } else {
  7864. this.node.setAttribute("display", "none");
  7865. }
  7866. return this;
  7867. },
  7868. getVisible: function getVisible() {
  7869. this.node.getAttribute("display");
  7870. },
  7871. hasAncestor: function hasAncestor(node) {
  7872. var parent = this.container;
  7873. while (parent) {
  7874. if (parent === node) {
  7875. return true;
  7876. }
  7877. parent = parent.container;
  7878. }
  7879. return false;
  7880. },
  7881. getTransform: function getTransform(refer) {
  7882. return Matrix.getCTM(this, refer);
  7883. },
  7884. clearTransform: function clearTransform() {
  7885. this.node.removeAttribute("transform");
  7886. this.transform = {
  7887. translate: null,
  7888. rotate: null,
  7889. scale: null,
  7890. matrix: null
  7891. };
  7892. this.trigger("shapeupdate", {
  7893. type: "transform"
  7894. });
  7895. return this;
  7896. },
  7897. _applyTransform: function _applyTransform() {
  7898. var t = this.transform,
  7899. result = [];
  7900. if (t.translate) {
  7901. result.push(["translate(", t.translate, ")"]);
  7902. }
  7903. if (t.rotate) {
  7904. result.push(["rotate(", t.rotate, ")"]);
  7905. }
  7906. if (t.scale) {
  7907. result.push(["scale(", t.scale, ")"]);
  7908. }
  7909. if (t.matrix) {
  7910. result.push(["matrix(", t.matrix, ")"]);
  7911. }
  7912. this.node.setAttribute("transform", utils.flatten(result).join(" "));
  7913. return this;
  7914. },
  7915. setMatrix: function setMatrix(m) {
  7916. this.transform.matrix = m;
  7917. return this._applyTransform();
  7918. },
  7919. setTranslate: function setTranslate(t) {
  7920. this.transform.translate = t !== null && slice.call(arguments) || null;
  7921. return this._applyTransform();
  7922. },
  7923. setRotate: function setRotate(r) {
  7924. this.transform.rotate = r !== null && slice.call(arguments) || null;
  7925. return this._applyTransform();
  7926. },
  7927. setScale: function setScale(s) {
  7928. this.transform.scale = s !== null && slice.call(arguments) || null;
  7929. return this._applyTransform();
  7930. },
  7931. translate: function translate(dx, dy) {
  7932. var m = this.transform.matrix || new Matrix();
  7933. if (dy === undefined) {
  7934. dy = 0;
  7935. }
  7936. this.transform.matrix = m.translate(dx, dy);
  7937. return this._applyTransform();
  7938. },
  7939. rotate: function rotate(deg) {
  7940. var m = this.transform.matrix || new Matrix();
  7941. this.transform.matrix = m.rotate(deg);
  7942. return this._applyTransform();
  7943. },
  7944. scale: function scale(sx, sy) {
  7945. var m = this.transform.matrix || new Matrix();
  7946. if (sy === undefined) {
  7947. sy = sx;
  7948. }
  7949. this.transform.matrix = m.scale(sx, sy);
  7950. return this._applyTransform();
  7951. },
  7952. skew: function skew(sx, sy) {
  7953. var m = this.transform.matrix || new Matrix();
  7954. if (sy === undefined) {
  7955. sy = sx;
  7956. }
  7957. this.transform.matrix = m.skew(sx, sy);
  7958. return this._applyTransform();
  7959. },
  7960. stroke: function stroke(pen, width) {
  7961. if (pen && pen.stroke) {
  7962. pen.stroke(this);
  7963. } else if (pen) {
  7964. // 字符串或重写了 toString 的对象
  7965. this.node.setAttribute("stroke", pen.toString());
  7966. if (width) {
  7967. this.node.setAttribute("stroke-width", width);
  7968. }
  7969. } else if (pen === null) {
  7970. this.node.removeAttribute("stroe");
  7971. }
  7972. return this;
  7973. },
  7974. fill: function fill(brush) {
  7975. // 字符串或重写了 toString 的对象
  7976. if (brush) {
  7977. this.node.setAttribute("fill", brush.toString());
  7978. }
  7979. if (brush === null) {
  7980. this.node.removeAttribute("fill");
  7981. }
  7982. return this;
  7983. },
  7984. setAttr: function setAttr(a, v) {
  7985. var me = this;
  7986. if (utils.isObject(a)) {
  7987. utils.each(a, function (val, key) {
  7988. me.setAttr(key, val);
  7989. });
  7990. }
  7991. if (v === undefined || v === null || v === "") {
  7992. this.node.removeAttribute(a);
  7993. } else {
  7994. this.node.setAttribute(a, v);
  7995. }
  7996. return this;
  7997. },
  7998. getAttr: function getAttr(a) {
  7999. return this.node.getAttribute(a);
  8000. }
  8001. });
  8002. return Shape;
  8003. }
  8004. };
  8005. //src/graphic/shapecontainer.js
  8006. _p[62] = {
  8007. value: function value(require, exports, module) {
  8008. var Container = _p.r(30);
  8009. var utils = _p.r(12);
  8010. var ShapeContainer = _p.r(11).createClass("ShapeContainer", {
  8011. base: Container,
  8012. isShapeContainer: true,
  8013. /* private */
  8014. handleAdd: function handleAdd(shape, index) {
  8015. var parent = this.getShapeNode();
  8016. parent.insertBefore(shape.node, parent.childNodes[index] || null);
  8017. shape.trigger("add", {
  8018. container: this
  8019. });
  8020. if (shape.notifyTreeModification) {
  8021. shape.notifyTreeModification("treeadd", this);
  8022. }
  8023. },
  8024. /* private */
  8025. handleRemove: function handleRemove(shape, index) {
  8026. var parent = this.getShapeNode();
  8027. parent.removeChild(shape.node);
  8028. shape.trigger("remove", {
  8029. container: this
  8030. });
  8031. if (shape.notifyTreeModification) {
  8032. shape.notifyTreeModification("treeremove", this);
  8033. }
  8034. },
  8035. /* private */
  8036. notifyTreeModification: function notifyTreeModification(type, container) {
  8037. this.eachItem(function (index, shape) {
  8038. if (shape.notifyTreeModification) {
  8039. shape.notifyTreeModification(type, container);
  8040. }
  8041. shape.trigger(type, {
  8042. container: container
  8043. });
  8044. });
  8045. },
  8046. /* public */
  8047. getShape: function getShape(index) {
  8048. return this.getItem(index);
  8049. },
  8050. /* public */
  8051. addShape: function addShape(shape, index) {
  8052. return this.addItem(shape, index);
  8053. },
  8054. put: function put(shape) {
  8055. this.addShape(shape);
  8056. return shape;
  8057. },
  8058. appendShape: function appendShape(shape) {
  8059. return this.addShape(shape);
  8060. },
  8061. prependShape: function prependShape(shape) {
  8062. return this.addShape(shape, 0);
  8063. },
  8064. replaceShape: function replaceShape(replacer, origin) {
  8065. var index = this.indexOf(origin);
  8066. if (index === -1) {
  8067. return;
  8068. }
  8069. this.removeShape(index);
  8070. this.addShape(replacer, index);
  8071. return this;
  8072. },
  8073. addShapeBefore: function addShapeBefore(shape, refer) {
  8074. var index = this.indexOf(refer);
  8075. return this.addShape(shape, index);
  8076. },
  8077. addShapeAfter: function addShapeAfter(shape, refer) {
  8078. var index = this.indexOf(refer);
  8079. return this.addShape(shape, index === -1 ? undefined : index + 1);
  8080. },
  8081. /* public */
  8082. addShapes: function addShapes(shapes) {
  8083. return this.addItems(shapes);
  8084. },
  8085. /* public */
  8086. removeShape: function removeShape(index) {
  8087. return this.removeItem(index);
  8088. },
  8089. getShapes: function getShapes() {
  8090. return this.getItems();
  8091. },
  8092. getShapesByType: function getShapesByType(name) {
  8093. var shapes = [];
  8094. function getShapes(shape) {
  8095. if (name.toLowerCase() == shape.getType().toLowerCase()) {
  8096. shapes.push(shape);
  8097. }
  8098. if (shape.isShapeContainer) {
  8099. utils.each(shape.getShapes(), function (n) {
  8100. getShapes(n);
  8101. });
  8102. }
  8103. }
  8104. getShapes(this);
  8105. return shapes;
  8106. },
  8107. /* public */
  8108. getShapeById: function getShapeById(id) {
  8109. return this.getShapeNode().getElementById(id).shape;
  8110. },
  8111. arrangeShape: function arrangeShape(shape, index) {
  8112. return this.removeShape(shape).addShape(shape, index);
  8113. },
  8114. /* protected */
  8115. getShapeNode: function getShapeNode() {
  8116. return this.shapeNode || this.node;
  8117. }
  8118. });
  8119. var Shape = _p.r(61);
  8120. _p.r(11).extendClass(Shape, {
  8121. bringTo: function bringTo(index) {
  8122. this.container.arrangeShape(this, index);
  8123. return this;
  8124. },
  8125. bringFront: function bringFront() {
  8126. return this.bringTo(this.container.indexOf(this) + 1);
  8127. },
  8128. bringBack: function bringBack() {
  8129. return this.bringTo(this.container.indexOf(this) - 1);
  8130. },
  8131. bringTop: function bringTop() {
  8132. this.container.removeShape(this).addShape(this);
  8133. return this;
  8134. },
  8135. bringRear: function bringRear() {
  8136. return this.bringTo(0);
  8137. },
  8138. bringRefer: function bringRefer(referShape, offset) {
  8139. if (referShape.container) {
  8140. if (this.remove) {
  8141. this.remove();
  8142. }
  8143. referShape.container.addShape(this, referShape.container.indexOf(referShape) + (offset || 0));
  8144. }
  8145. return this;
  8146. },
  8147. bringAbove: function bringAbove(referShape) {
  8148. return this.bringRefer(referShape);
  8149. },
  8150. bringBelow: function bringBelow(referShape) {
  8151. return this.bringRefer(referShape, 1);
  8152. },
  8153. replaceBy: function replaceBy(newShape) {
  8154. if (this.container) {
  8155. newShape.bringAbove(this);
  8156. this.remove();
  8157. }
  8158. return this;
  8159. }
  8160. });
  8161. return ShapeContainer;
  8162. }
  8163. };
  8164. //src/graphic/shapeevent.js
  8165. /*
  8166. * 图形事件包装类
  8167. * */
  8168. _p[63] = {
  8169. value: function value(require, exprots, module) {
  8170. var Matrix = _p.r(44),
  8171. Utils = _p.r(12),
  8172. Point = _p.r(51);
  8173. return _p.r(11).createClass("ShapeEvent", {
  8174. constructor: function constructor(event) {
  8175. var target = null;
  8176. // dom 事件封装对象
  8177. if (!Utils.isObject(event.target)) {
  8178. this.type = event.type;
  8179. target = event.target;
  8180. // use标签有特殊属性, 需要区别对待
  8181. if (target.correspondingUseElement) {
  8182. target = target.correspondingUseElement;
  8183. }
  8184. this.originEvent = event;
  8185. this.targetShape = target.shape || target.paper || event.currentTarget && (event.currentTarget.shape || event.currentTarget.paper);
  8186. if (event._kityParam) {
  8187. Utils.extend(this, event._kityParam);
  8188. }
  8189. } else {
  8190. Utils.extend(this, event);
  8191. }
  8192. },
  8193. preventDefault: function preventDefault() {
  8194. var evt = this.originEvent;
  8195. if (!evt) {
  8196. return true;
  8197. }
  8198. if (evt.preventDefault) {
  8199. evt.preventDefault();
  8200. return evt.cancelable;
  8201. } else {
  8202. evt.returnValue = false;
  8203. return true;
  8204. }
  8205. },
  8206. //当前鼠标事件在用户坐标系中点击的点的坐标位置
  8207. getPosition: function getPosition(refer, touchIndex) {
  8208. if (!this.originEvent) {
  8209. return null;
  8210. }
  8211. var eventClient = this.originEvent.touches ? this.originEvent.touches[touchIndex || 0] : this.originEvent;
  8212. var target = this.targetShape;
  8213. var targetNode = target.shapeNode || target.node;
  8214. var pScreen = new Point(eventClient && eventClient.clientX || 0, eventClient && eventClient.clientY || 0);
  8215. var pTarget = Matrix.transformPoint(pScreen, targetNode.getScreenCTM().inverse());
  8216. var pRefer = Matrix.getCTM(target, refer || "view").transformPoint(pTarget);
  8217. return pRefer;
  8218. },
  8219. stopPropagation: function stopPropagation() {
  8220. var evt = this.originEvent;
  8221. if (!evt) {
  8222. return true;
  8223. }
  8224. if (evt.stopPropagation) {
  8225. evt.stopPropagation();
  8226. } else {
  8227. evt.cancelBubble = false;
  8228. }
  8229. }
  8230. });
  8231. }
  8232. };
  8233. //src/graphic/shapepoint.js
  8234. /*
  8235. * 图形上的点抽象
  8236. */
  8237. _p[64] = {
  8238. value: function value(require, exports, module) {
  8239. return _p.r(11).createClass("ShapePoint", {
  8240. base: _p.r(51),
  8241. constructor: function constructor(px, py) {
  8242. this.callBase(px, py);
  8243. },
  8244. setX: function setX(x) {
  8245. return this.setPoint(x, this.y);
  8246. },
  8247. setY: function setY(y) {
  8248. return this.setPoint(this.x, y);
  8249. },
  8250. setPoint: function setPoint(x, y) {
  8251. this.x = x;
  8252. this.y = y;
  8253. this.update();
  8254. return this;
  8255. },
  8256. getPoint: function getPoint() {
  8257. return this;
  8258. },
  8259. update: function update() {
  8260. if (this.container && this.container.update) {
  8261. this.container.update();
  8262. }
  8263. return this;
  8264. }
  8265. });
  8266. }
  8267. };
  8268. //src/graphic/standardcolor.js
  8269. /**
  8270. * 标准颜色映射
  8271. */
  8272. _p[65] = {
  8273. value: {
  8274. COLOR_STANDARD: {
  8275. aliceblue: "#f0f8ff",
  8276. antiquewhite: "#faebd7",
  8277. aqua: "#00ffff",
  8278. aquamarine: "#7fffd4",
  8279. azure: "#f0ffff",
  8280. beige: "#f5f5dc",
  8281. bisque: "#ffe4c4",
  8282. black: "#000000",
  8283. blanchedalmond: "#ffebcd",
  8284. blue: "#0000ff",
  8285. blueviolet: "#8a2be2",
  8286. brown: "#a52a2a",
  8287. burlywood: "#deb887",
  8288. cadetblue: "#5f9ea0",
  8289. chartreuse: "#7fff00",
  8290. chocolate: "#d2691e",
  8291. coral: "#ff7f50",
  8292. cornflowerblue: "#6495ed",
  8293. cornsilk: "#fff8dc",
  8294. crimson: "#dc143c",
  8295. cyan: "#00ffff",
  8296. darkblue: "#00008b",
  8297. darkcyan: "#008b8b",
  8298. darkgoldenrod: "#b8860b",
  8299. darkgray: "#a9a9a9",
  8300. darkgreen: "#006400",
  8301. darkgrey: "#a9a9a9",
  8302. darkkhaki: "#bdb76b",
  8303. darkmagenta: "#8b008b",
  8304. darkolivegreen: "#556b2f",
  8305. darkorange: "#ff8c00",
  8306. darkorchid: "#9932cc",
  8307. darkred: "#8b0000",
  8308. darksalmon: "#e9967a",
  8309. darkseagreen: "#8fbc8f",
  8310. darkslateblue: "#483d8b",
  8311. darkslategray: "#2f4f4f",
  8312. darkslategrey: "#2f4f4f",
  8313. darkturquoise: "#00ced1",
  8314. darkviolet: "#9400d3",
  8315. deeppink: "#ff1493",
  8316. deepskyblue: "#00bfff",
  8317. dimgray: "#696969",
  8318. dimgrey: "#696969",
  8319. dodgerblue: "#1e90ff",
  8320. firebrick: "#b22222",
  8321. floralwhite: "#fffaf0",
  8322. forestgreen: "#228b22",
  8323. fuchsia: "#ff00ff",
  8324. gainsboro: "#dcdcdc",
  8325. ghostwhite: "#f8f8ff",
  8326. gold: "#ffd700",
  8327. goldenrod: "#daa520",
  8328. gray: "#808080",
  8329. green: "#008000",
  8330. greenyellow: "#adff2f",
  8331. grey: "#808080",
  8332. honeydew: "#f0fff0",
  8333. hotpink: "#ff69b4",
  8334. indianred: "#cd5c5c",
  8335. indigo: "#4b0082",
  8336. ivory: "#fffff0",
  8337. khaki: "#f0e68c",
  8338. lavender: "#e6e6fa",
  8339. lavenderblush: "#fff0f5",
  8340. lawngreen: "#7cfc00",
  8341. lemonchiffon: "#fffacd",
  8342. lightblue: "#add8e6",
  8343. lightcoral: "#f08080",
  8344. lightcyan: "#e0ffff",
  8345. lightgoldenrodyellow: "#fafad2",
  8346. lightgray: "#d3d3d3",
  8347. lightgreen: "#90ee90",
  8348. lightgrey: "#d3d3d3",
  8349. lightpink: "#ffb6c1",
  8350. lightsalmon: "#ffa07a",
  8351. lightseagreen: "#20b2aa",
  8352. lightskyblue: "#87cefa",
  8353. lightslategray: "#778899",
  8354. lightslategrey: "#778899",
  8355. lightsteelblue: "#b0c4de",
  8356. lightyellow: "#ffffe0",
  8357. lime: "#00ff00",
  8358. limegreen: "#32cd32",
  8359. linen: "#faf0e6",
  8360. magenta: "#ff00ff",
  8361. maroon: "#800000",
  8362. mediumaquamarine: "#66cdaa",
  8363. mediumblue: "#0000cd",
  8364. mediumorchid: "#ba55d3",
  8365. mediumpurple: "#9370db",
  8366. mediumseagreen: "#3cb371",
  8367. mediumslateblue: "#7b68ee",
  8368. mediumspringgreen: "#00fa9a",
  8369. mediumturquoise: "#48d1cc",
  8370. mediumvioletred: "#c71585",
  8371. midnightblue: "#191970",
  8372. mintcream: "#f5fffa",
  8373. mistyrose: "#ffe4e1",
  8374. moccasin: "#ffe4b5",
  8375. navajowhite: "#ffdead",
  8376. navy: "#000080",
  8377. oldlace: "#fdf5e6",
  8378. olive: "#808000",
  8379. olivedrab: "#6b8e23",
  8380. orange: "#ffa500",
  8381. orangered: "#ff4500",
  8382. orchid: "#da70d6",
  8383. palegoldenrod: "#eee8aa",
  8384. palegreen: "#98fb98",
  8385. paleturquoise: "#afeeee",
  8386. palevioletred: "#db7093",
  8387. papayawhip: "#ffefd5",
  8388. peachpuff: "#ffdab9",
  8389. peru: "#cd853f",
  8390. pink: "#ffc0cb",
  8391. plum: "#dda0dd",
  8392. powderblue: "#b0e0e6",
  8393. purple: "#800080",
  8394. red: "#ff0000",
  8395. rosybrown: "#bc8f8f",
  8396. royalblue: "#4169e1",
  8397. saddlebrown: "#8b4513",
  8398. salmon: "#fa8072",
  8399. sandybrown: "#f4a460",
  8400. seagreen: "#2e8b57",
  8401. seashell: "#fff5ee",
  8402. sienna: "#a0522d",
  8403. silver: "#c0c0c0",
  8404. skyblue: "#87ceeb",
  8405. slateblue: "#6a5acd",
  8406. slategray: "#708090",
  8407. slategrey: "#708090",
  8408. snow: "#fffafa",
  8409. springgreen: "#00ff7f",
  8410. steelblue: "#4682b4",
  8411. tan: "#d2b48c",
  8412. teal: "#008080",
  8413. thistle: "#d8bfd8",
  8414. tomato: "#ff6347",
  8415. turquoise: "#40e0d0",
  8416. violet: "#ee82ee",
  8417. wheat: "#f5deb3",
  8418. white: "#ffffff",
  8419. whitesmoke: "#f5f5f5",
  8420. yellow: "#ffff00"
  8421. },
  8422. //标准扩展
  8423. EXTEND_STANDARD: {}
  8424. }
  8425. };
  8426. //src/graphic/star.js
  8427. _p[66] = {
  8428. value: function value(require, exports, module) {
  8429. /**
  8430. * @see http://www.jdawiseman.com/papers/easymath/surds_star_inner_radius.html
  8431. */
  8432. var defaultRatioForStar = {
  8433. "3": .2,
  8434. // yy
  8435. "5": .38196601125,
  8436. "6": .57735026919,
  8437. "8": .541196100146,
  8438. "10": .726542528005,
  8439. "12": .707106781187
  8440. };
  8441. var Point = _p.r(51);
  8442. return _p.r(11).createClass("Star", {
  8443. base: _p.r(47),
  8444. constructor: function constructor(vertex, radius, shrink, offset, angleOffset) {
  8445. this.callBase();
  8446. this.vertex = vertex || 3;
  8447. this.radius = radius || 0;
  8448. this.shrink = shrink;
  8449. this.offset = offset || new Point(0, 0);
  8450. this.angleOffset = angleOffset || 0;
  8451. this.draw();
  8452. },
  8453. getVertex: function getVertex() {
  8454. return this.vertex;
  8455. },
  8456. setVertex: function setVertex(value) {
  8457. this.vertex = value;
  8458. return this.draw();
  8459. },
  8460. getRadius: function getRadius() {
  8461. return this.radius;
  8462. },
  8463. setRadius: function setRadius(value) {
  8464. this.radius = value;
  8465. return this.draw();
  8466. },
  8467. getShrink: function getShrink() {
  8468. return this.shrink;
  8469. },
  8470. setShrink: function setShrink(value) {
  8471. this.shrink = value;
  8472. return this.draw();
  8473. },
  8474. getOffset: function getOffset() {
  8475. return this.offset;
  8476. },
  8477. setOffset: function setOffset(value) {
  8478. this.offset = value;
  8479. return this.draw();
  8480. },
  8481. getAngleOffset: function getAngleOffset() {
  8482. return this.angleOffset;
  8483. },
  8484. setAngleOffset: function setAngleOffset(value) {
  8485. this.angleOffset = value;
  8486. return this.draw();
  8487. },
  8488. draw: function draw() {
  8489. var innerRadius = this.radius,
  8490. outerRadius = this.radius * (this.shrink || defaultRatioForStar[this.vertex] || .5),
  8491. vertex = this.vertex,
  8492. offset = this.offset,
  8493. angleStart = 90,
  8494. angleStep = 180 / vertex,
  8495. angleOffset = this.angleOffset,
  8496. drawer = this.getDrawer(),
  8497. i,
  8498. angle;
  8499. drawer.clear();
  8500. drawer.moveTo(Point.fromPolar(outerRadius, angleStart));
  8501. for (i = 1; i <= vertex * 2; i++) {
  8502. angle = angleStart + angleStep * i;
  8503. // 绘制内点
  8504. if (i % 2) {
  8505. drawer.lineTo(Point.fromPolar(innerRadius, angle + angleOffset).offset(offset));
  8506. } else {
  8507. drawer.lineTo(Point.fromPolar(outerRadius, angle));
  8508. }
  8509. }
  8510. drawer.close();
  8511. }
  8512. });
  8513. }
  8514. };
  8515. //src/graphic/styled.js
  8516. _p[67] = {
  8517. value: function value(require, exports, module) {
  8518. // polyfill for ie
  8519. var ClassList = _p.r(11).createClass("ClassList", {
  8520. constructor: function constructor(node) {
  8521. this._node = node;
  8522. this._list = node.className.toString().split(" ");
  8523. },
  8524. _update: function _update() {
  8525. this._node.className = this._list.join(" ");
  8526. },
  8527. add: function add(name) {
  8528. this._list.push(name);
  8529. this._update();
  8530. },
  8531. remove: function remove(name) {
  8532. var index = this._list.indexOf(name);
  8533. if (~index) {
  8534. this._list.splice(index, 1);
  8535. }
  8536. this._update();
  8537. },
  8538. contains: function contains(name) {
  8539. return !!~this._list.indexOf(name);
  8540. }
  8541. });
  8542. function getClassList(node) {
  8543. if (!node.classList) {
  8544. node.classList = new ClassList(node);
  8545. }
  8546. return node.classList;
  8547. }
  8548. return _p.r(11).createClass("Styled", {
  8549. addClass: function addClass(name) {
  8550. getClassList(this.node).add(name);
  8551. return this;
  8552. },
  8553. removeClass: function removeClass(name) {
  8554. getClassList(this.node).remove(name);
  8555. return this;
  8556. },
  8557. hasClass: function hasClass(name) {
  8558. return getClassList(this.node).contains(name);
  8559. },
  8560. setStyle: function setStyle(styles) {
  8561. if (arguments.length == 2) {
  8562. this.node.style[arguments[0]] = arguments[1];
  8563. return this;
  8564. }
  8565. for (var name in styles) {
  8566. if (styles.hasOwnProperty(name)) {
  8567. this.node.style[name] = styles[name];
  8568. }
  8569. }
  8570. return this;
  8571. }
  8572. });
  8573. }
  8574. };
  8575. //src/graphic/svg.js
  8576. _p[68] = {
  8577. value: function value(require, exports, module) {
  8578. var doc = document;
  8579. var id = 0;
  8580. var svg = {
  8581. createNode: function createNode(name) {
  8582. var node = doc.createElementNS(svg.ns, name);
  8583. node.id = "kity_" + name + "_" + id++;
  8584. return node;
  8585. },
  8586. defaults: {
  8587. stroke: "none",
  8588. fill: "none"
  8589. },
  8590. xlink: "http://www.w3.org/1999/xlink",
  8591. ns: "http://www.w3.org/2000/svg"
  8592. };
  8593. return svg;
  8594. }
  8595. };
  8596. //src/graphic/sweep.js
  8597. _p[69] = {
  8598. value: function value(require, exports, module) {
  8599. var Point = _p.r(51);
  8600. return _p.r(11).createClass("Sweep", {
  8601. base: _p.r(47),
  8602. constructor: function constructor(sectionArray, angle, angleOffset) {
  8603. this.callBase();
  8604. this.sectionArray = sectionArray || [];
  8605. this.angle = angle || 0;
  8606. this.angleOffset = angleOffset || 0;
  8607. this.draw();
  8608. },
  8609. getSectionArray: function getSectionArray() {
  8610. return this.sectionArray;
  8611. },
  8612. setSectionArray: function setSectionArray(value) {
  8613. this.sectionArray = value;
  8614. return this.draw();
  8615. },
  8616. getAngle: function getAngle() {
  8617. return this.angle;
  8618. },
  8619. setAngle: function setAngle(value) {
  8620. this.angle = value;
  8621. return this.draw();
  8622. },
  8623. getAngleOffset: function getAngleOffset() {
  8624. return this.angleOffset;
  8625. },
  8626. setAngleOffset: function setAngleOffset(value) {
  8627. this.angleOffset = value;
  8628. return this.draw();
  8629. },
  8630. draw: function draw() {
  8631. var sectionArray = this.sectionArray,
  8632. i;
  8633. for (i = 0; i < sectionArray.length; i += 2) {
  8634. this.drawSection(sectionArray[i], sectionArray[i + 1]);
  8635. }
  8636. return this;
  8637. },
  8638. drawSection: function drawSection(from, to) {
  8639. var angleLength = this.angle && (this.angle % 360 ? this.angle % 360 : 360),
  8640. angleStart = this.angleOffset,
  8641. angleHalf = angleStart + angleLength / 2,
  8642. angleEnd = angleStart + angleLength,
  8643. sweepFlag = angleLength < 0 ? 0 : 1,
  8644. drawer = this.getDrawer();
  8645. drawer.redraw();
  8646. if (angleLength === 0) {
  8647. drawer.done();
  8648. return;
  8649. }
  8650. drawer.moveTo(Point.fromPolar(from, angleStart));
  8651. drawer.lineTo(Point.fromPolar(to, angleStart));
  8652. if (to) {
  8653. drawer.carcTo(to, 0, sweepFlag, Point.fromPolar(to, angleHalf));
  8654. drawer.carcTo(to, 0, sweepFlag, Point.fromPolar(to, angleEnd));
  8655. }
  8656. drawer.lineTo(Point.fromPolar(from, angleEnd));
  8657. if (from) {
  8658. drawer.carcTo(from, 0, sweepFlag, Point.fromPolar(from, angleHalf));
  8659. drawer.carcTo(from, 0, sweepFlag, Point.fromPolar(from, angleStart));
  8660. }
  8661. drawer.close();
  8662. drawer.done();
  8663. }
  8664. });
  8665. }
  8666. };
  8667. //src/graphic/text.js
  8668. _p[70] = {
  8669. value: function value(require, exports, module) {
  8670. var TextContent = _p.r(71);
  8671. var ShapeContainer = _p.r(62);
  8672. var svg = _p.r(68);
  8673. var utils = _p.r(12);
  8674. var offsetHash = {};
  8675. function getTextBoundOffset(text) {
  8676. var font = text._cachedFontHash;
  8677. if (offsetHash[font]) {
  8678. return offsetHash[font];
  8679. }
  8680. var textContent = text.getContent();
  8681. text.setContent("百度Fex");
  8682. var bbox = text.getBoundaryBox(),
  8683. y = text.getY();
  8684. if (!bbox.height) return {
  8685. top: 0,
  8686. bottom: 0,
  8687. middle: 0
  8688. };
  8689. var topOffset = y - bbox.y + +text.node.getAttribute("dy"),
  8690. bottomOffset = topOffset - bbox.height;
  8691. text.setContent(textContent);
  8692. return offsetHash[font] = {
  8693. top: topOffset,
  8694. bottom: bottomOffset,
  8695. middle: (topOffset + bottomOffset) / 2
  8696. };
  8697. }
  8698. return _p.r(11).createClass("Text", {
  8699. base: TextContent,
  8700. mixins: [ShapeContainer],
  8701. constructor: function constructor(content) {
  8702. this.callBase("text");
  8703. if (content !== undefined) {
  8704. this.setContent(content);
  8705. }
  8706. this._buildFontHash();
  8707. },
  8708. fixPosition: function fixPosition() {
  8709. if (!this.__fixedPosition) {
  8710. this.setVerticalAlign(this.getVerticalAlign());
  8711. }
  8712. },
  8713. _buildFontHash: function _buildFontHash() {
  8714. var style = window.getComputedStyle(this.node);
  8715. this._cachedFontHash = [style.fontFamily, style.fontSize, style.fontStretch, style.fontStyle, style.fontVariant, style.fontWeight].join("-");
  8716. },
  8717. _fontChanged: function _fontChanged(font) {
  8718. var last = this._lastFont;
  8719. var current = utils.extend({}, last, font);
  8720. if (!last) {
  8721. this._lastFont = font;
  8722. return true;
  8723. }
  8724. var changed = last.family != current.family || last.size != current.size || last.style != current.style || last.weight != current.weight;
  8725. this._lastFont = current;
  8726. return changed;
  8727. },
  8728. setX: function setX(x) {
  8729. this.node.setAttribute("x", x);
  8730. return this;
  8731. },
  8732. setPosition: function setPosition(x, y) {
  8733. return this.setX(x).setY(y);
  8734. },
  8735. setY: function setY(y) {
  8736. this.node.setAttribute("y", y);
  8737. return this;
  8738. },
  8739. getX: function getX() {
  8740. return +this.node.getAttribute("x") || 0;
  8741. },
  8742. getY: function getY() {
  8743. return +this.node.getAttribute("y") || 0;
  8744. },
  8745. setFont: function setFont(font) {
  8746. this.callBase(font);
  8747. if (this._fontChanged(font)) {
  8748. this._buildFontHash();
  8749. this.setVerticalAlign(this.getVerticalAlign());
  8750. }
  8751. return this;
  8752. },
  8753. setTextAnchor: function setTextAnchor(anchor) {
  8754. this.node.setAttribute("text-anchor", anchor);
  8755. return this;
  8756. },
  8757. getTextAnchor: function getTextAnchor() {
  8758. return this.node.getAttribute("text-anchor") || "start";
  8759. },
  8760. // top/bottom/middle/baseline
  8761. setVerticalAlign: function setVerticalAlign(align) {
  8762. this.whenPaperReady(function () {
  8763. var dy;
  8764. switch (align) {
  8765. case "top":
  8766. dy = getTextBoundOffset(this).top;
  8767. break;
  8768. case "bottom":
  8769. dy = getTextBoundOffset(this).bottom;
  8770. break;
  8771. case "middle":
  8772. dy = getTextBoundOffset(this).middle;
  8773. break;
  8774. default:
  8775. dy = 0;
  8776. }
  8777. if (dy) this.__fixedPosition = true;
  8778. this.node.setAttribute("dy", dy);
  8779. });
  8780. this.verticalAlign = align;
  8781. return this;
  8782. },
  8783. getVerticalAlign: function getVerticalAlign() {
  8784. return this.verticalAlign || "baseline";
  8785. },
  8786. setStartOffset: function setStartOffset(offset) {
  8787. // only for text path
  8788. if (this.shapeNode != this.node) {
  8789. this.shapeNode.setAttribute("startOffset", offset * 100 + "%");
  8790. }
  8791. },
  8792. addSpan: function addSpan(span) {
  8793. this.addShape(span);
  8794. return this;
  8795. },
  8796. setPath: function setPath(path) {
  8797. var textpath = this.shapeNode;
  8798. if (this.shapeNode == this.node) {
  8799. // 当前还不是 textpath
  8800. textpath = this.shapeNode = svg.createNode("textPath");
  8801. while (this.node.firstChild) {
  8802. this.shapeNode.appendChild(this.node.firstChild);
  8803. }
  8804. this.node.appendChild(textpath);
  8805. }
  8806. textpath.setAttributeNS(svg.xlink, "xlink:href", "#" + path.node.id);
  8807. this.setTextAnchor(this.getTextAnchor());
  8808. return this;
  8809. }
  8810. });
  8811. }
  8812. };
  8813. //src/graphic/textcontent.js
  8814. _p[71] = {
  8815. value: function value(require, exports, module) {
  8816. var Shape = _p.r(61);
  8817. return _p.r(11).createClass("TextContent", {
  8818. base: Shape,
  8819. constructor: function constructor(nodeType) {
  8820. // call shape constructor
  8821. this.callBase(nodeType);
  8822. this.shapeNode = this.shapeNode || this.node;
  8823. this.shapeNode.setAttribute("text-rendering", "geometricPrecision");
  8824. },
  8825. clearContent: function clearContent() {
  8826. while (this.shapeNode.firstChild) {
  8827. this.shapeNode.removeChild(this.shapeNode.firstChild);
  8828. }
  8829. return this;
  8830. },
  8831. setContent: function setContent(content) {
  8832. this.shapeNode.textContent = content;
  8833. return this;
  8834. },
  8835. getContent: function getContent() {
  8836. return this.shapeNode.textContent;
  8837. },
  8838. appendContent: function appendContent(content) {
  8839. this.shapeNode.textContent += content;
  8840. return this;
  8841. },
  8842. setSize: function setSize(value) {
  8843. return this.setFontSize(value);
  8844. },
  8845. setFontSize: function setFontSize(value) {
  8846. return this.setFont({
  8847. size: value
  8848. });
  8849. },
  8850. setFontFamily: function setFontFamily(value) {
  8851. return this.setFont({
  8852. family: value
  8853. });
  8854. },
  8855. setFontBold: function setFontBold(bold) {
  8856. return this.setFont({
  8857. weight: bold ? "bold" : "normal"
  8858. });
  8859. },
  8860. setFontItalic: function setFontItalic(italic) {
  8861. return this.setFont({
  8862. style: italic ? "italic" : "normal"
  8863. });
  8864. },
  8865. setFont: function setFont(font) {
  8866. var node = this.node;
  8867. ["family", "size", "weight", "style"].forEach(function (section) {
  8868. if (font[section] === null) {
  8869. node.removeAttribute("font-" + section);
  8870. } else if (font[section]) {
  8871. node.setAttribute("font-" + section, font[section]);
  8872. }
  8873. });
  8874. return this;
  8875. },
  8876. getExtentOfChar: function getExtentOfChar(index) {
  8877. return this.node.getExtentOfChar(index);
  8878. },
  8879. getRotationOfChar: function getRotationOfChar(index) {
  8880. return this.node.getRotationOfChar(index);
  8881. },
  8882. getCharNumAtPosition: function getCharNumAtPosition(x, y) {
  8883. return this.node.getCharNumAtPosition(this.node.viewportElement.createSVGPoint(x, y));
  8884. }
  8885. });
  8886. }
  8887. };
  8888. //src/graphic/textspan.js
  8889. _p[72] = {
  8890. value: function value(require, exports, module) {
  8891. var TextContent = _p.r(71);
  8892. var Styled = _p.r(67);
  8893. return _p.r(11).createClass("TextSpan", {
  8894. base: TextContent,
  8895. mixins: [Styled],
  8896. constructor: function constructor(content) {
  8897. this.callBase("tspan");
  8898. this.setContent(content);
  8899. }
  8900. });
  8901. }
  8902. };
  8903. //src/graphic/use.js
  8904. /*
  8905. * USE 功能
  8906. */
  8907. _p[73] = {
  8908. value: function value(require, exports, module) {
  8909. var Svg = _p.r(68);
  8910. var Class = _p.r(11);
  8911. var Use = Class.createClass("Use", {
  8912. base: _p.r(61),
  8913. constructor: function constructor(shape) {
  8914. this.callBase("use");
  8915. this.ref(shape);
  8916. },
  8917. ref: function ref(shape) {
  8918. if (!shape) {
  8919. this.node.removeAttributeNS(Svg.xlink, "xlink:href");
  8920. return this;
  8921. }
  8922. var shapeId = shape.getId();
  8923. if (shapeId) {
  8924. this.node.setAttributeNS(Svg.xlink, "xlink:href", "#" + shapeId);
  8925. }
  8926. // by techird
  8927. // 作为 Use 的图形,如果没有 fill 和 stroke,移除默认的 'none' 值,用于 Use 覆盖
  8928. if (shape.node.getAttribute("fill") === "none") {
  8929. shape.node.removeAttribute("fill");
  8930. }
  8931. if (shape.node.getAttribute("stroke") === "none") {
  8932. shape.node.removeAttribute("stroke");
  8933. }
  8934. return this;
  8935. }
  8936. });
  8937. var Shape = _p.r(61);
  8938. Class.extendClass(Shape, {
  8939. // fast-use
  8940. use: function use() {
  8941. return new Use(this);
  8942. }
  8943. });
  8944. return Use;
  8945. }
  8946. };
  8947. //src/graphic/vector.js
  8948. _p[74] = {
  8949. value: function value(require, exports, module) {
  8950. var Point = _p.r(51);
  8951. var Matrix = _p.r(44);
  8952. var Vector = _p.r(11).createClass("Vector", {
  8953. base: Point,
  8954. constructor: function constructor(x, y) {
  8955. this.callBase(x, y);
  8956. },
  8957. square: function square() {
  8958. return this.x * this.x + this.y * this.y;
  8959. },
  8960. length: function length() {
  8961. return Math.sqrt(this.square());
  8962. },
  8963. add: function add(q) {
  8964. return new Vector(this.x + q.x, this.y + q.y);
  8965. },
  8966. minus: function minus(q) {
  8967. return new Vector(this.x - q.x, this.y - q.y);
  8968. },
  8969. dot: function dot(q) {
  8970. return this.x * q.x + this.y * q.y;
  8971. },
  8972. project: function project(q) {
  8973. return q.multipy(this.dot(q) / q.square());
  8974. },
  8975. normalize: function normalize(length) {
  8976. if (length === undefined) {
  8977. length = 1;
  8978. }
  8979. return this.multipy(length / this.length());
  8980. },
  8981. multipy: function multipy(scale) {
  8982. return new Vector(this.x * scale, this.y * scale);
  8983. },
  8984. rotate: function rotate(angle, unit) {
  8985. if (unit == "rad") {
  8986. angle = angle / Math.PI * 180;
  8987. }
  8988. var p = new Matrix().rotate(angle).transformPoint(this);
  8989. return new Vector(p.x, p.y);
  8990. },
  8991. vertical: function vertical() {
  8992. return new Vector(this.y, -this.x);
  8993. },
  8994. reverse: function reverse() {
  8995. return this.multipy(-1);
  8996. },
  8997. getAngle: function getAngle() {
  8998. var length = this.length();
  8999. if (length === 0) return 0;
  9000. var rad = Math.acos(this.x / length);
  9001. var sign = this.y > 0 ? 1 : -1;
  9002. return sign * 180 * rad / Math.PI;
  9003. }
  9004. });
  9005. Vector.fromPoints = function (p1, p2) {
  9006. return new Vector(p2.x - p1.x, p2.y - p1.y);
  9007. };
  9008. Vector.fromPolar = function () {
  9009. var p = Point.fromPolar.apply(Point, arguments);
  9010. return new Vector(p.x, p.y);
  9011. };
  9012. _p.r(11).extendClass(Point, {
  9013. asVector: function asVector() {
  9014. return new Vector(this.x, this.y);
  9015. }
  9016. });
  9017. return Vector;
  9018. }
  9019. };
  9020. //src/graphic/view.js
  9021. _p[75] = {
  9022. value: function value(require, exports, module) {
  9023. var ShapeContainer = _p.r(62);
  9024. var ViewBox = _p.r(76);
  9025. return _p.r(11).createClass("View", {
  9026. mixins: [ShapeContainer, ViewBox],
  9027. base: _p.r(75),
  9028. constructor: function constructor() {
  9029. this.callBase("view");
  9030. }
  9031. });
  9032. }
  9033. };
  9034. //src/graphic/viewbox.js
  9035. _p[76] = {
  9036. value: function value(require, exports, module) {
  9037. return _p.r(11).createClass("ViewBox", {
  9038. getViewBox: function getViewBox() {
  9039. var attr = this.node.getAttribute("viewBox");
  9040. if (attr === null) {
  9041. // firefox:
  9042. // 1. viewBox 没有设置过的时候获得的是 null
  9043. // 2. svg 标签没有指定绝对大小的时候 clientWidth 和 clientHeigt 为 0,需要在父容器上查找
  9044. // TODO: 第 2 条取得的不准确(假如有 padding 之类的)
  9045. return {
  9046. x: 0,
  9047. y: 0,
  9048. width: this.node.clientWidth || this.node.parentNode.clientWidth,
  9049. height: this.node.clientHeight || this.node.parentNode.clientHeight
  9050. };
  9051. } else {
  9052. attr = attr.split(" ");
  9053. return {
  9054. x: +attr[0],
  9055. y: +attr[1],
  9056. width: +attr[2],
  9057. height: +attr[3]
  9058. };
  9059. }
  9060. },
  9061. setViewBox: function setViewBox(x, y, width, height) {
  9062. this.node.setAttribute("viewBox", [x, y, width, height].join(" "));
  9063. return this;
  9064. }
  9065. });
  9066. }
  9067. };
  9068. //src/kity.js
  9069. /**
  9070. * @fileOverview kity 暴露的方法或对象
  9071. */
  9072. _p[77] = {
  9073. value: function value(require, exports, module) {
  9074. var kity = {},
  9075. utils = _p.r(12);
  9076. kity.version = "2.0.0";
  9077. utils.extend(kity, {
  9078. // core
  9079. createClass: _p.r(11).createClass,
  9080. extendClass: _p.r(11).extendClass,
  9081. Utils: utils,
  9082. Browser: _p.r(10),
  9083. // shape
  9084. Box: _p.r(26),
  9085. Bezier: _p.r(24),
  9086. BezierPoint: _p.r(25),
  9087. Circle: _p.r(27),
  9088. Clip: _p.r(28),
  9089. Color: _p.r(29),
  9090. Container: _p.r(30),
  9091. Curve: _p.r(31),
  9092. Ellipse: _p.r(33),
  9093. Group: _p.r(37),
  9094. Gradient: _p.r(36),
  9095. HyperLink: _p.r(38),
  9096. Image: _p.r(39),
  9097. Line: _p.r(40),
  9098. LinearGradient: _p.r(41),
  9099. Mask: _p.r(43),
  9100. Matrix: _p.r(44),
  9101. Marker: _p.r(42),
  9102. Palette: _p.r(45),
  9103. Paper: _p.r(46),
  9104. Path: _p.r(47),
  9105. Pattern: _p.r(48),
  9106. Pen: _p.r(49),
  9107. Point: _p.r(51),
  9108. PointContainer: _p.r(52),
  9109. Polygon: _p.r(54),
  9110. Polyline: _p.r(55),
  9111. Pie: _p.r(50),
  9112. RadialGradient: _p.r(56),
  9113. Resource: _p.r(59),
  9114. Rect: _p.r(57),
  9115. RegularPolygon: _p.r(58),
  9116. Ring: _p.r(60),
  9117. Shape: _p.r(61),
  9118. ShapePoint: _p.r(64),
  9119. ShapeContainer: _p.r(62),
  9120. Sweep: _p.r(69),
  9121. Star: _p.r(66),
  9122. Text: _p.r(70),
  9123. TextSpan: _p.r(72),
  9124. Use: _p.r(73),
  9125. Vector: _p.r(74),
  9126. g: _p.r(35),
  9127. // animate
  9128. Animator: _p.r(0),
  9129. Easing: _p.r(1),
  9130. OpacityAnimator: _p.r(4),
  9131. RotateAnimator: _p.r(6),
  9132. ScaleAnimator: _p.r(7),
  9133. Timeline: _p.r(8),
  9134. TranslateAnimator: _p.r(9),
  9135. PathAnimator: _p.r(5),
  9136. MotionAnimator: _p.r(3),
  9137. requestFrame: _p.r(2).requestFrame,
  9138. releaseFrame: _p.r(2).releaseFrame,
  9139. // filter
  9140. Filter: _p.r(21),
  9141. GaussianblurFilter: _p.r(22),
  9142. ProjectionFilter: _p.r(23),
  9143. // effect
  9144. ColorMatrixEffect: _p.r(14),
  9145. CompositeEffect: _p.r(15),
  9146. ConvolveMatrixEffect: _p.r(16),
  9147. Effect: _p.r(17),
  9148. GaussianblurEffect: _p.r(18),
  9149. OffsetEffect: _p.r(19)
  9150. });
  9151. module.exports = kity;
  9152. }
  9153. };
  9154. var moduleMapping = {
  9155. "expose-kity": 13
  9156. };
  9157. function use(name) {
  9158. _p.r([moduleMapping[name]]);
  9159. }
  9160. use('expose-kity');
  9161. })();
  9162. /***/ }),
  9163. /***/ 367:
  9164. /***/ (function(module, exports, __webpack_require__) {
  9165. /* WEBPACK VAR INJECTION */(function(process, setImmediate) {var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  9166. /*!
  9167. * ====================================================
  9168. * Kity Minder Core - v1.4.50 - 2018-09-17
  9169. * https://github.com/fex-team/kityminder-core
  9170. * GitHub: https://github.com/fex-team/kityminder-core.git
  9171. * Copyright (c) 2018 Baidu FEX; Licensed BSD-3-Clause
  9172. * ====================================================
  9173. */
  9174. !function () {
  9175. function a(a) {
  9176. b.r([c[a]]);
  9177. }var b = { r: function r(a) {
  9178. if (b[a].inited) return b[a].value;if ("function" != typeof b[a].value) return b[a].inited = !0, b[a].value;var c = { exports: {} },
  9179. d = b[a].value(null, c.exports, c);if (b[a].inited = !0, b[a].value = d, void 0 !== d) return d;for (var e in c.exports) {
  9180. if (c.exports.hasOwnProperty(e)) return b[a].inited = !0, b[a].value = c.exports, c.exports;
  9181. }
  9182. } };b[0] = { value: function value(a, c, d) {
  9183. var e = b.r(17),
  9184. f = b.r(11),
  9185. g = new e.Marker().pipe(function () {
  9186. var a = 7,
  9187. b = new e.Circle(a - 1);this.addShape(b), this.setRef(a - 1, 0).setViewBox(-a, -a, a + a, a + a).setWidth(a).setHeight(a), this.dot = b, this.node.setAttribute("markerUnits", "userSpaceOnUse");
  9188. });f.register("arc", function (a, b, c, d, f) {
  9189. var h,
  9190. i,
  9191. j,
  9192. k = a.getLayoutBox(),
  9193. l = b.getLayoutBox(),
  9194. m = Math.abs,
  9195. n = [],
  9196. o = k.x > l.x ? "right" : "left";a.getMinder().getPaper().addResource(g), h = new e.Point(l.cx, l.cy), i = "left" == o ? new e.Point(k.right + 2, k.cy) : new e.Point(k.left - 2, k.cy), j = e.Vector.fromPoints(h, i), n.push("M", h), n.push("A", m(j.x), m(j.y), 0, 0, j.x * j.y > 0 ? 0 : 1, i), c.setMarker(g), g.dot.fill(f), c.setPathData(n);
  9197. });
  9198. } }, b[1] = { value: function value(a, c, d) {
  9199. var e = b.r(17),
  9200. f = b.r(11),
  9201. g = new e.Marker().pipe(function () {
  9202. var a = 7,
  9203. b = new e.Circle(a - 1);this.addShape(b), this.setRef(a - 1, 0).setViewBox(-a, -a, a + a, a + a).setWidth(a).setHeight(a), this.dot = b, this.node.setAttribute("markerUnits", "userSpaceOnUse");
  9204. });f.register("arc_tp", function (a, b, c, d, f) {
  9205. var h = a.getLayoutBox(),
  9206. i = b.getLayoutBox(),
  9207. j = a.getIndex(),
  9208. k = b.getChildren()[j + 1];a.getIndex() > 0 && (i = b.getChildren()[j - 1].getLayoutBox());var l,
  9209. m,
  9210. n = (Math.abs, []);h.x, i.x;a.getMinder().getPaper().addResource(g), l = new e.Point(i.cx, i.cy), m = new e.Point(h.cx, h.cy);var o = Math.sqrt(Math.pow(l.x - m.x, 2) + Math.pow(l.y - m.y, 2));if (o = 0 == a.getIndex() ? .4 * o : o, e.Vector.fromPoints(l, m), n.push("M", l), n.push("A", o, o, 0, 0, 1, m), c.setMarker(g), g.dot.fill(f), c.setPathData(n), k && k.getConnection()) {
  9211. var p = k.getConnection(),
  9212. q = k.getLayoutBox(),
  9213. r = new e.Point(q.cx, q.cy),
  9214. s = Math.sqrt(Math.pow(m.x - r.x, 2) + Math.pow(m.y - r.y, 2));n = [], n.push("M", m), n.push("A", s, s, 0, 0, 1, r), p.setMarker(g), g.dot.fill(f), p.setPathData(n);
  9215. }
  9216. });
  9217. } }, b[2] = { value: function value(a, c, d) {
  9218. b.r(17);b.r(11).register("bezier", function (a, b, c) {
  9219. var d = b.getLayoutVertexOut(),
  9220. e = a.getLayoutVertexIn(),
  9221. f = b.getLayoutVectorOut().normalize(),
  9222. g = Math.round,
  9223. h = Math.abs,
  9224. i = [];if (i.push("M", g(d.x), g(d.y)), h(f.x) > h(f.y)) {
  9225. var j = (e.x + d.x) / 2;i.push("C", j, d.y, j, e.y, e.x, e.y);
  9226. } else {
  9227. var k = (e.y + d.y) / 2;i.push("C", d.x, k, e.x, k, e.x, e.y);
  9228. }c.setMarker(null), c.setPathData(i);
  9229. });
  9230. } }, b[3] = { value: function value(a, c, d) {
  9231. b.r(17);b.r(11).register("fish-bone-master", function (a, b, c) {
  9232. var d = b.getLayoutVertexOut(),
  9233. e = a.getLayoutVertexIn(),
  9234. f = Math.abs,
  9235. g = f(d.y - e.y),
  9236. h = f(d.x - e.x),
  9237. i = [];i.push("M", d.x, d.y), i.push("h", h - g), i.push("L", e.x, e.y), c.setMarker(null), c.setPathData(i);
  9238. });
  9239. } }, b[4] = { value: function value(a, c, d) {
  9240. b.r(17);b.r(11).register("l", function (a, b, c) {
  9241. var d = b.getLayoutVertexOut(),
  9242. e = a.getLayoutVertexIn(),
  9243. f = b.getLayoutVectorOut(),
  9244. g = [],
  9245. h = Math.round,
  9246. i = Math.abs;g.push("M", d.round()), i(f.x) > i(f.y) ? g.push("H", h(e.x)) : g.push("V", e.y), g.push("L", e), c.setPathData(g);
  9247. });
  9248. } }, b[5] = { value: function value(a, c, d) {
  9249. b.r(17);b.r(11).register("poly", function (a, b, c, d) {
  9250. var e = b.getLayoutVertexOut(),
  9251. f = a.getLayoutVertexIn(),
  9252. g = b.getLayoutVectorOut().normalize(),
  9253. h = Math.round,
  9254. i = Math.abs,
  9255. j = [];switch (j.push("M", h(e.x), h(e.y)), !0) {case i(g.x) > i(g.y) && g.x < 0:
  9256. j.push("h", -b.getStyle("margin-left")), j.push("v", f.y - e.y), j.push("H", f.x);break;case i(g.x) > i(g.y) && g.x >= 0:
  9257. j.push("h", b.getStyle("margin-right")), j.push("v", f.y - e.y), j.push("H", f.x);break;case i(g.x) <= i(g.y) && g.y < 0:
  9258. j.push("v", -b.getStyle("margin-top")), j.push("h", f.x - e.x), j.push("V", f.y);break;case i(g.x) <= i(g.y) && g.y >= 0:
  9259. j.push("v", b.getStyle("margin-bottom")), j.push("h", f.x - e.x), j.push("V", f.y);}c.setMarker(null), c.setPathData(j);
  9260. });
  9261. } }, b[6] = { value: function value(a, c, d) {
  9262. var e = b.r(17);b.r(11).register("under", function (a, b, c, d, f) {
  9263. var g,
  9264. h,
  9265. i,
  9266. j,
  9267. k = a.getLayoutBox(),
  9268. l = b.getLayoutBox(),
  9269. m = (Math.abs, []),
  9270. n = k.x > l.x ? "right" : "left",
  9271. o = (a.getStyle("connect-radius"), k.bottom + 3),
  9272. p = "sub" == b.getType() ? l.bottom + 3 : l.cy;"right" == n ? (g = new e.Point(l.right, p), h = new e.Point(k.left - 10, o), i = new e.Point(k.right, o)) : (g = new e.Point(l.left, p), h = new e.Point(k.right + 10, o), i = new e.Point(k.left, o)), j = (g.x + h.x) / 2, m.push("M", g), m.push("C", j, g.y, j, h.y, h), m.push("L", i), c.setMarker(null), c.setPathData(m);
  9273. });
  9274. } }, b[7] = { value: function value(a, c, d) {
  9275. var e = b.r(17),
  9276. f = b.r(19);if (-1 != location.href.indexOf("boxv")) {
  9277. var g;Object.defineProperty(e.Box.prototype, "visualization", { get: function get() {
  9278. return g ? g.setBox(this) : null;
  9279. } }), f.registerInitHook(function () {
  9280. this.on("paperrender", function () {
  9281. g = new e.Rect(), g.fill("rgba(200, 200, 200, .5)"), g.stroke("orange"), this.getRenderContainer().addShape(g);
  9282. });
  9283. });
  9284. }
  9285. } }, b[8] = { value: function value(a, c, d) {
  9286. var e = b.r(19),
  9287. f = { enableAnimation: !0, layoutAnimationDuration: 300, viewAnimationDuration: 100, zoomAnimationDuration: 300 },
  9288. g = {};e.registerInitHook(function () {
  9289. this.setDefaultOptions(f), this.getOption("enableAnimation") || this.disableAnimation();
  9290. }), e.prototype.enableAnimation = function () {
  9291. for (var a in f) {
  9292. f.hasOwnProperty(a) && this.setOption(g[a]);
  9293. }
  9294. }, e.prototype.disableAnimation = function () {
  9295. for (var a in f) {
  9296. f.hasOwnProperty(a) && (g[a] = this.getOption(a), this.setOption(a, 0));
  9297. }
  9298. };
  9299. } }, b[9] = { value: function value(a, c, d) {
  9300. var e = b.r(17),
  9301. f = (b.r(33), b.r(19)),
  9302. g = (b.r(21), b.r(13)),
  9303. h = 0,
  9304. i = e.createClass("Command", { constructor: function constructor() {
  9305. this._isContentChange = !0, this._isSelectionChange = !1;
  9306. }, execute: function execute(a, b) {
  9307. throw new Error("Not Implement: Command.execute()");
  9308. }, setContentChanged: function setContentChanged(a) {
  9309. this._isContentChange = !!a;
  9310. }, isContentChanged: function isContentChanged() {
  9311. return this._isContentChange;
  9312. }, setSelectionChanged: function setSelectionChanged(a) {
  9313. this._isSelectionChange = !!a;
  9314. }, isSelectionChanged: function isSelectionChanged() {
  9315. return this._isContentChange;
  9316. }, queryState: function queryState(a) {
  9317. return h;
  9318. }, queryValue: function queryValue(a) {
  9319. return 0;
  9320. }, isNeedUndo: function isNeedUndo() {
  9321. return !0;
  9322. } });i.STATE_NORMAL = h, i.STATE_ACTIVE = 1, i.STATE_DISABLED = -1, e.extendClass(f, { _getCommand: function _getCommand(a) {
  9323. return this._commands[a.toLowerCase()];
  9324. }, _queryCommand: function _queryCommand(a, b, c) {
  9325. var d = this._getCommand(a);if (d) {
  9326. var e = d["query" + b];if (e) return e.apply(d, [this].concat(c));
  9327. }return 0;
  9328. }, queryCommandState: function queryCommandState(a) {
  9329. return this._queryCommand(a, "State", [].slice.call(arguments, 1));
  9330. }, queryCommandValue: function queryCommandValue(a) {
  9331. return this._queryCommand(a, "Value", [].slice.call(arguments, 1));
  9332. }, execCommand: function execCommand(a) {
  9333. if (!a) return null;a = a.toLowerCase();var b,
  9334. c,
  9335. d,
  9336. e,
  9337. f = [].slice.call(arguments, 1),
  9338. h = this;return b = this._getCommand(a), e = { command: b, commandName: a.toLowerCase(), commandArgs: f }, !(!b || !~this.queryCommandState(a)) && (this._hasEnterExecCommand ? (d = b.execute.apply(b, [h].concat(f)), this._hasEnterExecCommand || this._interactChange()) : (this._hasEnterExecCommand = !0, c = this._fire(new g("beforeExecCommand", e, !0)), c || (this._fire(new g("preExecCommand", e, !1)), d = b.execute.apply(b, [h].concat(f)), this._fire(new g("execCommand", e, !1)), b.isContentChanged() && this._firePharse(new g("contentchange")), this._interactChange()), this._hasEnterExecCommand = !1), void 0 === d ? null : d);
  9339. } }), d.exports = i;
  9340. } }, b[10] = { value: function value(a, c, d) {
  9341. function e(a) {
  9342. switch (a.version || (a.root ? "1.4.0" : "1.1.3")) {case "1.1.3":
  9343. h(a);case "1.2.0":case "1.2.1":
  9344. g(a);case "1.3.0":case "1.3.1":case "1.3.2":case "1.3.3":case "1.3.4":case "1.3.5":
  9345. i(a);}return a;
  9346. }function f(a, b) {
  9347. b(a), a.children && a.children.forEach(function (a) {
  9348. f(a, b);
  9349. });
  9350. }function g(a) {
  9351. f(a, function (a) {
  9352. var b = a.data;delete b.layout_bottom_offset, delete b.layout_default_offset, delete b.layout_filetree_offset;
  9353. });
  9354. }function h(a) {
  9355. var b = a.data.currentstyle;delete a.data.currentstyle, "bottom" == b ? (a.template = "structure", a.theme = "snow") : "default" == b && (a.template = "default", a.theme = "classic"), f(a, function (a) {
  9356. var b = a.data;"PriorityIcon" in b && (b.priority = b.PriorityIcon, delete b.PriorityIcon), "ProgressIcon" in b && (b.progress = 1 + (b.ProgressIcon - 1 << 1), delete b.ProgressIcon), delete b.point, delete b.layout;
  9357. });
  9358. }function i(a) {
  9359. a.root = { data: a.data, children: a.children }, delete a.data, delete a.children;
  9360. }b.r(33);return e;
  9361. } }, b[11] = { value: function value(a, c, d) {
  9362. function e(a, b) {
  9363. k[a] = b;
  9364. }var f = b.r(17),
  9365. g = b.r(33),
  9366. h = b.r(20),
  9367. i = b.r(19),
  9368. j = b.r(21),
  9369. k = {};e("default", function (a, b, c) {
  9370. c.setPathData(["M", b.getLayoutVertexOut(), "L", a.getLayoutVertexIn()]);
  9371. }), f.extendClass(j, { getConnect: function getConnect() {
  9372. return this.data.connect || "default";
  9373. }, getConnectProvider: function getConnectProvider() {
  9374. return k[this.getConnect()] || k.default;
  9375. }, getConnection: function getConnection() {
  9376. return this._connection || null;
  9377. } }), f.extendClass(i, { getConnectContainer: function getConnectContainer() {
  9378. return this._connectContainer;
  9379. }, createConnect: function createConnect(a) {
  9380. if (!a.isRoot()) {
  9381. var b = new f.Path();a._connection = b, this._connectContainer.addShape(b), this.updateConnect(a);
  9382. }
  9383. }, removeConnect: function removeConnect(a) {
  9384. var b = this;a.traverse(function (a) {
  9385. b._connectContainer.removeShape(a._connection), a._connection = null;
  9386. });
  9387. }, updateConnect: function updateConnect(a) {
  9388. var b = a._connection,
  9389. c = a.parent;if (c && b) {
  9390. if (c.isCollapsed()) return void b.setVisible(!1);b.setVisible(!0);var d = a.getConnectProvider(),
  9391. e = a.getStyle("connect-color") || "white",
  9392. f = a.getStyle("connect-width") || 2;b.stroke(e, f), d(a, c, b, f, e), f % 2 == 0 ? b.setTranslate(.5, .5) : b.setTranslate(0, 0);
  9393. }
  9394. } }), h.register("Connect", { init: function init() {
  9395. this._connectContainer = new f.Group().setId(g.uuid("minder_connect_group")), this.getRenderContainer().prependShape(this._connectContainer);
  9396. }, events: { nodeattach: function nodeattach(a) {
  9397. this.createConnect(a.node);
  9398. }, nodedetach: function nodedetach(a) {
  9399. this.removeConnect(a.node);
  9400. }, "layoutapply layoutfinish noderender": function layoutapplyLayoutfinishNoderender(a) {
  9401. this.updateConnect(a.node);
  9402. } } }), c.register = e;
  9403. } }, b[12] = { value: function value(a, c, d) {
  9404. function e(a, b) {
  9405. l[a] = b;for (var c in l) {
  9406. l.hasOwnProperty(c) && (l[c] = l[c], l[c].name = c);
  9407. }
  9408. }function f(a) {
  9409. return void 0 === a ? l : l[a] || null;
  9410. }var g = b.r(17),
  9411. h = (b.r(33), b.r(19)),
  9412. i = (b.r(21), b.r(13)),
  9413. j = b.r(10),
  9414. k = b.r(25),
  9415. l = {};c.registerProtocol = e, c.getRegisterProtocol = f, g.extendClass(h, { setup: function setup(a) {
  9416. if ("string" == typeof a && (a = document.querySelector(a)), a) {
  9417. var b = a.getAttribute("minder-data-type");if (b in l) {
  9418. var c = a.textContent;a.textContent = null, this.renderTo(a), this.importData(b, c);
  9419. }return this;
  9420. }
  9421. }, exportJson: function exportJson() {
  9422. function a(b) {
  9423. var c = {};c.data = b.getData();var d = b.getChildren();c.children = [];for (var e = 0; e < d.length; e++) {
  9424. c.children.push(a(d[e]));
  9425. }return c;
  9426. }var b = { root: a(this.getRoot()) };return b.template = this.getTemplate(), b.theme = this.getTheme(), b.version = h.version, JSON.parse(JSON.stringify(b));
  9427. }, Text2Children: function Text2Children(a, b) {
  9428. function c(a) {
  9429. return "" === a && !/\S/.test(a);
  9430. }function d(a) {
  9431. return { data: { text: a.replace(/^(\t|\x20{4})+/, "").replace(/(\t|\x20{4})+$/, "") }, children: [] };
  9432. }function e(a) {
  9433. for (var b = 0; m.test(a);) {
  9434. a = a.replace(m, ""), b++;
  9435. }return b;
  9436. }function f(a, b) {
  9437. a.children.push(b);
  9438. }function g(a, b) {
  9439. for (var c = 0, d = b.length; c < d; c++) {
  9440. var e = q.createNode(null, a);e.setData("text", b[c].data.text || ""), g(e, b[c].children);
  9441. }
  9442. }if (a instanceof kityminder.Node) {
  9443. for (var h, i = [], j = {}, k = 0, l = /\r|\n|\r\n/, m = /^(\t|\x20{4})/, n = b.split(l), o = "", p = 0, q = this; void 0 !== (o = n[p++]);) {
  9444. if (o = o.replace(/&nbsp;/g, ""), !c(o)) if (k = e(o), h = d(o), 0 === k) j = {}, i.push(h), j[0] = i[i.length - 1];else {
  9445. if (!j[k - 1]) throw new Error("Invalid local format");f(j[k - 1], h), j[k] = h;
  9446. }
  9447. }g(a, i), q.refresh();
  9448. }
  9449. }, exportNode: function exportNode(a) {
  9450. var b = {};b.data = a.getData();var c = a.getChildren();b.children = [];for (var d = 0; d < c.length; d++) {
  9451. b.children.push(this.exportNode(c[d]));
  9452. }return b;
  9453. }, importNode: function importNode(a, b) {
  9454. var c = b.data;a.data = {};for (var d in c) {
  9455. a.setData(d, c[d]);
  9456. }for (var e = b.children || [], f = 0; f < e.length; f++) {
  9457. var g = this.createNode(null, a);this.importNode(g, e[f]);
  9458. }return a;
  9459. }, importJson: function importJson(a) {
  9460. if (a) {
  9461. for (this._fire(new i("preimport", null, !1)); this._root.getChildren().length;) {
  9462. this.removeNode(this._root.getChildren()[0]);
  9463. }return a = j(a), this.importNode(this._root, a.root), this.setTemplate(a.template || "default"), this.setTheme(a.theme || null), this.refresh(), this.fire("import"), this._firePharse({ type: "contentchange" }), this._interactChange(), this;
  9464. }
  9465. }, exportData: function exportData(a, b) {
  9466. var c, d;return c = this.exportJson(), !a || (d = l[a]) && d.encode ? (this._fire(new i("beforeexport", { json: c, protocolName: a, protocol: d })), k.resolve(d.encode(c, this, b))) : k.reject(new Error("Not supported protocol:" + a));
  9467. }, importData: function importData(a, b, c) {
  9468. var d,
  9469. e = this;if (a && (!(d = l[a]) || !d.decode)) return k.reject(new Error("Not supported protocol:" + a));var f = { local: b, protocolName: a, protocol: d };return this._fire(new i("beforeimport", f)), k.resolve(d.decode(b, this, c)).then(function (a) {
  9470. return e.importJson(a), a;
  9471. });
  9472. }, decodeData: function decodeData(a, b, c) {
  9473. var d;if (a && (!(d = l[a]) || !d.decode)) return k.reject(new Error("Not supported protocol:" + a));var e = { local: b, protocolName: a, protocol: d };return this._fire(new i("beforeimport", e)), k.resolve(d.decode(b, this, c));
  9474. } });
  9475. } }, b[13] = { value: function value(a, c, d) {
  9476. var e = b.r(17),
  9477. f = (b.r(33), b.r(19)),
  9478. g = e.createClass("MindEvent", { constructor: function constructor(a, b, c) {
  9479. b = b || {}, b.getType && "ShapeEvent" == b.getType() ? (this.kityEvent = b, this.originEvent = b.originEvent) : b.target && b.preventDefault ? this.originEvent = b : e.Utils.extend(this, b), this.type = a, this._canstop = c || !1;
  9480. }, getPosition: function getPosition(a) {
  9481. if (this.kityEvent) return a && "minder" != a ? this.kityEvent.getPosition.call(this.kityEvent, a) : this.kityEvent.getPosition(this.minder.getRenderContainer());
  9482. }, getTargetNode: function getTargetNode() {
  9483. var a = this.kityEvent && this.kityEvent.targetShape;if (!a) return null;for (; !a.minderNode && a.container;) {
  9484. a = a.container;
  9485. }var b = a.minderNode;return b && a.getOpacity() < 1 ? null : b || null;
  9486. }, stopPropagation: function stopPropagation() {
  9487. this._stoped = !0;
  9488. }, stopPropagationImmediately: function stopPropagationImmediately() {
  9489. this._immediatelyStoped = !0, this._stoped = !0;
  9490. }, shouldStopPropagation: function shouldStopPropagation() {
  9491. return this._canstop && this._stoped;
  9492. }, shouldStopPropagationImmediately: function shouldStopPropagationImmediately() {
  9493. return this._canstop && this._immediatelyStoped;
  9494. }, preventDefault: function preventDefault() {
  9495. this.originEvent.preventDefault();
  9496. }, isRightMB: function isRightMB() {
  9497. var a = !1;return !!this.originEvent && ("which" in this.originEvent ? a = 3 == this.originEvent.which : "button" in this.originEvent && (a = 2 == this.originEvent.button), a);
  9498. }, getKeyCode: function getKeyCode() {
  9499. var a = this.originEvent;return a.keyCode || a.which;
  9500. } });f.registerInitHook(function (a) {
  9501. this._initEvents();
  9502. }), e.extendClass(f, { _initEvents: function _initEvents() {
  9503. this._eventCallbacks = {};
  9504. }, _resetEvents: function _resetEvents() {
  9505. this._initEvents(), this._bindEvents();
  9506. }, _bindEvents: function _bindEvents() {
  9507. this._paper.on("click dblclick mousedown contextmenu mouseup mousemove mouseover mousewheel DOMMouseScroll touchstart touchmove touchend dragenter dragleave drop", this._firePharse.bind(this)), window && window.addEventListener("resize", this._firePharse.bind(this));
  9508. }, dispatchKeyEvent: function dispatchKeyEvent(a) {
  9509. this._firePharse(a);
  9510. }, _firePharse: function _firePharse(a) {
  9511. var b, c, d;"DOMMouseScroll" == a.type && (a.type = "mousewheel", a.wheelDelta = a.originEvent.wheelDelta = -10 * a.originEvent.detail, a.wheelDeltaX = a.originEvent.mozMovementX, a.wheelDeltaY = a.originEvent.mozMovementY), b = new g("before" + a.type, a, !0), this._fire(b) || (c = new g("pre" + a.type, a, !0), d = new g(a.type, a, !0), (this._fire(c) || this._fire(d)) && this._fire(new g("after" + a.type, a, !1)));
  9512. }, _interactChange: function _interactChange(a) {
  9513. var b = this;b._interactScheduled || (setTimeout(function () {
  9514. b._fire(new g("interactchange")), b._interactScheduled = !1;
  9515. }, 100), b._interactScheduled = !0);
  9516. }, _listen: function _listen(a, b) {
  9517. (this._eventCallbacks[a] || (this._eventCallbacks[a] = [])).push(b);
  9518. }, _fire: function _fire(a) {
  9519. a.minder = this;var b = this.getStatus(),
  9520. c = this._eventCallbacks[a.type.toLowerCase()] || [];if (b && (c = c.concat(this._eventCallbacks[b + "." + a.type.toLowerCase()] || [])), 0 !== c.length) {
  9521. for (var d = (this.getStatus(), 0); d < c.length && (c[d].call(this, a), !a.shouldStopPropagationImmediately()); d++) {}return a.shouldStopPropagation();
  9522. }
  9523. }, on: function on(a, b) {
  9524. var c = this;return a.split(/\s+/).forEach(function (a) {
  9525. c._listen(a.toLowerCase(), b);
  9526. }), this;
  9527. }, off: function off(a, b) {
  9528. var c,
  9529. d,
  9530. e,
  9531. f,
  9532. g = a.split(/\s+/);for (c = 0; c < g.length; c++) {
  9533. if (e = this._eventCallbacks[g[c].toLowerCase()]) {
  9534. for (f = null, d = 0; d < e.length; d++) {
  9535. e[d] == b && (f = d);
  9536. }null !== f && e.splice(f, 1);
  9537. }
  9538. }
  9539. }, fire: function fire(a, b) {
  9540. var c = new g(a, b);return this._fire(c), this;
  9541. } }), d.exports = g;
  9542. } }, b[14] = { value: function value(a, c, d) {
  9543. var e = b.r(17),
  9544. f = b.r(19);f.registerInitHook(function () {
  9545. this.on("beforemousedown", function (a) {
  9546. this.focus(), a.preventDefault();
  9547. }), this.on("paperrender", function () {
  9548. this.focus();
  9549. });
  9550. }), e.extendClass(f, { focus: function focus() {
  9551. if (!this.isFocused()) {
  9552. this._renderTarget.classList.add("focus"), this.renderNodeBatch(this.getSelectedNodes());
  9553. }return this.fire("focus"), this;
  9554. }, blur: function blur() {
  9555. if (this.isFocused()) {
  9556. this._renderTarget.classList.remove("focus"), this.renderNodeBatch(this.getSelectedNodes());
  9557. }return this.fire("blur"), this;
  9558. }, isFocused: function isFocused() {
  9559. var a = this._renderTarget;return a && a.classList.contains("focus");
  9560. } });
  9561. } }, b[15] = { value: function value(a, b, c) {
  9562. var d = { Backspace: 8, Tab: 9, Enter: 13, Shift: 16, Control: 17, Alt: 18, CapsLock: 20, Esc: 27, Spacebar: 32, PageUp: 33, PageDown: 34, End: 35, Home: 36, Insert: 45, Left: 37, Up: 38, Right: 39, Down: 40, direction: { 37: 1, 38: 1, 39: 1, 40: 1 }, Del: 46, NumLock: 144, Cmd: 91, CmdFF: 224, F1: 112, F2: 113, F3: 114, F4: 115, F5: 116, F6: 117, F7: 118, F8: 119, F9: 120, F10: 121, F11: 122, F12: 123, "`": 192, "=": 187, "-": 189, "/": 191, ".": 190, controlKeys: { 16: 1, 17: 1, 18: 1, 20: 1, 91: 1, 224: 1 }, notContentChange: { 13: 1, 9: 1, 33: 1, 34: 1, 35: 1, 36: 1, 16: 1, 17: 1, 18: 1, 20: 1, 91: 1, 37: 1, 38: 1, 39: 1, 40: 1, 113: 1, 114: 1, 115: 1, 144: 1, 27: 1 }, isSelectedNodeKey: { 37: 1, 38: 1, 39: 1, 40: 1, 13: 1, 9: 1 } };for (var e in d) {
  9563. d.hasOwnProperty(e) && (d[e.toLowerCase()] = d[e]);
  9564. }var f = "a".charCodeAt(0);"abcdefghijklmnopqrstuvwxyz".split("").forEach(function (a) {
  9565. d[a] = a.charCodeAt(0) - f + 65;
  9566. });var g = 9;do {
  9567. d[g.toString()] = g + 48;
  9568. } while (--g);c.exports = d;
  9569. } }, b[16] = { value: function value(a, c, d) {
  9570. function e(a, b, c) {
  9571. b.split(" ").forEach(function (b) {
  9572. a.addEventListener(b, c, !1);
  9573. });
  9574. }var f = b.r(17),
  9575. g = (b.r(33), b.r(19));g.registerInitHook(function (a) {
  9576. this.setDefaultOptions({ enableKeyReceiver: !0 }), this.getOption("enableKeyReceiver") && this.on("paperrender", function () {
  9577. this._initKeyReceiver();
  9578. });
  9579. }), f.extendClass(g, { _initKeyReceiver: function _initKeyReceiver() {
  9580. if (!this._keyReceiver) {
  9581. var a = this._keyReceiver = document.createElement("input");a.classList.add("km-receiver");this._renderTarget.appendChild(a);var b = this;e(a, "keydown keyup keypress copy paste blur focus input", function (c) {
  9582. switch (c.type) {case "blur":
  9583. b.blur();break;case "focus":
  9584. b.focus();break;case "input":
  9585. a.value = null;}b._firePharse(c), c.preventDefault();
  9586. }), this.on("focus", function () {
  9587. a.select(), a.focus();
  9588. }), this.on("blur", function () {
  9589. a.blur();
  9590. }), this.isFocused() && (a.select(), a.focus());
  9591. }
  9592. } });
  9593. } }, b[17] = { value: function value(a, b, c) {
  9594. c.exports = window.kity;
  9595. } }, b[18] = { value: function value(a, c, d) {
  9596. function e(a, b) {
  9597. k[a] = b, f = f || a;
  9598. }var f,
  9599. g = b.r(17),
  9600. h = b.r(33),
  9601. i = b.r(19),
  9602. j = b.r(21),
  9603. k = (b.r(13), b.r(9), {}),
  9604. l = g.createClass("Layout", { doLayout: function doLayout(a, b) {
  9605. throw new Error("Not Implement: Layout.doLayout()");
  9606. }, align: function align(a, b, c) {
  9607. var d = this;c = c || 0, a.forEach(function (a) {
  9608. var e = d.getTreeBox([a]),
  9609. f = a.getLayoutTransform();switch (b) {case "left":
  9610. return f.translate(c - e.left, 0);case "right":
  9611. return f.translate(c - e.right, 0);case "top":
  9612. return f.translate(0, c - e.top);case "bottom":
  9613. return f.translate(0, c - e.bottom);}
  9614. });
  9615. }, stack: function stack(a, b, c) {
  9616. var d = this,
  9617. e = 0;return c = c || function (a, b, c) {
  9618. return a.getStyle({ x: "margin-right", y: "margin-bottom" }[c]) + b.getStyle({ x: "margin-left", y: "margin-top" }[c]);
  9619. }, a.forEach(function (a, f, g) {
  9620. var h = d.getTreeBox([a]),
  9621. i = { x: h.width, y: h.height }[b],
  9622. j = { x: h.left, y: h.top }[b],
  9623. k = a.getLayoutTransform();"x" == b ? k.translate(e - j, 0) : k.translate(0, e - j), e += i, g[f + 1] && (e += c(a, g[f + 1], b));
  9624. }), e;
  9625. }, move: function move(a, b, c) {
  9626. a.forEach(function (a) {
  9627. a.getLayoutTransform().translate(b, c);
  9628. });
  9629. }, getBranchBox: function getBranchBox(a) {
  9630. var b,
  9631. c,
  9632. d,
  9633. e,
  9634. f = new g.Box();for (b = 0; b < a.length; b++) {
  9635. c = a[b], d = c.getLayoutTransform(), e = c.getContentBox(), f = f.merge(d.transformBox(e));
  9636. }return f;
  9637. }, getTreeBox: function getTreeBox(a) {
  9638. var b,
  9639. c,
  9640. d,
  9641. e,
  9642. f = new g.Box();for (a instanceof Array || (a = [a]), b = 0; b < a.length; b++) {
  9643. c = a[b], d = c.getLayoutTransform(), e = c.getContentBox(), c.isExpanded() && c.children.length && (e = e.merge(this.getTreeBox(c.children))), f = f.merge(d.transformBox(e));
  9644. }return f;
  9645. }, getOrderHint: function getOrderHint(a) {
  9646. return [];
  9647. } });l.register = e, i.registerInitHook(function (a) {
  9648. this.refresh();
  9649. }), h.extend(i, { getLayoutList: function getLayoutList() {
  9650. return k;
  9651. }, getLayoutInstance: function getLayoutInstance(a) {
  9652. var b = k[a];if (!b) throw new Error("Missing Layout: " + a);return new b();
  9653. } }), g.extendClass(j, { getLayout: function getLayout() {
  9654. var a = this.getData("layout");return a = a || (this.isRoot() ? f : this.parent.getLayout());
  9655. }, setLayout: function setLayout(a) {
  9656. return a && ("inherit" == a ? this.setData("layout") : this.setData("layout", a)), this;
  9657. }, layout: function layout(a) {
  9658. return this.setLayout(a).getMinder().layout(), this;
  9659. }, getLayoutInstance: function getLayoutInstance() {
  9660. return i.getLayoutInstance(this.getLayout());
  9661. }, getOrderHint: function getOrderHint(a) {
  9662. return this.parent.getLayoutInstance().getOrderHint(this);
  9663. }, getLayoutTransform: function getLayoutTransform() {
  9664. return this._layoutTransform || new g.Matrix();
  9665. }, getGlobalLayoutTransformPreview: function getGlobalLayoutTransformPreview() {
  9666. var a = this.parent ? this.parent.getLayoutTransform() : new g.Matrix(),
  9667. b = this.getLayoutTransform(),
  9668. c = this.getLayoutOffset();return c && (b = b.clone().translate(c.x, c.y)), a.merge(b);
  9669. }, getLayoutPointPreview: function getLayoutPointPreview() {
  9670. return this.getGlobalLayoutTransformPreview().transformPoint(new g.Point());
  9671. }, getGlobalLayoutTransform: function getGlobalLayoutTransform() {
  9672. return this._globalLayoutTransform ? this._globalLayoutTransform : this.parent ? this.parent.getGlobalLayoutTransform() : new g.Matrix();
  9673. }, setLayoutTransform: function setLayoutTransform(a) {
  9674. return this._layoutTransform = a, this;
  9675. }, setGlobalLayoutTransform: function setGlobalLayoutTransform(a) {
  9676. return this.getRenderContainer().setMatrix(this._globalLayoutTransform = a), this;
  9677. }, setVertexIn: function setVertexIn(a) {
  9678. this._vertexIn = a;
  9679. }, setVertexOut: function setVertexOut(a) {
  9680. this._vertexOut = a;
  9681. }, getVertexIn: function getVertexIn() {
  9682. return this._vertexIn || new g.Point();
  9683. }, getVertexOut: function getVertexOut() {
  9684. return this._vertexOut || new g.Point();
  9685. }, getLayoutVertexIn: function getLayoutVertexIn() {
  9686. return this.getGlobalLayoutTransform().transformPoint(this.getVertexIn());
  9687. }, getLayoutVertexOut: function getLayoutVertexOut() {
  9688. return this.getGlobalLayoutTransform().transformPoint(this.getVertexOut());
  9689. }, setLayoutVectorIn: function setLayoutVectorIn(a) {
  9690. return this._layoutVectorIn = a, this;
  9691. }, setLayoutVectorOut: function setLayoutVectorOut(a) {
  9692. return this._layoutVectorOut = a, this;
  9693. }, getLayoutVectorIn: function getLayoutVectorIn() {
  9694. return this._layoutVectorIn || new g.Vector();
  9695. }, getLayoutVectorOut: function getLayoutVectorOut() {
  9696. return this._layoutVectorOut || new g.Vector();
  9697. }, getLayoutBox: function getLayoutBox() {
  9698. return this.getGlobalLayoutTransform().transformBox(this.getContentBox());
  9699. }, getLayoutPoint: function getLayoutPoint() {
  9700. return this.getGlobalLayoutTransform().transformPoint(new g.Point());
  9701. }, getLayoutOffset: function getLayoutOffset() {
  9702. if (!this.parent) return new g.Point();var a = this.getData("layout_" + this.parent.getLayout() + "_offset");return a ? new g.Point(a.x, a.y) : new g.Point();
  9703. }, setLayoutOffset: function setLayoutOffset(a) {
  9704. return this.parent ? (this.setData("layout_" + this.parent.getLayout() + "_offset", a ? { x: a.x, y: a.y } : void 0), this) : this;
  9705. }, hasLayoutOffset: function hasLayoutOffset() {
  9706. return !!this.getData("layout_" + this.parent.getLayout() + "_offset");
  9707. }, resetLayoutOffset: function resetLayoutOffset() {
  9708. return this.setLayoutOffset(null);
  9709. }, getLayoutRoot: function getLayoutRoot() {
  9710. return this.isLayoutRoot() ? this : this.parent.getLayoutRoot();
  9711. }, isLayoutRoot: function isLayoutRoot() {
  9712. return this.getData("layout") || this.isRoot();
  9713. } }), g.extendClass(i, { layout: function layout() {
  9714. function a(b, c) {
  9715. b.isExpanded(), b.children.forEach(function (b) {
  9716. a(b, c);
  9717. }), b.getLayoutInstance().doLayout(b, b.getChildren(), c);
  9718. }var b = this.getOption("layoutAnimationDuration");this.getRoot().traverse(function (a) {
  9719. a.setLayoutTransform(null);
  9720. }), a(this.getRoot(), 1), a(this.getRoot(), 2);var c = this;return this.applyLayoutResult(this.getRoot(), b, function () {
  9721. setTimeout(function () {
  9722. c.fire("layoutallfinish");
  9723. }, 0);
  9724. }), this.fire("layout");
  9725. }, refresh: function refresh() {
  9726. return this.getRoot().renderTree(), this.layout().fire("contentchange")._interactChange(), this;
  9727. }, applyLayoutResult: function applyLayoutResult(a, b, c) {
  9728. function d() {
  9729. --i || c && c();
  9730. }function e(a, b) {
  9731. a.setGlobalLayoutTransform(b), h.fire("layoutapply", { node: a, matrix: b });
  9732. }function f(a, c) {
  9733. var i = a.getLayoutTransform().merge(c.clone()),
  9734. j = a.getGlobalLayoutTransform() || new g.Matrix(),
  9735. k = a.getLayoutOffset();i.translate(k.x, k.y), i.m.e = Math.round(i.m.e), i.m.f = Math.round(i.m.f), a._layoutTimeline && (a._layoutTimeline.stop(), a._layoutTimeline = null), b ? a._layoutTimeline = new g.Animator(j, i, e).start(a, b, "ease").on("finish", function () {
  9736. setTimeout(function () {
  9737. e(a, i), h.fire("layoutfinish", { node: a, matrix: i }), d();
  9738. }, 150);
  9739. }) : (e(a, i), h.fire("layoutfinish", { node: a, matrix: i }), d());for (var l = 0; l < a.children.length; l++) {
  9740. f(a.children[l], i);
  9741. }
  9742. }a = a || this.getRoot();var h = this,
  9743. i = a.getComplex();return i > 200 && (b = 0), f(a, a.parent ? a.parent.getGlobalLayoutTransform() : new g.Matrix()), this;
  9744. } }), d.exports = l;
  9745. } }, b[19] = { value: function value(a, c, d) {
  9746. var e = b.r(17),
  9747. f = b.r(33),
  9748. g = [],
  9749. h = e.createClass("Minder", { constructor: function constructor(a) {
  9750. this._options = f.extend({}, a);for (var b, c = g.slice(); c.length;) {
  9751. "function" == typeof (b = c.shift()) && b.call(this, this._options);
  9752. }this.fire("finishInitHook");
  9753. } });h.version = "1.4.43", h.registerInitHook = function (a) {
  9754. g.push(a);
  9755. }, d.exports = h;
  9756. } }, b[20] = { value: function value(a, c, d) {
  9757. var e = b.r(17),
  9758. f = b.r(33),
  9759. g = b.r(19),
  9760. h = {};c.register = function (a, b) {
  9761. h[a] = b;
  9762. }, g.registerInitHook(function () {
  9763. this._initModules();
  9764. }), e.extendClass(g, { _initModules: function _initModules() {
  9765. var a = h,
  9766. b = this._options.modules || f.keys(a);this._commands = {}, this._query = {}, this._modules = {}, this._rendererClasses = {};var c,
  9767. d,
  9768. e,
  9769. g,
  9770. i,
  9771. j,
  9772. k,
  9773. l = this;for (c = 0; c < b.length; c++) {
  9774. if (d = b[c], a[d] && (g = "function" == typeof a[d] ? a[d].call(l) : a[d], this._modules[d] = g, g)) {
  9775. g.defaultOptions && l.setDefaultOptions(g.defaultOptions), g.init && g.init.call(l, this._options), i = g.commands;for (d in i) {
  9776. this._commands[d.toLowerCase()] = new i[d]();
  9777. }if (j = g.events) for (e in j) {
  9778. l.on(e, j[e]);
  9779. }if (k = g.renderers) for (e in k) {
  9780. this._rendererClasses[e] = this._rendererClasses[e] || [], f.isArray(k[e]) ? this._rendererClasses[e] = this._rendererClasses[e].concat(k[e]) : this._rendererClasses[e].push(k[e]);
  9781. }g.commandShortcutKeys && this.addCommandShortcutKeys(g.commandShortcutKeys);
  9782. }
  9783. }
  9784. }, _garbage: function _garbage() {
  9785. for (this.clearSelect(); this._root.getChildren().length;) {
  9786. this._root.removeChild(0);
  9787. }
  9788. }, destroy: function destroy() {
  9789. var a = this._modules;this._resetEvents(), this._garbage();for (var b in a) {
  9790. a[b].destroy && a[b].destroy.call(this);
  9791. }
  9792. }, reset: function reset() {
  9793. var a = this._modules;this._garbage();for (var b in a) {
  9794. a[b].reset && a[b].reset.call(this);
  9795. }
  9796. } });
  9797. } }, b[21] = { value: function value(a, c, d) {
  9798. var e = b.r(17),
  9799. f = b.r(33),
  9800. g = b.r(19),
  9801. h = e.createClass("MinderNode", { constructor: function constructor(a) {
  9802. this.parent = null, this.root = this, this.children = [], this.data = { id: f.guid(), created: +new Date() }, this.initContainers(), f.isString(a) ? this.setText(a) : f.isObject(a) && f.extend(this.data, a);
  9803. }, initContainers: function initContainers() {
  9804. this.rc = new e.Group().setId(f.uuid("minder_node")), this.rc.minderNode = this;
  9805. }, isRoot: function isRoot() {
  9806. return this.root === this;
  9807. }, isLeaf: function isLeaf() {
  9808. return 0 === this.children.length;
  9809. }, getRoot: function getRoot() {
  9810. return this.root || this;
  9811. }, getParent: function getParent() {
  9812. return this.parent;
  9813. }, getSiblings: function getSiblings() {
  9814. var a = this.parent.children,
  9815. b = [],
  9816. c = this;return a.forEach(function (a) {
  9817. a != c && b.push(a);
  9818. }), b;
  9819. }, getLevel: function getLevel() {
  9820. for (var a = 0, b = this.parent; b;) {
  9821. a++, b = b.parent;
  9822. }return a;
  9823. }, getComplex: function getComplex() {
  9824. var a = 0;return this.traverse(function () {
  9825. a++;
  9826. }), a;
  9827. }, getType: function getType(a) {
  9828. return this.type = ["root", "main", "sub"][Math.min(this.getLevel(), 2)], this.type;
  9829. }, isAncestorOf: function isAncestorOf(a) {
  9830. for (var b = a.parent; b;) {
  9831. if (b == this) return !0;b = b.parent;
  9832. }return !1;
  9833. }, getData: function getData(a) {
  9834. return a ? this.data[a] : this.data;
  9835. }, setData: function setData(a, b) {
  9836. if ("object" == (typeof a === "undefined" ? "undefined" : _typeof(a))) {
  9837. var c = a;for (a in c) {
  9838. c.hasOwnProperty(a) && (this.data[a] = c[a]);
  9839. }
  9840. } else this.data[a] = b;return this;
  9841. }, setText: function setText(a) {
  9842. return this.data.text = a;
  9843. }, getText: function getText() {
  9844. return this.data.text || null;
  9845. }, preTraverse: function preTraverse(a, b) {
  9846. var c = this.getChildren();b || a(this);for (var d = 0; d < c.length; d++) {
  9847. c[d].preTraverse(a);
  9848. }
  9849. }, postTraverse: function postTraverse(a, b) {
  9850. for (var c = this.getChildren(), d = 0; d < c.length; d++) {
  9851. c[d].postTraverse(a);
  9852. }b || a(this);
  9853. }, traverse: function traverse(a, b) {
  9854. return this.postTraverse(a, b);
  9855. }, getChildren: function getChildren() {
  9856. return this.children;
  9857. }, getIndex: function getIndex() {
  9858. return this.parent ? this.parent.children.indexOf(this) : -1;
  9859. }, insertChild: function insertChild(a, b) {
  9860. void 0 === b && (b = this.children.length), a.parent && a.parent.removeChild(a), a.parent = this, a.root = this.root, this.children.splice(b, 0, a);
  9861. }, appendChild: function appendChild(a) {
  9862. return this.insertChild(a);
  9863. }, prependChild: function prependChild(a) {
  9864. return this.insertChild(a, 0);
  9865. }, removeChild: function removeChild(a) {
  9866. var b,
  9867. c = a;a instanceof h && (c = this.children.indexOf(a)), c >= 0 && (b = this.children.splice(c, 1)[0], b.parent = null, b.root = b);
  9868. }, clearChildren: function clearChildren() {
  9869. this.children = [];
  9870. }, getChild: function getChild(a) {
  9871. return this.children[a];
  9872. }, getRenderContainer: function getRenderContainer() {
  9873. return this.rc;
  9874. }, getCommonAncestor: function getCommonAncestor(a) {
  9875. return h.getCommonAncestor(this, a);
  9876. }, contains: function contains(a) {
  9877. return this == a || this.isAncestorOf(a);
  9878. }, clone: function clone() {
  9879. var a = new h();return a.data = f.clone(this.data), this.children.forEach(function (b) {
  9880. a.appendChild(b.clone());
  9881. }), a;
  9882. }, compareTo: function compareTo(a) {
  9883. if (!f.comparePlainObject(this.data, a.data)) return !1;if (!f.comparePlainObject(this.temp, a.temp)) return !1;if (this.children.length != a.children.length) return !1;for (var b = 0; this.children[b];) {
  9884. if (!this.children[b].compareTo(a.children[b])) return !1;b++;
  9885. }return !0;
  9886. }, getMinder: function getMinder() {
  9887. return this.getRoot().minder;
  9888. } });h.getCommonAncestor = function (a, b) {
  9889. if (a instanceof Array) return h.getCommonAncestor.apply(this, a);switch (arguments.length) {case 1:
  9890. return a.parent || a;case 2:
  9891. if (a.isAncestorOf(b)) return a;if (b.isAncestorOf(a)) return b;for (var c = a.parent; c && !c.isAncestorOf(b);) {
  9892. c = c.parent;
  9893. }return c;default:
  9894. return Array.prototype.reduce.call(arguments, function (a, b) {
  9895. return h.getCommonAncestor(a, b);
  9896. }, a);}
  9897. }, e.extendClass(g, { getRoot: function getRoot() {
  9898. return this._root;
  9899. }, setRoot: function setRoot(a) {
  9900. this._root = a, a.minder = this;
  9901. }, getAllNode: function getAllNode() {
  9902. var a = [];return this.getRoot().traverse(function (b) {
  9903. a.push(b);
  9904. }), a;
  9905. }, getNodeById: function getNodeById(a) {
  9906. return this.getNodesById([a])[0];
  9907. }, getNodesById: function getNodesById(a) {
  9908. var b = this.getAllNode(),
  9909. c = [];return b.forEach(function (b) {
  9910. -1 != a.indexOf(b.getData("id")) && c.push(b);
  9911. }), c;
  9912. }, createNode: function createNode(a, b, c) {
  9913. var d = new h(a);return this.fire("nodecreate", { node: d, parent: b, index: c }), this.appendNode(d, b, c), d;
  9914. }, appendNode: function appendNode(a, b, c) {
  9915. return b && b.insertChild(a, c), this.attachNode(a), this;
  9916. }, removeNode: function removeNode(a) {
  9917. a.parent && (a.parent.removeChild(a), this.detachNode(a), this.fire("noderemove", { node: a }));
  9918. }, attachNode: function attachNode(a) {
  9919. var b = this.getRenderContainer();a.traverse(function (a) {
  9920. a.attached = !0, b.addShape(a.getRenderContainer());
  9921. }), b.addShape(a.getRenderContainer()), this.fire("nodeattach", { node: a });
  9922. }, detachNode: function detachNode(a) {
  9923. var b = this.getRenderContainer();a.traverse(function (a) {
  9924. a.attached = !1, b.removeShape(a.getRenderContainer());
  9925. }), this.fire("nodedetach", { node: a });
  9926. }, getMinderTitle: function getMinderTitle() {
  9927. return this.getRoot().getText();
  9928. } }), d.exports = h;
  9929. } }, b[22] = { value: function value(a, c, d) {
  9930. var e = b.r(17),
  9931. f = b.r(33),
  9932. g = b.r(19);g.registerInitHook(function (a) {
  9933. this._defaultOptions = {};
  9934. }), e.extendClass(g, { setDefaultOptions: function setDefaultOptions(a) {
  9935. return f.extend(this._defaultOptions, a), this;
  9936. }, getOption: function getOption(a) {
  9937. return a ? a in this._options ? this._options[a] : this._defaultOptions[a] : f.extend({}, this._defaultOptions, this._options);
  9938. }, setOption: function setOption(a, b) {
  9939. this._options[a] = b;
  9940. } });
  9941. } }, b[23] = { value: function value(a, c, d) {
  9942. var e = b.r(17),
  9943. f = b.r(33),
  9944. g = b.r(19);g.registerInitHook(function () {
  9945. this._initPaper();
  9946. }), e.extendClass(g, { _initPaper: function _initPaper() {
  9947. this._paper = new e.Paper(), this._paper._minder = this, this._paper.getNode().ondragstart = function (a) {
  9948. a.preventDefault();
  9949. }, this._paper.shapeNode.setAttribute("transform", "translate(0.5, 0.5)"), this._addRenderContainer(), this.setRoot(this.createNode()), this._options.renderTo && this.renderTo(this._options.renderTo);
  9950. }, _addRenderContainer: function _addRenderContainer() {
  9951. this._rc = new e.Group().setId(f.uuid("minder")), this._paper.addShape(this._rc);
  9952. }, renderTo: function renderTo(a) {
  9953. if ("string" == typeof a && (a = document.querySelector(a)), a) {
  9954. if ("script" == a.tagName.toLowerCase()) {
  9955. var b = document.createElement("div");b.id = a.id, b.class = a.class, a.parentNode.insertBefore(b, a), a.parentNode.removeChild(a), a = b;
  9956. }a.classList.add("km-view"), this._paper.renderTo(this._renderTarget = a), this._bindEvents(), this.fire("paperrender");
  9957. }return this;
  9958. }, getRenderContainer: function getRenderContainer() {
  9959. return this._rc;
  9960. }, getPaper: function getPaper() {
  9961. return this._paper;
  9962. }, getRenderTarget: function getRenderTarget() {
  9963. return this._renderTarget;
  9964. } });
  9965. } }, b[24] = { value: function value(a, c, d) {
  9966. function e(a, b, c, d) {
  9967. return c = a.createNode(b.data, c, d), b.children.forEach(function (b, d) {
  9968. e(a, b, c, d);
  9969. }), c;
  9970. }function f(a, b) {
  9971. var c = b.path.split("/");c.shift();var d,
  9972. f = c.shift();if ("root" == f) {
  9973. var g = c.indexOf("data");if (g > -1) {
  9974. f = "data";var h = c.splice(g + 1);b.dataPath = h;
  9975. } else f = "node";d = a.getRoot();for (var i, j; i = c.shift();) {
  9976. "children" != i && (void 0 !== j && (d = d.getChild(j)), j = +i);
  9977. }b.index = j, b.node = d;
  9978. }switch (b.express = [f, b.op].join(".")) {case "theme.replace":
  9979. a.useTheme(b.value);break;case "template.replace":
  9980. a.useTemplate(b.value);break;case "node.add":
  9981. e(a, b.value, b.node, b.index).renderTree(), a.layout();break;case "node.remove":
  9982. a.removeNode(b.node.getChild(b.index)), a.layout();break;case "data.add":case "data.replace":case "data.remove":
  9983. var k,
  9984. l = b.node.data;for (c = b.dataPath.slice(); l && c.length > 1;) {
  9985. k = c.shift(), k in l ? l = l[k] : "remove" != b.op && (l = l[k] = {});
  9986. }l && (k = c.shift(), l[k] = b.value), "expandState" == k ? d.renderTree() : d.render(), a.layout();}a.fire("patch", { patch: b });
  9987. }var g = b.r(17),
  9988. h = b.r(19);g.extendClass(h, { applyPatches: function applyPatches(a) {
  9989. for (var b = 0; b < a.length; b++) {
  9990. f(this, a[b]);
  9991. }return this.fire("contentchange"), this;
  9992. } });
  9993. } }, b[25] = { value: function value(a, b, c) {
  9994. var d = 0,
  9995. e = 1,
  9996. f = 2,
  9997. g = function g(a) {
  9998. if (!(this instanceof g)) return new g(a);this.id = "Thenable/1.0.7", this.state = d, this.fulfillValue = void 0, this.rejectReason = void 0, this.onFulfilled = [], this.onRejected = [], "function" == typeof a && a.call(this, this.fulfill.bind(this), this.reject.bind(this));
  9999. };g.prototype = { fulfill: function fulfill(a) {
  10000. return h(this, e, "fulfillValue", a);
  10001. }, reject: function reject(a) {
  10002. return h(this, f, "rejectReason", a);
  10003. }, then: function then(a, b) {
  10004. var c = this,
  10005. d = new g();return c.onFulfilled.push(k(a, d, "fulfill")), c.onRejected.push(k(b, d, "reject")), i(c), d;
  10006. } }, g.all = function (a) {
  10007. return new g(function (b, c) {
  10008. var d = a.length,
  10009. e = 0,
  10010. f = 0,
  10011. g = [];for (0 === d && b(g); e < d;) {
  10012. a[e].then(function (a) {
  10013. g.push(a), ++f === d && b(g);
  10014. }, function (a) {
  10015. c(a);
  10016. }), e++;
  10017. }
  10018. });
  10019. };var h = function h(a, b, c, e) {
  10020. return a.state === d && (a.state = b, a[c] = e, i(a)), a;
  10021. },
  10022. i = function i(a) {
  10023. a.state === e ? j(a, "onFulfilled", a.fulfillValue) : a.state === f && j(a, "onRejected", a.rejectReason);
  10024. },
  10025. j = function j(a, b, c) {
  10026. if (0 !== a[b].length) {
  10027. var d = a[b];a[b] = [];var e = function e() {
  10028. for (var a = 0; a < d.length; a++) {
  10029. d[a](c);
  10030. }
  10031. };"object" == (typeof process === "undefined" ? "undefined" : _typeof(process)) && "function" == typeof process.nextTick ? process.nextTick(e) : "function" == typeof setImmediate ? setImmediate(e) : setTimeout(e, 0);
  10032. }
  10033. },
  10034. k = function k(a, b, c) {
  10035. return function (d) {
  10036. if ("function" != typeof a) b[c].call(b, d);else {
  10037. var e;try {
  10038. e = d instanceof g ? d.then(a) : a(d);
  10039. } catch (a) {
  10040. return void b.reject(a);
  10041. }l(b, e);
  10042. }
  10043. };
  10044. },
  10045. l = function l(a, b) {
  10046. if (a === b) return void a.reject(new TypeError("cannot resolve promise with itself"));var c;if ("object" == (typeof b === "undefined" ? "undefined" : _typeof(b)) && null !== b || "function" == typeof b) try {
  10047. c = b.then;
  10048. } catch (b) {
  10049. return void a.reject(b);
  10050. }if ("function" != typeof c) a.fulfill(b);else {
  10051. var d = !1;try {
  10052. c.call(b, function (c) {
  10053. d || (d = !0, c === b ? a.reject(new TypeError("circular thenable chain")) : l(a, c));
  10054. }, function (b) {
  10055. d || (d = !0, a.reject(b));
  10056. });
  10057. } catch (b) {
  10058. d || a.reject(b);
  10059. }
  10060. }
  10061. };g.resolve = function (a) {
  10062. return new g(function (b) {
  10063. b(a);
  10064. });
  10065. }, g.reject = function (a) {
  10066. return new g(function (b, c) {
  10067. c(a);
  10068. });
  10069. }, c.exports = g;
  10070. } }, b[26] = { value: function value(a, c, d) {
  10071. var e = b.r(17),
  10072. f = b.r(19);b.r(13);f.registerInitHook(function (a) {
  10073. a.readOnly && this.setDisabled();
  10074. }), e.extendClass(f, { disable: function disable() {
  10075. var a = this;a.bkqueryCommandState = a.queryCommandState, a.bkqueryCommandValue = a.queryCommandValue, a.queryCommandState = function (b) {
  10076. var c = this._getCommand(b);return c && c.enableReadOnly ? a.bkqueryCommandState.apply(a, arguments) : -1;
  10077. }, a.queryCommandValue = function (b) {
  10078. var c = this._getCommand(b);return c && c.enableReadOnly ? a.bkqueryCommandValue.apply(a, arguments) : null;
  10079. }, this.setStatus("readonly"), a._interactChange();
  10080. }, enable: function enable() {
  10081. var a = this;a.bkqueryCommandState && (a.queryCommandState = a.bkqueryCommandState, delete a.bkqueryCommandState), a.bkqueryCommandValue && (a.queryCommandValue = a.bkqueryCommandValue, delete a.bkqueryCommandValue), this.setStatus("normal"), a._interactChange();
  10082. } });
  10083. } }, b[27] = { value: function value(a, c, d) {
  10084. function e() {
  10085. function a(a, b) {
  10086. var c = [];["center", "left", "right", "top", "bottom", "outline", "outside"].forEach(function (a) {
  10087. var d = "before" + a,
  10088. e = "after" + a;b[d] && (c = c.concat(b[d])), b[a] && (c = c.concat(b[a])), b[e] && (c = c.concat(b[e]));
  10089. }), a._renderers = c.map(function (b) {
  10090. return new b(a);
  10091. });
  10092. }return { renderNodeBatch: function renderNodeBatch(b) {
  10093. var c,
  10094. d,
  10095. e,
  10096. g,
  10097. h = this._rendererClasses,
  10098. i = [],
  10099. j = 0;if (b.length) {
  10100. for (d = 0; d < b.length; d++) {
  10101. g = b[d], g._renderers || a(g, h), g._contentBox = new f.Box(), this.fire("beforerender", { node: g });
  10102. }for (j = b[0]._renderers.length, c = 0; c < j; c++) {
  10103. for (d = 0; d < b.length; d++) {
  10104. "function" == typeof i[d] && (i[d] = i[d]()), i[d] instanceof f.Box || (i[d] = new f.Box(i[d]));
  10105. }for (d = 0; d < b.length; d++) {
  10106. g = b[d], e = g._renderers[c], i[d] && (g._contentBox = g._contentBox.merge(i[d]), e.contentBox = i[d]), e.shouldRender(g) ? (e.getRenderShape() || (e.setRenderShape(e.create(g)), e.bringToBack ? g.getRenderContainer().prependShape(e.getRenderShape()) : g.getRenderContainer().appendShape(e.getRenderShape())), e.getRenderShape().setVisible(!0), i[d] = e.update(e.getRenderShape(), g, g._contentBox)) : e.getRenderShape() && (e.getRenderShape().setVisible(!1), i[d] = null);
  10107. }
  10108. }for (d = 0; d < b.length; d++) {
  10109. this.fire("noderender", { node: b[d] });
  10110. }
  10111. }
  10112. }, renderNode: function renderNode(b) {
  10113. var c,
  10114. d = this._rendererClasses;b._renderers || a(b, d), this.fire("beforerender", { node: b }), b._contentBox = new f.Box(), b._renderers.forEach(function (a) {
  10115. a.shouldRender(b) ? (a.getRenderShape() || (a.setRenderShape(a.create(b)), a.bringToBack ? b.getRenderContainer().prependShape(a.getRenderShape()) : b.getRenderContainer().appendShape(a.getRenderShape())), a.getRenderShape().setVisible(!0), c = a.update(a.getRenderShape(), b, b._contentBox), "function" == typeof c && (c = c()), c && (b._contentBox = b._contentBox.merge(c), a.contentBox = c)) : a.getRenderShape() && a.getRenderShape().setVisible(!1);
  10116. }), this.fire("noderender", { node: b });
  10117. } };
  10118. }var f = b.r(17),
  10119. g = b.r(19),
  10120. h = b.r(21),
  10121. i = f.createClass("Renderer", { constructor: function constructor(a) {
  10122. this.node = a;
  10123. }, create: function create(a) {
  10124. throw new Error("Not implement: Renderer.create()");
  10125. }, shouldRender: function shouldRender(a) {
  10126. return !0;
  10127. }, watchChange: function watchChange(a) {
  10128. void 0 === this.watchingData || this.watchingData, this.watchingData = a;
  10129. }, shouldDraw: function shouldDraw(a) {
  10130. return !0;
  10131. }, update: function update(a, b, c) {
  10132. return this.shouldDraw() && this.draw(a, b), this.place(a, b, c);
  10133. }, draw: function draw(a, b) {
  10134. throw new Error("Not implement: Renderer.draw()");
  10135. }, place: function place(a, b, c) {
  10136. throw new Error("Not implement: Renderer.place()");
  10137. }, getRenderShape: function getRenderShape() {
  10138. return this._renderShape || null;
  10139. }, setRenderShape: function setRenderShape(a) {
  10140. this._renderShape = a;
  10141. } });f.extendClass(g, e()), f.extendClass(h, { render: function render() {
  10142. if (this.attached) return this.getMinder().renderNode(this), this;
  10143. }, renderTree: function renderTree() {
  10144. if (this.attached) {
  10145. var a = [];return this.traverse(function (b) {
  10146. a.push(b);
  10147. }), this.getMinder().renderNodeBatch(a), this;
  10148. }
  10149. }, getRenderer: function getRenderer(a) {
  10150. var b = this._renderers;if (!b) return null;for (var c = 0; c < b.length; c++) {
  10151. if (b[c].getType() == a) return b[c];
  10152. }return null;
  10153. }, getContentBox: function getContentBox() {
  10154. return this.parent && this.parent.isCollapsed() ? new f.Box() : this._contentBox || new f.Box();
  10155. }, getRenderBox: function getRenderBox(a, b) {
  10156. var c = a && this.getRenderer(a),
  10157. d = c ? c.contentBox : this.getContentBox();return f.Matrix.getCTM(this.getRenderContainer(), b || "paper").transformBox(d);
  10158. } }), d.exports = i;
  10159. } }, b[28] = { value: function value(a, c, d) {
  10160. var e = b.r(17),
  10161. f = b.r(33),
  10162. g = b.r(19),
  10163. h = b.r(21);g.registerInitHook(function () {
  10164. this._initSelection();
  10165. }), e.extendClass(g, { _initSelection: function _initSelection() {
  10166. this._selectedNodes = [];
  10167. }, renderChangedSelection: function renderChangedSelection(a) {
  10168. var b = this.getSelectedNodes(),
  10169. c = [];for (b.forEach(function (b) {
  10170. -1 == a.indexOf(b) && c.push(b);
  10171. }), a.forEach(function (a) {
  10172. -1 == b.indexOf(a) && c.push(a);
  10173. }), c.length && (this._interactChange(), this.fire("selectionchange")); c.length;) {
  10174. c.shift().render();
  10175. }
  10176. }, getSelectedNodes: function getSelectedNodes() {
  10177. return this._selectedNodes;
  10178. }, getSelectedNode: function getSelectedNode() {
  10179. return this.getSelectedNodes()[0] || null;
  10180. }, removeAllSelectedNodes: function removeAllSelectedNodes() {
  10181. var a = this._selectedNodes.splice(0);return this._selectedNodes = [], this.renderChangedSelection(a), this.fire("selectionclear");
  10182. }, removeSelectedNodes: function removeSelectedNodes(a) {
  10183. var b = this,
  10184. c = this._selectedNodes.slice(0);return a = f.isArray(a) ? a : [a], a.forEach(function (a) {
  10185. var c;-1 !== (c = b._selectedNodes.indexOf(a)) && b._selectedNodes.splice(c, 1);
  10186. }), this.renderChangedSelection(c), this;
  10187. }, select: function select(a, b) {
  10188. var c = this.getSelectedNodes().slice(0);b && (this._selectedNodes = []);var d = this;return a = f.isArray(a) ? a : [a], a.forEach(function (a) {
  10189. -1 === d._selectedNodes.indexOf(a) && d._selectedNodes.unshift(a);
  10190. }), this.renderChangedSelection(c), this;
  10191. }, selectById: function selectById(a, b) {
  10192. a = f.isArray(a) ? a : [a];var c = this.getNodesById(a);return this.select(c, b);
  10193. }, toggleSelect: function toggleSelect(a) {
  10194. return f.isArray(a) ? a.forEach(this.toggleSelect.bind(this)) : a.isSelected() ? this.removeSelectedNodes(a) : this.select(a), this;
  10195. }, isSingleSelect: function isSingleSelect() {
  10196. return 1 == this._selectedNodes.length;
  10197. }, getSelectedAncestors: function getSelectedAncestors(a) {
  10198. function b(a, b) {
  10199. for (var c = a.length - 1; c >= 0; --c) {
  10200. if (a[c].isAncestorOf(b)) return !0;
  10201. }return !1;
  10202. }var c,
  10203. d = this.getSelectedNodes().slice(0),
  10204. e = [],
  10205. f = d.indexOf(this.getRoot());for (~f && !a && d.splice(f, 1), d.sort(function (a, b) {
  10206. return a.getLevel() - b.getLevel();
  10207. }); c = d.pop();) {
  10208. b(d, c) || e.push(c);
  10209. }return e;
  10210. } }), e.extendClass(h, { isSelected: function isSelected() {
  10211. var a = this.getMinder();return a && -1 != a.getSelectedNodes().indexOf(this);
  10212. } });
  10213. } }, b[29] = { value: function value(a, c, d) {
  10214. function e(a) {
  10215. var b = 4096,
  10216. c = 8192,
  10217. d = 16384,
  10218. e = 0;return "string" == typeof a ? a.toLowerCase().split(/\+\s*/).forEach(function (a) {
  10219. switch (a) {case "ctrl":case "cmd":
  10220. e |= b;break;case "alt":
  10221. e |= c;break;case "shift":
  10222. e |= d;break;default:
  10223. e |= h[a];}
  10224. }) : ((a.ctrlKey || a.metaKey) && (e |= b), a.altKey && (e |= c), a.shiftKey && (e |= d), e |= a.keyCode), e;
  10225. }var f = b.r(17),
  10226. g = b.r(33),
  10227. h = b.r(15),
  10228. i = b.r(19),
  10229. j = b.r(13);f.extendClass(j, { isShortcutKey: function isShortcutKey(a) {
  10230. var b = this.originEvent;return !!b && e(a) == e(b);
  10231. } }), i.registerInitHook(function () {
  10232. this._initShortcutKey();
  10233. }), f.extendClass(i, { _initShortcutKey: function _initShortcutKey() {
  10234. this._bindShortcutKeys();
  10235. }, _bindShortcutKeys: function _bindShortcutKeys() {
  10236. var a = this._shortcutKeys = {};this.on("keydown", function (b) {
  10237. for (var c in a) {
  10238. if (a.hasOwnProperty(c) && b.isShortcutKey(c)) {
  10239. var d = a[c];if (d.__statusCondition && d.__statusCondition != this.getStatus()) return;d(), b.preventDefault();
  10240. }
  10241. }
  10242. });
  10243. }, addShortcut: function addShortcut(a, b) {
  10244. var c = this._shortcutKeys;a.split(/\|\s*/).forEach(function (a) {
  10245. var d,
  10246. e = a.split("::");e.length > 1 && (a = e[1], d = e[0], b.__statusCondition = d), c[a] = b;
  10247. });
  10248. }, addCommandShortcutKeys: function addCommandShortcutKeys(a, b) {
  10249. var c = this._commandShortcutKeys || (this._commandShortcutKeys = {}),
  10250. d = {};b ? d[a] = b : d = a;var e = this;g.each(d, function (a, b) {
  10251. c[b] = a, e.addShortcut(a, function () {
  10252. -1 !== e.queryCommandState(b) && e.execCommand(b);
  10253. });
  10254. });
  10255. }, getCommandShortcutKey: function getCommandShortcutKey(a) {
  10256. var b = this._commandShortcutKeys;return b && b[a] || null;
  10257. }, supportClipboardEvent: function (a) {
  10258. return !!a.ClipboardEvent;
  10259. }(window) });
  10260. } }, b[30] = { value: function value(a, c, d) {
  10261. var e = b.r(17),
  10262. f = b.r(19),
  10263. g = ~window.location.href.indexOf("status"),
  10264. h = ~window.location.href.indexOf("trace");f.registerInitHook(function () {
  10265. this._initStatus();
  10266. }), e.extendClass(f, { _initStatus: function _initStatus() {
  10267. this._status = "normal", this._rollbackStatus = "normal";
  10268. }, setStatus: function setStatus(a, b) {
  10269. return "readonly" != this._status || b ? (a != this._status && (this._rollbackStatus = this._status, this._status = a, this.fire("statuschange", { lastStatus: this._rollbackStatus, currentStatus: this._status }), g && (console.log(window.event.type, this._rollbackStatus, "->", this._status), h && console.trace())), this) : this;
  10270. }, rollbackStatus: function rollbackStatus() {
  10271. this.setStatus(this._rollbackStatus);
  10272. }, getRollbackStatus: function getRollbackStatus() {
  10273. return this._rollbackStatus;
  10274. }, getStatus: function getStatus() {
  10275. return this._status;
  10276. } });
  10277. } }, b[31] = { value: function value(a, c, d) {
  10278. function e(a, b) {
  10279. l[a] = b;
  10280. }var f = b.r(17),
  10281. g = b.r(33),
  10282. h = b.r(19),
  10283. i = b.r(9),
  10284. j = b.r(21),
  10285. k = b.r(20),
  10286. l = {};c.register = e, g.extend(h, { getTemplateList: function getTemplateList() {
  10287. return l;
  10288. } }), f.extendClass(h, function () {
  10289. var a = h.prototype.getTheme;return { useTemplate: function useTemplate(a, b) {
  10290. this.setTemplate(a), this.refresh(b || 800);
  10291. }, getTemplate: function getTemplate() {
  10292. return this._template || "default";
  10293. }, setTemplate: function setTemplate(a) {
  10294. this._template = a || null;
  10295. }, getTemplateSupport: function getTemplateSupport(a) {
  10296. var b = l[this.getTemplate()];return b && b[a];
  10297. }, getTheme: function getTheme(b) {
  10298. return (this.getTemplateSupport("getTheme") || a).call(this, b);
  10299. } };
  10300. }()), f.extendClass(j, function () {
  10301. var a = j.prototype.getLayout,
  10302. b = j.prototype.getConnect;return { getLayout: function getLayout() {
  10303. return (this.getMinder().getTemplateSupport("getLayout") || a).call(this, this);
  10304. }, getConnect: function getConnect() {
  10305. return (this.getMinder().getTemplateSupport("getConnect") || b).call(this, this);
  10306. } };
  10307. }()), k.register("TemplateModule", { commands: { template: f.createClass("TemplateCommand", { base: i, execute: function execute(a, b) {
  10308. a.useTemplate(b), a.execCommand("camera");
  10309. }, queryValue: function queryValue(a) {
  10310. return a.getTemplate() || "default";
  10311. } }) } });
  10312. } }, b[32] = { value: function value(a, c, d) {
  10313. function e(a, b) {
  10314. m[a] = b;
  10315. }var f = b.r(17),
  10316. g = b.r(33),
  10317. h = b.r(19),
  10318. i = b.r(21),
  10319. j = b.r(20),
  10320. k = b.r(9),
  10321. l = { left: function left(a) {
  10322. return 3 in a && a[3] || 1 in a && a[1] || a[0];
  10323. }, right: function right(a) {
  10324. return 1 in a && a[1] || a[0];
  10325. }, top: function top(a) {
  10326. return a[0];
  10327. }, bottom: function bottom(a) {
  10328. return 2 in a && a[2] || a[0];
  10329. } },
  10330. m = {};c.register = e, g.extend(h, { getThemeList: function getThemeList() {
  10331. return m;
  10332. } }), f.extendClass(h, { useTheme: function useTheme(a) {
  10333. return this.setTheme(a), this.refresh(800), !0;
  10334. }, setTheme: function setTheme(a) {
  10335. if (a && !m[a]) throw new Error("Theme " + a + " not exists!");var b = this._theme;this._theme = a || null;var c = this.getRenderTarget();return c && (c.classList.remove("km-theme-" + b), a && c.classList.add("km-theme-" + a), c.style.background = this.getStyle("background")), this.fire("themechange", { theme: a }), this;
  10336. }, getTheme: function getTheme(a) {
  10337. return this._theme || this.getOption("defaultTheme") || "fresh-blue";
  10338. }, getThemeItems: function getThemeItems(a) {
  10339. this.getTheme(a);return m[this.getTheme(a)];
  10340. }, getStyle: function getStyle(a, b) {
  10341. var c,
  10342. d,
  10343. e,
  10344. f,
  10345. h = this.getThemeItems(b);if (a in h) return h[a];if (c = a.split("-"), c.length < 2) return null;if (d = c.pop(), (a = c.join("-")) in h) {
  10346. if (e = h[a], g.isArray(e) && (f = l[d])) return f(e);if (!isNaN(e)) return e;
  10347. }return null;
  10348. }, getNodeStyle: function getNodeStyle(a, b) {
  10349. var c = this.getStyle(a.getType() + "-" + b, a);return null !== c ? c : this.getStyle(b, a);
  10350. } }), f.extendClass(i, { getStyle: function getStyle(a) {
  10351. return this.getMinder().getNodeStyle(this, a);
  10352. } }), j.register("Theme", { defaultOptions: { defaultTheme: "fresh-blue" }, commands: { theme: f.createClass("ThemeCommand", { base: k, execute: function execute(a, b) {
  10353. return a.useTheme(b);
  10354. }, queryValue: function queryValue(a) {
  10355. return a.getTheme() || "default";
  10356. } }) } }), h.registerInitHook(function () {
  10357. this.setTheme();
  10358. });
  10359. } }, b[33] = { value: function value(a, c) {
  10360. var d = b.r(17),
  10361. e = {};c.extend = d.Utils.extend.bind(d.Utils), c.each = d.Utils.each.bind(d.Utils), c.uuid = function (a) {
  10362. return e[a] = e[a] ? e[a] + 1 : 1, a + e[a];
  10363. }, c.guid = function () {
  10364. return (1e6 * +new Date() + Math.floor(1e6 * Math.random())).toString(36);
  10365. }, c.trim = function (a) {
  10366. return a.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, "");
  10367. }, c.keys = function (a) {
  10368. var b = [];for (var c in a) {
  10369. a.hasOwnProperty(c) && b.push(c);
  10370. }return b;
  10371. }, c.clone = function (a) {
  10372. return JSON.parse(JSON.stringify(a));
  10373. }, c.comparePlainObject = function (a, b) {
  10374. return JSON.stringify(a) == JSON.stringify(b);
  10375. }, c.encodeHtml = function (a, b) {
  10376. return a ? a.replace(b || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g, function (a, b) {
  10377. return b ? a : { "<": "&lt;", "&": "&amp;", '"': "&quot;", ">": "&gt;", "'": "&#39;" }[a];
  10378. }) : "";
  10379. }, c.clearWhiteSpace = function (a) {
  10380. return a.replace(/[\u200b\t\r\n]/g, "");
  10381. }, c.each(["String", "Function", "Array", "Number", "RegExp", "Object"], function (a) {
  10382. var b = Object.prototype.toString;c["is" + a] = function (c) {
  10383. return b.apply(c) == "[object " + a + "]";
  10384. };
  10385. });
  10386. } }, b[34] = { value: function value(a, c, d) {
  10387. d.exports = window.kityminder = b.r(35);
  10388. } }, b[35] = { value: function value(a, c, d) {
  10389. var e = { version: b.r(19).version };b.r(33), e.Minder = b.r(19), e.Command = b.r(9), e.Node = b.r(21), b.r(22), b.r(8), e.Event = b.r(13), e.data = b.r(12), b.r(10), e.KeyMap = b.r(15), b.r(29), b.r(30), b.r(23), b.r(28), b.r(14), b.r(16), e.Module = b.r(20), b.r(26), e.Render = b.r(27), e.Connect = b.r(11), e.Layout = b.r(18), e.Theme = b.r(32), e.Template = b.r(31), e.Promise = b.r(25), b.r(7), b.r(24), b.r(42), b.r(43), b.r(44), b.r(45), b.r(46), b.r(47), b.r(48), b.r(50), b.r(49), b.r(51), b.r(52), b.r(53), b.r(54), b.r(55), b.r(56), b.r(57), b.r(58), b.r(59), b.r(60), b.r(61), b.r(62), b.r(63), b.r(64), b.r(68), b.r(65), b.r(67), b.r(66), b.r(40), b.r(36), b.r(37), b.r(38), b.r(39), b.r(41), b.r(75), b.r(78), b.r(77), b.r(76), b.r(78), b.r(80), b.r(79), b.r(0), b.r(1), b.r(2), b.r(3), b.r(4), b.r(5), b.r(6), b.r(69), b.r(73), b.r(70), b.r(72), b.r(71), b.r(74), d.exports = e;
  10390. } }, b[36] = { value: function value(a, c, d) {
  10391. function e(a) {
  10392. function b(a) {
  10393. var b = [],
  10394. d = a.getLayoutBox(),
  10395. e = 5;return "x" == c ? (b.push({ type: "up", node: a, area: new f.Box({ x: d.x, y: d.top - a.getStyle("margin-top") - e, width: d.width, height: a.getStyle("margin-top") }), path: ["M", d.x, d.top - e, "L", d.right, d.top - e] }), b.push({ type: "down", node: a, area: new f.Box({ x: d.x, y: d.bottom + e, width: d.width, height: a.getStyle("margin-bottom") }), path: ["M", d.x, d.bottom + e, "L", d.right, d.bottom + e] })) : (b.push({ type: "up", node: a, area: new f.Box({ x: d.left - a.getStyle("margin-left") - e, y: d.top, width: a.getStyle("margin-left"), height: d.height }), path: ["M", d.left - e, d.top, "L", d.left - e, d.bottom] }), b.push({ type: "down", node: a, area: new f.Box({ x: d.right + e, y: d.top, width: a.getStyle("margin-right"), height: d.height }), path: ["M", d.right + e, d.top, "L", d.right + e, d.bottom] })), b;
  10396. }var c = "left" == a || "right" == a ? "x" : "y",
  10397. d = "left" == a || "top" == a ? -1 : 1,
  10398. e = { left: "right", right: "left", top: "bottom", bottom: "top", x: "y", y: "x" };g.register(a, f.createClass({ base: g, doLayout: function doLayout(b, g) {
  10399. var h = b.getContentBox();if ("x" == c ? (b.setVertexOut(new f.Point(h[a], h.cy)), b.setLayoutVectorOut(new f.Vector(d, 0))) : (b.setVertexOut(new f.Point(h.cx, h[a])), b.setLayoutVectorOut(new f.Vector(0, d))), !g.length) return !1;g.forEach(function (b) {
  10400. var g = b.getContentBox();b.setLayoutTransform(new f.Matrix()), "x" == c ? (b.setVertexIn(new f.Point(g[e[a]], g.cy)), b.setLayoutVectorIn(new f.Vector(d, 0))) : (b.setVertexIn(new f.Point(g.cx, g[e[a]])), b.setLayoutVectorIn(new f.Vector(0, d)));
  10401. }), this.align(g, e[a]), this.stack(g, e[c]);var i = this.getBranchBox(g),
  10402. j = 0,
  10403. k = 0;"x" == c ? (j = h[a], j += d * b.getStyle("margin-" + a), j += d * g[0].getStyle("margin-" + e[a]), k = h.bottom, k -= h.height / 2, k -= i.height / 2, k -= i.y) : (j = h.right, j -= h.width / 2, j -= i.width / 2, j -= i.x, k = h[a], k += d * b.getStyle("margin-" + a), k += d * g[0].getStyle("margin-" + e[a])), this.move(g, j, k);
  10404. }, getOrderHint: b }));
  10405. }var f = b.r(17),
  10406. g = b.r(18);["left", "right", "top", "bottom"].forEach(e);
  10407. } }, b[37] = { value: function value(a, c, d) {
  10408. function e(a) {
  10409. var b = "filetree-" + (a > 0 ? "down" : "up");g.register(b, f.createClass({ base: g, doLayout: function doLayout(b, c, d) {
  10410. var e = b.getContentBox(),
  10411. g = 20;if (b.setVertexOut(new f.Point(e.left + g, a > 0 ? e.bottom : e.top)), b.setLayoutVectorOut(new f.Vector(0, a)), c.length) {
  10412. c.forEach(function (a) {
  10413. var b = a.getContentBox();a.setLayoutTransform(new f.Matrix()), a.setVertexIn(new f.Point(b.left, b.cy)), a.setLayoutVectorIn(new f.Vector(1, 0));
  10414. }), this.align(c, "left"), this.stack(c, "y");var h = 0;h += e.left, h += g, h += c[0].getStyle("margin-left");var i = 0;a > 0 ? (i += e.bottom, i += b.getStyle("margin-bottom"), i += c[0].getStyle("margin-top")) : (i -= this.getTreeBox(c).bottom, i += e.top, i -= b.getStyle("margin-top"), i -= c[0].getStyle("margin-bottom")), this.move(c, h, i);
  10415. }
  10416. }, getOrderHint: function getOrderHint(a) {
  10417. var b = [],
  10418. c = a.getLayoutBox(),
  10419. d = a.getLevel() > 1 ? 3 : 5;return b.push({ type: "up", node: a, area: new f.Box({ x: c.x, y: c.top - a.getStyle("margin-top") - d, width: c.width, height: a.getStyle("margin-top") }), path: ["M", c.x, c.top - d, "L", c.right, c.top - d] }), b.push({ type: "down", node: a, area: new f.Box({ x: c.x, y: c.bottom + d, width: c.width, height: a.getStyle("margin-bottom") }), path: ["M", c.x, c.bottom + d, "L", c.right, c.bottom + d] }), b;
  10420. } }));
  10421. }var f = b.r(17),
  10422. g = b.r(18);[-1, 1].forEach(e);
  10423. } }, b[38] = { value: function value(a, c, d) {
  10424. var e = b.r(17),
  10425. f = b.r(18);f.register("fish-bone-master", e.createClass("FishBoneMasterLayout", { base: f, doLayout: function doLayout(a, b, c) {
  10426. var d = [],
  10427. f = [],
  10428. g = b[0],
  10429. h = a.getContentBox();if (a.setVertexOut(new e.Point(h.right, h.cy)), a.setLayoutVectorOut(new e.Vector(1, 0)), g) {
  10430. var i = (g.getContentBox(), a.getStyle("margin-right")),
  10431. j = g.getStyle("margin-left"),
  10432. k = g.getStyle("margin-top"),
  10433. l = g.getStyle("margin-bottom");b.forEach(function (a, b) {
  10434. a.setLayoutTransform(new e.Matrix());var c = a.getContentBox();b % 2 ? (f.push(a), a.setVertexIn(new e.Point(c.left, c.top)), a.setLayoutVectorIn(new e.Vector(1, 1))) : (d.push(a), a.setVertexIn(new e.Point(c.left, c.bottom)), a.setLayoutVectorIn(new e.Vector(1, -1)));
  10435. }), this.stack(d, "x"), this.stack(f, "x"), this.align(d, "bottom"), this.align(f, "top");var m = h.right + i + j,
  10436. n = h.cy - l - a.getStyle("margin-top"),
  10437. o = h.cy + k + a.getStyle("margin-bottom");this.move(d, m, n), this.move(f, m + j, o);
  10438. }
  10439. } }));
  10440. } }, b[39] = { value: function value(a, c, d) {
  10441. var e = b.r(17),
  10442. f = b.r(18);f.register("fish-bone-slave", e.createClass("FishBoneSlaveLayout", { base: f, doLayout: function doLayout(a, b, c) {
  10443. var d = this,
  10444. f = Math.abs,
  10445. g = .382,
  10446. h = a.getContentBox(),
  10447. i = a.getLayoutVectorIn();a.setLayoutVectorOut(i);var j = h.left + h.width * g,
  10448. k = new e.Point(j, i.y > 0 ? h.bottom : h.top);a.setVertexOut(k);var l = b[0];if (l) {
  10449. var m = l.getContentBox();b.forEach(function (a, b) {
  10450. a.setLayoutTransform(new e.Matrix()), a.setLayoutVectorIn(new e.Vector(1, 0)), a.setVertexIn(new e.Point(m.left, m.cy));
  10451. }), this.stack(b, "y"), this.align(b, "left");var n = 0,
  10452. o = 0;n += k.x, a.getLayoutVectorOut().y < 0 ? (o -= this.getTreeBox(b).bottom, o += a.getContentBox().top, o -= a.getStyle("margin-top"), o -= l.getStyle("margin-bottom")) : (o += a.getContentBox().bottom, o += a.getStyle("margin-bottom"), o += l.getStyle("margin-top")), this.move(b, n, o), 2 == c && b.forEach(function (a) {
  10453. var b = a.getLayoutTransform(),
  10454. c = a.getContentBox(),
  10455. g = b.transformPoint(new e.Point(c.left, 0));d.move([a], f(g.y - k.y), 0);
  10456. });
  10457. }
  10458. } }));
  10459. } }, b[40] = { value: function value(a, c, d) {
  10460. var e = b.r(17),
  10461. f = b.r(18),
  10462. g = b.r(19);f.register("mind", e.createClass({ base: f, doLayout: function doLayout(a, b) {
  10463. var c = Math.ceil(a.children.length / 2),
  10464. d = [],
  10465. f = [];b.forEach(function (a) {
  10466. a.getIndex() < c ? d.push(a) : f.push(a);
  10467. });var h = g.getLayoutInstance("left"),
  10468. i = g.getLayoutInstance("right");h.doLayout(a, f), i.doLayout(a, d);var j = a.getContentBox();a.setVertexOut(new e.Point(j.cx, j.cy)), a.setLayoutVectorOut(new e.Vector(0, 0));
  10469. }, getOrderHint: function getOrderHint(a) {
  10470. var b = [],
  10471. c = a.getLayoutBox(),
  10472. d = 5;return b.push({ type: "up", node: a, area: new e.Box({ x: c.x, y: c.top - a.getStyle("margin-top") - d, width: c.width, height: a.getStyle("margin-top") }), path: ["M", c.x, c.top - d, "L", c.right, c.top - d] }), b.push({ type: "down", node: a, area: new e.Box({ x: c.x, y: c.bottom + d, width: c.width, height: a.getStyle("margin-bottom") }), path: ["M", c.x, c.bottom + d, "L", c.right, c.bottom + d] }), b;
  10473. } }));
  10474. } }, b[41] = { value: function value(a, c, d) {
  10475. var e = b.r(17),
  10476. f = b.r(18);b.r(19);f.register("tianpan", e.createClass({ base: f, doLayout: function doLayout(a, b) {
  10477. if (0 != b.length) {
  10478. var c,
  10479. d,
  10480. f,
  10481. g = this,
  10482. h = a.getContentBox(),
  10483. i = 5,
  10484. j = Math.max(h.width, 50);b.forEach(function (a, b) {
  10485. a.setLayoutTransform(new e.Matrix()), f = g.getTreeBox(a), j = Math.max(Math.max(f.width, f.height), j);
  10486. }), j = j / 1.5 / Math.PI, b.forEach(function (a, b) {
  10487. c = j * (Math.cos(i) + Math.sin(i) * i), d = j * (Math.sin(i) - Math.cos(i) * i), i += .9 - .02 * b, a.setLayoutVectorIn(new e.Vector(1, 0)), a.setVertexIn(new e.Point(h.cx, h.cy)), a.setLayoutTransform(new e.Matrix()), g.move([a], c, d);
  10488. });
  10489. }
  10490. }, getOrderHint: function getOrderHint(a) {
  10491. var b = [],
  10492. c = a.getLayoutBox(),
  10493. d = 5;return b.push({ type: "up", node: a, area: { x: c.x, y: c.top - a.getStyle("margin-top") - d, width: c.width, height: a.getStyle("margin-top") }, path: ["M", c.x, c.top - d, "L", c.right, c.top - d] }), b.push({ type: "down", node: a, area: { x: c.x, y: c.bottom + d, width: c.width, height: a.getStyle("margin-bottom") }, path: ["M", c.x, c.bottom + d, "L", c.right, c.bottom + d] }), b;
  10494. } }));
  10495. } }, b[42] = { value: function value(a, c, d) {
  10496. function e(a, b) {
  10497. return a.getIndex() - b.getIndex();
  10498. }function f(a, b) {
  10499. return -e(a, b);
  10500. }var g = b.r(17),
  10501. h = b.r(21),
  10502. i = b.r(9),
  10503. j = b.r(20);g.extendClass(h, { arrange: function arrange(a) {
  10504. var b = this.parent;if (b) {
  10505. var c = b.children;if (!(a < 0 || a >= c.length)) return c.splice(this.getIndex(), 1), c.splice(a, 0, this), this;
  10506. }
  10507. } });var k = g.createClass("ArrangeUpCommand", { base: i, execute: function execute(a) {
  10508. var b = a.getSelectedNodes();b.sort(e);var c = b.map(function (a) {
  10509. return a.getIndex();
  10510. });b.forEach(function (a, b) {
  10511. a.arrange(c[b] - 1);
  10512. }), a.layout(300);
  10513. }, queryState: function queryState(a) {
  10514. return a.getSelectedNode() ? 0 : -1;
  10515. } }),
  10516. l = g.createClass("ArrangeUpCommand", { base: i, execute: function execute(a) {
  10517. var b = a.getSelectedNodes();b.sort(f);var c = b.map(function (a) {
  10518. return a.getIndex();
  10519. });b.forEach(function (a, b) {
  10520. a.arrange(c[b] + 1);
  10521. }), a.layout(300);
  10522. }, queryState: function queryState(a) {
  10523. return a.getSelectedNode() ? 0 : -1;
  10524. } }),
  10525. m = g.createClass("ArrangeCommand", { base: i, execute: function execute(a, b) {
  10526. var c = a.getSelectedNodes().slice();if (c.length) {
  10527. if (h.getCommonAncestor(c) == c[0].parent) {
  10528. var d = c.map(function (a) {
  10529. return { index: a.getIndex(), node: a };
  10530. }),
  10531. e = Math.min.apply(Math, d.map(function (a) {
  10532. return a.index;
  10533. })) >= b;d.sort(function (a, b) {
  10534. return e ? b.index - a.index : a.index - b.index;
  10535. }), d.forEach(function (a) {
  10536. a.node.arrange(b);
  10537. }), a.layout(300);
  10538. }
  10539. }
  10540. }, queryState: function queryState(a) {
  10541. return a.getSelectedNode() ? 0 : -1;
  10542. } });j.register("ArrangeModule", { commands: { arrangeup: k, arrangedown: l, arrange: m }, contextmenu: [{ command: "arrangeup" }, { command: "arrangedown" }, { divider: !0 }], commandShortcutKeys: { arrangeup: "normal::alt+Up", arrangedown: "normal::alt+Down" } });
  10543. } }, b[43] = { value: function value(a, c, d) {
  10544. var e = b.r(17),
  10545. f = (b.r(33), b.r(19), b.r(21), b.r(9)),
  10546. g = b.r(20),
  10547. h = b.r(61);g.register("basestylemodule", function () {
  10548. function a(a, b) {
  10549. return a.getData(b) || a.getStyle(b);
  10550. }var b = this;return h.registerStyleHook(function (b, c) {
  10551. var d = a(b, "font-weight"),
  10552. e = a(b, "font-style");[d, e].join("/");c.eachItem(function (a, b) {
  10553. b.setFont({ weight: d, style: e });
  10554. });
  10555. }), { commands: { bold: e.createClass("boldCommand", { base: f, execute: function execute(a) {
  10556. var b = a.getSelectedNodes();1 == this.queryState("bold") ? b.forEach(function (a) {
  10557. a.setData("font-weight").render();
  10558. }) : b.forEach(function (a) {
  10559. a.setData("font-weight", "bold").render();
  10560. }), a.layout();
  10561. }, queryState: function queryState() {
  10562. var a = b.getSelectedNodes(),
  10563. c = 0;return 0 === a.length ? -1 : (a.forEach(function (a) {
  10564. if (a && a.getData("font-weight")) return c = 1, !1;
  10565. }), c);
  10566. } }), italic: e.createClass("italicCommand", { base: f, execute: function execute(a) {
  10567. var b = a.getSelectedNodes();1 == this.queryState("italic") ? b.forEach(function (a) {
  10568. a.setData("font-style").render();
  10569. }) : b.forEach(function (a) {
  10570. a.setData("font-style", "italic").render();
  10571. }), a.layout();
  10572. }, queryState: function queryState() {
  10573. var a = b.getSelectedNodes(),
  10574. c = 0;return 0 === a.length ? -1 : (a.forEach(function (a) {
  10575. if (a && a.getData("font-style")) return c = 1, !1;
  10576. }), c);
  10577. } }) }, commandShortcutKeys: { bold: "ctrl+b", italic: "ctrl+i" } };
  10578. });
  10579. } }, b[44] = { value: function value(a, c, d) {
  10580. var e = b.r(17),
  10581. f = (b.r(33), b.r(21)),
  10582. g = b.r(9);b.r(20).register("ClipboardModule", function () {
  10583. function a(b, d) {
  10584. h.push(d), c.appendNode(d, b), d.render(), d.setLayoutOffset(null);var e = d.children.map(function (a) {
  10585. return a.clone();
  10586. });d.clearChildren();for (var f, g = 0; f = e[g]; g++) {
  10587. a(d, f);
  10588. }
  10589. }function b(a) {
  10590. a.length && (a.sort(function (a, b) {
  10591. return a.getIndex() - b.getIndex();
  10592. }), d = a.map(function (a) {
  10593. return a.clone();
  10594. }));
  10595. }var c = this,
  10596. d = [],
  10597. h = [],
  10598. i = e.createClass("CopyCommand", { base: g, execute: function execute(a) {
  10599. b(a.getSelectedAncestors(!0)), this.setContentChanged(!1);
  10600. } }),
  10601. j = e.createClass("CutCommand", { base: g, execute: function execute(a) {
  10602. var c = a.getSelectedAncestors();0 !== c.length && (b(c), a.select(f.getCommonAncestor(c), !0), c.slice().forEach(function (b) {
  10603. a.removeNode(b);
  10604. }), a.layout(300));
  10605. } }),
  10606. k = e.createClass("PasteCommand", { base: g, execute: function execute(b) {
  10607. if (d.length) {
  10608. var c = b.getSelectedNodes();if (!c.length) return;for (var e, f = 0; e = d[f]; f++) {
  10609. for (var g, i = 0; g = c[i]; i++) {
  10610. a(g, e.clone());
  10611. }
  10612. }b.select(h, !0), h = [], b.layout(300);
  10613. }
  10614. }, queryState: function queryState(a) {
  10615. return a.getSelectedNode() ? 0 : -1;
  10616. } });if (c.supportClipboardEvent && !e.Browser.gecko) {
  10617. var l = function l(a) {
  10618. this.fire("beforeCopy", a);
  10619. },
  10620. m = function m(a) {
  10621. this.fire("beforeCut", a);
  10622. },
  10623. n = function n(a) {
  10624. this.fire("beforePaste", a);
  10625. };return { commands: { copy: i, cut: j, paste: k }, clipBoardEvents: { copy: l.bind(c), cut: m.bind(c), paste: n.bind(c) }, sendToClipboard: b };
  10626. }return { commands: { copy: i, cut: j, paste: k }, commandShortcutKeys: { copy: "normal::ctrl+c|", cut: "normal::ctrl+x", paste: "normal::ctrl+v" }, sendToClipboard: b };
  10627. });
  10628. } }, b[45] = { value: function value(a, c, d) {
  10629. var e = b.r(17),
  10630. f = (b.r(33), b.r(21)),
  10631. g = b.r(9),
  10632. h = b.r(20),
  10633. i = e.createClass("MoveToParentCommand", { base: g, execute: function execute(a, b, c) {
  10634. for (var d, e = 0; e < b.length; e++) {
  10635. d = b[e], d.parent && (d.parent.removeChild(d), c.appendChild(d), d.render());
  10636. }c.expand(), a.select(b, !0);
  10637. } }),
  10638. j = e.createClass("DropHinter", { base: e.Group, constructor: function constructor() {
  10639. this.callBase(), this.rect = new e.Rect(), this.addShape(this.rect);
  10640. }, render: function render(a) {
  10641. this.setVisible(!!a), a && (this.rect.setBox(a.getLayoutBox()).setRadius(a.getStyle("radius") || 0).stroke(a.getStyle("drop-hint-color") || "yellow", a.getStyle("drop-hint-width") || 2), this.bringTop());
  10642. } }),
  10643. k = e.createClass("OrderHinter", { base: e.Group, constructor: function constructor() {
  10644. this.callBase(), this.area = new e.Rect(), this.path = new e.Path(), this.addShapes([this.area, this.path]);
  10645. }, render: function render(a) {
  10646. this.setVisible(!!a), a && (this.area.setBox(a.area), this.area.fill(a.node.getStyle("order-hint-area-color") || "rgba(0, 255, 0, .5)"), this.path.setPathData(a.path), this.path.stroke(a.node.getStyle("order-hint-path-color") || "#0f0", a.node.getStyle("order-hint-path-width") || 1));
  10647. } }),
  10648. l = e.createClass("TreeDragger", { constructor: function constructor(a) {
  10649. this._minder = a, this._dropHinter = new j(), this._orderHinter = new k(), a.getRenderContainer().addShapes([this._dropHinter, this._orderHinter]);
  10650. }, dragStart: function dragStart(a) {
  10651. this._startPosition = a;
  10652. }, dragMove: function dragMove(a) {
  10653. if (this._startPosition) {
  10654. var b = e.Vector.fromPoints(this._dragPosition || this._startPosition, a),
  10655. c = this._minder;if (this._dragPosition = a, !this._dragMode) {
  10656. if (e.Vector.fromPoints(this._dragPosition, this._startPosition).length() < 10) return;if (!this._enterDragMode()) return;
  10657. }for (var d = 0; d < this._dragSources.length; d++) {
  10658. this._dragSources[d].setLayoutOffset(this._dragSources[d].getLayoutOffset().offset(b)), c.applyLayoutResult(this._dragSources[d]);
  10659. }this._dropTest() ? this._renderOrderHint(this._orderSucceedHint = null) : this._orderTest();
  10660. }
  10661. }, dragEnd: function dragEnd() {
  10662. if (this._startPosition = null, this._dragPosition = null, this._dragMode) {
  10663. if (this._fadeDragSources(1), this._dropSucceedTarget) this._dragSources.forEach(function (a) {
  10664. a.setLayoutOffset(null);
  10665. }), this._minder.layout(-1), this._minder.execCommand("movetoparent", this._dragSources, this._dropSucceedTarget);else if (this._orderSucceedHint) {
  10666. var a = this._orderSucceedHint,
  10667. b = a.node.getIndex(),
  10668. c = this._dragSources.map(function (a) {
  10669. return a.setLayoutOffset(null), a.getIndex();
  10670. }),
  10671. d = Math.max.apply(Math, c),
  10672. e = Math.min.apply(Math, c);b < e && "down" == a.type && b++, b > d && "up" == a.type && b--, a.node.setLayoutOffset(null), this._minder.execCommand("arrange", b), this._renderOrderHint(null);
  10673. } else this._minder.fire("savescene");this._minder.layout(300), this._leaveDragMode(), this._minder.fire("contentchange");
  10674. }
  10675. }, _enterDragMode: function _enterDragMode() {
  10676. return this._calcDragSources(), this._dragSources.length ? (this._fadeDragSources(.5), this._calcDropTargets(), this._calcOrderHints(), this._dragMode = !0, this._minder.setStatus("dragtree"), !0) : (this._startPosition = null, !1);
  10677. }, _calcDragSources: function _calcDragSources() {
  10678. this._dragSources = this._minder.getSelectedAncestors();
  10679. }, _fadeDragSources: function _fadeDragSources(a) {
  10680. var b = this._minder;this._dragSources.forEach(function (c) {
  10681. c.getRenderContainer().setOpacity(a, 200), c.traverse(function (c) {
  10682. a < 1 ? b.detachNode(c) : b.attachNode(c);
  10683. }, !0);
  10684. });
  10685. }, _calcDropTargets: function _calcDropTargets() {
  10686. function a(b, c) {
  10687. var d,
  10688. e = [];return e.push(c), c.getChildren().forEach(function (c) {
  10689. for (d = 0; d < b.length; d++) {
  10690. if (b[d] == c) return;
  10691. }e = e.concat(a(b, c));
  10692. }), e;
  10693. }this._dropTargets = a(this._dragSources, this._minder.getRoot()), this._dropTargetBoxes = this._dropTargets.map(function (a) {
  10694. return a.getLayoutBox();
  10695. });
  10696. }, _calcOrderHints: function _calcOrderHints() {
  10697. var a = this._dragSources,
  10698. b = f.getCommonAncestor(a);if (b == a[0] && (b = a[0].parent), 0 === a.length || b != a[0].parent) return void (this._orderHints = []);var c = b.children;this._orderHints = c.reduce(function (b, c) {
  10699. return -1 == a.indexOf(c) && (b = b.concat(c.getOrderHint())), b;
  10700. }, []);
  10701. }, _leaveDragMode: function _leaveDragMode() {
  10702. this._dragMode = !1, this._dropSucceedTarget = null, this._orderSucceedHint = null, this._renderDropHint(null), this._renderOrderHint(null), this._minder.rollbackStatus();
  10703. }, _drawForDragMode: function _drawForDragMode() {
  10704. this._text.setContent(this._dragSources.length + " items"), this._text.setPosition(this._startPosition.x, this._startPosition.y + 5), this._minder.getRenderContainer().addShape(this);
  10705. }, _boxTest: function _boxTest(a, b, c) {
  10706. var d,
  10707. e,
  10708. f,
  10709. g,
  10710. h,
  10711. i = this._dragSources.map(function (a) {
  10712. return a.getLayoutBox();
  10713. });for (c = c || function (a, b, c) {
  10714. return a && !a.isEmpty();
  10715. }, d = 0; d < a.length; d++) {
  10716. for (f = a[d], h = b.call(this, f, d), e = 0; e < i.length; e++) {
  10717. g = i[e];var j = g.intersect(h);if (c(j, g, h)) return f;
  10718. }
  10719. }return null;
  10720. }, _dropTest: function _dropTest() {
  10721. return this._dropSucceedTarget = this._boxTest(this._dropTargets, function (a, b) {
  10722. return this._dropTargetBoxes[b];
  10723. }, function (a, b, c) {
  10724. function d(a) {
  10725. return a.width * a.height;
  10726. }return !!a && !!d(a) && (d(a) > .5 * Math.min(d(b), d(c)) || a.width + 1 >= Math.min(b.width, c.width) || a.height + 1 >= Math.min(b.height, c.height));
  10727. }), this._renderDropHint(this._dropSucceedTarget), !!this._dropSucceedTarget;
  10728. }, _orderTest: function _orderTest() {
  10729. return this._orderSucceedHint = this._boxTest(this._orderHints, function (a) {
  10730. return a.area;
  10731. }), this._renderOrderHint(this._orderSucceedHint), !!this._orderSucceedHint;
  10732. }, _renderDropHint: function _renderDropHint(a) {
  10733. this._dropHinter.render(a);
  10734. }, _renderOrderHint: function _renderOrderHint(a) {
  10735. this._orderHinter.render(a);
  10736. }, preventDragMove: function preventDragMove() {
  10737. this._startPosition = null;
  10738. } });h.register("DragTree", function () {
  10739. var a;return { init: function init() {
  10740. a = new l(this), window.addEventListener("mouseup", function () {
  10741. a.dragEnd();
  10742. });
  10743. }, events: { "normal.mousedown inputready.mousedown": function normalMousedownInputreadyMousedown(b) {
  10744. b.originEvent.button || b.getTargetNode() && b.getTargetNode() != this.getRoot() && a.dragStart(b.getPosition());
  10745. }, "normal.mousemove dragtree.mousemove": function normalMousemoveDragtreeMousemove(b) {
  10746. a.dragMove(b.getPosition());
  10747. }, "normal.mouseup dragtree.beforemouseup": function normalMouseupDragtreeBeforemouseup(b) {
  10748. a.dragEnd(), b.preventDefault();
  10749. }, statuschange: function statuschange(b) {
  10750. "textedit" == b.lastStatus && "normal" == b.currentStatus && a.preventDragMove();
  10751. } }, commands: { movetoparent: i } };
  10752. });
  10753. } }, b[46] = { value: function value(a, c, d) {
  10754. var e = b.r(17),
  10755. f = b.r(33),
  10756. g = b.r(15),
  10757. h = b.r(21),
  10758. i = b.r(9),
  10759. j = b.r(20),
  10760. k = b.r(27);j.register("Expand", function () {
  10761. var a = this,
  10762. b = "expandState",
  10763. c = "collapse";e.extendClass(h, { expand: function expand() {
  10764. return this.setData(b, "expand"), this;
  10765. }, collapse: function collapse() {
  10766. return this.setData(b, c), this;
  10767. }, isExpanded: function isExpanded() {
  10768. return this.getData(b) !== c && (this.isRoot() || this.parent.isExpanded());
  10769. }, isCollapsed: function isCollapsed() {
  10770. return !this.isExpanded();
  10771. } });var d = e.createClass("ExpandCommand", { base: i, execute: function execute(a, b) {
  10772. var c = a.getSelectedNode();if (c) {
  10773. for (b && (c = c.parent); c.parent;) {
  10774. c.expand(), c = c.parent;
  10775. }c.renderTree(), a.layout(100);
  10776. }
  10777. }, queryState: function queryState(a) {
  10778. var b = a.getSelectedNode();return !b || b.isRoot() || b.isExpanded() ? -1 : 0;
  10779. } }),
  10780. j = e.createClass("ExpandToLevelCommand", { base: i, execute: function execute(a, b) {
  10781. a.getRoot().traverse(function (a) {
  10782. a.getLevel() < b && a.expand(), a.getLevel() != b || a.isLeaf() || a.collapse();
  10783. }), a.refresh(100);
  10784. }, enableReadOnly: !0 }),
  10785. l = e.createClass("CollapseCommand", { base: i, execute: function execute(a) {
  10786. var b = a.getSelectedNode();b && (b.collapse(), b.renderTree(), a.layout());
  10787. }, queryState: function queryState(a) {
  10788. var b = a.getSelectedNode();return b && !b.isRoot() && b.isExpanded() ? 0 : -1;
  10789. } }),
  10790. m = e.createClass("Expander", { base: e.Group, constructor: function constructor(a) {
  10791. this.callBase(), this.radius = 6, this.outline = new e.Circle(this.radius).stroke("gray").fill("white"), this.sign = new e.Path().stroke("gray"), this.addShapes([this.outline, this.sign]), this.initEvent(a), this.setId(f.uuid("node_expander")), this.setStyle("cursor", "pointer");
  10792. }, initEvent: function initEvent(b) {
  10793. this.on("mousedown", function (c) {
  10794. a.select([b], !0), b.isExpanded() ? b.collapse() : b.expand(), b.renderTree().getMinder().layout(100), b.getMinder().fire("contentchange"), c.stopPropagation(), c.preventDefault();
  10795. }), this.on("dblclick click mouseup", function (a) {
  10796. a.stopPropagation(), a.preventDefault();
  10797. });
  10798. }, setState: function setState(a) {
  10799. if ("hide" == a) return void this.setVisible(!1);this.setVisible(!0);var b = ["M", 1.5 - this.radius, 0, "L", this.radius - 1.5, 0];a == c && b.push(["M", 0, 1.5 - this.radius, "L", 0, this.radius - 1.5]), this.sign.setPathData(b);
  10800. } }),
  10801. n = e.createClass("ExpanderRenderer", { base: k, create: function create(a) {
  10802. if (!a.isRoot()) return this.expander = new m(a), a.getRenderContainer().prependShape(this.expander), a.expanderRenderer = this, this.node = a, this.expander;
  10803. }, shouldRender: function shouldRender(a) {
  10804. return !a.isRoot();
  10805. }, update: function update(a, c, d) {
  10806. if (c.parent) {
  10807. var e = c.parent.isExpanded();a.setState(e && c.children.length ? c.getData(b) : "hide");var f = c.getLayoutVectorIn().normalize(a.radius + c.getStyle("stroke-width")),
  10808. g = c.getVertexIn().offset(f.reverse());this.expander.setTranslate(g);
  10809. }
  10810. } });return { commands: { expand: d, expandtolevel: j, collapse: l }, events: { layoutapply: function layoutapply(a) {
  10811. var b = a.node.getRenderer("ExpanderRenderer");b.getRenderShape() && b.update(b.getRenderShape(), a.node);
  10812. }, beforerender: function beforerender(a) {
  10813. var b = a.node,
  10814. c = !b.parent || b.parent.isExpanded();b.getRenderContainer().setVisible(c), c || a.stopPropagation();
  10815. }, "normal.keydown": function normalKeydown(a) {
  10816. if ("textedit" != this.getStatus()) {
  10817. if (a.originEvent.keyCode == g["/"]) {
  10818. var b = this.getSelectedNode();if (!b || b == this.getRoot()) return;var c = b.isExpanded();this.getSelectedNodes().forEach(function (a) {
  10819. c ? a.collapse() : a.expand(), a.renderTree();
  10820. }), this.layout(100), this.fire("contentchange"), a.preventDefault(), a.stopPropagationImmediately();
  10821. }a.isShortcutKey("Alt+`") && this.execCommand("expandtolevel", 9999);for (var d = 1; d < 6; d++) {
  10822. a.isShortcutKey("Alt+" + d) && this.execCommand("expandtolevel", d);
  10823. }
  10824. }
  10825. } }, renderers: { outside: n }, contextmenu: [{ command: "expandtoleaf", query: function query() {
  10826. return !a.getSelectedNode();
  10827. }, fn: function fn(a) {
  10828. a.execCommand("expandtolevel", 9999);
  10829. } }, { command: "expandtolevel1", query: function query() {
  10830. return !a.getSelectedNode();
  10831. }, fn: function fn(a) {
  10832. a.execCommand("expandtolevel", 1);
  10833. } }, { command: "expandtolevel2", query: function query() {
  10834. return !a.getSelectedNode();
  10835. }, fn: function fn(a) {
  10836. a.execCommand("expandtolevel", 2);
  10837. } }, { command: "expandtolevel3", query: function query() {
  10838. return !a.getSelectedNode();
  10839. }, fn: function fn(a) {
  10840. a.execCommand("expandtolevel", 3);
  10841. } }, { divider: !0 }] };
  10842. });
  10843. } }, b[47] = { value: function value(a, c, d) {
  10844. function e(a, b) {
  10845. return a.getData(b) || a.getStyle(b);
  10846. }var f = b.r(17),
  10847. g = (b.r(33), b.r(19), b.r(21), b.r(9)),
  10848. h = b.r(20);b.r(61).registerStyleHook(function (a, b) {
  10849. var c = a.getData("color"),
  10850. d = a.getStyle("selected-color"),
  10851. f = a.getStyle("color"),
  10852. g = c || (a.isSelected() && d ? d : f),
  10853. h = e(a, "font-family"),
  10854. i = e(a, "font-size");b.fill(g), b.eachItem(function (a, b) {
  10855. b.setFont({ family: h, size: i });
  10856. });
  10857. }), h.register("fontmodule", { commands: { forecolor: f.createClass("fontcolorCommand", { base: g, execute: function execute(a, b) {
  10858. a.getSelectedNodes().forEach(function (a) {
  10859. a.setData("color", b), a.render();
  10860. });
  10861. }, queryState: function queryState(a) {
  10862. return 0 === a.getSelectedNodes().length ? -1 : 0;
  10863. }, queryValue: function queryValue(a) {
  10864. return 1 == a.getSelectedNodes().length ? a.getSelectedNodes()[0].getData("color") : "mixed";
  10865. } }), background: f.createClass("backgroudCommand", { base: g, execute: function execute(a, b) {
  10866. a.getSelectedNodes().forEach(function (a) {
  10867. a.setData("background", b), a.render();
  10868. });
  10869. }, queryState: function queryState(a) {
  10870. return 0 === a.getSelectedNodes().length ? -1 : 0;
  10871. }, queryValue: function queryValue(a) {
  10872. return 1 == a.getSelectedNodes().length ? a.getSelectedNodes()[0].getData("background") : "mixed";
  10873. } }), fontfamily: f.createClass("fontfamilyCommand", { base: g, execute: function execute(a, b) {
  10874. a.getSelectedNodes().forEach(function (c) {
  10875. c.setData("font-family", b), c.render(), a.layout();
  10876. });
  10877. }, queryState: function queryState(a) {
  10878. return 0 === a.getSelectedNodes().length ? -1 : 0;
  10879. }, queryValue: function queryValue(a) {
  10880. var b = a.getSelectedNode();return b ? b.getData("font-family") : null;
  10881. } }), fontsize: f.createClass("fontsizeCommand", { base: g, execute: function execute(a, b) {
  10882. a.getSelectedNodes().forEach(function (c) {
  10883. c.setData("font-size", b), c.render(), a.layout(300);
  10884. });
  10885. }, queryState: function queryState(a) {
  10886. return 0 === a.getSelectedNodes().length ? -1 : 0;
  10887. }, queryValue: function queryValue(a) {
  10888. var b = a.getSelectedNode();return b ? b.getData("font-size") : null;
  10889. } }) } });
  10890. } }, b[48] = { value: function value(a, c, d) {
  10891. var e = b.r(17),
  10892. f = (b.r(33), b.r(19), b.r(21), b.r(9)),
  10893. g = b.r(20),
  10894. h = b.r(27);g.register("hyperlink", { commands: { hyperlink: e.createClass("hyperlink", { base: f, execute: function execute(a, b, c) {
  10895. a.getSelectedNodes().forEach(function (a) {
  10896. a.setData("hyperlink", b), a.setData("hyperlinkTitle", b && c), a.render();
  10897. }), a.layout();
  10898. }, queryState: function queryState(a) {
  10899. var b = a.getSelectedNodes(),
  10900. c = 0;return 0 === b.length ? -1 : (b.forEach(function (a) {
  10901. if (a && a.getData("hyperlink")) return c = 0, !1;
  10902. }), c);
  10903. }, queryValue: function queryValue(a) {
  10904. var b = a.getSelectedNode();return { url: b.getData("hyperlink"), title: b.getData("hyperlinkTitle") };
  10905. } }) }, renderers: { right: e.createClass("hyperlinkrender", { base: h, create: function create() {
  10906. var a = new e.HyperLink(),
  10907. b = new e.Path(),
  10908. c = new e.Rect(24, 22, -2, -6, 4).fill("rgba(255, 255, 255, 0)");return b.setPathData("M16.614,10.224h-1.278c-1.668,0-3.07-1.07-3.599-2.556h4.877c0.707,0,1.278-0.571,1.278-1.278V3.834 c0-0.707-0.571-1.278-1.278-1.278h-4.877C12.266,1.071,13.668,0,15.336,0h1.278c2.116,0,3.834,1.716,3.834,3.834V6.39 C20.448,8.508,18.73,10.224,16.614,10.224z M5.112,5.112c0-0.707,0.573-1.278,1.278-1.278h7.668c0.707,0,1.278,0.571,1.278,1.278 S14.765,6.39,14.058,6.39H6.39C5.685,6.39,5.112,5.819,5.112,5.112z M2.556,3.834V6.39c0,0.707,0.573,1.278,1.278,1.278h4.877 c-0.528,1.486-1.932,2.556-3.599,2.556H3.834C1.716,10.224,0,8.508,0,6.39V3.834C0,1.716,1.716,0,3.834,0h1.278 c1.667,0,3.071,1.071,3.599,2.556H3.834C3.129,2.556,2.556,3.127,2.556,3.834z").fill("#666"), a.addShape(c), a.addShape(b), a.setTarget("_blank"), a.setStyle("cursor", "pointer"), a.on("mouseover", function () {
  10909. c.fill("rgba(255, 255, 200, .8)");
  10910. }).on("mouseout", function () {
  10911. c.fill("rgba(255, 255, 255, 0)");
  10912. }), a;
  10913. }, shouldRender: function shouldRender(a) {
  10914. return a.getData("hyperlink");
  10915. }, update: function update(a, b, c) {
  10916. var d = b.getData("hyperlink");a.setHref("#");for (var f = ["^http:", "^https:", "^ftp:", "^mailto:"], g = 0; g < f.length; g++) {
  10917. if (new RegExp(f[g]).test(d)) {
  10918. a.setHref(d);break;
  10919. }
  10920. }var h = b.getData("hyperlinkTitle");h = h ? [h, "(", d, ")"].join("") : d, a.node.setAttributeNS("http://www.w3.org/1999/xlink", "title", h);var i = b.getStyle("space-right");return a.setTranslate(c.right + i + 2, -5), new e.Box({ x: c.right + i, y: -11, width: 24, height: 22 });
  10921. } }) } });
  10922. } }, b[49] = { value: function value(a, c, d) {
  10923. var e = b.r(17),
  10924. f = b.r(15),
  10925. g = b.r(20);b.r(9);g.register("ImageViewer", function () {
  10926. function a(a, b, d) {
  10927. var e = document.createElement(a);return c(e, b), d && d.length && d.forEach(function (a) {
  10928. e.appendChild(a);
  10929. }), e;
  10930. }function b(a, b, c) {
  10931. a.addEventListener(b, c);
  10932. }function c(a, b) {
  10933. b && b.split(" ").forEach(function (b) {
  10934. a.classList.add(b);
  10935. });
  10936. }var d = e.createClass("ImageViewer", { constructor: function constructor() {
  10937. var c = a("button", "km-image-viewer-btn km-image-viewer-close"),
  10938. d = a("button", "km-image-viewer-btn km-image-viewer-source"),
  10939. e = this.image = a("img"),
  10940. f = this.toolbar = a("div", "km-image-viewer-toolbar", [d, c]),
  10941. g = a("div", "km-image-viewer-container", [e]),
  10942. h = this.viewer = a("div", "km-image-viewer", [f, g]);this.hotkeyHandler = this.hotkeyHandler.bind(this), b(c, "click", this.close.bind(this)), b(d, "click", this.viewSource.bind(this)), b(e, "click", this.zoomImage.bind(this)), b(h, "contextmenu", this.toggleToolbar.bind(this)), b(document, "keydown", this.hotkeyHandler);
  10943. }, dispose: function dispose() {
  10944. this.close(), document.removeEventListener("remove", this.hotkeyHandler);
  10945. }, hotkeyHandler: function hotkeyHandler(a) {
  10946. this.actived && a.keyCode === f.esc && this.close();
  10947. }, toggleToolbar: function toggleToolbar(a) {
  10948. a && a.preventDefault(), this.toolbar.classList.toggle("hidden");
  10949. }, zoomImage: function zoomImage(a) {
  10950. var b = this.image;"boolean" == typeof a ? a && c(b, "limited") : b.classList.toggle("limited");
  10951. }, viewSource: function viewSource(a) {
  10952. window.open(this.image.src);
  10953. }, open: function open(a) {
  10954. var b = document.querySelector("input");b && (b.focus(), b.blur()), this.image.src = a, this.zoomImage(!0), document.body.appendChild(this.viewer), this.actived = !0;
  10955. }, close: function close() {
  10956. this.image.src = "", document.body.removeChild(this.viewer), this.actived = !1;
  10957. } });return { init: function init() {
  10958. this.viewer = new d();
  10959. }, events: { "normal.dblclick": function normalDblclick(a) {
  10960. var b = a.kityEvent.targetShape;"Image" === b.__KityClassName && b.url && this.viewer.open(b.url);
  10961. } } };
  10962. });
  10963. } }, b[50] = { value: function value(a, c, d) {
  10964. var e = b.r(17),
  10965. f = (b.r(33), b.r(19), b.r(21), b.r(9)),
  10966. g = b.r(20),
  10967. h = b.r(27);g.register("image", function () {
  10968. function a(a, b) {
  10969. var c = document.createElement("img");c.onload = function () {
  10970. b(c.width, c.height);
  10971. }, c.onerror = function () {
  10972. b(null);
  10973. }, c.src = a;
  10974. }function b(a, b, c, d) {
  10975. var e = a / b,
  10976. f = c / d;return a > c && e > f ? (a = c, b = a / e) : b > d && (b = d, a = b * e), { width: 0 | a, height: 0 | b };
  10977. }return { defaultOptions: { maxImageWidth: 200, maxImageHeight: 200 }, commands: { image: e.createClass("ImageCommand", { base: f, execute: function execute(c, d, e) {
  10978. var f = c.getSelectedNodes();a(d, function (a, g) {
  10979. f.forEach(function (f) {
  10980. var h = b(a, g, c.getOption("maxImageWidth"), c.getOption("maxImageHeight"));f.setData("image", d), f.setData("imageTitle", d && e), f.setData("imageSize", d && h), f.render();
  10981. }), c.fire("saveScene"), c.layout(300);
  10982. });
  10983. }, queryState: function queryState(a) {
  10984. var b = a.getSelectedNodes(),
  10985. c = 0;return 0 === b.length ? -1 : (b.forEach(function (a) {
  10986. if (a && a.getData("image")) return c = 0, !1;
  10987. }), c);
  10988. }, queryValue: function queryValue(a) {
  10989. var b = a.getSelectedNode();return { url: b.getData("image"), title: b.getData("imageTitle") };
  10990. } }) }, renderers: { top: e.createClass("ImageRenderer", { base: h, create: function create(a) {
  10991. return new e.Image(a.getData("image"));
  10992. }, shouldRender: function shouldRender(a) {
  10993. return a.getData("image");
  10994. }, update: function update(a, b, c) {
  10995. var d = b.getData("image"),
  10996. f = b.getData("imageTitle"),
  10997. g = b.getData("imageSize"),
  10998. h = b.getStyle("space-top");if (g) {
  10999. f && a.node.setAttributeNS("http://www.w3.org/1999/xlink", "title", f);var i = c.cx - g.width / 2,
  11000. j = c.y - g.height - h;return a.setUrl(d).setX(0 | i).setY(0 | j).setWidth(0 | g.width).setHeight(0 | g.height), new e.Box(0 | i, 0 | j, 0 | g.width, 0 | g.height);
  11001. }
  11002. } }) } };
  11003. });
  11004. } }, b[51] = { value: function value(a, c, d) {
  11005. var e = (b.r(17), b.r(33), b.r(15), b.r(19), b.r(21), b.r(9), b.r(20));b.r(27);e.register("KeyboardModule", function () {
  11006. function a(a) {
  11007. var b,
  11008. d = [];a.traverse(function (a) {
  11009. b = a.getLayoutBox(), b.width && b.height && d.push({ left: b.x, top: b.y, right: b.x + b.width, bottom: b.y + b.height, width: b.width, height: b.height, node: a });
  11010. });for (var e = 0; e < d.length; e++) {
  11011. c(d, e);
  11012. }
  11013. }function b(a, b) {
  11014. var c, d, h, i, j, k, l;c = e(a.left, b.left), d = f(a.right, b.right), h = e(a.top, b.top), i = f(a.bottom, b.bottom), j = d - c - a.width - b.width, k = i - h - a.height - b.height, l = j < 0 ? k : k < 0 ? j : g(j * j + k * k);var m = a.node,
  11015. n = b.node;return m.parent == n.parent && (l /= 10), n.parent == m && (l /= 5), l;
  11016. }function c(a, c) {
  11017. for (var d, e, f = a[c], g = {}, h = 0; h < a.length; h++) {
  11018. h != c && (d = a[h], e = b(d, f), d.right < f.left && (!g.left || e < g.left.dist) && (g.left = { dist: e, node: d.node }), d.left > f.right && (!g.right || e < g.right.dist) && (g.right = { dist: e, node: d.node }), d.bottom < f.top && (!g.top || e < g.top.dist) && (g.top = { dist: e, node: d.node }), d.top > f.bottom && (!g.down || e < g.down.dist) && (g.down = { dist: e, node: d.node }));
  11019. }f.node._nearestNodes = { right: g.right && g.right.node || null, top: g.top && g.top.node || null, left: g.left && g.left.node || null, down: g.down && g.down.node || null };
  11020. }function d(b, c) {
  11021. var d = b.getSelectedNode();if (!d) return b.select(b.getRoot()), void a(b.getRoot());d._nearestNodes || a(b.getRoot());var e = d._nearestNodes[c];e && b.select(e, !0);
  11022. }var e = Math.min,
  11023. f = Math.max,
  11024. g = (Math.abs, Math.sqrt);Math.exp;return { events: { layoutallfinish: function layoutallfinish() {
  11025. a(this.getRoot());
  11026. }, "normal.keydown readonly.keydown": function normalKeydownReadonlyKeydown(a) {
  11027. var b = this;["left", "right", "up", "down"].forEach(function (c) {
  11028. a.isShortcutKey(c) && (d(b, "up" == c ? "top" : c), a.preventDefault());
  11029. });
  11030. } } };
  11031. });
  11032. } }, b[52] = { value: function value(a, c, d) {
  11033. var e = b.r(17),
  11034. f = b.r(9),
  11035. g = b.r(20),
  11036. h = e.createClass("LayoutCommand", { base: f, execute: function execute(a, b) {
  11037. a.getSelectedNodes().forEach(function (a) {
  11038. a.layout(b);
  11039. });
  11040. }, queryValue: function queryValue(a) {
  11041. var b = a.getSelectedNode();if (b) return b.getData("layout");
  11042. }, queryState: function queryState(a) {
  11043. return a.getSelectedNode() ? 0 : -1;
  11044. } }),
  11045. i = e.createClass("ResetLayoutCommand", { base: f, execute: function execute(a) {
  11046. var b = a.getSelectedNodes();b.length || (b = [a.getRoot()]), b.forEach(function (a) {
  11047. a.traverse(function (a) {
  11048. a.resetLayoutOffset(), a.isRoot() || a.setData("layout", null);
  11049. });
  11050. }), a.layout(300);
  11051. }, enableReadOnly: !0 });g.register("LayoutModule", { commands: { layout: h, resetlayout: i }, contextmenu: [{ command: "resetlayout" }, { divider: !0 }], commandShortcutKeys: { resetlayout: "Ctrl+Shift+L" } });
  11052. } }, b[53] = { value: function value(a, c, d) {
  11053. var e = b.r(17),
  11054. f = (b.r(33), b.r(19), b.r(21)),
  11055. g = b.r(9),
  11056. h = b.r(20),
  11057. i = (b.r(27), e.createClass("AppendChildCommand", { base: g, execute: function execute(a, b) {
  11058. var c = a.getSelectedNode();if (!c) return null;var d = a.createNode(b, c);a.select(d, !0), c.isExpanded() ? d.render() : (c.expand(), c.renderTree()), a.layout(600);
  11059. }, queryState: function queryState(a) {
  11060. return a.getSelectedNode() ? 0 : -1;
  11061. } })),
  11062. j = e.createClass("AppendSiblingCommand", { base: g, execute: function execute(a, b) {
  11063. var c = a.getSelectedNode(),
  11064. d = c.parent;if (!d) return a.execCommand("AppendChildNode", b);var e = a.createNode(b, d, c.getIndex() + 1);e.setGlobalLayoutTransform(c.getGlobalLayoutTransform()), a.select(e, !0), e.render(), a.layout(600);
  11065. }, queryState: function queryState(a) {
  11066. return a.getSelectedNode() ? 0 : -1;
  11067. } }),
  11068. k = e.createClass("RemoverNodeCommand", { base: g, execute: function execute(a) {
  11069. var b = a.getSelectedNodes(),
  11070. c = f.getCommonAncestor.apply(null, b),
  11071. d = b[0].getIndex();if (b.forEach(function (b) {
  11072. b.isRoot() || a.removeNode(b);
  11073. }), 1 == b.length) {
  11074. var e = c.children[d - 1] || c.children[d];a.select(e || c || a.getRoot(), !0);
  11075. } else a.select(c || a.getRoot(), !0);a.layout(600);
  11076. }, queryState: function queryState(a) {
  11077. var b = a.getSelectedNode();return b && !b.isRoot() ? 0 : -1;
  11078. } }),
  11079. l = e.createClass("AppendParentCommand", { base: g, execute: function execute(a, b) {
  11080. var c = a.getSelectedNodes();c.sort(function (a, b) {
  11081. return a.getIndex() - b.getIndex();
  11082. });var d = c[0].parent,
  11083. e = a.createNode(b, d, c[0].getIndex());c.forEach(function (a) {
  11084. e.appendChild(a);
  11085. }), e.setGlobalLayoutTransform(c[c.length >> 1].getGlobalLayoutTransform()), a.select(e, !0), a.layout(600);
  11086. }, queryState: function queryState(a) {
  11087. var b = a.getSelectedNodes();if (!b.length) return -1;var c = b[0].parent;if (!c) return -1;for (var d = 1; d < b.length; d++) {
  11088. if (b[d].parent != c) return -1;
  11089. }return 0;
  11090. } });h.register("NodeModule", function () {
  11091. return { commands: { AppendChildNode: i, AppendSiblingNode: j, RemoveNode: k, AppendParentNode: l }, commandShortcutKeys: { appendsiblingnode: "normal::Enter", appendchildnode: "normal::Insert|Tab", appendparentnode: "normal::Shift+Tab|normal::Shift+Insert", removenode: "normal::Del|Backspace" } };
  11092. });
  11093. } }, b[54] = { value: function value(a, c, d) {
  11094. var e = b.r(17),
  11095. f = (b.r(33), b.r(19), b.r(21), b.r(9)),
  11096. g = b.r(20),
  11097. h = b.r(27);g.register("NoteModule", function () {
  11098. var a = "M9,9H3V8h6L9,9L9,9z M9,7H3V6h6V7z M9,5H3V4h6V5z M8.5,11H2V2h8v7.5 M9,12l2-2V1H1v11",
  11099. b = e.createClass("NoteCommand", { base: f, execute: function execute(a, b) {
  11100. var c = a.getSelectedNode();c.setData("note", b), c.render(), c.getMinder().layout(300);
  11101. }, queryState: function queryState(a) {
  11102. return 1 === a.getSelectedNodes().length ? 0 : -1;
  11103. }, queryValue: function queryValue(a) {
  11104. var b = a.getSelectedNode();return b && b.getData("note");
  11105. } }),
  11106. c = e.createClass("NoteIcon", { base: e.Group, constructor: function constructor() {
  11107. this.callBase(), this.width = 16, this.height = 17, this.rect = new e.Rect(16, 17, .5, -8.5, 2).fill("transparent"), this.path = new e.Path().setPathData(a).setTranslate(2.5, -6.5), this.addShapes([this.rect, this.path]), this.on("mouseover", function () {
  11108. this.rect.fill("rgba(255, 255, 200, .8)");
  11109. }).on("mouseout", function () {
  11110. this.rect.fill("transparent");
  11111. }), this.setStyle("cursor", "pointer");
  11112. } });return { renderers: { right: e.createClass("NoteIconRenderer", { base: h, create: function create(a) {
  11113. var b = new c();return b.on("mousedown", function (b) {
  11114. b.preventDefault(), a.getMinder().fire("editnoterequest");
  11115. }), b.on("mouseover", function () {
  11116. a.getMinder().fire("shownoterequest", { node: a, icon: b });
  11117. }), b.on("mouseout", function () {
  11118. a.getMinder().fire("hidenoterequest", { node: a, icon: b });
  11119. }), b;
  11120. }, shouldRender: function shouldRender(a) {
  11121. return a.getData("note");
  11122. }, update: function update(a, b, c) {
  11123. var d = c.right + b.getStyle("space-left"),
  11124. f = c.cy;return a.path.fill(b.getStyle("color")), a.setTranslate(d, f), new e.Box(d, Math.round(f - a.height / 2), a.width, a.height);
  11125. } }) }, commands: { note: b } };
  11126. });
  11127. } }, b[55] = { value: function value(a, c, d) {
  11128. var e = b.r(17),
  11129. f = b.r(33),
  11130. g = (b.r(19), b.r(21), b.r(9), b.r(20)),
  11131. h = b.r(27),
  11132. i = e.createClass("OutlineRenderer", { base: h, create: function create(a) {
  11133. var b = new e.Rect().setId(f.uuid("node_outline"));return this.bringToBack = !0, b;
  11134. }, update: function update(a, b, c) {
  11135. var d = b.getStyle("shape"),
  11136. f = b.getStyle("padding-left"),
  11137. g = b.getStyle("padding-right"),
  11138. h = b.getStyle("padding-top"),
  11139. i = b.getStyle("padding-bottom"),
  11140. j = { x: c.x - f, y: c.y - h, width: c.width + f + g, height: c.height + h + i },
  11141. k = b.getStyle("radius");if (d && "circle" == d) {
  11142. var l = Math.pow;k = (0, Math.round)(Math.sqrt(l(j.width, 2) + l(j.height, 2)) / 2), j.x = c.cx - k, j.y = c.cy - k, j.width = 2 * k, j.height = 2 * k;
  11143. }var m = b.isSelected() ? b.getMinder().isFocused() ? "selected-" : "blur-selected-" : "";return a.setPosition(j.x, j.y).setSize(j.width, j.height).setRadius(k).fill(b.getData("background") || b.getStyle(m + "background") || b.getStyle("background")).stroke(b.getStyle(m + "stroke" || b.getStyle("stroke")), b.getStyle(m + "stroke-width")), new e.Box(j);
  11144. } }),
  11145. j = e.createClass("ShadowRenderer", { base: h, create: function create(a) {
  11146. return this.bringToBack = !0, new e.Rect();
  11147. }, shouldRender: function shouldRender(a) {
  11148. return a.getStyle("shadow");
  11149. }, update: function update(a, b, c) {
  11150. a.setPosition(c.x + 4, c.y + 5).fill(b.getStyle("shadow"));var d = b.getStyle("shape");if (d) {
  11151. if ("circle" == d) {
  11152. var e = Math.max(c.width, c.height);a.setSize(e, e), a.setRadius(e / 2);
  11153. }
  11154. } else a.setSize(c.width, c.height), a.setRadius(b.getStyle("radius"));
  11155. } }),
  11156. k = new e.Marker();k.setWidth(10), k.setHeight(12), k.setRef(0, 0), k.setViewBox(-6, -4, 8, 10), k.addShape(new e.Path().setPathData("M-5-3l5,3,-5,3").stroke("#33ffff"));var l = /wire/.test(window.location.href),
  11157. m = e.createClass("WireframeRenderer", { base: h, create: function create() {
  11158. var a = new e.Group(),
  11159. b = this.oxy = new e.Path().stroke("#f6f").setPathData("M0,-50L0,50M-50,0L50,0"),
  11160. c = this.wireframe = new e.Rect().stroke("lightgreen"),
  11161. d = this.vectorIn = new e.Path().stroke("#66ffff"),
  11162. f = this.vectorOut = new e.Path().stroke("#66ffff");return d.setMarker(k, "end"), f.setMarker(k, "end"), a.addShapes([b, c, d, f]);
  11163. }, shouldRender: function shouldRender() {
  11164. return l;
  11165. }, update: function update(a, b, c) {
  11166. this.wireframe.setPosition(c.x, c.y).setSize(c.width, c.height);var d = b.getVertexIn(),
  11167. e = b.getVertexOut(),
  11168. f = b.getLayoutVectorIn().normalize(30),
  11169. g = b.getLayoutVectorOut().normalize(30);this.vectorIn.setPathData(["M", d.offset(f.reverse()), "L", d]), this.vectorOut.setPathData(["M", e, "l", g]);
  11170. } });g.register("OutlineModule", function () {
  11171. return { events: l ? { ready: function ready() {
  11172. this.getPaper().addResource(k);
  11173. }, layoutallfinish: function layoutallfinish() {
  11174. this.getRoot().traverse(function (a) {
  11175. a.getRenderer("WireframeRenderer").update(null, a, a.getContentBox());
  11176. });
  11177. } } : null, renderers: { outline: i, outside: [j, m] } };
  11178. });
  11179. } }, b[56] = { value: function value(a, c, d) {
  11180. var e = b.r(17),
  11181. f = b.r(33),
  11182. g = (b.r(19), b.r(21), b.r(9)),
  11183. h = b.r(20),
  11184. i = b.r(27);h.register("PriorityModule", function () {
  11185. var a = [null, ["#FF1200", "#840023"], ["#0074FF", "#01467F"], ["#00AF00", "#006300"], ["#FF962E", "#B25000"], ["#A464FF", "#4720C4"], ["#A3A3A3", "#515151"], ["#A3A3A3", "#515151"], ["#A3A3A3", "#515151"], ["#A3A3A3", "#515151"]],
  11186. b = "M0,13c0,3.866,3.134,7,7,7h6c3.866,0,7-3.134,7-7V7H0V13z",
  11187. c = "M20,10c0,3.866-3.134,7-7,7H7c-3.866,0-7-3.134-7-7V7c0-3.866,3.134-7,7-7h6c3.866,0,7,3.134,7,7V10z",
  11188. d = "priority",
  11189. h = e.createClass("PriorityIcon", { base: e.Group, constructor: function constructor() {
  11190. this.callBase(), this.setSize(20), this.create(), this.setId(f.uuid("node_priority"));
  11191. }, setSize: function setSize(a) {
  11192. this.width = this.height = a;
  11193. }, create: function create() {
  11194. var a, d, f;new e.Path().setPathData(c).fill("white"), a = new e.Path().setPathData(b).setTranslate(.5, .5), d = new e.Path().setPathData(c).setOpacity(.8).setTranslate(.5, .5), f = new e.Text().setX(this.width / 2 - .5).setY(this.height / 2).setTextAnchor("middle").setVerticalAlign("middle").setFontItalic(!0).setFontSize(12).fill("white"), this.addShapes([a, d, f]), this.mask = d, this.back = a, this.number = f;
  11195. }, setValue: function setValue(b) {
  11196. var c = this.back,
  11197. d = this.mask,
  11198. e = this.number,
  11199. f = a[b];f && (c.fill(f[1]), d.fill(f[0])), e.setContent(b);
  11200. } });return { commands: { priority: e.createClass("SetPriorityCommand", { base: g, execute: function execute(a, b) {
  11201. for (var c = a.getSelectedNodes(), e = 0; e < c.length; e++) {
  11202. c[e].setData(d, b || null).render();
  11203. }a.layout();
  11204. }, queryValue: function queryValue(a) {
  11205. for (var b, c = a.getSelectedNodes(), e = 0; e < c.length && !(b = c[e].getData(d)); e++) {}return b || null;
  11206. }, queryState: function queryState(a) {
  11207. return a.getSelectedNodes().length ? 0 : -1;
  11208. } }) }, renderers: { left: e.createClass("PriorityRenderer", { base: i, create: function create(a) {
  11209. return new h();
  11210. }, shouldRender: function shouldRender(a) {
  11211. return a.getData(d);
  11212. }, update: function update(a, b, c) {
  11213. var f,
  11214. g,
  11215. h = b.getData(d),
  11216. i = b.getStyle("space-left");return a.setValue(h), f = c.left - a.width - i, g = -a.height / 2, a.setTranslate(f, g), new e.Box({ x: f, y: g, width: a.width, height: a.height });
  11217. } }) } };
  11218. });
  11219. } }, b[57] = { value: function value(a, c, d) {
  11220. var e = b.r(17),
  11221. f = b.r(33),
  11222. g = (b.r(19), b.r(21), b.r(9)),
  11223. h = b.r(20),
  11224. i = b.r(27);h.register("ProgressModule", function () {
  11225. var a = this,
  11226. b = "progress",
  11227. c = "#FFED83",
  11228. d = "#43BC00",
  11229. h = "M10,3c4.418,0,8,3.582,8,8h1c0-5.523-3.477-10-9-10S1,5.477,1,11h1C2,6.582,5.582,3,10,3z",
  11230. j = "#8E8E8E",
  11231. k = "M10,0C4.477,0,0,4.477,0,10c0,5.523,4.477,10,10,10s10-4.477,10-10C20,4.477,15.523,0,10,0zM10,18c-4.418,0-8-3.582-8-8s3.582-8,8-8s8,3.582,8,8S14.418,18,10,18z",
  11232. l = new e.LinearGradient().pipe(function (a) {
  11233. a.setStartPosition(0, 0), a.setEndPosition(0, 1), a.addStop(0, "#fff"), a.addStop(1, "#ccc");
  11234. }),
  11235. m = "M15.812,7.896l-6.75,6.75l-4.5-4.5L6.25,8.459l2.812,2.803l5.062-5.053L15.812,7.896z",
  11236. n = "#EEE";a.getPaper().addResource(l);var o = e.createClass("ProgressIcon", { base: e.Group, constructor: function constructor(a) {
  11237. this.callBase(), this.setSize(20), this.create(), this.setValue(a), this.setId(f.uuid("node_progress")), this.translate(.5, .5);
  11238. }, setSize: function setSize(a) {
  11239. this.width = this.height = a;
  11240. }, create: function create() {
  11241. var a, b, f, g, i;a = new e.Circle(9).fill(c), b = new e.Pie(9, 0).fill(d), f = new e.Path().setPathData(h).setTranslate(-10, -10).fill(j), g = new e.Path().setTranslate(-10, -10).setPathData(k).fill(l), i = new e.Path().setTranslate(-10, -10).setPathData(m).fill(n), this.addShapes([a, b, f, i, g]), this.pie = b, this.check = i;
  11242. }, setValue: function setValue(a) {
  11243. this.pie.setAngle(-360 * (a - 1) / 8), this.check.setVisible(9 == a);
  11244. } });return { commands: { progress: e.createClass("ProgressCommand", { base: g, execute: function execute(a, c) {
  11245. for (var d = a.getSelectedNodes(), e = 0; e < d.length; e++) {
  11246. d[e].setData(b, c || null).render();
  11247. }a.layout();
  11248. }, queryValue: function queryValue(a) {
  11249. for (var c, d = a.getSelectedNodes(), e = 0; e < d.length && !(c = d[e].getData(b)); e++) {}return c || null;
  11250. }, queryState: function queryState(a) {
  11251. return a.getSelectedNodes().length ? 0 : -1;
  11252. } }) }, renderers: { left: e.createClass("ProgressRenderer", { base: i, create: function create(a) {
  11253. return new o();
  11254. }, shouldRender: function shouldRender(a) {
  11255. return a.getData(b);
  11256. }, update: function update(a, c, d) {
  11257. var f,
  11258. g,
  11259. h = c.getData(b),
  11260. i = c.getStyle("space-left");return a.setValue(h), f = d.left - a.width - i, g = -a.height / 2, a.setTranslate(f + a.width / 2, g + a.height / 2), new e.Box(f, g, a.width, a.height);
  11261. } }) } };
  11262. });
  11263. } }, b[58] = { value: function value(a, c, d) {
  11264. var e = b.r(17),
  11265. f = (b.r(33), b.r(19)),
  11266. g = (b.r(21), b.r(9)),
  11267. h = b.r(20),
  11268. i = b.r(27);h.register("Resource", function () {
  11269. var a = function () {
  11270. var a, b, c, d, e, f, g, h, i, j, k;return k = 4 * (1 << 30), a = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225], e = [608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479], j = function j(a) {
  11271. return a < 0 && (a += k), ("00000000" + a.toString(16)).slice(-8);
  11272. }, f = [[16, 50, 84, 118, 152, 186, 220, 254], [174, 132, 249, 109, 193, 32, 123, 53], [139, 12, 37, 223, 234, 99, 23, 73], [151, 19, 205, 235, 98, 165, 4, 143], [9, 117, 66, 250, 30, 203, 134, 211], [194, 166, 176, 56, 212, 87, 239, 145], [92, 241, 222, 164, 112, 54, 41, 184], [189, 231, 28, 147, 5, 79, 104, 162], [246, 158, 59, 128, 44, 125, 65, 90], [42, 72, 103, 81, 191, 233, 195, 13]], g = function g(a, b, c) {
  11273. var d = h[a] ^ h[b];h[a] = d >>> c | d << 32 - c;
  11274. }, b = function b(a, _b, j, k, l) {
  11275. var m = d + f[c][a] % 16,
  11276. n = d + (f[c][a] >> 4);_b %= 4, j = 4 + j % 4, k = 8 + k % 4, l = 12 + l % 4, h[_b] += h[j] + (i[m] ^ e[n % 16]), g(l, _b, 16), h[k] += h[l], g(j, k, 12), h[_b] += h[j] + (i[n] ^ e[m % 16]), g(l, _b, 8), h[k] += h[l], g(j, k, 7);
  11277. }, function (f, g) {
  11278. g instanceof Array && 4 === g.length || (g = [0, 0, 0, 0]);var k, l, m, n, o, p, q, r;for (l = a.slice(0), k = e.slice(0, 8), c = 0; c < 4; c += 1) {
  11279. k[c] ^= g[c];
  11280. }if (m = 16 * f.length, o = m % 512 > 446 || m % 512 == 0 ? 0 : m, m % 512 == 432) f += "老";else {
  11281. for (f += "耀"; f.length % 32 != 27;) {
  11282. f += "\0";
  11283. }f += "";
  11284. }for (i = [], r = 0; r < f.length; r += 2) {
  11285. i.push(65536 * f.charCodeAt(r) + f.charCodeAt(r + 1));
  11286. }for (i.push(0), i.push(m), p = i.length - 16, q = 0, d = 0; d < i.length; d += 16) {
  11287. for (q += 512, n = d === p ? o : Math.min(m, q), h = l.concat(k), h[12] ^= n, h[13] ^= n, c = 0; c < 10; c += 1) {
  11288. for (r = 0; r < 8; r += 1) {
  11289. r < 4 ? b(r, r, r, r, r) : b(r, r, r + 1, r + 2, r + 3);
  11290. }
  11291. }for (r = 0; r < 8; r += 1) {
  11292. l[r] ^= g[r % 4] ^ h[r] ^ h[r + 8];
  11293. }
  11294. }return l.map(j).join("");
  11295. };
  11296. }(),
  11297. b = [51, 303, 75, 200, 157, 0, 26, 254].map(function (a) {
  11298. return e.Color.createHSL(a, 100, 85);
  11299. });e.extendClass(f, { getHashCode: function getHashCode(b) {
  11300. b = a(b);var c,
  11301. d,
  11302. e = 1315423911;for (c = b.length - 1; c >= 0; c--) {
  11303. d = b.charCodeAt(c), e ^= (e << 5) + d + (e >> 2);
  11304. }return 2147483647 & e;
  11305. }, getResourceColor: function getResourceColor(a) {
  11306. var c,
  11307. d = this._getResourceColorIndexMapping();return Object.prototype.hasOwnProperty.call(d, a) || (c = this._getNextResourceColorIndex(), d[a] = c), b[d[a]] || e.Color.createHSL(Math.floor(this.getHashCode(a) / 2147483647 * 359), 100, 85);
  11308. }, getUsedResource: function getUsedResource() {
  11309. var a,
  11310. b = this._getResourceColorIndexMapping(),
  11311. c = [];for (a in b) {
  11312. Object.prototype.hasOwnProperty.call(b, a) && c.push(a);
  11313. }return c;
  11314. }, _getNextResourceColorIndex: function _getNextResourceColorIndex() {
  11315. var a,
  11316. c,
  11317. d,
  11318. e = this._getResourceColorIndexMapping();c = [];for (a in e) {
  11319. Object.prototype.hasOwnProperty.call(e, a) && c.push(e[a]);
  11320. }for (d = 0; d < b.length; d++) {
  11321. if (!~c.indexOf(d)) return d;
  11322. }return -1;
  11323. }, _getResourceColorIndexMapping: function _getResourceColorIndexMapping() {
  11324. return this._resourceColorMapping || (this._resourceColorMapping = {});
  11325. } });var c = e.createClass("ResourceCommand", { base: g, execute: function execute(a, b) {
  11326. var c = a.getSelectedNodes();"string" == typeof b && (b = [b]), c.forEach(function (a) {
  11327. a.setData("resource", b).render();
  11328. }), a.layout(200);
  11329. }, queryValue: function queryValue(a) {
  11330. var b = a.getSelectedNodes(),
  11331. c = [];return b.forEach(function (a) {
  11332. var b = a.getData("resource");b && b.forEach(function (a) {
  11333. ~c.indexOf(a) || c.push(a);
  11334. });
  11335. }), c;
  11336. }, queryState: function queryState(a) {
  11337. return a.getSelectedNode() ? 0 : -1;
  11338. } }),
  11339. d = e.createClass("ResourceOverlay", { base: e.Group, constructor: function constructor() {
  11340. this.callBase();var a, b;b = this.rect = new e.Rect().setRadius(4), a = this.text = new e.Text().setFontSize(12).setVerticalAlign("middle"), this.addShapes([b, a]);
  11341. }, setValue: function setValue(a, b) {
  11342. var c,
  11343. d,
  11344. e,
  11345. f = 8,
  11346. g = 4;c = this.text, a == this.lastResourceName ? d = this.lastBox : (c.setContent(a), d = c.getBoundaryBox(), this.lastResourceName = a, this.lastBox = d), c.setX(f).fill(b.dec("l", 70)), e = this.rect, e.setPosition(0, d.y - g), this.width = Math.round(d.width + 2 * f), this.height = Math.round(d.height + 2 * g), e.setSize(this.width, this.height), e.fill(b);
  11347. } });return { commands: { resource: c }, renderers: { right: e.createClass("ResourceRenderer", { base: i, create: function create(a) {
  11348. return this.overlays = [], new e.Group();
  11349. }, shouldRender: function shouldRender(a) {
  11350. return a.getData("resource") && a.getData("resource").length;
  11351. }, update: function update(a, b, c) {
  11352. var f = b.getStyle("space-right"),
  11353. g = this.overlays,
  11354. h = b.getData("resource").filter(function (a) {
  11355. return null !== a;
  11356. });if (0 !== h.length) {
  11357. var i,
  11358. j,
  11359. k,
  11360. l = b.getMinder();for (k = 0, i = 0; i < h.length; i++) {
  11361. k += f, j = g[i], j || (j = new d(), g.push(j), a.addShape(j)), j.setVisible(!0), j.setValue(h[i], l.getResourceColor(h[i])), j.setTranslate(k, -1), k += j.width;
  11362. }for (; j = g[i++];) {
  11363. j.setVisible(!1);
  11364. }return a.setTranslate(c.right, 0), new e.Box({ x: c.right, y: Math.round(-g[0].height / 2), width: k, height: g[0].height });
  11365. }
  11366. } }) } };
  11367. });
  11368. } }, b[59] = { value: function value(a, c, d) {
  11369. var e = b.r(17),
  11370. f = (b.r(33), b.r(19), b.r(21), b.r(9), b.r(20));b.r(27);f.register("Select", function () {
  11371. var a = this,
  11372. b = a.getRenderContainer(),
  11373. c = function () {
  11374. var c = null,
  11375. d = new e.Path(),
  11376. f = !1;return { selectStart: function selectStart(a) {
  11377. if (!a.originEvent.button && !a.originEvent.altKey) return c ? this.selectEnd() : void (c = a.getPosition(b).round());
  11378. }, selectMove: function selectMove(g) {
  11379. if ("textedit" != a.getStatus() && c) {
  11380. var h = c,
  11381. i = g.getPosition(b);if (!f) {
  11382. if (e.Vector.fromPoints(h, i).length() < 10) return;f = !0, b.addShape(d), d.fill(a.getStyle("marquee-background")).stroke(a.getStyle("marquee-stroke")).setOpacity(.8).getDrawer().clear();
  11383. }var j = new e.Box(h.x, h.y, i.x - h.x, i.y - h.y),
  11384. k = [];j.left = Math.round(j.left), j.top = Math.round(j.top), j.right = Math.round(j.right), j.bottom = Math.round(j.bottom), d.getDrawer().pipe(function () {
  11385. this.clear(), this.moveTo(j.left, j.top), this.lineTo(j.right, j.top), this.lineTo(j.right, j.bottom), this.lineTo(j.left, j.bottom), this.close();
  11386. }), a.getRoot().traverse(function (a) {
  11387. a.getLayoutBox().intersect(j).isEmpty() || k.push(a);
  11388. }), a.select(k, !0), window.getSelection().removeAllRanges();
  11389. }
  11390. }, selectEnd: function selectEnd(a) {
  11391. c && (c = null), f && (d.fadeOut(200, "ease", 0, function () {
  11392. d.remove && d.remove();
  11393. }), f = !1);
  11394. } };
  11395. }(),
  11396. d = null,
  11397. f = null;return { init: function init() {
  11398. window.addEventListener("mouseup", function () {
  11399. c.selectEnd();
  11400. });
  11401. }, events: { mousedown: function mousedown(a) {
  11402. var b = a.getTargetNode();b ? a.isShortcutKey("Ctrl") ? this.toggleSelect(b) : b.isSelected() ? this.isSingleSelect() || (d = b, f = a.getPosition()) : this.select(b, !0) : (this.removeAllSelectedNodes(), c.selectStart(a), this.setStatus("normal"));
  11403. }, mousemove: c.selectMove, mouseup: function mouseup(a) {
  11404. var b = a.getTargetNode();if (b && b == d) {
  11405. var g = a.getPosition();e.Vector.fromPoints(f, g).length() < 1 && this.select(d, !0), d = null;
  11406. }c.selectEnd(a);
  11407. }, "normal.keydown": function normalKeydown(a) {
  11408. if (a.isShortcutKey("ctrl+a")) {
  11409. var b = [];this.getRoot().traverse(function (a) {
  11410. b.push(a);
  11411. }), this.select(b, !0), a.preventDefault();
  11412. }
  11413. } } };
  11414. });
  11415. } }, b[60] = { value: function value(a, c, d) {
  11416. var e = b.r(17),
  11417. f = (b.r(33), b.r(19), b.r(21), b.r(9)),
  11418. g = b.r(20);b.r(27);g.register("StyleModule", function () {
  11419. function a(a) {
  11420. for (var c = a.getData(), d = 0; d < b.length; d++) {
  11421. if (b[d] in c) return !0;
  11422. }
  11423. }var b = ["font-size", "font-family", "font-weight", "font-style", "background", "color"],
  11424. c = null;return { commands: { copystyle: e.createClass("CopyStyleCommand", { base: f, execute: function execute(a) {
  11425. var d = a.getSelectedNode(),
  11426. e = d.getData();return c = {}, b.forEach(function (a) {
  11427. a in e ? c[a] = e[a] : (c[a] = null, delete c[a]);
  11428. }), c;
  11429. }, queryState: function queryState(b) {
  11430. var c = b.getSelectedNodes();return 1 !== c.length ? -1 : a(c[0]) ? 0 : -1;
  11431. } }), pastestyle: e.createClass("PastStyleCommand", { base: f, execute: function execute(a) {
  11432. return a.getSelectedNodes().forEach(function (a) {
  11433. for (var b in c) {
  11434. c.hasOwnProperty(b) && a.setData(b, c[b]);
  11435. }
  11436. }), a.renderNodeBatch(a.getSelectedNodes()), a.layout(300), c;
  11437. }, queryState: function queryState(a) {
  11438. return c && a.getSelectedNodes().length ? 0 : -1;
  11439. } }), clearstyle: e.createClass("ClearStyleCommand", { base: f, execute: function execute(a) {
  11440. return a.getSelectedNodes().forEach(function (a) {
  11441. b.forEach(function (b) {
  11442. a.setData(b);
  11443. });
  11444. }), a.renderNodeBatch(a.getSelectedNodes()), a.layout(300), c;
  11445. }, queryState: function queryState(b) {
  11446. var c = b.getSelectedNodes();if (!c.length) return -1;for (var d = 0; d < c.length; d++) {
  11447. if (a(c[d])) return 0;
  11448. }return -1;
  11449. } }) } };
  11450. });
  11451. } }, b[61] = { value: function value(a, c, d) {
  11452. var e = b.r(17),
  11453. f = b.r(33),
  11454. g = (b.r(19), b.r(21)),
  11455. h = b.r(9),
  11456. i = b.r(20),
  11457. j = b.r(27),
  11458. k = { safari: { "微软雅黑,Microsoft YaHei": -.17, "楷体,楷体_GB2312,SimKai": -.1, "隶书, SimLi": -.1, "comic sans ms": -.23, "impact,chicago": -.15, "times new roman": -.1, "arial black,avant garde": -.17, default: 0 }, ie: { 10: { "微软雅黑,Microsoft YaHei": -.17, "comic sans ms": -.17, "impact,chicago": -.08, "times new roman": .04, "arial black,avant garde": -.17, default: -.15 }, 11: { "微软雅黑,Microsoft YaHei": -.17, "arial,helvetica,sans-serif": -.17, "comic sans ms": -.17, "impact,chicago": -.08, "times new roman": .04, "sans-serif": -.16, "arial black,avant garde": -.17, default: -.15 } }, edge: { "微软雅黑,Microsoft YaHei": -.15, "arial,helvetica,sans-serif": -.17, "comic sans ms": -.17, "impact,chicago": -.08, "sans-serif": -.16, "arial black,avant garde": -.17, default: -.15 }, sg: { "微软雅黑,Microsoft YaHei": -.15, "arial,helvetica,sans-serif": -.05, "comic sans ms": -.22, "impact,chicago": -.16, "times new roman": -.03, "arial black,avant garde": -.22, default: -.15 }, chrome: { Mac: { "andale mono": -.05, "comic sans ms": -.3, "impact,chicago": -.13, "times new roman": -.1, "arial black,avant garde": -.17, default: 0 }, Win: { "微软雅黑,Microsoft YaHei": -.15, "arial,helvetica,sans-serif": -.02, "arial black,avant garde": -.2, "comic sans ms": -.2, "impact,chicago": -.12, "times new roman": -.02, default: -.15 }, Lux: { "andale mono": -.05, "comic sans ms": -.3, "impact,chicago": -.13, "times new roman": -.1, "arial black,avant garde": -.17, default: 0 } }, firefox: { Mac: { "微软雅黑,Microsoft YaHei": -.2, "宋体,SimSun": .05, "comic sans ms": -.2, "impact,chicago": -.15, "arial black,avant garde": -.17, "times new roman": -.1, default: .05 }, Win: { "微软雅黑,Microsoft YaHei": -.16, "andale mono": -.17, "arial,helvetica,sans-serif": -.17, "comic sans ms": -.22, "impact,chicago": -.23, "times new roman": -.22, "sans-serif": -.22, "arial black,avant garde": -.17, default: -.16 }, Lux: { "宋体,SimSun": -.2, "微软雅黑,Microsoft YaHei": -.2, "黑体, SimHei": -.2, "隶书, SimLi": -.2, "楷体,楷体_GB2312,SimKai": -.2, "andale mono": -.2, "arial,helvetica,sans-serif": -.2, "comic sans ms": -.2, "impact,chicago": -.2, "times new roman": -.2, "sans-serif": -.2, "arial black,avant garde": -.2, default: -.16 } } },
  11459. l = e.createClass("TextRenderer", { base: j, create: function create() {
  11460. return new e.Group().setId(f.uuid("node_text"));
  11461. }, update: function update(a, b) {
  11462. function c(a) {
  11463. return b.getData(a) || b.getStyle(a);
  11464. }var d,
  11465. f = b.getText(),
  11466. g = f ? f.split("\n") : [" "],
  11467. h = b.getStyle("line-height"),
  11468. i = c("font-size"),
  11469. j = c("font-family") || "default",
  11470. l = h * i * g.length - (h - 1) * i,
  11471. m = -l / 2,
  11472. n = e.Browser;n.chrome || n.opera || n.bd || "chrome" === n.lb ? d = k.chrome[n.platform][j] : n.gecko ? d = k.firefox[n.platform][j] : n.sg ? d = k.sg[j] : n.safari ? d = k.safari[j] : n.ie ? d = k.ie[n.version][j] : n.edge ? d = k.edge[j] : n.lb && (d = .9), a.setTranslate(0, (d || 0) * i);var o = new e.Box(),
  11473. p = Math.round;this.setTextStyle(b, a);var q,
  11474. r,
  11475. s,
  11476. t,
  11477. u = g.length,
  11478. v = a.getItems().length;if (u < v) for (q = u, r; r = a.getItem(q);) {
  11479. a.removeItem(q);
  11480. } else if (u > v) for (var w = u - v; w--;) {
  11481. s = new e.Text().setAttr("text-rendering", "inherit"), e.Browser.ie || e.Browser.edge ? s.setVerticalAlign("top") : s.setAttr("dominant-baseline", "text-before-edge"), a.addItem(s);
  11482. }for (q = 0, s; t = g[q], s = a.getItem(q); q++) {
  11483. s.setContent(t), (e.Browser.ie || e.Browser.edge) && s.fixPosition();
  11484. }this.setTextStyle(b, a);var x = b.getText() + ["font-size", "font-name", "font-weight", "font-style"].map(c).join("/");return b._currentTextHash == x && b._currentTextGroupBox ? b._currentTextGroupBox : (b._currentTextHash = x, function () {
  11485. a.eachItem(function (a, b) {
  11486. var c = m + a * i * h;b.setY(c);var d = b.getBoundaryBox();o = o.merge(new e.Box(0, c, d.height && d.width || 1, i));
  11487. });var c = new e.Box(p(o.x), p(o.y), p(o.width), p(o.height));return b._currentTextGroupBox = c, c;
  11488. });
  11489. }, setTextStyle: function setTextStyle(a, b) {
  11490. l._styleHooks.forEach(function (c) {
  11491. c(a, b);
  11492. });
  11493. } }),
  11494. m = e.createClass({ base: h, execute: function execute(a, b) {
  11495. var c = a.getSelectedNode();c && (c.setText(b), c.render(), a.layout());
  11496. }, queryState: function queryState(a) {
  11497. return 1 == a.getSelectedNodes().length ? 0 : -1;
  11498. }, queryValue: function queryValue(a) {
  11499. var b = a.getSelectedNode();return b ? b.getText() : null;
  11500. } });f.extend(l, { _styleHooks: [], registerStyleHook: function registerStyleHook(a) {
  11501. l._styleHooks.push(a);
  11502. } }), e.extendClass(g, { getTextGroup: function getTextGroup() {
  11503. return this.getRenderer("TextRenderer").getRenderShape();
  11504. } }), i.register("text", { commands: { text: m }, renderers: { center: l } }), d.exports = l;
  11505. } }, b[62] = { value: function value(a, c, d) {
  11506. var e = b.r(17),
  11507. f = (b.r(33), b.r(19), b.r(21), b.r(9)),
  11508. g = b.r(20),
  11509. h = (b.r(27), e.createClass("ViewDragger", { constructor: function constructor(a) {
  11510. this._minder = a, this._enabled = !1, this._bind();var b = this;this._minder.getViewDragger = function () {
  11511. return b;
  11512. }, this.setEnabled(!1);
  11513. }, isEnabled: function isEnabled() {
  11514. return this._enabled;
  11515. }, setEnabled: function setEnabled(a) {
  11516. var b = this._minder.getPaper();b.setStyle("cursor", a ? "pointer" : "default"), b.setStyle("cursor", a ? "-webkit-grab" : "default"), this._enabled = a;
  11517. }, timeline: function timeline() {
  11518. return this._moveTimeline;
  11519. }, move: function move(a, b) {
  11520. var c = (this._minder, this.getMovement().offset(a));this.moveTo(c, b);
  11521. }, moveTo: function moveTo(a, b) {
  11522. if (b) {
  11523. var c = this;return this._moveTimeline && this._moveTimeline.stop(), this._moveTimeline = this._minder.getRenderContainer().animate(new e.Animator(this.getMovement(), a, function (a, b) {
  11524. c.moveTo(b);
  11525. }), b, "easeOutCubic").timeline(), this._moveTimeline.on("finish", function () {
  11526. c._moveTimeline = null;
  11527. }), this;
  11528. }this._minder.getRenderContainer().setTranslate(a.round()), this._minder.fire("viewchange");
  11529. }, getMovement: function getMovement() {
  11530. var a = this._minder.getRenderContainer().transform.translate;return a ? a[0] : new e.Point();
  11531. }, getView: function getView() {
  11532. var a = this._minder,
  11533. b = a._lastClientSize || { width: a.getRenderTarget().clientWidth, height: a.getRenderTarget().clientHeight },
  11534. c = this.getMovement(),
  11535. d = new e.Box(0, 0, b.width, b.height);return a.getPaper().getViewPortMatrix().inverse().translate(-c.x, -c.y).transformBox(d);
  11536. }, _bind: function _bind() {
  11537. function a(a) {
  11538. if (d) {
  11539. d = null, a.stopPropagation(), c && (b.setEnabled(!1), c = !1, "hand" == b._minder.getStatus() && b._minder.rollbackStatus());b._minder.getPaper().setStyle("cursor", "hand" == b._minder.getStatus() ? "-webkit-grab" : "default"), b._minder.fire("viewchanged");
  11540. }
  11541. }var b = this,
  11542. c = !1,
  11543. d = null,
  11544. f = null;this._minder.on("normal.mousedown normal.touchstart inputready.mousedown inputready.touchstart readonly.mousedown readonly.touchstart", function (a) {
  11545. 2 == a.originEvent.button && a.originEvent.preventDefault(), (a.getTargetNode() == this.getRoot() || 2 == a.originEvent.button || a.originEvent.altKey) && (d = a.getPosition("view"), c = !0);
  11546. }).on("normal.mousemove normal.touchmove readonly.mousemove readonly.touchmove inputready.mousemove inputready.touchmove", function (a) {
  11547. if ("touchmove" == a.type && a.preventDefault(), c) {
  11548. if (e.Vector.fromPoints(d, a.getPosition("view")).length() > 10) {
  11549. this.setStatus("hand", !0);b._minder.getPaper().setStyle("cursor", "-webkit-grabbing");
  11550. }
  11551. }
  11552. }).on("hand.beforemousedown hand.beforetouchstart", function (a) {
  11553. if (b.isEnabled()) {
  11554. d = a.getPosition("view"), a.stopPropagation();b._minder.getPaper().setStyle("cursor", "-webkit-grabbing");
  11555. }
  11556. }).on("hand.beforemousemove hand.beforetouchmove", function (a) {
  11557. if (d) {
  11558. f = a.getPosition("view");var c = e.Vector.fromPoints(d, f);b.move(c), a.stopPropagation(), a.preventDefault(), a.originEvent.preventDefault(), d = f;
  11559. }
  11560. }).on("mouseup touchend", a), window.addEventListener("mouseup", a), this._minder.on("contextmenu", function (a) {
  11561. a.preventDefault();
  11562. });
  11563. } }));g.register("View", function () {
  11564. var a = e.createClass("ToggleHandCommand", { base: f, execute: function execute(a) {
  11565. "hand" != a.getStatus() ? a.setStatus("hand", !0) : a.rollbackStatus(), this.setContentChanged(!1);
  11566. }, queryState: function queryState(a) {
  11567. return "hand" == a.getStatus() ? 1 : 0;
  11568. }, enableReadOnly: !0 }),
  11569. b = e.createClass("CameraCommand", { base: f, execute: function execute(a, b) {
  11570. b = b || a.getRoot();var c = a.getPaper().getViewPort(),
  11571. d = b.getRenderContainer().getRenderBox("view"),
  11572. f = c.center.x - d.x - d.width / 2,
  11573. g = c.center.y - d.y,
  11574. h = a._viewDragger,
  11575. i = a.getOption("viewAnimationDuration");h.move(new e.Point(f, g), i), this.setContentChanged(!1);
  11576. }, enableReadOnly: !0 }),
  11577. c = e.createClass("MoveCommand", { base: f, execute: function execute(a, b) {
  11578. var c = a._viewDragger,
  11579. d = a._lastClientSize,
  11580. f = a.getOption("viewAnimationDuration");switch (b) {case "up":
  11581. c.move(new e.Point(0, d.height / 2), f);break;case "down":
  11582. c.move(new e.Point(0, -d.height / 2), f);break;case "left":
  11583. c.move(new e.Point(d.width / 2, 0), f);break;case "right":
  11584. c.move(new e.Point(-d.width / 2, 0), f);}
  11585. }, enableReadOnly: !0 });return { init: function init() {
  11586. this._viewDragger = new h(this);
  11587. }, commands: { hand: a, camera: b, move: c }, events: { statuschange: function statuschange(a) {
  11588. this._viewDragger.setEnabled("hand" == a.currentStatus);
  11589. }, mousewheel: function mousewheel(a) {
  11590. var b, c;if (a = a.originEvent, !a.ctrlKey && !a.shiftKey) {
  11591. "wheelDeltaX" in a ? (b = a.wheelDeltaX || 0, c = a.wheelDeltaY || 0) : (b = 0, c = a.wheelDelta), this._viewDragger.move({ x: b / 2.5, y: c / 2.5 });var d = this;clearTimeout(this._mousewheeltimer), this._mousewheeltimer = setTimeout(function () {
  11592. d.fire("viewchanged");
  11593. }, 100), a.preventDefault();
  11594. }
  11595. }, "normal.dblclick readonly.dblclick": function normalDblclickReadonlyDblclick(a) {
  11596. a.kityEvent.targetShape instanceof e.Paper && this.execCommand("camera", this.getRoot(), 800);
  11597. }, "paperrender finishInitHook": function paperrenderFinishInitHook() {
  11598. this.getRenderTarget() && (this.execCommand("camera", null, 0), this._lastClientSize = { width: this.getRenderTarget().clientWidth, height: this.getRenderTarget().clientHeight });
  11599. }, resize: function resize(a) {
  11600. var b = { width: this.getRenderTarget().clientWidth, height: this.getRenderTarget().clientHeight },
  11601. c = this._lastClientSize;this._viewDragger.move(new e.Point((b.width - c.width) / 2 | 0, (b.height - c.height) / 2 | 0)), this._lastClientSize = b;
  11602. }, "selectionchange layoutallfinish": function selectionchangeLayoutallfinish(a) {
  11603. var b = this.getSelectedNode(),
  11604. c = this;if (e.Browser.edge && this.fire("paperrender"), b) {
  11605. var d = this._viewDragger,
  11606. f = d.timeline();if (f) return void f.on("finish", function () {
  11607. c.fire("selectionchange");
  11608. });var g = d.getView(),
  11609. h = b.getLayoutBox(),
  11610. i = 50,
  11611. j = 0,
  11612. k = 0;h.right > g.right ? j += g.right - h.right - i : h.left < g.left && (j += g.left - h.left + i), h.bottom > g.bottom && (k += g.bottom - h.bottom - i), h.top < g.top && (k += g.top - h.top + i), (j || k) && d.move(new e.Point(j, k), 100);
  11613. }
  11614. } } };
  11615. });
  11616. } }, b[63] = { value: function value(a, c, d) {
  11617. var e = b.r(17),
  11618. f = (b.r(33), b.r(19)),
  11619. g = (b.r(21), b.r(9)),
  11620. h = b.r(20);b.r(27);h.register("Zoom", function () {
  11621. function a() {
  11622. var a = h._zoomValue >= 100 ? "optimize-speed" : "geometricPrecision";h.getRenderContainer().setAttr("text-rendering", a);
  11623. }function b(a) {
  11624. var b = a.shapeNode,
  11625. c = b.getCTM(),
  11626. d = new e.Matrix(c.a, c.b, c.c, c.d, .5 + (0 | c.e), .5 + (0 | c.f));b.setAttribute("transform", "matrix(" + d.toString() + ")");
  11627. }function c(b, c) {
  11628. var f = b.getPaper();f.getViewPort();if (c) {
  11629. a();var g = b.getOption("zoomAnimationDuration");if (b.getRoot().getComplex() > 200 || !g) b._zoomValue = c, b.zoom(c), b.fire("viewchange");else {
  11630. var h = new e.Animator({ beginValue: b._zoomValue, finishValue: c, setter: function setter(a, b) {
  11631. a.zoom(b);
  11632. } });b._zoomValue = c, d && d.pause(), d = h.start(b, g, "easeInOutSine"), d.on("finish", function () {
  11633. b.fire("viewchange");
  11634. });
  11635. }b.fire("zoom", { zoom: c });
  11636. }
  11637. }var d,
  11638. h = this;e.extendClass(f, { zoom: function zoom(a) {
  11639. var c = this.getPaper(),
  11640. d = c.getViewPort();d.zoom = a / 100, d.center = { x: d.center.x, y: d.center.y }, c.setViewPort(d), 100 == a && b(c);
  11641. }, getZoomValue: function getZoomValue() {
  11642. return this._zoomValue;
  11643. } });var i = e.createClass("Zoom", { base: g, execute: c, queryValue: function queryValue(a) {
  11644. return a._zoomValue;
  11645. } }),
  11646. j = e.createClass("ZoomInCommand", { base: g, execute: function execute(a) {
  11647. c(a, this.nextValue(a));
  11648. }, queryState: function queryState(a) {
  11649. return +!this.nextValue(a);
  11650. }, nextValue: function nextValue(a) {
  11651. var b,
  11652. c = a.getOption("zoom");for (b = 0; b < c.length; b++) {
  11653. if (c[b] > a._zoomValue) return c[b];
  11654. }return 0;
  11655. }, enableReadOnly: !0 }),
  11656. k = e.createClass("ZoomOutCommand", { base: g, execute: function execute(a) {
  11657. c(a, this.nextValue(a));
  11658. }, queryState: function queryState(a) {
  11659. return +!this.nextValue(a);
  11660. }, nextValue: function nextValue(a) {
  11661. var b,
  11662. c = a.getOption("zoom");for (b = c.length - 1; b >= 0; b--) {
  11663. if (c[b] < a._zoomValue) return c[b];
  11664. }return 0;
  11665. }, enableReadOnly: !0 });return { init: function init() {
  11666. this._zoomValue = 100, this.setDefaultOptions({ zoom: [10, 20, 50, 100, 200] }), a();
  11667. }, commands: { zoomin: j, zoomout: k, zoom: i }, events: { "normal.mousewheel readonly.mousewheel": function normalMousewheelReadonlyMousewheel(a) {
  11668. if (a.originEvent.ctrlKey || a.originEvent.metaKey) {
  11669. var b = a.originEvent.wheelDelta,
  11670. c = this;Math.abs(b) > 100 && (clearTimeout(this._wheelZoomTimeout), this._wheelZoomTimeout = setTimeout(function () {
  11671. c.getPaper()._zoom;b > 0 ? c.execCommand("zoomin") : b < 0 && c.execCommand("zoomout");
  11672. }, 100), a.originEvent.preventDefault());
  11673. }
  11674. } }, commandShortcutKeys: { zoomin: "ctrl+=", zoomout: "ctrl+-" } };
  11675. });
  11676. } }, b[64] = { value: function value(a, c, d) {
  11677. b.r(12).registerProtocol("json", d.exports = { fileDescription: "KityMinder 格式", fileExtension: ".km", dataType: "text", mineType: "application/json", encode: function encode(a) {
  11678. return JSON.stringify(a);
  11679. }, decode: function decode(a) {
  11680. return JSON.parse(a);
  11681. } });
  11682. } }, b[65] = { value: function value(a, c, d) {
  11683. function e(a) {
  11684. return f(a, 1).join("\n");
  11685. }function f(a, b) {
  11686. var c = [];b = b || 1;var d = g(b);c.push(d + " " + a.data.text), c.push(o);var e = a.data.note;if (e) {
  11687. var h = /^#/.test(e);h && (c.push(p), e = e.replace(/^#+/gm, function (a) {
  11688. return d + a;
  11689. })), c.push(e), h && c.push(q), c.push(o);
  11690. }return a.children && a.children.forEach(function (a) {
  11691. c = c.concat(f(a, b + 1));
  11692. }), c;
  11693. }function g(a) {
  11694. for (var b = ""; a--;) {
  11695. b += "#";
  11696. }return b;
  11697. }function h(a) {
  11698. var b,
  11699. c,
  11700. d,
  11701. e,
  11702. f,
  11703. g,
  11704. h,
  11705. m = {};a = a.replace(/^(.+)\n={3,}/, function (a, b) {
  11706. return "# " + b;
  11707. }), b = a.split(n);for (var o = 0; o < b.length; o++) {
  11708. c = b[o], d = k(c), d.noteClose ? g = !1 : d.noteStart ? g = !0 : (h = d.codeBlock ? !h : h, g || h || !d.level || d.level > e + 1 ? f && j(f, c) : (e = d.level, f = i(d.content, m[e - 1]), m[e] = f));
  11709. }return l(m[1]), m[1];
  11710. }function i(a, b) {
  11711. var c = { data: { text: a, note: "" } };return b && (b.children ? b.children.push(c) : b.children = [c]), c;
  11712. }function j(a, b) {
  11713. a.data.note += b + "\n";
  11714. }function k(a) {
  11715. var b = /^(#+)?\s*(.*)$/.exec(a);return { level: b[1] && b[1].length || null, content: b[2], noteStart: a == p, noteClose: a == q, codeBlock: /^\s*```/.test(a) };
  11716. }function l(a) {
  11717. if (/\S/.test(a.data.note)) {
  11718. for (var b = a.data.note.split("\n"); b.length && !/\S/.test(b[0]);) {
  11719. b.shift();
  11720. }for (; b.length && !/\S/.test(b[b.length - 1]);) {
  11721. b.pop();
  11722. }a.data.note = b.join("\n");
  11723. } else a.data.note = null, delete a.data.note;a.children && a.children.forEach(l);
  11724. }var m = b.r(12),
  11725. n = /\r\n|\r|\n/,
  11726. o = "",
  11727. p = "\x3c!--Note--\x3e",
  11728. q = "\x3c!--/Note--\x3e";m.registerProtocol("markdown", d.exports = { fileDescription: "Markdown/GFM 格式", fileExtension: ".md", mineType: "text/markdown", dataType: "text", encode: function encode(a) {
  11729. return e(a.root);
  11730. }, decode: function decode(a) {
  11731. return h(a);
  11732. } });
  11733. } }, b[66] = { value: function value(a, c, d) {
  11734. function e(a, b) {
  11735. return new k(function (b, c) {
  11736. var d = document.createElement("img");d.onload = function () {
  11737. b({ element: this, x: a.x, y: a.y, width: a.width, height: a.height });
  11738. }, d.onerror = function (a) {
  11739. c(a);
  11740. }, d.crossOrigin = "anonymous", d.src = a.url;
  11741. });
  11742. }function f(a, b) {
  11743. return k(function (b, c) {
  11744. var d = new XMLHttpRequest();d.open("GET", a.url + "?_=" + Date.now(), !0), d.responseType = "blob", d.onreadystatechange = function () {
  11745. if (4 === d.readyState && 200 === d.status) {
  11746. var c = d.response,
  11747. e = document.createElement("img");e.src = l.createObjectURL(c), e.onload = function () {
  11748. l.revokeObjectURL(e.src), b({ element: e, x: a.x, y: a.y, width: a.width, height: a.height });
  11749. };
  11750. }
  11751. }, d.send();
  11752. });
  11753. }function g(a) {
  11754. function b(c) {
  11755. var d = c.data;if (d.image) {
  11756. a.renderNode(c);var d = c.data,
  11757. e = d.image,
  11758. f = d.imageSize,
  11759. g = c.getRenderBox("ImageRenderer", a.getRenderContainer()),
  11760. h = { url: e, width: f.width, height: f.height, x: -j.getBoundaryBox().x + g.x, y: -j.getBoundaryBox().y + g.y };o.push(h);
  11761. }if ("collapse" !== d.expandState) for (var i = c.getChildren(), k = 0; k < i.length; k++) {
  11762. b(i[k]);
  11763. }
  11764. }var c,
  11765. d,
  11766. e,
  11767. f,
  11768. g,
  11769. h,
  11770. i = a.getPaper(),
  11771. j = (i.container, a.getRenderContainer()),
  11772. k = j.getRenderBox(),
  11773. m = k.width + 1,
  11774. n = k.height + 1;c = i.shapeNode.getAttribute("transform"), i.shapeNode.setAttribute("transform", "translate(0.5, 0.5)"), j.translate(-k.x, -k.y), d = i.container.innerHTML, j.translate(k.x, k.y), i.shapeNode.setAttribute("transform", c), e = document.createElement("div"), e.innerHTML = d, f = e.querySelector("svg"), f.setAttribute("width", k.width + 1), f.setAttribute("height", k.height + 1), f.setAttribute("style", 'font-family: Arial, "Microsoft Yahei","Heiti SC";'), e = document.createElement("div"), e.appendChild(f), d = e.innerHTML, d = d.replace(' xmlns="http://www.w3.org/2000/svg" xmlns:NS1="" NS1:ns1:xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:NS2="" NS2:xmlns:ns1=""', ""), d = d.replace(/&nbsp;|[\x00-\x1F\x7F-\x9F]/g, ""), d = d.replace(/NS\d+:title/gi, "xlink:title"), g = new Blob([d], { type: "image/svg+xml" }), h = l.createObjectURL(g);var o = [];return b(a.getRoot()), { width: m, height: n, dataUrl: h, xml: d, imagesInfo: o };
  11775. }function h(a, b, c) {
  11776. function d(a, b) {
  11777. a.save(), a.fillStyle = b, a.fillRect(0, 0, o.width, o.height), a.restore();
  11778. }function h(a, b, c, d, e, f) {
  11779. e && f ? a.drawImage(b, c + A, d + A, e, f) : a.drawImage(b, c + A, d + A);
  11780. }function j(a) {
  11781. return a.toDataURL("image/png");
  11782. }function m(a) {
  11783. var b = a.map(function (a) {
  11784. return f(a);
  11785. });return k.all(b);
  11786. }function n() {
  11787. return e({ url: y }).then(function (a) {
  11788. return h(p, a.element, w, x, a.width, a.height), m(z);
  11789. }).then(function (a) {
  11790. for (var b = 0; b < a.length; b++) {
  11791. h(p, a[b].element, a[b].x + w, a[b].y + x, a[b].width, a[b].height);
  11792. }l.revokeObjectURL(y), document.body.appendChild(o);var c = j(o);return document.body.removeChild(o), c;
  11793. }, function (a) {
  11794. alert("脑图的节点中包含跨域图片,导出的 png 中节点图片不显示,你可以替换掉这些跨域的图片并重试。"), l.revokeObjectURL(y), document.body.appendChild(o);var b = j(o);return document.body.removeChild(o), b;
  11795. });
  11796. }var o = document.createElement("canvas"),
  11797. p = o.getContext("2d"),
  11798. q = b.getStyle("background").toString(),
  11799. r = /url\(\"(.+)\"\)/.exec(q),
  11800. s = i.Color.parse(q),
  11801. t = g(b),
  11802. u = c && c.width && c.width > t.width ? c.width : t.width,
  11803. v = c && c.height && c.height > t.height ? c.height : t.height,
  11804. w = c && c.width && c.width > t.width ? (c.width - t.width) / 2 : 0,
  11805. x = c && c.height && c.height > t.height ? (c.height - t.height) / 2 : 0,
  11806. y = t.dataUrl,
  11807. z = t.imagesInfo,
  11808. A = 20;if (o.width = u + 2 * A, o.height = v + 2 * A, r) {
  11809. return e({ url: r[1] }).then(function (a) {
  11810. return d(p, p.createPattern(a.element, "repeat")), n();
  11811. });
  11812. }return d(p, s.toString()), n();
  11813. }var i = b.r(17),
  11814. j = b.r(12),
  11815. k = b.r(25),
  11816. l = window.URL || window.webkitURL || window;j.registerProtocol("png", d.exports = { fileDescription: "PNG 图片", fileExtension: ".png", mineType: "image/png", dataType: "base64", encode: h });
  11817. } }, b[67] = { value: function value(a, c, d) {
  11818. function e(a, b, c) {
  11819. function d(a, b) {
  11820. var c;try {
  11821. c = b.getScreenCTM().inverse();
  11822. } catch (a) {
  11823. throw new Error("Can not inverse source element' ctm.");
  11824. }return c.multiply(a.getScreenCTM());
  11825. }function e(a, b) {
  11826. b instanceof Function || (b = function b() {});for (var c = [], d = [], e = [], f = 0, g = a.length; f < g; f++) {
  11827. switch (a[f]) {case "M":case "L":case "T":case "S":case "A":case "C":case "H":case "V":case "Q":
  11828. e.length && (d.push(e.join("")), e = []), "," === d[d.length - 1] && d.pop(), d.length && (b(d), c.push(d.join("")), d = []), d.push(a[f]);break;case "Z":case "z":
  11829. d.push(e.join(""), a[f]), b(d), c.push(d.join("")), e = [], d = [];break;case ".":case "e":
  11830. e.push(a[f]);break;case "-":
  11831. "e" !== a[f - 1] && (e.length && d.push(e.join(""), ","), e = []), e.push("-");break;case " ":case ",":
  11832. e.length && (d.push(e.join(""), ","), e = []);break;default:
  11833. /\d/.test(a[f]) ? e.push(a[f]) : e.length ? (d.push(e.join(""), a[f]), e = []) : ("," === d[d.length - 1] && d.pop(), d.push(a[f])), f + 1 === g && (e.length && d.push(e.join("")), b(d), c.push(d.join("")), e = null, d = null);}
  11834. }return c.join("");
  11835. }function f(a, b, c) {
  11836. if (a && "defs" !== a.tagName) {
  11837. if ("transparent" === a.getAttribute("fill") && a.setAttribute("fill", "none"), a.getAttribute("marker-end") && a.removeAttribute("marker-end"), b = b || 0, c = c || 0, a.getAttribute("transform")) {
  11838. var g = d(a, a.parentElement);b -= g.e, c -= g.f, a.removeAttribute("transform");
  11839. }switch (a.tagName.toLowerCase()) {case "g":
  11840. break;case "path":
  11841. var h = a.getAttribute("d");return void (h && (h = e(h, function (a) {
  11842. switch (a[0]) {case "V":
  11843. a[1] = +a[1] - c;break;case "H":
  11844. a[1] = +a[1] - b;break;case "M":case "L":case "T":
  11845. a[1] = +a[1] - b, a[3] = +a[3] - c;break;case "Q":case "S":
  11846. a[1] = +a[1] - b, a[3] = +a[3] - c, a[5] = +a[5] - b, a[7] = +a[7] - c;break;case "A":
  11847. a[11] = +a[11] - b, a[13] = +a[13] - c;break;case "C":
  11848. a[1] = +a[1] - b, a[3] = +a[3] - c, a[5] = +a[5] - b, a[7] = +a[7] - c, a[9] = +a[9] - b, a[11] = +a[11] - c;}
  11849. }), a.setAttribute("d", h), a.removeAttribute("transform")));case "image":case "text":
  11850. if (b && c) {
  11851. var i = +a.getAttribute("x") || 0,
  11852. j = +a.getAttribute("y") || 0;a.setAttribute("x", i - b), a.setAttribute("y", j - c);
  11853. }return a.getAttribute("dominant-baseline") && (a.removeAttribute("dominant-baseline"), a.setAttribute("dy", ".8em")), void a.removeAttribute("transform");}if (a.children) for (var k = 0, l = a.children.length; k < l; k++) {
  11854. f(a.children[k], b, c);
  11855. }
  11856. }
  11857. }a.style.visibility = "hidden", f(a, b || 0, c || 0), a.style.visibility = "visible";
  11858. }b.r(12).registerProtocol("svg", d.exports = { fileDescription: "SVG 矢量图", fileExtension: ".svg", mineType: "image/svg+xml", dataType: "text", encode: function encode(a, b) {
  11859. var c,
  11860. d,
  11861. f,
  11862. g = b.getPaper(),
  11863. h = g.shapeNode.getAttribute("transform"),
  11864. i = b.getRenderContainer(),
  11865. j = i.getRenderBox(),
  11866. k = (i.getTransform(), j.width),
  11867. l = j.height,
  11868. m = 20;return g.shapeNode.setAttribute("transform", "translate(0.5, 0.5)"), c = g.container.innerHTML, g.shapeNode.setAttribute("transform", h), d = document.createElement("div"), document.body.appendChild(d), d.innerHTML = c, f = d.querySelector("svg"), f.setAttribute("width", k + 2 * m | 0), f.setAttribute("height", l + 2 * m | 0), f.setAttribute("style", "background: " + b.getStyle("background")), f.setAttribute("viewBox", [0, 0, k + 2 * m | 0, l + 2 * m | 0].join(" ")), tempSvgContainer = document.createElement("div"), e(f, j.x - m | 0, j.y - m | 0), document.body.removeChild(d), tempSvgContainer.appendChild(f), c = tempSvgContainer.innerHTML, c = c.replace(/&nbsp;/g, "&#xa0;");
  11869. } });
  11870. } }, b[68] = { value: function value(a, c, d) {
  11871. function e(a, b) {
  11872. for (var c = ""; b--;) {
  11873. c += a;
  11874. }return c;
  11875. }function f(a) {
  11876. if (!a) return "";for (var b = [], c = ["\\", "n"], d = 0, e = 0, f = a.length; d < f; d++) {
  11877. if ("\n" !== a[d] && "\r" !== a[d]) {
  11878. if (a[d] !== c[e]) {
  11879. switch (e) {case 0:
  11880. b.push(a[d]);break;case 1:
  11881. b.push(a[d - 1], a[d]);}e = 0;
  11882. } else 2 === ++e && (e = 0, b.push("\\\\n"));
  11883. } else b.push("\\n"), e = 0;
  11884. }return b.join("");
  11885. }function g(a) {
  11886. if (!a) return "";for (var b = [], c = ["\\", "\\", "n"], d = 0, e = 0, f = a.length; d < f; d++) {
  11887. if (a[d] !== c[e]) switch (e) {case 0:
  11888. b.push(a[d]), e = 0;break;case 1:
  11889. "n" === a[d] ? b.push("\n") : b.push(a[d - 1], a[d]), e = 0;break;case 2:
  11890. b.push(a[d - 2]), "\\" !== a[d] && (e = 0, b.push(a[d - 1], a[d]));} else 3 === ++e && (e = 0, b.push("\\n"));
  11891. }return b.join("");
  11892. }function h(a, b) {
  11893. var c = "";return b = b || 0, c += e("\t", b), c += f(a.data.text) + p, a.children && a.children.forEach(function (a) {
  11894. c += h(a, b + 1);
  11895. }), c;
  11896. }function i(a) {
  11897. return !/\S/.test(a);
  11898. }function j(a) {
  11899. for (var b = 0; r.REGEXP.test(a);) {
  11900. a = a.replace(r.REGEXP, ""), b++;
  11901. }return b;
  11902. }function k(a) {
  11903. return { data: { text: g(a.replace(r.DELETE, "")) } };
  11904. }function l(a) {
  11905. function b(a, b) {
  11906. (a.children || (a.children = [])).push(b);
  11907. }for (var c, d, e, f, g = {}, h = a.split(q), l = 0; l < h.length; l++) {
  11908. if (d = h[l], !i(d)) {
  11909. if (e = j(d), f = k(d), 0 === e) {
  11910. if (c) throw new Error("Invalid local format");c = f;
  11911. } else {
  11912. if (!g[e - 1]) throw new Error("Invalid local format");b(g[e - 1], f);
  11913. }g[e] = f;
  11914. }
  11915. }return c;
  11916. }function m(a) {
  11917. function b(a) {
  11918. var c = {};c.data = a.getData();var d = a.getChildren();c.children = [];for (var e = 0; e < d.length; e++) {
  11919. c.children.push(b(d[e]));
  11920. }return c;
  11921. }if (a) return (/^\s*$/.test(a.data.text) && (a.data.text = "分支主题"), h(b(a))
  11922. );
  11923. }var n = b.r(12),
  11924. o = b.r(17).Browser,
  11925. p = "\r",
  11926. q = /\r\n|\r|\n/,
  11927. r = function (a) {
  11928. return a.gecko ? { REGEXP: new RegExp("^(\t|" + String.fromCharCode(160, 160, 32, 160) + ")"), DELETE: new RegExp("^(\t|" + String.fromCharCode(160, 160, 32, 160) + ")+") } : a.ie || a.edge ? { REGEXP: new RegExp("^(" + String.fromCharCode(32) + "|" + String.fromCharCode(160) + ")"), DELETE: new RegExp("^(" + String.fromCharCode(32) + "|" + String.fromCharCode(160) + ")+") } : { REGEXP: /^(\t|\x20{4})/, DELETE: /^(\t|\x20{4})+/ };
  11929. }(o);n.registerProtocol("text", d.exports = { fileDescription: "大纲文本", fileExtension: ".txt", dataType: "text", mineType: "text/plain", encode: function encode(a) {
  11930. return h(a.root, 0);
  11931. }, decode: function decode(a) {
  11932. return l(a);
  11933. }, Node2Text: function Node2Text(a) {
  11934. return m(a);
  11935. } });
  11936. } }, b[69] = { value: function value(a, c, d) {
  11937. b.r(31).register("default", { getLayout: function getLayout(a) {
  11938. if (a.getData("layout")) return a.getData("layout");var b = a.getLevel();return 0 === b ? "mind" : 1 === b ? a.getLayoutPointPreview().x > 0 ? "right" : "left" : a.parent.getLayout();
  11939. }, getConnect: function getConnect(a) {
  11940. return 1 == a.getLevel() ? "arc" : "under";
  11941. } });
  11942. } }, b[70] = { value: function value(a, c, d) {
  11943. b.r(31).register("filetree", { getLayout: function getLayout(a) {
  11944. return a.getData("layout") ? a.getData("layout") : a.isRoot() ? "bottom" : "filetree-down";
  11945. }, getConnect: function getConnect(a) {
  11946. return 1 == a.getLevel() ? "poly" : "l";
  11947. } });
  11948. } }, b[71] = { value: function value(a, c, d) {
  11949. b.r(31).register("fish-bone", { getLayout: function getLayout(a) {
  11950. if (a.getData("layout")) return a.getData("layout");var b = a.getLevel();return 0 === b ? "fish-bone-master" : 1 === b ? "fish-bone-slave" : a.getLayoutPointPreview().y > 0 ? "filetree-up" : "filetree-down";
  11951. }, getConnect: function getConnect(a) {
  11952. switch (a.getLevel()) {case 1:
  11953. return "fish-bone-master";case 2:
  11954. return "line";default:
  11955. return "l";}
  11956. } });
  11957. } }, b[72] = { value: function value(a, c, d) {
  11958. b.r(31).register("right", { getLayout: function getLayout(a) {
  11959. return a.getData("layout") || "right";
  11960. }, getConnect: function getConnect(a) {
  11961. return 1 == a.getLevel() ? "arc" : "bezier";
  11962. } });
  11963. } }, b[73] = { value: function value(a, c, d) {
  11964. b.r(31).register("structure", { getLayout: function getLayout(a) {
  11965. return a.getData("layout") || "bottom";
  11966. }, getConnect: function getConnect(a) {
  11967. return "poly";
  11968. } });
  11969. } }, b[74] = { value: function value(a, c, d) {
  11970. b.r(31).register("tianpan", { getLayout: function getLayout(a) {
  11971. return a.getData("layout") ? a.getData("layout") : 0 === a.getLevel() ? "tianpan" : a.parent.getLayout();
  11972. }, getConnect: function getConnect(a) {
  11973. return "arc_tp";
  11974. } });
  11975. } }, b[75] = { value: function value(a, c, d) {
  11976. var e = b.r(32);["classic", "classic-compact"].forEach(function (a) {
  11977. var b = "classic-compact" == a;e.register(a, { background: '#3A4144 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQzg5QTQ0NDhENzgxMUUzOENGREE4QTg0RDgzRTZDNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQzg5QTQ0NThENzgxMUUzOENGREE4QTg0RDgzRTZDNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwOEQ1NDRGOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwOEQ1NDUwOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+e9P33AAAACVJREFUeNpisXJ0YUACTAyoAMr/+eM7EGGRZ4FQ7BycEAZAgAEAHbEGtkoQm/wAAAAASUVORK5CYII=") repeat', "root-color": "#430", "root-background": "#e9df98", "root-stroke": "#e9df98", "root-font-size": 24, "root-padding": b ? [10, 25] : [15, 25], "root-margin": b ? [15, 25] : [30, 100], "root-radius": 30, "root-space": 10, "root-shadow": "rgba(0, 0, 0, .25)", "main-color": "#333", "main-background": "#a4c5c0", "main-stroke": "#a4c5c0", "main-font-size": 16, "main-padding": b ? [5, 15] : [6, 20], "main-margin": b ? [5, 10] : 20, "main-radius": 10, "main-space": 5, "main-shadow": "rgba(0, 0, 0, .25)", "sub-color": "white", "sub-background": "transparent", "sub-stroke": "none", "sub-font-size": 12, "sub-padding": [5, 10], "sub-margin": b ? [5, 10] : [15, 20], "sub-tree-margin": 30, "sub-radius": 5, "sub-space": 5, "connect-color": "white", "connect-width": 2, "main-connect-width": 3, "connect-radius": 5, "selected-background": "rgb(254, 219, 0)", "selected-stroke": "rgb(254, 219, 0)", "selected-color": "black", "marquee-background": "rgba(255,255,255,.3)", "marquee-stroke": "white", "drop-hint-color": "yellow", "sub-drop-hint-width": 2, "main-drop-hint-width": 4, "root-drop-hint-width": 4, "order-hint-area-color": "rgba(0, 255, 0, .5)", "order-hint-path-color": "#0f0", "order-hint-path-width": 1, "text-selection-color": "rgb(27,171,255)", "line-height": 1.5 });
  11978. });
  11979. } }, b[76] = { value: function value(a, c, d) {
  11980. b.r(32).register("fish", { background: '#3A4144 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQzg5QTQ0NDhENzgxMUUzOENGREE4QTg0RDgzRTZDNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQzg5QTQ0NThENzgxMUUzOENGREE4QTg0RDgzRTZDNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwOEQ1NDRGOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwOEQ1NDUwOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+e9P33AAAACVJREFUeNpisXJ0YUACTAyoAMr/+eM7EGGRZ4FQ7BycEAZAgAEAHbEGtkoQm/wAAAAASUVORK5CYII=") repeat', "root-color": "#430", "root-background": "#e9df98", "root-stroke": "#e9df98", "root-font-size": 24, "root-padding": [35, 35], "root-margin": 30, "root-radius": 100, "root-space": 10, "root-shadow": "rgba(0, 0, 0, .25)", "main-color": "#333", "main-background": "#a4c5c0", "main-stroke": "#a4c5c0", "main-font-size": 16, "main-padding": [6, 20], "main-margin": [20, 20], "main-radius": 5, "main-space": 5, "main-shadow": "rgba(0, 0, 0, .25)", "sub-color": "black", "sub-background": "white", "sub-stroke": "white", "sub-font-size": 12, "sub-padding": [5, 10], "sub-margin": [10], "sub-radius": 5, "sub-space": 5, "connect-color": "white", "connect-width": 3, "main-connect-width": 3, "connect-radius": 5, "selected-background": "rgb(254, 219, 0)", "selected-stroke": "rgb(254, 219, 0)", "marquee-background": "rgba(255,255,255,.3)", "marquee-stroke": "white", "drop-hint-color": "yellow", "drop-hint-width": 4, "order-hint-area-color": "rgba(0, 255, 0, .5)", "order-hint-path-color": "#0f0", "order-hint-path-width": 1, "text-selection-color": "rgb(27,171,255)", "line-height": 1.5 });
  11981. } }, b[77] = { value: function value(a, c, d) {
  11982. function e(a, b, c) {
  11983. return h.Color.createHSL(a, b, c);
  11984. }function f(a, b) {
  11985. return { background: "#fbfbfb", "root-color": "white", "root-background": e(a, 37, 60), "root-stroke": e(a, 37, 60), "root-font-size": 16, "root-padding": b ? [6, 12] : [12, 24], "root-margin": b ? 10 : [30, 100], "root-radius": 5, "root-space": 10, "main-color": "black", "main-background": e(a, 33, 95), "main-stroke": e(a, 37, 60), "main-stroke-width": 1, "main-font-size": 14, "main-padding": [6, 20], "main-margin": b ? 8 : 20, "main-radius": 3, "main-space": 5, "sub-color": "black", "sub-background": "transparent", "sub-stroke": "none", "sub-font-size": 12, "sub-padding": b ? [3, 5] : [5, 10], "sub-margin": b ? [4, 8] : [15, 20], "sub-radius": 5, "sub-space": 5, "connect-color": e(a, 37, 60), "connect-width": 1, "connect-radius": 5, "selected-stroke": e(a, 26, 30), "selected-stroke-width": "3", "blur-selected-stroke": e(a, 10, 60), "marquee-background": e(a, 100, 80).set("a", .1), "marquee-stroke": e(a, 37, 60), "drop-hint-color": e(a, 26, 35), "drop-hint-width": 5, "order-hint-area-color": e(a, 100, 30).set("a", .5), "order-hint-path-color": e(a, 100, 25), "order-hint-path-width": 1, "text-selection-color": e(a, 100, 20), "line-height": 1.5 };
  11986. }var g,
  11987. h = b.r(17),
  11988. i = b.r(32),
  11989. j = { red: 0, soil: 25, green: 122, blue: 204, purple: 246, pink: 334 };for (g in j) {
  11990. i.register("fresh-" + g, f(j[g])), i.register("fresh-" + g + "-compat", f(j[g], !0));
  11991. }
  11992. } }, b[78] = { value: function value(a, c, d) {
  11993. var e = b.r(32);["snow", "snow-compact"].forEach(function (a) {
  11994. var b = "snow-compact" == a;e.register(a, { background: '#3A4144 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQzg5QTQ0NDhENzgxMUUzOENGREE4QTg0RDgzRTZDNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQzg5QTQ0NThENzgxMUUzOENGREE4QTg0RDgzRTZDNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwOEQ1NDRGOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwOEQ1NDUwOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+e9P33AAAACVJREFUeNpisXJ0YUACTAyoAMr/+eM7EGGRZ4FQ7BycEAZAgAEAHbEGtkoQm/wAAAAASUVORK5CYII=") repeat', "root-color": "#430", "root-background": "#e9df98", "root-stroke": "#e9df98", "root-font-size": 24, "root-padding": b ? [5, 10] : [15, 25], "root-margin": b ? 15 : 30, "root-radius": 5, "root-space": 10, "root-shadow": "rgba(0, 0, 0, .25)", "main-color": "#333", "main-background": "#a4c5c0", "main-stroke": "#a4c5c0", "main-font-size": 16, "main-padding": b ? [4, 10] : [6, 20], "main-margin": b ? [5, 10] : [20, 40], "main-radius": 5, "main-space": 5, "main-shadow": "rgba(0, 0, 0, .25)", "sub-color": "black", "sub-background": "white", "sub-stroke": "white", "sub-font-size": 12, "sub-padding": [5, 10], "sub-margin": b ? [5, 10] : [10, 20], "sub-radius": 5, "sub-space": 5, "connect-color": "white", "connect-width": 2, "main-connect-width": 3, "connect-radius": 5, "selected-background": "rgb(254, 219, 0)", "selected-stroke": "rgb(254, 219, 0)", "marquee-background": "rgba(255,255,255,.3)", "marquee-stroke": "white", "drop-hint-color": "yellow", "drop-hint-width": 4, "order-hint-area-color": "rgba(0, 255, 0, .5)", "order-hint-path-color": "#0f0", "order-hint-path-width": 1, "text-selection-color": "rgb(27,171,255)", "line-height": 1.5 });
  11995. });
  11996. } }, b[79] = { value: function value(a, c, d) {
  11997. var e = b.r(32);["tianpan", "tianpan-compact"].forEach(function (a) {
  11998. var b = "tianpan-compact" == a;e.register(a, { background: '#3A4144 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQzg5QTQ0NDhENzgxMUUzOENGREE4QTg0RDgzRTZDNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQzg5QTQ0NThENzgxMUUzOENGREE4QTg0RDgzRTZDNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwOEQ1NDRGOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwOEQ1NDUwOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+e9P33AAAACVJREFUeNpisXJ0YUACTAyoAMr/+eM7EGGRZ4FQ7BycEAZAgAEAHbEGtkoQm/wAAAAASUVORK5CYII=") repeat', "root-color": "#430", "root-background": "#e9df98", "root-stroke": "#e9df98", "root-font-size": 25, "root-padding": b ? 15 : 20, "root-margin": b ? [15, 25] : 100, "root-radius": 30, "root-space": 10, "root-shadow": "rgba(0, 0, 0, .25)", "root-shape": "circle", "main-color": "#333", "main-background": "#a4c5c0", "main-stroke": "#a4c5c0", "main-font-size": 15, "main-padding": b ? 10 : 12, "main-margin": b ? 10 : 12, "main-radius": 10, "main-space": 5, "main-shadow": "rgba(0, 0, 0, .25)", "main-shape": "circle", "sub-color": "#333", "sub-background": "#99ca6a", "sub-stroke": "#a4c5c0", "sub-font-size": 13, "sub-padding": 5, "sub-margin": b ? 6 : 10, "sub-tree-margin": 30, "sub-radius": 5, "sub-space": 5, "sub-shadow": "rgba(0, 0, 0, .25)", "sub-shape": "circle", "connect-color": "white", "connect-width": 2, "main-connect-width": 3, "connect-radius": 5, "selected-background": "rgb(254, 219, 0)", "selected-stroke": "rgb(254, 219, 0)", "selected-color": "black", "marquee-background": "rgba(255,255,255,.3)", "marquee-stroke": "white", "drop-hint-color": "yellow", "sub-drop-hint-width": 2, "main-drop-hint-width": 4, "root-drop-hint-width": 4, "order-hint-area-color": "rgba(0, 255, 0, .5)", "order-hint-path-color": "#0f0", "order-hint-path-width": 1, "text-selection-color": "rgb(27,171,255)", "line-height": 1.4 });
  11999. });
  12000. } }, b[80] = { value: function value(a, c, d) {
  12001. b.r(32).register("wire", { background: "black", color: "#999", stroke: "none", padding: 10, margin: 20, "font-size": 14, "connect-color": "#999", "connect-width": 1, "selected-background": "#999", "selected-color": "black", "marquee-background": "rgba(255,255,255,.3)", "marquee-stroke": "white", "drop-hint-color": "yellow", "sub-drop-hint-width": 2, "main-drop-hint-width": 4, "root-drop-hint-width": 4, "order-hint-area-color": "rgba(0, 255, 0, .5)", "order-hint-path-color": "#0f0", "order-hint-path-width": 1, "text-selection-color": "rgb(27,171,255)", "line-height": 1.5 });
  12002. } };var c = { "expose-kityminder": 34 };a("expose-kityminder");
  12003. }();
  12004. /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(52), __webpack_require__(31).setImmediate))
  12005. /***/ }),
  12006. /***/ 368:
  12007. /***/ (function(module, exports, __webpack_require__) {
  12008. // style-loader: Adds some css to the DOM by adding a <style> tag
  12009. // load the styles
  12010. var content = __webpack_require__(369);
  12011. if(typeof content === 'string') content = [[module.i, content, '']];
  12012. // Prepare cssTransformation
  12013. var transform;
  12014. var options = {}
  12015. options.transform = transform
  12016. // add the styles to the DOM
  12017. var update = __webpack_require__(50)(content, options);
  12018. if(content.locals) module.exports = content.locals;
  12019. // Hot Module Replacement
  12020. if(false) {
  12021. // When the styles change, update the <style> tags
  12022. if(!content.locals) {
  12023. module.hot.accept("!!../../css-loader/index.js!../../less-loader/dist/cjs.js!./hotbox.less", function() {
  12024. var newContent = require("!!../../css-loader/index.js!../../less-loader/dist/cjs.js!./hotbox.less");
  12025. if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
  12026. update(newContent);
  12027. });
  12028. }
  12029. // When the module is disposed, remove the <style> tags
  12030. module.hot.dispose(function() { update(); });
  12031. }
  12032. /***/ }),
  12033. /***/ 369:
  12034. /***/ (function(module, exports, __webpack_require__) {
  12035. exports = module.exports = __webpack_require__(0)(false);
  12036. // imports
  12037. // module
  12038. exports.push([module.i, ".hotbox {\n font-family: Arial, \"Hiragino Sans GB\", \"Microsoft YaHei\", \"WenQuanYi Micro Hei\", sans-serif;\n position: absolute;\n left: 0;\n top: 0;\n overflow: visible;\n}\n.hotbox .state {\n position: absolute;\n overflow: visible;\n display: none;\n}\n.hotbox .state .center .button,\n.hotbox .state .ring .button {\n position: absolute;\n width: 70px;\n height: 70px;\n margin-left: -35px;\n margin-top: -35px;\n border-radius: 100%;\n box-shadow: 0 0 30px rgba(0, 0, 0, 0.3);\n}\n.hotbox .state .center .label,\n.hotbox .state .ring .label,\n.hotbox .state .center .key,\n.hotbox .state .ring .key {\n display: block;\n text-align: center;\n line-height: 1.4em;\n vertical-align: middle;\n}\n.hotbox .state .center .label,\n.hotbox .state .ring .label {\n font-size: 16px;\n margin-top: 17px;\n color: black;\n font-weight: normal;\n line-height: 1em;\n}\n.hotbox .state .center .key,\n.hotbox .state .ring .key {\n font-size: 12px;\n color: #999;\n}\n.hotbox .state .ring-shape {\n position: absolute;\n left: -25px;\n top: -25px;\n border: 25px solid rgba(0, 0, 0, 0.3);\n border-radius: 100%;\n box-sizing: content-box;\n}\n.hotbox .state .top,\n.hotbox .state .bottom {\n position: absolute;\n white-space: nowrap;\n}\n.hotbox .state .top .button,\n.hotbox .state .bottom .button {\n display: inline-block;\n padding: 8px 15px;\n margin: 0 10px;\n border-radius: 15px;\n box-shadow: 0 0 30px rgba(0, 0, 0, 0.3);\n position: relative;\n}\n.hotbox .state .top .button .label,\n.hotbox .state .bottom .button .label {\n font-size: 14px;\n line-height: 14px;\n vertical-align: middle;\n color: black;\n line-height: 1em;\n}\n.hotbox .state .top .button .key,\n.hotbox .state .bottom .button .key {\n font-size: 12px;\n line-height: 12px;\n vertical-align: middle;\n color: #999;\n margin-left: 3px;\n}\n.hotbox .state .top .button .key:before,\n.hotbox .state .bottom .button .key:before {\n content: '(';\n}\n.hotbox .state .top .button .key:after,\n.hotbox .state .bottom .button .key:after {\n content: ')';\n}\n.hotbox .state .button {\n background: #F9F9F9;\n overflow: hidden;\n cursor: default;\n}\n.hotbox .state .button .key,\n.hotbox .state .button .label {\n opacity: 0.3;\n}\n.hotbox .state .button.enabled {\n background: white;\n}\n.hotbox .state .button.enabled .key,\n.hotbox .state .button.enabled .label {\n opacity: 1;\n}\n.hotbox .state .button.enabled:hover {\n background: #e87372;\n}\n.hotbox .state .button.enabled:hover .label {\n color: white;\n}\n.hotbox .state .button.enabled:hover .key {\n color: #fadfdf;\n}\n.hotbox .state .button.enabled.selected {\n -webkit-animation: selected 0.1s ease;\n background: #e45d5c;\n}\n.hotbox .state .button.enabled.selected .label {\n color: white;\n}\n.hotbox .state .button.enabled.selected .key {\n color: #fadfdf;\n}\n.hotbox .state .button.enabled.pressed,\n.hotbox .state .button.enabled:active {\n background: #FF974D;\n}\n.hotbox .state .button.enabled.pressed .label,\n.hotbox .state .button.enabled:active .label {\n color: white;\n}\n.hotbox .state .button.enabled.pressed .key,\n.hotbox .state .button.enabled:active .key {\n color: #fff0e6;\n}\n.hotbox .state.active {\n display: block;\n}\n@-webkit-keyframes selected {\n 0% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n }\n}\n.hotbox-key-receiver {\n position: absolute;\n left: -999999px;\n top: -999999px;\n width: 20px;\n height: 20px;\n outline: none;\n margin: 0;\n}\n", ""]);
  12039. // exports
  12040. /***/ }),
  12041. /***/ 370:
  12042. /***/ (function(module, exports, __webpack_require__) {
  12043. var disposed = false
  12044. function injectStyle (ssrContext) {
  12045. if (disposed) return
  12046. __webpack_require__(371)
  12047. }
  12048. var normalizeComponent = __webpack_require__(2)
  12049. /* script */
  12050. var __vue_script__ = __webpack_require__(373)
  12051. /* template */
  12052. var __vue_template__ = __webpack_require__(404)
  12053. /* template functional */
  12054. var __vue_template_functional__ = false
  12055. /* styles */
  12056. var __vue_styles__ = injectStyle
  12057. /* scopeId */
  12058. var __vue_scopeId__ = "data-v-08e0a3b0"
  12059. /* moduleIdentifier (server only) */
  12060. var __vue_module_identifier__ = null
  12061. var Component = normalizeComponent(
  12062. __vue_script__,
  12063. __vue_template__,
  12064. __vue_template_functional__,
  12065. __vue_styles__,
  12066. __vue_scopeId__,
  12067. __vue_module_identifier__
  12068. )
  12069. Component.options.__file = "resources/assets/js/main/components/docs/minder/minder.vue"
  12070. /* hot reload */
  12071. if (false) {(function () {
  12072. var hotAPI = require("vue-hot-reload-api")
  12073. hotAPI.install(require("vue"), false)
  12074. if (!hotAPI.compatible) return
  12075. module.hot.accept()
  12076. if (!module.hot.data) {
  12077. hotAPI.createRecord("data-v-08e0a3b0", Component.options)
  12078. } else {
  12079. hotAPI.reload("data-v-08e0a3b0", Component.options)
  12080. }
  12081. module.hot.dispose(function (data) {
  12082. disposed = true
  12083. })
  12084. })()}
  12085. module.exports = Component.exports
  12086. /***/ }),
  12087. /***/ 371:
  12088. /***/ (function(module, exports, __webpack_require__) {
  12089. // style-loader: Adds some css to the DOM by adding a <style> tag
  12090. // load the styles
  12091. var content = __webpack_require__(372);
  12092. if(typeof content === 'string') content = [[module.i, content, '']];
  12093. if(content.locals) module.exports = content.locals;
  12094. // add the styles to the DOM
  12095. var update = __webpack_require__(1)("4fcf4ca6", content, false, {});
  12096. // Hot Module Replacement
  12097. if(false) {
  12098. // When the styles change, update the <style> tags
  12099. if(!content.locals) {
  12100. module.hot.accept("!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-08e0a3b0\",\"scoped\":true,\"hasInlineConfig\":true}!../../../../../../../node_modules/less-loader/dist/cjs.js!../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./minder.vue", function() {
  12101. var newContent = require("!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-08e0a3b0\",\"scoped\":true,\"hasInlineConfig\":true}!../../../../../../../node_modules/less-loader/dist/cjs.js!../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./minder.vue");
  12102. if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
  12103. update(newContent);
  12104. });
  12105. }
  12106. // When the module is disposed, remove the <style> tags
  12107. module.hot.dispose(function() { update(); });
  12108. }
  12109. /***/ }),
  12110. /***/ 372:
  12111. /***/ (function(module, exports, __webpack_require__) {
  12112. exports = module.exports = __webpack_require__(0)(false);
  12113. // imports
  12114. // module
  12115. exports.push([module.i, "\n.basebtn[data-v-08e0a3b0] {\n color: #fff;\n background-color: #409eff;\n display: inline-block;\n line-height: 1;\n white-space: nowrap;\n cursor: pointer;\n border: 1px solid #dcdfe6;\n -webkit-appearance: none;\n text-align: center;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n margin: 0;\n -webkit-transition: 0.1s;\n transition: 0.1s;\n font-weight: 500;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n padding: 8px 12px;\n font-size: 14px;\n border-radius: 4px;\n}\n.baseSelect[data-v-08e0a3b0] {\n height: 32px;\n}\n.baseSelect option[data-v-08e0a3b0] {\n min-height: 1.5em;\n}\n.quickbar[data-v-08e0a3b0] {\n position: fixed;\n left: 20px;\n bottom: 20px;\n height: 34px;\n border-radius: 3px;\n -webkit-box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);\n background-color: #fff;\n color: #666;\n z-index: 10;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n padding: 0 6px;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.quickbar i[data-v-08e0a3b0] {\n font-size: 22px;\n width: 34px;\n height: 34px;\n line-height: 34px;\n display: block;\n text-align: center;\n -webkit-transform: scale(1);\n transform: scale(1);\n cursor: pointer;\n padding: 0;\n color: #666666;\n}\n.quickbar i[data-v-08e0a3b0]:hover {\n color: #232323;\n}\n.quickbar i.active[data-v-08e0a3b0] {\n color: #0285d7;\n}\n.quickbar .quickul li[data-v-08e0a3b0] {\n cursor: pointer;\n padding: 8px 0;\n}\n.quickbar .quickul li[data-v-08e0a3b0]:hover {\n color: #0285d7;\n}\n.quickbar .quickul.mold span[data-v-08e0a3b0] {\n display: block;\n width: 30px;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAAoCAYAAAAIXQhqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/sl0p8zAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAABDnSURBVHja7J17cFRVnse/5z6684TmEUAYJTAQmFFCsqCAqAQJyOjOEBTHstqR0FqjlqMDfww2NVMTcKbW1MzUBMqdVXbXTtw1s7MLG0B3NqxEkigvgUgSghAFDA4RHwRCXpDuvvfsH/c0JiHpdHdu0jfN71PV1Unf0+fec/re8z2/c37ndxjnHARBEARBDG8kqgKCIAiCIEEnCIIgCMICKFQFBBH7PPHUhj6PaZoODg5d57Cp/TYJNgDxADoBXAvjEuI0TXcD/Mm4OPsUTdO9nZ3eKkWRX2aM7Q41k7feeIV+TILoT9CfeGqDA0ABgNwI8ikCsK7Yk98c7hedLvdNdV6ziZVyUJ0MDib6yNg0TX/W7/c/DoY0cDTKsvy2osgFAJr6+7KmaXkjRya7f7D0XmSkz0Bbe4etvPLwggOHa4rBeQ5j7ANqjgnCPAu94HszpuY+41qFsWNHhZzBxYuXsdWzPfdk/VkAWBPBNUTtvBE2+OjyvTUW+A1jpRym1kmU7qmYbSc0Tfv9iBFJL963cC7Spt2Gxgtfj654/+isL7+6OEdR5LUAZgFYBWAigPGibeEALnHOv5AkacmjK5dhSda865mmTZuM9qvXRld9dGKtzabuE+kJgjBB0MNuAAFg7NhReMa1Cmtf+l2u0+WuAbCz2JPfEIIVlQogx4zzRtj45g6w7iI9r9nESjkGYpFnAXAAyDDrXiZB72blL7Gp6vOrnStw97zZAIA7Acz6/nT88dV/W37pcsteWZY6AHwG4FMAewHoAHwAdL9fWzJ+/Niku+bO6pavqipYOC8DRz+qmw8gCUAr1TZBmCPoZjAbQJ7T5d6JPoYtuwyH5gDYST8BEYGABzqDq4WIVwNoBlBJtWM+Pp8/K21aqjyvhyB/d+qtyMz4Pna/+8FFWbY/KsT8RiuboR7AUvQy/M85Bzj8ogNAEMQA6OrlXrTVsx0XL14OKwMxTAkARcWe/DUApghrqVyId0/KxfEpIv2Azxth2YsGWHdFFvkNY6UcoQh5htPl3gHgmOg8bgIwqtiTn1nsyV9c7MnfWOzJ3xjFe2rYonNu03Rd7fWYrifHJ8RBlm9cFJOclADO+UUAn6CPIXNFluubmi43HzpyvNvnXq8f+z+sBmPsOIB2ao4JwjwLfd3J+rOB4cZIRGEdAAirfKXT5T4GIC/wuWiQC0SalWafNwIC3xvq85pNrJQjmJA7xL2UC2ALgDX9OK1F654alp16n8+/ymZTn0xMiE9ubWl7Jy7O/ioML3YAgKqqxxoaGnG+8St8Z9L461/saL+Kuo8/haIoNcFOwBir1zTtT9t3vvvL1rZ2ZKbPRGt7B8orj6D2eL1PVZW5AB4H8B/UJBNE5LCAFyxjzOxGOBXGnNqUYk9+Q8//h4GI8GJPPhvuP/BwL4fT5c4AUAhjSH3NcLh3+ijDDgCpQZI1A1hc7MmvNjOPwPPd17I1r8+3fPq0ydsfW7k8MSHRjtI9+3HgYPVvJEnKY+y6xZ3i8/lLZ89Km7Nq5TLc+p0JuNjUjP8prcQH+6u+YYwtY4xV91MNdk3Tf8E5X22326bpun7N6/UdVhQ5nzE2D8B6AE/1J+q0bI0gQrPQTUWIeBGAnwuL5+cwhuUbqNqJMISwHMAWMZQ+XCl4eEV26sM/WtJngpK333OU7CorALB4MPLQNO2GTruuc6ZI8upHVmQnps+aDgBYns1x5GjdU51e72uKLF8Q37mmqsq1mrpPGs+cPZ/icCTb2to60NzSWqPI8oYQxBwAOmVZ+i3n/J99Pv8ExtCpqsrfAHQAKIXhFFcI4DwAWsJGEBEw2JHi3oThvATx/iZVORGimDuEmK8b5mIOAFnLsxcGTSCOZw1mHpzzbi+Acx06s6nfTp3bbDbYbGqb3+9v0791YnsRwAhVURZ1XL225HzjV0+2tLb9QFWUbMZYaTgVwRj7WpJYLWOsXoh5gJcA7APwFoylbwRBWMVCF1Z6hdPldjhd7lwAjmJPfoUFhIKbnTYaQ9qxUo4glMNYAlkUYWeAAst0QZZlcM57Wul2v1/DO6XvY8SIRNhtNry/7yja2jt22FS1TTLS3gLgOQC/BnBGlqUzsiztG4RL1AA8C6AKwC8BPE/NM0FYSNAFFTAcmiqsUmgzhSscYaVyhHwtG0X5Il0LbrXAMhW7y/ZnBRsu3122H/08I2bk0c1YBvCyIsvNx6o/fvr0mYbVNlVNbLrUsldR5d9JjAXuh8dgzM2/NQQ//WkArwD4BwBvAPiImmiCsJag14CG24nQxTwVhr/F4hDSpYp/M2AshQxgtcAy60p2lZWX7CpzBEnTgODe9Wbk0ZVcAOlgeEyW5ZaWlvZCzuFQFPkS694+PAQjXoQ3jPImivdIlqL9UVzbCzCG+q/BCFBDEMTNZqGHMtwaxBotQo/hVrPzu9nKEQF5MIbaq7tcVwaMueFFQsQzhNVY3UXIzln1IRNlGSXKkgvD+WtNONMJZuQBBObRkSJJ7IcANgJoAQBFkXXOcanHkPwoAJMA7Akx+wWiQzFfjAAcBLAZwIEwLjHe79dOa5q2GsCDAM4oivIXWZZeD7NTQRAk6IMlojACzQyFWJg93BorMe4tH99c3Ec5ADK7WOo5XTqGlTA83iv6yWfyVs/2SMsauCcHo3wRC7EZeXDO4fX5FnCdv+jz+5Pi4uJOqaoMJjHouuEopyhy1/R/xzmSGUMSYywB3Z3YepINY8nZ2C6fPQrgfhhrzEPpFIz0a1rxuJTRD2XddycmTRw37vSZz8e9v69qwZXWtu8qspwnOnIEQQyihW6lDULMHm6NWqz5GClHuB0/wIhX0GvnL8SOn+UCy0RbzHWdx/n92jNp01J/c+ecO5IbG7/yHjpS+4am609LktQsMQmQDac5znmcpunrOec/jYuzT9I0bZvX6wtsddqbMCcKa39sL8fGiGMH0M8QvKbpT4x2jHjoZ88+jrRpkwEA8+bOwtTUW/Hav/7n8z6f/zSAV6nZJojBFfRcE75Pm2HEPkPS8ROiv8aseyrEoC4BNhd78tdZScwBoNPbOXvK5EnrX3zOmTxh/BgAsNls6iOle/b9NSkxvpBLDAAD51zya9pGx8jkl5YvvQcZ6TPQ2toev7fy8D0fHqn9M4AfMcYO9sj+VgBzg5x+DoDbAJwMdo0+n29p5uzvXRfzAHfNvR17ym+Va49/sowEnSD6RorBMpkdxztqseZjpBxmd/yiQV6IYg4Aa0UHwDJiDgB+nzYzZczo8ULMAQAz0lIBzqfq+reuE5zz22VJevbHDz+AnL9fjNTbJmLW7dPx3NM/RvodM8b6fP61MObHu2IXr77o73jg3COTkxJv+FyWZSQkxINzPpKabIIYfAu9aICNbZGJZTJ7uDVqseZjpByxQE4E6autIuYAoKjKx2fPnT917vMLt0++7Ra0tV9FdW09mCQf4tyYX5ckBp9fS584IWVkz61ObTYVC+bNRtWxEwsAxKP7fPoFGE6Jk/s4/TmRJvg1KkrViZOns9o7riIxIf76519c+AaffdYIRVGqqMkmiL4xJZb7zRzIYzjHSh/qa3e63IUD7fiFsjbd7PvRSmv0u1Bd7MnPDMHqBWDEcvf5/I+MHu34Q0Z6WuoXF77x1X967p8Y2HpJYt7A4+/1+VdNnJCy7bd5LyApMb5bXpX7qvCPr//5b3a7bSZudJD7NYzd73pjY5BjXa91Nud8z713z0n54YOLMHaMA+cbv8b2nXtwrOZktaLIrmJP/jFqtgliEC30YHOWTpc7C0bUr8VWiBRHRJWB7AwHAOecLndWCPeR2R79O8O00jODbLJihtXugLFqpDDU4Ducc8iy9N9NTZdP7N6z/z5Zkh+029UDjLGuS8FGqIp8yzcXL3kPHz1uu3/RXdcPeL0+HPywBmL+/Govp8gHMBrGyoQAlwH8izjWv3XBWA2AJyv2Hcmvrj11R1JSgtx8pVVra+v4QFWVtTBiWhAEMZiC3g9ZXd5J0K1vtQ/aaEsozmrCiu8WJa7HOvQV4v9m9L0O3WyP/k0w1r6nhpDN5r7EXJSrSCzfLHS63IhE1Is9+c1Ol3txuKIOAIoin1JV5RRj7IAQ33kw9jJPBnA3Y6zOr2lb/6vk/15oaW0POMVhb+Vh1NbVn1NVpQC973vuBZAAYD+AP4k0deIVMoyx3aqiHL3S2pZ3+UrLSlmSXaqqHADQRk8nQURf0GeLBnf2MBO2WI+VPlTWbbhsAnDM6XJvCQijeK+GEaQkUOep6DtSnKmI808xMb+oirqgDsDPANwHIF10kH4P4KAiy7YrV9ou/WVb6U92vrN3qqZpnV6vz64o8v8yxg71klcKgD/ACCjzgHjeB8JFRZZ9kOU6AO9SM00Q1rLQ1wmrb1gRq7HS+yGq69XFtrtbYAxLZwZL10U4KnrUtSUDywyiqB+LUNQ7YQR86bm23CvL0kbO+eter288Y/CqqjITgBtGcJ9SGLECJCHiS2DEYc9CCM5vIRAHYDmAt6mJJgiLCLqYP28WjVdeiPOfhEVHIoawI7XR6XKviFCkAAt79Pexpr0wMNUgaIbhc1IdRh65Yn6+Wx74dloibBhjXzKGL8W/JwGUwfAluAdGmFcNQD2Mofv3TKymOTA85v9KTyhBWMdCXw3DoQjifTUsMo9+E8dKDzoK4XS5Cy1i3S4G8JnT5a4M13o1O7CMyRQ8vCI7NdiuaSVvv+co2VVWgL43qDEjj0hoBfDv4jWY/BRA40A6IwRxUwv6ICz1SRV5BeYet4gGepMYLh2U84bTsN5ssdKHk3XbY444tdiTvzFGnrms5dkLgyZYnr0QJbvKsgY5j6jDOR/HOSYwBi9j7HMYS+HSYMR+Xy86EARBRGChmy1IO2B4/DaIBrrB6XJvFp9nWkAIYy5WullCahXrttiTXy1EvdDpci+CsdSrgR7bYY9d0/RfcM5X2+22abqud3q9vsOKIucxxh4H8OUQjAIQREwLuimCJCzuwNKjntbaJgBZTpd7h2icm2NFCIlBF/U8CO930VHsc1TG4oGOKnaX7c8KNly+u2w/EHxqyow8ooWkafqvRoxI/NUD2QuRmT4Tre0d9vLKI/d+eKRmBwCdMbYWQBPd/QQRuaAPGOHYkwNjvnxxb9afaJwLYAy/74xi2YtMnisusrpndYi/oeXEUOS3zulyvymEPXDv7AJQ0cv5rDz9sa5kV1l5ya4yR5A0DQg+dWFGHlGBcz5Dktjzq3KWYen9869/PnP6FFy7dm1k1bGPa202dRs1zQQxMEEfqCBVwIjktCnYsGhgSNfpcm8S4l+x1bM9KwpCSLHSe8eyYii8vlcK/4wcGN7VO5wudzUMr+5KkdSyoz6iDKOGKo+33njFUg2OpmmzxqWMGTX/zp6x4hXcPT8TRz86MQI3bv5CEESYgj5gQQrHMhOiv9npchedrD9bMNRCaPZcscU9q8PB8lMggXtHvALLIx0wAswQFoZzIde97B3BjB1cbQBkqimCGICgR0uQYkgIhyXDKOBNsHuoQvy5U5RpcixMf8Rkg6PIdU1Nzc2Hjx53LMmad/1zn8+PA4eqwcAOgcK8EsSALXTiJqO3SHgWWoc+EGirWIvCGDuladpr23a8u6Gt7Soy0megrb0D5ZWHUVNbf1lVlc3oPVY8QRD9PV9mbJ9KxJTF7sBNuhVuLBJ4vp0uN7o+61F+3uM0Td8A8J/ExdmnaJru6+z0VimK/DJjrDTYF63mE0AQlhR0giAIgiCGLxJVAUEQBEEMf/5/AJFbIIR0qdf/AAAAAElFTkSuQmCC) no-repeat;\n background-size: 300px 24px;\n height: 30px;\n}\n.quickbar .quickul.mold span.default[data-v-08e0a3b0] {\n background-position: 0 3px;\n}\n.quickbar .quickul.mold span.structure[data-v-08e0a3b0] {\n background-position: -30px 3px;\n}\n.quickbar .quickul.mold span.filetree[data-v-08e0a3b0] {\n background-position: -60px 3px;\n}\n.quickbar .quickul.mold span.right[data-v-08e0a3b0] {\n background-position: -90px 3px;\n}\n.quickbar .quickul.mold span.fish-bone[data-v-08e0a3b0] {\n background-position: -120px 3px;\n}\n.quickbar .quickul.mold span.tianpan[data-v-08e0a3b0] {\n background-position: -150px 3px;\n}\n", ""]);
  12116. // exports
  12117. /***/ }),
  12118. /***/ 373:
  12119. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  12120. "use strict";
  12121. Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
  12122. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_kityminder_gg_src_utils_index_js__ = __webpack_require__(374);
  12123. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_kityminder_gg_examples_styles_minder_css__ = __webpack_require__(375);
  12124. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_kityminder_gg_examples_styles_minder_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_kityminder_gg_examples_styles_minder_css__);
  12125. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_jspdf__ = __webpack_require__(328);
  12126. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_jspdf___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_jspdf__);
  12127. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  12128. //
  12129. //
  12130. //
  12131. //
  12132. //
  12133. //
  12134. //
  12135. //
  12136. //
  12137. //
  12138. //
  12139. //
  12140. //
  12141. //
  12142. //
  12143. //
  12144. //
  12145. //
  12146. //
  12147. //
  12148. //
  12149. //
  12150. //
  12151. //
  12152. //
  12153. //
  12154. //
  12155. //
  12156. //
  12157. //
  12158. //
  12159. //
  12160. //
  12161. //
  12162. //
  12163. //
  12164. //
  12165. //
  12166. //
  12167. //
  12168. //
  12169. //
  12170. //
  12171. //
  12172. //
  12173. //
  12174. //
  12175. //
  12176. //
  12177. //
  12178. //
  12179. //
  12180. //
  12181. //
  12182. //
  12183. //
  12184. //
  12185. //
  12186. //
  12187. //
  12188. //
  12189. //
  12190. //
  12191. //
  12192. //
  12193. //
  12194. //
  12195. //
  12196. //
  12197. //
  12198. //
  12199. //
  12200. //
  12201. //
  12202. //
  12203. //
  12204. //
  12205. //
  12206. //
  12207. //
  12208. //
  12209. //
  12210. //
  12211. //
  12212. //
  12213. //
  12214. //
  12215. //
  12216. //
  12217. //
  12218. //
  12219. //
  12220. //
  12221. //
  12222. //
  12223. //
  12224. //
  12225. //
  12226. //
  12227. //
  12228. //
  12229. //
  12230. //
  12231. //
  12232. //
  12233. //
  12234. //
  12235. //
  12236. //
  12237. //
  12238. //
  12239. //
  12240. //
  12241. //
  12242. //
  12243. //
  12244. //
  12245. //
  12246. //
  12247. //
  12248. //
  12249. //
  12250. //
  12251. //
  12252. //
  12253. //
  12254. //
  12255. //
  12256. //
  12257. //
  12258. //
  12259. //
  12260. //
  12261. //
  12262. //
  12263. //
  12264. //
  12265. //
  12266. //
  12267. //
  12268. //
  12269. //
  12270. //
  12271. //
  12272. //
  12273. //
  12274. //
  12275. //
  12276. //
  12277. //
  12278. //
  12279. //
  12280. //
  12281. //
  12282. //
  12283. //
  12284. //
  12285. //
  12286. //
  12287. //
  12288. //
  12289. //
  12290. //
  12291. //
  12292. //
  12293. //
  12294. //
  12295. /* harmony default export */ __webpack_exports__["default"] = ({
  12296. name: 'mind-editor',
  12297. props: {
  12298. value: {
  12299. type: Object,
  12300. default: function _default() {
  12301. return {};
  12302. }
  12303. },
  12304. AccessKey: {
  12305. type: String,
  12306. default: ''
  12307. },
  12308. SecretKey: {
  12309. type: String,
  12310. default: ''
  12311. },
  12312. Domain: {
  12313. type: String,
  12314. default: ''
  12315. },
  12316. scope: {
  12317. type: String,
  12318. default: ''
  12319. },
  12320. isImageUpload: {
  12321. type: Boolean,
  12322. default: true
  12323. },
  12324. saveShow: {
  12325. type: Boolean,
  12326. default: true
  12327. },
  12328. readOnly: {
  12329. type: Boolean,
  12330. default: false
  12331. },
  12332. id: {
  12333. type: String,
  12334. default: 'minder-component-' + Object(__WEBPACK_IMPORTED_MODULE_0_vue_kityminder_gg_src_utils_index_js__["a" /* generateMixed */])(12)
  12335. }
  12336. },
  12337. data: function data() {
  12338. return {
  12339. minder: null,
  12340. isHand: false,
  12341. bakValue: ''
  12342. };
  12343. },
  12344. methods: {
  12345. execCommand: function execCommand(var1, var2) {
  12346. var _this = this;
  12347. if (this.readOnly === true) {
  12348. this.minder.enable();
  12349. this.$nextTick(function () {
  12350. _this.minder.execCommand(var1, var2);
  12351. _this.$nextTick(function () {
  12352. _this.minder.disable();
  12353. if (_this.isHand) {
  12354. _this.minder.execCommand('Hand');
  12355. }
  12356. });
  12357. });
  12358. } else {
  12359. this.minder.execCommand(var1, var2);
  12360. }
  12361. },
  12362. exportHandle: function exportHandle(n, filename) {
  12363. filename = filename || this.value.root.data.text || this.$L('无标题');
  12364. if (n === 0 || n === 'png') {
  12365. this.minder.exportData('png').then(function (content) {
  12366. var element = document.createElement('a');
  12367. element.setAttribute('href', content);
  12368. element.setAttribute('download', filename);
  12369. element.style.display = 'none';
  12370. document.body.appendChild(element);
  12371. element.click();
  12372. document.body.removeChild(element);
  12373. });
  12374. } else if (n === 1 || n === 'pdf') {
  12375. this.minder.exportData('png').then(function (content) {
  12376. var doc = new __WEBPACK_IMPORTED_MODULE_2_jspdf___default.a();
  12377. doc.addImage(content, 'PNG', 0, 0, 0, 0);
  12378. doc.save(filename + '.pdf');
  12379. });
  12380. }
  12381. },
  12382. rendData: function rendData() {
  12383. var _this2 = this;
  12384. this.$nextTick(function () {
  12385. setTimeout(function () {
  12386. if (_this2.minder !== null) {
  12387. if (_this2.bakValue == JSON.stringify(_this2.value)) {
  12388. return;
  12389. }
  12390. _this2.bakValue = JSON.stringify(_this2.value);
  12391. _this2.minder.importJson(_this2.value);
  12392. return;
  12393. }
  12394. window.__minderReadOnly = _this2.readOnly;
  12395. var Editor = __webpack_require__(380);
  12396. _this2.minder = window.editor = new Editor(document.getElementById(_this2.id)).minder;
  12397. _this2.bakValue = JSON.stringify(_this2.value);
  12398. _this2.minder.importJson(_this2.value);
  12399. if (_this2.readOnly === true) {
  12400. _this2.minder.disable();
  12401. _this2.minder.execCommand('Hand');
  12402. _this2.isHand = true;
  12403. }
  12404. _this2.$emit('minderHandle', _this2.minder);
  12405. _this2.minder.on('contentchange', function (e) {
  12406. var newJson = _this2.minder.exportJson();
  12407. if (_this2.bakValue == JSON.stringify(newJson)) {
  12408. return;
  12409. }
  12410. _this2.bakValue = JSON.stringify(newJson);
  12411. _this2.$emit('input', newJson);
  12412. });
  12413. }, 300);
  12414. });
  12415. }
  12416. },
  12417. watch: {
  12418. value: {
  12419. handler: function handler(newObj) {
  12420. if ((typeof newObj === 'undefined' ? 'undefined' : _typeof(newObj)) !== "object" || newObj === null) {
  12421. newObj = {
  12422. root: newObj,
  12423. theme: "fresh-blue",
  12424. template: "default"
  12425. };
  12426. }
  12427. if (_typeof(newObj.root) !== "object" || newObj.root === null || newObj.root.length == 0) {
  12428. newObj.root = {
  12429. data: {
  12430. id: Object(__WEBPACK_IMPORTED_MODULE_0_vue_kityminder_gg_src_utils_index_js__["a" /* generateMixed */])(12),
  12431. text: this.$L('默认节点')
  12432. },
  12433. children: []
  12434. };
  12435. }
  12436. if (typeof newObj.theme !== "string") {
  12437. newObj.theme = "fresh-blue";
  12438. }
  12439. if (typeof newObj.template !== "string") {
  12440. newObj.template = "default";
  12441. }
  12442. this.rendData();
  12443. },
  12444. deep: true,
  12445. immediate: true
  12446. }
  12447. }
  12448. });
  12449. /***/ }),
  12450. /***/ 374:
  12451. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  12452. "use strict";
  12453. /* unused harmony export parseTime */
  12454. /* unused harmony export formatTime */
  12455. /* unused harmony export getQueryObject */
  12456. /* unused harmony export byteLength */
  12457. /* unused harmony export cleanArray */
  12458. /* unused harmony export param */
  12459. /* unused harmony export param2Obj */
  12460. /* unused harmony export html2Text */
  12461. /* unused harmony export objectMerge */
  12462. /* unused harmony export toggleClass */
  12463. /* unused harmony export getTime */
  12464. /* unused harmony export debounce */
  12465. /* unused harmony export deepClone */
  12466. /* unused harmony export uniqueArr */
  12467. /* unused harmony export createUniqueString */
  12468. /* unused harmony export getParameter */
  12469. /* unused harmony export getRequest */
  12470. /* harmony export (immutable) */ __webpack_exports__["a"] = generateMixed;
  12471. /* unused harmony export getpostionX */
  12472. /**
  12473. * Created by jiachenpan on 16/11/18.
  12474. */
  12475. function parseTime(time, cFormat) {
  12476. if (arguments.length === 0) {
  12477. return null
  12478. }
  12479. const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  12480. let date
  12481. if (typeof time === 'object') {
  12482. date = time
  12483. } else {
  12484. if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
  12485. time = parseInt(time)
  12486. }
  12487. if ((typeof time === 'number') && (time.toString().length === 10)) {
  12488. time = time * 1000
  12489. }
  12490. date = new Date(time)
  12491. }
  12492. const formatObj = {
  12493. y: date.getFullYear(),
  12494. m: date.getMonth() + 1,
  12495. d: date.getDate(),
  12496. h: date.getHours(),
  12497. i: date.getMinutes(),
  12498. s: date.getSeconds(),
  12499. a: date.getDay()
  12500. }
  12501. const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
  12502. let value = formatObj[key]
  12503. // Note: getDay() returns 0 on Sunday
  12504. if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
  12505. if (result.length > 0 && value < 10) {
  12506. value = '0' + value
  12507. }
  12508. return value || 0
  12509. })
  12510. return time_str
  12511. }
  12512. function formatTime(time, option) {
  12513. time = +time * 1000
  12514. const d = new Date(time)
  12515. const now = Date.now()
  12516. const diff = (now - d) / 1000
  12517. if (diff < 30) {
  12518. return '刚刚'
  12519. } else if (diff < 3600) {
  12520. // less 1 hour
  12521. return Math.ceil(diff / 60) + '分钟前'
  12522. } else if (diff < 3600 * 24) {
  12523. return Math.ceil(diff / 3600) + '小时前'
  12524. } else if (diff < 3600 * 24 * 2) {
  12525. return '1天前'
  12526. }
  12527. if (option) {
  12528. return parseTime(time, option)
  12529. } else {
  12530. return (
  12531. d.getMonth() +
  12532. 1 +
  12533. '月' +
  12534. d.getDate() +
  12535. '日' +
  12536. d.getHours() +
  12537. '时' +
  12538. d.getMinutes() +
  12539. '分'
  12540. )
  12541. }
  12542. }
  12543. // 格式化时间
  12544. function getQueryObject(url) {
  12545. url = url == null ? window.location.href : url
  12546. const search = url.substring(url.lastIndexOf('?') + 1)
  12547. const obj = {}
  12548. const reg = /([^?&=]+)=([^?&=]*)/g
  12549. search.replace(reg, (rs, $1, $2) => {
  12550. const name = decodeURIComponent($1)
  12551. let val = decodeURIComponent($2)
  12552. val = String(val)
  12553. obj[name] = val
  12554. return rs
  12555. })
  12556. return obj
  12557. }
  12558. /**
  12559. * @param {Sting} input value
  12560. * @returns {number} output value
  12561. */
  12562. function byteLength(str) {
  12563. // returns the byte length of an utf8 string
  12564. let s = str.length
  12565. for (var i = str.length - 1; i >= 0; i--) {
  12566. const code = str.charCodeAt(i)
  12567. if (code > 0x7f && code <= 0x7ff) s++
  12568. else if (code > 0x7ff && code <= 0xffff) s += 2
  12569. if (code >= 0xDC00 && code <= 0xDFFF) i--
  12570. }
  12571. return s
  12572. }
  12573. function cleanArray(actual) {
  12574. const newArray = []
  12575. for (let i = 0; i < actual.length; i++) {
  12576. if (actual[i]) {
  12577. newArray.push(actual[i])
  12578. }
  12579. }
  12580. return newArray
  12581. }
  12582. function param(json) {
  12583. if (!json) return ''
  12584. return cleanArray(
  12585. Object.keys(json).map(key => {
  12586. if (json[key] === undefined) return ''
  12587. return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
  12588. })
  12589. ).join('&')
  12590. }
  12591. function param2Obj(url) {
  12592. const search = url.split('?')[1]
  12593. if (!search) {
  12594. return {}
  12595. }
  12596. return JSON.parse(
  12597. '{"' +
  12598. decodeURIComponent(search)
  12599. .replace(/"/g, '\\"')
  12600. .replace(/&/g, '","')
  12601. .replace(/=/g, '":"') +
  12602. '"}'
  12603. )
  12604. }
  12605. function html2Text(val) {
  12606. const div = document.createElement('div')
  12607. div.innerHTML = val
  12608. return div.textContent || div.innerText
  12609. }
  12610. function objectMerge(target, source) {
  12611. /* Merges two objects,
  12612. giving the last one precedence */
  12613. if (typeof target !== 'object') {
  12614. target = {}
  12615. }
  12616. if (Array.isArray(source)) {
  12617. return source.slice()
  12618. }
  12619. Object.keys(source).forEach(property => {
  12620. const sourceProperty = source[property]
  12621. if (typeof sourceProperty === 'object') {
  12622. target[property] = objectMerge(target[property], sourceProperty)
  12623. } else {
  12624. target[property] = sourceProperty
  12625. }
  12626. })
  12627. return target
  12628. }
  12629. function toggleClass(element, className) {
  12630. if (!element || !className) {
  12631. return
  12632. }
  12633. let classString = element.className
  12634. const nameIndex = classString.indexOf(className)
  12635. if (nameIndex === -1) {
  12636. classString += '' + className
  12637. } else {
  12638. classString =
  12639. classString.substr(0, nameIndex) +
  12640. classString.substr(nameIndex + className.length)
  12641. }
  12642. element.className = classString
  12643. }
  12644. const pickerOptions = [
  12645. {
  12646. text: '今天',
  12647. onClick(picker) {
  12648. const end = new Date()
  12649. const start = new Date(new Date().toDateString())
  12650. end.setTime(start.getTime())
  12651. picker.$emit('pick', [start, end])
  12652. }
  12653. },
  12654. {
  12655. text: '最近一周',
  12656. onClick(picker) {
  12657. const end = new Date(new Date().toDateString())
  12658. const start = new Date()
  12659. start.setTime(end.getTime() - 3600 * 1000 * 24 * 7)
  12660. picker.$emit('pick', [start, end])
  12661. }
  12662. },
  12663. {
  12664. text: '最近一个月',
  12665. onClick(picker) {
  12666. const end = new Date(new Date().toDateString())
  12667. const start = new Date()
  12668. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
  12669. picker.$emit('pick', [start, end])
  12670. }
  12671. },
  12672. {
  12673. text: '最近三个月',
  12674. onClick(picker) {
  12675. const end = new Date(new Date().toDateString())
  12676. const start = new Date()
  12677. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
  12678. picker.$emit('pick', [start, end])
  12679. }
  12680. }
  12681. ]
  12682. /* unused harmony export pickerOptions */
  12683. function getTime(type) {
  12684. if (type === 'start') {
  12685. return new Date().getTime() - 3600 * 1000 * 24 * 90
  12686. } else {
  12687. return new Date(new Date().toDateString())
  12688. }
  12689. }
  12690. function debounce(func, wait, immediate) {
  12691. let timeout, args, context, timestamp, result
  12692. const later = function() {
  12693. // 据上一次触发时间间隔
  12694. const last = +new Date() - timestamp
  12695. // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
  12696. if (last < wait && last > 0) {
  12697. timeout = setTimeout(later, wait - last)
  12698. } else {
  12699. timeout = null
  12700. // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
  12701. if (!immediate) {
  12702. result = func.apply(context, args)
  12703. if (!timeout) context = args = null
  12704. }
  12705. }
  12706. }
  12707. return function(...args) {
  12708. context = this
  12709. timestamp = +new Date()
  12710. const callNow = immediate && !timeout
  12711. // 如果延时不存在,重新设定延时
  12712. if (!timeout) timeout = setTimeout(later, wait)
  12713. if (callNow) {
  12714. result = func.apply(context, args)
  12715. context = args = null
  12716. }
  12717. return result
  12718. }
  12719. }
  12720. /**
  12721. * This is just a simple version of deep copy
  12722. * Has a lot of edge cases bug
  12723. * If you want to use a perfect deep copy, use lodash's _.cloneDeep
  12724. */
  12725. function deepClone(source) {
  12726. if (!source && typeof source !== 'object') {
  12727. throw new Error('error arguments', 'shallowClone')
  12728. }
  12729. const targetObj = source.constructor === Array ? [] : {}
  12730. Object.keys(source).forEach(keys => {
  12731. if (source[keys] && typeof source[keys] === 'object') {
  12732. targetObj[keys] = deepClone(source[keys])
  12733. } else {
  12734. targetObj[keys] = source[keys]
  12735. }
  12736. })
  12737. return targetObj
  12738. }
  12739. function uniqueArr(arr) {
  12740. return Array.from(new Set(arr))
  12741. }
  12742. function createUniqueString() {
  12743. const timestamp = +new Date() + ''
  12744. const randomNum = parseInt((1 + Math.random()) * 65536) + ''
  12745. return (+(randomNum + timestamp)).toString(32)
  12746. }
  12747. // export default{
  12748. // getParameter: function (name) {
  12749. // let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
  12750. // let r = window.location.search.substr(1).match(reg)
  12751. // if (r != null) return unescape(r[2])
  12752. // return ''
  12753. // },
  12754. // isEmpty: function (str) {
  12755. // let result = false
  12756. // if (str === null ||
  12757. // typeof str === 'undefined' ||
  12758. // str === ''
  12759. // ) {
  12760. // result = true
  12761. // }
  12762. // return result
  12763. // }
  12764. // }
  12765. function getParameter(variable){
  12766. console.log(window.location.href)
  12767. var query = window.location.hash.substring(1);
  12768. console.log(query)
  12769. var vars = query.split("&");
  12770. for (var i=0;i<vars.length;i++) {
  12771. var pair = vars[i].split("=");
  12772. if(pair[0] == variable){return pair[1];}
  12773. }
  12774. return(false);
  12775. }
  12776. function getRequest () {
  12777. let url=window.location.hash;
  12778. let theRequest = new Object()
  12779. if (url.indexOf('?') != -1) {
  12780. let str = url.split('?')[1]
  12781. let strs = str.split('&')
  12782. for (var i = 0; i < strs.length; i++) {
  12783. theRequest[strs[i].split('=')[0]] = unescape(strs[i].split('=')[1])
  12784. }
  12785. }
  12786. return theRequest
  12787. }
  12788. // if (getRequest(window.location.hash).JID) {
  12789. // localStorage.setItem('__JID__', getRequest(window.location.hash).JID)
  12790. // }
  12791. /* 随机数 */
  12792. let chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
  12793. function generateMixed(n) {
  12794. var res = "";
  12795. for(var i = 0; i < n; i++) {
  12796. var id = Math.ceil(Math.random() * 35);
  12797. res += chars[id];
  12798. }
  12799. return res;
  12800. }
  12801. function getpostionX(n) {
  12802. let numb='';
  12803. switch (n){
  12804. case 1:
  12805. return numb=50;
  12806. break;
  12807. case 2:
  12808. return numb=35;
  12809. break;
  12810. case 3:
  12811. return numb=20;
  12812. break;
  12813. default:
  12814. return numb=10;
  12815. break;
  12816. }
  12817. }
  12818. /***/ }),
  12819. /***/ 375:
  12820. /***/ (function(module, exports, __webpack_require__) {
  12821. // style-loader: Adds some css to the DOM by adding a <style> tag
  12822. // load the styles
  12823. var content = __webpack_require__(376);
  12824. if(typeof content === 'string') content = [[module.i, content, '']];
  12825. // Prepare cssTransformation
  12826. var transform;
  12827. var options = {}
  12828. options.transform = transform
  12829. // add the styles to the DOM
  12830. var update = __webpack_require__(50)(content, options);
  12831. if(content.locals) module.exports = content.locals;
  12832. // Hot Module Replacement
  12833. if(false) {
  12834. // When the styles change, update the <style> tags
  12835. if(!content.locals) {
  12836. module.hot.accept("!!../../../css-loader/index.js!./minder.css", function() {
  12837. var newContent = require("!!../../../css-loader/index.js!./minder.css");
  12838. if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
  12839. update(newContent);
  12840. });
  12841. }
  12842. // When the module is disposed, remove the <style> tags
  12843. module.hot.dispose(function() { update(); });
  12844. }
  12845. /***/ }),
  12846. /***/ 376:
  12847. /***/ (function(module, exports, __webpack_require__) {
  12848. var escape = __webpack_require__(287);
  12849. exports = module.exports = __webpack_require__(0)(false);
  12850. // imports
  12851. // module
  12852. exports.push([module.i, ".km-editor {\r\n\toverflow: hidden;\r\n\tz-index: 2;\r\n\theight: 100%;\r\n\twidth: 100%\r\n}\r\n\r\n.km-editor>.mask {\r\n\tdisplay: block;\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\tright: 0;\r\n\ttop: 0;\r\n\tbottom: 0;\r\n\tbackground-color: transparent\r\n}\r\n\r\n.km-editor>.receiver {\r\n\tposition: absolute;\r\n\tbackground: #fff;\r\n\toutline: 0;\r\n\tbox-shadow: 0 0 20px rgba(0, 0, 0, .5);\r\n\tleft: 0;\r\n\ttop: 0;\r\n\tpadding: 3px 5px;\r\n\tmargin-left: -3px;\r\n\tmargin-top: -5px;\r\n\tmax-width: 300px;\r\n\twidth: auto;\r\n\tfont-size: 14px;\r\n\tline-height: 1.4em;\r\n\tmin-height: 1.4em;\r\n\tbox-sizing: border-box;\r\n\toverflow: hidden;\r\n\tword-break: break-all;\r\n\tword-wrap: break-word;\r\n\tborder: none;\r\n\t-webkit-user-select: text;\r\n\tpointer-events: none;\r\n\topacity: 0;\r\n\tz-index: -1000\r\n}\r\n\r\n.km-editor>.receiver.debug {\r\n\topacity: 1;\r\n\toutline: 1px solid green;\r\n\tbackground: 0 0;\r\n\tz-index: 0\r\n}\r\n\r\n.km-editor>.receiver.input {\r\n\tpointer-events: all;\r\n\topacity: 1;\r\n\tz-index: 999;\r\n\tbackground: #fff;\r\n\toutline: 0\r\n}\r\n\r\ndiv.minder-editor-container {\r\n\tposition: absolute;\r\n\tbottom: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\ttop: 0;\r\n\tfont-family: Arial, \"Hiragino Sans GB\", \"Microsoft YaHei\", \"WenQuanYi Micro Hei\", sans-serif\r\n}\r\n\r\n.minder-editor {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tbottom: 0\r\n}\r\n\r\n.minder-viewer {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tbottom: 0\r\n}\r\n\r\n.control-panel {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\twidth: 250px;\r\n\tbottom: 0;\r\n\tborder-left: 1px solid #ccc\r\n}\r\n\r\n.minder-divider {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 250px;\r\n\tbottom: 0;\r\n\twidth: 2px;\r\n\tbackground-color: #fbfbfb;\r\n\tcursor: ew-resize\r\n}\r\n\r\n.panel-body {\r\n\tpadding: 10px\r\n}\r\n\r\n.upload-image {\r\n\twidth: .1px;\r\n\theight: .1px;\r\n\topacity: 0;\r\n\toverflow: hidden;\r\n\tposition: absolute;\r\n\tz-index: -1\r\n}\r\n\r\n.top-tab .nav-tabs {\r\n\tbackground-color: #e1e1e1;\r\n\tborder: 0;\r\n\theight: 32px\r\n}\r\n\r\n.top-tab .nav-tabs li {\r\n\tmargin: 0\r\n}\r\n\r\n.top-tab .nav-tabs li a {\r\n\tmargin: 0;\r\n\tborder: 0;\r\n\tpadding: 6px 15px;\r\n\tborder-radius: 0;\r\n\tvertical-align: middle\r\n}\r\n\r\n.top-tab .nav-tabs li a:focus,\r\n.top-tab .nav-tabs li a:hover {\r\n\tbackground: inherit;\r\n\tborder: 0\r\n}\r\n\r\n.top-tab .nav-tabs li.active a {\r\n\tborder: 0;\r\n\tbackground-color: #fff\r\n}\r\n\r\n.top-tab .nav-tabs li.active a:focus,\r\n.top-tab .nav-tabs li.active a:hover {\r\n\tborder: 0\r\n}\r\n\r\n.top-tab .tab-content {\r\n\theight: 60px;\r\n\tbackground-color: #fff;\r\n\tborder-bottom: 1px solid #dbdbdb\r\n}\r\n\r\n.top-tab .tab-pane {\r\n\tfont-size: 0\r\n}\r\n\r\n.km-btn-group {\r\n\tdisplay: inline-block;\r\n\tmargin: 5px 0;\r\n\tpadding: 0 5px;\r\n\tvertical-align: middle;\r\n\tborder-right: 1px dashed #eee\r\n}\r\n\r\n.km-btn-item {\r\n\tdisplay: inline-block;\r\n\tmargin: 0 3px;\r\n\tfont-size: 0;\r\n\tcursor: default\r\n}\r\n\r\n.km-btn-item[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.km-btn-item[disabled]:active,\r\n.km-btn-item[disabled]:hover {\r\n\tbackground-color: #fff\r\n}\r\n\r\n.km-btn-item .km-btn-icon {\r\n\tdisplay: inline-block;\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat;\r\n\tbackground-position: 0 20px;\r\n\twidth: 20px;\r\n\theight: 20px;\r\n\tpadding: 2px;\r\n\tmargin: 1px;\r\n\tvertical-align: middle\r\n}\r\n\r\n.km-btn-item .km-btn-caption {\r\n\tdisplay: inline-block;\r\n\tfont-size: 12px;\r\n\tvertical-align: middle\r\n}\r\n\r\n.km-btn-item:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.km-btn-item:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.do-group {\r\n\twidth: 38px\r\n}\r\n\r\n.undo .km-btn-icon {\r\n\tbackground-position: 0 -1240px\r\n}\r\n\r\n.redo .km-btn-icon {\r\n\tbackground-position: 0 -1220px\r\n}\r\n\r\n.append-group {\r\n\twidth: 212px\r\n}\r\n\r\n.append-child-node .km-btn-icon {\r\n\tbackground-position: 0 0\r\n}\r\n\r\n.append-sibling-node .km-btn-icon {\r\n\tbackground-position: 0 -20px\r\n}\r\n\r\n.append-parent-node .km-btn-icon {\r\n\tbackground-position: 0 -40px\r\n}\r\n\r\n.arrange-group {\r\n\twidth: 64px\r\n}\r\n\r\n.arrange-up .km-btn-icon {\r\n\tbackground-position: 0 -280px\r\n}\r\n\r\n.arrange-down .km-btn-icon {\r\n\tbackground-position: 0 -300px\r\n}\r\n\r\n.operation-group {\r\n\twidth: 64px\r\n}\r\n\r\n.edit-node .km-btn-icon {\r\n\tbackground-position: 0 -60px\r\n}\r\n\r\n.remove-node .km-btn-icon {\r\n\tbackground-position: 0 -80px\r\n}\r\n\r\n.btn-group-vertical {\r\n\tvertical-align: middle;\r\n\tmargin: 5px\r\n}\r\n\r\n.btn-group-vertical .hyperlink,\r\n.btn-group-vertical .hyperlink-caption {\r\n\twidth: 40px;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tborder: none !important;\r\n\tborder-radius: 0 !important\r\n}\r\n\r\n.btn-group-vertical .hyperlink-caption:hover,\r\n.btn-group-vertical .hyperlink:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .hyperlink-caption:active,\r\n.btn-group-vertical .hyperlink:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.btn-group-vertical .hyperlink-caption.active,\r\n.btn-group-vertical .hyperlink.active {\r\n\tbox-shadow: none;\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .hyperlink {\r\n\theight: 25px;\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat center -100px\r\n}\r\n\r\n.btn-group-vertical .hyperlink-caption {\r\n\theight: 20px\r\n}\r\n\r\n.btn-group-vertical .hyperlink-caption .caption {\r\n\tfont-size: 12px\r\n}\r\n\r\n.open>.dropdown-toggle.btn-default {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .image-btn,\r\n.btn-group-vertical .image-btn-caption {\r\n\twidth: 40px;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tborder: none !important;\r\n\tborder-radius: 0 !important\r\n}\r\n\r\n.btn-group-vertical .image-btn-caption:hover,\r\n.btn-group-vertical .image-btn:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .image-btn-caption:active,\r\n.btn-group-vertical .image-btn:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.btn-group-vertical .image-btn-caption.active,\r\n.btn-group-vertical .image-btn.active {\r\n\tbox-shadow: none;\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .image-btn {\r\n\theight: 25px;\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat center -125px\r\n}\r\n\r\n.btn-group-vertical .image-btn-caption {\r\n\theight: 20px\r\n}\r\n\r\n.btn-group-vertical .image-btn-caption .caption {\r\n\tfont-size: 12px\r\n}\r\n\r\n.image-preview {\r\n\tdisplay: block;\r\n\tmax-width: 50%\r\n}\r\n\r\n.modal-body .tab-pane {\r\n\tfont-size: inherit;\r\n\tpadding-top: 15px\r\n}\r\n\r\n.search-result {\r\n\tmargin-top: 15px;\r\n\theight: 370px;\r\n\toverflow: hidden\r\n}\r\n\r\n.search-result ul {\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tlist-style: none;\r\n\tclear: both;\r\n\theight: 100%;\r\n\toverflow-x: hidden;\r\n\toverflow-y: auto\r\n}\r\n\r\n.search-result ul li {\r\n\tlist-style: none;\r\n\tfloat: left;\r\n\tdisplay: block;\r\n\twidth: 130px;\r\n\theight: 130px;\r\n\tline-height: 130px;\r\n\tmargin: 6px;\r\n\tpadding: 0;\r\n\tfont-size: 12px;\r\n\tposition: relative;\r\n\tvertical-align: top;\r\n\ttext-align: center;\r\n\toverflow: hidden;\r\n\tcursor: pointer;\r\n\tborder: 2px solid #fcfcfc\r\n}\r\n\r\n.search-result ul li.selected {\r\n\tborder: 2px solid #fc8383\r\n}\r\n\r\n.search-result ul li img {\r\n\tmax-width: 126px;\r\n\tmax-height: 130px;\r\n\tvertical-align: middle\r\n}\r\n\r\n.search-result ul li span {\r\n\tdisplay: block;\r\n\tposition: absolute;\r\n\tbottom: 0;\r\n\theight: 20px;\r\n\tbackground: rgba(0, 0, 0, .5);\r\n\tleft: 0;\r\n\tright: 0;\r\n\tcolor: #fff;\r\n\tline-height: 20px;\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\tword-break: break-all;\r\n\twhite-space: nowrap;\r\n\topacity: 0;\r\n\t-ms-transform: translate(0, 20px);\r\n\ttransform: translate(0, 20px);\r\n\ttransition: all .2s ease\r\n}\r\n\r\n.search-result ul li:hover span {\r\n\topacity: 1;\r\n\t-ms-transform: translate(0, 0);\r\n\ttransform: translate(0, 0)\r\n}\r\n\r\n@media (min-width:768px) {\r\n\t.form-inline .form-control {\r\n\t\twidth: 422px\r\n\t}\r\n}\r\n\r\n.btn-group-vertical {\r\n\tvertical-align: top;\r\n\tmargin: 5px\r\n}\r\n\r\n.btn-group-vertical.note-btn-group {\r\n\tborder-right: 1px dashed #eee;\r\n\tpadding-right: 5px\r\n}\r\n\r\n.btn-group-vertical .note-btn,\r\n.btn-group-vertical .note-btn-caption {\r\n\twidth: 40px;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tborder: none !important;\r\n\tborder-radius: 0 !important\r\n}\r\n\r\n.btn-group-vertical .note-btn-caption:hover,\r\n.btn-group-vertical .note-btn:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .note-btn-caption:active,\r\n.btn-group-vertical .note-btn:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.btn-group-vertical .note-btn-caption.active,\r\n.btn-group-vertical .note-btn.active {\r\n\tbox-shadow: none;\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .note-btn {\r\n\theight: 25px;\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat center -1150px\r\n}\r\n\r\n.btn-group-vertical .note-btn-caption {\r\n\theight: 20px\r\n}\r\n\r\n.btn-group-vertical .note-btn-caption .caption {\r\n\tfont-size: 12px\r\n}\r\n\r\n.open>.dropdown-toggle.btn-default {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.gfm-render {\r\n\tfont-size: 12px;\r\n\t-webkit-user-select: text;\r\n\tcolor: #333;\r\n\tline-height: 1.8em\r\n}\r\n\r\n.gfm-render blockquote,\r\n.gfm-render hr,\r\n.gfm-render p,\r\n.gfm-render pre,\r\n.gfm-render table,\r\n.gfm-render ul {\r\n\tmargin: 1em 0;\r\n\tcursor: text\r\n}\r\n\r\n.gfm-render blockquote:first-child:last-child,\r\n.gfm-render hr:first-child:last-child,\r\n.gfm-render p:first-child:last-child,\r\n.gfm-render pre:first-child:last-child,\r\n.gfm-render table:first-child:last-child,\r\n.gfm-render ul:first-child:last-child {\r\n\tmargin: 0\r\n}\r\n\r\n.gfm-render img {\r\n\tmax-width: 100%\r\n}\r\n\r\n.gfm-render a {\r\n\tcolor: #00f\r\n}\r\n\r\n.gfm-render a:hover {\r\n\tcolor: red\r\n}\r\n\r\n.gfm-render blockquote {\r\n\tdisplay: block;\r\n\tborder-left: 4px solid #e4ad91;\r\n\tcolor: #da8e68;\r\n\tpadding-left: 10px;\r\n\tfont-style: italic;\r\n\tmargin-left: 2em\r\n}\r\n\r\n.gfm-render ol,\r\n.gfm-render ul {\r\n\tpadding-left: 3em\r\n}\r\n\r\n.gfm-render table {\r\n\twidth: 100%;\r\n\tborder-collapse: collapse;\r\n\tmargin: 1em 0\r\n}\r\n\r\n.gfm-render table td,\r\n.gfm-render table th {\r\n\tborder: 1px solid #666;\r\n\tpadding: 2px 4px\r\n}\r\n\r\n.gfm-render table th {\r\n\tbackground: rgba(45, 141, 234, .2)\r\n}\r\n\r\n.gfm-render table tr:nth-child(even) td {\r\n\tbackground: rgba(45, 141, 234, .03)\r\n}\r\n\r\n.gfm-render em {\r\n\tcolor: red\r\n}\r\n\r\n.gfm-render del {\r\n\tcolor: #999\r\n}\r\n\r\n.gfm-render pre {\r\n\tbackground: rgba(45, 141, 234, .1);\r\n\tpadding: 5px;\r\n\tborder-radius: 5px;\r\n\tword-break: break-all;\r\n\tword-wrap: break-word\r\n}\r\n\r\n.gfm-render code {\r\n\tbackground: rgba(45, 141, 234, .1);\r\n\tpadding: 0 5px;\r\n\tborder-radius: 3px\r\n}\r\n\r\n.gfm-render pre code {\r\n\tbackground: 0 0\r\n}\r\n\r\n.gfm-render hr {\r\n\tborder: none;\r\n\tborder-top: 1px solid #ccc\r\n}\r\n\r\n.gfm-render .highlight {\r\n\tbackground: #ff0;\r\n\tcolor: red\r\n}\r\n\r\n.km-note {\r\n\twidth: 300px;\r\n\tborder-left: 1px solid #babfcd;\r\n\tpadding: 5px 10px;\r\n\tbackground: #fff;\r\n\tposition: absolute;\r\n\ttop: 92px;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\tleft: auto;\r\n\tz-index: 3\r\n}\r\n\r\n.km-note.panel {\r\n\tmargin: 0;\r\n\tpadding: 0\r\n}\r\n\r\n.km-note.panel .panel-heading h3 {\r\n\tdisplay: inline-block\r\n}\r\n\r\n.km-note.panel .panel-heading .close-note-editor {\r\n\twidth: 15px;\r\n\theight: 15px;\r\n\tdisplay: inline-block;\r\n\tfloat: right\r\n}\r\n\r\n.km-note.panel .panel-heading .close-note-editor:hover {\r\n\tcursor: pointer\r\n}\r\n\r\n.km-note.panel .panel-body {\r\n\tpadding: 0\r\n}\r\n\r\n.km-note .CodeMirror {\r\n\tposition: absolute;\r\n\ttop: 41px;\r\n\tbottom: 0;\r\n\theight: auto;\r\n\tcursor: text;\r\n\tfont-size: 14px;\r\n\tline-height: 1.3em;\r\n\tfont-family: consolas\r\n}\r\n\r\n.km-note-tips {\r\n\tcolor: #ccc;\r\n\tpadding: 3px 8px\r\n}\r\n\r\n#previewer-content {\r\n\tposition: absolute;\r\n\tbackground: #ffd;\r\n\tpadding: 5px 15px;\r\n\tborder-radius: 5px;\r\n\tmax-width: 400px;\r\n\tmax-height: 200px;\r\n\toverflow: auto;\r\n\tz-index: 10;\r\n\tbox-shadow: 0 0 15px rgba(0, 0, 0, .5);\r\n\tword-break: break-all;\r\n\tfont-size: 12px;\r\n\t-webkit-user-select: text;\r\n\tcolor: #333;\r\n\tline-height: 1.8em\r\n}\r\n\r\n#previewer-content blockquote,\r\n#previewer-content hr,\r\n#previewer-content p,\r\n#previewer-content pre,\r\n#previewer-content table,\r\n#previewer-content ul {\r\n\tmargin: 1em 0;\r\n\tcursor: text\r\n}\r\n\r\n#previewer-content blockquote:first-child:last-child,\r\n#previewer-content hr:first-child:last-child,\r\n#previewer-content p:first-child:last-child,\r\n#previewer-content pre:first-child:last-child,\r\n#previewer-content table:first-child:last-child,\r\n#previewer-content ul:first-child:last-child {\r\n\tmargin: 0\r\n}\r\n\r\n#previewer-content img {\r\n\tmax-width: 100%\r\n}\r\n\r\n#previewer-content a {\r\n\tcolor: #00f\r\n}\r\n\r\n#previewer-content a:hover {\r\n\tcolor: red\r\n}\r\n\r\n#previewer-content blockquote {\r\n\tdisplay: block;\r\n\tborder-left: 4px solid #e4ad91;\r\n\tcolor: #da8e68;\r\n\tpadding-left: 10px;\r\n\tfont-style: italic;\r\n\tmargin-left: 2em\r\n}\r\n\r\n#previewer-content ol,\r\n#previewer-content ul {\r\n\tpadding-left: 3em\r\n}\r\n\r\n#previewer-content table {\r\n\twidth: 100%;\r\n\tborder-collapse: collapse;\r\n\tmargin: 1em 0\r\n}\r\n\r\n#previewer-content table td,\r\n#previewer-content table th {\r\n\tborder: 1px solid #666;\r\n\tpadding: 2px 4px\r\n}\r\n\r\n#previewer-content table th {\r\n\tbackground: rgba(45, 141, 234, .2)\r\n}\r\n\r\n#previewer-content table tr:nth-child(even) td {\r\n\tbackground: rgba(45, 141, 234, .03)\r\n}\r\n\r\n#previewer-content em {\r\n\tcolor: red\r\n}\r\n\r\n#previewer-content del {\r\n\tcolor: #999\r\n}\r\n\r\n#previewer-content pre {\r\n\tbackground: rgba(45, 141, 234, .1);\r\n\tpadding: 5px;\r\n\tborder-radius: 5px;\r\n\tword-break: break-all;\r\n\tword-wrap: break-word\r\n}\r\n\r\n#previewer-content code {\r\n\tbackground: rgba(45, 141, 234, .1);\r\n\tpadding: 0 5px;\r\n\tborder-radius: 3px\r\n}\r\n\r\n#previewer-content pre code {\r\n\tbackground: 0 0\r\n}\r\n\r\n#previewer-content hr {\r\n\tborder: none;\r\n\tborder-top: 1px solid #ccc\r\n}\r\n\r\n#previewer-content .highlight {\r\n\tbackground: #ff0;\r\n\tcolor: red\r\n}\r\n\r\n#previewer-content.ng-hide {\r\n\tdisplay: block !important;\r\n\tleft: -99999px !important;\r\n\ttop: -99999px !important\r\n}\r\n\r\n.panel-body {\r\n\tpadding: 10px\r\n}\r\n\r\n.tab-content .km-priority {\r\n\tvertical-align: middle;\r\n\tfont-size: inherit;\r\n\tdisplay: inline-block;\r\n\twidth: 140px;\r\n\tmargin: 5px;\r\n\tborder-right: 1px dashed #eee\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item {\r\n\tmargin: 0 1px;\r\n\tpadding: 1px\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon {\r\n\tbackground: url(" + escape(__webpack_require__(377)) + ") repeat-y;\r\n\tbackground-color: transparent\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-0 {\r\n\tbackground-position: 0 20px\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-1 {\r\n\tbackground-position: 0 0\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-2 {\r\n\tbackground-position: 0 -20px\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-3 {\r\n\tbackground-position: 0 -40px\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-4 {\r\n\tbackground-position: 0 -60px\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-5 {\r\n\tbackground-position: 0 -80px\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-6 {\r\n\tbackground-position: 0 -100px\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-7 {\r\n\tbackground-position: 0 -120px\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-8 {\r\n\tbackground-position: 0 -140px\r\n}\r\n\r\n.tab-content .km-priority .km-priority-item .km-priority-icon.priority-9 {\r\n\tbackground-position: 0 -160px\r\n}\r\n\r\n.tab-content .km-progress {\r\n\tvertical-align: middle;\r\n\tfont-size: inherit;\r\n\tdisplay: inline-block;\r\n\twidth: 140px;\r\n\tmargin: 5px;\r\n\tborder-right: 1px dashed #eee\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item {\r\n\tmargin: 0 1px;\r\n\tpadding: 1px\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon {\r\n\tbackground: url(" + escape(__webpack_require__(378)) + ") repeat-y;\r\n\tbackground-color: transparent\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-0 {\r\n\tbackground-position: 0 20px\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-1 {\r\n\tbackground-position: 0 0\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-2 {\r\n\tbackground-position: 0 -20px\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-3 {\r\n\tbackground-position: 0 -40px\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-4 {\r\n\tbackground-position: 0 -60px\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-5 {\r\n\tbackground-position: 0 -80px\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-6 {\r\n\tbackground-position: 0 -100px\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-7 {\r\n\tbackground-position: 0 -120px\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-8 {\r\n\tbackground-position: 0 -140px\r\n}\r\n\r\n.tab-content .km-progress .km-progress-item .km-progress-icon.progress-9 {\r\n\tbackground-position: 0 -160px\r\n}\r\n\r\n.resource-editor {\r\n\tvertical-align: middle;\r\n\tdisplay: inline-block;\r\n\tmargin: 5px\r\n}\r\n\r\n.resource-editor .input-group,\r\n.resource-editor .km-resource {\r\n\tfont-size: 12px\r\n}\r\n\r\n.resource-editor .input-group {\r\n\theight: 20px;\r\n\twidth: 168px\r\n}\r\n\r\n.resource-editor .resource-dropdown {\r\n\tposition: relative;\r\n\twidth: 168px;\r\n\tborder: 1px solid #ccc;\r\n\tmargin-top: -1px;\r\n\tborder-bottom-right-radius: 4px;\r\n\tborder-bottom-left-radius: 4px\r\n}\r\n\r\n.resource-editor .resource-dropdown .km-resource {\r\n\tposition: absolute;\r\n\twidth: 154px;\r\n\tmargin-bottom: 3px;\r\n\tpadding: 0;\r\n\tlist-style-type: none;\r\n\toverflow: scroll;\r\n\tmax-height: 500px\r\n}\r\n\r\n.resource-editor .resource-dropdown .km-resource.open {\r\n\tz-index: 3;\r\n\tbackground-color: #fff\r\n}\r\n\r\n.resource-editor .resource-dropdown .km-resource li {\r\n\tdisplay: inline-block;\r\n\tpadding: 1px 2px;\r\n\tborder-radius: 4px;\r\n\tmargin: 2px 3px\r\n}\r\n\r\n.resource-editor .resource-dropdown .km-resource li[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.resource-editor .resource-dropdown .resource-caret {\r\n\tdisplay: block;\r\n\tfloat: right;\r\n\tvertical-align: middle;\r\n\twidth: 12px;\r\n\theight: 24px;\r\n\tpadding: 8px 1px\r\n}\r\n\r\n.resource-editor .resource-dropdown .resource-caret:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.resource-editor .resource-dropdown .resource-caret:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.resource-editor .btn,\r\n.resource-editor input.form-control {\r\n\tfont-size: 12px\r\n}\r\n\r\n.resource-editor input.form-control {\r\n\tpadding: 2px 4px;\r\n\theight: 24px;\r\n\tborder-bottom-left-radius: 0\r\n}\r\n\r\n.resource-editor .input-group-btn {\r\n\tline-height: 24px\r\n}\r\n\r\n.resource-editor .input-group-btn .btn {\r\n\tpadding: 2px 4px;\r\n\theight: 24px;\r\n\tborder-bottom-right-radius: 0\r\n}\r\n\r\n.temp-panel {\r\n\tmargin: 5px 5px 5px 10px;\r\n\tborder-right: 1px dashed #eee;\r\n\tdisplay: inline-block;\r\n\tvertical-align: middle\r\n}\r\n\r\n.temp-list {\r\n\tmin-width: 124px\r\n}\r\n\r\n.temp-item-wrap {\r\n\twidth: 50px;\r\n\theight: 40px;\r\n\tpadding: 0 2px;\r\n\tmargin: 5px;\r\n\tdisplay: inline-block\r\n}\r\n\r\n.temp-item {\r\n\tdisplay: inline-block;\r\n\twidth: 50px;\r\n\theight: 40px;\r\n\tbackground-image: url(" + escape(__webpack_require__(379)) + ");\r\n\tbackground-repeat: no-repeat\r\n}\r\n\r\n.temp-item.default {\r\n\tbackground-position: 0 0\r\n}\r\n\r\n.temp-item.structure {\r\n\tbackground-position: -50px 0\r\n}\r\n\r\n.temp-item.filetree {\r\n\tbackground-position: -100px 0\r\n}\r\n\r\n.temp-item.right {\r\n\tbackground-position: -150px 0\r\n}\r\n\r\n.temp-item.fish-bone {\r\n\tbackground-position: -200px 0\r\n}\r\n\r\n.temp-item.tianpan {\r\n\tbackground-position: -250px 0\r\n}\r\n\r\n.current-temp-item {\r\n\twidth: 74px;\r\n\tpadding: 0 0 0 5px;\r\n\tborder: 1px solid #fff\r\n}\r\n\r\n.current-temp-item:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.current-temp-item[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.current-temp-item .caret {\r\n\tmargin-left: 5px\r\n}\r\n\r\n.temp-item-selected {\r\n\tbackground-color: #87a9da\r\n}\r\n\r\n.theme-panel {\r\n\theight: 42px;\r\n\tmargin: 5px;\r\n\tpadding: 0 5px 0 0;\r\n\tborder-right: 1px dashed #eee;\r\n\tdisplay: inline-block;\r\n\tvertical-align: middle\r\n}\r\n\r\n.theme-list {\r\n\tmin-width: 162px\r\n}\r\n\r\ndiv a.theme-item {\r\n\tdisplay: inline-block;\r\n\twidth: 70px;\r\n\theight: 30px;\r\n\ttext-align: center;\r\n\tline-height: 30px;\r\n\tpadding: 0 5px;\r\n\tfont-size: 12px;\r\n\tcursor: pointer;\r\n\ttext-decoration: none;\r\n\tcolor: #000\r\n}\r\n\r\n.theme-item-selected {\r\n\twidth: 100px;\r\n\tpadding: 6px 7px;\r\n\tborder: 1px solid #fff\r\n}\r\n\r\n.theme-item-selected:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.theme-item-selected .caret {\r\n\tmargin-left: 5px\r\n}\r\n\r\n.theme-item-selected[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.theme-item-wrap {\r\n\tdisplay: inline-block;\r\n\twidth: 80px;\r\n\theight: 40px;\r\n\tpadding: 5px\r\n}\r\n\r\n.theme-item-wrap:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.readjust-layout {\r\n\tdisplay: inline-block;\r\n\tvertical-align: middle;\r\n\tpadding: 0 10px 0 5px;\r\n\tborder-right: 1px dashed #eee\r\n}\r\n\r\n.btn-icon {\r\n\twidth: 25px;\r\n\theight: 25px;\r\n\tmargin-left: 12px;\r\n\tdisplay: block\r\n}\r\n\r\n.btn-label {\r\n\tfont-size: 12px\r\n}\r\n\r\n.btn-wrap {\r\n\twidth: 50px;\r\n\theight: 42px;\r\n\tcursor: pointer;\r\n\tdisplay: inline-block;\r\n\ttext-decoration: none\r\n}\r\n\r\n.btn-wrap[disabled] span {\r\n\topacity: .5\r\n}\r\n\r\n.btn-wrap[disabled] {\r\n\tcursor: default\r\n}\r\n\r\n.btn-wrap[disabled]:hover {\r\n\tbackground-color: transparent\r\n}\r\n\r\n.btn-wrap[disabled]:active {\r\n\tbackground-color: transparent\r\n}\r\n\r\n.btn-wrap:link {\r\n\ttext-decoration: none\r\n}\r\n\r\n.btn-wrap:visited {\r\n\ttext-decoration: none\r\n}\r\n\r\n.btn-wrap:hover {\r\n\tbackground-color: #eff3fa;\r\n\ttext-decoration: none\r\n}\r\n\r\n.btn-wrap:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.reset-layout-icon {\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat;\r\n\tbackground-position: 0 -150px\r\n}\r\n\r\n.style-operator {\r\n\tdisplay: inline-block;\r\n\tvertical-align: middle;\r\n\tpadding: 0 5px;\r\n\tborder-right: 1px dashed #eee\r\n}\r\n\r\n.style-operator .clear-style {\r\n\tvertical-align: middle\r\n}\r\n\r\n.clear-style-icon {\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat;\r\n\tbackground-position: 0 -175px\r\n}\r\n\r\n.s-btn-group-vertical {\r\n\tdisplay: inline-block;\r\n\tvertical-align: middle\r\n}\r\n\r\n.s-btn-icon {\r\n\twidth: 20px;\r\n\theight: 20px;\r\n\tmargin-right: 3px;\r\n\tdisplay: inline-block;\r\n\tvertical-align: middle\r\n}\r\n\r\n.s-btn-label {\r\n\tfont-size: 12px;\r\n\tvertical-align: middle;\r\n\tdisplay: inline-block\r\n}\r\n\r\n.s-btn-wrap {\r\n\tpadding: 0 5px 0 3px;\r\n\tdisplay: inline-block;\r\n\ttext-decoration: none;\r\n\tfont-size: 0\r\n}\r\n\r\n.s-btn-wrap[disabled] span {\r\n\topacity: .5\r\n}\r\n\r\n.s-btn-wrap[disabled] {\r\n\tcursor: default\r\n}\r\n\r\n.s-btn-wrap[disabled]:hover {\r\n\tbackground-color: transparent\r\n}\r\n\r\n.s-btn-wrap[disabled]:active {\r\n\tbackground-color: transparent\r\n}\r\n\r\n.s-btn-wrap:hover {\r\n\tbackground-color: #eff3fa;\r\n\ttext-decoration: none\r\n}\r\n\r\n.s-btn-wrap:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.copy-style-icon {\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat;\r\n\tbackground-position: 0 -200px\r\n}\r\n\r\n.paste-style-wrap {\r\n\tdisplay: block\r\n}\r\n\r\n.paste-style-icon {\r\n\tbackground-position: 0 -220px\r\n}\r\n\r\n.font-operator {\r\n\twidth: 170px;\r\n\tdisplay: inline-block;\r\n\tvertical-align: middle;\r\n\tfont-size: 12px;\r\n\tpadding: 0 5px\r\n}\r\n\r\n.font-operator .font-size-list {\r\n\tdisplay: inline-block;\r\n\tborder: 1px solid #eee;\r\n\tpadding: 2px 4px\r\n}\r\n\r\n.font-operator .font-family-list {\r\n\tdisplay: inline-block;\r\n\tborder: 1px solid #eee;\r\n\tpadding: 2px 4px\r\n}\r\n\r\n.current-font-item a {\r\n\ttext-decoration: none;\r\n\tdisplay: inline-block\r\n}\r\n\r\n.current-font-family {\r\n\twidth: 75px;\r\n\theight: 18px;\r\n\toverflow: hidden;\r\n\tvertical-align: bottom\r\n}\r\n\r\n.current-font-size {\r\n\twidth: 32px;\r\n\theight: 18px;\r\n\toverflow: hidden;\r\n\tvertical-align: bottom\r\n}\r\n\r\n.current-font-item[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.font-item {\r\n\tline-height: 1em;\r\n\ttext-align: left\r\n}\r\n\r\n.font-item-selected {\r\n\tbackground-color: #87a9da\r\n}\r\n\r\n.font-bold,\r\n.font-italics {\r\n\tdisplay: inline-block;\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat;\r\n\tcursor: pointer;\r\n\tmargin: 0 3px\r\n}\r\n\r\n.font-bold:hover,\r\n.font-italics:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.font-bold:active,\r\n.font-italics:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.font-bold[disabled],\r\n.font-italics[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.font-bold {\r\n\tbackground-position: 0 -240px\r\n}\r\n\r\n.font-italics {\r\n\tbackground-position: 0 -260px\r\n}\r\n\r\n.font-bold-selected,\r\n.font-italics-selected {\r\n\tbackground-color: #87a9da\r\n}\r\n\r\n.font-color-wrap {\r\n\tdisplay: inline-block;\r\n\twidth: 30px;\r\n\theight: 22px;\r\n\tmargin: 3px 3px 0 0;\r\n\tborder: 1px #efefef solid;\r\n\tvertical-align: middle;\r\n\tfont-size: 0;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none\r\n}\r\n\r\n.font-color-wrap[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.font-color-wrap .quick-font-color {\r\n\tdisplay: inline-block;\r\n\twidth: 20px;\r\n\theight: 16px;\r\n\tfont-size: 14px;\r\n\tline-height: 16px;\r\n\tvertical-align: top;\r\n\ttext-align: center;\r\n\tcursor: default;\r\n\tcolor: #000\r\n}\r\n\r\n.font-color-wrap .quick-font-color:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.font-color-wrap .quick-font-color:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.font-color-wrap .quick-font-color[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.font-color-wrap .font-color-preview {\r\n\tdisplay: inline-block;\r\n\twidth: 12px;\r\n\theight: 2px;\r\n\tmargin: 0 4px 0;\r\n\tbackground-color: #000\r\n}\r\n\r\n.font-color-wrap .font-color-preview[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.font-color {\r\n\tdisplay: inline-block;\r\n\twidth: 8px;\r\n\theight: 16px\r\n}\r\n\r\n.font-color:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.font-color:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.font-color[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.font-color .caret {\r\n\tmargin-left: -2px;\r\n\tmargin-top: 7px\r\n}\r\n\r\n.bg-color-wrap {\r\n\tdisplay: inline-block;\r\n\twidth: 30px;\r\n\theight: 22px;\r\n\tmargin: 3px 3px 0 0;\r\n\tborder: 1px #efefef solid;\r\n\tvertical-align: middle;\r\n\tfont-size: 0;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none\r\n}\r\n\r\n.bg-color-wrap[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.bg-color-wrap .quick-bg-color {\r\n\tdisplay: inline-block;\r\n\twidth: 20px;\r\n\theight: 16px;\r\n\tfont-size: 14px;\r\n\tline-height: 16px;\r\n\tvertical-align: top;\r\n\ttext-align: center;\r\n\tcursor: default;\r\n\tcolor: #000;\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat center -1260px\r\n}\r\n\r\n.bg-color-wrap .quick-bg-color:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.bg-color-wrap .quick-bg-color:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.bg-color-wrap .quick-bg-color[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.bg-color-wrap .bg-color-preview {\r\n\tdisplay: inline-block;\r\n\twidth: 12px;\r\n\theight: 2px;\r\n\tmargin: 0 4px 0;\r\n\tbackground-color: #fff\r\n}\r\n\r\n.bg-color-wrap .bg-color-preview[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.bg-color {\r\n\tdisplay: inline-block;\r\n\twidth: 8px;\r\n\theight: 16px\r\n}\r\n\r\n.bg-color:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.bg-color:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.bg-color[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.bg-color .caret {\r\n\tmargin-left: -2px;\r\n\tmargin-top: 7px\r\n}\r\n\r\n.btn-group-vertical {\r\n\tvertical-align: middle;\r\n\tmargin: 5px\r\n}\r\n\r\n.btn-group-vertical .expand,\r\n.btn-group-vertical .expand-caption {\r\n\twidth: 40px;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tborder: none !important;\r\n\tborder-radius: 0 !important\r\n}\r\n\r\n.btn-group-vertical .expand-caption:hover,\r\n.btn-group-vertical .expand:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .expand-caption:active,\r\n.btn-group-vertical .expand:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.btn-group-vertical .expand-caption.active,\r\n.btn-group-vertical .expand.active {\r\n\tbox-shadow: none;\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .expand {\r\n\theight: 25px;\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat 0 -995px;\r\n\tbackground-position-x: 50%\r\n}\r\n\r\n.btn-group-vertical .expand-caption {\r\n\theight: 20px\r\n}\r\n\r\n.btn-group-vertical .expand-caption .caption {\r\n\tfont-size: 12px\r\n}\r\n\r\n.btn-group-vertical {\r\n\tvertical-align: middle;\r\n\tmargin: 5px\r\n}\r\n\r\n.btn-group-vertical .select,\r\n.btn-group-vertical .select-caption {\r\n\twidth: 40px;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tborder: none !important;\r\n\tborder-radius: 0 !important\r\n}\r\n\r\n.btn-group-vertical .select-caption:hover,\r\n.btn-group-vertical .select:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .select-caption:active,\r\n.btn-group-vertical .select:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.btn-group-vertical .select-caption.active,\r\n.btn-group-vertical .select.active {\r\n\tbox-shadow: none;\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .select {\r\n\theight: 25px;\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat 7px -1175px\r\n}\r\n\r\n.btn-group-vertical .select-caption {\r\n\theight: 20px\r\n}\r\n\r\n.btn-group-vertical .select-caption .caption {\r\n\tfont-size: 12px\r\n}\r\n\r\n.btn-group-vertical {\r\n\tvertical-align: middle;\r\n\tmargin: 5px\r\n}\r\n\r\n.btn-group-vertical .search,\r\n.btn-group-vertical .search-caption {\r\n\twidth: 40px;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tborder: none !important;\r\n\tborder-radius: 0 !important\r\n}\r\n\r\n.btn-group-vertical .search-caption:hover,\r\n.btn-group-vertical .search:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .search-caption:active,\r\n.btn-group-vertical .search:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.btn-group-vertical .search-caption.active,\r\n.btn-group-vertical .search.active {\r\n\tbox-shadow: none;\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.btn-group-vertical .search {\r\n\theight: 25px;\r\n\tbackground: url(" + escape(__webpack_require__(301)) + ") no-repeat 0 -345px;\r\n\tbackground-position-x: 50%\r\n}\r\n\r\n.btn-group-vertical .search-caption {\r\n\theight: 20px\r\n}\r\n\r\n.btn-group-vertical .search-caption .caption {\r\n\tfont-size: 12px\r\n}\r\n\r\n.search-box {\r\n\tfloat: right;\r\n\tbackground-color: #fff;\r\n\tborder: 1px solid #dbdbdb;\r\n\tposition: relative;\r\n\ttop: 0;\r\n\tz-index: 3;\r\n\twidth: 330px;\r\n\theight: 40px;\r\n\tpadding: 3px 6px;\r\n\topacity: 1\r\n}\r\n\r\n.search-box .prev-and-next-btn,\r\n.search-box .search-input-wrap {\r\n\tfloat: left\r\n}\r\n\r\n.search-box .close-search {\r\n\tfloat: right;\r\n\theight: 16px;\r\n\twidth: 16px;\r\n\tpadding: 1px;\r\n\tborder-radius: 100%;\r\n\tmargin-top: 6px;\r\n\tmargin-right: 10px\r\n}\r\n\r\n.search-box .close-search .glyphicon {\r\n\ttop: -1px\r\n}\r\n\r\n.search-box .close-search:hover {\r\n\tbackground-color: #efefef\r\n}\r\n\r\n.search-box .close-search:active {\r\n\tbackground-color: #999\r\n}\r\n\r\n.search-box .search-input-wrap {\r\n\twidth: 240px\r\n}\r\n\r\n.search-box .prev-and-next-btn {\r\n\tmargin-left: 5px\r\n}\r\n\r\n.search-box .prev-and-next-btn .btn:focus {\r\n\toutline: 0\r\n}\r\n\r\n.search-box .search-addon {\r\n\tbackground-color: #fff\r\n}\r\n\r\n.tool-group {\r\n\tpadding: 0\r\n}\r\n\r\n.tool-group[disabled] {\r\n\topacity: .5\r\n}\r\n\r\n.tool-group .tool-group-item {\r\n\tdisplay: inline-block;\r\n\tborder-radius: 4px\r\n}\r\n\r\n.tool-group .tool-group-item .tool-group-icon {\r\n\twidth: 20px;\r\n\theight: 20px;\r\n\tpadding: 2px;\r\n\tmargin: 1px\r\n}\r\n\r\n.tool-group .tool-group-item:hover {\r\n\tbackground-color: #eff3fa\r\n}\r\n\r\n.tool-group .tool-group-item:active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.tool-group .tool-group-item.active {\r\n\tbackground-color: #c4d0ee\r\n}\r\n\r\n.nav-bar {\r\n\tposition: absolute;\r\n\twidth: 240px;\r\n\theight: 35px;\r\n\tpadding: 5px 0;\r\n\tdisplay: -ms-flexbox;\r\n\tdisplay: flex;\r\n\t-ms-flex-align: center;\r\n\talign-items: center;\r\n\t-ms-flex-pack: space-evenly;\r\n\tjustify-content: space-evenly;\r\n\tleft: 10px;\r\n\tbottom: 10px;\r\n\tbackground: #dc8686;\r\n\tcolor: #fff;\r\n\tborder-radius: 4px;\r\n\tz-index: 10;\r\n\tbox-shadow: 3px 3px 10px rgba(0, 0, 0, .2);\r\n\ttransition: transform .7s .1s ease\r\n}\r\n\r\n.nav-bar .nav-btn {\r\n\twidth: 35px;\r\n\theight: 35px;\r\n\tline-height: 35px;\r\n\ttext-align: center;\r\n\tdisplay: -ms-flexbox;\r\n\tdisplay: flex;\r\n\t-ms-flex-pack: center;\r\n\tjustify-content: center;\r\n\t-ms-flex-align: center;\r\n\talign-items: center\r\n}\r\n\r\n.nav-bar .nav-btn.active .icon,\r\n.nav-bar .nav-btn:hover .icon {\r\n\tfill: #5c94f3\r\n}\r\n\r\n.nav-bar .zoom-in .icon {\r\n\tbackground-position: 0 -730px\r\n}\r\n\r\n.nav-bar .zoom-out .icon {\r\n\tbackground-position: 0 -750px\r\n}\r\n\r\n.nav-bar .hand .icon {\r\n\tbackground-position: 0 -770px;\r\n\twidth: 25px;\r\n\theight: 25px;\r\n\tmargin: 0 auto\r\n}\r\n\r\n.nav-bar .nav-trigger .icon {\r\n\tbackground-position: 0 -845px;\r\n\twidth: 25px;\r\n\theight: 25px;\r\n\tmargin: 0 auto\r\n}\r\n\r\n.nav-bar .zoom-pan {\r\n\twidth: 2px;\r\n\theight: 70px;\r\n\tbox-shadow: 0 1px #e50000;\r\n\tposition: relative;\r\n\tbackground: #fff;\r\n\tmargin: 3px auto;\r\n\toverflow: visible\r\n}\r\n\r\n.nav-bar .zoom-pan .origin {\r\n\tposition: absolute;\r\n\twidth: 20px;\r\n\theight: 8px;\r\n\tleft: -9px;\r\n\tmargin-top: -4px;\r\n\tbackground: 0 0\r\n}\r\n\r\n.nav-bar .zoom-pan .origin:after {\r\n\tcontent: ' ';\r\n\tdisplay: block;\r\n\twidth: 6px;\r\n\theight: 2px;\r\n\tbackground: #fff;\r\n\tleft: 7px;\r\n\ttop: 3px;\r\n\tposition: absolute\r\n}\r\n\r\n.nav-bar .zoom-pan .indicator {\r\n\tposition: absolute;\r\n\twidth: 8px;\r\n\theight: 8px;\r\n\tleft: -3px;\r\n\tbackground: #fff;\r\n\tborder-radius: 100%;\r\n\tmargin-top: -4px\r\n}\r\n\r\n.nav-previewer {\r\n\tbackground: #fff;\r\n\twidth: 140px;\r\n\theight: 120px;\r\n\tposition: absolute;\r\n\tleft: 45px;\r\n\tbottom: 30px;\r\n\tbox-shadow: 0 0 8px rgba(0, 0, 0, .2);\r\n\tborder-radius: 0 2px 2px 0;\r\n\tpadding: 1px;\r\n\tz-index: 9;\r\n\tcursor: crosshair;\r\n\ttransition: transform .7s .1s ease\r\n}\r\n\r\n.nav-previewer.grab {\r\n\tcursor: move;\r\n\tcursor: grabbing\r\n}\r\n", ""]);
  12853. // exports
  12854. /***/ }),
  12855. /***/ 377:
  12856. /***/ (function(module, exports) {
  12857. module.exports = "/images/vendor/vue-kityminder-gg/examples/styles/iconpriority.png?96108cae";
  12858. /***/ }),
  12859. /***/ 378:
  12860. /***/ (function(module, exports) {
  12861. module.exports = "/images/vendor/vue-kityminder-gg/examples/styles/iconprogress.png?be9eedcb";
  12862. /***/ }),
  12863. /***/ 379:
  12864. /***/ (function(module, exports) {
  12865. module.exports = "/images/vendor/vue-kityminder-gg/examples/styles/template.png?5ba8db04";
  12866. /***/ }),
  12867. /***/ 380:
  12868. /***/ (function(module, exports, __webpack_require__) {
  12869. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, module) {
  12870. /**
  12871. * 运行时
  12872. */
  12873. var runtimes = [];
  12874. function assemble(runtime) {
  12875. runtimes.push(runtime);
  12876. }
  12877. function KMEditor(selector) {
  12878. this.selector = selector;
  12879. for (var i = 0; i < runtimes.length; i++) {
  12880. if (typeof runtimes[i] == 'function') {
  12881. runtimes[i].call(this, this);
  12882. }
  12883. }
  12884. }
  12885. KMEditor.assemble = assemble;
  12886. assemble(__webpack_require__(381));
  12887. assemble(__webpack_require__(382));
  12888. assemble(__webpack_require__(384));
  12889. assemble(__webpack_require__(386));
  12890. assemble(__webpack_require__(389));
  12891. assemble(__webpack_require__(393));
  12892. assemble(__webpack_require__(395));
  12893. assemble(__webpack_require__(396));
  12894. assemble(__webpack_require__(397));
  12895. if (window.__minderReadOnly !== true) {
  12896. assemble(__webpack_require__(398));
  12897. assemble(__webpack_require__(399));
  12898. assemble(__webpack_require__(401));
  12899. assemble(__webpack_require__(402));
  12900. assemble(__webpack_require__(403));
  12901. }
  12902. return module.exports = KMEditor;
  12903. }).call(exports, __webpack_require__, exports, module),
  12904. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  12905. /***/ }),
  12906. /***/ 381:
  12907. /***/ (function(module, exports, __webpack_require__) {
  12908. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  12909. * @fileOverview
  12910. *
  12911. * 初始化编辑器的容器
  12912. *
  12913. * @author: techird
  12914. * @copyright: Baidu FEX, 2014
  12915. */
  12916. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  12917. /**
  12918. * 最先执行的 Runtime,初始化编辑器容器
  12919. */
  12920. function ContainerRuntime() {
  12921. var container;
  12922. if (typeof(this.selector) == 'string') {
  12923. container = document.querySelector(this.selector);
  12924. } else {
  12925. container = this.selector;
  12926. }
  12927. if (!container) throw new Error('Invalid selector: ' + this.selector);
  12928. // 这个类名用于给编辑器添加样式
  12929. container.classList.add('km-editor');
  12930. // 暴露容器给其他运行时使用
  12931. this.container = container;
  12932. }
  12933. return module.exports = ContainerRuntime;
  12934. }).call(exports, __webpack_require__, exports, module),
  12935. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  12936. /***/ }),
  12937. /***/ 382:
  12938. /***/ (function(module, exports, __webpack_require__) {
  12939. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  12940. * @fileOverview
  12941. *
  12942. * 编辑器状态机
  12943. *
  12944. * @author: techird
  12945. * @copyright: Baidu FEX, 2014
  12946. */
  12947. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  12948. var Debug = __webpack_require__(313);
  12949. var debug = new Debug('fsm');
  12950. function handlerConditionMatch(condition, when, exit, enter) {
  12951. if (condition.when != when) return false;
  12952. if (condition.enter != '*' && condition.enter != enter) return false;
  12953. if (condition.exit != '*' && condition.exit != exit) return;
  12954. return true;
  12955. }
  12956. function FSM(defaultState) {
  12957. var currentState = defaultState;
  12958. var BEFORE_ARROW = ' - ';
  12959. var AFTER_ARROW = ' -> ';
  12960. var handlers = [];
  12961. /**
  12962. * 状态跳转
  12963. *
  12964. * 会通知所有的状态跳转监视器
  12965. *
  12966. * @param {string} newState 新状态名称
  12967. * @param {any} reason 跳转的原因,可以作为参数传递给跳转监视器
  12968. */
  12969. this.jump = function(newState, reason) {
  12970. // debugger
  12971. if (!reason) throw new Error('Please tell fsm the reason to jump');
  12972. var oldState = currentState;
  12973. var notify = [oldState, newState].concat([].slice.call(arguments, 1));
  12974. // console.log(notify)
  12975. var i, handler;
  12976. // 跳转前
  12977. for (i = 0; i < handlers.length; i++) {
  12978. handler = handlers[i];
  12979. if (handlerConditionMatch(handler.condition, 'before', oldState, newState)) {
  12980. if (handler.apply(null, notify)) return;
  12981. }
  12982. }
  12983. currentState = newState;
  12984. debug.log('[{0}] {1} -> {2}', reason, oldState, newState);
  12985. // 跳转后
  12986. for (i = 0; i < handlers.length; i++) {
  12987. handler = handlers[i];
  12988. if (handlerConditionMatch(handler.condition, 'after', oldState, newState)) {
  12989. handler.apply(null, notify);
  12990. }
  12991. }
  12992. // console.log(currentState)
  12993. return currentState;
  12994. };
  12995. /**
  12996. * 返回当前状态
  12997. * @return {string}
  12998. */
  12999. this.state = function() {
  13000. return currentState;
  13001. };
  13002. /**
  13003. * 添加状态跳转监视器
  13004. *
  13005. * @param {string} condition
  13006. * 监视的时机
  13007. * "* => *" (默认)
  13008. *
  13009. * @param {Function} handler
  13010. * 监视函数,当状态跳转的时候,会接收三个参数
  13011. * * from - 跳转前的状态
  13012. * * to - 跳转后的状态
  13013. * * reason - 跳转的原因
  13014. */
  13015. this.when = function(condition, handler) {
  13016. if (arguments.length == 1) {
  13017. handler = condition;
  13018. condition = '* -> *';
  13019. }
  13020. var when, resolved, exit, enter;
  13021. resolved = condition.split(BEFORE_ARROW);
  13022. if (resolved.length == 2) {
  13023. when = 'before';
  13024. } else {
  13025. resolved = condition.split(AFTER_ARROW);
  13026. if (resolved.length == 2) {
  13027. when = 'after';
  13028. }
  13029. }
  13030. if (!when) throw new Error('Illegal fsm condition: ' + condition);
  13031. exit = resolved[0];
  13032. enter = resolved[1];
  13033. handler.condition = {
  13034. when: when,
  13035. exit: exit,
  13036. enter: enter
  13037. };
  13038. handlers.push(handler);
  13039. };
  13040. }
  13041. function FSMRumtime() {
  13042. this.fsm = new FSM('normal');
  13043. }
  13044. return module.exports = FSMRumtime;
  13045. }).call(exports, __webpack_require__, exports, module),
  13046. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  13047. /***/ }),
  13048. /***/ 383:
  13049. /***/ (function(module, exports, __webpack_require__) {
  13050. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  13051. function format(template, args) {
  13052. if (typeof(args) != 'object') {
  13053. args = [].slice.call(arguments, 1);
  13054. }
  13055. return String(template).replace(/\{(\w+)\}/ig, function(match, $key) {
  13056. return args[$key] || $key;
  13057. });
  13058. }
  13059. return module.exports = format;
  13060. }).call(exports, __webpack_require__, exports, module),
  13061. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  13062. /***/ }),
  13063. /***/ 384:
  13064. /***/ (function(module, exports, __webpack_require__) {
  13065. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  13066. * @fileOverview
  13067. *
  13068. * 脑图示例运行时
  13069. *
  13070. * @author: techird
  13071. * @copyright: Baidu FEX, 2014
  13072. */
  13073. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  13074. var Minder = __webpack_require__(385);
  13075. function MinderRuntime() {
  13076. // 不使用 kityminder 的按键处理,由 ReceiverRuntime 统一处理
  13077. var minder = new Minder({
  13078. enableKeyReceiver: false,
  13079. enableAnimation: true
  13080. });
  13081. // 渲染,初始化
  13082. minder.renderTo(this.selector);
  13083. minder.setTheme(null);
  13084. minder.select(minder.getRoot(), true);
  13085. minder.execCommand('text', '中心主题');
  13086. // 导出给其它 Runtime 使用
  13087. this.minder = minder;
  13088. console.log("minder",this.minder)
  13089. }
  13090. return module.exports = MinderRuntime;
  13091. }).call(exports, __webpack_require__, exports, module),
  13092. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  13093. /***/ }),
  13094. /***/ 385:
  13095. /***/ (function(module, exports, __webpack_require__) {
  13096. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  13097. return module.exports = window.kityminder.Minder;
  13098. }).call(exports, __webpack_require__, exports, module),
  13099. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  13100. /***/ }),
  13101. /***/ 386:
  13102. /***/ (function(module, exports, __webpack_require__) {
  13103. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  13104. * @fileOverview
  13105. *
  13106. * 键盘事件接收/分发器
  13107. *
  13108. * @author: techird
  13109. * @copyright: Baidu FEX, 2014
  13110. */
  13111. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  13112. var key = __webpack_require__(387);
  13113. // var hotbox = require('hotbox');
  13114. function ReceiverRuntime() {
  13115. var fsm = this.fsm;
  13116. var minder = this.minder;
  13117. var me = this;
  13118. // 接收事件的 div
  13119. var element = document.createElement('div');
  13120. element.contentEditable = true;
  13121. /**
  13122. * @Desc: 增加tabindex属性使得element的contenteditable不管是trur还是false都能有focus和blur事件
  13123. * @Editor: Naixor
  13124. * @Date: 2015.09.14
  13125. */
  13126. element.setAttribute('tabindex', -1);
  13127. element.classList.add('receiver');
  13128. element.onkeydown = element.onkeypress = element.onkeyup = dispatchKeyEvent;
  13129. element.addEventListener('compositionstart', dispatchKeyEvent);
  13130. // element.addEventListener('compositionend', dispatchKeyEvent);
  13131. this.container.appendChild(element);
  13132. // receiver 对象
  13133. var receiver = {
  13134. element: element,
  13135. selectAll: function() {
  13136. // 保证有被选中的
  13137. if (!element.innerHTML) element.innerHTML = '&nbsp;';
  13138. var range = document.createRange();
  13139. var selection = window.getSelection();
  13140. range.selectNodeContents(element);
  13141. selection.removeAllRanges();
  13142. selection.addRange(range);
  13143. element.focus();
  13144. },
  13145. /**
  13146. * @Desc: 增加enable和disable方法用于解决热核态的输入法屏蔽问题
  13147. * @Editor: Naixor
  13148. * @Date: 2015.09.14
  13149. */
  13150. enable: function() {
  13151. element.setAttribute("contenteditable", true);
  13152. },
  13153. disable: function() {
  13154. element.setAttribute("contenteditable", false);
  13155. },
  13156. /**
  13157. * @Desc: hack FF下div contenteditable的光标丢失BUG
  13158. * @Editor: Naixor
  13159. * @Date: 2015.10.15
  13160. */
  13161. fixFFCaretDisappeared: function() {
  13162. element.removeAttribute("contenteditable");
  13163. element.setAttribute("contenteditable", "true");
  13164. element.blur();
  13165. element.focus();
  13166. },
  13167. /**
  13168. * 以此事件代替通过mouse事件来判断receiver丢失焦点的事件
  13169. * @editor Naixor
  13170. * @Date 2015-12-2
  13171. */
  13172. onblur: function (handler) {
  13173. element.onblur = handler;
  13174. }
  13175. };
  13176. receiver.selectAll();
  13177. minder.on('beforemousedown', receiver.selectAll);
  13178. minder.on('receiverfocus', receiver.selectAll);
  13179. minder.on('readonly', function() {
  13180. // 屏蔽minder的事件接受,删除receiver和hotbox
  13181. minder.disable();
  13182. editor.receiver.element.parentElement.removeChild(editor.receiver.element);
  13183. editor.hotbox.$container.removeChild(editor.hotbox.$element);
  13184. });
  13185. // 侦听器,接收到的事件会派发给所有侦听器
  13186. var listeners = [];
  13187. // 侦听指定状态下的事件,如果不传 state,侦听所有状态
  13188. receiver.listen = function(state, listener) {
  13189. if (arguments.length == 1) {
  13190. listener = state;
  13191. state = '*';
  13192. }
  13193. listener.notifyState = state;
  13194. listeners.push(listener);
  13195. };
  13196. function dispatchKeyEvent(e) {
  13197. e.is = function(keyExpression) {
  13198. var subs = keyExpression.split('|');
  13199. for (var i = 0; i < subs.length; i++) {
  13200. if (key.is(this, subs[i])) return true;
  13201. }
  13202. return false;
  13203. };
  13204. var listener, jumpState;
  13205. for (var i = 0; i < listeners.length; i++) {
  13206. listener = listeners[i];
  13207. // 忽略不在侦听状态的侦听器
  13208. if (listener.notifyState != '*' && listener.notifyState != fsm.state()) {
  13209. continue;
  13210. }
  13211. /**
  13212. *
  13213. * 对于所有的侦听器,只允许一种处理方式:跳转状态。
  13214. * 如果侦听器确定要跳转,则返回要跳转的状态。
  13215. * 每个事件只允许一个侦听器进行状态跳转
  13216. * 跳转动作由侦听器自行完成(因为可能需要在跳转时传递 reason),返回跳转结果即可。
  13217. * 比如:
  13218. *
  13219. * ```js
  13220. * receiver.listen('normal', function(e) {
  13221. * if (isSomeReasonForJumpState(e)) {
  13222. * return fsm.jump('newstate', e);
  13223. * }
  13224. * });
  13225. * ```
  13226. */
  13227. if (listener.call(null, e)) {
  13228. return;
  13229. }
  13230. }
  13231. }
  13232. this.receiver = receiver;
  13233. }
  13234. return module.exports = ReceiverRuntime;
  13235. }).call(exports, __webpack_require__, exports, module),
  13236. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  13237. /***/ }),
  13238. /***/ 387:
  13239. /***/ (function(module, exports, __webpack_require__) {
  13240. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports) {
  13241. var keymap = __webpack_require__(388);
  13242. var CTRL_MASK = 0x1000;
  13243. var ALT_MASK = 0x2000;
  13244. var SHIFT_MASK = 0x4000;
  13245. function hash(unknown) {
  13246. if (typeof(unknown) == 'string') {
  13247. return hashKeyExpression(unknown);
  13248. }
  13249. return hashKeyEvent(unknown);
  13250. }
  13251. function is(a, b) {
  13252. return a && b && hash(a) == hash(b);
  13253. }
  13254. exports.hash = hash;
  13255. exports.is = is;
  13256. function hashKeyEvent(keyEvent) {
  13257. var hashCode = 0;
  13258. if (keyEvent.ctrlKey || keyEvent.metaKey) {
  13259. hashCode |= CTRL_MASK;
  13260. }
  13261. if (keyEvent.altKey) {
  13262. hashCode |= ALT_MASK;
  13263. }
  13264. if (keyEvent.shiftKey) {
  13265. hashCode |= SHIFT_MASK;
  13266. }
  13267. // Shift, Control, Alt KeyCode ignored.
  13268. if ([16, 17, 18, 91].indexOf(keyEvent.keyCode) === -1) {
  13269. /**
  13270. * 解决浏览器输入法状态下对keyDown的keyCode判断不准确的问题,使用keyIdentifier,
  13271. * 可以解决chrome和safari下的各种问题,其他浏览器依旧有问题,然而那并不影响我们对特
  13272. * 需判断的按键进行判断(比如Space在safari输入法态下就是229,其他的就不是)
  13273. * @editor Naixor
  13274. * @Date 2015-12-2
  13275. */
  13276. if (keyEvent.keyCode === 229 && keyEvent.keyIdentifier) {
  13277. return hashCode |= parseInt(keyEvent.keyIdentifier.substr(2), 16);
  13278. }
  13279. hashCode |= keyEvent.keyCode;
  13280. }
  13281. return hashCode;
  13282. }
  13283. function hashKeyExpression(keyExpression) {
  13284. var hashCode = 0;
  13285. keyExpression.toLowerCase().split(/\s*\+\s*/).forEach(function(name) {
  13286. switch(name) {
  13287. case 'ctrl':
  13288. case 'cmd':
  13289. hashCode |= CTRL_MASK;
  13290. break;
  13291. case 'alt':
  13292. hashCode |= ALT_MASK;
  13293. break;
  13294. case 'shift':
  13295. hashCode |= SHIFT_MASK;
  13296. break;
  13297. default:
  13298. hashCode |= keymap[name];
  13299. }
  13300. });
  13301. return hashCode;
  13302. }
  13303. }).call(exports, __webpack_require__, exports, module),
  13304. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  13305. /***/ }),
  13306. /***/ 388:
  13307. /***/ (function(module, exports, __webpack_require__) {
  13308. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  13309. var keymap = {
  13310. 'Shift': 16,
  13311. 'Control': 17,
  13312. 'Alt': 18,
  13313. 'CapsLock': 20,
  13314. 'BackSpace': 8,
  13315. 'Tab': 9,
  13316. 'Enter': 13,
  13317. 'Esc': 27,
  13318. 'Space': 32,
  13319. 'PageUp': 33,
  13320. 'PageDown': 34,
  13321. 'End': 35,
  13322. 'Home': 36,
  13323. 'Insert': 45,
  13324. 'Left': 37,
  13325. 'Up': 38,
  13326. 'Right': 39,
  13327. 'Down': 40,
  13328. 'Direction': {
  13329. 37: 1,
  13330. 38: 1,
  13331. 39: 1,
  13332. 40: 1
  13333. },
  13334. 'Del': 46,
  13335. 'NumLock': 144,
  13336. 'Cmd': 91,
  13337. 'CmdFF': 224,
  13338. 'F1': 112,
  13339. 'F2': 113,
  13340. 'F3': 114,
  13341. 'F4': 115,
  13342. 'F5': 116,
  13343. 'F6': 117,
  13344. 'F7': 118,
  13345. 'F8': 119,
  13346. 'F9': 120,
  13347. 'F10': 121,
  13348. 'F11': 122,
  13349. 'F12': 123,
  13350. '`': 192,
  13351. '=': 187,
  13352. '-': 189,
  13353. '/': 191,
  13354. '.': 190
  13355. };
  13356. // 小写适配
  13357. for (var key in keymap) {
  13358. if (keymap.hasOwnProperty(key)) {
  13359. keymap[key.toLowerCase()] = keymap[key];
  13360. }
  13361. }
  13362. var aKeyCode = 65;
  13363. var aCharCode = 'a'.charCodeAt(0);
  13364. // letters
  13365. 'abcdefghijklmnopqrstuvwxyz'.split('').forEach(function(letter) {
  13366. keymap[letter] = aKeyCode + (letter.charCodeAt(0) - aCharCode);
  13367. });
  13368. // numbers
  13369. var n = 9;
  13370. do {
  13371. keymap[n.toString()] = n + 48;
  13372. } while (--n);
  13373. module.exports = keymap;
  13374. }).call(exports, __webpack_require__, exports, module),
  13375. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  13376. /***/ }),
  13377. /***/ 389:
  13378. /***/ (function(module, exports, __webpack_require__) {
  13379. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  13380. * @fileOverview
  13381. *
  13382. * 热盒 Runtime
  13383. *
  13384. * @author: techird
  13385. * @copyright: Baidu FEX, 2014
  13386. */
  13387. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  13388. var Hotbox = __webpack_require__(314);
  13389. function HotboxRuntime() {
  13390. var fsm = this.fsm;
  13391. var minder = this.minder;
  13392. var receiver = this.receiver;
  13393. var container = this.container;
  13394. var hotbox = new Hotbox(container);
  13395. hotbox.setParentFSM(fsm);
  13396. fsm.when('normal -> hotbox', function(exit, enter, reason) {
  13397. var node = minder.getSelectedNode();
  13398. var position;
  13399. if (node) {
  13400. var box = node.getRenderBox();
  13401. position = {
  13402. x: box.cx,
  13403. y: box.cy
  13404. };
  13405. }
  13406. hotbox.active('main', position);
  13407. });
  13408. fsm.when('normal -> normal', function(exit, enter, reason, e) {
  13409. if (reason == 'shortcut-handle') {
  13410. var handleResult = hotbox.dispatch(e);
  13411. if (handleResult) {
  13412. e.preventDefault();
  13413. } else {
  13414. minder.dispatchKeyEvent(e);
  13415. }
  13416. }
  13417. });
  13418. fsm.when('modal -> normal', function(exit, enter, reason, e) {
  13419. if (reason == 'import-text-finish') {
  13420. receiver.element.focus();
  13421. }
  13422. });
  13423. this.hotbox = hotbox;
  13424. }
  13425. return module.exports = HotboxRuntime;
  13426. }).call(exports, __webpack_require__, exports, module),
  13427. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  13428. /***/ }),
  13429. /***/ 390:
  13430. /***/ (function(module, exports, __webpack_require__) {
  13431. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  13432. var key = __webpack_require__(319);
  13433. var KeyControl = __webpack_require__(392);
  13434. /**** Dom Utils ****/
  13435. function createElement(name) {
  13436. return document.createElement(name);
  13437. }
  13438. function setElementAttribute(element, name, value) {
  13439. element.setAttribute(name, value);
  13440. }
  13441. function getElementAttribute(element, name) {
  13442. return element.getAttribute(name);
  13443. }
  13444. function addElementClass(element, name) {
  13445. element.classList.add(name);
  13446. }
  13447. function removeElementClass(element, name) {
  13448. element.classList.remove(name);
  13449. }
  13450. function appendChild(parent, child) {
  13451. parent.appendChild(child);
  13452. }
  13453. /*******************/
  13454. var IDLE = HotBox.STATE_IDLE = 'idle';
  13455. var div = 'div';
  13456. /**
  13457. * Simple Formatter
  13458. */
  13459. function format(template, args) {
  13460. if (typeof(args) != 'object') {
  13461. args = [].slice.apply(arguments, 1);
  13462. }
  13463. return String(template).replace(/\{(\w+)\}/g, function(match, name) {
  13464. return args[name] || match;
  13465. });
  13466. }
  13467. /**
  13468. * Hot Box Class
  13469. */
  13470. function HotBox($container) {
  13471. if (typeof($container) == 'string') {
  13472. $container = document.querySelector($container);
  13473. }
  13474. if (!$container || !($container instanceof HTMLElement)) {
  13475. throw new Error('No container or not invalid container for hot box');
  13476. }
  13477. // 创建 HotBox Dom 解构
  13478. var $hotBox = createElement(div);
  13479. addElementClass($hotBox, 'hotbox');
  13480. appendChild($container, $hotBox);
  13481. // 保存 Dom 解构和父容器
  13482. this.$element = $hotBox;
  13483. this.$container = $container;
  13484. // 标示是否是输入法状态
  13485. this.isIME = false;
  13486. /**
  13487. * @Desc: 增加一个browser用于判断浏览器类型,方便解决兼容性问题
  13488. * @Editor: Naixor
  13489. * @Date: 2015.09.14
  13490. */
  13491. this.browser = {
  13492. sg: /se[\s\S]+metasr/.test(navigator.userAgent.toLowerCase())
  13493. };
  13494. /*
  13495. * added by zhangbobell
  13496. * 2015.09.22
  13497. * 增加父状态机,以解决在父 FSM 下状态控制的问题,最好的解决办法是增加一个函数队列
  13498. * 将其中的函数一起执行。//TODO
  13499. * */
  13500. this._parentFSM = {};
  13501. // 记录位置
  13502. this.position = {};
  13503. // 已定义的状态(string => HotBoxState)
  13504. var _states = {};
  13505. // 主状态(HotBoxState)
  13506. var _mainState = null;
  13507. // 当前状态(HotBoxState)
  13508. var _currentState = IDLE;
  13509. // 当前状态堆栈
  13510. var _stateStack = [];
  13511. // 实例引用
  13512. var _this = this;
  13513. var _controler;
  13514. /**
  13515. * Controller: {
  13516. * constructor(hotbox: HotBox),
  13517. * active: () => void
  13518. * }
  13519. */
  13520. function _control(Controller) {
  13521. if (_controler) {
  13522. _controler.active();
  13523. return;
  13524. }
  13525. Controller = Controller || KeyControl;
  13526. _controler = new Controller(_this);
  13527. _controler.active();
  13528. $hotBox.onmousedown = function(e) {
  13529. e.stopPropagation();
  13530. e.preventDefault();
  13531. };
  13532. return _this;
  13533. }
  13534. function _dispatchKey(e) {
  13535. var type = e.type.toLowerCase();
  13536. e.keyHash = key.hash(e);
  13537. e.isKey = function(keyExpression) {
  13538. if (!keyExpression) return false;
  13539. var expressions = keyExpression.split(/\s*\|\s*/);
  13540. while(expressions.length) {
  13541. if (e.keyHash == key.hash(expressions.shift())) return true;
  13542. }
  13543. return false;
  13544. };
  13545. e[type] = true;
  13546. // Boot: keyup and activeKey pressed on IDLE, active main state.
  13547. if (e.keyup && _this.activeKey && e.isKey(_this.activeKey) && _currentState == IDLE && _mainState) {
  13548. _activeState('main', {
  13549. x: $container.clientWidth / 2,
  13550. y: $container.clientHeight / 2
  13551. });
  13552. return;
  13553. }
  13554. var handleState = _currentState == IDLE ? _mainState : _currentState;
  13555. if (handleState) {
  13556. var handleResult = handleState.handleKeyEvent(e);
  13557. if (typeof(_this.onkeyevent) == 'function') {
  13558. e.handleResult = handleResult;
  13559. _this.onkeyevent(e, handleResult);
  13560. }
  13561. return handleResult;
  13562. }
  13563. return null;
  13564. }
  13565. function _addState(name) {
  13566. if (!name) return _currentState;
  13567. if (name == IDLE) {
  13568. throw new Error('Can not define or use the `idle` state.');
  13569. }
  13570. _states[name] = _states[name] || new HotBoxState(this, name);
  13571. if (name == 'main') {
  13572. _mainState = _states[name];
  13573. }
  13574. return _states[name];
  13575. }
  13576. function _activeState(name, position) {
  13577. _this.position = position;
  13578. // 回到 IDLE
  13579. if (name == IDLE) {
  13580. if (_currentState != IDLE) {
  13581. _stateStack.shift().deactive();
  13582. _stateStack = [];
  13583. }
  13584. _currentState = IDLE;
  13585. }
  13586. // 回退一个状态
  13587. else if (name == 'back') {
  13588. if (_currentState != IDLE) {
  13589. _currentState.deactive();
  13590. _stateStack.shift();
  13591. _currentState = _stateStack[0];
  13592. if (_currentState) {
  13593. _currentState.active();
  13594. } else {
  13595. _currentState = 'idle';
  13596. }
  13597. }
  13598. }
  13599. // 切换到具体状态
  13600. else {
  13601. if (_currentState != IDLE) {
  13602. _currentState.deactive();
  13603. }
  13604. var newState = _states[name];
  13605. _stateStack.unshift(newState);
  13606. if (typeof(_this.position) == 'function') {
  13607. position = _this.position(position);
  13608. }
  13609. newState.active(position);
  13610. _currentState = newState;
  13611. }
  13612. }
  13613. function setParentFSM(fsm) {
  13614. _this._parentFSM = fsm;
  13615. }
  13616. function getParentFSM() {
  13617. return _this._parentFSM;
  13618. }
  13619. this.control = _control;
  13620. this.state = _addState;
  13621. this.active = _activeState;
  13622. this.dispatch = _dispatchKey;
  13623. this.setParentFSM = setParentFSM;
  13624. this.getParentFSM = getParentFSM;
  13625. this.activeKey = 'space';
  13626. this.actionKey = 'space';
  13627. }
  13628. /**
  13629. * 表示热盒某个状态,包含这些状态需要的 Dom 对象
  13630. */
  13631. function HotBoxState(hotBox, stateName) {
  13632. var BUTTON_SELECTED_CLASS = 'selected';
  13633. var BUTTON_PRESSED_CLASS = 'pressed';
  13634. var STATE_ACTIVE_CLASS = 'active';
  13635. // 状态容器
  13636. var $state = createElement(div);
  13637. // 四种可见的按钮容器
  13638. var $center = createElement(div);
  13639. var $ring = createElement(div);
  13640. var $ringShape = createElement('div');
  13641. var $top = createElement(div);
  13642. var $bottom = createElement(div);
  13643. // 添加 CSS 类
  13644. addElementClass($state, 'state');
  13645. addElementClass($state, stateName);
  13646. addElementClass($center, 'center');
  13647. addElementClass($ring, 'ring');
  13648. addElementClass($ringShape, 'ring-shape');
  13649. addElementClass($top, 'top');
  13650. addElementClass($bottom, 'bottom');
  13651. // 摆放容器
  13652. appendChild(hotBox.$element, $state);
  13653. appendChild($state, $ringShape);
  13654. appendChild($state, $center);
  13655. appendChild($state, $ring);
  13656. appendChild($state, $top);
  13657. appendChild($state, $bottom);
  13658. // 记住状态名称
  13659. this.name = stateName;
  13660. // 五种按钮:中心,圆环,上栏,下栏,幕后
  13661. var buttons = {
  13662. center: null,
  13663. ring: [],
  13664. top: [],
  13665. bottom: [],
  13666. behind: []
  13667. };
  13668. var allButtons = [];
  13669. var selectedButton = null;
  13670. var pressedButton = null;
  13671. var stateActived = false;
  13672. // 布局,添加按钮后,标记需要布局
  13673. var needLayout = true;
  13674. function layout() {
  13675. var radius = buttons.ring.length * 15;
  13676. layoutRing(radius);
  13677. layoutTop(radius);
  13678. layoutBottom(radius);
  13679. indexPosition();
  13680. needLayout = false;
  13681. function layoutRing(radius) {
  13682. var ring = buttons.ring;
  13683. var step = 2 * Math.PI / ring.length;
  13684. if (buttons.center) {
  13685. buttons.center.indexedPosition = [0, 0];
  13686. }
  13687. $ringShape.style.marginLeft = $ringShape.style.marginTop = -radius + 'px';
  13688. $ringShape.style.width = $ringShape.style.height = (radius + radius) + 'px';
  13689. var $button, angle, x, y;
  13690. for (var i = 0; i < ring.length; i++) {
  13691. $button = ring[i].$button;
  13692. angle = step * i - Math.PI / 2;
  13693. x = radius * Math.cos(angle);
  13694. y = radius * Math.sin(angle);
  13695. ring[i].indexedPosition = [x, y];
  13696. $button.style.left = x + 'px';
  13697. $button.style.top = y + 'px';
  13698. }
  13699. }
  13700. function layoutTop(radius) {
  13701. var xOffset = -$top.clientWidth / 2;
  13702. var yOffset = -radius * 2 - $top.clientHeight / 2;
  13703. $top.style.marginLeft = xOffset + 'px';
  13704. $top.style.marginTop = yOffset + 'px';
  13705. buttons.top.forEach(function(topButton) {
  13706. var $button = topButton.$button;
  13707. topButton.indexedPosition = [xOffset + $button.offsetLeft + $button.clientWidth / 2, yOffset];
  13708. });
  13709. }
  13710. function layoutBottom(radius) {
  13711. var xOffset = -$bottom.clientWidth / 2;
  13712. var yOffset = radius * 2 - $bottom.clientHeight / 2;
  13713. $bottom.style.marginLeft = xOffset + 'px';
  13714. $bottom.style.marginTop = yOffset + 'px';
  13715. buttons.bottom.forEach(function(bottomButton) {
  13716. var $button = bottomButton.$button;
  13717. bottomButton.indexedPosition = [xOffset + $button.offsetLeft + $button.clientWidth / 2, yOffset];
  13718. });
  13719. }
  13720. function indexPosition() {
  13721. var positionedButtons = allButtons.filter(function(button) {
  13722. return button.indexedPosition;
  13723. });
  13724. positionedButtons.forEach(findNeightbour);
  13725. function findNeightbour(button) {
  13726. var neighbor = {};
  13727. var coef = 0;
  13728. var minCoef = {};
  13729. var homePosition = button.indexedPosition;
  13730. var candidatePosition, dx, dy, ds;
  13731. var possible, dir;
  13732. var abs = Math.abs;
  13733. positionedButtons.forEach(function(candidate) {
  13734. if (button == candidate) return;
  13735. candidatePosition = candidate.indexedPosition;
  13736. possible = [];
  13737. dx = candidatePosition[0] - homePosition[0];
  13738. dy = candidatePosition[1] - homePosition[1];
  13739. ds = Math.sqrt(dx * dx + dy * dy);
  13740. if (abs(dx) > 2) {
  13741. possible.push(dx > 0 ? 'right' : 'left');
  13742. possible.push(ds + abs(dy)); // coef for right/left neighbor
  13743. }
  13744. if (abs(dy) > 2) {
  13745. possible.push(dy > 0 ? 'down' : 'up');
  13746. possible.push(ds + abs(dx)); // coef for up/down neighbor
  13747. }
  13748. while (possible.length) {
  13749. dir = possible.shift();
  13750. coef = possible.shift();
  13751. if (!neighbor[dir] || coef < minCoef[dir]) {
  13752. neighbor[dir] = candidate;
  13753. minCoef[dir] = coef;
  13754. }
  13755. }
  13756. });
  13757. button.neighbor = neighbor;
  13758. }
  13759. }
  13760. }
  13761. function alwaysEnable() {
  13762. return true;
  13763. }
  13764. // 为状态创建按钮
  13765. function createButton(option) {
  13766. var $button = createElement(div);
  13767. addElementClass($button, 'button');
  13768. var render = option.render || defaultButtonRender;
  13769. $button.innerHTML = render(format, option);
  13770. switch (option.position) {
  13771. case 'center': appendChild($center, $button); break;
  13772. case 'ring': appendChild($ring, $button); break;
  13773. case 'top': appendChild($top, $button); break;
  13774. case 'bottom': appendChild($bottom, $button); break;
  13775. }
  13776. return {
  13777. action: option.action,
  13778. enable: option.enable || alwaysEnable,
  13779. beforeShow: option.beforeShow,
  13780. key: option.key,
  13781. next: option.next,
  13782. label: option.label,
  13783. data: option.data || null,
  13784. $button: $button
  13785. };
  13786. }
  13787. // 默认按钮渲染
  13788. function defaultButtonRender(format, option) {
  13789. return format('<span class="label">{label}</span><span class="key">{key}</span>', {
  13790. label: option.label,
  13791. key: option.key && option.key.split('|')[0]
  13792. });
  13793. }
  13794. // 为当前状态添加按钮
  13795. this.button = function(option) {
  13796. var button = createButton(option);
  13797. if (option.position == 'center') {
  13798. buttons.center = button;
  13799. } else if (buttons[option.position]) {
  13800. buttons[option.position].push(button);
  13801. }
  13802. allButtons.push(button);
  13803. needLayout = true;
  13804. };
  13805. function activeState(position) {
  13806. position = position || {
  13807. x: hotBox.$container.clientWidth / 2,
  13808. y: hotBox.$container.clientHeight / 2
  13809. };
  13810. if (position) {
  13811. $state.style.left = position.x + 'px';
  13812. $state.style.top = position.y + 'px';
  13813. }
  13814. allButtons.forEach(function(button) {
  13815. var $button = button.$button;
  13816. if ($button) {
  13817. $button.classList[button.enable() ? 'add' : 'remove']('enabled');
  13818. }
  13819. if (button.beforeShow) {
  13820. button.beforeShow();
  13821. }
  13822. });
  13823. addElementClass($state, STATE_ACTIVE_CLASS);
  13824. if (needLayout) {
  13825. layout();
  13826. }
  13827. if (!selectedButton) {
  13828. select(buttons.center || buttons.ring[0] || buttons.top[0] || buttons.bottom[0]);
  13829. }
  13830. stateActived = true;
  13831. }
  13832. function deactiveState() {
  13833. removeElementClass($state, STATE_ACTIVE_CLASS);
  13834. select(null);
  13835. stateActived = false;
  13836. }
  13837. // 激活当前状态
  13838. this.active = activeState;
  13839. // 反激活当前状态
  13840. this.deactive = deactiveState;
  13841. function press(button) {
  13842. if (pressedButton && pressedButton.$button) {
  13843. removeElementClass(pressedButton.$button, BUTTON_PRESSED_CLASS);
  13844. }
  13845. pressedButton = button;
  13846. if (pressedButton && pressedButton.$button) {
  13847. addElementClass(pressedButton.$button, BUTTON_PRESSED_CLASS);
  13848. }
  13849. }
  13850. function select(button) {
  13851. if (selectedButton && selectedButton.$button) {
  13852. if (selectedButton.$button) {
  13853. removeElementClass(selectedButton.$button, BUTTON_SELECTED_CLASS);
  13854. }
  13855. }
  13856. selectedButton = button;
  13857. if (selectedButton && selectedButton.$button) {
  13858. addElementClass(selectedButton.$button, BUTTON_SELECTED_CLASS);
  13859. }
  13860. }
  13861. $state.onmouseup = function(e) {
  13862. if (e.button) return;
  13863. var target = e.target;
  13864. while (target && target != $state) {
  13865. if (target.classList.contains('button')) {
  13866. allButtons.forEach(function(button) {
  13867. if (button.$button == target) {
  13868. execute(button);
  13869. }
  13870. });
  13871. }
  13872. target = target.parentNode;
  13873. }
  13874. };
  13875. this.handleKeyEvent = function(e) {
  13876. var handleResult = null;
  13877. /**
  13878. * @Desc: 搜狗浏览器下esc只触发keyup,因此做兼容性处理
  13879. * @Editor: Naixor
  13880. * @Date: 2015.09.14
  13881. */
  13882. if (hotBox.browser.sg) {
  13883. if (e.isKey('esc')) {
  13884. if (pressedButton) { // 若存在已经按下的按钮,则取消操作
  13885. if (!e.isKey(pressedButton.key)) { // the button is not esc
  13886. press(null);
  13887. }
  13888. } else {
  13889. hotBox.active('back', hotBox.position);
  13890. }
  13891. return 'back';
  13892. };
  13893. };
  13894. if (e.keydown || (hotBox.isIME && e.keyup)) {
  13895. allButtons.forEach(function(button) {
  13896. if (button.enable() && e.isKey(button.key)) {
  13897. if (stateActived || hotBox.hintDeactiveMainState) {
  13898. select(button);
  13899. press(button);
  13900. handleResult = 'buttonpress';
  13901. // 如果是 keyup 事件触发的,因为没有后续的按键事件,所以就直接执行
  13902. if(e.keyup) {
  13903. execute(button);
  13904. handleResult = 'execute';
  13905. return handleResult;
  13906. }
  13907. } else {
  13908. execute(button);
  13909. handleResult = 'execute';
  13910. }
  13911. e.preventDefault();
  13912. e.stopPropagation();
  13913. if (!stateActived && hotBox.hintDeactiveMainState) {
  13914. hotBox.active(stateName, hotBox.position);
  13915. }
  13916. }
  13917. });
  13918. if (stateActived) {
  13919. if (e.isKey('esc')) {
  13920. if (pressedButton) { // 若存在已经按下的按钮,则取消操作
  13921. if (!e.isKey(pressedButton.key)) { // the button is not esc
  13922. press(null);
  13923. }
  13924. } else {
  13925. hotBox.active('back', hotBox.position);
  13926. }
  13927. return 'back';
  13928. }
  13929. ['up', 'down', 'left', 'right'].forEach(function(dir) {
  13930. if (!e.isKey(dir)) return;
  13931. if (!selectedButton) {
  13932. select(buttons.center || buttons.ring[0] || buttons.top[0] || buttons.bottom[0]);
  13933. return;
  13934. }
  13935. var neighbor = selectedButton.neighbor[dir];
  13936. while (neighbor && !neighbor.enable()) {
  13937. neighbor = neighbor.neighbor[dir];
  13938. }
  13939. if (neighbor) {
  13940. select(neighbor);
  13941. }
  13942. handleResult = 'navigate';
  13943. });
  13944. // 若是由 keyup 触发的,则直接执行选中的按钮
  13945. if (e.isKey('space') && e.keyup) {
  13946. execute(selectedButton);
  13947. e.preventDefault();
  13948. e.stopPropagation();
  13949. handleResult = 'execute';
  13950. } else if (e.isKey('space') && selectedButton) {
  13951. press(selectedButton);
  13952. handleResult = 'buttonpress';
  13953. } else if (pressedButton && pressedButton != selectedButton) {
  13954. press(null);
  13955. handleResult = 'selectcancel';
  13956. }
  13957. }
  13958. }
  13959. else if (e.keyup && (stateActived || !hotBox.hintDeactiveMainState)) {
  13960. if (pressedButton) {
  13961. if (e.isKey('space') && selectedButton == pressedButton || e.isKey(pressedButton.key)) {
  13962. execute(pressedButton);
  13963. e.preventDefault();
  13964. e.stopPropagation();
  13965. handleResult = 'execute';
  13966. }
  13967. }
  13968. }
  13969. /*
  13970. * Add by zhangbobell 2015.09.06
  13971. * 增加了下面这一个判断因为 safari 下开启输入法后,所有的 keydown 的 keycode 都为 229,
  13972. * 只能以 keyup 的 keycode 进行判断
  13973. * */
  13974. hotBox.isIME = (e.keyCode == 229 && e.keydown);
  13975. return handleResult;
  13976. };
  13977. function execute(button) {
  13978. if (button) {
  13979. if (!button.enable || button.enable()) {
  13980. if (button.action) button.action(button);
  13981. hotBox.active(button.next || IDLE, hotBox.position);
  13982. }
  13983. press(null);
  13984. select(null);
  13985. }
  13986. }
  13987. }
  13988. module.exports = HotBox;
  13989. }).call(exports, __webpack_require__, exports, module),
  13990. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  13991. /***/ }),
  13992. /***/ 391:
  13993. /***/ (function(module, exports, __webpack_require__) {
  13994. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  13995. var keymap = {
  13996. 'Shift': 16,
  13997. 'Control': 17,
  13998. 'Alt': 18,
  13999. 'CapsLock': 20,
  14000. 'BackSpace': 8,
  14001. 'Tab': 9,
  14002. 'Enter': 13,
  14003. 'Esc': 27,
  14004. 'Space': 32,
  14005. 'PageUp': 33,
  14006. 'PageDown': 34,
  14007. 'End': 35,
  14008. 'Home': 36,
  14009. 'Insert': 45,
  14010. 'Left': 37,
  14011. 'Up': 38,
  14012. 'Right': 39,
  14013. 'Down': 40,
  14014. 'Direction': {
  14015. 37: 1,
  14016. 38: 1,
  14017. 39: 1,
  14018. 40: 1
  14019. },
  14020. 'Delete': 46,
  14021. 'NumLock': 144,
  14022. 'Cmd': 91,
  14023. 'CmdFF': 224,
  14024. 'F1': 112,
  14025. 'F2': 113,
  14026. 'F3': 114,
  14027. 'F4': 115,
  14028. 'F5': 116,
  14029. 'F6': 117,
  14030. 'F7': 118,
  14031. 'F8': 119,
  14032. 'F9': 120,
  14033. 'F10': 121,
  14034. 'F11': 122,
  14035. 'F12': 123,
  14036. '`': 192,
  14037. '=': 187,
  14038. '-': 189,
  14039. '/': 191,
  14040. '.': 190
  14041. };
  14042. // 小写适配
  14043. for (var key in keymap) {
  14044. if (keymap.hasOwnProperty(key)) {
  14045. keymap[key.toLowerCase()] = keymap[key];
  14046. }
  14047. }
  14048. var aKeyCode = 65;
  14049. var aCharCode = 'a'.charCodeAt(0);
  14050. // letters
  14051. 'abcdefghijklmnopqrstuvwxyz'.split('').forEach(function(letter) {
  14052. keymap[letter] = aKeyCode + (letter.charCodeAt(0) - aCharCode);
  14053. });
  14054. // numbers
  14055. var n = 9;
  14056. do {
  14057. keymap[n.toString()] = n + 48;
  14058. } while (n--);
  14059. module.exports = keymap;
  14060. }).call(exports, __webpack_require__, exports, module),
  14061. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  14062. /***/ }),
  14063. /***/ 392:
  14064. /***/ (function(module, exports, __webpack_require__) {
  14065. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  14066. var key = __webpack_require__(319);
  14067. var FOCUS_CLASS = 'hotbox-focus';
  14068. var RECEIVER_CLASS = 'hotbox-key-receiver';
  14069. function KeyControl(hotbox) {
  14070. var _this = this;
  14071. var _receiver;
  14072. var _actived = true;
  14073. var _receiverIsSelfCreated = false;
  14074. var $container = hotbox.$container;
  14075. _createReceiver();
  14076. _bindReceiver();
  14077. _bindContainer();
  14078. _active();
  14079. function _createReceiver() {
  14080. _receiver = document.createElement('input');
  14081. _receiver.classList.add(RECEIVER_CLASS);
  14082. $container.appendChild(_receiver);
  14083. _receiverIsSelfCreated = true;
  14084. }
  14085. function _bindReceiver() {
  14086. _receiver.onkeyup = _handle;
  14087. _receiver.onkeypress = _handle;
  14088. _receiver.onkeydown = _handle;
  14089. _receiver.onfocus = _active;
  14090. _receiver.onblur = _deactive;
  14091. if (_receiverIsSelfCreated) {
  14092. _receiver.oninput = function(e) { _receiver.value = null; };
  14093. }
  14094. }
  14095. function _bindContainer() {
  14096. $container.onmousedown = function(e) {
  14097. _active();
  14098. e.preventDefault();
  14099. };
  14100. }
  14101. function _handle(keyEvent) {
  14102. if (!_actived) return;
  14103. hotbox.dispatch(keyEvent);
  14104. }
  14105. function _active() {
  14106. _receiver.select();
  14107. _receiver.focus();
  14108. _actived = true;
  14109. $container.classList.add(FOCUS_CLASS);
  14110. }
  14111. function _deactive() {
  14112. _receiver.blur();
  14113. _actived = false;
  14114. $container.classList.remove(FOCUS_CLASS);
  14115. }
  14116. this.handle = _handle;
  14117. this.active = _active;
  14118. this.deactive = _deactive;
  14119. }
  14120. module.exports = KeyControl;
  14121. }).call(exports, __webpack_require__, exports, module),
  14122. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  14123. /***/ }),
  14124. /***/ 393:
  14125. /***/ (function(module, exports, __webpack_require__) {
  14126. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  14127. * @fileOverview
  14128. *
  14129. * 文本输入支持
  14130. *
  14131. * @author: techird
  14132. * @copyright: Baidu FEX, 2014
  14133. */
  14134. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  14135. __webpack_require__(394);
  14136. var Debug = __webpack_require__(313);
  14137. var debug = new Debug('input');
  14138. // debugger
  14139. function InputRuntime() {
  14140. var fsm = this.fsm;
  14141. var minder = this.minder;
  14142. var hotbox = this.hotbox;
  14143. var receiver = this.receiver;
  14144. var receiverElement = receiver.element;
  14145. var isGecko = window.kity.Browser.gecko;
  14146. // setup everything to go
  14147. setupReciverElement();
  14148. setupFsm();
  14149. setupHotbox();
  14150. // expose editText()
  14151. this.editText = editText;
  14152. // listen the fsm changes, make action.
  14153. function setupFsm() {
  14154. // when jumped to input mode, enter
  14155. fsm.when('* -> input', enterInputMode);
  14156. // when exited, commit or exit depends on the exit reason
  14157. fsm.when('input -> *', function(exit, enter, reason) {
  14158. switch (reason) {
  14159. case 'input-cancel':
  14160. return exitInputMode();
  14161. case 'input-commit':
  14162. default:
  14163. return commitInputResult();
  14164. }
  14165. });
  14166. // lost focus to commit
  14167. receiver.onblur(function (e) {
  14168. if (fsm.state() == 'input') {
  14169. fsm.jump('normal', 'input-commit');
  14170. }
  14171. });
  14172. minder.on('beforemousedown', function () {
  14173. if (fsm.state() == 'input') {
  14174. fsm.jump('normal', 'input-commit');
  14175. }
  14176. });
  14177. minder.on('dblclick', function() {
  14178. // debugger
  14179. if (minder.getSelectedNode() && minder._status !== 'readonly') {
  14180. editText();
  14181. }
  14182. });
  14183. }
  14184. // let the receiver follow the current selected node position
  14185. function setupReciverElement() {
  14186. if (debug.flaged) {
  14187. receiverElement.classList.add('debug');
  14188. }
  14189. receiverElement.onmousedown = function(e) {
  14190. e.stopPropagation();
  14191. };
  14192. minder.on('layoutallfinish viewchange viewchanged selectionchange', function(e) {
  14193. // viewchange event is too frequenced, lazy it
  14194. if (e.type == 'viewchange' && fsm.state() != 'input') return;
  14195. updatePosition();
  14196. });
  14197. updatePosition();
  14198. }
  14199. // edit entrance in hotbox
  14200. function setupHotbox() {
  14201. hotbox.state('main').button({
  14202. position: 'center',
  14203. label: '编辑',
  14204. key: 'F2',
  14205. enable: function() {
  14206. return minder.queryCommandState('text') != -1;
  14207. },
  14208. action: editText
  14209. });
  14210. }
  14211. /**
  14212. * 增加对字体的鉴别,以保证用户在编辑状态ctrl/cmd + b/i所触发的加粗斜体与显示一致
  14213. * @editor Naixor
  14214. * @Date 2015-12-2
  14215. */
  14216. // edit for the selected node
  14217. function editText() {
  14218. var node = minder.getSelectedNode();
  14219. if (!node) {
  14220. return;
  14221. }
  14222. var textContainer = receiverElement;
  14223. receiverElement.innerText = "";
  14224. if (node.getData('font-weight') === 'bold') {
  14225. var b = document.createElement('b');
  14226. textContainer.appendChild(b);
  14227. textContainer = b;
  14228. }
  14229. if (node.getData('font-style') === 'italic') {
  14230. var i = document.createElement('i');
  14231. textContainer.appendChild(i);
  14232. textContainer = i;
  14233. }
  14234. textContainer.innerText = minder.queryCommandValue('text');
  14235. if (isGecko) {
  14236. receiver.fixFFCaretDisappeared();
  14237. };
  14238. fsm.jump('input', 'input-request');
  14239. receiver.selectAll();
  14240. }
  14241. /**
  14242. * 增加对字体的鉴别,以保证用户在编辑状态ctrl/cmd + b/i所触发的加粗斜体与显示一致
  14243. * @editor Naixor
  14244. * @Date 2015-12-2
  14245. */
  14246. function enterInputMode() {
  14247. var node = minder.getSelectedNode();
  14248. if (node) {
  14249. var fontSize = node.getData('font-size') || node.getStyle('font-size');
  14250. receiverElement.style.fontSize = fontSize + 'px';
  14251. receiverElement.style.minWidth = 0;
  14252. receiverElement.style.minWidth = receiverElement.clientWidth + 'px';
  14253. receiverElement.style.fontWeight = node.getData('font-weight') || '';
  14254. receiverElement.style.fontStyle = node.getData('font-style') || '';
  14255. receiverElement.classList.add('input');
  14256. receiverElement.focus();
  14257. }
  14258. }
  14259. /**
  14260. * 按照文本提交操作处理
  14261. * @Desc: 从其他节点复制文字到另一个节点时部分浏览器(chrome)会自动包裹一个span标签,这样试用一下逻辑出来的就不是text节点二是span节点因此导致undefined的情况发生
  14262. * @Warning: 下方代码使用[].slice.call来将HTMLDomCollection处理成为Array,ie8及以下会有问题
  14263. * @Editor: Naixor
  14264. * @Date: 2015.9.16
  14265. */
  14266. function commitInputText (textNodes) {
  14267. var text = '';
  14268. var TAB_CHAR = '\t',
  14269. ENTER_CHAR = '\n',
  14270. STR_CHECK = /\S/,
  14271. SPACE_CHAR = '\u0020',
  14272. // 针对FF,SG,BD,LB,IE等浏览器下SPACE的charCode存在为32和160的情况做处理
  14273. SPACE_CHAR_REGEXP = new RegExp('(\u0020|' + String.fromCharCode(160) + ')'),
  14274. BR = document.createElement('br');
  14275. var isBold = false,
  14276. isItalic = false;
  14277. for (var str,
  14278. _divChildNodes,
  14279. space_l, space_num, tab_num,
  14280. i = 0, l = textNodes.length; i < l; i++) {
  14281. str = textNodes[i];
  14282. switch (Object.prototype.toString.call(str)) {
  14283. // 正常情况处理
  14284. case '[object HTMLBRElement]': {
  14285. text += ENTER_CHAR;
  14286. break;
  14287. }
  14288. case '[object Text]': {
  14289. // SG下会莫名其妙的加上&nbsp;影响后续判断,干掉!
  14290. /**
  14291. * FF下的wholeText会导致如下问题:
  14292. * |123| -> 在一个节点中输入一段字符,此时TextNode为[#Text 123]
  14293. * 提交并重新编辑,在后面追加几个字符
  14294. * |123abc| -> 此时123为一个TextNode为[#Text 123, #Text abc],但是对这两个任意取值wholeText均为全部内容123abc
  14295. * 上述BUG仅存在在FF中,故将wholeText更改为textContent
  14296. */
  14297. str = str.textContent.replace("&nbsp;", " ");
  14298. if (!STR_CHECK.test(str)) {
  14299. space_l = str.length;
  14300. while (space_l--) {
  14301. if (SPACE_CHAR_REGEXP.test(str[space_l])) {
  14302. text += SPACE_CHAR;
  14303. } else if (str[space_l] === TAB_CHAR) {
  14304. text += TAB_CHAR;
  14305. }
  14306. }
  14307. } else {
  14308. text += str;
  14309. }
  14310. break;
  14311. }
  14312. // ctrl + b/i 会给字体加上<b>/<i>标签来实现黑体和斜体
  14313. case '[object HTMLElement]': {
  14314. switch (str.nodeName) {
  14315. case "B": {
  14316. isBold = true;
  14317. break;
  14318. }
  14319. case "I": {
  14320. isItalic = true;
  14321. break;
  14322. }
  14323. default: {}
  14324. }
  14325. [].splice.apply(textNodes, [i, 1].concat([].slice.call(str.childNodes)));
  14326. l = textNodes.length;
  14327. i--;
  14328. break;
  14329. }
  14330. // 被增加span标签的情况会被处理成正常情况并会推交给上面处理
  14331. case '[object HTMLSpanElement]': {
  14332. [].splice.apply(textNodes, [i, 1].concat([].slice.call(str.childNodes)));
  14333. l = textNodes.length;
  14334. i--;
  14335. break;
  14336. }
  14337. // 若标签为image标签,则判断是否为合法url,是将其加载进来
  14338. case '[object HTMLImageElement]': {
  14339. if (str.src) {
  14340. if (/http(|s):\/\//.test(str.src)) {
  14341. minder.execCommand("Image", str.src, str.alt);
  14342. } else {
  14343. // data:image协议情况
  14344. }
  14345. };
  14346. break;
  14347. }
  14348. // 被增加div标签的情况会被处理成正常情况并会推交给上面处理
  14349. case '[object HTMLDivElement]': {
  14350. _divChildNodes = [];
  14351. for (var di = 0, l = str.childNodes.length; di < l; di++) {
  14352. _divChildNodes.push(str.childNodes[di]);
  14353. }
  14354. _divChildNodes.push(BR);
  14355. [].splice.apply(textNodes, [i, 1].concat(_divChildNodes));
  14356. l = textNodes.length;
  14357. i--;
  14358. break;
  14359. }
  14360. default: {
  14361. if (str && str.childNodes.length) {
  14362. _divChildNodes = [];
  14363. for (var di = 0, l = str.childNodes.length; di < l; di++) {
  14364. _divChildNodes.push(str.childNodes[di]);
  14365. }
  14366. _divChildNodes.push(BR);
  14367. [].splice.apply(textNodes, [i, 1].concat(_divChildNodes));
  14368. l = textNodes.length;
  14369. i--;
  14370. } else {
  14371. if (str && str.textContent !== undefined) {
  14372. text += str.textContent;
  14373. } else {
  14374. text += "";
  14375. }
  14376. }
  14377. // // 其他带有样式的节点被粘贴进来,则直接取textContent,若取不出来则置空
  14378. }
  14379. }
  14380. };
  14381. text = text.replace(/^\n*|\n*$/g, '');
  14382. text = text.replace(new RegExp('(\n|\r|\n\r)(\u0020|' + String.fromCharCode(160) + '){4}', 'g'), '$1\t');
  14383. minder.getSelectedNode().setText(text);
  14384. if (isBold) {
  14385. minder.queryCommandState('bold') || minder.execCommand('bold');
  14386. } else {
  14387. minder.queryCommandState('bold') && minder.execCommand('bold');
  14388. }
  14389. if (isItalic) {
  14390. minder.queryCommandState('italic') || minder.execCommand('italic');
  14391. } else {
  14392. minder.queryCommandState('italic') && minder.execCommand('italic');
  14393. }
  14394. exitInputMode();
  14395. return text;
  14396. }
  14397. /**
  14398. * 判断节点的文本信息是否是
  14399. * @Desc: 从其他节点复制文字到另一个节点时部分浏览器(chrome)会自动包裹一个span标签,这样使用以下逻辑出来的就不是text节点二是span节点因此导致undefined的情况发生
  14400. * @Notice: 此处逻辑应该拆分到 kityminder-core/core/data中去,单独增加一个对某个节点importJson的事件
  14401. * @Editor: Naixor
  14402. * @Date: 2015.9.16
  14403. */
  14404. function commitInputNode(node, text) {
  14405. try {
  14406. minder.decodeData('text', text).then(function(json) {
  14407. function importText(node, json, minder) {
  14408. var data = json.data;
  14409. node.setText(data.text || '');
  14410. var childrenTreeData = json.children || [];
  14411. for (var i = 0; i < childrenTreeData.length; i++) {
  14412. var childNode = minder.createNode(null, node);
  14413. importText(childNode, childrenTreeData[i], minder);
  14414. }
  14415. return node;
  14416. }
  14417. importText(node, json, minder);
  14418. minder.fire("contentchange");
  14419. minder.getRoot().renderTree();
  14420. minder.layout(300);
  14421. });
  14422. } catch (e) {
  14423. minder.fire("contentchange");
  14424. minder.getRoot().renderTree();
  14425. // 无法被转换成脑图节点则不处理
  14426. if (e.toString() !== 'Error: Invalid local format') {
  14427. throw e;
  14428. }
  14429. }
  14430. }
  14431. function commitInputResult() {
  14432. /**
  14433. * @Desc: 进行如下处理:
  14434. * 根据用户的输入判断是否生成新的节点
  14435. * fix #83 https://github.com/fex-team/kityminder-editor/issues/83
  14436. * @Editor: Naixor
  14437. * @Date: 2015.9.16
  14438. */
  14439. var textNodes = [].slice.call(receiverElement.childNodes);
  14440. /**
  14441. * @Desc: 增加setTimeout的原因:ie下receiverElement.innerHTML=""会导致后
  14442. * 面commitInputText中使用textContent报错,不要问我什么原因!
  14443. * @Editor: Naixor
  14444. * @Date: 2015.12.14
  14445. */
  14446. setTimeout(function () {
  14447. // 解决过大内容导致SVG窜位问题
  14448. receiverElement.innerHTML = "";
  14449. }, 0);
  14450. var node = minder.getSelectedNode();
  14451. textNodes = commitInputText(textNodes);
  14452. commitInputNode(node, textNodes);
  14453. if (node.type == 'root') {
  14454. var rootText = minder.getRoot().getText();
  14455. minder.fire('initChangeRoot', {text: rootText});
  14456. }
  14457. }
  14458. function exitInputMode() {
  14459. receiverElement.classList.remove('input');
  14460. receiver.selectAll();
  14461. }
  14462. function updatePosition() {
  14463. var planed = updatePosition;
  14464. var focusNode = minder.getSelectedNode();
  14465. if (!focusNode) return;
  14466. if (!planed.timer) {
  14467. planed.timer = setTimeout(function() {
  14468. var box = focusNode.getRenderBox('TextRenderer');
  14469. receiverElement.style.left = Math.round(box.x) + 'px';
  14470. receiverElement.style.top = (debug.flaged ? Math.round(box.bottom + 30) : Math.round(box.y)) + 'px';
  14471. //receiverElement.focus();
  14472. planed.timer = 0;
  14473. });
  14474. }
  14475. }
  14476. }
  14477. return module.exports = InputRuntime;
  14478. }).call(exports, __webpack_require__, exports, module),
  14479. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  14480. /***/ }),
  14481. /***/ 394:
  14482. /***/ (function(module, exports, __webpack_require__) {
  14483. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  14484. * @fileOverview
  14485. *
  14486. * innerText polyfill
  14487. *
  14488. * @author: techird
  14489. * @copyright: Baidu FEX, 2014
  14490. */
  14491. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  14492. if ((!('innerText' in document.createElement('a'))) && ('getSelection' in window)) {
  14493. HTMLElement.prototype.__defineGetter__('innerText', function() {
  14494. var selection = window.getSelection(),
  14495. ranges = [],
  14496. str, i;
  14497. // Save existing selections.
  14498. for (i = 0; i < selection.rangeCount; i++) {
  14499. ranges[i] = selection.getRangeAt(i);
  14500. }
  14501. // Deselect everything.
  14502. selection.removeAllRanges();
  14503. // Select `el` and all child nodes.
  14504. // 'this' is the element .innerText got called on
  14505. selection.selectAllChildren(this);
  14506. // Get the string representation of the selected nodes.
  14507. str = selection.toString();
  14508. // Deselect everything. Again.
  14509. selection.removeAllRanges();
  14510. // Restore all formerly existing selections.
  14511. for (i = 0; i < ranges.length; i++) {
  14512. selection.addRange(ranges[i]);
  14513. }
  14514. // Oh look, this is what we wanted.
  14515. // String representation of the element, close to as rendered.
  14516. return str;
  14517. });
  14518. HTMLElement.prototype.__defineSetter__('innerText', function(text) {
  14519. /**
  14520. * @Desc: 解决FireFox节点内容删除后text为null,出现报错的问题
  14521. * @Editor: Naixor
  14522. * @Date: 2015.9.16
  14523. */
  14524. this.innerHTML = (text || '').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\n/g, '<br>');
  14525. });
  14526. }
  14527. }).call(exports, __webpack_require__, exports, module),
  14528. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))
  14529. /***/ }),
  14530. /***/ 395:
  14531. /***/ (function(module, exports, __webpack_require__) {
  14532. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  14533. * @Desc: 新增一个用于处理系统ctrl+c ctrl+v等方式导入导出节点的MIMETYPE处理,如系统不支持clipboardEvent或者是FF则不初始化改class
  14534. * @Editor: Naixor
  14535. * @Date: 2015.9.21
  14536. */
  14537. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  14538. function MimeType() {
  14539. /**
  14540. * 私有变量
  14541. */
  14542. var SPLITOR = '\uFEFF';
  14543. var MIMETYPE = {
  14544. 'application/km': '\uFFFF'
  14545. };
  14546. var SIGN = {
  14547. '\uFEFF': 'SPLITOR',
  14548. '\uFFFF': 'application/km'
  14549. };
  14550. /**
  14551. * 用于将一段纯文本封装成符合其数据格式的文本
  14552. * @method process private
  14553. * @param {MIMETYPE} mimetype 数据格式
  14554. * @param {String} text 原始文本
  14555. * @return {String} 符合该数据格式下的文本
  14556. * @example
  14557. * var str = "123";
  14558. * str = process('application/km', str); // 返回的内容再经过MimeType判断会读取出其数据格式为application/km
  14559. * process('text/plain', str); // 若接受到一个非纯文本信息,则会将其转换为新的数据格式
  14560. */
  14561. function process(mimetype, text) {
  14562. if (!this.isPureText(text)) {
  14563. var _mimetype = this.whichMimeType(text);
  14564. if (!_mimetype) {
  14565. throw new Error('unknow mimetype!');
  14566. };
  14567. text = this.getPureText(text);
  14568. };
  14569. if (mimetype === false) {
  14570. return text;
  14571. };
  14572. return mimetype + SPLITOR + text;
  14573. }
  14574. /**
  14575. * 注册数据类型的标识
  14576. * @method registMimeTypeProtocol public
  14577. * @param {String} type 数据类型
  14578. * @param {String} sign 标识
  14579. */
  14580. this.registMimeTypeProtocol = function(type, sign) {
  14581. if (sign && SIGN[sign]) {
  14582. throw new Error('sing has registed!');
  14583. }
  14584. if (type && !!MIMETYPE[type]) {
  14585. throw new Error('mimetype has registed!');
  14586. };
  14587. SIGN[sign] = type;
  14588. MIMETYPE[type] = sign;
  14589. }
  14590. /**
  14591. * 获取已注册数据类型的协议
  14592. * @method getMimeTypeProtocol public
  14593. * @param {String} type 数据类型
  14594. * @param {String} text|undefiend 文本内容或不传入
  14595. * @return {String|Function}
  14596. * @example
  14597. * text若不传入则直接返回对应数据格式的处理(process)方法
  14598. * 若传入文本则直接调用对应的process方法进行处理,此时返回处理后的内容
  14599. * var m = new MimeType();
  14600. * var kmprocess = m.getMimeTypeProtocol('application/km');
  14601. * kmprocess("123") === m.getMimeTypeProtocol('application/km', "123");
  14602. *
  14603. */
  14604. this.getMimeTypeProtocol = function(type, text) {
  14605. var mimetype = MIMETYPE[type] || false;
  14606. if (text === undefined) {
  14607. return process.bind(this, mimetype);
  14608. };
  14609. return process(mimetype, text);
  14610. }
  14611. this.getSpitor = function() {
  14612. return SPLITOR;
  14613. }
  14614. this.getMimeType = function(sign) {
  14615. if (sign !== undefined) {
  14616. return SIGN[sign] || null;
  14617. };
  14618. return MIMETYPE;
  14619. }
  14620. }
  14621. MimeType.prototype.isPureText = function(text) {
  14622. return !(~text.indexOf(this.getSpitor()));
  14623. }
  14624. MimeType.prototype.getPureText = function(text) {
  14625. if (this.isPureText(text)) {
  14626. return text;
  14627. };
  14628. return text.split(this.getSpitor())[1];
  14629. }
  14630. MimeType.prototype.whichMimeType = function(text) {
  14631. if (this.isPureText(text)) {
  14632. return null;
  14633. };
  14634. return this.getMimeType(text.split(this.getSpitor())[0]);
  14635. }
  14636. function MimeTypeRuntime() {
  14637. if (this.minder.supportClipboardEvent && !kity.Browser.gecko) {
  14638. this.MimeType = new MimeType();
  14639. };
  14640. }
  14641. return module.exports = MimeTypeRuntime;
  14642. }).call(exports, __webpack_require__, exports, module),
  14643. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  14644. /***/ }),
  14645. /***/ 396:
  14646. /***/ (function(module, exports, __webpack_require__) {
  14647. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  14648. * @Desc: 处理editor的clipboard事件,只在支持ClipboardEvent并且不是FF的情况下工作
  14649. * @Editor: Naixor
  14650. * @Date: 2015.9.21
  14651. */
  14652. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  14653. function ClipboardRuntime () {
  14654. var minder = this.minder;
  14655. var Data = window.kityminder.data;
  14656. if (!minder.supportClipboardEvent || kity.Browser.gecko) {
  14657. return;
  14658. };
  14659. var fsm = this.fsm;
  14660. var receiver = this.receiver;
  14661. var MimeType = this.MimeType;
  14662. var kmencode = MimeType.getMimeTypeProtocol('application/km'),
  14663. decode = Data.getRegisterProtocol('json').decode;
  14664. var _selectedNodes = [];
  14665. /*
  14666. * 增加对多节点赋值粘贴的处理
  14667. */
  14668. function encode (nodes) {
  14669. var _nodes = [];
  14670. for (var i = 0, l = nodes.length; i < l; i++) {
  14671. _nodes.push(minder.exportNode(nodes[i]));
  14672. }
  14673. return kmencode(Data.getRegisterProtocol('json').encode(_nodes));
  14674. }
  14675. var beforeCopy = function (e) {
  14676. if (document.activeElement == receiver.element) {
  14677. var clipBoardEvent = e;
  14678. var state = fsm.state();
  14679. switch (state) {
  14680. case 'input': {
  14681. break;
  14682. }
  14683. case 'normal': {
  14684. var nodes = [].concat(minder.getSelectedNodes());
  14685. if (nodes.length) {
  14686. // 这里由于被粘贴复制的节点的id信息也都一样,故做此算法
  14687. // 这里有个疑问,使用node.getParent()或者node.parent会离奇导致出现非选中节点被渲染成选中节点,因此使用isAncestorOf,而没有使用自行回溯的方式
  14688. if (nodes.length > 1) {
  14689. var targetLevel;
  14690. nodes.sort(function(a, b) {
  14691. return a.getLevel() - b.getLevel();
  14692. });
  14693. targetLevel = nodes[0].getLevel();
  14694. if (targetLevel !== nodes[nodes.length-1].getLevel()) {
  14695. var plevel, pnode,
  14696. idx = 0, l = nodes.length, pidx = l-1;
  14697. pnode = nodes[pidx];
  14698. while (pnode.getLevel() !== targetLevel) {
  14699. idx = 0;
  14700. while (idx < l && nodes[idx].getLevel() === targetLevel) {
  14701. if (nodes[idx].isAncestorOf(pnode)) {
  14702. nodes.splice(pidx, 1);
  14703. break;
  14704. }
  14705. idx++;
  14706. }
  14707. pidx--;
  14708. pnode = nodes[pidx];
  14709. }
  14710. };
  14711. };
  14712. var str = encode(nodes);
  14713. clipBoardEvent.clipboardData.setData('text/plain', str);
  14714. }
  14715. e.preventDefault();
  14716. break;
  14717. }
  14718. }
  14719. }
  14720. }
  14721. var beforeCut = function (e) {
  14722. if (document.activeElement == receiver.element) {
  14723. if (minder.getStatus() !== 'normal') {
  14724. e.preventDefault();
  14725. return;
  14726. };
  14727. var clipBoardEvent = e;
  14728. var state = fsm.state();
  14729. switch (state) {
  14730. case 'input': {
  14731. break;
  14732. }
  14733. case 'normal': {
  14734. var nodes = minder.getSelectedNodes();
  14735. if (nodes.length) {
  14736. clipBoardEvent.clipboardData.setData('text/plain', encode(nodes));
  14737. minder.execCommand('removenode');
  14738. }
  14739. e.preventDefault();
  14740. break;
  14741. }
  14742. }
  14743. };
  14744. }
  14745. var beforePaste = function(e) {
  14746. if (document.activeElement == receiver.element) {
  14747. if (minder.getStatus() !== 'normal') {
  14748. e.preventDefault();
  14749. return;
  14750. };
  14751. var clipBoardEvent = e;
  14752. var state = fsm.state();
  14753. var textData = clipBoardEvent.clipboardData.getData('text/plain');
  14754. switch (state) {
  14755. case 'input': {
  14756. // input状态下如果格式为application/km则不进行paste操作
  14757. if (!MimeType.isPureText(textData)) {
  14758. e.preventDefault();
  14759. return;
  14760. };
  14761. break;
  14762. }
  14763. case 'normal': {
  14764. /*
  14765. * 针对normal状态下通过对选中节点粘贴导入子节点文本进行单独处理
  14766. */
  14767. var sNodes = minder.getSelectedNodes();
  14768. if (MimeType.whichMimeType(textData) === 'application/km') {
  14769. var nodes = decode(MimeType.getPureText(textData));
  14770. var _node;
  14771. sNodes.forEach(function(node) {
  14772. // 由于粘贴逻辑中为了排除子节点重新排序导致逆序,因此复制的时候倒过来
  14773. for (var i = nodes.length-1; i >= 0; i--) {
  14774. _node = minder.createNode(null, node);
  14775. minder.importNode(_node, nodes[i]);
  14776. _selectedNodes.push(_node);
  14777. node.appendChild(_node);
  14778. }
  14779. });
  14780. minder.select(_selectedNodes, true);
  14781. _selectedNodes = [];
  14782. minder.refresh();
  14783. }
  14784. else if (clipBoardEvent.clipboardData && clipBoardEvent.clipboardData.items[0].type.indexOf('image') > -1) {
  14785. var imageFile = clipBoardEvent.clipboardData.items[0].getAsFile();
  14786. var serverService = angular.element(document.body).injector().get('server');
  14787. return serverService.uploadImage(imageFile).then(function (json) {
  14788. var resp = json.data;
  14789. if (resp.errno === 0) {
  14790. minder.execCommand('image', resp.data.url);
  14791. }
  14792. });
  14793. }
  14794. else {
  14795. sNodes.forEach(function(node) {
  14796. minder.Text2Children(node, textData);
  14797. });
  14798. }
  14799. e.preventDefault();
  14800. break;
  14801. }
  14802. }
  14803. }
  14804. }
  14805. /**
  14806. * 由editor的receiver统一处理全部事件,包括clipboard事件
  14807. * @Editor: Naixor
  14808. * @Date: 2015.9.24
  14809. */
  14810. document.addEventListener('copy', beforeCopy);
  14811. document.addEventListener('cut', beforeCut);
  14812. document.addEventListener('paste', beforePaste);
  14813. }
  14814. return module.exports = ClipboardRuntime;
  14815. }).call(exports, __webpack_require__, exports, module),
  14816. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  14817. /***/ }),
  14818. /***/ 397:
  14819. /***/ (function(module, exports, __webpack_require__) {
  14820. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  14821. * @fileOverview
  14822. *
  14823. * 用于拖拽节点时屏蔽键盘事件
  14824. *
  14825. * @author: techird
  14826. * @copyright: Baidu FEX, 2014
  14827. */
  14828. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  14829. var Hotbox = __webpack_require__(314);
  14830. var Debug = __webpack_require__(313);
  14831. var debug = new Debug('drag');
  14832. function DragRuntime() {
  14833. var fsm = this.fsm;
  14834. var minder = this.minder;
  14835. var hotbox = this.hotbox;
  14836. var receiver = this.receiver;
  14837. var receiverElement = receiver.element;
  14838. // setup everything to go
  14839. setupFsm();
  14840. // listen the fsm changes, make action.
  14841. function setupFsm() {
  14842. // when jumped to drag mode, enter
  14843. fsm.when('* -> drag', function() {
  14844. // now is drag mode
  14845. });
  14846. fsm.when('drag -> *', function(exit, enter, reason) {
  14847. if (reason == 'drag-finish') {
  14848. // now exit drag mode
  14849. }
  14850. });
  14851. }
  14852. var downX, downY;
  14853. var MOUSE_HAS_DOWN = 0;
  14854. var MOUSE_HAS_UP = 1;
  14855. var BOUND_CHECK = 20;
  14856. var flag = MOUSE_HAS_UP;
  14857. var maxX, maxY, osx, osy, containerY;
  14858. var freeHorizen = false, freeVirtical = false;
  14859. var frame;
  14860. function move(direction, speed) {
  14861. if (!direction) {
  14862. freeHorizen = freeVirtical = false;
  14863. frame && kity.releaseFrame(frame);
  14864. frame = null;
  14865. return;
  14866. }
  14867. if (!frame) {
  14868. frame = kity.requestFrame((function (direction, speed, minder) {
  14869. return function (frame) {
  14870. switch (direction) {
  14871. case 'left':
  14872. minder._viewDragger.move({x: -speed, y: 0}, 0);
  14873. break;
  14874. case 'top':
  14875. minder._viewDragger.move({x: 0, y: -speed}, 0);
  14876. break;
  14877. case 'right':
  14878. minder._viewDragger.move({x: speed, y: 0}, 0);
  14879. break;
  14880. case 'bottom':
  14881. minder._viewDragger.move({x: 0, y: speed}, 0);
  14882. break;
  14883. default:
  14884. return;
  14885. }
  14886. frame.next();
  14887. };
  14888. })(direction, speed, minder));
  14889. }
  14890. }
  14891. minder.on('mousedown', function(e) {
  14892. flag = MOUSE_HAS_DOWN;
  14893. var rect = minder.getPaper().container.getBoundingClientRect();
  14894. downX = e.originEvent.clientX;
  14895. downY = e.originEvent.clientY;
  14896. containerY = rect.top;
  14897. maxX = rect.width;
  14898. maxY = rect.height;
  14899. });
  14900. minder.on('mousemove', function(e) {
  14901. if (fsm.state() === 'drag' && flag == MOUSE_HAS_DOWN && minder.getSelectedNode()
  14902. && (Math.abs(downX - e.originEvent.clientX) > BOUND_CHECK
  14903. || Math.abs(downY - e.originEvent.clientY) > BOUND_CHECK)) {
  14904. osx = e.originEvent.clientX;
  14905. osy = e.originEvent.clientY - containerY;
  14906. if (osx < BOUND_CHECK) {
  14907. move('right', BOUND_CHECK - osx);
  14908. } else if (osx > maxX - BOUND_CHECK) {
  14909. move('left', BOUND_CHECK + osx - maxX);
  14910. } else {
  14911. freeHorizen = true;
  14912. }
  14913. if (osy < BOUND_CHECK) {
  14914. move('bottom', osy);
  14915. } else if (osy > maxY - BOUND_CHECK) {
  14916. move('top', BOUND_CHECK + osy - maxY);
  14917. } else {
  14918. freeVirtical = true;
  14919. }
  14920. if (freeHorizen && freeVirtical) {
  14921. move(false);
  14922. }
  14923. }
  14924. if (fsm.state() !== 'drag'
  14925. && flag === MOUSE_HAS_DOWN
  14926. && minder.getSelectedNode()
  14927. && (Math.abs(downX - e.originEvent.clientX) > BOUND_CHECK
  14928. || Math.abs(downY - e.originEvent.clientY) > BOUND_CHECK)) {
  14929. if (fsm.state() === 'hotbox') {
  14930. hotbox.active(Hotbox.STATE_IDLE);
  14931. }
  14932. return fsm.jump('drag', 'user-drag');
  14933. }
  14934. });
  14935. window.addEventListener('mouseup', function () {
  14936. flag = MOUSE_HAS_UP;
  14937. if (fsm.state() === 'drag') {
  14938. move(false);
  14939. return fsm.jump('normal', 'drag-finish');
  14940. }
  14941. }, false);
  14942. }
  14943. return module.exports = DragRuntime;
  14944. }).call(exports, __webpack_require__, exports, module),
  14945. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  14946. /***/ }),
  14947. /***/ 398:
  14948. /***/ (function(module, exports, __webpack_require__) {
  14949. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  14950. function NodeRuntime() {
  14951. var runtime = this;
  14952. var minder = this.minder;
  14953. var hotbox = this.hotbox;
  14954. var fsm = this.fsm;
  14955. var main = hotbox.state('main');
  14956. var buttons = [
  14957. '前移:Alt+Up:ArrangeUp',
  14958. '下级:Tab|Insert:AppendChildNode',
  14959. '同级:Enter:AppendSiblingNode',
  14960. '后移:Alt+Down:ArrangeDown',
  14961. '删除:Delete|Backspace:RemoveNode',
  14962. '上级:Shift+Tab|Shift+Insert:AppendParentNode'
  14963. //'全选:Ctrl+A:SelectAll'
  14964. ];
  14965. var AppendLock = 0;
  14966. buttons.forEach(function(button) {
  14967. var parts = button.split(':');
  14968. var label = parts.shift();
  14969. var key = parts.shift();
  14970. var command = parts.shift();
  14971. main.button({
  14972. position: 'ring',
  14973. label: label,
  14974. key: key,
  14975. action: function() {
  14976. if (command.indexOf('Append') === 0) {
  14977. AppendLock++;
  14978. minder.execCommand(command, '分支主题');
  14979. // provide in input runtime
  14980. function afterAppend () {
  14981. if (!--AppendLock) {
  14982. runtime.editText();
  14983. }
  14984. minder.off('layoutallfinish', afterAppend);
  14985. }
  14986. minder.on('layoutallfinish', afterAppend);
  14987. } else {
  14988. minder.execCommand(command);
  14989. fsm.jump('normal', 'command-executed');
  14990. }
  14991. },
  14992. enable: function() {
  14993. return minder.queryCommandState(command) != -1;
  14994. }
  14995. });
  14996. });
  14997. main.button({
  14998. position: 'bottom',
  14999. label: '导入节点',
  15000. key: 'Alt + V',
  15001. enable: function() {
  15002. var selectedNodes = minder.getSelectedNodes();
  15003. return selectedNodes.length == 1;
  15004. },
  15005. action: importNodeData,
  15006. next: 'idle'
  15007. });
  15008. main.button({
  15009. position: 'bottom',
  15010. label: '导出节点',
  15011. key: 'Alt + C',
  15012. enable: function() {
  15013. var selectedNodes = minder.getSelectedNodes();
  15014. return selectedNodes.length == 1;
  15015. },
  15016. action: exportNodeData,
  15017. next: 'idle'
  15018. });
  15019. function importNodeData() {
  15020. minder.fire('importNodeData');
  15021. }
  15022. function exportNodeData() {
  15023. minder.fire('exportNodeData');
  15024. }
  15025. //main.button({
  15026. // position: 'ring',
  15027. // key: '/',
  15028. // action: function(){
  15029. // if (!minder.queryCommandState('expand')) {
  15030. // minder.execCommand('expand');
  15031. // } else if (!minder.queryCommandState('collapse')) {
  15032. // minder.execCommand('collapse');
  15033. // }
  15034. // },
  15035. // enable: function() {
  15036. // return minder.queryCommandState('expand') != -1 || minder.queryCommandState('collapse') != -1;
  15037. // },
  15038. // beforeShow: function() {
  15039. // if (!minder.queryCommandState('expand')) {
  15040. // this.$button.children[0].innerHTML = '展开';
  15041. // } else {
  15042. // this.$button.children[0].innerHTML = '收起';
  15043. // }
  15044. // }
  15045. //})
  15046. }
  15047. return module.exports = NodeRuntime;
  15048. }).call(exports, __webpack_require__, exports, module),
  15049. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  15050. /***/ }),
  15051. /***/ 399:
  15052. /***/ (function(module, exports, __webpack_require__) {
  15053. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  15054. * @fileOverview
  15055. *
  15056. * 历史管理
  15057. *
  15058. * @author: techird
  15059. * @copyright: Baidu FEX, 2014
  15060. */
  15061. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  15062. var jsonDiff = __webpack_require__(400).default;
  15063. function HistoryRuntime() {
  15064. var minder = this.minder;
  15065. var hotbox = this.hotbox;
  15066. var MAX_HISTORY = 100;
  15067. var lastSnap;
  15068. var patchLock;
  15069. var undoDiffs;
  15070. var redoDiffs;
  15071. function reset() {
  15072. undoDiffs = [];
  15073. redoDiffs = [];
  15074. lastSnap = minder.exportJson();
  15075. }
  15076. function makeUndoDiff() {
  15077. var headSnap = minder.exportJson();
  15078. var diff = jsonDiff(headSnap, lastSnap);
  15079. if (diff.length) {
  15080. undoDiffs.push(diff);
  15081. while (undoDiffs.length > MAX_HISTORY) {
  15082. undoDiffs.shift();
  15083. }
  15084. lastSnap = headSnap;
  15085. return true;
  15086. }
  15087. }
  15088. function makeRedoDiff() {
  15089. var revertSnap = minder.exportJson();
  15090. redoDiffs.push(jsonDiff(revertSnap, lastSnap));
  15091. lastSnap = revertSnap;
  15092. }
  15093. function undo() {
  15094. patchLock = true;
  15095. var undoDiff = undoDiffs.pop();
  15096. if (undoDiff) {
  15097. minder.applyPatches(undoDiff);
  15098. makeRedoDiff();
  15099. }
  15100. patchLock = false;
  15101. }
  15102. function redo() {
  15103. patchLock = true;
  15104. var redoDiff = redoDiffs.pop();
  15105. if (redoDiff) {
  15106. minder.applyPatches(redoDiff);
  15107. makeUndoDiff();
  15108. }
  15109. patchLock = false;
  15110. }
  15111. function changed() {
  15112. if (patchLock) return;
  15113. if (makeUndoDiff()) redoDiffs = [];
  15114. }
  15115. function hasUndo() {
  15116. return !!undoDiffs.length;
  15117. }
  15118. function hasRedo() {
  15119. return !!redoDiffs.length;
  15120. }
  15121. function updateSelection(e) {
  15122. if (!patchLock) return;
  15123. var patch = e.patch;
  15124. switch (patch.express) {
  15125. case 'node.add':
  15126. minder.select(patch.node.getChild(patch.index), true);
  15127. break;
  15128. case 'node.remove':
  15129. case 'data.replace':
  15130. case 'data.remove':
  15131. case 'data.add':
  15132. minder.select(patch.node, true);
  15133. break;
  15134. }
  15135. }
  15136. this.history = {
  15137. reset: reset,
  15138. undo: undo,
  15139. redo: redo,
  15140. hasUndo: hasUndo,
  15141. hasRedo: hasRedo
  15142. };
  15143. reset();
  15144. minder.on('contentchange', changed);
  15145. minder.on('import', reset);
  15146. minder.on('patch', updateSelection);
  15147. var main = hotbox.state('main');
  15148. main.button({
  15149. position: 'top',
  15150. label: '撤销',
  15151. key: 'Ctrl + Z',
  15152. enable: hasUndo,
  15153. action: undo,
  15154. next: 'idle'
  15155. });
  15156. main.button({
  15157. position: 'top',
  15158. label: '重做',
  15159. key: 'Ctrl + Y',
  15160. enable: hasRedo,
  15161. action: redo,
  15162. next: 'idle'
  15163. });
  15164. }
  15165. window.diff = jsonDiff;
  15166. return module.exports = HistoryRuntime;
  15167. }).call(exports, __webpack_require__, exports, module),
  15168. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  15169. /***/ }),
  15170. /***/ 400:
  15171. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  15172. "use strict";
  15173. Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
  15174. var _objectKeys = (function () {
  15175. if (Object.keys)
  15176. return Object.keys;
  15177. return function (o) {
  15178. var keys = [];
  15179. for (var i in o) {
  15180. if (o.hasOwnProperty(i)) {
  15181. keys.push(i);
  15182. }
  15183. }
  15184. return keys;
  15185. };
  15186. })();
  15187. function escapePathComponent(str) {
  15188. if (str.indexOf('/') === -1 && str.indexOf('~') === -1)
  15189. return str;
  15190. return str.replace(/~/g, '~0').replace(/\//g, '~1');
  15191. }
  15192. function deepClone(obj) {
  15193. if (typeof obj === "object") {
  15194. return JSON.parse(JSON.stringify(obj));
  15195. } else {
  15196. return obj;
  15197. }
  15198. }
  15199. // Dirty check if obj is different from mirror, generate patches and update mirror
  15200. function _generate(mirror, obj, patches, path) {
  15201. var newKeys = _objectKeys(obj);
  15202. var oldKeys = _objectKeys(mirror);
  15203. var changed = false;
  15204. var deleted = false;
  15205. for (var t = oldKeys.length - 1; t >= 0; t--) {
  15206. var key = oldKeys[t];
  15207. var oldVal = mirror[key];
  15208. if (obj.hasOwnProperty(key)) {
  15209. var newVal = obj[key];
  15210. if (typeof oldVal == "object" && oldVal != null && typeof newVal == "object" && newVal != null) {
  15211. _generate(oldVal, newVal, patches, path + "/" + escapePathComponent(key));
  15212. } else {
  15213. if (oldVal != newVal) {
  15214. changed = true;
  15215. patches.push({ op: "replace", path: path + "/" + escapePathComponent(key), value: deepClone(newVal) });
  15216. }
  15217. }
  15218. } else {
  15219. patches.push({ op: "remove", path: path + "/" + escapePathComponent(key) });
  15220. deleted = true; // property has been deleted
  15221. }
  15222. }
  15223. if (!deleted && newKeys.length == oldKeys.length) {
  15224. return;
  15225. }
  15226. for (var t = 0; t < newKeys.length; t++) {
  15227. var key = newKeys[t];
  15228. if (!mirror.hasOwnProperty(key)) {
  15229. patches.push({ op: "add", path: path + "/" + escapePathComponent(key), value: deepClone(obj[key]) });
  15230. }
  15231. }
  15232. }
  15233. function compare(tree1, tree2) {
  15234. var patches = [];
  15235. _generate(tree1, tree2, patches, '');
  15236. return patches;
  15237. }
  15238. /* harmony default export */ __webpack_exports__["default"] = (compare);
  15239. /***/ }),
  15240. /***/ 401:
  15241. /***/ (function(module, exports, __webpack_require__) {
  15242. var __WEBPACK_AMD_DEFINE_RESULT__;/**
  15243. * @fileOverview
  15244. *
  15245. * 根据按键控制状态机的跳转
  15246. *
  15247. * @author: techird
  15248. * @copyright: Baidu FEX, 2014
  15249. */
  15250. !(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module) {
  15251. var Hotbox = __webpack_require__(314);
  15252. console.log('Hotbox',Hotbox)
  15253. // Nice: http://unixpapa.com/js/key.html
  15254. function isIntendToInput(e) {
  15255. if (e.ctrlKey || e.metaKey || e.altKey) return false;
  15256. // a-zA-Z
  15257. if (e.keyCode >= 65 && e.keyCode <= 90) return true;
  15258. // 0-9 以及其上面的符号
  15259. if (e.keyCode >= 48 && e.keyCode <= 57) return true;
  15260. // 小键盘区域 (除回车外)
  15261. if (e.keyCode != 108 && e.keyCode >= 96 && e.keyCode <= 111) return true;
  15262. // 小键盘区域 (除回车外)
  15263. // @yinheli from pull request
  15264. if (e.keyCode != 108 && e.keyCode >= 96 && e.keyCode <= 111) return true;
  15265. // 输入法
  15266. if (e.keyCode == 229 || e.keyCode === 0) return true;
  15267. return false;
  15268. }
  15269. /**
  15270. * @Desc: 下方使用receiver.enable()和receiver.disable()通过
  15271. * 修改div contenteditable属性的hack来解决开启热核后依然无法屏蔽浏览器输入的bug;
  15272. * 特别: win下FF对于此种情况必须要先blur在focus才能解决,但是由于这样做会导致用户
  15273. * 输入法状态丢失,因此对FF暂不做处理
  15274. * @Editor: Naixor
  15275. * @Date: 2015.09.14
  15276. */
  15277. function JumpingRuntime() {
  15278. var fsm = this.fsm;
  15279. var minder = this.minder;
  15280. var receiver = this.receiver;
  15281. var container = this.container;
  15282. var receiverElement = receiver.element;
  15283. var hotbox = this.hotbox;
  15284. var compositionLock = false;
  15285. // normal -> *
  15286. receiver.listen('normal', function(e) {
  15287. // 为了防止处理进入edit模式而丢失处理的首字母,此时receiver必须为enable
  15288. receiver.enable();
  15289. // normal -> hotbox
  15290. if (e.is('Space')) {
  15291. e.preventDefault();
  15292. // safari下Space触发hotbox,然而这时Space已在receiver上留下作案痕迹,因此抹掉
  15293. if (kity.Browser.safari) {
  15294. receiverElement.innerHTML = '';
  15295. }
  15296. return fsm.jump('hotbox', 'space-trigger');
  15297. }
  15298. /**
  15299. * check
  15300. * @editor Naixor
  15301. * @Date 2015-12-2
  15302. */
  15303. switch (e.type) {
  15304. case 'keydown': {
  15305. // debugger
  15306. if (minder.getSelectedNode()) {
  15307. if (isIntendToInput(e)) {
  15308. return fsm.jump('input', 'user-input');
  15309. };
  15310. } else {
  15311. receiverElement.innerHTML = '';
  15312. }
  15313. // normal -> normal shortcut
  15314. fsm.jump('normal', 'shortcut-handle', e);
  15315. break;
  15316. }
  15317. case 'keyup': {
  15318. break;
  15319. }
  15320. default: {}
  15321. }
  15322. });
  15323. // hotbox -> normal
  15324. receiver.listen('hotbox', function(e) {
  15325. receiver.disable();
  15326. e.preventDefault();
  15327. var handleResult = hotbox.dispatch(e);
  15328. if (hotbox.state() == Hotbox.STATE_IDLE && fsm.state() == 'hotbox') {
  15329. return fsm.jump('normal', 'hotbox-idle');
  15330. }
  15331. });
  15332. // input => normal
  15333. receiver.listen('input', function(e) {
  15334. receiver.enable();
  15335. if (e.type == 'keydown') {
  15336. if (e.is('Enter')) {
  15337. e.preventDefault();
  15338. // debugger
  15339. return fsm.jump('normal', 'input-commit');
  15340. }
  15341. if (e.is('Esc')) {
  15342. e.preventDefault();
  15343. return fsm.jump('normal', 'input-cancel');
  15344. }
  15345. if (e.is('Tab') || e.is('Shift + Tab')) {
  15346. e.preventDefault();
  15347. }
  15348. } else if (e.type == 'keyup' && e.is('Esc')) {
  15349. e.preventDefault();
  15350. if (!compositionLock) {
  15351. return fsm.jump('normal', 'input-cancel');
  15352. }
  15353. }
  15354. else if (e.type == 'compositionstart') {
  15355. compositionLock = true;
  15356. }
  15357. else if (e.type == 'compositionend') {
  15358. setTimeout(function () {
  15359. compositionLock = false;
  15360. });
  15361. }
  15362. });
  15363. //////////////////////////////////////////////
  15364. /// 右键呼出热盒
  15365. /// 判断的标准是:按下的位置和结束的位置一致
  15366. //////////////////////////////////////////////
  15367. var downX, downY;
  15368. var MOUSE_RB = 2; // 右键
  15369. container.addEventListener('mousedown', function(e) {
  15370. // console.log(e.button)
  15371. // return // 禁用热盒模式
  15372. // debugger
  15373. if (e.button == MOUSE_RB) {
  15374. e.preventDefault();
  15375. }
  15376. if (fsm.state() == 'hotbox') {
  15377. hotbox.active(Hotbox.STATE_IDLE);
  15378. fsm.jump('normal', 'blur');
  15379. } else if (fsm.state() == 'normal' && e.button == MOUSE_RB) {
  15380. downX = e.clientX;
  15381. downY = e.clientY;
  15382. }
  15383. }, false);
  15384. container.addEventListener('mousewheel', function(e) {
  15385. if (fsm.state() == 'hotbox') {
  15386. hotbox.active(Hotbox.STATE_IDLE);
  15387. fsm.jump('normal', 'mousemove-blur');
  15388. }
  15389. }, false);
  15390. container.addEventListener('contextmenu', function(e) {
  15391. e.preventDefault();
  15392. });
  15393. container.addEventListener('mouseup', function(e) {
  15394. if (fsm.state() != 'normal') {
  15395. return;
  15396. }
  15397. if (e.button != MOUSE_RB || e.clientX != downX || e.clientY != downY) {
  15398. return;
  15399. }
  15400. if (!minder.getSelectedNode()) {
  15401. return;
  15402. }
  15403. fsm.jump('hotbox', 'content-menu');
  15404. }, false);
  15405. // 阻止热盒事件冒泡,在热盒正确执行前导致热盒关闭
  15406. hotbox.$element.addEventListener('mousedown', function(e) {
  15407. e.stopPropagation();
  15408. });
  15409. }
  15410. return module.exports = JumpingRuntime;
  15411. }).call(exports, __webpack_require__, exports, module),
  15412. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  15413. /***/ }),
  15414. /***/ 402:
  15415. /***/ (function(module, exports, __webpack_require__) {
  15416. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module){
  15417. function PriorityRuntime() {
  15418. var minder = this.minder;
  15419. var hotbox = this.hotbox;
  15420. var main = hotbox.state('main');
  15421. main.button({
  15422. position: 'top',
  15423. label: '优先级',
  15424. key: 'P',
  15425. next: 'priority',
  15426. enable: function() {
  15427. return minder.queryCommandState('priority') != -1;
  15428. }
  15429. });
  15430. var priority = hotbox.state('priority');
  15431. '123456789'.replace(/./g, function(p) {
  15432. priority.button({
  15433. position: 'ring',
  15434. label: 'P' + p,
  15435. key: p,
  15436. action: function() {
  15437. minder.execCommand('Priority', p);
  15438. }
  15439. });
  15440. });
  15441. priority.button({
  15442. position: 'center',
  15443. label: '移除',
  15444. key: 'Del',
  15445. action: function() {
  15446. minder.execCommand('Priority', 0);
  15447. }
  15448. });
  15449. priority.button({
  15450. position: 'top',
  15451. label: '返回',
  15452. key: 'esc',
  15453. next: 'back'
  15454. });
  15455. }
  15456. return module.exports = PriorityRuntime;
  15457. }).call(exports, __webpack_require__, exports, module),
  15458. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  15459. /***/ }),
  15460. /***/ 403:
  15461. /***/ (function(module, exports, __webpack_require__) {
  15462. var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(require, exports, module){
  15463. function ProgressRuntime() {
  15464. var minder = this.minder;
  15465. var hotbox = this.hotbox;
  15466. var main = hotbox.state('main');
  15467. main.button({
  15468. position: 'top',
  15469. label: '进度',
  15470. key: 'G',
  15471. next: 'progress',
  15472. enable: function() {
  15473. return minder.queryCommandState('progress') != -1;
  15474. }
  15475. });
  15476. var progress = hotbox.state('progress');
  15477. '012345678'.replace(/./g, function(p) {
  15478. progress.button({
  15479. position: 'ring',
  15480. label: 'G' + p,
  15481. key: p,
  15482. action: function() {
  15483. minder.execCommand('Progress', parseInt(p) + 1);
  15484. }
  15485. });
  15486. });
  15487. progress.button({
  15488. position: 'center',
  15489. label: '移除',
  15490. key: 'Del',
  15491. action: function() {
  15492. minder.execCommand('Progress', 0);
  15493. }
  15494. });
  15495. progress.button({
  15496. position: 'top',
  15497. label: '返回',
  15498. key: 'esc',
  15499. next: 'back'
  15500. });
  15501. }
  15502. return module.exports = ProgressRuntime;
  15503. }).call(exports, __webpack_require__, exports, module),
  15504. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  15505. /***/ }),
  15506. /***/ 404:
  15507. /***/ (function(module, exports, __webpack_require__) {
  15508. var render = function() {
  15509. var _vm = this
  15510. var _h = _vm.$createElement
  15511. var _c = _vm._self._c || _h
  15512. return _c("div", { staticClass: "minder-editor-container" }, [
  15513. _c(
  15514. "div",
  15515. { staticClass: "quickbar" },
  15516. [
  15517. _c("Tooltip", { attrs: { placement: "top", theme: "light" } }, [
  15518. _c(
  15519. "i",
  15520. { staticClass: "ft icon", attrs: { title: _vm.$L("缩放") } },
  15521. [_vm._v("")]
  15522. ),
  15523. _vm._v(" "),
  15524. _c("div", { attrs: { slot: "content" }, slot: "content" }, [
  15525. _c("ul", { staticClass: "quickul" }, [
  15526. _c(
  15527. "li",
  15528. {
  15529. on: {
  15530. click: function($event) {
  15531. return _vm.execCommand("Zoom", 200)
  15532. }
  15533. }
  15534. },
  15535. [_vm._v("200%")]
  15536. ),
  15537. _vm._v(" "),
  15538. _c(
  15539. "li",
  15540. {
  15541. on: {
  15542. click: function($event) {
  15543. return _vm.execCommand("Zoom", 150)
  15544. }
  15545. }
  15546. },
  15547. [_vm._v("150%")]
  15548. ),
  15549. _vm._v(" "),
  15550. _c(
  15551. "li",
  15552. {
  15553. on: {
  15554. click: function($event) {
  15555. return _vm.execCommand("Zoom", 100)
  15556. }
  15557. }
  15558. },
  15559. [_vm._v("100%")]
  15560. ),
  15561. _vm._v(" "),
  15562. _c(
  15563. "li",
  15564. {
  15565. on: {
  15566. click: function($event) {
  15567. return _vm.execCommand("Zoom", 50)
  15568. }
  15569. }
  15570. },
  15571. [_vm._v("50%")]
  15572. ),
  15573. _vm._v(" "),
  15574. _c(
  15575. "li",
  15576. {
  15577. on: {
  15578. click: function($event) {
  15579. return _vm.execCommand("Zoom", 25)
  15580. }
  15581. }
  15582. },
  15583. [_vm._v("25%")]
  15584. )
  15585. ])
  15586. ])
  15587. ]),
  15588. _vm._v(" "),
  15589. _vm.readOnly !== true
  15590. ? _c("Tooltip", { attrs: { placement: "top", theme: "light" } }, [
  15591. _c(
  15592. "i",
  15593. { staticClass: "ft icon", attrs: { title: _vm.$L("图形") } },
  15594. [_vm._v("")]
  15595. ),
  15596. _vm._v(" "),
  15597. _c("div", { attrs: { slot: "content" }, slot: "content" }, [
  15598. _c("ul", { staticClass: "quickul mold" }, [
  15599. _c(
  15600. "li",
  15601. {
  15602. on: {
  15603. click: function($event) {
  15604. return _vm.execCommand("template", "default")
  15605. }
  15606. }
  15607. },
  15608. [_c("span", { staticClass: "default" })]
  15609. ),
  15610. _vm._v(" "),
  15611. _c(
  15612. "li",
  15613. {
  15614. on: {
  15615. click: function($event) {
  15616. return _vm.execCommand("template", "structure")
  15617. }
  15618. }
  15619. },
  15620. [_c("span", { staticClass: "structure" })]
  15621. ),
  15622. _vm._v(" "),
  15623. _c(
  15624. "li",
  15625. {
  15626. on: {
  15627. click: function($event) {
  15628. return _vm.execCommand("template", "filetree")
  15629. }
  15630. }
  15631. },
  15632. [_c("span", { staticClass: "filetree" })]
  15633. ),
  15634. _vm._v(" "),
  15635. _c(
  15636. "li",
  15637. {
  15638. on: {
  15639. click: function($event) {
  15640. return _vm.execCommand("template", "right")
  15641. }
  15642. }
  15643. },
  15644. [_c("span", { staticClass: "right" })]
  15645. ),
  15646. _vm._v(" "),
  15647. _c(
  15648. "li",
  15649. {
  15650. on: {
  15651. click: function($event) {
  15652. return _vm.execCommand("template", "fish-bone")
  15653. }
  15654. }
  15655. },
  15656. [_c("span", { staticClass: "fish-bone" })]
  15657. ),
  15658. _vm._v(" "),
  15659. _c(
  15660. "li",
  15661. {
  15662. on: {
  15663. click: function($event) {
  15664. return _vm.execCommand("template", "tianpan")
  15665. }
  15666. }
  15667. },
  15668. [_c("span", { staticClass: "tianpan" })]
  15669. )
  15670. ])
  15671. ])
  15672. ])
  15673. : _vm._e(),
  15674. _vm._v(" "),
  15675. _vm.readOnly !== true
  15676. ? _c("Tooltip", { attrs: { placement: "top", theme: "light" } }, [
  15677. _c(
  15678. "i",
  15679. { staticClass: "ft icon", attrs: { title: _vm.$L("样式") } },
  15680. [_vm._v("")]
  15681. ),
  15682. _vm._v(" "),
  15683. _c("div", { attrs: { slot: "content" }, slot: "content" }, [
  15684. _c("ul", { staticClass: "quickul" }, [
  15685. _c(
  15686. "li",
  15687. {
  15688. on: {
  15689. click: function($event) {
  15690. return _vm.execCommand("theme", "fresh-blue")
  15691. }
  15692. }
  15693. },
  15694. [_vm._v(_vm._s(_vm.$L("天空蓝")))]
  15695. ),
  15696. _vm._v(" "),
  15697. _c(
  15698. "li",
  15699. {
  15700. on: {
  15701. click: function($event) {
  15702. return _vm.execCommand("theme", "wire")
  15703. }
  15704. }
  15705. },
  15706. [_vm._v(_vm._s(_vm.$L("线框")))]
  15707. ),
  15708. _vm._v(" "),
  15709. _c(
  15710. "li",
  15711. {
  15712. on: {
  15713. click: function($event) {
  15714. return _vm.execCommand("theme", "fish")
  15715. }
  15716. }
  15717. },
  15718. [_vm._v(_vm._s(_vm.$L("鱼骨图")))]
  15719. ),
  15720. _vm._v(" "),
  15721. _c(
  15722. "li",
  15723. {
  15724. on: {
  15725. click: function($event) {
  15726. return _vm.execCommand("theme", "classic")
  15727. }
  15728. }
  15729. },
  15730. [_vm._v(_vm._s(_vm.$L("脑图经典")))]
  15731. ),
  15732. _vm._v(" "),
  15733. _c(
  15734. "li",
  15735. {
  15736. on: {
  15737. click: function($event) {
  15738. return _vm.execCommand("theme", "classic-compact")
  15739. }
  15740. }
  15741. },
  15742. [_vm._v(_vm._s(_vm.$L("紧凑经典")))]
  15743. ),
  15744. _vm._v(" "),
  15745. _c(
  15746. "li",
  15747. {
  15748. on: {
  15749. click: function($event) {
  15750. return _vm.execCommand("theme", "snow")
  15751. }
  15752. }
  15753. },
  15754. [_vm._v(_vm._s(_vm.$L("温柔冷光")))]
  15755. ),
  15756. _vm._v(" "),
  15757. _c(
  15758. "li",
  15759. {
  15760. on: {
  15761. click: function($event) {
  15762. return _vm.execCommand("theme", "snow-compact")
  15763. }
  15764. }
  15765. },
  15766. [_vm._v(_vm._s(_vm.$L("紧凑冷光")))]
  15767. ),
  15768. _vm._v(" "),
  15769. _c(
  15770. "li",
  15771. {
  15772. on: {
  15773. click: function($event) {
  15774. return _vm.execCommand("theme", "tianpan")
  15775. }
  15776. }
  15777. },
  15778. [_vm._v(_vm._s(_vm.$L("经典天盘")))]
  15779. ),
  15780. _vm._v(" "),
  15781. _c(
  15782. "li",
  15783. {
  15784. on: {
  15785. click: function($event) {
  15786. return _vm.execCommand("theme", "tianpan-compact")
  15787. }
  15788. }
  15789. },
  15790. [_vm._v(_vm._s(_vm.$L("紧凑天盘")))]
  15791. )
  15792. ])
  15793. ])
  15794. ])
  15795. : _vm._e(),
  15796. _vm._v(" "),
  15797. _c("Tooltip", { attrs: { placement: "top", theme: "light" } }, [
  15798. _c(
  15799. "i",
  15800. { staticClass: "ft icon", attrs: { title: _vm.$L("折叠") } },
  15801. [_vm._v("")]
  15802. ),
  15803. _vm._v(" "),
  15804. _c("div", { attrs: { slot: "content" }, slot: "content" }, [
  15805. _c("ul", { staticClass: "quickul" }, [
  15806. _c(
  15807. "li",
  15808. {
  15809. on: {
  15810. click: function($event) {
  15811. return _vm.execCommand("ExpandToLevel", 1)
  15812. }
  15813. }
  15814. },
  15815. [_vm._v(_vm._s(_vm.$L("展开到一级节点")))]
  15816. ),
  15817. _vm._v(" "),
  15818. _c(
  15819. "li",
  15820. {
  15821. on: {
  15822. click: function($event) {
  15823. return _vm.execCommand("ExpandToLevel", 2)
  15824. }
  15825. }
  15826. },
  15827. [_vm._v(_vm._s(_vm.$L("展开到二级节点")))]
  15828. ),
  15829. _vm._v(" "),
  15830. _c(
  15831. "li",
  15832. {
  15833. on: {
  15834. click: function($event) {
  15835. return _vm.execCommand("ExpandToLevel", 3)
  15836. }
  15837. }
  15838. },
  15839. [_vm._v(_vm._s(_vm.$L("展开到三级节点")))]
  15840. ),
  15841. _vm._v(" "),
  15842. _c(
  15843. "li",
  15844. {
  15845. on: {
  15846. click: function($event) {
  15847. return _vm.execCommand("ExpandToLevel", 4)
  15848. }
  15849. }
  15850. },
  15851. [_vm._v(_vm._s(_vm.$L("展开到四级节点")))]
  15852. ),
  15853. _vm._v(" "),
  15854. _c(
  15855. "li",
  15856. {
  15857. on: {
  15858. click: function($event) {
  15859. return _vm.execCommand("ExpandToLevel", 5)
  15860. }
  15861. }
  15862. },
  15863. [_vm._v(_vm._s(_vm.$L("展开到五级节点")))]
  15864. ),
  15865. _vm._v(" "),
  15866. _c(
  15867. "li",
  15868. {
  15869. on: {
  15870. click: function($event) {
  15871. return _vm.execCommand("ExpandToLevel", 99)
  15872. }
  15873. }
  15874. },
  15875. [_vm._v(_vm._s(_vm.$L("展开全部节点")))]
  15876. )
  15877. ])
  15878. ])
  15879. ]),
  15880. _vm._v(" "),
  15881. _c(
  15882. "Tooltip",
  15883. { attrs: { placement: "top", content: _vm.$L("居中") } },
  15884. [
  15885. _c(
  15886. "div",
  15887. {
  15888. on: {
  15889. click: function($event) {
  15890. _vm.minder.execCommand("camera", _vm.minder.getRoot(), 600)
  15891. }
  15892. }
  15893. },
  15894. [_c("i", { staticClass: "ft icon" }, [_vm._v("")])]
  15895. )
  15896. ]
  15897. ),
  15898. _vm._v(" "),
  15899. _c(
  15900. "Tooltip",
  15901. { attrs: { placement: "top", content: _vm.$L("移动") } },
  15902. [
  15903. _c(
  15904. "div",
  15905. {
  15906. on: {
  15907. click: function($event) {
  15908. ;[
  15909. _vm.minder.execCommand("Hand"),
  15910. (_vm.isHand = !_vm.isHand)
  15911. ]
  15912. }
  15913. }
  15914. },
  15915. [
  15916. _c(
  15917. "i",
  15918. { staticClass: "ft icon", class: { active: _vm.isHand } },
  15919. [_vm._v("")]
  15920. )
  15921. ]
  15922. )
  15923. ]
  15924. )
  15925. ],
  15926. 1
  15927. ),
  15928. _vm._v(" "),
  15929. _c("div", { attrs: { id: _vm.id } })
  15930. ])
  15931. }
  15932. var staticRenderFns = []
  15933. render._withStripped = true
  15934. module.exports = { render: render, staticRenderFns: staticRenderFns }
  15935. if (false) {
  15936. module.hot.accept()
  15937. if (module.hot.data) {
  15938. require("vue-hot-reload-api") .rerender("data-v-08e0a3b0", module.exports)
  15939. }
  15940. }
  15941. /***/ }),
  15942. /***/ 970:
  15943. /***/ (function(module, exports, __webpack_require__) {
  15944. // style-loader: Adds some css to the DOM by adding a <style> tag
  15945. // load the styles
  15946. var content = __webpack_require__(971);
  15947. if(typeof content === 'string') content = [[module.i, content, '']];
  15948. if(content.locals) module.exports = content.locals;
  15949. // add the styles to the DOM
  15950. var update = __webpack_require__(1)("75a0fa38", content, false, {});
  15951. // Hot Module Replacement
  15952. if(false) {
  15953. // When the styles change, update the <style> tags
  15954. if(!content.locals) {
  15955. module.hot.accept("!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3665704a\",\"scoped\":false,\"hasInlineConfig\":true}!../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./view.vue", function() {
  15956. var newContent = require("!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3665704a\",\"scoped\":false,\"hasInlineConfig\":true}!../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./view.vue");
  15957. if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
  15958. update(newContent);
  15959. });
  15960. }
  15961. // When the module is disposed, remove the <style> tags
  15962. module.hot.dispose(function() { update(); });
  15963. }
  15964. /***/ }),
  15965. /***/ 971:
  15966. /***/ (function(module, exports, __webpack_require__) {
  15967. exports = module.exports = __webpack_require__(0)(false);
  15968. // imports
  15969. // module
  15970. exports.push([module.i, "\n.view-body .view-body-content .markdown-preview,\n.view-body .view-body-content .report-content {\n margin: 0 !important;\n padding: 0 !important;\n}\n.view-body .view-body-content .minder-editor-container {\n -webkit-transform: translateZ(0);\n transform: translateZ(0);\n}\n.view-body .view-body-content .body-sheet {\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n}\n.view-body .view-body-content .body-sheet * {\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n}\n", ""]);
  15971. // exports
  15972. /***/ }),
  15973. /***/ 972:
  15974. /***/ (function(module, exports, __webpack_require__) {
  15975. // style-loader: Adds some css to the DOM by adding a <style> tag
  15976. // load the styles
  15977. var content = __webpack_require__(973);
  15978. if(typeof content === 'string') content = [[module.i, content, '']];
  15979. if(content.locals) module.exports = content.locals;
  15980. // add the styles to the DOM
  15981. var update = __webpack_require__(1)("06916ed8", content, false, {});
  15982. // Hot Module Replacement
  15983. if(false) {
  15984. // When the styles change, update the <style> tags
  15985. if(!content.locals) {
  15986. module.hot.accept("!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3665704a\",\"scoped\":true,\"hasInlineConfig\":true}!../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=1!./view.vue", function() {
  15987. var newContent = require("!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3665704a\",\"scoped\":true,\"hasInlineConfig\":true}!../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=1!./view.vue");
  15988. if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
  15989. update(newContent);
  15990. });
  15991. }
  15992. // When the module is disposed, remove the <style> tags
  15993. module.hot.dispose(function() { update(); });
  15994. }
  15995. /***/ }),
  15996. /***/ 973:
  15997. /***/ (function(module, exports, __webpack_require__) {
  15998. exports = module.exports = __webpack_require__(0)(false);
  15999. // imports
  16000. // module
  16001. exports.push([module.i, "\n.docs-view[data-v-3665704a] {\n background-color: #ffffff;\n}\n.docs-view .view-box[data-v-3665704a] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n position: absolute;\n width: 100%;\n height: 100%;\n}\n.docs-view .view-box .view-head[data-v-3665704a] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n height: 38px;\n -webkit-box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\n position: relative;\n z-index: 99;\n}\n.docs-view .view-box .view-head .header-title[data-v-3665704a] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n color: #333333;\n padding-left: 12px;\n padding-right: 12px;\n font-size: 16px;\n font-weight: 500;\n white-space: nowrap;\n}\n.docs-view .view-box .view-head .header-title em[data-v-3665704a] {\n padding: 0 3px;\n font-weight: normal;\n}\n.docs-view .view-box .view-head .header-hint[data-v-3665704a] {\n padding-right: 22px;\n font-size: 12px;\n color: #666;\n white-space: nowrap;\n}\n.docs-view .view-box .view-head .header-hint .ivu-btn[data-v-3665704a] {\n font-size: 12px;\n padding: 0 10px;\n}\n.docs-view .view-box .view-head .header-hint .ivu-dropdown-item[data-v-3665704a] {\n font-size: 12px !important;\n}\n.docs-view .view-box .view-head .header-button[data-v-3665704a] {\n font-size: 12px;\n margin-right: 12px;\n}\n.docs-view .view-box .view-main[data-v-3665704a] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n width: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n.docs-view .view-box .view-main.view-book .view-menu[data-v-3665704a] {\n border-right: 0;\n width: 100%;\n}\n.docs-view .view-box .view-main.view-book .view-menu .view-menu-list[data-v-3665704a] {\n padding: 18px 8%;\n}\n.docs-view .view-box .view-main.view-book .view-body[data-v-3665704a] {\n display: none;\n}\n.docs-view .view-box .view-main .view-menu[data-v-3665704a] {\n position: relative;\n height: 100%;\n width: 280px;\n border-right: 1px solid #E6ECF1;\n}\n.docs-view .view-box .view-main .view-menu .view-menu-list[data-v-3665704a] {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n padding: 18px 12px;\n overflow: auto;\n}\n.docs-view .view-box .view-main .view-body[data-v-3665704a] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n height: 100%;\n position: relative;\n}\n.docs-view .view-box .view-main .view-body .view-body-content[data-v-3665704a] {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n padding: 18px;\n overflow: auto;\n}\n", ""]);
  16002. // exports
  16003. /***/ }),
  16004. /***/ 974:
  16005. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  16006. "use strict";
  16007. Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
  16008. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(4);
  16009. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__);
  16010. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_docs_minder__ = __webpack_require__(365);
  16011. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  16012. //
  16013. //
  16014. //
  16015. //
  16016. //
  16017. //
  16018. //
  16019. //
  16020. //
  16021. //
  16022. //
  16023. //
  16024. //
  16025. //
  16026. //
  16027. //
  16028. //
  16029. //
  16030. //
  16031. //
  16032. //
  16033. //
  16034. //
  16035. //
  16036. //
  16037. //
  16038. //
  16039. //
  16040. //
  16041. //
  16042. //
  16043. //
  16044. //
  16045. //
  16046. //
  16047. //
  16048. //
  16049. //
  16050. //
  16051. //
  16052. //
  16053. //
  16054. //
  16055. //
  16056. //
  16057. //
  16058. //
  16059. //
  16060. //
  16061. //
  16062. //
  16063. //
  16064. //
  16065. //
  16066. //
  16067. //
  16068. //
  16069. //
  16070. //
  16071. //
  16072. //
  16073. //
  16074. //
  16075. //
  16076. //
  16077. //
  16078. //
  16079. //
  16080. //
  16081. //
  16082. //
  16083. //
  16084. //
  16085. //
  16086. //
  16087. //
  16088. //
  16089. //
  16090. //
  16091. //
  16092. //
  16093. //
  16094. //
  16095. //
  16096. //
  16097. //
  16098. //
  16099. //
  16100. //
  16101. //
  16102. //
  16103. //
  16104. //
  16105. //
  16106. //
  16107. //
  16108. //
  16109. //
  16110. //
  16111. //
  16112. //
  16113. //
  16114. //
  16115. //
  16116. //
  16117. //
  16118. //
  16119. //
  16120. //
  16121. //
  16122. //
  16123. //
  16124. //
  16125. //
  16126. //
  16127. //
  16128. //
  16129. //
  16130. //
  16131. //
  16132. //
  16133. //
  16134. //
  16135. //
  16136. //
  16137. //
  16138. //
  16139. //
  16140. //
  16141. //
  16142. //
  16143. //
  16144. //
  16145. //
  16146. //
  16147. //
  16148. //
  16149. //
  16150. //
  16151. //
  16152. //
  16153. //
  16154. //
  16155. //
  16156. //
  16157. //
  16158. //
  16159. //
  16160. //
  16161. //
  16162. //
  16163. //
  16164. //
  16165. //
  16166. //
  16167. //
  16168. //
  16169. //
  16170. __WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(__WEBPACK_IMPORTED_MODULE_1__components_docs_minder__["a" /* default */]);
  16171. var Sheet = function Sheet(resolve) {
  16172. return __webpack_require__.e/* require */(10/* duplicate */).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(444)]; ((resolve).apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}.bind(this)).catch(__webpack_require__.oe);
  16173. };
  16174. var Flow = function Flow(resolve) {
  16175. return __webpack_require__.e/* require */(11/* duplicate */).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(456)]; ((resolve).apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}.bind(this)).catch(__webpack_require__.oe);
  16176. };
  16177. var NestedDraggable = function NestedDraggable(resolve) {
  16178. return __webpack_require__.e/* require */(12/* duplicate */).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(327)]; ((resolve).apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}.bind(this)).catch(__webpack_require__.oe);
  16179. };
  16180. var MarkdownPreview = function MarkdownPreview(resolve) {
  16181. return __webpack_require__.e/* require */(14).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(975)]; ((resolve).apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}.bind(this)).catch(__webpack_require__.oe);
  16182. };
  16183. var ReportContent = function ReportContent(resolve) {
  16184. return new Promise(function(resolve) { resolve(); }).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(65)]; ((resolve).apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}.bind(this)).catch(__webpack_require__.oe);
  16185. };
  16186. /* harmony default export */ __webpack_exports__["default"] = ({
  16187. components: { Sheet: Sheet, Flow: Flow, ReportContent: ReportContent, MarkdownPreview: MarkdownPreview, NestedDraggable: NestedDraggable },
  16188. data: function data() {
  16189. return {
  16190. loadIng: 0,
  16191. sid: 0,
  16192. docDetail: {},
  16193. docContent: {},
  16194. bookDetail: {},
  16195. sectionLists: [],
  16196. sectionNoDataText: "",
  16197. routeName: '',
  16198. isBook: false,
  16199. isFullscreen: false
  16200. };
  16201. },
  16202. mounted: function mounted() {
  16203. var _this = this;
  16204. this.routeName = this.$route.name;
  16205. //
  16206. document.addEventListener("fullscreenchange", function () {
  16207. _this.isFullscreen = !!document.fullscreenElement;
  16208. });
  16209. },
  16210. activated: function activated() {
  16211. this.refreshSid();
  16212. },
  16213. deactivated: function deactivated() {
  16214. if ($A.getToken() === false) {
  16215. this.sid = 0;
  16216. }
  16217. },
  16218. watch: {
  16219. sid: function sid(val) {
  16220. if (!val) {
  16221. return;
  16222. }
  16223. val += "";
  16224. if (val.substring(0, 1) == 'b') {
  16225. this.isBook = true;
  16226. this.docDetail.bookid = val.substring(1);
  16227. this.getSectionMenu();
  16228. } else {
  16229. this.isBook = false;
  16230. this.refreshDetail();
  16231. }
  16232. },
  16233. '$route': function $route(To) {
  16234. if (To.name == 'docs-view') {
  16235. this.sid = To.params.sid;
  16236. }
  16237. }
  16238. },
  16239. methods: {
  16240. refreshSid: function refreshSid() {
  16241. this.sid = this.$route.params.sid;
  16242. if (_typeof(this.$route.params.other) === "object") {
  16243. this.$set(this.docDetail, 'title', $A.getObject(this.$route.params.other, 'title'));
  16244. }
  16245. },
  16246. refreshDetail: function refreshDetail() {
  16247. this.docDetail = {};
  16248. this.docContent = {};
  16249. this.getDetail();
  16250. },
  16251. getDetail: function getDetail() {
  16252. var _this2 = this;
  16253. this.loadIng++;
  16254. $A.apiAjax({
  16255. url: 'docs/section/content',
  16256. data: {
  16257. act: 'view',
  16258. id: this.sid
  16259. },
  16260. complete: function complete() {
  16261. _this2.loadIng--;
  16262. },
  16263. error: function error() {
  16264. alert(_this2.$L('网络繁忙,请稍后再试!'));
  16265. },
  16266. success: function success(res) {
  16267. if (res.ret === 1) {
  16268. _this2.docDetail = res.data;
  16269. _this2.docContent = $A.jsonParse(res.data.content);
  16270. _this2.getSectionMenu();
  16271. } else {
  16272. _this2.$Modal.error({
  16273. title: _this2.$L('温馨提示'),
  16274. content: res.msg,
  16275. onOk: function onOk() {
  16276. if (res.data == '-1001') {
  16277. _this2.goForward({ path: '/', query: { from: encodeURIComponent(window.location.href) } }, true);
  16278. }
  16279. }
  16280. });
  16281. }
  16282. }
  16283. });
  16284. },
  16285. getSectionMenu: function getSectionMenu() {
  16286. var _this3 = this;
  16287. this.sectionNoDataText = this.$L("数据加载中.....");
  16288. var bookid = this.docDetail.bookid;
  16289. $A.apiAjax({
  16290. url: 'docs/section/lists',
  16291. data: {
  16292. act: 'view',
  16293. bookid: bookid
  16294. },
  16295. error: function error() {
  16296. if (bookid != _this3.docDetail.bookid) {
  16297. return;
  16298. }
  16299. _this3.sectionNoDataText = _this3.$L("数据加载失败!");
  16300. },
  16301. success: function success(res) {
  16302. if (bookid != _this3.docDetail.bookid) {
  16303. return;
  16304. }
  16305. if (res.ret === 1) {
  16306. _this3.bookDetail = res.data.book;
  16307. _this3.sectionLists = res.data.tree;
  16308. _this3.sectionNoDataText = _this3.$L("没有相关的数据");
  16309. } else {
  16310. _this3.sectionLists = [];
  16311. _this3.sectionNoDataText = res.msg;
  16312. _this3.$Modal.error({
  16313. title: _this3.$L('温馨提示'),
  16314. content: res.msg,
  16315. onOk: function onOk() {
  16316. if (res.data == '-1001') {
  16317. _this3.goForward({ path: '/', query: { from: encodeURIComponent(window.location.href) } }, true);
  16318. }
  16319. }
  16320. });
  16321. }
  16322. }
  16323. });
  16324. },
  16325. handleSection: function handleSection(act, detail) {
  16326. if (act === 'open') {
  16327. this.goForward({ name: 'docs-view', params: { sid: detail.id, other: detail || {} } });
  16328. this.refreshSid();
  16329. }
  16330. },
  16331. toggleFullscreen: function toggleFullscreen() {
  16332. if (this.isFullscreen) {
  16333. this.exitFullscreen();
  16334. } else {
  16335. this.launchFullscreen(this.$el);
  16336. }
  16337. },
  16338. launchFullscreen: function launchFullscreen(element) {
  16339. if (element.requestFullscreen) {
  16340. element.requestFullscreen();
  16341. } else if (element.mozRequestFullScreen) {
  16342. element.mozRequestFullScreen();
  16343. } else if (element.msRequestFullscreen) {
  16344. element.msRequestFullscreen();
  16345. } else if (element.webkitRequestFullscreen) {
  16346. element.webkitRequestFullScreen();
  16347. }
  16348. },
  16349. exitFullscreen: function exitFullscreen() {
  16350. if (document.exitFullscreen) {
  16351. document.exitFullscreen();
  16352. } else if (document.msExitFullscreen) {
  16353. document.msExitFullscreen();
  16354. } else if (document.mozCancelFullScreen) {
  16355. document.mozCancelFullScreen();
  16356. } else if (document.webkitExitFullscreen) {
  16357. document.webkitExitFullscreen();
  16358. }
  16359. }
  16360. }
  16361. });
  16362. /***/ }),
  16363. /***/ 980:
  16364. /***/ (function(module, exports, __webpack_require__) {
  16365. var render = function() {
  16366. var _vm = this
  16367. var _h = _vm.$createElement
  16368. var _c = _vm._self._c || _h
  16369. return _c(
  16370. "div",
  16371. { staticClass: "w-main docs-view" },
  16372. [
  16373. _c("v-title", [_vm._v(_vm._s(_vm.$L("文档浏览")))]),
  16374. _vm._v(" "),
  16375. _c("div", { staticClass: "view-box" }, [
  16376. _c(
  16377. "div",
  16378. { staticClass: "view-head" },
  16379. [
  16380. _c("div", { staticClass: "header-title" }, [
  16381. _vm.bookDetail.title
  16382. ? _c("span", [_vm._v(_vm._s(_vm.bookDetail.title))])
  16383. : _vm._e(),
  16384. _vm._v(" "),
  16385. _vm.bookDetail.title && _vm.docDetail.title
  16386. ? _c("em", [_vm._v("-")])
  16387. : _vm._e(),
  16388. _vm._v(
  16389. "\n " +
  16390. _vm._s(_vm.docDetail.title) +
  16391. "\n "
  16392. )
  16393. ]),
  16394. _vm._v(" "),
  16395. _c(
  16396. "Button",
  16397. {
  16398. staticClass: "header-button",
  16399. attrs: { size: "small", type: "primary", ghost: "" },
  16400. on: { click: _vm.toggleFullscreen }
  16401. },
  16402. [_vm._v(_vm._s(_vm.$L(_vm.isFullscreen ? "退出全屏" : "全屏")))]
  16403. )
  16404. ],
  16405. 1
  16406. ),
  16407. _vm._v(" "),
  16408. _c(
  16409. "div",
  16410. { staticClass: "view-main", class: { "view-book": _vm.isBook } },
  16411. [
  16412. _c("div", { staticClass: "view-menu" }, [
  16413. _c(
  16414. "div",
  16415. { staticClass: "view-menu-list" },
  16416. [
  16417. _c("nested-draggable", {
  16418. attrs: {
  16419. lists: _vm.sectionLists,
  16420. readonly: true,
  16421. activeid: _vm.sid
  16422. },
  16423. on: { change: _vm.handleSection }
  16424. })
  16425. ],
  16426. 1
  16427. )
  16428. ]),
  16429. _vm._v(" "),
  16430. _c("div", { staticClass: "view-body" }, [
  16431. _c(
  16432. "div",
  16433. { staticClass: "view-body-content" },
  16434. [
  16435. _vm.docDetail.type == "document"
  16436. ? [
  16437. _vm.docContent.type == "md"
  16438. ? _c("MarkdownPreview", {
  16439. attrs: { initialValue: _vm.docContent.content }
  16440. })
  16441. : _c("ReportContent", {
  16442. attrs: { content: _vm.docContent.content }
  16443. })
  16444. ]
  16445. : _vm.docDetail.type == "mind"
  16446. ? _c("minder", {
  16447. ref: "myMind",
  16448. staticClass: "body-mind",
  16449. attrs: { readOnly: true },
  16450. model: {
  16451. value: _vm.docContent,
  16452. callback: function($$v) {
  16453. _vm.docContent = $$v
  16454. },
  16455. expression: "docContent"
  16456. }
  16457. })
  16458. : _vm.docDetail.type == "sheet"
  16459. ? _c("sheet", {
  16460. ref: "mySheet",
  16461. staticClass: "body-sheet",
  16462. attrs: { readOnly: true },
  16463. model: {
  16464. value: _vm.docContent.content,
  16465. callback: function($$v) {
  16466. _vm.$set(_vm.docContent, "content", $$v)
  16467. },
  16468. expression: "docContent.content"
  16469. }
  16470. })
  16471. : _vm.docDetail.type == "flow"
  16472. ? _c("flow", {
  16473. ref: "myFlow",
  16474. staticClass: "body-flow",
  16475. attrs: { readOnly: true },
  16476. model: {
  16477. value: _vm.docContent,
  16478. callback: function($$v) {
  16479. _vm.docContent = $$v
  16480. },
  16481. expression: "docContent"
  16482. }
  16483. })
  16484. : _vm._e()
  16485. ],
  16486. 2
  16487. )
  16488. ])
  16489. ]
  16490. )
  16491. ])
  16492. ],
  16493. 1
  16494. )
  16495. }
  16496. var staticRenderFns = []
  16497. render._withStripped = true
  16498. module.exports = { render: render, staticRenderFns: staticRenderFns }
  16499. if (false) {
  16500. module.hot.accept()
  16501. if (module.hot.data) {
  16502. require("vue-hot-reload-api") .rerender("data-v-3665704a", module.exports)
  16503. }
  16504. }
  16505. /***/ })
  16506. });